11. 1 CPU 스케줄링 개요
운영체제가 CPU 자원을 알맞게 배분하는 것을 CPU 스케줄링이라고 한다.
프로세스 우선순위
운영체제는 각 프로세스의 PCB에 우선순위를 명시하고 우선순위이 높은 프로세스는 더 빨리 더 자주 실행된다.
스케줄링 큐
운영체제가 매번 일일이 모든 PCB를 검사하여 먼저 자원을 이용할 프로세스를 결정하는건 오래걸리니 CPU를 쓰고 싶은 프로세스, 하드 디스크를 쓰고 싶은 프로세스, 프린터를 쓰고 싶은 프로세스 를 나누어 큐에 삽입하여 줄을 세운다.
준비큐
는 CPU를 이용하고 싶은 프로세스들이 서는 줄을 의미하고 대기큐
는 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄을 의미한다.
선점형과 비선점형 스케줄링
선점형 스케줄링
- 더 급한 프로세스가 언제든 끼어들어 사용할 수 있는 스케줄링 방식
- 어느 한 프로세스의 자원 독점을 막고 프로세스들에 골고루 자원을 배분할 수 있는 장점이 있지만, 그만큼 문맥교환 과정에서 오버헤드가 발생할 수 있다.
비선점형 스케줄링
- 문맥 교환의 횟수가 선점형 스케줄링보다 적기 때문에 문맥 교환에서 발생하는 오버해드는 적지만 모든 프로세스가 골고루 자원을 사용 못하는 단점이 있다.
11.2 CPU 스케줄링 알고리즘
스케줄링 알고리즘의 종류
- 선입 선처리 스케줄링
- 단순히 준비 큐에 삽입된 순서대로 프로세스들을 처리하는 비선점형 스케줄링 방식
- 최단 작업 우선 스케줄링
- cpu 이용 시간의 길이가 가장 짧은 프로세스부터 실행하는 스케줄링 방식
- 라운드 로빈 스케줄링
- 선입 선처리 스케줄링에 타임 슬라이스라는 개념이 더해진 스케줄링 방식
- 최소 잔여 시간 우선 스케줄링
- 최단 작업 우선 스케줄링 알고리즘과 라운드 로빈 알고리즘을 합친 스케줄링 방식
- 우선순위 스케줄링
- 프로세스들에 우선순위를 부여하고, 가장 높은 우선순위를 가진 프로세스부터 실행하는 스케줄링 알고리즘