선점형 스케쥴러 (Preemptive Scheduling)
: 하나의 프로세스가 다른 프로세스 대신에 프로세서(CPU)를 차지할 수 있음
비선점형 스케쥴러 (Non-preemptive Scheduling)
: 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음
선점형 스케쥴러는 이미 실행되고 있는 프로세스를 스케쥴러가 중단시키고, 다른 프로세스로 교체하는 것입니다.
새로운 프로세스를 실행하기 위해 실행중인 프로세스를 Block상태로 바꾸고, ready상태의 다른 프로세스를
실행시킵니다. 실행중인 프로세스는 종료되는 것이 아니라, ready상태로 바뀌게 됩니다.
반면, CPU에서 실행되고 있는 프로세스가 wait(block)상태로 바뀌거나, 끝난 상태가 아닐 때
다른 프로세스가 실행되지 못하는 것을 비선점형 스케쥴러라고 합니다.
앞서 배웠던 것들을 정리하자면,
FIFO(FCFS), SJF, Priority-based 스케쥴러는 어떤 프로세스를 먼저 실행시킬지에 대한 알고리즘이고,
Round Robin(RR) 스케쥴러는 시분할 시스템을 위한 기본적 선점형 스케쥴러입니다.
선점형 프로세스와 비선점형 프로세스의 차이를 한번 알아보겠습니다.
투입시점 | ||||||
Process1 | 1 | 1 | 1 | |||
Process2 | 2 | wait | wait | wait | 2 | 2 |
Process3 | 3 | 3 | wait | wait | wait | 3 |
비선점형 |
1 | 1 | 1 | 2 | 3 | 3 | 2 | 2 | 3 | |||
선점형 |
1 | 1 | 2 | 3 | 1 | 3 | 2 | 2 | 3 |
비선점형인 경우, 똑같이 ready state queue에는 1, 2, 3이 동시에 들어가지만
선점할 수 없기 때문에, 메모리에서 실행되고 있는 프로세스가 자체적으로 block(wait) 상태로 접어들지 않는 이상
다른 프로세스가 선점할 수 없습니다.
따라서 1 1 1이 수행된 후 2를 한번 실행하고, block 상태가 되었기 때문에 그다음 ready state queue에 있는 3을 2번 실행합니다. 이후 1은 모두 수행되었고, 2, 3은 block 상태이기 때문에 1 단위시간동안 유휴상태에 있고,
2번이 ready state로 변경되어 다시 2를 수행한 후 3을 수행하며 마무리합니다.
반면, 선점형인 경우 2칸이 스케줄러의 단위시간이라고 가정합니다.
따라서 1을 가장 먼저 2칸 실행하고, 스케쥴러가 그 다음 ready state에 있는 2를 수행하게 됩니다.
2는 block이 되어 3이 실행되고, 다시 스케줄러의 단위시간이 지났기 때문에 1을 수행하게 됩니다.
이렇게 2칸(단위시간 가정)마다 프로세스가 바뀔 수 있습니다.
즉, 비선점형의 경우 선점형과 달리 지연되는 경우가 있어 응답시간이 평균적으로 길다는 것을 알 수 있습니다.
'운영체제' 카테고리의 다른 글
9. 운영체제 - 인터럽트 (0) | 2020.01.03 |
---|---|
7. 운영체제 - 프로세스 상태(Process State) (2) | 2019.12.27 |
6. 운영체제 - 스케쥴링 알고리즘 (0) | 2019.12.27 |
5. 운영체제 - 스케쥴링 (배치 처리, 시분할 시스템, 멀티 프로그래밍) (0) | 2019.12.26 |
4. 운영체제 - 사용자 모드와 커널 모드 (0) | 2019.12.24 |