CPU Scheduling
Last updated
Last updated
Process๋ ๊ทธ ํน์ฑ์ ๋ฐ๋ผ ๋ค์ ๋ ๊ฐ์ง๋ก ๋๋๋ค
CPU bound job
CPU๋ฅผ ๊ธธ๊ฒ ์ฐ๊ณ , I/O๋ฅผ ์งง๊ฒ ์ฐ๋ ์์
few very log CPU bursts
๊ณ์ฐ ์์ฃผ์ job
ex) ๊ณผํ์ ์ฐ์ฐ ๋ฑ ์ฐ์ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ ์ํํ๋ ๊ฒฝ์ฐ
I/O bound job
CPU๋ฅผ ์งง๊ฒ ์ฐ๊ณ , I/O๋ฅผ ๊ธธ๊ฒ ์ฐ๋ ์์
many short CPU bursts
CPU๋ฅผ ์ก๊ณ ๊ณ์ฐํ๋ ์๊ฐ๋ณด๋ค I/O์ ๋ง์ ์๊ฐ์ด ํ์ํ job
ex) ์ฌ๋๊ณผ Interaction์ ๋ง์ด ํ๋ ๊ฒฝ์ฐ
์ฌ๋ฌ ์ข ๋ฅ์ job(=process)์ด ์์ฌ ์๊ธฐ ๋๋ฌธ์ CPU Scheduling ์ด ํ์ํ๋ค
Interactive job์๊ฒ ์ ์ ํ response ์ ๊ณต ์๋ง
์ฌ๋๊ณผ Interaction์ ํ๋ job
CPU์ I/O ์ฅ์น ๋ฑ system ์์์ ๊ณจ๊ณ ๋ฃจ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ
I/O bound job์ด CPU๋ฅผ ๋นจ๋ฆฌ ์ป์ ์ ์๋๋ก ํ๋ ๋ชฉ์
CPU๋ฅผ ๋จผ์ ์ฃผ์ด์ผ ๋นจ๋ฆฌ๋นจ๋ฆฌ CPU๋ฅผ ์ฐ๊ณ ๋๊ฐ๊ธฐ ๋๋ฌธ
์ฌ๋๊ณผ interaction ํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ์๋ต์ฑ ์ ๊ณต ํ์
์ฐ๊ณ ๋์๋ ๋ฐ๋ก I/O ์์ ์ด ์๋ฃจ์ด์ง๋๋ฐ, CPU๋ฅผ ๋ชป์ฃผ๊ณ ์์ผ๋ฉด
์ด์์ฒด์ ์ฝ๋ ์ค CPU scheduling์ ํ๋ code
Ready ์ํ์ process ์ค์์ CPU๋ฅผ ์ค process๋ฅผ ๊ณ ๋ฅธ๋ค
CPU์ ์ ์ด๊ถ์ CPU Scheduler์ ์ํด ์ ํ๋ process์๊ฒ ๋๊ธด๋ค
์ด ๊ณผ์ ์ context switch ๋ผ๊ณ ํ๋ค
Process์๊ฒ ๋ค์๊ณผ ๊ฐ์ ์ํ ๋ณํ๊ฐ ์๋ ๊ฒฝ์ฐ
Running โ Blocked (e.g. I/O ์์ฒญํ๋ system call)
Running โ Ready (e.g. ํ ๋น ์๊ฐ ๋ง๋ฃ๋ก timer interrupt)
Blocked โ Ready (e.g. I/O ์๋ฃ ํ interrupt)
Terminate
โ 1, 4 ์์์ scheduling์ nonpreemptive
(= ๊ฐ์ ๋ก ๋นผ์์ง ์๊ณ ์์ง ๋ฐ๋ฉ)
โ ๊ทธ ์ธ ๋ค๋ฅธ scheduling์ preemptive (= ๊ฐ์ ๋ก ๋นผ์์)
Performance Index (= Performance Measure, ์ฑ๋ฅ ์ฒ๋)
CPU Utilization (์ด์ฉ๋ฅ )
keep the CPU as busy as possible
CPU๋ฅผ ๋๊ฒ ํ์ง ์๊ณ ์ด์ฉ๋ฅ ์ ๋์ ์๋ก ์ข๋ค
Throughput (์ฒ๋ฆฌ๋)
number of processes
that complete
their execution per time unit
์ฒ๋ฆฌ๋์ ๋ง์์๋ก ์ข๋ค
Turnaround Time (์์ ์๊ฐ, ๋ฐํ ์๊ฐ)
amount of time to execute a particular process
CPU burst๋ฅผ ํ๊ณ ๋์, I/O burst๋ฅผ ํ๋ฌ ๋๊ฐ๊ธฐ๊น์ง ์ ์ฒด ์๊ฐ
ready queue์์ ๊ธฐ๋ค๋ฆฐ ์๊ฐ + ์ค์ ๋ก CPU๋ฅผ ์ด ์๊ฐ
Waiting Time (๋๊ธฐ ์๊ฐ)
amount of time a process has been waiting in the ready queue
์ฒ์์ผ๋ก ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ์๋, CPU๋ฅผ ์ฐ๋ฌ ์์ ๊ธฐ๋ค๋ฆฐ ์ ์ฒด ์๊ฐ์ ํฉ
Response Time (์๋ต ์๊ฐ)
amount of time it takes from when a request was submitted until the first response is produced
, not output
(for time-sharing environment)
CPU๋ฅผ ์ฐ๋ฌ ๋ค์ด์์ ์ฒ์ ์ฐ๊ธฐ๊น์ง์ ์๊ฐ์ ๋ปํจ
process๊ฐ ์์ํด์ ์ฒ์ CPU๋ฅผ ์ฐ๊ธฐ ๊น์ง์ ์๊ฐ ์๋!!
์ค๋ช
ready queue์ ๋จผ์ ๋ค์ด์จ process ์์ผ๋ก ์คํํ๋ค
๋ฌธ์ ์
Convoy effect (ํธ์ ํจ๊ณผ)
short process behind long process
์ค๋ ๊ฑธ๋ฆฌ๋ process๊ฐ ๋จผ์ ๋์ฐฉํด์ CPU๋ฅผ ์ค๋ ์ฐ๋ ํ์ ์งง๊ฒ ๊ฑธ๋ฆฌ๋ process๊ฐ ์ค๋ ๊ฑธ๋ฆฌ๊ฒ ๋๋ ๊ฒ
์ค๋ช
๊ฐ process์ ๋ค์๋ฒ CPU burst time ์ ๊ฐ์ง๊ณ scheduling์ ํ์ฉ
CPU burst time์ด ๊ฐ์ฅ ์งง์ process๋ฅผ ์ ์ผ ๋จผ์ schedule
CPU๋ฅผ ๊ฐ์ฅ ์งง๊ฒ ์ฐ๋ ค๋ job์๊ฒ ์ ์ผ ๋จผ์ CPU๋ฅผ ์ฃผ๋ ๊ฒ
์ข ๋ฅ
Two schemes
Non-preemptive (๋น์ ์ )
์ผ๋จ CPU๋ฅผ ์ก์ผ๋ฉด CPU burst๊ฐ ์๋ฃ๋ ๋๊น์ง CPU๋ฅผ ์ ์ (preemption) ๋นํ์ง ์์
Preemptive (์ ์ )
ํ์ฌ ์ํ์ค์ธ process์ ๋จ์ burst time ๋ณด๋ค ๋ ์งง์ CPU burst time์ ๊ฐ์ง๋ ์๋ก์ด process๊ฐ ๋์ฐฉํ๋ฉด CPU๋ฅผ ๋นผ์๊น
์ด ๋ฐฉ๋ฒ์ Shortest-Remaining-Time-First (SRTF)
๋ผ๊ณ ๋ ๋ถ๋ฆ
ํน์ง
SJF is optional
์ฃผ์ด์ง process๋ค์ ๋ํด minimum average waiting time
์ ๋ณด์ฅํ๋ค
๋๊ธฐ ์๊ฐ ์ธก๋ฉด์์ ์ต์ ์ด๋ค
A priority number (integer) is associated with each process
high priority๋ฅผ ๊ฐ์ง process์๊ฒ CPU ํ ๋น
(smallest integer = high priority)
SJF๋ ์ผ์ข ์ priority scheduling์ด๋ค
priority = predicated next CPU burst time
๋ฌธ์ ์
Starvation
low priority processes may never executed
Aging
as time progresses increase the priority of the process
๋ค์ CPU Burst Time ์ ์์ธก
๋ค์๋ฒ CPU burst time์ ์ด๋ป๊ฒ ์ ์ ์์๊น? (input data, branch, user โฆ)
์ถ์ ๋ง์ด ๊ฐ๋ฅํ๋ค
๊ณผ๊ฑฐ์ CPU burst time์ ์ด์ฉํด์ ์ถ์ (exponential averaging)
A priority number (integer) is associated with each process
ํน์ง
highest priority
๋ฅผ ๊ฐ์ง process์๊ฒ CPU๋ฅผ ํ ๋น
smallest integer == highest priority
SJF๋ ์ผ์ข ์ priority scheduling์ด๋ค
๋ฌธ์ ์
Starvation
: low priority process may never execute
ํด๊ฒฐ
Aging
: as time progresses, increase the priority of the process
ํน์ง
๊ฐ process ๋ ๋์ผํ ํฌ๊ธฐ์ ํ ๋น ์๊ฐ (time quantum) ์ ๊ฐ์ง๋ค
์ผ๋ฐ์ ์ผ๋ก 10 - 100 ms
ํ ๋น ์๊ฐ์ด ์ง๋๋ฉด process๋ ์ ์ ๋นํ๊ณ , ready queue์ ์ ์ผ ๋ค์ ๊ฐ์ ๋ค์ ์ค์ ์ ๋ค
n๊ฐ์ process๊ฐ ready queue์ ์๊ณ , ํ ๋น ์๊ฐ์ด q time unit์ธ ๊ฒฝ์ฐ, ๊ฐ process๋ ์ต๋ q time unit ๋จ์๋ก CPU ์๊ฐ์ 1/n์ ์ป๋๋ค
Performance
q large โ FCFS
q small โ context switch
overhead๊ฐ ์ปค์ง๋ค
์ฅ์
์ผ๋ฐ์ ์ผ๋ก SJF๋ณด๋ค average turnaround time์ด ๊ธธ์ง๋ง, response time
์ ๋ ์งง๋ค
Ready queue๋ฅผ ์ฌ๋ฌ๊ฐ๋ก ๋ถํ
foreground
interactive job
background
batch job (no human interaction)
๊ฐ queue๋ ๋ ๋ฆฝ์ ์ธ scheduling algorithm์ ๊ฐ์ง
foreground
RR
background
FCFS
Queue์ ๋ํ scheduling์ด ํ์
๊ฐ queue ๋ง๋ค wait์ ์ฃผ๋ ๊ฒ
Fixed priority scheduling
๋ ๊ฐ์ ์ฐ์ ์์ ๊ทธ๋ฃน์ ๋๋๋ค (foreground, background)
serve all from foreground then from background
foreground์ ์ํ process๋ค์ด ๋จผ์ ๋ชจ๋ ์คํ๋๊ณ ๋๋ฉด, ๊ทธ ๋ค์์ background group์ ์ํ process๋ค์ ์คํํ๋ค
possibility of starvation
Time slice
๊ฐ queue์ CPU time์ ์ ์ ํ ๋น์จ๋ก ํ ๋น
e.g.
80% to foreground in RR
20% to background in FCFS
Priority ๋ณ queue ๋ถ๋ฐฐ
ํ๋ฒ ์ ํด์ง queue๋ ๋ฐ๋์ง ์๋๋ค
Process๊ฐ ๋ค๋ฅธ queue๋ก ์ด๋ ๊ฐ๋ฅ
์์ queue๊ฐ ์ฐ์ ์์๊ฐ ๋๋ค
์์ queue๊ฐ ๋น์ด์ผ ํ์ queue๊ฐ ์ฑ์์ง๋ค
aging์ ์ด์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ตฌํํ ์ ์๋ค
aged job์ ์์ queue๋ก ๋ณด๋ด๊ธฐ
Multilevel feedback queue scheduler ๋ฅผ ์ ์ํ๋ Parameters
Queue์ ์
๊ฐ queue์ scheduling algorithm
Process๋ฅผ ์์ queue๋ก ๋ณด๋ด๋ ๊ธฐ์ค
Process๋ฅผ ํ์ queue๋ก ๋ด์ซ๋ ๊ธฐ์ค
Process๊ฐ CPU ์๋น์ค๋ฅผ ๋ฐ์ผ๋ฌ ํ ๋, ๋ค์ด๊ฐ queue๋ฅผ ๊ฒฐ์ ํ๋ ๊ธฐ์ค
e.g.
Three queues
Q0 - time quantum 8 ms
Q1 - time quantum 16 ms
Q2 - FCFS
Scheduling Flow
new job์ด queue Q0๋ก ๋ค์ด๊ฐ
CPU๋ฅผ ์ก์์ ํ ๋น ์๊ฐ์ธ 8ms ๋์ ์ํ๋จ
8ms ๋์ ๋ค ๋๋ด์ง ๋ชปํ์ผ๋ฉด Q1์ผ๋ก ๋ด๋ ค๊ฐ
Q1์ ์ค์์ ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ, CPU๋ฅผ ์ก์์ 16ms ๋์ ์ํ๋จ
16ms ์์ ๋๋ด์ง ๋ชปํ ๊ฒฝ์ฐ Q2๋ก ์ซ๊ฒจ๋จ
CPU๊ฐ ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ scheduling์ ๋์ฑ ๋ณต์กํด์ง
Homogeneous process
์ธ ๊ฒฝ์ฐ
๋๊ตฌ๋ ์ฒ๋ฆฌํ ์ ์๋ ์ญ๋์ด ๋๊ฐ์ CPU
Queue์ ํ์ค๋ก ์ธ์์ processor๊ฐ ์์์ ๊บผ๋ด๊ฐ๊ฒ ํ ์ ์๋ค
but, ๋ฐ๋์ ํน์ processor์์ ์ํ๋์ด์ผ ํ๋ process๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๋ฌธ์ ๊ฐ ๋ ๋ณต์กํด์ง๋ค
Load sharing
(= Load balancing)
์ผ๋ถ processor์ job์ด ๋ชฐ๋ฆฌ์ง ์๋๋ก ๋ถํ๋ฅผ ์ ์ ํ ๊ณต์ ํ๋ ๋ฉ์ปค๋์ฆ ํ์
๋ณ๊ฐ์ queue๋ฅผ ๋๋ ๋ฐฉ๋ฒ vs ๊ณต๋ queue๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
Symmetric Multiprocessing (SMP)
๊ฐ processor๊ฐ ๊ฐ์ ์์์ ์ค์ผ์ค๋ง ๊ฒฐ์
๊ท ์ผํ ์์ ์ ์ฌ๋ฌ๊ณณ์์ ํ ๋๋ ์กฐ์จํ๋ processor๊ฐ ์๋๊ฒ ํจ์จ์ ์ผ ์๋ ์๋ค
Asymmetric multiprocessing
ํ๋์ processor๊ฐ system data์ ์ ๊ทผ๊ณผ ๊ณต์ ๋ฅผ ์ฑ ์์ง๊ณ , ๋๋จธ์ง processor๋ ๊ฑฐ๊ธฐ์ ๋ฐ๋ฆ
Hard real-time systems
์ ํด์ง ์๊ฐ ์์ ๋ฐ๋์ ๋๋ด๋๋ก scheduling ํด์ผ ํจ
๊ทธ๋ฌ๊ธฐ ์ํด process๋ค์ CPU ๋์ฐฉ ์๊ฐ์ ๋ฏธ๋ฆฌ ์๊ณ scheduling ํ๋ ๊ฒฝ์ฐ๋ ์๋ค (off-line scheduling)
โ online scheuluing
system์ด ์คํ์ค์ ๋์ ์ผ๋ก process๋ฅผ scheduling
์์ ์ด ๋์ฐฉํ๋ ์์ ์์ ๊ฒฐ์ ์ ๋ด๋ฆญ ๋๋ฌธ์, ์คํ ์์ ์ ์๋ ค์ง ์ ๋ณด๋ง ์ฌ์ฉํ ์ ์๋ค
Soft real-time computing
์ผ๋ฐ process์ ๋นํด ๋์ priority๋ฅผ ๊ฐ๋๋ก ํด์ผ ํจ
e.g. ๋์์์ด ๋๊ธฐ์ง ์๋๋ก ๋์์ ์ฌ์ process๊ฐ ๋จผ์ CPU๋ฅผ ์ป์ ์ ์๋๋ก priority๋ฅผ ๋์ด๊ธฐ
ํ๋์ process ์์ CPU ์ํ ๋จ์๊ฐ ์ฌ๋ฌ๊ฐ ์๋ ๊ฒ
Local Scheduling
User level thread์ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์์ค์ thread library์ ์ํด ์ด๋ค thread๋ฅผ scheduling ํ ์ง ๊ฒฐ์
Global Scheduling
Kernel level thread์ ๊ฒฝ์ฐ ์ผ๋ฐ process์ ๋ง์ฐฌ๊ฐ์ง๋ก, kernel์ ๋จ๊ธฐ scheduler๊ฐ ์ด๋ค thread๋ฅผ scheduling ํ ์ง ๊ฒฐ์
Queueing models
ํ๋ฅ ๋ถํฌ๋ก ์ฃผ์ด์ง๋ arrival rate์ service rate ๋ฑ์ ํตํด ๊ฐ์ข performance index ๊ฐ์ ๊ณ์ฐ
Implementation & Measurement
์ค์ ์์คํ
์ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํ
ํ์ฌ ์ค์ ์์
์ ๋ํด์ ์ฑ๋ฅ์ ์ธก์
ํ์ฌ ๋น๊ต
Simulation
์๊ณ ๋ฆฌ์ฆ์ ๋ชจ์ ํ๋ก๊ทธ๋จ์ผ๋ก ์์ฑ ํ trace
๋ฅผ ์
๋ ฅ์ผ๋ก ํ์ฌ ๊ฒฐ๊ณผ ๋น๊ต
trace ๋?
simulation์ input์ด ๋๋ data
์ ๋น์ฑ์ด ์์ด์ผํจ (์ค์ ํ๋ก๊ทธ๋จ์ ๋์์ ๋๋ณํ ์ ์์ด์ผ ํจ)