<임베디드 시스템>기고-실시간 OS에 대하여

◆윤지녕 엘섬스쿨원장

다양한 임베디드 운용체계(OS) 중에서도 실시간운용체계(RTOS)라고 불리기 위해서는 특별한 조건을 만족해야 하므로 엄격한 구분이 존재한다고 볼 수 있다.

일반적으로 OS에서는 주어진 작업에 대해 논리적으로 정확한 결과를 낼 수 있으면 되지만 RTOS는 주어진 작업에 대해 논리적으로 뿐만 아니라 시간적으로도 정확한 결과를 낼 수 있어야 한다.

예를 들어 다중 작업환경에서 사용자의 키보드 입력을 처리하는 작업이 음악파일을 연주하는 작업보다 우선 순위가 높은 상태에서 음악을 연주하는 도중에 사용자가 그 연주를 멈추기 위해 키보드 입력을 준 경우를 살펴보자. 일반적인 OS에서는 시스템의 상황에 따라 즉시 연주가 멈출 수 있지만 그렇지 않고 1초 뒤에 멈출 수도 있다. 이 두 가지 모두 논리적으로 올바른 결과라 볼 수 있다. 사용자가 원하는 작업은 「음악 연주를 멈춘다」였고 시간이 좀더 걸렸건 덜 걸렸건 음악만 멈추면 성공적으로 작업을 수행한 것이기 때문이다.

반면에 실시간 OS에서는 위에서 이야기한 대로 시간적으로도 정확한 결과를 내야 하므로 「100분의 1초 내에 음악을 멈춘다」라는 식의 작업이 돼야 한다. 음악이 멈추긴 했지만 100분의 2초가 걸렸다면 이는 논리적으로는 작업을 완수했지만 시간적으로는 실패한 것으로 간주된다.

따라서 RTOS에서는 이런 시간적으로 정확한 작업을 수행하기 위한 여러 가지 사양을 제공하는데 대표적으로는 인터럽트 응답시간이나 멀티태스킹 환경에서의 작업변경지연(preemtive latency) 등이 있다.

물론 아직도 16비트 혹은 8비트 마이크로컨트롤러만으로도 훌륭하게 원하는 목적을 달성할 수 있는 시스템도 많은 반면, 그에 못지 않게 많은 시스템 개발이 32비트 마이크로컨트롤러를 이용해서 이뤄지고 있다. 이는 당연히 보다 복잡하고 어려운 작업을, 보다 좋은 성능을 가지는 시스템에서 수행하고자 하는 목적도 있지만 또 다른 이유로는 이러한 고성능 32비트 마이크로컨트롤러의 가격이 경제적으로 충분히 사용 가능한 수준까지 떨어졌다는 데서 찾을 수 있다.

하지만 기껏해야 64KB의 메모리 공간을 갖는 16비트 마이크로컨트롤러나 심지어는 내장 롬과 램에서 모든 작업이 가능한 8비트 칩들과 달리 무려 4GB의 메모리 공간과 이를 효율적으로 사용하기 위한 메모리컨트롤러, 캐시컨트롤러, 그리고 CPU 자체의 효율을 높이기 위한 다양한 유닛을 포함하고 있는 32비트 마이크로컨트롤러를 효과적으로 사용하기란 보통 어려운 일이 아니다.

보통 16비트나 8비트 시스템에서는 특별한 OS 없이 모니터 롬이나 기타 하드웨어에 의존하는 디버깅 도구만을 가지고 원하는 소프트웨어 작업을 해낼 수 있었지만 32비트 시스템을 사용하게 되면서 각종 OS에 관심을 갖게 되는 것은 바로 이 때문이다.

최근 들어 소프트웨어 및 하드웨어 기술을 기반으로 제품개발 사이클도 역시 매우 짧아지게 됐으므로 개발자로서는 보다 짧은 기간에 보다 다양한 기능의 제품을 보다 싼 가격에 개발해야 하는 어려움에 직면하게 된 것이다.

임베디드 시스템에서 RTOS를 사용할 때 물론 OS 자체의 성능이나 기능도 중요하지만 그에 못지 않게 중요한 것이 바로 이 개발환경의 유용성이다.

얼마나 많은 기능을 제공하는지, 사용하기는 얼마나 편리한지, 그리고 특히 교차개발(cross development)의 특징상 개발 호스트와 직렬 포트나 이더넷 등을 통해서 원격으로 연결돼 있는 타깃 시스템과 얼마나 효율적으로 통신하며 편리한 기능을 제공하는지 등이 전체 개발 기간을 좌우하는 중요한 요소로 부상하고 있다.