CPU Scheduling Algorithm
Last updated
Last updated
FCFS : first come first served
SJF : shortest job first
SRTF : shortest remaining time first
Priority Scheduling
RR : round robin
Multilevel Queue
Multilevel Feedback Queue
Multiple-Processor Scheduling
Real-time scheduling
thread scheduling
ํ๋ก์ธ์ค์ ๋์ฐฉ ์์๋๋ก ์ค์ผ์ค๋ง๋๋ค.
๋จ์ ์ ์งง์ ์ํ์๊ฐ์ ๊ฐ์ง ํ๋ก์ธ์ค๋ผ๋ ๋ฆ๊ฒ ๋์ฐฉํ๋ฉด ์ค๋ ์๊ฐ์ ๋๊ธฐํด์ผํ๋ค๋ ๊ฒ์ด๋ค.
๊ฐ ํ๋ก์ธ์ค์ ๋ค์๋ฒ CPU burst time ์ ๊ฐ์ง๊ณ ์ค์ผ์ค๋ง์ ํ์ฉํ๋ค.
CPU burst time ์ด ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค๋ฅผ ์ ์ผ ๋จผ์ ์ค์ผ์คํ๋ค.
์ข ๋ฅ
non-preemptive
์ผ๋จ CPU ๋ฅผ ์ก์ผ๋ฉด ์ด๋ฒ CPU burst ๊ฐ ์๋ฃ๋ ๋๊น์ง CPU ๋ฅผ ์ ์ ๋นํ์ง ์๋๋ค.
preemptive
ํ์ฌ ์ํ์ค์ธ ํ๋ก์ธ์ค์ ๋จ์ burst time ๋ณด๋ค ๋ ์งง์ CPU burst time ์ ๊ฐ์ง๋ ์๋ก์ด ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ๋ฉด, CPU ๋นผ์๊ธด๋ค.
์ด ๋ฐฉ๋ฒ์ SRTF ํ๊ณ ํ๋ค. โ SRTF : shortest remaining time first
optimal
์ฃผ์ด์ง ํ๋ก์ธ์ค๋ค์ ๋ํด์ minimum average waiting time ์ ๋ณด์ฅํ๋ค.
๋ค์ CPU burst time์ ์ด๋ป๊ฒ ์ ์ ์๋๊ฐ?
์ถ์ ๋ง ๊ฐ๋ฅํ๋ค.
๊ณผ๊ฑฐ์ CPU burst time ์ ์ด์ฉํด์ ์ถ์ ํ๋ค.
์ฐ์ ์์ ๋ฒํธ๊ฐ ๊ฐ ํ๋ก์ธ์ค์๊ฒ ํ ๋น๋๋ค.
๊ฐ์ฅ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค์๊ฒ CPU ๋ฅผ ํ ๋นํ๋ค.
smallest integer = highest priority
preemptive
nonpreemptive
SJF ๋ ์ผ์ข ์ priority scheduling ์ด๋ผ๊ณ ํ ์ ์๋ค.
priority = predicted next CPU burst time
๋ฌธ์ ์
starvation : ๋ฎ์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค๋ค์ ์๋ง ์์๋ ๋ชปํด๋ณผ ๊ฒ์ด๋ค.
ํด๊ฒฐ์ฑ
aging : ๋๊ธฐ ์๊ฐ์ด ํ๋ฅผ์๋ก ์ฐ์ ์์๋ฅผ ๋์ฌ์ฃผ๋ ๋ฐฉ๋ฒ
๊ฐ ํ๋ก์ธ์ค๋ ๋์ผํ ํฌ๊ธฐ์ ํ ๋น์๊ฐ time quantum ์ ๊ฐ์ง๋ค. ์ผ๋ฐ์ ์ผ๋ก๋ 10-100 milliseconds.
ํ ๋น ์๊ฐ์ด ์ง๋๋ฉด ํ๋ก์ธ์ค๋ ์ ์ preempted ๋นํ๊ณ , ready queue ์ ์ ์ผ ๋ค์ ๊ฐ์ ๋ค์ ์ค์ ์ ๋ค.
n๊ฐ์ ํ๋ก์ธ์ค๊ฐ ready queue์ ์๊ณ ํ ๋น ์๊ฐ์ด q time unit ์ธ ๊ฒฝ์ฐ, ๊ฐ ํ๋ก์ธ์ค๋ ์ต๋ q time unit ๋จ์๋ก CPU ์๊ฐ์ 1/n ์ ์ป๋๋ค.
์ด๋ค ํ๋ก์ธ์ค๋ (n-1)q time unit ์ด์ ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค.
ํผํฌ๋จผ์ค
q large โ FCFS
q small โ context switch ์ค๋ฒํค๋๊ฐ ์ปค์ง๋ค.
ํ ๋น ์๊ฐ์ด ๋์ด๊ฐ์ ๋ค์ queue์ ์ ์ผ ๋ค๋ก ๊ฐ์ผํ ๋, ๋ค์ ๋ง์ง๋ง ์์ ๋ถํฐ ์ ํํ๊ฒ ์์ํ ์ ์๋ค๋ฉด, ๊ต์ฅํ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ด ๋ ์ ์๋ค.
ready queue ๋ฅผ ์ฌ๋ฌ๊ฐ๋ก ๋ถํ ํ๋ค.
foreground - interactive
background - batch, no human interaction
๊ฐ ํ๋ ๋ ๋ฆฝ์ ์ธ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ง๋ค.
foreground - RR
background - FCFS
ํ์ ๋ํ ์ค์ผ์ค๋ง์ด ํ์
fixed priority scheduling
foreground ๋ฅผ ํญ์ ๋จผ์ serve ํ๊ณ background ๋ฅผ ๋์ค์ ํ๋ ๋ฐฉ๋ฒ
๋จ์ : background ๋ ์ค๋ ์๊ฐ ๋๊ธฐํด์ผํ๋ค.
time slice
๊ฐ ํ์ CPU time ์ ์ ์ ํ ๋น์จ๋ก ํ ๋นํ๋ค.
foreground : 80%, RR
background : 20%, FCFS
์ค๋ง๋ค ์ฐ์ ์์๊ฐ ๋ค๋ฅด๋ค.
์ฐ์ ์์๋๋ก ๋์ดํ์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
system โ interactive โ interactive editing โ batch โ student
ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก ์ด๋์ด ๊ฐ๋ฅํ๋ค.
์์ด์ง์ ์ด์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ตฌํํ ์ ์๋ค.
multilevel feedback queue scheduler ๋ฅผ ์ ์ํ๋ ํ๋ผ๋ฏธํฐ๋ค
queue ์ ์
๊ฐ ํ์ scheduling algorithm
process ๋ฅผ ์์ ํ๋ก ๋ณด๋ด๋ ๊ธฐ์ค
process ๋ฅผ ํ์ ํ๋ก ๋ด์ซ๋ ๊ธฐ์ค
ํ๋ก์ธ์ค๊ฐ CPU ์๋น์ค๋ฅผ ๋ฐ์ผ๋ ค ํ ๋ ๋ค์ด๊ฐ ํ๋ฅผ ๊ฒฐ์ ํ๋ ๊ธฐ์ค
๋ณดํต์ ์ฒ์ ๋ค์ด์ค๋ ํ๋ก์ธ์ค๋ฅผ ์ฒซ queue ์ ํ ๋นํ๊ณ ๋ฐ์ผ๋ก ๊ฐ์๋ก ์๊ฐ์ ๊ธธ๊ฒ ๋๋ค.
CPU ์ด์ฉ ์๊ฐ์ด ์งง์ ํ๋ก์ธ์ค๋ ์ฒซ์ค์ ๋ค์ด์์ ๋ฐ๋ก ๋๋ ์ ์๋๋กํ๊ณ
์ด์ฉ ์๊ฐ์ด ๊ธธ์๋ก ๋ฎ์ queue ๋ก ์ด๋ํ์ฌ ์ข ๋ ๊ธฐ๋ค๋ฆฌ๋๋ก ํ๋ค.
CPU ๋ฒ์คํธ๊ฐ ์งง์ ํ๋ก์ธ์ค์๊ฒ ์ด์์๊ฐ์ ๋ง์ด ์ฃผ๋ ๋ฐฉ์์ด๋ค.
์ค์ผ์ค๋ง
์๋ก์ด job์ ์ ์ผ ์์ชฝ queue, Q0์ ๋ค์ด๊ฐ๊ฒ ๋๋ค.
CPU ๋ฅผ ์ก์์ ํ ๋น์๊ฐ 8 millisec ์์ ์ํ๋๋ค.
ํ ๋น ์๊ฐ์์ ๋ค ๋๋ด์ง ๋ชปํ๋ค๋ฉด, ๊ทธ ์๋ queue ๋ก ๋ด๋ ค๊ฐ๋ค.
Q1์ ์ค์์ ๊ธฐ๋ค๋ ธ๋ค๊ฐ CPU ๋ฅผ ์ก์์ 16ms ๋์ ์ํ์ด ๋๊ณ
๊ทธ ์์๋ ๋ค ๋ชป๋๋๋ค๋ฉด Q2๋ก ์ซ๊ฒจ๋๋ค.
cpu ๊ฐ ์ฌ๋ฌ๊ฐ์ธ ๊ฒฝ์ฐ, ์ค์ผ์ค๋ง์ ๋์ฑ ๋ณต์กํด์ง๋ค.
homogeneous processor
queue์ ํ์ค๋ก ์ธ์์ ๊ฐ ํ๋ก์ธ์๊ฐ ์์์ ๊บผ๋ด๊ฐ๊ฒ ํ ์ ์๋ค.
๋ฐ๋์ ํน์ ํ๋ก์ธ์์์ ์ํ๋์ด์ผ ํ๋ ํ๋ก์ธ์ค๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๋ฌธ์ ๊ฐ ๋์ฑ ๋ณต์กํด์ง๋ค.
load sharing
์ผ๋ถ ํ๋ก์ธ์์ job ์ด ๋ชฐ๋ฆฌ์ง ์๋๋ก ๋ถํ๋ฅผ ์ ์ ํ ๊ณต์ ํ๋ ๋ฉ์ปค๋์ฆ์ด ํ์ํ๋ค.
๋ณ๊ฐ์ ํ๋ฅผ ๋๋ ๋ฐฉ๋ฒ vs. ๊ณต๋ ํ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
symmetric multiprocessing, SMP
๊ฐ ํ๋ก์ธ์๊ฐ ๊ฐ์ ์์์ ์ค์ผ์ค๋ง ๊ฒฐ์
asymmetric multiprocessing
ํ๋์ ํ๋ก์ธ์๊ฐ ์์คํ ๋ฐ์ดํฐ์ ์ ๊ทผ๊ณผ ๊ณต์ ๋ฅผ ์ฑ ์์ง๊ณ ๋๋จธ์ง ํ๋ก์ธ์๋ ๊ฑฐ๊ธฐ์ ๋ฐ๋ฅธ๋ค.
CPU๊ฐ ์ฌ๋ฌ๊ฐ์ด๊ณ , ํ๋์ CPU๊ฐ ์ฑ ์์ ์ง๋ค.
hard real time systems
์ ํด์ง ์๊ฐ์์ ๋ฐ๋์ ๋๋ด๋๋ก ์ค์ผ์ค๋งํด์ผํ๋ค.
๋ณดํต periodical ํ๊ฒ ์ํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
soft real time systems
์ผ๋ฐ ํ๋ก์ธ์ค์ ๋นํด ๋์ priority๋ฅผ ๊ฐ๋๋ก ํด์ผํ๋ค.
local scheduling
user level thread
์ด์์ฒด์ ๊ฐ thread์ ์กด์ฌ๋ฅผ ๋ชจ๋ฆ
์ฌ์ฉ์ ์์ค์ thread library์ ์ํด ์ด๋ค thread๋ฅผ ์ค์ผ์คํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
global scheduling
kernel level thread
์ด์์ฒด์ ๊ฐ thread์ ์กด์ฌ๋ฅผ ์๊ณ ์์
์ผ๋ฐ ํ๋ก์ธ์ค์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ปค๋์ ๋จ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์ด๋ค thread๋ฅผ ์ค์ผ์คํ ์ง ๊ฒฐ์ ํ๋ค.
queueing models
ํ๋ฅ ๋ถํฌ๋ก ์ฃผ์ด์ง๋ arrival rate์ service rate ๋ฑ์ ํตํด ๊ฐ์ข performance index ๊ฐ์ ๊ณ์ฐํ๋ค.
implementation & measurement
์ค์ ์์คํ ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ์ฌ ์ค์ ์์ ์ ๋ํด์ ์ฑ๋ฅ์ ์ธก์ ๋น๊ตํ๋ค.
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ์ํํ๊ธฐ์ ์ด๋ ต๋ค.
simulation
์๊ณ ๋ฆฌ์ฆ์ ๋ชจ์ ํ๋ก๊ทธ๋จ์ผ๋ก ์์ฑ ํ, trace(์๋ฎฌ๋ ์ด์ ํ๋ก๊ทธ๋จ์ input์ผ๋ก ๋ค์ด๊ฐ ๋ฐ์ดํฐ)๋ฅผ ์ ๋ ฅ์ผ๋ก ํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ๋ค.