R - Real-time processor: 운영체제 불가능(?), 통신가능, real time 임무 위주 역할, RTOS를 올려서 사용해라
M - Microcontroll Processor: 운영체제 불가능, 통신가능
Q1. A가 최고 성능이면 A는 realtime을 깔고 가나요?
>> A라고 realtime을 깔고 가진 않는다.
책 내용엔 이런 것도 있다고 한다,
- A가 가장 성능이 좋다, R은 A보다는 떨어지지만 realtime application 적용에 적합하다.
- M은 가장 단순하고 개발이 쉽고 성능이 낮다.
- Realtime application의 예로는 인터넷에 관련된 내용이 많다.
실시간 운영 체제 또는 RTOS(real-time operating system)는 원하는 작업을 요구되는 시간 내에 처리할 수 있는 걸 보장하는 운영 체제를 말한다. 대부분 RTOS가 들어가는 기기들은 임베디드 시스템인데, 이것들은 보통 일반 PC보다 성능이 낮은 것들이 들어간다. Real-time인데 왜 성능이 낮은 걸 쓰느냐고 할 수 있는데, Real-time과 High performance는 다른 개념이다. 만약 1초마다 끝마쳐야하는 작업이 있다고 하면, 일반적인 PC OS를 쓰는 고성능 컴퓨터는 보통의 경우 0.1초 만에 끝낼 수는 있지만 다른 프로세스에 의해서 막히면 2초, 10초도 걸릴 수 있다. PC OS를 쓰다보면 알겠지만 평소보다 느려질 때가 분명히 있다. 하지만 RTOS를 탑재한 기기는 보통 0.8초에 끝내지만 어떠한 상황에서도 1초 내에 끝내는 것을 보장한다. 여기서는 초 단위를 예로 들었지만, RTOS는 대체로 수 밀리초(1/1,000 초), 심지어는 마이크로초(1/1,000,000 초)단위로 컨트롤하기 위해 쓰인다. 리눅스나 윈도우에선 밀리초 단위로 정교하게 프로그래밍하기 매우 힘들다.
또한 RTOS를 쓰는 임베디드 기기가 특정 작업만 하도록 설계되었고, 일반 PC처럼 프로그램을 이것저것 설치해서 쓰는 것이 아니여서 원하는 작업에 대한 성능만 갖추면 되지 굳이 비싸고 크기가 큰 고성능의 칩셋을 쓸 필요가 없다.
이러한 특성으로 엄밀한 처리가 요구되는 시스템에서 주로 사용한다. 대개 데스크탑 OS는 실행시간이 몇 초 정도 느려져도 별 문제 없지만, 항공 제어나 생산 관리 등 특정한 시스템에서는 단 1,2초의 지연이 처참한 결과를 불러올 수 있기 때문이다.
시스템의 시간 관리 부분에 많은 비중을 투자하여, 응용 프로그램의 처리 요청을 정해진 시간 내에 끝마쳐 줄 수 있는 성능에 비중을 두고 있다. 선점형 멀티 태스킹을 지원하고 각 프로세스의 실행 순서를 정의하는데 많은 비중을 투자한다.
또 임베디드 시스템은 재부팅을 수시로 할 수 있는 데스크탑 시스템과는 달리 몇달, 몇년간 재부팅 없이 실행되는 경우가 흔히 있다. 이 때문에 동적 메모리 할당을 최적화 하여 메모리 단편화를 허용하지 않는다. 즉, C에서의 malloc() 같은 함수를 거의 쓰지 않는다는 이야기[각주:1]다.