임베디드 SW 표준 플랫폼의 기반이 되는 임베디드 운영체제 Qplus

소 개Qplus는 기존의 임베디드 운영체제와는 달리 유비쿼터스 컴퓨팅 환경에서 표준형, 초소형, 경성 실시간 임베디드 시스템에 활용될 수 있도록 네트워크 기반 동작과 유비쿼터스 네트워크 시스템을 지원한다. 또한 임베디드 운영체제에 다양한 미들웨어와 사용 편의성이 강조된 개발도구를 추가한 임베디드 소프트웨어 표준 플랫폼으로 제공되고 있다.임베디드 시스템은 수행 목적에 따라 다양한 규모와 특성의 임베디드 소프트웨어가 요구되는 반면, 응용 소프트웨어 프로그램 개발자들은 보다 일관성 있고 통일된 개발 체계를 원하고 있다. Qplus는 이러한 요구사항을 모두 수용하기 위하여 임베디드 소프트웨어 표준 플랫폼 API를 먼저 정의한 후, 이를 준수하는 표준형·마이크로·나노의 3가지 다른 규모와 특성의 임베디드 플랫폼을 제공하고 있으며 이러한 특성으로 인해 차세대 소프트웨어 표준 플랫폼으로서 각광받고 있다.Qplus 운영체제의 구조는 그림 1과 같으며, 임베디드 시스템은 크기·가격·자원 등의 하드웨어 구성이 제한되기 때문에 경량화, 저전력 지원, 자원의 관리 등의 하드웨어 최적화 기술이 포함된다. 뿐만 아니라 경량 네트워크 지원, 실시간 스케줄러, 멀티미디어 파일 시스템, 빠른 부팅 기능 등이 제공되며, 이러한 기능들을 타깃 임베디드 시스템에 쉽게 적재하기 위한 설정도구 등이 포함된다.커널의 HAL(Hardware Abstraction Layer)은 다양한 하드웨어를 운영체제가 관리하기 위해 추상화하여 제공하는 계층이며, 타깃 빌더의 QSP(Qplus Support Package)는 운영체제 커널뿐만이 아니라 멀티미디어 플레이어, 자바 가상 머신 등의 미들웨어, 응용 프로그램 구성 및 설정을 위한 기능들도 제공한다.다음은 Qplus의 세부기능 및 타겟 빌더의 기능을 설명하고 Qplus를 표준 플랫폼으로 적용하기 위한 전체적인 지원체계 등을 설명하고자 한다.Qplus 기능임베디드 운영체제의 주요 특징은 아래와 같다.- 실시간 지원- 저전력 지원- 빠른 부팅 지원- 다양한 디바이스 드라이버 지원- 플래시 파일 시스템(FFS) 지원- 멀티미디어 파일 시스템(MMFS) 지원- 최적화된 Footprint 지원- 임베디드 GUI 지원- Java 클래스 라이브러리 지원여기서는 이들 중 실시간 지원 기능, 전력 관리 지원 기능, 임베디드 파일 시스템 기능 및 마이크로 커널 지원 기능에 대해 자세히 설명하기로 하고, 타깃 시스템 설정 및 구축 툴킷 지원 기능 등은 다음 장에서 자세히 설명하도록 하겠다.실시간 지원 기능표준 리눅스 커널은 전통적인 유닉스의 모놀리틱(mono- lithic) 기반의 커널이므로 처리량(Throughput)을 중시하여 실시간적 성격을 표시하는 응답성(responsibility)과는 지향하는 바가 다르다. 따라서 Qplus 운영체제 커널은 응답성을 높여 실시간성을 지원하기 위해, 커널 자체의 락 메커니즘(lock mech- anism)과 관련 커널 코드를 수정하여 선점형 커널(preemptive kernel)로 구성하고 있으며, 락 브레이크(lock break) 기법을 추가로 제공하고 있다.모든 운영체제에서의 실시간 지원이 그렇듯, 임베디드 리눅스 커널에서의 실시간 지원 핵심은 선점성(preemption)을 갖추는 것이라고 말할 수 있다. 그 이유는 어떤 운영체제가 실시간성을 갖는다는 것은 어떤 한 시점에서 수행되고 있는 일반적 태스크보다 우선순위가 높은 실시간 태스크가 발생했을 때, 제한된 시간 내에 우선순위가 높은 태스크의 작업 수행 완료와 정확도의 보장이 이루어져야 됨을 의미하기 때문이다. 이 중에서도 시스템의 작업 수행 완료 시간의 보장을 위해서는 전체 시스템을 이루고 있는 각 부분에서 동기적, 비동기적 이벤트에 대해 얼마나 즉각적인 반응을 보일 수 있는지에 대한 응답성(responsi- bility)이 중요해지는 것이다.그런데, 표준 리눅스 커널에 기반하여 작성된 기존 임베디드 리눅스는 실시간 지원 면에 있어서 일단 태스크가 시스템 콜(system call)을 사용하여 커널 내부로 진입하게 되면 보다 높은 우선순위의 실시간 태스크가 발생한다 할지라도 실시간 태스크가 즉각적으로 수행될 수 없다는 표준 리눅스 커널의 문제점을 그대로 가지고 있었다. 따라서 실시간 지원이 이루어지기 위해서는 커널 내부의 구조가 선점성이 높은 구조로 변경되어야만 한다. 즉, 커널 내부의 보호 받아야 할 최소한의 커널 코드를 제외한 지역에서는 선점(preemption)이 가능해야만 한다는 것이다.Qplus 커널은 실시간 지원을 위해 몇 가지의 기능을 추가 및 보완하였다. 추가된 실시간 지원 기능은 크게 선점형 커널의 지원과 락 브레이크 기능 지원의 두 가지로 나눠 볼 수 있다. 이 지원 기능을 통해 Qplus 커널에서는 표준 리눅스 커널에서 미흡했던 실시간 지원 기능을 제공할 수 있다. 사용하고 있는 커널은 표준 임베디드 리눅스 2.6.x 커널을 기반으로 한다.● 선점형 커널(preemptive kernel)의 지원선점형 커널을 지원하기 위해서는 태스크가 커널 내부로 진입한 뒤 또 다른 태스크가 커널 내부로 재 진입하여도 커널 내부의 최소한의 코드들은 보호받아야 하기 때문에 락 메커니즘(lock mechanism)과 깊은 연관성을 가진다. 즉, 락 메커니즘을 통하여 태스크의 선점 자체가 보호되어야 한다. 그러나, 기존 표준 리눅스 커널의 락 메커니즘은 이러한 기능들이 지원되지 않기 때문에, Qplus 커널에서는 락 메커니즘을 수정/개발하여 선점형 커널을 지원한다. 다음은 지원 기능 및 고려사항이다.- 락 메커니즘의 수정/개발을 통한 선점형 커널 지원: 락 지역을 제외한 커널 내 코드에서도 선점 가능- POSIX 표준과의 호환을 위해 기존 Programming API 유지● 락 브레이크(lock break) 기능 지원위와 같은 지원으로 인하여 임베디드 운영체제 커널 자체는 선점형이라고 할지라도 스핀 락 구간에서는 선점을 할 수 없다. 그러므로 이 스핀 락 구간이 짧으면 응답 속도에 큰 영향을 주지 않지만, 스핀 락 구간이 길게 되면 시스템의 응답성을 현저하게 떨어뜨릴 수 있다. 이러한 문제점을 해결하기 위해 락 브레이크 기법을 사용한다. 락 브레이크 기법은 실험을 통하여 커널 내부의 비교적 시간을 많이 소모하는 긴 스핀 락 구간을 찾아내어 짧은 락 구간으로 수정함으로써 응답성을 향상시켰다.전력 관리 기능PDA, 스마트 폰 등의 모바일 기기들이 임베디드 시스템에서 차지하고 있는 비중이 점점 커지고 있고 이들은 모두 배터리에 의존하여 동작을 하고 있기 때문에 임베디드 운영체제에서 배터리를 효율적으로 관리할 수 있는 기법 개발이 필수적이다. 즉, 배터리의 사용시간 연장을 통해 향상된 서비스를 제공할 수 있는 시스템 소프트웨어적 전력관리가 운영체제의 성능의 가장 큰 요소 중 하나로 떠오르고 있다.전력관리는 작업량에 대한 정확한 예측을 통하여 각 디바이스의 전력상태를 적절히 변경시킴으로써 성능의 감소 없이 에너지 소모를 최소화하는 기법이다. 하지만 각 디바이스의 전력관리를 통해 각각의 디바이스의 전력 소모를 최소화하더라도 디바이스 간의 의존성으로 인해 전체 시스템의 전력효율이 떨어질 수 있다. 따라서 시스템 레벨에서 전력관리가 이루어져야만 한다. 또한 작업량에 대한 예측을 정확하게 하기 위해서 애플리케이션의 특성 및 요구 사항에 대한 정보를 이용하여야 한다. 이러한 애플리케이션에 기반한 전력관리를 구현함으로써 전력관리의 효율성을 극대화한다. 이러한 능동형 전력관리의 구현은 사실상의 전력관리 표준인 DPM(Dynamic Power Manage- ment) 상에서 구현한다.Qplus에서의 능동형 전력관리는 그림 2와 같은 구조를 가지고 있으며, 제공하는 기능은 다음과 같다.- 시스템 레벨 능동형 전력관리: 시스템 모니터링을 통한 CPU, LCD, 메모리의 전력 소모 최소화- 주기적인 응용을 위한 능동형 전력관리: MPEG 플레이어의 성능 요구에 의한 동적 전압/주파수 변동을 이용한 전력 소모 감소- 인터액티브 응용을 위한 능동형 전력관리: 웹 브라우징이나 텍스트 에디터 등의 작업에서의 전력소모 감소- 전력관리 전력 관리자- 저전력 디스크 I/O(Free Space File System, FS2)임베디드 파일 시스템임베디드 시스템에서는 가격 경쟁력 등을 고려하여 저사양의 시스템을 사용하게 되는데, 이러한 환경에서 기존의 파일 시스템으로 멀티미디어 데이터를 처리하기에는 한계가 있다. Qplus에서는 이를 극복하기 위해 멀티미디어 데이터의 QoS를 보장하고 임베디드 시스템에서 필수적인 저널링 기능 등을 동시에 지원하는 임베디드 파일 시스템을 제공한다.파일 시스템의 주된 목적은 해당 데이터의 빠른 접근에 있다. 이 빠른 접근을 위해서 파일 시스템은 데이터들을 구조화시켜 저장한다. 그런데 구조화의 형태라는 것도 일종의 데이터로 다루어질 수 있기 때문에, 구조화를 위해 저장하는 정보를 메타 데이터(즉, 데이터에 대한 데이터)라고 한다. 그런데 메타 데이터는 데이터의 무결성이 보장되었을 때 비로소 데이터로서의 의미가 있다.데이터의 무결성은 데이터 스스로 오류가 없음을 의미하며, 파일 시스템은 이 무결성을 유지하고자 일관성 체크인 fsck(file system consistency check)를 수행한다. 다행스럽게도 시스템은 종료시에 파일 시스템이 지금까지 다루어 온 메타 데이터의 일관성을 보장하는 일을 수행한다. 그리고 시스템이 다시 시작되었을 때 파일 시스템은 시스템이 보장해 준 메타 데이터를 돌려받고자 한다. 정상적인 시스템 종료와 시작시에는 이런 일들이 큰 무리 없이 진행될 수 있다, 하지만 비정상적인 시스템의 종료 그리고 그에 이은 재시작시에는 이러한 일들이 시스템에게 상당한 부담이 될 수 있다.파일 시스템은 시스템으로부터 전달받은 메타 데이터에 대해 fsck를 실행하여 그것의 무결성을 확인한 후에야 그것을 사용할 수 있다. 이 과정에서 정상적인 종료를 통해 파일 시스템 자신이 최종적으로 전달한 메타 데이터가 아니라는 판단이 설 경우 파일 시스템은 일관성이 보장된 메타 데이터를 확보하기 위해 시스템에게 자신이 지금까지 다루었던 거의 모든 메타 데이터들을 확인하게 된다. 문제는 이 과정에서 소요되는 시간이다. 시스템에 따라 다르긴 하지만 일반적으로 수 분에서 길게는 수 시간까지 걸리기도 한다. 이러한 불합리한 문제를 해결하고자 하는 것이 바로 저널링 파일 시스템이다. 이것은 일관성에 대한 책임과 이에 따른 최종적인 부하 모두를 파일 시스템이 지는 형태로 개선한 것이라고 할 수 있다.Qplus에서는 저널이라고 하는 새로운 데이터 구조를 추가함으로써 저널링 파일 시스템에서의 이러한 fsck 문제를 해결하였다. 파일 시스템이 메타 데이터에 어떠한 변경을 가하기 이전에 어떤 일을 할 것인지에 대한 내용을 저널에 기록함으로써 저널링 파일 시스템은 최근의 메타 데이터 수정 사항의 로그를 유지하며, 이는 특히 비정상적인 시스템 종료에 따른 파일 시스템의 일관성 검사에 유용하게 사용된다. 임베디드 시스템의 특상상 비정상적 시스템 종료가 많기 때문에 이와 같은 데이터 무결성을 위한 관리는 매우 중요하다.저널링 파일 시스템의 한 가지 예는 리눅스의 ext3이다. ext3는 ext2의 구조를 유지하기 위해 저널링 부분을 전담하는 JBD (Journal Block Device Layer)라는 일종의 블록 디바이스 드라이버를 도입하였다. 이것은 파일 시스템이 기록하기를 원하는 데이터 블록을 전달받아 자신의 블록 장치에 주기적으로 쓰는 작업을 하게 된다. 또 필요한 경우 기록한 데이터를 복구하기도 한다. 특히 JBD는 파일 시스템에 종속적이지 않기 때문에 저널링을 탑재하고자 하는 어떠한 블록장치 기반 파일 시스템에서도 사용될 수 있다. 그러므로 JBD는 저널링 파일 시스템을 구축하기 위한 구현에 용이하다.저널링을 구현하고자 하는 파일 시스템은 JBD가 제공하는 API들을 적당한 부분에서 불러 주기만 하면 된다. 그 이후의 실제적인 저널링 작업은 JBD에서 알아서 처리해준다. 또한 기존 파일 시스템의 코드를 기반으로 하기 때문에 디스크 포맷이 동일하다. 즉 동일한 메타 데이터를 사용하기 때문에 파일 시스템의 변환이 아주 유연하게 이뤄질 수 있다. 일반적으로 저널링 파일 시스템으로의 업그레이드는 기존 자료의 백업과 디스크 포맷 그리고 해당하는 저널링 파일 시스템의 마운트, 마지막으로 기존 백업 자료를 복구하는 과정을 거쳐야 한다. 그러나 ext2에서 ext3 로의 변환은 데이터의 백업없이 ext2가 마운트되어 있는 상황에서도 이뤄질 수 있다. 그러므로 Qplus에서는 JBD를 이용한 저널링 기능을 지원한다.마이크로 커널임베디드 리눅스 커널에 기반한 Qplus는 위에서 언급했듯이 실시간 기능을 지원하고 있다. 위의 실시간 지원 기능은 엄밀히 말하면 연성 실시간성을 지원하는 것으로 경성 실시간 임베디드 시스템이나 적은 footprint를 요구하는 군사제어, 로봇제어, 의료장비, 산업용 제어 기기 등에 사용되기에는 부족하다. 따라서 Qplus는 전통적인 RTOS가 지원하는 수준인 태스크 선점 지연시간 100μs 이내의 경성 실시간성을 지원하여 위에서 언급한 응용의 용도로 사용할 수 있도록 한다.이를 위해 사용된 주요한 기능들은 크게 두 가지로 요약할 수 있는데 그것은 우선순위 기반 인터럽트 스레드와 자발적 선점 기능이다. 첫 번째로 언급된 우선순위 기반 인터럽트 쓰레드는 우선순위와 상관없이 직렬화(serialize)되어 있는 인터럽트 처리의 속성상 실시간성을 지원하기 어렵기 때문에, 인터럽트 처리 자체를 스레드화 한다. 그럼으로써 우선순위를 반영할 수 있도록 하여 보다 긴급한 태스크의 인터럽트가 존재할 경우에는 먼저 처리가 될 수 있도록 한 방법이다. 두 번째로 언급된 자발적 선점 기능은 커널 내에 선점 포인트를 삽입하는 방법으로 스케줄러의 일반적인 스케줄링 해상도인 1ms 보다 짧은 시간 안에 스케줄링이 필요한 경우 가능하도록 하는 방법이다. 또한, 특정한 용도로 사용되기 위해 100KB 수준의 적은 footprint를 갖는 커널을 제공하여 활용도를 높일 수 있도록 했다.타깃 빌더타깃 빌더는 제품에 최적의 시스템 구성을 지원하며 편리한 타깃 이미지 구축 및 적재를 위한 툴킷으로서 GUI상에서 커널, 기본 응용 및 타깃 환경을 바로 포인트 하여 클릭함으로써 설정이 가능하도록 도와주며, 다음과 같은 기능들도 제공하고 있다.- 위저드 방식의 간편한 프로젝트 생성, 의존성 자동 체크 및 쉬운 설정을 도와주는 다양한 busybox, tiny login 등 30여 기본 패키지의 세세한 패키지 설정 지원- 다양한 타입의 타깃 Root file system 생성 기능(ext2/ ext3, ramdisk image, jffs2, cramfs 등) 및 CD installer, USB memory stick installer 등을 통한 target image 생성 및 자동 적재 기능Qplus는 매우 복잡하고 다양한 구성 요소들로 이루어져 있고 각 요소간 의존성 규칙이 복잡하게 구성되어 있기 때문에 시스템을 보다 쉽게 설정하고 설치할 수 있도록 도와주는 도구가 필요하다. 사용자로 하여금 보다 쉽고 빠르게 타깃 시스템에 Qplus를 설치하기 위해서 지원되어야 하는 기능들은 다음과 같다.첫 번째로 커널과 시스템 응용을 타깃 사용 용도에 따라서 다양하게 설정할 수 있도록 도와주어야 하며, 두 번째로는 시스템 응용요소의 메모리 사용량을 표시하여 사용자로 하여금 타깃에 현재 설정으로 적재가 가능한지 알려주어야 한다. 마지막으로 적재될 최종 이미지를 타깃에 다양한 방법으로 설치할 수 있는 방법을 제공하여야 한다. Qplus 타깃 빌더는 위의 요구조건을 모두 만족하도록 개발되었으며 수동으로 타깃 시스템에 설치할 때 들어가는 시간적, 금전적 낭비를 줄여줄 수 있도록 한다.그림 3은 수동으로 Qplus 기반의 시스템을 개발하는 과정과 타깃 빌더를 이용하여 자동화된 개발 과정을 보여준다. 위의 그림에서 상당 부분 타깃 빌더를 이용하여 작업을 자동화 시켜줄 수 있으며 이러한 자동화 기능으로 개발자의 실수나 복잡한 시스템 요소의 의존성 계산으로 인한 개발 지연을 방지할 수 있게 된다.타깃 빌더는 Qplus를 효율적으로 적용할 수 있도록 하기 위해 다음과 같은 다양한 기능을 제공한다.- 이클립스 기반 플러그 인으로 다양한 기능 제공 및 확장의 자유로움과 외부 플러그인과의 연동 가능- 리눅스 커널 2.6 기반의 Kconfig 언어를 이용한 메뉴 구성으로 빠른 BSP 제작 가능과 각 옵션 간 의존성 자동 검사- 커널과 응용 패키지의 설정 가능 사항의 옵션화를 통한 미세 설정의 지원- 커널과 응용의 동시 설정을 통한 커널과 응용간의 의존성에 대한 자동검사- 타깃에 적재될 파일들의 리스트를 설정 가능하게 하고 라이브러리의 사이즈를 최적화시킴으로써 최종 적재 이미지의 사이즈의 최적화 도모- 시스템 구성요소의 크기를 계산하여 사용자에게 타깃에 알맞은 설정을 하도록 지원- 타깃에 적재될 루트 파일 시스템 이미지의 자동 생성그림 4는 타깃 빌더에서 각 패키지의 옵션과 커널 옵션을 설정 가능한 형태로 변환하여 개발자에게 보여주고, 각 옵션들이 개발자에 의해 설정된 후, 그에 따라 컴파일 되고 최적화 과정을 통해 타깃에 최종 적재되는 전체 과정을 보여준다.Qplus 타깃 빌더의 기본 설정 언어는 Kconfig이다. Kconfig는 리눅스 커널 2.6 에서 사용되는 설정 언어로 리눅스 커널 2.4에서 사용된 것보다 더욱 발전되었다. Kconfig는 커널에서 사용하는 심벌 정의와 각 심벌들의 의존성 관계를 기술하고 있다. 각 심벌은 의존성 관계에 따라서 사용자에게 보여지거나 값이 자동으로 셋팅되어 시스템 설정에 오류가 없도록 한다. 타깃 빌더는 이 Kconfig를 시스템 전체 셋팅 기술에 사용하여 커널과 패키지, 타깃 시스템 설정을 통합하여 표시하도록 한다. 구 버전 타깃 빌더의 경우 설정 기술 언어를 CML2로 사용하여 커널이 변경될 경우 3,000개가 넘어가는 커널 심볼을 모두 CML2로 기술해야 하는 어려움이 있지만, 현재 버전에서는 리눅스 커널에서 사용하는 Kconfig와 동일한 설정 언어를 사용하므로 커널을 바꾸기 위해서 모든 설정 언어를 바꿀 필요 없이 소스만 추가하여 간편하게 커널을 교체할 수 있는 장점이 있다.Qplus 타깃 빌더는 각 응용에서 옵션화 할 사항들을 기존 버전과 동일하게 QPD(Qplus Package Descriptor)에 기술한다. 이 QPD 파일을 통해 컴파일에 영향을 미치는 설정이나 타깃에 인스톨 할 파일의 집합을 기술한다.그림 5는 tinyx라는 패키지 QPD 파일의 예이다. 각 옵션은 %%prompt, %%desc, %%requires, %%provide, %%files, %%build_vars 등의 성질을 가질 수 있는데 %%require, %%provide는 이 옵션이 설정될 때 수행될 의존성을 기술하며, %%files는 옵션이 선택될 경우 타깃의 루트 파일 시스템에 인스톨될 파일들의 리스트를 기술한다. %%build_vars는 컴파일 옵션 등을 바꾸고 싶은 경우에 사용한다. 또한 옵션들은 옵션 간의 계층 구조를 ‘/’를 통해서 표시한다. %option tinyx/Xfbdev는 Xfbdev가 tinyx라는 옵션의 하위 옵션임을 나타낸다. 각 응용 패키지에 대해 QPD 파일에 옵션들을 통해 컴파일 방식, 인스톨 할 파일 리스트, 그리고 옵션과 옵션 간의 의존성을 기술하게 되는 것이다.커널 설정과 시스템 설정에 사용된 설정 언어는 Kconfig이고 패키지 설정에 사용되는 언어는 QPD 파일이지만, 커널과 시스템 응용 프로그램의 의존성 연관을 위해서 내부적으로는 같은 자료구조로 통합하여 양방향 의존성 검사가 가능하도록 한다. 예를 들어 그림 5에서와 같이 tinyx를 구동하기 위해서 커널의 UNIX 옵션이 설정되어야 한다. 이러한 이유로 커널과 응용은 서로 같이 설정되어야 하며 타깃 빌더를 통해서 커널과 응용 프로그램간의 의존성 검사를 가능하도록 했다.앞서의 과정을 통해 생성된 커널과 응용의 통합 QPD 파일은 Qplus 타깃 빌더에 의해 보여지고 이를 통해 사용자는 각종 옵션을 선택하게 된다. 그림 6은 타깃 빌더의 실행 모습을 보인다. 사용자가 각 옵션을 선택하면, 그에 대한 설명과 현재 상태가 표시되며, 사용자는 이를 보면서 각 옵션을 선택하게 된다. 설정 항목은 다음과 같이 주요 3가지 부분으로 구성 되어 있다.- Qplus 커널- 응용 패키지- 타깃 환경(타깃의 네트워크 주소, 기본 사용자 설정, 적재 방식)커널 부분은 배포되는 Qplus의 커널 Kconfig를 그대로 표시하고 있으며 용용 패키지 부분은 등록된 각 응용의 QPD 파일의 옵션 사항들이 커널 Kconfig의 파싱된 구조체와 통합되어 보여진다. 타깃 환경 부분은 타깃이 수행되기 위해 필요한 기본 정보인 네트워크 주소, 적재방식과 라이브러리 최적화 여부 등을 설정할 수 있도록 되어 있다. 이 타깃 환경 부분은 Kconfig 언어로 기술이 되어 타깃 보드 별로 다른 방식의 메뉴를 구성할 수 있도록 되어 있다. 또한, 사용자는 타깃 빌더를 통해 각 옵션을 클릭만으로 시스템 설정을 할 수 있다. 각 옵션 변경이 일어날 때마다 의존성 규칙 검사가 이루어지며, 내부적으로 필요한 옵션이 자동으로 켜지거나 조건이 만족되어 새로운 메뉴가 활성화된다. 또한 각 패키지 옵션마다 예상되는 적재공간 사용량과 현재까지 선택된 전체 패키지 옵션의 사용량을 표시하여 사용자로 하여금 현재 설치할 타깃의 용량에 맞도록 기능을 조정할 수 있도록 하였다.이렇게 설정된 결과값은 ‘심벌=[y/m//n]’ 의 형식으로 프로젝트 디렉토리의 project.conf 파일에 저장된다. 커널은 이를 ‘#define 심벌 [1/0]’의 형태로 변화해서 컴파일한다. 각 응용 패키지의 컴파일 역시 project.conf의 내용에 기초하여 이루어진다. 이 과정을 좀더 자세히 기술하면 그림 7과 같다. 응용 프로그램의 설정 정보는 QPD 파일로 기술되며 사용자의 설정 결과를 반영하여 환경 설정엔진이 QPD 파일을 SPEC 파일과 config.h, package.bops, package.flist 파일로 변환된다. 이렇게 만들어진 SPEC 파일과 소스레벨의 사용자 설정파일인 config.h와 컴파일 옵션이 기술된 package.bops 파일을 이용하여 패키지를 빌드하고 타깃에 설치 가능한 rpm 파일을 만든다. 이렇게 만들어진 rpm 파일은 사용자가 선택한 기능 옵션에 따라 선택된 파일 리스트가 기술된 package.flist를 참조하여 필요한 파일만을 추출하여 타깃을 위한 가상 루트 파일 시스템에 설치된다.Qplus 타깃 빌더는 이렇게 생성된 가상의 타깃 루트 파일 시스템에서 불필요한 심볼을 제거하여 공유 라이브러리를 최적화하고 사용자가 설정한 적재방식에 따른 최종 타깃 시스템 설치 이미지를 제작하게 된다.Qplus 배포판 및 지원Qplus 배포판으로는 Generic 버전인 Qplus-CE와 Qplus-ME가 있고, 특정 임베디드 시스템에 적용된 버전으로는 Qplus-CE를 기반으로 홈 서버에 적용한 Qplus-HS, 디지털 홈 엔터테인먼트 센터에 적용한 Qplus-EC가 있으며, Qplus-ME를 기반으로 한 시스템으로는 제주 텔레매틱스 시범 사업 단말에 적용될 예정인 Qplus-TM, 국민 로봇 시범사업의 URC 로봇 플랫폼에 적용될 Qplus-RB가 있다. Generic 버전인 Qplus-CE와 Qplus-ME의 특징은 다음과 같다.시스템 개발자 버전은 연구단 내 또는 외부 기술이전 업체의 시스템 개발자를 위해 만들어진 버전으로 GUI, 주로 디바이스 드라이버 개발 등 시스템 프로그램 개발 목적으로 릴리즈되며 CDT, 개발 패키지(RPMS, SRPM), 타깃 루트 파일 시스템으로 구성되어 있다.응용 프로그램 개발자 버전은 시스템 개발자 버전을 기반의 업그레이드 버전으로 Firefox, mplayer 등 응용 프로그램 개발과 JVM 등 미들웨어 등의 응용 프로그램을 개발하기 위해 만들어졌다. TB, ESTO, CDT, 최종 개발패키지(RPMS, SRPM), 타깃 패키지(최종 응용 프로그램 미포함), Eclipse 환경(JDK, JDT), 타깃 루트 파일 시스템으로 구성되어 있다.최종 사용자 버전은 응용 프로그램을 추가하여 생성한 사용자를 위한 버전으로 유지·보수되는 에디션이다. TB, ESTO, CDT, 개발 패키지, 타깃 패키지(응용 프로그램 포함), Eclipse환경(JDK, JDT)으로 구성되어 있다.다음 그림 8은 전체적인 개발의 흐름도와 각 버전의 관계를 나타내고 있다. Qplus 버전은의 형태를 가진다. 여기서, <이름>은 두 단어 혹은 3단어로 특정 플랫폼을 구분하거나 다양한 플랫폼에 사용 가능한 Generic 버전을 구분하기 위해 사용한다. 특정 플랫폼은 EC(Entertainment Center 에디션), RB(국민 로봇 에디션) 등이며, Generic 플랫폼은 CE(Co- nsumer-electronic Edition), ME(Mobile Edition) 등이다.는 중요 변경을 표시하며, 개발자 버전인 경우 홀수, 공식 릴리즈인 경우 짝수를 나타내며, 는 사소한 변경을 나타낸다.결 론임베디드 운영체제는 시스템의 다양함으로 인해 요구 사항을 맞추기가 힘들고 실제적인 비즈니스 모델의 부재로 인해 상업화가 저조하다. 특정 단말에 적용되는 운영체제 기술은 서버와 데스크톱 기술과는 다르게 공동으로 적용된다기보다는 특정 임베디드 시스템에 적용되어야 한다. 그러므로 이를 지원하기 위한 정부차원의 기술 지원 체계 등이 필요하며, 비즈니스가 되도록 Qplus 확산 방안 또한 요구된다.이상에서 살펴 본 바와 같이 Qplus는 공개된 임베디드 리눅스에서는 지원이 어려운 여러 기능들에 대한 연구개발을 계속해 나가고 있다. 특히 지속적인 발전을 통해, 앞으로 이를 국가 표준을 리드하여 다양한 규모의 임베디드 시스템 및 유비쿼터스 서비스를 지원할 수 있는 임베디드 운영체제로 발전시켜 나갈 계획이다.
회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지