CS/OS
10. CPU Scheduling 1
hjkim0502
2022. 3. 23. 18:06
- CPU burst: 프로세스 실행 과정 중 CPU의 제어권을 얻어 연속적으로 인스트럭션을 실행하는 단계
- I/O burst: CPU 제어권을 잃고 I/O를 실행하는 단계
- CPU bound job: 계산 위주의 job (few very long CPU bursts)
- I/O bound job: CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job (many short CPU bursts)
- 중요 용어: nonpreemtive(비선점형), preemtive(선점형)
- 시스템 입장에서: CPU utilization, Throughput
- 프로그램 입장에서: Turnaround time, Waiting time, Response time
- 선점형 스케줄링에서 대기 시간은 여러번 있을 수 있지만 응답 시간은 최초 한번
- 한번의 CPU burst 기간 내에서 측정 (프로세스의 첫 실행부터 완전 종료까지가 아님)
- 스케줄링 알고리즘
- 스케줄링 시점에서 차이가 있음 (프로세스 종료 vs 다른 프로세스 들어옴)
- starvation 문제: 사용시간이 긴 프로세스가 영원히 CPU를 못 받을 수도 있음
- 매번 미리 CPU 사용시간을 알 수 없음 (과거 정보로 추정은 가능)
- exponential averaging
더 최근의 CPU burst time 값에 더 큰 가중치 값을 가진다
- 응답시간이 빠른 장점이 있음
- 각 프로세스의 대기시간이 CPU 필요시간에 비례
- 특이 상황: 모든 프로세스의 CPU 필요시간이 같다면(비슷해도) 오히려 호율이 떨어진다
- 이때는 할당 시간을 늘리는게 낫다
출처: https://core.ewha.ac.kr/publicview/C0101020140328151311578473?vmode=f