임베디드 시스템에서의 OS

임베디드 시스템이라는 것은 일반적인 시스템과는 달리 특정한 작업만을 하도록 설계되며 초기의 임베디드 시스템은 비교적 단순해서 운영체제가 필요 없이 사람이 순차적인 프로그램을 작성해서 실행되도록 하였고, 중간에 인터럽트가 발생되는 경우에만 그 순차적인 프로그램에서 잠시 벗어나는 정도였다. 이전의 임베디드 시스템들은 주로 간단하고 단순한 순차적인 작업에 관련되었기 때문에 굳이 OS를 사용한다는 것은 낭비가 되었었고 그럴 필요조차 없었다. 하지만 최근의 임베디드 시스템 분야에서는 그 시스템 자체가 커지게 되고, 네트워크나 멀티미디어가 시스템에 기본으로 자리잡으면서 임베디드 시스템이 해야 할 일들도 많아지고 복잡해 졌기 때문에 순차적인 프로그램 작성이 매우 어렵게 되었다.

따라서 임베디드 시스템에서도 운영체제의 개념이 필요하게 되었고 임베디드 시스템의 특정상 실시간이라는 요소를 만족해야 했으므로 실시간 운영체제가 임베디드 시스템에 도입되었던 것이다. 지금도 실시간 OS를 채택하여 개발된 제품들이 점점 늘어나고 있다. 이제는 많은 임베디드 시스템에서 그 목적에 맞게 실시간 운영체제와 함께 적절하게 사용되어 지고 있는 실정이다.

참고적으로 실시간 시스템(Real-Time System)과 실시간 운영체제(Real-Time OS)에 대해서 간략하게 언급하겠다.



실시간 시스템

실시간 시스템을 다룬 책이나 논문, 기타 관련자료를 살펴보면 그 정의는 대부분이 일치한다. 그 주된 내용은 실시간 시스템은 정해진 시간 내에 시스템이 결과를 출력하는 시스템을 말하고 있다. 이 말은 주어진 작업을 빨리 처리하는 것이 아니고 정해진 시간을 넘겨서는 안된다는 것이다.

임베디드 시스템이 실시간적인 요소가 있기 때문에 임베디드 시스템 자체를 실시간 시스템이라고 생각해도 큰 무리는 없을 듯하다. 그러나, 좀더 정확히 이야기하자면 실시간 시스템이 임베디드 시스템에 포함된다고 보는 편이 낳을 것이다. 실시간 시스템도 Hard Real-Time System과 Soft Real-Time System으로 두 가지로 나뉜다.

전자의 경우는 정해진 시간 내에 작업의 결과가 절대적으로 출력되어야 하는 시스템이다. 간단한 예를 들면 전투기의 비행 제어 시스템이라든지 핵발전소의 제어 시스템, 인공위성의 제어 시스템 등등 작업의 결과가 정해진 시간 내에 나오지 않게 되면 막대한 손실을 발생할 수 있는 치명적인 결과가 나오게 되는 경우이다.

후자의 경우는 정해진 시간 내에 작업의 결과가 출력되지 않더라도 Hard Real-Time System처럼 치명적인 결과는 나오는 그런 시스템이 아닌 경우이다. 다시 이야기하면 Soft Real-Time System은 정해진 범위를 넘는 시간 지연이 발생하더라도 그것이 시스템 에러가 되지 않는다.



RTOS

RTOS는 임베디드 시스템이 가지는 특성 중 실시간적인 요소를 충족하기 위해서 나온 운영체제라고 할 수 있다. 즉 RTOS는 임베디드 시스템의 근간이 되는 운영체계인 셈이다.

실시간 운영체계라고 하면 일반적으로 말하는 운영체계(windows 계열, UNIX, LINUX)와는 무언가 막연하게 조금은 다를 것이라고 생각이 될지도 모르겠다. 하지만 임베디드 운영체제라고 해서 특별하게 다른 것은 없다. 일반 OS들이 수행하는 태스크 스케줄링, 태스크간의 통신, 메모리 관리, I/O, 인터럽터 등 이러한 요소들을 RTOS도 같이 지원한다. 일반 OS와 차이점을 두자면 시간제약에 차이, 신뢰성, 범용성과 특수성 정도이다. 예를 들어 윈도우 환경 하에서 어떤 프로그램을 실행하였는데 어느 때는 빨리 실행되고, 어느 때는 늦게 실행된다고 해서 큰 문제될 것은 없다. 혹, 수행하는 프로그램이 잘못 수행되어 시스템이 다운되는 경우가 발생할 수도 있다. 그러나, RTOS 환경 하에서 실행되는 작업들은 정해진 시간이 큰 문제가 될 수 있다. 더군다나 그 시스템이 응답이 없거나 흔히 이야기하는 다운된다든가 하면 그 피해는 막심할 것이다.

따라서, 임베디드 시스템이 가지는 정해진 시간 내에 수행하는 능력, 신뢰성은 일반 OS보다 가혹하게 지켜져야 하는 규약과도 같은 것이다.

또한, 일반 OS(예를 들어 UNIX, Windows)들은 PC환경에서 여러 가지 작업들을 수행할 수 있으나, RTOS는 작업환경이 Embedded System으로 제한을 받고 있으며, 그 시스템 또한 보통 한가지 목적으로 개발되어 있다. 그러기에 RTOS 역시 그 한가지 목적을 위해 최적화되어 있다고 보면 된다.

부연적으로 이야기를 하면 임베디드 OS와 RTOS와는 어느 정도 구별이 필요하다. 임베디드 시스템이 실시간적인 요소를 가지는 것은 사실이지만 모든 임베디드 OS가 RTOS인 것은 아니다. 가장 적당한 예로 PDA에 들어가는 OS가 적절할 것이다. 다시 이야기하면 임베디드 OS 내에 RTOS가 포함된다고 보는 편이 좋을 것이다.
Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요