본문 바로가기

Study/Computer Science

[스케쥴러] 선점형과 비선점형 스케쥴러

선점형 스케쥴러와 비선점형 스케쥴러가 명시적으로 나온 이유는 선점형 스케쥴러를 구현하는 것이 어렵기 때문이라고 한다.
그 이유를 살펴보자.

 

  • 선점형 스케쥴러 ( Preemptive Scheduling )

    하나의 프로세스가 다른 프로세스를 대신해 프로세서(CPU)를 차지할 수 있으며, 시분할 시스템이 가능함

  • 비선점형 스케쥴러 ( Non-Preemptive Scheduling)

    하나의 프로세스가 끝나지 않으면, 다른 프로세스는 CPU를 사용할 수 없음. 즉, 스케쥴러가 실행되고 있는 프로세스를 선점할 수 없음.
    시분할 시스템이 불가함.

 

선점형과 비선점형의 차이

 

  • 비선점형

    프로세스가 자발적으로 Blocking 상태로 들어가거나, 실행이 끝났을 때만 다른 프로세스로 교체가 가능함
    첫 프로세스 실행시간이 긴 경우 응답시간이 길어질 수 있음

  • 선점형

    프로세스 running 중 스케쥴러가 이를 중단하고 다른 프로세스로 교체가 가능함
    비선점형과 달리 첫 프로세스의 실행시간이 길더라도 시분할의 시간 단위에 따라 다른 프로세스로 바뀌어 실행하기에 응답시간이 짧아질 수 있음

스케쥴러 구분

 

  • 비선점형 스케쥴러:  FIFO, SJF, Priority-based

  • 선점형 스케쥴러: RoundRobin [ 시분할 시스템을 위한 기본 알고리즘 ]

최신 알고리즘은 위 스케쥴링 정책을 복합적으로 조합함