본문 바로가기
컴퓨터 COMPUTER/Linux 리눅스

12. [Processor Scheduling(1)] : Scheduling 의 기본 개념

by 매실이 maesiri 2019. 4. 14.

운영체제 공부에서의 스케줄링은, Request 들이 Server 의 처리를 기다리며 Queue 를 이루는 'Queueing model' 이 기본이 된다. 아래 그림을 보자.

 

 

Request 는 파란색 큐에서 wait 하고 있고, Server 는 active 하게 그것들을 처리한다.

 

여기서 Server 의 종류를 두가지로 나눌 수 있다. nonpreemptible, preemptible server. preemptible을 직역하면 선점하는. 뭐 이런 뜻이다. 

1. Nonpreemptible Server : 대표적으로 프린터의 예시를 기억하면 쉽다. 프린터는 A 라는 문서를 뽑는중에 B 라는 문서를 갑자기 뽑아내지 않는다. 아무리 B 를 뽑는게 더 급하더라도 말이다. 무조건 먼저 하던 작업을 끝내고, 순서대로 그 뒤의 작업을 처리한다.

Nonpreemptive Scheduling 만 허용하는 server 라고 정의할 수 있다.

* Nonpreemptive 하다는 것은, 프로세스가 running state 에 있을 때, 프로세스가 종료되거나 스스로 I/O 때문에 block state 로 가지 않는 이상 계속 running state 에 있을 것을 의미한다.

 

 

2. Preemptible Server : Nonpreemptive scheduling 과 preemptive scheduling 을 모두 허용하는 server 이다.

* Premmptible 하다는 것은, running state 에 있는 프로세스가 time quantum (그 프로세스에게 주어진 처리시간) 이 끝나 interrupt 되어 다시 ready state 로 갈 수 있는 것을 의미한다. 하나의 프로세스가 프로세서를 독점하는 것을 막을 수 있다.

CPU 는 preemptible server 이다. 

 

 

 

당연히 더 흥미로운건(?) preemptible server! CPU scheduling 에 대해 좀 더 알아보자.

 

CPU scheduling

CPU scheduling은 Short-term Scheduling 이라고도 말한다. 전에 봤던 Dispatch 에 해당하겠다.

Cpu scheduling은 ready queue 에 있는 어떤 프로세스가 다음으로 돌아갈지, 그리고 얼마나 오랫동안 돌아갈지 결정하는 작업이다. 

 

Short-term Scheduler

Short-term Scheduler 는 과거에는 Dispatcher 라고 불렸었는데, Interrupt, Exception, System call 과 같은 사건이 있을 때 다른 프로세스가 실행되도록 Processor 가 Process Switching을 할 수 있는 제어권을 준다.

단 Linux 의 경우 따로 dispatcher 가 있지는 않고, 스케쥴러가 커널코드의 일부로 구현되어 있다. switch_to 라는 macro 이다.

 

Short-term scheduler 가 dispath 할 때 약간의 지연이 발생하는데 이것을 Dispatch Latency 라고 부른다. 스케줄링할 때 한 프로세스에게 주어진 처리시간 (time quantum) 보다 dispatch latency 가 더 커버리면 안되므로, dispatch latency 는 항상 잘 조절해야 한다. 

 

다음 포스트에서는 여러 스케줄링 알고리즘을 비교해보겠다아

 

 

 

-

개인 공부 정리용으로 작성한 글입니다. 

반응형

댓글