CS

[CS] 프로세스 스케줄링에 대한 나름의 이해

Dong's Universe 2023. 11. 19. 00:17

장기 스케줄러: 레디큐에 갈 프로세스를 정함. 다르게 말하면 메모리에 올라갈 프로세스를 정함. 현대 OS에서는 사용하지 않는다.

단기 스케줄러(CPU 스케줄러): CPU를 사용할 프로세스를 정함

중기 스케줄러: 메모리를 빼앗을 프로세스를 정함(프로세스 통째로 빼앗아감). Swapper

 

너무 많은 프로세스가 올라가면 CPU 효율이 떨어지는 이유는 각 프로세스마다 실행에 필요한 메모리를 다 올리지 못하기 때문에 계속적으로 swapping이 일어나기 때문이다.

너무 적은 프로세스가 올라가면 CPU 효율이 떨어지는 이유는 I/O 요청을 하게 되면 CPU는 놀게 되기 때문이다.

 

Swap out 된 프로세스의 상태는 suspended이다. 이 상태는 외부에서 올려주기 전까지는 다시 올라갈 수 없다.

suspended blocked에서 i/o가 끝나면 suspended ready 상태로는 갈 수 있다.

 

suspended는 프로세스가 메모리를 뺏기는 것이다.

suspended는 두 가지 경우로 일어난다.

1. 사용자가 프로세스를 멈춘다.

2. 중기 스케줄러가 swap out한다.

 

ready나 blocked는 모두 프로세스 관점에서는 일을 하고 있는 것이다. 

하지만 suspended는 일을 아예 안하는 것이다.

 

job은 모든 프로세스를 말한다. 준비큐에 있는 프로세스(ready queue), I/O 작업중인 프로세스(device queue), 실행되고 있는 프로세스

 

Reference


https://core.ewha.ac.kr/publicview/C0101020140318134023355997?vmode=f