CPU 스케줄링은 OS공부에 있어서 가장 중요한 파트라고 생각한다. 학부 교수님도 많이 강조하고 실제 대학원 면접이나 IT회사 면접에 갔을시 물어볼법한 중요한 내용이다.
1. CPU-입출력 버스트 사이클
- 프로세스 실행은 CPU버스트로 시작이 된다.
- 뒤이어 입출력버스트가 발생한다.
- 그 뒤에 또 다른 CPU버스트가 발생하며 마지막 CPU 버스트는 실행을 종료하기 위한 시스템 요청과 함께 끝난다.
<CPU -입출력 버스트의 실행 과정>
2. CPU 스케줄러
- 단기스케쥴러(또는 CPU 스케쥴러)에 의해 실행한다.
- CPU가 유휴 상태가 될 때마다 운영체제는 준비 큐에 있는 프로세스들(PCB) 중에서 하나를 선택하여 할당한다.
- 준비완료 큐에 있는 모든 프로세스들은 CPU에서 실행이 될 기회를 기다리며 대기하고 있다.
<CPU 버스트 시간의 도표>
3. 선점스케줄링과 비선점 스케줄링
* 선점스케줄링
- 우선순위가 높은 프로세스들부터 처리가 가능하다.
- 빠른 응답시간을 처리하는 시스템에서 사용되며 유리하다.
- 현재 window, machintosh에서도 사용하고 있는 스케줄링 방법이다.
- 1) 실행 상태 -> 대기 상태, ex) 입출력 요청, 자식 프로세스의 종료를 기다리는 호출
2) 실행 상태 -> 준비 상태, ex) 인터럽트 발생
3) 대기 상태 -> 준비 상태, ex) 입출력의 종료
4) 실행 상태 -> 종료 상태, ex) 프로세스의 종료
이런식으로 될때 1~4번까지 모두 실행이 가능한게 선점스케줄링 방식이고, 단점으론 오버헤드가 증가한다는 점이다.
* 비선점스케줄링
- 이미 할당된 자원을 다른 프로세스가 강탈할 수 없다.
- 응답시간 예측이 엄청 편하고 일괄처리 할 때 유용하다.
- 우선순위가 높은 프로세스들부터 처리하는게 아닌 순서대로 들어온대로 처리하기 때문에 우선순위로 처리되어야 하는게 안된다는 단점이 있다.
- 위에서 쓴 1~4번들중에 1, 4번에 해당이 되면 비선점 스케줄링 방식이다.
4. 디스패처
- CPU의 제어를 단기 스케쥴러가 선택한 프로세스에게 부여하는 모듈이다.
- 문맥을 교환한다.
- 사용자 모드로 전환하는 일을 하며 프로그램을 다시 시작하기 위해 사용자 프로그램의 위치로 적절히 이동하는 일을 한다.
- 디스패처는 모든 프로세스의 문맥교환시 호출되기 때문에 가능한 한 빨라야한다.
- 디스패처가 하나의 프로세스를 중단시키고 다른 프로세스를 실행하는데까지 걸리는 시간을 디스패처 지연이라고 말한다.
'운영체제 ' 카테고리의 다른 글
프로세스의 정의 (0) | 2017.06.29 |
---|---|
명령해석기 (0) | 2017.01.30 |
운영체제서비스 (0) | 2017.01.30 |
이중동작모드(Dual-Mode operation) (0) | 2017.01.15 |
멀티프로세싱(Multi Processing)이란? (0) | 2016.09.20 |