CPU 스케줄링
CPU 스케줄링이란?
운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것
프로세스 우선순위
가장 공정한 CPU 스케줄링?
프로세스마다 우선순위가 다르다. (빨리 처리해야하는 프로세스와 늦게 처리해도 되는 프로세스)
- 입출력 집중 프로세스 (입출력 작업이 많은 프로세스) : 우선순위 높음
- CPU 집중 프로세스 (CPU 작업이 많은 프로세스) : 우선순위 낮음
입출력 집중 프로세스는 어차피 CPU를 잠깐 쓰고 대기 상태
로 넘어감
프로세스 우선순위는 PCB에 저장된다.
스케줄링 큐
특정 자원을 이용하고 싶어하는 프로세스들이 서는 줄 (대기열?)
스케줄링에서의 큐는 반드시 FIFO일 필요는 없다. 프로세스별로 우선순위가 다르므로
준비 큐와 대기 큐
- 준비 큐 : CPU를 이용하고 싶어하는 프로세스들이 서는 줄
- 대기 큐 : 입출력 장치를 이용하고 싶어하는 프로세스들이 서는 줄 (입출력 장치 별로 존재)
선점형과 비선점형 스케줄링
이미 CPU를 할당받아서 실행 중인 프로세스가 있는데, 우선순위가 더 높은 프로세스가 있다면?
- 선점형 스케줄링 : 현재 CPU를 사용 중인 프로세스로부터 CPU 자원을 빼앗아 다른 프로세스에 할당
- 장점 : 어느 한 프로세스의 자원 독점을 막고, 골고루 자원을 배분할 수 있다.
- 단점 : 문맥 교환 과정에서 오버헤드가 발생할 수 있다.
- 비선점형 스케줄링 : 현재 CPU를 사용 중인 프로세스의 작업이 끝나기를 기다렸다가 CPU 자원을 할당
- 장점 : 문맥 교환에서 발생하는 오버헤드가 적다.
- 단점 : 모든 프로세스가 골고루 자원을 이용하기 어렵다.