임베디드랜드

임베디드 OS는 제한된 기능을 통해 구현되는 특정 응용 플랫폼에 최적화된 성능 제공과 함께 하드웨어 솔루션 및 미들웨어, 라이브러리, 개발도구 및 시스템 분석을 위한 개발환경을 지원해야 한다. 대표적 임베디드 시스템 OS 프로그램인 리눅스는 저렴한 개발 비용과 범용성을 가졌음에도 불구하고 경성(Hard-Type) 실시간 응답에 한계를 나타내 그동안 휴대전화를 비롯한 실시간성 응용이 융합된 제품에 주로 활용되어 왔다. 하지만 최근 임베디드 시스템의 급격한 성능 향상으로 인해 RTOS를 이용한 시스템 구현이 한계를 나타냄에 따라 실시간 응답성을 보강한 리눅스 OS가 또 다시 주목받고 있다.

임베디드 시스템은 유연한 구조를 갖춘 하드웨어 및 소프트웨어 결합 플랫폼으로 실시간 동작 수행을 통해 성능을 구현한다. 과거 임베디드 시스템은 작고 단순한 플랫폼에서 연산을 수행했기 때문에 각각의 시스템의 응답성에 최적화된 RTOS 운영체제가 주로 사용되어 왔다.
하지만 임베디드 시스템의 성능이 향상되고 운영체제에 필요한 커널수가 급속도로 증가함에 따라 특화된 기능에 맞추어 구현되는 RTOS보다 다양한 인터페이스와 개발환경을 지원하는 OS 시스템의 필요성을 인식하게 되었다. 따라서, 많은 개발자들은 편리성과 범용성을 가진 소프트웨어 플랫폼인 임베디드 리눅스 OS에 대해 다시 한 번 주목하고 있다.

왜 임베디드 리눅스인가
임베디드 리눅스는 풀 피처 OS 프로그램이다. 풀 피처 OS는 POSIX, CORBA, Java, HTTP 등의 프로그래밍 표준을 구현하며 웹 서버, 이메일 서버, DHCP서버, DNS서버, FTP서버와 같이 인터넷 소프트웨어를 지원하는 네트워킹 시스템을 내장하고 있다. 네트워킹 시스템은 NFS나 AFS와 같은 유닉스를 위한 파일 시스템을 비롯한 윈도우 시스템과의 데이터 전송 환경 구축을 특징으로 하고 있기 때문에, 네트워킹을 위해 따로 플랫폼을 구입해야 하는 RTOS와 달리 표준화된 통신 환경을 구축할 수 있다.
임베디드 리눅스는 오픈 소스를 기반으로 하고 있다. 모든 소프트웨어 플랫폼은 표준 규약에 따라 기능을 구현하며 전 세계 다양한 개발자들이 리눅스 프로그래밍 개발에 참여하고 있다. 개발자들은 오픈 소스 커뮤니티 사이트를 통해 개발 환경에 맞는 소스를 수정 및 최적화 하고 컴파일 환경을 설정하는 간단한 작업을 통해 짧은 시간에 자신이 원하는 대로 임베디드 리눅스 플랫폼을 제작할 수 있다. 따라서, 특정 회사에 의해 기술개발이 주도되는 상용 OS 플랫폼과 비교해 사용이 간편하고 최신 프로그래밍 기술을 플랫폼에 적용할 수 있는 장점을 가지고 있다.
임베디드 리눅스는 방대한 커널 크기를 가지고 있다. 과거 작고 단순한 기능을 주로 구현하던 임베디드 시스템에서 리눅스의 방대한 커널 크기는 임베디드 시스템에 다소 부적합했다. 하지만 최근 사용되고 있는 임베디드 시스템은 32비트 환경을 바탕으로 매우 높은 클록 스피드를 통해 구동되는 팬티엄 컴퓨터급 성능을 보여주면서 사정이 달라졌다. 하이-엔드급 프로세서가 사용됨에 따라 코드량이 매우 작아 향상된 하드웨어 성능을 지원하는 데 한계가 있는 RTOS보다는 범용성을 특징으로 하는 임베디드 리눅스의 활용빈도는 더욱 높아지고 있는 것이다.

실시간 운영체제의 핵심, 리눅스 커널
모든 운영체제에서와 같이 임베디드 리눅스 커널에서의 실시간 지원 핵심은 선점성(Preemption)을 갖추는 것이다. 운영체제가 실시간성을 갖는다는 것은 어떤 한 시점에서 수행되고 있는 일반적 태스크보다 우선순위가 높은 실시간 태스크가 발생했을 때, 제한된 시간 내에 우선순위가 높은 태스크의 작업 수행 완료와 정확도 보장이 이루어지는 것을 의미한다. 특히, 시스템의 작업 수행 완료 시간의 보장을 위해서는 전체 시스템을 이루고 있는 각 부분에서 동기적, 비동기적 이벤트에 대해 얼마나 즉각적인 반응을 보일 수 있는지에 대한 응답성이 중요하다.
표준 리눅스 커널에 기반하여 작성된 기존 임베디드 리눅스는 실시간 지원을 실행할 때 태스크가 시스템 콜을 사용하여 커널 내부로 진입하게 되면 보다 높은 우선순위의 실시간 태스크가 발생해도 즉시 구동이 불가능한 표준 리눅스 커널의 문제점을 그대로 가지고 있다. 따라서 실시간 지원이 이루어지기 위해서는 커널 내부의 보호 받아야 할 최소한의 커널 코드를 제외한 지역에서는 선점이 가능한 커널 내부의 변화가 필요하다.
선점형 리눅스는 커널 내부의 변화를 통해 복잡한 커널 방식을 가지게 되므로 멀티 태스킹을 수행하기 위한 자체 데이터를 보유하고 있으며, 이를 통해 커널 수행 중 지연이 발생할 경우 커널 지연시간을 최소한으로 억제할 수 있다. 몬타비스타 코리아의 권승용 부사장은 “데이터를 관리하는 데 있어 비선점형 기술이 적합함에도 불구하고 선점형 커널 기술이 사용되는 것은 실시간 응답성이 중요하기 때문”이라며 “임베디드 시스템에서 실시간 응답성은 시스템의 안전성 및 신뢰성에 대한 문제와 직결되기 때문에 선점형 커널 기술을 통해 응답 시간 간격을 최소화하는 것이 필요하다”라고 말했다.

---전문은 여기서---

Posted by suvisor