운영체제 공부에서의 스케줄링은, 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 는 항상 잘 조절해야 한다.
다음 포스트에서는 여러 스케줄링 알고리즘을 비교해보겠다아
-
개인 공부 정리용으로 작성한 글입니다.
'컴퓨터 COMPUTER > Linux 리눅스' 카테고리의 다른 글
SSH 서버 (Ubuntu 22.04.2) 에 Jupyter Notebook 원격으로 열기 (1) | 2023.06.25 |
---|---|
14. [Deadlock Problem] : Deadlock 문제는 언제 발생하는가 (0) | 2019.05.11 |
11. [Multithreading(2)] : Thread 의 적용, User-level Threading 과 Kernel-level Threading (0) | 2019.02.06 |
10. [Multithreading(1)] : 스레드의 등장 (0) | 2019.02.06 |
9. [Process Communication] : 프로세스들은 어떻게 소통할까 (0) | 2019.01.31 |