언제 어떤 프로세스에 CPU를 할당할지 결정하는 작업이다.
다중 프로그래밍의 목적은 CPU 이용률을 최대화하기 위해 항상 실행 중인 프로세스를 가지게 하는 데 있다.
즉, 운영체제는 CPU를 process로부터 회수해 다른 process에게 할당한다. 이러한 방법으로 메모리에 적재된 여러 개의 process들 중 선택하여 CPU가 항상 작업함으로써 CPU 이용률을 증진시킨다.
1. CPU-I/O 버스트 사이클 (CPU-I/O Burst Cycle)
- CPU 실행(CPU burst)과 I/O 대기(I/O burst)의 사이클로 구성된다.
- 프로세스 실행은 CPU burst, 뒤이어 I/O burst 발생 이과정을 반복한다.
- process들에게 얼마나 균등하게 CPU를 분배할 것인가는 컴퓨터 시스템에서 가장 중요한 관점중 하나이다.
2. CPU 스케줄러 (CPU Scheduler)
- 다중 프로그래밍 운영체제에서 ready queue에 있는 process들 중에 하나를 선택하기 위해서는 결정이 필요한데, 이것이 CPU 스케줄링이다. 선택 절차는 CPU 스케줄러(short-term scheduler)에 의해 수행된다.
- 즉 , CPU 스케줄러는 실행 준비가 되어 있는 메모리 내의 프로세스 중에서 선택하여, 이들 중 하나에게 CPU를 할당한다.
* Ready Queue
- 실행 준비가 되어 있는 프로세스는 Ready Queue 자료구조에 들어 있다.
- 준비 큐에 있는 모든 프로세스는 CPU에서 실행될 기회를 기다리며 대기하고 있다.
- 준비 큐는 반드시 선입선출(FIFO) 방식의 큐가 아니어도 되는 것에 유의해야 한다.
- 큐에 있는 레코드들은 일반적으로 프로세스들의 프로세스 제어 블록(PCB)들이다.
3. CPU 스케줄링 결정 상황 4가지
(1) 한 프로세스가 실행 상태에서 대기 상태로 전환될 때
- ex) I/O 요청이나 자식 프로세스가 종료되기를 기다리기 위해 wait()을 호출할 때
(2) 프로세스가 실행 상태에서 준비 완료 상태로 전환될 때
- ex) interrupt 발생 시
(3) 프로세스가 대기 상태에서 준비 완료 상태로 전환될 때
- ex) I/O 종료 시
(4) 프로세스 종료할 때
4. 비선점(Preemptive) VS 선점(Nonpreemptive) 스케줄링
(1) 비선점 스케줄링
- 일단 CPU가 하나의 프로세스에 할당되면, 그 프로세스가 CPU를 놓을 때까지 계속 CPU를 점유
- 종료되거나 대기 상태로 전환 (스케줄링 결정 상황 1,4번)
(2) 선점 스케줄링
- 현재 수행되고 있는 프로세스는 언제든지 다른 프로세스로 교환 가능
- 이유 : interrupt가 언제든지 발생할 수 있다.
- 프로세스 간에 데이터 공유 시, 일관성 유지에 따른 관련 비용 발생
- 운영체제의 커널 설계에 영향을 준다.
- 유닉스의 경우, 문맥 교환(Context Switching)이 일어나기 전에 시스템 호출의 완료 혹은 입출력 봉쇄(block)가 일어나기를 기다린다.
- 중요한 코드의 시작 부분에서는 interrupt를 비활성화(disable)시키고, 끝 부분에는 활성화(enable) 시킴으로써 중요한 커널 코드 보호
5. Dispatcher (디스패처)
(1) dispatcher
CPU 코어의 제어를 CPU 스케줄러(short-term scheduler)가 선택한 프로세스에 주는 모듈
(2) dispatcher가 하는 일
- 한 프로세스에서 다른 프로세스로 문맥을 교환하는 일 (Context Switching)
- 사용자 모드로 전환하는 일
- 프로그램을 다시 시작하기 위해 사용자 프로그램의 적절한 위치로 이동(Jump)하는 일
(3) dispatch latency(디스패치 지연)
디스패처가 실행중인 프로세스를 정지하고 다른 프로세스의 수행을 시작하는 데까지 소요되는 시간
- Context Switching의 오버헤드이다.
반응형
'OS(운영체제)' 카테고리의 다른 글
CPU 스케줄링 알고리즘 (CPU Scheduling Algorithms) (1) | 2021.12.09 |
---|---|
CPU Scheduling Criteria(스케줄링 기준) (0) | 2021.12.09 |
프로세스 통신 (Interprocess Communication, IPC) (0) | 2021.12.09 |
프로세스 스케줄링 (Process Scheduling) (0) | 2021.12.09 |
프로세스(Process) (메모리, PCB, 상태) (0) | 2021.12.09 |
댓글