OS #12 선점형과 비선점형 스케쥴러

underlier12·2020년 3월 14일
0

OS

목록 보기
12/35

12. 선점형과 비선점형 스케쥴러

선점형/비선점형 스케쥴러 차이

  • Preemptive Scheduling : 하나의 프로세스가 다른 프로세스 대신에 프로세서(CPU)를 차지 할 수 있음
  • Non-preemptive Scheduling : 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU 사용 불가

구조도

선점형의 경우 running 상태인 프로세스를 interrupt하여 ready로 강제 전환할 수 있지만 비선점형은 프로세스가 자발적으로 blocking(waiting)이 되거나 실행이 끝났을 때만 교체 가능하다.

스케쥴러 동작 비교

다음과 같은 프로세스와 선점형/비선점형 스케쥴러가 존재할 때 선점형 스케쥴러는 각 단위(2칸)마다 프로세스를 강제전환한다.

비선점형 스케쥴러의 경우 프로세스가 자발적으로 끝나거나 block 상태가 되었을 때만 전환이 가능하기 때문에 다음과 같은 스케쥴링 형태가 된다.

하지만 선점형 스케쥴러의 경우 각 단위(2칸)마다 혹은 프로세스가 자발적으로 끝나거나 block 상태가 되었을 때 동작하기 때문에 다음과 같은 스케쥴링 형태가 된다.

스케쥴링 알고리즘 조합

이제까지의 스케쥴링 알고리즘들을 조합하여 강력한 스케쥴러를 만들게 된다.

  • 실행 순서 : FIFO, SJF, Priority-based
  • 시분할 시스템 : Round-Robin
  • 선점형 : 선점형, 비선점형

동작

다음과 같이 정적 우선순위를 기반으로 하며 시분할 방식을 채택하고 선점형인 스케쥴러를 사용할 때 CPU 사용 기록을 본다. 해당 프로세스들은 다른 시간에 들어옴을 참고한다.

우선 3번 프로세스가 가장 먼저 들어왔기에 단위 시간(2칸)동안 먼저 실행되고 그 사이 2번과 1번이 Ready 큐에 들어오게 된다.

이후 스케쥴러가 개입하는 시점이 되어 Ready 큐에 있는 프로세스 중 우선 순위가 높은 1번 프로세스부터 진행시킨다. 하지만 1번 프로세스는 단위 시간이 끝나기도 전에 block 상태가 되어 다음 우선순위인 2번 프로세스가 진행된다.

이후에도 동일한 작업들이 반복되고 우선순위와 시분할 시스템에 맞춰 동작하면 다음과 같은 결과가 나온다.

profile
logos and alogos

0개의 댓글