11-1. CPU 스케줄링 개요
프로세스 우선순위
-
운영체제는 CPU 스케줄링을 통해 프로세스에 공정하게 CPU를 배분
-
입출력 집중 프로세스 : 입출력 작업(=입출력 버스트)이 많은 프로세스
-
CPU 집중 프로세스 : CPU 작업(=CPU 버스트)이 많은 프로세스
-
이 2가지 프로세스를 효율적으로 처리하기 위해선 시간이 비교적 짧게 걸리는 CPU 집중 프로세스를 가능한 빨리 실행시킨 뒤, 시간이 비교적 오래 걸리는 입출력 집중 프로세스를 실행시켜야 함
-
프로세스 저마다의 중요도가 다를 것
⇒ 중요도에 따른 우선순위도 CPU를 효율적으로 쓰는 방법에 영향을 줌(우선순위는 PCB에 저장)
스케줄링 큐
-
운영체제가 저마다의 프로세스의 PCB를 보면서 우선순위를 하나하나 따져보는 건 비효율적
⇒ 따라서 스케줄링 큐를 통해 프로세스를 줄 세워 관리
-
준비 큐 : CPU 할당을 기다리는(=준비 상태인) 큐
-
대기 큐 :입출력장치의 실행 종료를 기다리는(=대기 상태인) 큐대기 큐의 경우는 장치 별로 큐가 구현되어 있는 경우가 많음 (ex: 프린터 대기 큐, 보조기억장치 대기 큐 등)
선점형 vs 비선점형 스케줄링
선점형 스케줄링
- 운영체제가 프로세스의 자원을 강제로 빼앗아 다른 프로세스에게 넘길 수 있는 스케줄링 방법 (비독점형)
- 타이머 인터럽트를 통해 순서를 바꾸는 스케줄링 방법이 이에 해당
- 문맥교환이 자주 발생해 오버헤드가 발생할 수 있음
비선점형 스케줄링
- 운영체제가 프로세스의 자원을 강제로 빼앗을 수 없고, 프로세스가 실행이 종료되기까지 기다려야하는 스케줄링 방법 (독점형)
- 단점: 골고루 자원을 사용할 수 없음
11-2. CPU 스케줄링 알고리즘
스케줄링 알고리즘 종류
선입 선처리 스케줄링
- 비선점형 스케줄링
- 삽입된 순서대로 실행 (선착순)
- 호위효과 발생
최단 작업 우선 스케줄링
- 비선점형 스케줄링
- 작업 시간이 짧은 프로세스를 먼저 실행
라운드 로빈 스케줄링
- 선점형 스케줄링
- 선입 선처리 스케줄링 + 타임슬라이스
- 시간이 끝나면 문맥 교환이 발생하고 큐의 맨 뒤에 삽입
최소 잔여 시간 우선 스케줄링
- 선점형 스케줄링
- 최단 작업 우선 스케줄링 + 라운드 로빈 스케줄링
- 정해진 타임 슬라이스만큼 CPU를 이용하되, CPU를 사용할 다음 프로세스는 잔여 시간이 가장 짧은 프로세스
우선순위 스케줄링
- 선점형 스케줄링
- 우선 순위가 가장 높은 프로세스를 먼저 실행
- 기아 현상 -> 에이징 기법으로 해결 (차차 우선순위를 높임)
다단계 큐 스케줄링
- 우선 순위 스케줄링의 발전 버전
- 여러 개의 큐를 만들고 큐 자체에 우선순위를 매김
- 단, 큐 간 프로세스 이동은 불가능
- 다단계 피드백 큐 스케줄링
-
다단계 큐 스케줄링의 발전 버전큐 간 프로세스 이동이 가능
⇒ 프로세스의 우선순위를 높이거나 낮추면서 유연하게 관리 가능
-