less than 1 minute read

CPU 스케줄링이란?

운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것

프로세스 우선순위

가장 공정한 CPU 스케줄링?
프로세스마다 우선순위가 다르다. (빨리 처리해야하는 프로세스와 늦게 처리해도 되는 프로세스)

  • 입출력 집중 프로세스 (입출력 작업이 많은 프로세스) : 우선순위 높음
  • CPU 집중 프로세스 (CPU 작업이 많은 프로세스) : 우선순위 낮음

입출력 집중 프로세스는 어차피 CPU를 잠깐 쓰고 대기 상태로 넘어감
프로세스 우선순위는 PCB에 저장된다.

스케줄링 큐

특정 자원을 이용하고 싶어하는 프로세스들이 서는 줄 (대기열?)

스케줄링에서의 큐는 반드시 FIFO일 필요는 없다. 프로세스별로 우선순위가 다르므로

준비 큐와 대기 큐

  • 준비 큐 : CPU를 이용하고 싶어하는 프로세스들이 서는 줄
  • 대기 큐 : 입출력 장치를 이용하고 싶어하는 프로세스들이 서는 줄 (입출력 장치 별로 존재)

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

    이미 CPU를 할당받아서 실행 중인 프로세스가 있는데, 우선순위가 더 높은 프로세스가 있다면?

  • 선점형 스케줄링 : 현재 CPU를 사용 중인 프로세스로부터 CPU 자원을 빼앗아 다른 프로세스에 할당
    • 장점 : 어느 한 프로세스의 자원 독점을 막고, 골고루 자원을 배분할 수 있다.
    • 단점 : 문맥 교환 과정에서 오버헤드가 발생할 수 있다.
  • 비선점형 스케줄링 : 현재 CPU를 사용 중인 프로세스의 작업이 끝나기를 기다렸다가 CPU 자원을 할당
    • 장점 : 문맥 교환에서 발생하는 오버헤드가 적다.
    • 단점 : 모든 프로세스가 골고루 자원을 이용하기 어렵다.