본문 바로가기

학자형 개발

CPU 스케줄링 방식

스케줄링이란?

스케줄링이란 컴퓨터의 모든 자원을 효율적으로 사용하기 위한 프로세스 관리 정책으로 컴퓨터 시스템의 성능 향상이라는 목적을 가진다.

선점 스케줄링과 비선점형 스케줄링

 CPU 스케줄링에는 하나의 프로세스가 CPU를 점유하고 있을 때 다른 프로세스가 CPU를 빼앗을수 있는 선점(preemptive) 스케줄링과 프로세스에게 이미 할당된 CPU를 강제로 빼앗을수 없고, 프로세스의 사용이 끝난 후 스케줄링을 하여야 하는 비선점(non-preemptive) 스케줄링이 있다.

선점 스케줄링

선점 스케줄링 방식은 프로세스의 우선 순위가 높은 프로세스가 CPU를 먼저 차지하기가 용이하기 때문에 주로 실시간 응답을 요구하는 대화식 시분할 시스템에서 사용된다.
하지만, context switching에 의한 overhead가 많다.

비선점 스케줄링

비선점 스케줄링 방식은 모든 프로세스들에 대한 요구를 공정히 처리하여 응답시간의 예측이 용이하다.
응답 시간 예측이 가능하고, 선점형 방식에 비해 context switching으로 인한 overhead가 적다.
실행 작업이 끝날 때 까지 다른 프로세스들은 대기해야 하므로 처리율이 떨어질 수 있다. (convoy effect)

CPU 스케줄링 알고리즘

  • FCFS (First Come First Served Scheduling) 
    [비선점형] 선입 선출(FIFO : First In First Out)이라고도 한다.
    CPU를 프로세스가 점유할 때까지 대기해야 한다. convoy effect 발생할 수 있다.

  • SJF (Shortest Job First Scheduling), SRTF(Shortest Remaining Time First)
    - SJF [비선점형], SRTF [선점형]
    실행 시간이 짧은(짧게 남은) 작업부터 먼저 처리 하는 방식(실행 시간은 스케줄러 판단 기준)
    각 프로세스의 CPU 요구시간을 미리알기 어렵다는 단점이 있다.

  • RR (Round Robin)
    프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간 단위(time slice/quantum)로 CPU를 할당하는 방식.
    할당량을 다 소비하고도 작업이 끝나지 않은 프로세스는 다시 대기 큐의 맨 뒤로 되돌아가게 된다.
    time slice가 너무 클 경우. 응답 시간이 느려지고, 너무 작을 경우 context switching으로 인한 overhead가 커진다.

참고 사이트

- CPU 스케줄링 : https://gamedevlog.tistory.com/78