※ 아래는 윤성우 뇌를 자극하는 윈도우즈 프로그래밍 한빛미디어(주) 2022년
Chapter09(p.293 ~ 315)를 읽고 정리한 내용입니다.
RTOS(실시간 운영체제)와 일반 OS를 구분 짓는 기준을 단순히 속도로 정의하면 안 된다.
속도와는 별도로 응답성의 관점에서 이 둘을 구분해야 한다.
응답성이 좋으면 RTOS라 한다.
일반적으로 응답성이 좋을수록 둘 이상의 일을 동시에 처리하는 멀티 프로세스의 성격이 약하다.
-> Soft RTOS
데드라인이 중요한 시스템에서 이를 충족시킬 수 있는 능력을 지닌 RTOS를 Hard RTOS라 한다.
(예) 자동차의 ABS 시스템 등 0.1초라도 늦게 동작하면 안되는 경우
선점형 OS는 현재 실행 중인 프로세스보다 높은 우선순위의 프로세스가 등장하면 그 순간
바로 실행중인 프로세스를 변경해 버린다.
비선점형 OS는 우선 순위가 높은 프로세스가 등장하더라도 현재 실행 중인 프로세스가
일을 넘기지 않으면 프로세스의 실행이 이동하지 않는다.
(1) 퀀텀 혹은 타임 슬라이스(Time Slice)마다 (라운드 로빈 스케줄링 알고리즘)
(2) 프로세스가 생성 및 소멸될 때 마다 (우선순위 스케줄링 알고리즘)
(3) 현재 실행 중인 프로세스가 블로킹 상태에 놓일 때 마다
(참고) 기아 상태(Starvation)
우선순위 스케줄링에서 우선 순위가 낮은 프로세스가 절대로 실행되지 않는 상태에 빠지는 것
우선 순위가 아래와 같은 프로세스가 있다.
프로세스 A > 프로세스 B > 프로세스 C
프로세스 C가 계산해서 던져주기로 한 값이 도착하지 않았기 때문에 프로세스 A가 작업을 멈췄다.
A는 Blocked 상태에서 C가 값을 던져주길 기다렸지만 우선순위가 높은 B에 의해 B의 작업이
이루어 지고 있다.
-> 해결 방법 : 프로세스 A가 프로세스 C에게 자신의 우선순위를 잠시 위임하고 Blocked 상태에 빠지면 된다.
