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: 입/출력을 기다릴때

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가 많다.

빈도수 - burst길이 그래프

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?


  1. 프로세스가 실행상태(running)에서 대기상태(waiting)로 전환될 때
    • ex. 입출력 요청,자식 프로세스 종료 기다리기 위해 wait를 호출시
  2. 프로세스가 실행상태(running)에서 준비완료상태(ready)로 전환 될 때
    • ex. 인터럽트가 발생, 시간이 다 된경우, time slice 만료, 더 큰 우선순위가 들어올 경우
  3. 프로세스가 대기상태(waiting)에서 준비완료상태(ready)로 전환 될때
    • ex. 입출력의 종료시
  4. 프로세스가 종료(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(발송지연시간): 한 프로세스를 중지하고 다른 프로세스를 시작할 때까지의 시간

Dispatcher

9.Scheduling Criteria

(어떤 스케줄러가 좋은 스케줄러인가?)

  • CPU utilization(cpu 이용률) : CPU를 가능한 한 사용 중으로 유지 . 바쁠수록 좋다. (노예처럼 계속 일만 시키자)
  • Throughput(처리량): 작업량 측정. 단위시간당 완료된 프로세스의 개수로 계산. 클수록 좋다.
  • Turnaroundtime(총 처리시간): 반환시간, 소요시간. 짧을수록 좋다.
  • Waiting time(대기시간): 준비완료 큐에서 대기하면서 보낸 시간의 합
  • Response time(응답시간): 하나의 요구를 제출한 후 첫 번째 응답이 나올때까지의 시간 (응답이 시작되는데까지 걸리는 시간, 응답출력 걸리는 시간 X)

각 기준의 중요도는 시스템에 따라 다르다.

 

측정척도 : 평균 / 최소 / 최대값, 분산 등..