2007 년에 Real Time 구현을 위해 자료를 조사하던 중 기록한 내용임. 퍼왔는지 내가 직접 정리했었는지는 기억 안남. 백업 차원에서 일단 포스팅.

RTOS


RTOS - 주어진 작업을 정해진 시간 안에 수행할 수 있는 환경을 제공하는 운영체제

RTOS 와 일반 OS 비교
    - RTOS ; 정해진 시간 제약을 해결하는데 초점
    - 일반 OS ; 하드웨어 자원(메모리, I/O 디바이스, 하드디스크 등) 을 얼마나 효율적으로 사용하고, 얼마나 공평하게 자원을 분배할 것인가에 초점
    - RTOS는 하드웨어 자원을 좀 낭비하더라도 작업의 시간 제한을 맞추려 하고 공평성의 개념보다는 우선 순위가 높은 태스크가 많은 시간 동안 동작을 수행할 수 있도록 조정

RTOS의 특징 
    - 다중 쓰레드 지원하고 선점이 가능해야 함
    - 쓰레드 간의 우선 순위를 보장해야 함
    - 쓰레드 간의 동기화를 지원해야 함
    - 운영체제의 행동(시간적 행동)이 명확해야 함

Linux is not RTOS
    - Time Sharing Scheduling
    - 커널 모드에서 선점(Preemption) 할 수 없음
    - 가상 메모리를 사용
    - 서로 동기화가 필요한 부분에서는 성능을 위하여 자원을 오랜 시간 동안 점유

RTLinux
- RT-Linux란?
    . RT-Linux 나 RTAI는 모두 커널 모듈로서 동작한다. 그러나 동시에 올릴 수는 없다. 
    . RT-Linux와 RTAI(Real Time Application Interface)는 모두 Real Time을 지원해주며 특히 RT-Linux는 Hard Real Time을 지원한다.
    . RT-Linux는 원래의 리눅스 커널을 자신의 최하위 우선순위 태스크로 보고 실시간성이 요구되는 태스크를 수행한 후 리눅스 커널을 수행하는 방식으로 실시간성을 보장한다.
    . 어플리케이션을 위한 시스템 콜 연구요망.

- Real Time Kernel 
    . Linux의 구성 요소를 그대로 가지면서 실시간 운영체제로 전환시키는 작고도 효율적인 코드로 이루어진 Micro Kernel
    . Linux Kernel 과 하드웨어 사이에서 동작
    . Kernel 수준에서 실시간 태스크의 수행을 지원하며 Linux Kernel 프로세스를 이러한 태스크 중 하나로 간주
    . Linux Kernel 프로세스는 실시간 태스크가 없을 때 수행하는 가장 낮은 우선순위를 가짐.
    . Linux 원래 함수를 인터럽트 가능/불가능하도록 변경 

- RTAI (RealTime Application Interface for Linux)

    . RTAI supports several architectures :  ---> 2007년 자료조사 시점 기준
       1. x86 (with and without FPU and TSC)
       2. x86_64
       3. PowerPC (recovering)
       4. ARM (Strong ARM, ARM7: clps711x-family, Cirrus Logic EP7xxx, CS89712, PXA25x)