1. 스케줄링 개요
- 스케줄링은 크게 고수준, 중간수준, 저수준으로 나뉠 수 있다.
- CPU 스케줄링을 하는 목적은 모든 프로세스가 가능한 공평하고 안정적으로 돌어가게 하기 위함
- CPU 스케줄링을 위해서 운영체제는 CPU Scheduler, Dispatcher(Context Switch)를 사용한다.
[1] CPU 스케줄링
[1-1] CPU 스케줄링은 규모에 따라 아래와 같이 나뉜다.
- 고수준 스케줄링 : (=장기 스케줄링, 작업 스케줄링)
- 프로세스를 활성화할지 말지를 결정
- 시스템 내 전체 작업 수 조절(= 멀티 프로그래밍 정도)
- 중간 수준 스케줄링
- 중지(suspend)와 활성화(active)로 활성화된 프로세스 수를 조절
(일부를 중지하여 시스템 과부하를 막는다.)
- 저수준 스케줄링 : (=단기 스케줄링)
- 어떤 프로세스에 CPU를 할당하고, 어떤 프로세스를 대기로 보낼지 결정
- 준비 → 대기, 대기 → 준비
[1-2] CPU 스케줄링의 목적 :
모든 프로세스가 공평하게 안정적으로 작업을 하게 하는 것
→ 그러기 위해서는 특정 프로세스가 자원을 독점하지 않도록,
중요도에 따라 우선순위를 배정하고, 시스템 자원을 효율적으로 배분해
전체적인 시스템 성능을 높혀야한다.
- 공평성, 효율성, 안정성, 확장성, 반응 시간 보장, 무한 연기 방지
[1-3] 운영체제의 CPU 스케줄러와 Dispatcher
- CPU 스케줄러
: Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다.
- Dispatchar
: CPU의 제어권을 CPU 스케줄러에 의해 선택된 프로세스에게 넘긴다.
: 이 과정을 Context Switch라고 한다.
2. 스케줄링 시 고려사항
- 작업 중요도가 높은 프로세스 : 커널, 전면, 대화형, 입출력 집중 프로세스
* 커널 <-> 일반
* 전면 <-> 후면
* 대화형 <-> 일괄처리
* 입출력집중 <-> CPU집중
[1] 선점형 스케줄링과 비선점형 스케줄링
선점형 스케줄링와 비선점형 스케줄링
- 비선점형 스케줄링(nonpreemptive) : 빼앗을 수 없음
- 선점형 스케줄링 : 빼앗을 수 있음
rf. 인터럽트 처리 : CPU가 인터럽트를 받으면 실행 중인 작업 중단,
커널을 깨워 인터럽트 처리, 인터럽트 처리 완료되면
원래 작업으로 돌아간다.
구분 |
선점형 |
비선점형 |
작업 방식 |
실행 중인 작업 중단 후 실행 |
실행 중인 작업 완료 후 이어서 실행 |
장점 |
프로세스가 CPU를 독점X |
CPU 스케줄러 작업량이 적고, |
문맥교환 오버헤드가 적다 |
|
|
단점 |
문맥교환 오버헤드 많음 |
기다리는 프로세스 많아 처리율 낮음 |
사용 |
시분할 방식 스케줄링 |
일괄 처리 방식 스케줄링 |
중요도 |
높음 |
낮음 |
[2] 프로세스 우선순위
- 우선순위가 높은 프로세스를 더 빨리, 자주 실행시킨다.
- 대체로 커널 프로세스가, 일반 프로세스 보다 우선순위가 높다.
- 커널 프로세스 우선순위는 운영체제에 내장된 경우가 많음
- 일반 프로세스 우선순위는 사용자가 조절할 수 있다.
[3] CPU 집중 프로세스와 입출력 집중 프로세스
- 프로세스를 작업 형태에 따라 아래와 같이 두 가지로 나눌 수 있다.
- CPU 집중 프로세스와 I/O 집중 프로세스가 같이 있을 땐,
I/O 집중 프로세스를 먼저 실행시키는 것이 효율적이다.
- 사이클 훔치기 : I/O 집중 프로세스가 CPU 집중 프로세스 보다 먼저 들어가는 경우
CPU burst |
cpu만 실행 |
I/O burst |
io만 실행 |