728x90

멀티 프로세스 기반 운영체제는 실행중인 프로세스들에게 골고루 CPU를 할당하는 일이 필요한데, 운영체제의 일부분인 스케줄러가 이러한 일을 담당한다.

 

일반 OS와 리얼타임(Real-Time)OS의 차이점

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

RTOS는 어떠한 작업이 생기기만을 기다리다가 작업이 생기면 그 일을 끝낼때 까지 다른일은 하지 않는다.

그렇기 때문에 RTOS는 응답성은 매우 좋지만 범용적인 OS에 비해 사용하는 영역이 제한적이다.

 

일반 OS는 여러가지 일(다양한 프로세스)을 동시에 진행하기 때문에 응답성은 조금 떨어지지만 범용적으로 사용이 가능하다.

 

RTOS는 일반 OS에 비해 사용되는 목적이 구체적이고 제한적이여서 단순하게 디자인 되어있고 일반 OS에 비해서 훨씬 가볍다.

 

SoftRTOS vs Hard RTOS

SoftRTOS의 경우 일반 OS와 별 차이가 없다. 하는일이 특화되어 일반 OS에 비해 응답성이 좋은 것 뿐이다.

 

전통적인 RTOS는 Hard RTOS를 말한다. Hard RTOS에서 중요한 것은 데드라인(Dead Line)이다. 자동차 또는 핵발전소 등등 데드라인이 중요한 시스템에서 데드라인을 충족시키는 능력이 있는 RTOS를 Hard RTOS라고 한다.

 

선점형(preemptive)OS와 비선점형(Non-Preemptive)OS

비선점형 OS는 현재 실행중인 프로세스 보다 높은 우선순위의 프로세스가 등장한다고 해서 실행의 대상을 바로 변경하지 않는다. 새로 등장한 우선순위의 프로세스가 실행될려면 현재 실행중인 프로세스가 CPU를 양보하거나 블로킹 상태에 놓일 때까지 기다려야 한다.

 

선점형 OS는 현재 실행중인 프로세스보다 높은 우선순위의 프로세스가 등장하면 스케줄러에 의한 실행순서 조정이 적극적으로 가해진다. 비선점형 OS에 비해 스케줄러가 하는일이 많다. 그리고 우선순위가 높은 프로세스가 먼저 실행되는 구조이다. Windows도 선점형 OS이다.

 

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

우선순위 스케줄링 알고리즘이란 각각의 프로세스마다 우선순위를 부여해서 우선순위가 높은 프로세스를 먼저 실행시키는 방식이다. 우선순위가 7인 프로세스가 실행중일 때 우선순위가 2인 프로세스는 결코 실행되지 않는다. 이러한 상황을 기아(Starvation)상태라 한다.

우선순위 스케줄링 알고리즘은 우선순위가 높은 프로세스를 먼저 실행하는 알고리즘이다. 우선순위가 높은 프로세스가 종료되어야 다음 우선순위 프로세스가 작동한다.

그러나 기아(Starvation)상태에 빠지는 것은 드물다. 높은 우선순위 프로세스가 I/O작업을 하는 과정에서 우선순위가 낮은 프로세스가 실행기회를 얻을 수도 있기 때문이다.

 

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

우선순위가 동일한 프로세스 간에 실행시간 배분을 위해 Windows는 라운드 로빈 스케줄링 알고리즘도 적용하고 있다.

라운드 로빈 알고리즘은 같은 우선순위 프로세스들에게 정해진 시간 간격 만큼만 실행을 하고 우선순위가 동일한 다른 프로세스에게 CPU할당을 넘기는 방식을 제공한다.

실행의 최소 시간간격을 가리켜 퀀텀(Quantum)혹은 타임 슬라이스(Time Slice)라 한다. 동일한 우선순위의 모든 프로세스는 이 타임 슬라이스 기준으로 CPU할당을 넘긴다.

 

Windows 운영체제는 프로세스를 스케줄링 하는데 있어서 우선순위, 그리고 라운드 로빈 기반의 알고리즘을 적용하고 있다.

 

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

스케줄러가 언제 동작하는지 이해하는 것도 중요하다.

라운드 로빈 알고리즘에 의하면 프로세스의 실행시간 간격에 해당하는 매 타임 슬라이스 마다 스케줄러는 동작해야한다.

 

우선순위 알고리즘 관점에서는 새로운 프로세스가 등장할 때 마다 스케줄러는 현재 실행중인 프로세스와 새로운 프로세스를 비교해야 한다. 즉 스케줄러는 새로운 프로세스가 생성될 때 마다 동작해야 한다. 또한 실행중인 프로세스가 종료되면 다른 프로세스를 실행시켜야 하므로 이 경우에도 스케줄러가 동작해야한다.

 

블로킹 상황에서는 현재 실행중인 프로세스가 블로킹 상태에 놓이면, 다음 실행될 프로세스 선정을 위해 스케줄러가 동작한다.

 

Windows 프로세스 우선순위

 Windows는 총 6단계의 우선순위 계층을 제공한다.

         Priority                                                             Meaning

IDLE_PRIORITY_CLASS                                             기존 우선순위 4

NORMAL_PRIORITY_CLASS                                      기존 우선순위 9

HIGH_PRIORITY_CLASS                                            기존 우선순위 13

REALTIME_PRIORITY_CLASS                                      기존 우선순위 24

 

 

 

 

프로그램 코드상에서 실행속도 조절을 원한다면 Sleep함수의 호출을 통해서 Blocked상태로 만드는것이 좋은 방법이다.

비록 잠시이긴 하지만 자신보다 우선순위가 낮거나 같은 프로세스에게 Running기회를 넘겨주기 때문이다.

728x90

+ Recent posts