상세 컨텐츠

본문 제목

09.1 프로세스의 스케줄링(Scheduling)

Programming/Windows System

by RACC8N 2020. 4. 18. 20:13

본문

일반 OS와 리얼타임(Real Time) OS (응답성으로 OS를 구분)

- RTOS와 일반 OS의 차이는 응답성(응답속도)에 있다. 

 

일반 OS는 범용적인 사용을 위해서 디자인 되어있다. 

RTOS는 사용하는 영역이 제한적이다. 범용적인 OS보다 하는 일이 적다. 

 

※ RTOS는 일반 OS에 비해서 속도가 빠른 것이 아니다. 사용되는 목적이 구체적이고 제한적이다 보니, 보다 단순하게 디자인되어 있고 일반 OS에 비해서 훨씬 가볍다. 따라서 응답성이 좋을 뿐이다.

 

Soft RTOS vs Hard RTOS

 

Soft RTOS : 하는 일이 특화되다 보니 응답성이 일반 OS에 비해 좋은 것뿐. 접하는 대부분의 RTOS 가 Soft RTOS

 

Hard RTOS : 데드라인(Dead Line)이 존재.  정말 크리티컬한 상황에서 발생한다. ex) 자동차 ABS 시스템.

데드라인이 중요한 시스템에서 이를 충족시킬 수 있는 능력을 지닌 RTOS를 Hard RTOS라 한다.

 

선점형(Preemptive) OS와 비선점형(Non-Preemptive) OS (프로세스의 실행을 다른 프로세스로 넘기는 방식으로 OS를 구분)

 

비선점형 OS

- 현재 실행중인 프로세스보다 높은 우선순위의 프로세스가 등장한다고 해서 실행의 대상을 바로 변경하지 않는다.

- 새로 등장한, 보다 높은 우선순위의 프로세스가 실행되기 위해서는 현재 실행 중인 프로세스가 명시적으로 CPU를 양보할 때까지, 혹은 I/O작업 등으로 블로킹 상태에 놓일 때 까지 기다려야만 한다.

 > 비선점형 OS의 경우 Interactive한 프로그램 구현 시 프로그래머 의존도가 높아진다.

 

선점형 OS

- 현재 실행 중인 프로세스보다 높은 우선순위의 프로세스가 등장하면 스케줄러에 의한 시행순서 조정이 적극 가해진다.

- 비선점형 OS에 비해 스케줄러가 하는 일이 많다.

 > 멀티 프로세스 기반 OS에 적합하다 -> 스케줄러에 의해서 실행순서가 조절되다 보니 프로그래머가 신경 쓸 일이 줄어들기 때문이다.

 

우선순위(Priority) 스케줄링 알고리즘

각각의 프로세스마다 우선순위를 부여해서 우선순위가 높은 프로세스를 먼저 실행시키는 방식이다.

 

라운드 로빈(Round-Robin) 스케줄링 알고리즘

정해진 시간 간격만큼만 실행을 하고 우선순위가 동일한 다른 프로세스에게 CPU의 할당을 넘기는 방식이다. (형평성)

 

***스케줄링 알고리즘에 의해서 스케줄링이 진행되는 시점

Case 1 : 매 타임 슬라이스(Time Slice)마다 스케줄러 동작 -> 라운드 로빈 

Case 2 : 프로세스가 생성 및 소멸될 떄마다 스케줄러 동작 -> 우선순위

Case 3 : 현재 실행 중인 프로세스가 블로킹 상태에 놓일 때마다 스케줄러 동작 -> 블로킹

 

Priority Inversion : 프로세스의 우선순위가 뒤 바뀌는 현상

[example]  프로세스 A > 프로세스 B > 프로세스 C

프로세스 A가 작업중이다가 프로세스 C가 계산해서 주기로 한 값을 받기위해 잠시 멈췄다.

이때 프로세스 C가 일을 할 수 있게 프로세스 A는 blocked 상태로 진입했다.

이것을 본 프로세스 B는 프로세스 C를 밀치고 CPU를 차지했다. 

우선순위가 뒤바뀌었다.

해결 - 프로세스 A가 blocked 생태로 가기 전에 프로세스 C에게 자신의 우선순위를 위임해주면 된다.

 

프로세스 우선순위 변경 함수 : SetPriorityClass()

hProcess 우선순위를 변경할 프로세스의 핸들
dwPriorityClass 우선순위 (아래 참조)

 

Windows 프로세스의 우선순위 (숫자가 높을수록 높은 우선순위를 가짐)

IDLE_PRIORITY_CLASS 기준 우선순위 4
NORMAL_PRIORITY_CLASS 기준 우선순위 9
HIGH_PRIORITY_CLASS 기준 우선순위 13
REALTIME_PRIORITY_CLASS 기준 우선순위 24
ABOVE_NORMAL_PRIORITY_CLASS NORMAL_PRIORITY_CLASS보다 높고 HIGH_PRIORITY_CLASS보다 낮은 우선순위
BELOW_NORMAL_PRIORITY_CLASS IDLE_PRIORITY_CLASS보다 높고 NORMAL_PRIORITY_CLASS보다 낮은 우선순위

 

이것만은 알고 갑시다

 

1. 응답성 관점에서 RTOS와 일반 OS의 구분

- RTOS와 일반 OS를 구분 짓는 기준을 단순히 속도로 정의하면 안된다. 속도와는 별도로 응답성의 관점에서 이 둘을 구분해야 한다. 응답성이 좋다는 것은 새로운 일의 실행을 지시했을 때 그 일을 시작하기 까지의 걸리는 시간이 아주 적음을 의미한다. 

 

2. 선점형 OS와 비선점형 OS의 특징

- 선점형 OS는 현재 실행 중인 프로세스보다 높은 우선순위의 프로세스가 등장하면 그 순간 바로 실행 중인 프로세스를 변경한다. 비선점형 OS는 우선 순위가 높은 프로세스가 등장하더라도 실행중인 프로세스가 일을 넘기지 않으면 프로세스의 실행이 바뀌지 않는다.

 

3. 스케줄러가 동작하는 세 가지 시기

- 매 타임 슬라이스 마다

- 프로세스가 생성 및 소멸 할 때마다

- 현재 실행 중인 프로세스가 블로킹 상태에 놓일 때마다

 

 

 

 

 

관련글 더보기

댓글 영역