09. CPU 스케줄링

개발 99·2025년 4월 5일

공룡책

목록 보기
9/22

CPU scheduling

CPU의 사용률을 극대화를 하기 위해서 사용.

  • Read/Write file -> CPU burst( running )

  • wait for I/O -> I/O burst( waiting,ready )

대다수 I/O burst가 더 많다.

ready상태 프로세스 중 누구한테 CPU를 할당할지가 핵심!

그런데 어떻게 다음 Process 선택?

  • FIFO Queue

  • Priority Queue( 가장 우선순위 높은 것부터 처리)

Preemptive(선점형) Vs. Non-preemtive(비선점형)

  • Preemptive -> 쫓아낼 수 있음( 강제성 )
    스케줄러가 쫓아낼 수 있음

  • Non-preemptive -> 쫓아낼 수 없음(자발적으로 나옴)
    자발적으로 나올 때까지 terminate or switch가 불가능하다.

Decision Making for CPU-scheduling

  1. running -> waiting

  2. running -> ready

  3. waiting -> ready

  4. process terminate

  • 1,4 -> 비선점형(자발적)

  • 2,3 -> 선점형(강제성)이 효율이 더 좋음.

Dispatcher

Context switch를 해주는 모듈
( process한테 cpu를 할당. )

  • process의 context switch

  • user mode로 switch

  • user program을 적절한 위치로 resume

스케줄러는 프로세스 선택을 하고, 실제 switch는 dispatcher가 한다.

dispatch latency = 기존 Process는 P0
는 save하고, P1을 복구하는데 걸리는 시간
( stop one process and start another running )

vm stat 1 3 // -> 1s동안 3번 보여주기

cat /proc/1/status // -> 해당 프로세스의 context switch를 확인할 수 있다.

Scheduling의 목표

  • CPU 사용률

  • Throughput(처리량) : 단위 시간당 완료되는 프로세스 수

  • Turnaroung time : process의 실행 ~ 종료까지 걸리는 시간 (1)

  • Waiting time : ready queue에서 대기 시간을 최소화 시키자 (2)

  • Response time : 응답시간을 최소화시키자(UI)

CPU Schduling Problem

ready Queue 프로세스 중 누구한테 할당???

  • FCFS: First-Come, First-Served(아주 초창기)

작업 순서 및 CPU burst time에 따라서 waiting time이 달라지고,
비선점형이다.( 최적화가 필요 )

Convoy Effect가 발생( 앞에 실행시간이 긴 프로세스가 있으면, 뒤 프로세스들의 대기 시간이 길어진다.)

결국에 Waiting time을 줄여야 turnaround도 줄일 수 있다.

  • SJF: Shortest Job First(Shortest Remaining Time First)

shortest-"next-CPU-burst-first" scheduling

next CPU burst가 가장 작은 것부터 처리

이렇게 하면, 처리시간이 긴 프로세스는 작업 못 끝내는 것 아닌가?

profile
구구구구구!

0개의 댓글