Study/운영체제
5.CPU Scheduling - Basic concepts
이미뇨
2023. 4. 6. 14:46
1.Basic Concepts
- CPU Scheduling?
- 필요한 시스템의 여러자원을 해당 프로세스에게 할당하는작업
- Motivation: 다중프로그래밍에서 CPU 이용률을 최대화해 항상 실행 중인 프로세스를 가지게 하기 위해서
- 기본 개념
- Burst: 특정 기준에 따라 한 단위로서 취급되는 연속된 신호나 데이터의 모임
- 입출력 요청을 위해 CPU 사용을 사용했다가 쉬었다가를 반복
- CPU burst : 프로세스가 CPU를 사용할때
- I.O burst: 입/출력을 기다릴때
- Burst: 특정 기준에 따라 한 단위로서 취급되는 연속된 신호나 데이터의 모임
2.CPU-I/O Burst Cycle
- Process execution: Cycle of CPU execution + I/O wait
- 첫번째와 마지막 burst는 CPU burst 이다.
- Types of processes
- I/O-bound process : Many short CPU bursts
- CPU-bound process : A few long CPU bursts
- Burst 갯수
- Cpu burst : n
- I.O burst : n-1
- cpu burst가 100개면 I.O burst는 99개이다
3.Histogram of CPU-burst Durations
- 길이가 짧다 -> i.o bound process가 많다.
4.CPU Scheduler
- CPU scheduler (= short term scheduler)
- 실행 준비가 되어 있는 메모리 내의 프로세스들 중 하나를 선택하여 이들 중 하나에게 CPU를 할당
- ( cf. Long-term scheduler (job scheduler) )
5.Preemptive Scheduling
- Non-preemptive (or cooperative) scheduling
- 중간에 바뀌지 않는것
- Long-term scheduler는 Non-preemptive Scheduling (또는 Cooperative Scheduling) 방식을 사용
- Preemptive scheduling
- 중간에 바뀔수도 있는것
- Short-term scheduler와 Medium-term scheduler에서는 CPU를 할당할 때 Preemptive Scheduling 방식을 사용
6.When Scheduling Occurs?
- 프로세스가 실행상태(running)에서 대기상태(waiting)로 전환될 때
- ex. 입출력 요청,자식 프로세스 종료 기다리기 위해 wait를 호출시
- 프로세스가 실행상태(running)에서 준비완료상태(ready)로 전환 될 때
- ex. 인터럽트가 발생, 시간이 다 된경우, time slice 만료, 더 큰 우선순위가 들어올 경우
- 프로세스가 대기상태(waiting)에서 준비완료상태(ready)로 전환 될때
- ex. 입출력의 종료시
- 프로세스가 종료(terminates)될때
- Non-preemptive scheduling: 1,4 인 경우
- Preemptive scheduling: 1,2,3,4
7.Preemption of OS Kernel
- Preemptive kernel : kernel은 preemption을 허용한다
- 이유 : realtime application 때문에. switching 가능하게 하여 빠른응답 요구를 위해 (반응성 좋게하려고)
민감하구나 - kernel에서 안전하게 switching하는 방법 : Synchronization
- 대부분 os 에서는 non-preemptive 시스템 호출 사용
- Preemptive scheduler 이면서 Non-preemptive kernel 존재할수있다 (예 : window)
- 이유: 중간에 switching 못하게 하려고 -> 안정성 위해
8.Dispatcher
- 정의 : short-term scheduler가 선택한 프로세스에 CPU를 제어하는 모듈
- 하는일:
- Switching context
- Switching to user mode
- user program에서 적절한 위치로 이동
- Dispatch latency(발송지연시간): 한 프로세스를 중지하고 다른 프로세스를 시작할 때까지의 시간
9.Scheduling Criteria
(어떤 스케줄러가 좋은 스케줄러인가?)
- CPU utilization(cpu 이용률) : CPU를 가능한 한 사용 중으로 유지 . 바쁠수록 좋다.
(노예처럼 계속 일만 시키자) - Throughput(처리량): 작업량 측정. 단위시간당 완료된 프로세스의 개수로 계산. 클수록 좋다.
- Turnaroundtime(총 처리시간): 반환시간, 소요시간. 짧을수록 좋다.
- Waiting time(대기시간): 준비완료 큐에서 대기하면서 보낸 시간의 합
- Response time(응답시간): 하나의 요구를 제출한 후 첫 번째 응답이 나올때까지의 시간 (응답이 시작되는데까지 걸리는 시간, 응답출력 걸리는 시간 X)
각 기준의 중요도는 시스템에 따라 다르다.
측정척도 : 평균 / 최소 / 최대값, 분산 등..