컴퓨터시스템구성 2. 실시간운영체제 1 2 운영체제의주요기능 프로세스관리 (Process management) 메모리관리 (Memory management) 인터럽트핸들링 (Interrupt handling) 예외처리 (Exception handling) 프로세스동기화 (Process synchronization) 프로세스스케쥴링 (Process scheduling) 디스크관리 (Disk management) 프로세스, 쓰레드, 태스크 프로세스 : 실행중인프로그램 쓰레드 : 같은주소공간을사용하는 가벼운 (lightweight) 프로세스 한프로세스내에여러쓰레드는전역변수, 정적변수, 파일식별자, 시그널, 코드영역, 힙영억등을공유한다. 하지만, 쓰레드는자신의상태, 프로그램카운터, 레지스터, 스택등을관리한다. 태스크는대부분쓰레드를의미한다. 3 4
RTOS 커널의주요기능 태스크관리 (Task management) 인터럽트핸들링 (Interrupt handling) 메모리관리 (Memory management) 예외처리 (Exception handling) 태스크동기화 (Task synchronization) 태스크스케쥴링 (Task scheduling) 시간관리 (Time management) 태스크 태스크 = 쓰레드 A sequential program in execution It may communicate with other tasks It may use system resources. 태스크에시간관리를위한데이터구조가필요하다. 5 6 태스크분류 태스크상태 마감시각에따라 경성태스크 연성태스크 주기에따라 주기적태스크 (Periodic tasks) 비주기적태스크 (Aperiodic or non-periodic tasks) 이벤트기반으로태스크의생성이일종의인터럽트로생성 산발성태스크 (Sporadic tasks) 비주기적태스크이나최소발생간격 (Interarrival time) T min 이주어진다. 즉, 한번발생하면적어도 T min 시간이후에발생가능 7 8
TCB (Task Control Block) 태스크관련정보를담고있는구조체 Id Task state Task type Priority Other task parameters Period Computing time Relative deadline Absolute deadline Context pointer Pointer to program code, data area, stack Pointer to resources Pointer to other TCBs 태스크관리 태스크관리임무 태스크생성 태스크종료 우선순위변경 RTOS 에서고려사항 태스크생성시, 메모리할당에걸리는지연시간최소 실시간태스크가사용하는메모리블록은메인메모리에상주하도록한다. (swapping 에의한지연시간때문 ) 실행도중에우선순위를바꾸는것은가급적제한한다. 9 10 인터럽트핸들링 인터럽트타입 비동기적인터럽트 ( 또는하드웨어인터럽트 ) : 일종의태스크로처리 동기적인터럽트 ( 또는소프트웨어인터럽트 ) : 인터럽트발생시키는태스크에서처리 RTOS 에서고려사항 인터럽트지연시간최소 인터럽트우선순위 순환적인터럽트 메모리관리 일반적메모리기법 블록기반, 페이징, RTOS 고려사항 경성실시간태스크에대해서는가상메모리사용금지 일반적으로임베디드시스템에서는메모리보호가안되므로주의 11 12
예외처리 예외예제 마감시각놓침, 메모리부족, 데드락 일반적인해결방법 각에러코드별시스템콜 Watch dog 결함포용 하지만, 모든경우를고려하기어려우므로 Modelling & Verification 연구가중요함. 태스크동기화 동기화도구 세마포어 (Semaphore) 뮤텍스 (Mutex) Spinlock Read/write locks Barrier RTOS 고려사항 Critical Section 의최대시간고려 Race condition 이발생하지않도록여러기법사용 Priority inversion 고려 13 14 태스크스케쥴링 스케쥴링알고리즘 READY 큐에여러가지우선순위를고려해서정렬 우선순위 (HPF) 실행시간 (SCF) 마감시각 (EDF) 도착시각 (FIFO) 스케쥴링알고리즘분류 선점 (Preemptive) vs. 비선점 (Non-preemptive) 오프라인 vs. 온라인 정적 vs. 동적 이벤트기반 (Event-driven) vs. 시간기반 (Time-driven) 태스크스케쥴링 일반적인스케쥴링 CPU 를어떻게효율적으로공유할지가우선 평균응답시간 평균처리량 평균대기시간 RTOS 고려사항 태스크들의실시간성을어떻게보장할것인지에초점 15 16
스케쥴링가능성 (Schedulability) 스케쥴링 주어진태스크들을어떤순서로실행할지정하는것 만약모든태스크의마감시각을맞출경우, feasible 하다라고말한다. 스케쥴링가능성 (Schedulable) 주어진태스크에대해서 feasible 스케쥴링이존재하면스케쥴링가능하다라고말한다. RTOS 의스케쥴링알고리즘은 Schedulability 를어떻게제공하는지가가장중요하다. 시간관리 고해상의하드웨어타이머필요 17 18 실시간운영체제 (RTOS) 기본정의 시간제약을갖는실시간시스템의구성을위한기본플랫폼을제공 예측가능한커널서비스 태스크의시간성을만족시킬수있는기능 성능 vs. 예측가능성 예측가능성이우선 소프트웨어개발환경으로개념이확장 RTOS 의구성요소 실시간커널 응용소프트웨어에예측가능한서비스제공 모든서비스의최악수행시간의최대값이제공되어야함 라이브러리 개발기간을단축하기위한상위레벨라이브러리 응용소프트웨어개발도구 기본개발툴 (IDE, 원격디버거등 ) 시스템이벤트모니터링툴등 19 20
실시간커널의속성 예측성 (Predictability) 성능 (Performance) 조립성 (Configurability) 유연성 (Flexibility) 커널구성상차이점 21 22 RTOS 분류 우선순위기반커널 응용프로그램들이우선순위기반으로스케쥴링된다. 대부분의상용커널 OSE, VxWorks, QNX, VRTX32, psos, 기존 OS 에실시간성확장 Real-time Linux, Real-time NT, Real-time Mach, 연구용 RT 커널 MARS, Spring, 실시간프로그래밍언어를위한시스템 Ada, Erlang, Real-Time Java, 23