저 자 : 송인준
출판일 : 2003년 8월호
요즘 IT 잡지나 신문에서 많이 볼 수 있는 단어 중 하나가 바로 임베디드 시스템(Embedded System)이라는 말입니다. 과연 이 임베디드 시스템이 무엇인지, 그리고 왜 필요한지, 이러한 컴퓨터 시스템에는 어떠한 운영체제가 필요한지를 이번 연재에서 알아 봅시다.
임베디드 시스템이라는 것을 정의하기에 앞서, 이 임베디드 시스템이 절대로 낯선 존재라고 생각하지 마십시오. 주변의 핸드폰, PDA, 심지어 냉장고와 TV, 콘솔 게임기 등도 임베디드 시스템의 한 종류입니다. 이렇게 말하니 이제 좀 친숙해지는 것 같지요? 그러면 이번 호에는 임베디드 시스템이 무엇인지부터 시작해서, 무엇이 문제인지, 그리고 이런 문제를 해결해나가기 위한 노력들을 살펴보도록 합니다. 또한 이러한 임베디드 시스템을 구동시키는 운영체제를 알아보고 그 디자인을 살펴보도록 하겠습니다. 이번 호에는 지난 연재에 비해 최신의 기술을 다루는 편이네요. 그럼 지금부터 임베디드 시스템과 그것에 쓰이는 운영체제를 공부해 봅시다.
임베디드 시스템의 정의
먼저 무엇이 임베디드 시스템인지, 도대체 어떤 특성이 있고 왜 나왔는지부터 파악해야 합니다. 그렇다면 임베디드(Embedded)라는 말이 무엇을 의미하는 걸까요? 영어사전을 찾아보면 ‘깊숙이 박다. 파묻다. 끼워 넣다’ 등의 의미로 풀이되어 있습니다. 임베디드 시스템이란 간단히 PC가 아닌 어떠한 장치에 끼워 넣은 시스템을 의미합니다. 어떤 독자는 우리말로 ‘내장형 시스템’이라고 표현하기도 합니다. 하지만 우리들이 이번 호에 공부하면서 내장형 시스템이라는 말보다는 임베디드 시스템이라는 말을 쓰도록 하겠습니다. 이 말이 좀더 친숙한 면이 많기 때문이지요.
그렇다면 다시 임베디드 시스템의 정의로 돌아가 보죠. 과연 어떤 장치에 내장한 시스템을 단순히 임베디드 시스템이라고 할까요? 만약 채점을 하면 50점짜리 답안이라고 할 수 있겠네요. 정확한 정의를 내리자면, 임베디드 시스템이란 제한된 자원을 갖고 특정한 목적을 갖는 작업을 처리하기 위한 시스템이라 할 수 있습니다. 제한된 자원이라면 휴대폰을 예로 들어, 크기가 작아야 하고 배터리 수명의 제한 등이 있습니다. 또한 특정한 목적을 갖는 작업이란 휴대폰의 예에서는 전화의 송수신을 담당하는 호(call) 처리가 될 것입니다.
이러한 정의를 두면, 임베디드 시스템이란 우리 주변에서 쉽게 찾아볼 수 있는 시스템이란 것을 알았을 겁니다. 실제로 연간 생산되는 임베디드 시스템은 데스크톱 PC에 비해 훨씬 많은 양을 차지합니다. 오디오, 비디오, TV, 심지어 전자렌지까지 도처에 널려 있습니다. 그렇다면 이제 이러한 임베디드 시스템의 공통적인 특징들을 살펴보도록 하겠습니다.
임베디드 시스템의 공통적인 특징
‘임베디드 시스템은 제한된 자원을 갖는다’
임베디드 시스템의 가장 큰 특징이며 그것을 정의하는 가장 큰 요소는 제한된 자원을 갖는다는 점입니다. 휴대폰이나 PDA, MP3 플레이어 등 주위에서 쉽게 볼 수 있는 임베디드 시스템의 큰 특징은 에너지가 제한적이라는 점입니다. 배터리를 쓰는 것들의 가장 큰 약점이라고 할 수 있죠. 하나의 예로, 휴대폰에서 지금보다 더 화려하고 빠른 게임을 즐기는 것이 불가능한 것은 아닙니다. 이미 CPU의 성능이나 메모리의 성능은 매우 뛰어난 기술을 갖추고 있으니까요. 다만 그것을 구동시키는 에너지원인 배터리의 문제가 더 크다고 할 수 있습니다. CPU의 속도를 빠르게 하려면 배터리 소모가 늘어나게 되는데, 그렇게 하면 아침에 충전한 전화기가 점심 먹을 때에 삑삑 소리를 내며 전원이 꺼질 수도 있겠죠.
배터리의 제한
사실상 가장 큰 문제점이라고 할 수 있습니다. 물론 냉장고나 자동차, 혹은 전자레인지에 들어가는 임베디드 시스템은 그 심각성이 좀 덜한 편이지만, 컴퓨터 개발자들이 흔히 접하게 되는 PDA 같은 경우에는 배터리로 인한 에너지의 제한점이 큰 걸림돌이 되는 경우가 많습니다. 이러한 배터리, 즉 파워의 제한을 해결하는 방안에는 몇 가지가 있습니다.
우선 하드웨어적인 문제로 해결하는 방법입니다. 가장 기본적인 것은 물론 배터리의 용량을 늘리는 방법입니다만, 그것은 기술의 발전 속도상 어려운 일입니다. 또 다른 방법으로는 CPU의 모드를 두는 것입니다. 마냥 빠르게만 작동하는 CPU가 아니라, 그 속도를 늦추거나 하는 일이 없을 때는 잠들어 있는 것입니다. 이렇게 CPU를 제어하는 방법 외에 메모리의 설계를 저전력을 위한 구조로 바꾸는 방법도 있습니다. 이러한 하드웨어 해결책 외에도 소프트웨어 해결책도 있습니다. 운영체제의 구조를 저전력을 위한 구조로 바꾸는 것이 하나인데, 이것은 CPU의 모드를 어떻게 하면 적절하게 변환할지를 운영체제에서 제어하는 것입니다. 또한 임베디드 시스템 위에서 돌아가는 소프트웨어의 구조를 저전력을 위한 형태로 만들기 위해 특화된 컴파일러를 이용하는 것도 하나의 방법입니다. 우리가 공부하는 것은 임베디드 시스템을 위한 운영체제이지만, 이를 공부하기 전에 하드웨어 접근방법에는 무엇이 있는지 간략하게나마 살펴보고 진행하겠습니다.
저전력을 위한 CPU 구조
저전력을 위한 CPU 구조에도 몇 가지의 접근 방식이 있습니다. 그중에서 가장 대표적인 것은 가변적인 전력 기술(variable-voltage mechanism)입니다. 전력 소비를 줄이는 가장 효율적인 방법이 전력을 낮추면 된다는 것은 누구나 아는 사실입니다. 전통적인 시스템에서는 고정적인 전력을 사용하였지만, 최근에는 전력을 동적으로 변하게 하는 방법을 사용합니다. 이렇게 전력을 동적으로 변화시켜서 사용하기 위해서는 언제 얼마큼 전력을 낮추어야 할지 정해야 하는데, 이것을 CPU의 동작이 활발한 때와 활발하지 않은 때로 나누어서 정하는 것입니다. 요즘 PDA 등에 많이 쓰이는 암(ARM) CPU의 경우, 7개의 모드를 갖습니다.
저전력을 위한 메모리 설계
메모리와 CPU의 데이터 전송시에 소비되는 전력 낭비를 줄이기 위한 방안들이 연구되고 있습니다. 이 분야는 전산학을 전공한 개발자들에게 생소하며 전자공학과를 전공한 사람들이 주로 연구하는 분야이지요. 메모리와 CPU 간의 데이터 전송을 줄이기 위해 비트의 수를 줄이는 방법이 있습니다. 또한 성능 향상을 위해 만들어진 캐시의 설계를 전력 소비를 줄이기 위한 설계로 바꾸어 나가는 방향도 있습니다.
저전력을 위한 컴파일러 최적화
하드웨어 접근법을 앞에서 살펴봤습니다. 이외에 소프트웨어 실행시에 전력의 소비를 최소화하려고 노력하는 움직임도 있습니다. 그러기 위해서는 최적화된 컴파일러를 사용해야 하는 것이지요. 물론 이러한 해결책은 하드웨어적인 해결책을 기반으로 행해지는 것이 보통입니다. 이러한 방법은 프로그램 개발자가 코딩할 때와 컴파일할 때에 코드 수준의 최적화라 할 수 있습니다. 앞으로 임베디드 시스템의 응용 프로그램을 개발할 일이 많은 개발자는 이러한 저전력에 대한 개념을 가지고 개발에 임한다면 한 단계 높은 수준의 프로그램을 개발할 수 있을 것입니다.
저전력을 위한 운영체제 구조
저전력을 위한 운영체제의 구조에는 하드웨어를 어떻게 조작할 것인지에 대한 접근방식입니다. CPU의 모드를 어떻게 제어할 것인지가 주를 이루게 됩니다. 즉, CPU의 모드 중 전력을 덜 소비하는 모드를 정하려면 저전력을 위한 프로세스 스케쥴링 등이 필요하게 되는 것이지요.
저장 매체의 제한
임베디드 시스템이 갖는 제한된 자원 중에는 저장 매체에 대한 것도 빼놓을 수 없습니다. PDA나 휴대폰에는 보통 대용량의 하드디스크 대신 플래시 메모리를 장착합니다. 플래시 메모리는 하드디스크에 비해 용량대비 가격이 비쌉니다. 하지만 하드디스크를 달지 못하는 이유는 간단합니다. 그것은 하드디스크의 암을 움직여주는 모터에 있습니다. PDA나 휴대폰에 그러한 모터가 달린다면 약간의 충격이라도 쉽게 파손되고 소음도 심할 수 있습니다.
크기의 제한
임베디드 시스템의 크기를 보면 가전제품에는 영향을 주지 않지만 휴대용 기기에는 크게 작용하는 편입니다. 이동성을 중시하는 휴대용 기기에 큰 덩치를 가진 것이라면 여간 가지고 다니기 어렵습니다. 크기의 제한은 간접적으로 에너지의 제한도 가져옵니다. PDA에 007 가방만한 배터리를 들고 다녀도 상관은 없으나, 크기가 너무 커져 휴대하기 불편할 게 뻔합니다.
이러한 총체적인 문제들, 즉 임베디드 시스템 중 특히 휴대용 기기들이 갖는 제한된 자원이라는 한계점은 앞으로 더욱 발전해야 할 여지들을 남겨주고 있습니다. 지금도 이것들을 해결하기 위해 부단히 노력중이지요. 제한된 자원이라는 임베디드 시스템의 특성 말고 다른 또 하나의 큰 특성으로는 특화된 목적을 갖는다는 점입니다. PDA나 전자수첩의 경우, 개인정보의 관리라는 특화된 목적을 갖고 있습니다. 또한 라우터에 들어가는 시스템의 경우, 데이터 패킷을 최적의 경로로 포워드하기 위한 특화된 목적을 갖는 것이지요. 그렇다면 일반적인 목적을 갖는 범용 시스템과 특화된 목적을 갖는 임베디드 시스템에는 어떠한 차이가 있는지 알아보기로 하죠.