프로세스의 일생

- CPU 작업과 IO 작업이 계속 반복됨
- IO의 경우 오래걸리기 때문에 CPU 제어권을 빼앗기기도 함
- load, add, read ... -> 기계어
CPU-burst Time의 분포

CPU bound job
: CPU를 길게 쓰는 프로그램
IO bound job
: IO가 갖은 프로그램 (유저와 인터렉션을 많이 하는 프로그램)
누구에게 CPU 사용권을 주는게 더 좋은 것일까?
여러 종류의 job(=process)이 섞여 있기 때문에 CPU 스케줄링이 필요하다
- interactive job 에게 적절한 response 제공 요망
- CPU와 IO장치 등 시스템 자원을 골고루 효율적으로 사용
IO bound job에게 보통 먼저 CPU 사용권을 쥐어준다. (짧게 쓰고 IO에 의해 cpu 사용을 빠르게 끝내기 때문)
프로세스의 유형 분류
- IO bound process
- CPU를 잡고 계산하는 시간보다 IO에 많은 시간이 필요한 job
- many short CPU bursts
- CPU cound process
- 계산 위주의 job
- few very long CPU bursts
CPU 스케줄러 & Dispatcher
- CPU Scheduler
- Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다.
- Dispathcer
- CPU의 제어권을 CPU scheduler에 의해 선택된 프로세스에게 실제로 넘긴다
- 이 과정을 context switch(문맥 교환) 이라고 한다.
- CPU 스케줄링이 필요한 경우는 프로세스에게 다음과 같은 상태 변화가 있는 경우이다.
- Running -> Blocked (ex. IO를 요청하는 시스템 콜)
- Running -> Ready (ex. 할당시간 만료로 timer interrput)
- Blocked -> Ready (ex. IO 완료 후 인터럽트)
- Terminate
- 1,4에서 스케줄링은
nonpreemptive
(=강제로 빼앗지 않고 자진 반납)
- all other scheduling is
preemprive
(=강제로 빼앗음)
CPU 스케줄링에서의 성능 척도
- CPU utilization (이용률)
- Throughtput (처리량)
- Turnaround time (소요시간, 변환시간)
- waiting time (대기 시간)
- Response time (응답 시간)
- process가 최초로 CPU를 얻기까지 걸린 시간
- ex. IO작업이 끝난 후 cpu를 얻게 되기까지의 시간
- 1,2는 시스템(cpu) 관점. 높을수록 좋음
- 3,4,5는 유저(process) 관점. (시간은) 적을수록 좋음