본문 바로가기

Job Notes/Embedded System & RTOS

1. Embedded System 이란?

1 Embedded System 이란?

  RTOS(Real Time OS)를 논하기 이전에 우리는 먼저 Embedded System 이란 무엇인가를 정의해야 한다. 이유는 이후에 설명할 를 Embedded System 이란 말과 혼용하는 데서 생기는 오용을 막기 위함이다. 쉽게 말하면, Embedded System 은 RTOS 를 포함한다고 볼 수 있다. 즉, 모든 RTOS 를 사용하는 system 은 전부 embedded system 이라고 볼 수 있다. 하지만, 이것 자체로는 정확한 정의가 아니다. 만약 PC 같은 곳에 RTOS 를 사용해서 window 와 같은 것을 만들었다고 했을 때, 이것을 embedded system 으로 볼 것인가라는 문제가 생긴다. 즉, Embedded System 이란 PC 와 같은 시스템과는 차이가 난다는 것을 우리는 인지하고 있다. 그럼 무엇이 이러한 차이점을 만들어 내는 것일까?

  많은 Embedded System 을 정의하는 책을 보았지만, 정확히 정의하고 있는 책은 드물다.
그렇다고 그 정의가 절대적인 것도 역시 아니다. 그 중에서 기억에 남는 Embedded System 을 정의하는 구절로는 다음과 같은 것이 있었다.

“사용자의 프로그래밍을 필요로 하지 않는 시스템”

  즉, 사용자가 더 이상의 프로그래밍을 할 필요가 없이 정해진 목적으로만 사용자의 input 에 대해서 반응하는 시스템을 말한다. PC 와 같은 시스템은 만들어진 목적자체가 general 한 시스템으로 특정한 사용처를 염두에 두지 않았다. 즉, 사무용이나, 기타 program 개발용 등 여러 가지 목적으로 사용할 수 있다. 하지만, Embedded System 은 만들어진 것 자체가 특수한 목적을 가지고 있으며, 그 목적만을 잘 수행하면 문제가 될 것이 없는 것이다. 그 목적이 무엇인가에 따라서, 다시 Embedded System 은 Real-Time System 혹은 그렇지 않은 Embedded System 으로 구분될 수 있을 것이다. 즉, Real-Time System 도 실제로는 Embedded System 의 하나의 subset 정도 밖에는 되지 않는다. Windows 와 같은 경우에도 Embedded System 을 구성하는 OS 로 사용할 수 있으며, 편의점의 POS(Post On Sale) 단말기와 같은 곳에서 흔히 발견할 수 있다. 즉, POS 와 같은 시스템은 굳이 Real-Time System 일 필요는 없는 것이다.

  Real-Time System 도 크게 2 가지로 나누어진다. 이와 같은 구분은 결과의 유효성이 얼마만큼의 시간 동안 유효한가에 따른 분류이다. 이때 시간이라는 중요한 요소가 생기는데, 그 시간을 흔히 deadline 이라고 표현한다. 모든 Real-Time System 이 반드시 10msec, 1msec, 1usec 와 같이 극히 작은 시간의 단위의 정밀성을 요구하는 것은 아니다. 어떤 시스템의 경우에는 1 초라는 deadline 이 있을 수 있으며, 어떤 시스템의 경우에는 10 초 혹은, 100 초, 혹은 1 년이라는 deadline 이 있을 수도 있다. 하지만, 대부분의 Real-Time System 의 경우에는 시간의 정밀성을 극히 많이 요구하며, Real-Time System 의 성능을 평가하는 요소로 시간의 해상도(resolution)을 사용하기도 한다. 하지만, 궁극적으로 목적하고 있는 일이 무슨 일인가를 통해서, 그 시스템이 요구를 만족시키는가 아닌가를 따져야 하는 것이지, 무조건 더 좋은 resolution 을 가지는 시스템이 좋은 시스템이라는 것은 아니다. 간혹 이러한 것을 혼동해서 필요 이상의 시스템을 구성하는 경우가 있는데, 이는 분명 낭비이다.

  Real-Time System 을 deadline 에 따른 결과값의 유효성에 따라 Hard Real-Time System 과 Soft Real-Time System 으로 구분한다. Hard Real-Time System 은 deadline 이전에 반드시 결과 값을 돌려주어야 하는 시스템이며, 만약 deadline 이후에 결과 값을 받는다면, 결과값은 유효하지 않는 것이다. 하지만, Soft Real-Time System 은 deadline 이 지나더라도 그 결과값의 유효성은 떨어지지만 완전히 무효가 되는 것은 아니다. 하지만, 시간의 경과에 따라 점차 그 유효성이 줄어들고, 결국에는 특정 임계 점을 지나게 되면 완전히 무효가 된다. 간단한 예로 흔히 Hard Real-Time System 은 공장의 특정 공정에서 많이 사용되며, 결과가 나오지 않을 경우에 치명적인 오류를 발생시키는 시스템을 말한다. 치명적인 오류는 인명의 손실과 같은 돈으로 계산할 수 없는 것까지 포함될 수 있다. 하지만, Soft Real-Time System 같은 경우에는 이와 같은 것이 경감된다. 흔히 접하는 영상 매체인 경우를 예를 들어본다면, VOD service 와 같은 것이 원활히 보여지게 하려면 초당 26 에서 30 frame 이상을 보여주어야 한다. 하지만, 24 frame 정도만 보여준다고 해서 못 볼 정도는 아닌 것이다. 다만 사용자가 화면의 끊어짐을 파악할 수 있게
되고, 결과적으로 시스템의 성능이 좋지 못하다고 느끼게 된다는 것이다. 따라서, 이와 같은 시스템에서는 사용자의 관점이라는 요소가 크게 작용하며, 임계 치가 얼마인가가 중요하게 된다.

사용자 삽입 이미지

그림 1. Hard Real-Time System VS. Soft Real-Time System



  이제 우리는 Embedded System 에 대한 기본적인 것을 파악했고, Real-Time System 이라는 것이 무엇인지도 어느 정도 이해를 했다. 그렇다면, 왜 Real-Time System 에는 Real-Time Operating System 을 사용해야 하는지를 알아보도록 하자.

  일반적으로 micom 레벨에서 프로그램하는 것은 프로그램의 특정 부분을 반복적으로 수행하는 구조를 가진다. 즉, event loop 를 돌면서 외부에서 발생하는 event 들에 대해서 특정 함수를호출해서 처리하는 구조를 작성된다. 이때는 굳이 OS 와 같은 것을 사용할 필요는 없다. 하지만, 문제가 될 부분은 분명히 존재한다. 즉, 외부로부터 발생하는 event 가 순서가 정해져 있어야 한다는 것이며, 이 순서에 따라 처리가 일어나게 되므로, 이것 자체가 우선순위(priority)가 된다는 것이다. 따라서, 우선 순위가 잘못된 할당이 된다면, 발생하는 실시간 event 들에 대해서 적절히 대응해 줄 수 없게 된다. 또한, 만약 event 를 처리하는 function 자체가 길어진다면 그 함수의 처리시간에 대한 예측을 할 수 없게 되며, 실시간 event 에 대해서 deadline 을 만족시키지 못하게 되는 경우가 발생할 수 있다. 여기서 우리는 실시간 시스템에서 가장 중요하게 여겨지는 결정성(determinism)이란 것을 배우게 된다. 즉, 모든 시스템의 활동(activity)가 예측 가능해야 한다는 것이다.