리눅스를 운영체제로 사용하는 PDA, 전자수첩 등의 소형 임베디드 시스템의 사용이 증가하고 있다. 그러나 리눅스 커널은 모노리딕(monolithic)하다는 특성 때문에 다양한 형태의 임베디드 시스템에 필요한 요구사항을 만족하지 못하고 있다. 본 논문에서는 모노리딕 커널의 단점을 보완하기 위해 리눅스에서 널리 사용되는 JFFS 파일 시스템을 커널에서 분리하여 사용자 수준에서 응용 프로그램 프로세스로 실행되는 uJFFS를 구현한다. uJFFS는 파일 시스템과 플래시 디바이스 드라이버 구성되며 커널과 분리되어 실행되므로 커널을 소형화할 수 있다. uJFFS는 파일 시스템의 자료구조가 사용자 주소 공간에 존재하며, 파일 시스템을 담당하는 ujffs_fs와 플래시 디바이스를 제어하는 ujffs_drv 드라이버로 구성된다. 또, uJFFS는 기존의 리눅스에서 제공하는 것과 동일한 인터페이스를 지원한다. 물리장치에 접근하기 위한 디바이스 드라이버 역시 사용자 영역에서 구현되어 장치나 파일 시스템의 오류가 발생하더라도 커널에 미치는 영향을 최소화하여 시스템의 안정성을 증가시길 수 있다.
리눅스를 운영체제로 사용하는 PDA, 전자수첩 등의 소형 임베디드 시스템의 사용이 증가하고 있다. 그러나 리눅스 커널은 모노리딕(monolithic)하다는 특성 때문에 다양한 형태의 임베디드 시스템에 필요한 요구사항을 만족하지 못하고 있다. 본 논문에서는 모노리딕 커널의 단점을 보완하기 위해 리눅스에서 널리 사용되는 JFFS 파일 시스템을 커널에서 분리하여 사용자 수준에서 응용 프로그램 프로세스로 실행되는 uJFFS를 구현한다. uJFFS는 파일 시스템과 플래시 디바이스 드라이버 구성되며 커널과 분리되어 실행되므로 커널을 소형화할 수 있다. uJFFS는 파일 시스템의 자료구조가 사용자 주소 공간에 존재하며, 파일 시스템을 담당하는 ujffs_fs와 플래시 디바이스를 제어하는 ujffs_drv 드라이버로 구성된다. 또, uJFFS는 기존의 리눅스에서 제공하는 것과 동일한 인터페이스를 지원한다. 물리장치에 접근하기 위한 디바이스 드라이버 역시 사용자 영역에서 구현되어 장치나 파일 시스템의 오류가 발생하더라도 커널에 미치는 영향을 최소화하여 시스템의 안정성을 증가시길 수 있다.
The number of applications of small embedded systems such as PDAs, electronic note books, etc. based on Kinux, have increased. Due to the monolithic characteristic of Linux kernel, it is not suitable to satisfy the various kinds of embedded application requirement. To assist the shortcoming of monol...
The number of applications of small embedded systems such as PDAs, electronic note books, etc. based on Kinux, have increased. Due to the monolithic characteristic of Linux kernel, it is not suitable to satisfy the various kinds of embedded application requirement. To assist the shortcoming of monolithic kernel, we implement uJFFS 113th file system as an application program process which runs in user space. This solution consists of a file system and a flash device driver, and makes Linux kernel smaller by separating the file system from the kernel. uJFFS consists of ujffs_fs that plays a part of file system and ujffs_drv that controls a flash device. Which provides the same user interface as Linux does. A Device driver for the physical device is implemented in user pace, which prevents kernel failures from file system errors. So uJFFS can increase stability of the system.
The number of applications of small embedded systems such as PDAs, electronic note books, etc. based on Kinux, have increased. Due to the monolithic characteristic of Linux kernel, it is not suitable to satisfy the various kinds of embedded application requirement. To assist the shortcoming of monolithic kernel, we implement uJFFS 113th file system as an application program process which runs in user space. This solution consists of a file system and a flash device driver, and makes Linux kernel smaller by separating the file system from the kernel. uJFFS consists of ujffs_fs that plays a part of file system and ujffs_drv that controls a flash device. Which provides the same user interface as Linux does. A Device driver for the physical device is implemented in user pace, which prevents kernel failures from file system errors. So uJFFS can increase stability of the system.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 앞에서 지적한대로 모노리딕한 리눅스 커널의 단점을 개선하여 플래시 메모리 기반의 저장장치를 필요로 하지 않는 시스템을 위해 종래에 운영체제의 일부로 존재하는 JFFS 플래시 파일 시스템과 디바이스 드라이버를 커널에서 분리하여 사용자 수준에서 응용 프로그램 프로세스로 동작하는 uJFFS 파일 시스템을 구현한다. 이것은 리눅스 커널에 마이크로 커널의 개념을 도입하여 종래의 커널의 일부로 동작하는 플래시 파일 시스템과 플래시 드라이버를 사용자 영역에서 동작하는 응용 프로그램으로 구현하여 파일 시스템을 리눅스 커널에서 쉽게 분리할 수 있도록 하는데 그 목적이 있다.
본 연구에서 구현한 uJFFS는 기존 리눅스에서 커널 영역에서 동작하는 JFFS 플래시 파일 시스템을 사용자 영역에서 구현하여 파일 시스템을 커널에 독립적으로 구성하는데 그 목적을 두었다. 이는 마이크로 커널 구조에서 운영체제의 기본적인 기능은 커널 내부에 구성하고 디바이스 드라이버와 파일 시스템 등을 서버 프로세스로 구성하는 것처럼, 리눅스에서 uJFFS의 구현을 통해 대형 분산 시스템이나 범용 시스템을 위한 용도로 사용되는 마이크로 커널 구조가 소형 장비에 적용될 수 있음을 보여준다.
이것은 리눅스 커널에 마이크로 커널의 개념을 도입하여 종래의 커널의 일부로 동작하는 플래시 파일 시스템과 플래시 드라이버를 사용자 영역에서 동작하는 응용 프로그램으로 구현하여 파일 시스템을 리눅스 커널에서 쉽게 분리할 수 있도록 하는데 그 목적이 있다.
가설 설정
・ 파일 시스템이나, 디바이스 드라이버의 오류로 인한 시스템의 고장확률이 낮아진다. 파일 시스템은 사용자 프로세스 중의 하나로 동작하게 되므로, 오류를 발생시키더라도, 커널 자체에는 영향을 미치지 않으며, 안정된 시스템의 구성이 가능해진다.
따라서 커널 영역에서 동작하는 기존 파일 시스템과는 달리 사용자 영역에서 파일 시스템 자료구조를 유지하면서 요청을 서비스한다. 둘째, 리눅스 커널의 수정을 최소화 한다. 이를 위해서 커널 내부에 '는 사용자 수준의 파일 시스템과 디바이스 드라이버에 커널 인터페이스를 지원하기 위한 모듈을 사용한다.
제안 방법
uJFFS와의 비교 측정에 사용하는 파일 시스템은 기존 JFFS 파일 시스템을 그대로 사용한다. 본 실험에서는 읽기/쓰기 속도만을 측정하며, 저널링 기능에 대한 성능 평가는 실시하지 않는다. uJFFS는 파일 시스템뿐만 아니라, 디바이스 드라이버까지 포함하고 있으며, JFFS는 리눅스 커 널에 포함된 MTD(Mem-oiy Technology Device) 드라이버를 사용하므로, 본 실험에서는 순수한 파일 시스템뿐만 아니라, 디바이스 드라이버의 동작 속도까지도 실험 결과에 포함된다.
이 함수는 전송할 메시지의 종류, request id, 메시지를 받을 드라이버 프로세스에 관한 정보와 실제 전달할 데이터를 인수로 사용한다. 사용자프로세스인 uJFFS와 커널 영역에서 동작하는 KSM 사이의 자료교환은 리눅스 커널에서 사용자 프로세스의 정보를 얻기 위해 통상적으로 사용하는 커널 API인 copy_from_user와 copy_to_user를 사용하여 구현하였다.
소요 시간 측정 방법은 사용자 프로세스에서 read。와 writeO 시스템을 콜을 호출한 후 사용자 프로세스로 반환될 때까지의 시간을 측정하는 방법을 사용하였다. 실험 방법은 10KB~60KB 까지 파일의 크기를 H)KB씩 증가시키면서 각각의 파일에 대해 1024Byte, 2048Byte, 4096Byte의 버퍼를 적용 시켜 읽기, 쓰기 속도를 즉정하여 동작 속도를 즉정하였다.
18에 ARM용 패치와 StrongARM 용 패치를 적용하여 사용하였다. 실험 항목은 각 파일 시스템의 읽기, 쓰기에 소요되는 시간을 측정하였다. 소요 시간 측정 방법은 사용자 프로세스에서 read。와 writeO 시스템을 콜을 호출한 후 사용자 프로세스로 반환될 때까지의 시간을 측정하는 방법을 사용하였다.
실험 항목은 각 파일 시스템의 읽기, 쓰기에 소요되는 시간을 측정하였다. 소요 시간 측정 방법은 사용자 프로세스에서 read。와 writeO 시스템을 콜을 호출한 후 사용자 프로세스로 반환될 때까지의 시간을 측정하는 방법을 사용하였다. 실험 방법은 10KB~60KB 까지 파일의 크기를 H)KB씩 증가시키면서 각각의 파일에 대해 1024Byte, 2048Byte, 4096Byte의 버퍼를 적용 시켜 읽기, 쓰기 속도를 즉정하여 동작 속도를 즉정하였다.
3절에서 밝힌 바와 같다. 즉, JFFS를 사용자 영역에서 동작할 수 있도록 구현하였으며, 이를 위해 필요한 커널과 사용자 프로세스의 자료 전달 방법과 커널 지원을 설명하였다. 본 절에서는 임의의 쉘 명령 또는 사용자 프로세스가 uJFFS에 저장된 파일에 접근하는 과정을 설명한다.
콜.함수를 VFS 계층으로 전달하여 요청한 파일 시스템의 파일 오퍼레이션 중 호출된 시스템 콜에 사상된 함수를 호출한 후 최종적으로 디바이스 드라이버의 오퍼레이션을 수행한 후 결과를 반환하게 된다. VFS 계층까지는 인터럽트 핸들러와 시스템 콜 테이블을 거치는 등 실행 경로가 일반 파일 시스템과 동일하다.
대상 데이터
실험 환경은 Intel StrongARM SA1110 CPU와 32MB의 플래시 메모리를 내장한 EZ Board-M01 시험보드에서 이루어졌으며, 리눅스 커널 2.4.18에 ARM용 패치와 StrongARM 용 패치를 적용하여 사용하였다. 실험 항목은 각 파일 시스템의 읽기, 쓰기에 소요되는 시간을 측정하였다.
이론/모형
모듈에게 페이지 정보를 넘겨준다. 이것은 모듈 간 통신 방법 (intermodule communication)을 사용한다.
성능/효과
실험 결과, 예상했던 대로 uJFFS가 JFFS보다 시스템 콜 수행에 좀 더 시간이 소요되었음을 알 수 있다. 두 파일 시스템을 비교해보면 uJFFS가 JFFS보다 최고 1%, 최고 10%의 속도저하가 나타났다.
본 실험 결과, uJFFS는 설명한 바와 같이 기존 JFFS 파일 시스템보다 상대적으로 많은 문맥 교환과 자료의 이동 경로가 복잡하지만, 수 KB에서 수십 KB의 크기를 가진 파일으 읽기/쓰기 시간은 근소하게 느리거나 거의 대등하게 나타났다.
각각의 실험은 모두 10회씩 반복 수행 후 그 평균값을 나타낸 것이다. 실험 결과, 예상했던 대로 uJFFS가 JFFS보다 시스템 콜 수행에 좀 더 시간이 소요되었음을 알 수 있다. 두 파일 시스템을 비교해보면 uJFFS가 JFFS보다 최고 1%, 최고 10%의 속도저하가 나타났다.
그 목적을 두었다. 이는 마이크로 커널 구조에서 운영체제의 기본적인 기능은 커널 내부에 구성하고 디바이스 드라이버와 파일 시스템 등을 서버 프로세스로 구성하는 것처럼, 리눅스에서 uJFFS의 구현을 통해 대형 분산 시스템이나 범용 시스템을 위한 용도로 사용되는 마이크로 커널 구조가 소형 장비에 적용될 수 있음을 보여준다. 실제로 QNX와 같은 실시간 운영체제는 마이크로 커널 구조를 가지면서 임베디드 시스템에 적용되고 있다.
첫째, 기존의 LFS 기반의 저널링 기능을 지원하는 JFFS를 원형으로 하는 파일 시스템과 플래시 드라이버가.사용자 영역의웅용 프로세스로 존재하며, 다른 사용자 프로세스의 파일 서비스 요청에 대해 동작한다.
참고문헌 (14)
Alessandro Form, David B. Golub and Bershad, 'An I/O System for Mach 3.0,' Proceedings of the Usenix Mach Symposium, November, 1991
Understanding the Flash Translation Layer(FTL) Specification,' http://www.intel.com, December, 1998
David Woodhouse, 'JFFS The Journaling Flash File System,' http://sources.redhat.com/jffs2, 2000
David B. Golub and ard P. Draves, 'Moving the Default Memory Manager out of the Mach Kernel,' Proceedings of the USENIX Mach Symposium, November, 1991
Hari Krishna Vemuri, 'Userdev:A Framework For User Level Device Drivers In Linux,' April, 2002
Randall W. Dean, 'Data Movement in Kernelized Systems,' Proceedings of the USENIX Workshop on Micro Kernels and Other Kernel Architectures, pp.243-261, April, 1992
Daniel P. Bovet, Marco Cesati, 'Understanding the LINUX KERNEL 2nd,' O'reilly, December, 2002
※ AI-Helper는 부적절한 답변을 할 수 있습니다.