๐ CPU ์ค์ผ์ค๋ฌ(Scheduler)2
CPU ์ค์ผ์ค๋ฌ
CPU๋ฅผ ์ฐ๋ CPU burst, I/O๋ฅผ ์ฐ๋ I/O burst ์์ ์ ๋ฐ๋ณตํ๊ฒ ๋๋ค.
Scheduling Algorithm
-
FCFS: First Come First Served (non-preemptive)
- ๋จผ์ ์จ ์์๋๋ก CPU๋ฅผ ๋ถ์ฌํ๋ค.
- non-preemptive๋ค.
- ๋ง๊ทธ๋๋ก ์ ์ฐฉ์์ด๋ค
- ํ์ง๋ง ์ด ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ ์ด์ง ๋ชปํ๋ค
- ์๋ํ๋ฉด ์์ ๊ธด ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ํ๋ก์ธ์ค๊ฐ ์์ผ๋ฉด, ํ๊ท ์ ์ผ๋ก ๋๊ธฐํ๋ ์๊ฐ์ด ๊ธธ์ด์ง๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ฅผ Convoy Effect๋ผ๊ณ ํ๋ค.
- Convoy Effect(ํธ์ ํจ๊ณผ): short process behind long process
-
SJF: Shortest-Job-First
- ๊ฐ ํ๋ก์ธ์ค์ ๋ค์๋ฒ CPU burst time์ ๊ฐ์ง๊ณ ์ค์ผ์ค๋ง์ ํ์
- CPU burst time์ด ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค๋ฅผ ์ ์ผ ๋จผ์ ์ค์ผ์คํจ
- Two Schemes
- Nonpreeemptive
- ์ผ๋จ CPU๋ฅผ ์ก์ผ๋ฉด CPU burst๊ฐ ๋๋ ๋ ๊น์ง CPU๋ฅผ ์ ์ ๋นํ์ง ์๋๋ค.
- Preemptive
- ํ์ฌ ์ํ์ค์ธ ํ๋ก์ธ์ค์ ๋จ์ CPU burst time๋ณด๋ค ๋ ์งง์ ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ๋ฉด CPU๋ฅผ ๋นผ์๊ธด๋ค.
- ์ด ๋ฐฉ๋ฒ์ Shortest-Remaining-time-First(SRTF)๋ผ๊ณ ํ๋ค.
- Nonpreeemptive
- SJF is optimal
- ์ฃผ์ด์ง ํ๋ก์ธ์ค๋ค์๊ฒ minimum average waiting time์ ๋ณด์ฅํ๋ค. (์ค์ ๋ก programmers์ ํด๋น ๋ฌธ์ ๊ฐ ์์, ํ์ด๋ฅผ ๋ณด๋ฉด heapq๋ฅผ ์ด์ฉํจ)
- Problem
- starvation: ๊ธด ํ๋ก์ธ์ค๋ ์์ํ ์ค์ผ์ค์ ๋ชป์ป์ ์ ์์
- ๋๊ฐ CPU๋ฅผ ๊ธธ๊ฒ ์ฐ๋์ง ์ฒ์์๋ ์ ์ ์๋ค.
- ์ถ์ (estimate)๋ง ๊ฐ๋ฅํ๋ค
- ๋๋ ๊ณผ๊ฑฐ์ CPU burst๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐ๋ ์๋ค.
- ์ด๋ฌํ ์์ธก๊ฐ์ ์ค์ ๊ฐ๊ณผ ์์ธก๊ฐ์ ๊ฐ์ค์น(alpha)๋ก ์์ธกํ๊ฒ ๋๋๋ฐ
- ์ด๋ฅผ ๊ณ์ฐํ๊ฒ ๋๋ฉด, ์ฒซ ์์ธก๊ฐ์ ํ์ term์ ์ ํ term๋ณด๋ค ์ ์ ๊ฐ์ค์น ๊ฐ์ ๊ฐ์ ์ ๋ฐ์ ์๊ฒ ๋๋ค.
- ์ฆ ์ด์ ์ํฅ๋ค์ ๋ ์ ๊ฒ ๋ฐ์ํ๋ค. ์ด๋ฅผ exponential averaging์ด๋ผ๊ณ ํ๋ค. (์ฌ์ค ์ง์ ํํ๋ฒ๊ณผ ๊ฐ์ ์ด์น์ด๋ค.)
-
Priority Scheduling
- A Priority Number(Integer) is associated with process
- Highest Priority๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ํ ๋นํ๋ค. Highest Priority๋ ์ซ์๊ฐ ์์ ์๋ก ์ฐ์ ์์๊ฐ ๋ ๋๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ์ด๋ํ nonpreemptive์ preemptive๋ก ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.
- ์ฐ์ ์์๊ฐ ๋์ process๊ฐ ๋์ฐฉํ๋ฉด ๋นผ์์ ๊ฒ์ธ๊ฐ?
- NO! (nonpreemptive)
- YES! (preemptive)
- ์ฐ์ ์์๊ฐ ๋์ process๊ฐ ๋์ฐฉํ๋ฉด ๋นผ์์ ๊ฒ์ธ๊ฐ?
- ์ด๋ํ nonpreemptive์ preemptive๋ก ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.
- Shortest-Job-First์ Highest Priority๊ฐ Predicted next burst time ์ธ ๊ฒ์ด๋ค.
- Problem: The low priority processes may never execute
- Solution: Aging, as time processes increase the priority of the process
-
Round Robin (์ค์ ๋ก ์ ์ผ ๋ง์ด ์ฌ์ฉํ๋ CPU ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ)
- ๊ฐ ํ๋ก์ธ์ค๋ ๋์ผํ ํฌ๊ธฐ์ ํ ๋น ์๊ฐ(time quantum)์ ๊ฐ๋๋ค. (์ผ๋ฐ์ ์ผ๋ก 10-100 millisecond)
- ํ ๋น ์๊ฐ์ด ๋๋๋ฉด ํ๋ก์ธ์ค๋ ์ ์ (preemptive)๋นํ๋ฉด ready queue์ ์ ์ผ ๋ค์ ๊ฐ์ ์ค์ ์ ๋ค.
- n๊ฐ์ ํ๋ก์ธ์ค๊ฐ ready queue์ ์๊ณ ํ ๋น ์๊ฐ์ด q time unit์ธ ๊ฒฝ์ฐ ๊ฐ ํ๋ก์ธ์ค๋ ์ต๋ q time unit ๋จ์๋ก CPU ์๊ฐ์ 1/n์ ์ป๋๋ค.
- ๊ทธ ์ด๋ค ํ๋ก์ธ์ค๋ (n-1)q time unit ์ด์์ ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค.
- Performance
- q large: FCFS
- q small: context switch ์ค๋ฒํค๋๊ฐ ์ปค์ง๋ค.
- Response Time์ ์ค์ผ ์ ์๋ค.
- ๋๊ธฐ ์๊ฐ์ด CPU burst time์ ๋น๋กํ๋ค.
-
Multilevel Queue
-
Ready Queue๋ฅผ ์ฌ๋ฌ ๊ฐ๋ก ๋ถํ . ์ฌ๊ธฐ์๋ foreground์ background๋ก ํํ
- foreground (interactive: ์งง์ ๊ฒ)
- background (batch - no human interactive: ๊ธด ๊ฒ)
-
๊ฐ ํ๋ ๋ ๋ฆฝ์ ์ธ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์
- foreground - RR
- background - FCFS
-
ํ์ ๋ํ ์ค์ผ์ค๋ง์ด ํ์
-
Fixed priority Scheduling
- Save all from foreground then from background / ๋ชจ๋ foreground์ ์ฒ๋ฆฌ๊ฐ ๋๋ฌ์ ๋ background ์ฒ๋ฆฌ๊ฐ ์์๋๋ค.
- possibility of starvation / ์ด ๋ background ์ชฝ์์๋ starvation ๊ฐ๋ฅ์ฑ์ด ์์.
-
Time Slice
- ๊ฐ queue์ CPU ํ์์ ์ ์ ํ ๋น์จ๋ก ํ ๋น / background๋ฅผ ์คํํ๊ธฐ ์ํด์ ์ค์
- Eg..80% to foreground in RR, 20% to background in FCFS
-
EX) ๊ฐ๊ฐ์ ์ด๋์ ๋ ์ฐ์ ์์๋ฅผ ๋ํ๋ด๋ Queue ๋ค์
high priority
- System process
- interactive process
- interactive editing process
- Batch process
- Student process
low priority
-
-
Multilevel Feedback Queue
-
ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก ์ด๋ ๊ฐ๋ฅ
-
์์ด์ง์ ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ตฌํํ ์ ์๋ค.
-
Multilevel Feedback Queue scheduler๋ฅผ ์ ์ํ๋ ํ๋ผ๋ฏธํฐ๋ค
-
Queue์ ์
-
๊ฐ ํ์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ
-
Process๋ฅผ ์์ ํ๋ก ๋ณด๋ด๋ ๊ธฐ์ค
-
Process๋ฅผ ํ์ ํ๋ก ๋ณด๋ด๋ ๊ธฐ์ค
-
ํ๋ก์ธ์ค๊ฐ CPU ์๋น์ค๋ฅผ ๋ฐ์ผ๋ ค ํ ๋ ํ๋ฅผ ๊ฒฐ์ ํ๋ ๊ธฐ์ค
Ex) 1
high
- quantum 8: ๋ชจ๋ ํ๋ก์ธ์ค๋ ์ฌ๊ธฐ์ ๋ด๊น 8์ ์คํํ๊ณ ํ๋ก์ธ์ค๊ฐ ๋๋๋ฉด ๋์ด๊ณ ์๋๋ฉด ์๋ ํ์ ๋ด๊ธด
- quantum 16
- FCFS
low
Ex) 2
Three Queue
- Q0 - quantum 8
- Q1 - quantum 16
- Q2 - FCFS
Scheduling
- New job์ด Q0์ ๋ค์ด๊ฐ
- CPU๋ฅผ ์ก์์ ํ ๋น ์๊ฐ 8 milliseconds ๋์ ์ํ๋จ
- 8 milliseconds ๋์ ๋ค ์ํ์ ๋ชปํ Q1์ ๋ค์ด๊ฐ
- Q1์ ์ก์์ CPU์ ํ ๋น๋ ์๊ฐ์ด 16ms๋ฅผ ์คํํจ
- 16ms ์์ ๋๋ด์ง ๋ชปํ๋ฉด Q2๋ก ์ซ๊ฒจ๋จ
-
-
-
Multi - processor Scheduling
- CPU๊ฐ ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ ์ค์ผ์ค๋ง์ ๋์ฑ ๋ณต์กํด์ง
- Homogeneous processor์ธ ๊ฒฝ์ฐ
- Queue์ ํ์ค๋ก ์ธ์ ๊ฐ ํ๋ก์ธ์ค๊ฐ ์์์ ๊บผ๋ด ๊ฐ ์ ์๋๋ก ํ ์ ์๋ค.
- ๋ฐ๋์ ํน์ ํ๋ก์ธ์ค์์ ์ํํด์ผ ํ๋ ํ๋ก์ธ์ค๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๋ฌธ์ ๊ฐ ๋์ฑ ๋ณต์กํด์ง๋ค.
- Loading Sharing
- ์ผ๋ถ ํ๋ก์ธ์ค์์ job์ด ๋ชฐ๋ฆฌ์ง ์๋๋ก ๋ถํ๋ฅผ ์ ์ ํ ๊ณต์ ํ๋ ๋ฉ์ปค๋์ฆ์ด ํ์
- ๋ณ๊ฐ์ ํ๋ฅผ ๋๋ ๋ฐฉ๋ฒ vs ๊ณต๋ ํ๋ฅผ ์ฌ์ฉํ๋ ๋ฒ
- Sysmmetric Multiprocessing (SMP)
- ๊ฐ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ์์์ ์ค์ผ์ค๋ง ๊ฒฐ์
- Asymmetric Multiprocessing
- ํ๋์ ํ๋ก์ธ์ค๊ฐ ์์คํ ๋ฐ์ดํฐ์ ์ ๊ทผ๊ณผ ๊ณต์ ๋ฅผ ์ฑ ์์ง๊ณ ๋๋จธ์ง ํ๋ก์ธ์ค๋ ๊ฑฐ๊ธฐ์ ๋ฐ๋ฆ