[OS] 운영체제(7장) CPU 스케줄링
1. 기본 개념
multiprogramming의 목적
- CPU 이용률 최대화
CPU-I/O Burst Cycle
- 프로세스 실행은 CPU 실행과 I/O 대기의 사이클로 구성됨
CPU burst 분포
- (see next page)
CPU-burst 시간의 분포도
CPU Scheduler
ready queue에 있는 프로세스들 중 하나를 선택하여 이 프로세스에게 CPU를 할당함
CPU Scheduling 시점
CPU scheduling 결정은 process가 다음 상황일 때 발생 가능함
- running 상태에서 waiting 상태로 전환 (예. I/O wait, child termination wait)
- running 상태에서 ready 상태로 전환. (e.g. time-out)
- waiting 상태에서 ready 상태로 전환. (e.g. I/O completion, event occur)
- Terminate.
비선점(non-preemptive) 스케줄링 – cooperative 스케줄링
- 1번, 4번 경우는 선택의 여지가 없으며, 이 경우에만 스케줄링
- 반드시 스케줄링하여 새 프로세스를 선택해야 함
- 프로세스는 종료하거나 block될 때까지 CPU를 계속 점유
- (예) windows 3.x, 예전 Mac OS
선점(preemptive) 스케줄링
- 모든 경우에 스케줄링이 가능(2, 3번 경우 포함)
- CPU 독점을 방지하거나(timer 사용), 프로세스 우선순위를 반영하고자 할 때 2, 3번의 경우(ready queue가 변화)에 스케줄링 할 수 있음
- (예) 대부분의 현대 OS
Preemptive 스케줄링의 문제점과 해결책
- 공유 데이터의 일관성(consistence) 유지 문제
- 선점 스케줄링 방식에서, process는 프로세스는 데이터를 변경하는 도중에 다 른 프로세스에게 선점되어 변경된 데이터를 저장하기 전에 CPU를 내어놓을 수 있다.
- 다수의 프로세스가 데이터를 공유할 때에 경쟁적으로 데이터를 변경하면 데이터 일관성이 유지되지 않을 수가 있다. → 경쟁조건
- 해결책 : 공유 데이터 접근에 대한 조정이 필요 → 동기화 방식 (5장)
user mode에서의 preemption
-
선점형스케줄링 을 하는 운영체제에서, 한 프로세스가 데이터를 변경하는 동안 선점되어 다른 프로세스가 같은 데이터를 읽거나 수정한다면 데이터 일관성이 유지되지 않을 수 있음
-
사용자 프로그램은 운영체제가 제공하는 동기화 방식을 사용하여 데이터 일관성 문제가 발생하지 않도록 작성해야 한다
Kernel mode에서의 preemption
Kernel mode에서의 공유 데이터 접근 문제
- 모든 커널 루틴은 커널 데이터를 공유함
- 커널은 system call을 통하여 요청된 프로세스의 작업을 처리할 수 있으며, 공유 데이터를 접근하는 커널 루틴이 실행되는 동안에, 인터럽트로 인해서 다른 커널 루틴에게 선점되면 공유 데이터 일관성 유지가 되지 않을 수 있다.
- 커널에서의 이러한 문제 발생은 시스템 전체에 영향을 주므로 위험함
운영체제 커널에서의 preemption 처리 방법
-
비선점형 커널 - 커널 내에서의 preemption을 허용하지 않음 (1) system call이 완료되거나 (2) I/O block 이 발생할 때까지 기다린 후에 context switching 을 수행
- 실시간 컴퓨팅을 지원하는 데 부적합
-
선점형 커널 - 커널 내에서 preemption 을 허용
-
커널 내에서 공유 데이터 접근에 대한 동기화 를 사용하여 커널을 작성해야 함
-
실시간 컴퓨팅 지원에 적합
-
디스패처
-
CPU의 제어권을 CPU 스케줄러가 선택한 프로세스에게 주는 모듈
-
다음작업 수행
- context 스위칭
- CPU
- 동작 모드를 user mode 로 전환
-
선택한 프로세스가 다시 시작하도록 , user program 의 적절한 위치로 이동(jump)
Dispatch 지연(latency)
-
한프로세스를 정지하고 , 다른 프로세스의 수행을 시작할 때까지 소요되는 시간
-
dispatch latency은 가능한 한 작아야 함( 빠르게 동작)
2. Scheduling기준(Criteria)
CPU 이용률(s
댓글남기기