[์ด์์ฒด์ ] ch05. CPU Scheduling
๐ CPU-burst Time์ ๋ถํฌ

์ ์ฒด ๊ฐ์
CPU burst time์ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฐ์์ ์ผ๋ก ์ฌ์ฉํ๋ ์๊ฐ์ ์๋ฏธํจ.
์ด ๋ถํฌ๋ ๋๋ถ๋ถ์ ํ๋ก์ธ์ค๊ฐ ์งง์ burst time์ ๊ฐ๊ณ , ์ผ๋ถ๋ง์ด ๋งค์ฐ ๊ธด burst time์ ๊ฐ๋๋ค๋ ํน์ง์ด ์์.
๊ทธ๋ํ ํด์
- x์ถ: CPU ์ฌ์ฉ ์๊ฐ (burst duration, ๋จ์: milliseconds)
- y์ถ: ํด๋น ์๊ฐ์ ์ฌ์ฉ ๋น๋ (frequency)
โ I/O bound job
- ๋งค์ฐ ์งง์ CPU ์ฌ์ฉ ํ I/O ์์ฒญ
- ์งง์ burst time์ ์์ฃผ ๋ฐ๋ณต (๊ทธ๋ํ ์ผ์ชฝ์ ๋พฐ์กฑํ ๊ณ ๋ด)
- โ๏ธ ํ๊ธฐ: โํํ ์ ํ (์ธํฐ๋ํฐ๋ธ), ์ฆ์ ์๋ต ์๋งโ
โ CPU bound job
- ์ฐ์ฐ๋์ด ๋ง์ ํ ๋ฒ์ CPU๋ฅผ ์ค๋ ์ ์
- ๊ธด burst time (๊ทธ๋ํ ์ค๋ฅธ์ชฝ์ ๋ฎ๊ณ ๊ธด tail)
- โ๏ธ ํ๊ธฐ: โ์ ๊ฒฝ๋ง ํ์ต ๋ฑ ๊ธด ์ฒ๋ฆฌ ์๊ฐ ํ์โ
โ ์๊ธฐ ํฌ์ธํธ
- ๋๋ถ๋ถ์ ํ๋ก์ธ์ค๋ burst time์ด ์งง๋ค (I/O bound)
- ์ผ๋ถ๋ง์ด burst time์ด ๊ธธ๋ค (CPU bound)
- ๊ทธ๋ํ๋ hyperexponential ๋ถํฌ๋ฅผ ๋ฐ๋ฅธ๋ค
- ์ค์ผ์ค๋ฌ๋ ์งง์ burst์ ๋น ๋ฅด๊ฒ ๋ฐ์ํ๊ณ , ๊ธด burst๋ ๊ณต์ ํ๊ฒ ๋ฐฐ๋ถํด์ผ ํ๋ค
- Interactive job์ ๋น ๋ฅธ response ์ ๊ณต์ด ํต์ฌ
- CPU์ I/O ์์์ ํจ์จ์ ์ผ๋ก ๋ถ๋ฐฐํด์ผ ํ๋ค
โ๏ธ ํ๋จ ํ๊ธฐ ์์ฝ
- "์ฌ๋ฌ ์ข ๋ฅ์ job์ด ์์ฌ ์๊ธฐ ๋๋ฌธ์ ์ค์ผ์ค๋ง์ด ๋ฐ๋์ ํ์ํจ"
- "โ Interactive job์ ์๋ต์๋ ์ค์"
- "โ CPU bound๋ ์์ ์ ์ ์๊ฐ ๊ธธ์ง๋ง ํจ์จ ๊ณ ๋ ค ํ์"
์ด ์ฌ๋ผ์ด๋๋ CPU ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๋๊ธฐ๋ถ์ฌ ์ฌ๋ผ์ด๋์ผ.
์ SJF ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ด burst time ์์ธก ๊ธฐ๋ฐ์ผ๋ก ์์ง์ด๋์ง, ์ preemption์ด ์ค์ํ์ง ์ดํดํ๋ ๊ธฐ๋ฐ์ด ๋ผ!
๐ CPU and I/O Bursts in Program Execution

์ ์ฒด ์์ฝ
ํ๋ก์ธ์ค๋ CPU ์์ (CPU burst)๊ณผ ์ ์ถ๋ ฅ ์์ (I/O burst)์ ๋ฒ๊ฐ์ ์ํํ๋ฉฐ ์คํ๋๋ค.
์ด ํ๋ฆ์ ์ด์์ฒด์ ๊ฐ ์ค์ผ์ค๋ง์ ํตํด ๊ด๋ฆฌํด์ผ ํจ.
๊ทธ๋ฆผ ๊ตฌ์กฐ ํด์ค
- CPU burst: ๊ณ์ฐ, ๋ฉ๋ชจ๋ฆฌ ์ฐ์ฐ, ๋ณ์ ์กฐ์ ๋ฑ โ CPU๊ฐ ์ฒ๋ฆฌ
- I/O burst: ๋์คํฌ, ํ์ผ ๋ฑ ์ ์ถ๋ ฅ โ I/O ์ฅ์น๊ฐ ์ฒ๋ฆฌ
์์ ์์
- ๊ฐ I/O burst ๋์์๋ CPU๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์คํ ๊ฐ๋ฅ
- โ๏ธ ํ๊ธฐ: โprocess๋ CPU burst โ I/O burst ์๋ค๊ฐ๋ค ๋ฐ๋ณตํ๋ฉฐ ์คํ๋๋คโ
์ํ ์ ์ด ํ๋ฆ
- running โ blocked: I/O ์์ฒญ ์
- blocked โ ready: I/O ์๋ฃ ์ (์ธํฐ๋ฝํธ ๋ฐ์)
- ready โ running: CPU ํ ๋น๋๋ฉด ๋ค์ ์คํ
- โ๏ธ ํ๊ธฐ:
- โrunning โ blocked (I/O ์์ฒญ ์)โ
- โblocked โ ready โ running (I/O ์๋ฃ ํ ์ค์ผ์ค๋ฌ ํ ๋น ์)โ
โ ์๊ธฐ ํฌ์ธํธ
- ๋ชจ๋ ํ๋ก์ธ์ค๋ CPU burst์ I/O burst๊ฐ ๋ฐ๋ณต๋๋ ๊ตฌ์กฐ๋ก ์คํ๋๋ค
- CPU burst๋ ์ฐ์ฐ/์ ์ด, I/O burst๋ ์ฅ์น ๋๊ธฐ/์ ์ก
- I/O burst ๋์ ํ๋ก์ธ์ค๋ blocked ์ํ๋ก ๋น ์ง๊ณ , CPU๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์คํ
- ์ด ํ๋ฆ์ ์ด์์ฒด์ ๊ฐ ํจ์จ์ ์ผ๋ก ์ค์ผ์ค๋งํด์ผ ์์คํ ์์์ ๋ญ๋นํ์ง ์์
- I/O๋ ์๋๊ฐ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ ์ ํ CPU-I/O ๋ณํ ์คํ์ด ์ค์
โ๏ธ ํ๊ธฐ ์์ฝ ์ ๋ฆฌ
- โhard disk ์ ๊ทผ ๋งค์ฐ ๋๋ฆผโ
- โI/O๋ blocking operation โ ๋ฐ์ I/O ์์ ์ค์๋ CPU ๋ชป ์โ
- โblocked โ ready ์ ์ด ํ, ๋ค์ running ์ง์ โ
- โ์ ์ฒด ์ํ ์๊ฐ ์ค I/O๊ฐ ๋ง์ผ๋ฉด ํจ์จ ๋จ์ด์ง โ ์ค์ผ์ค๋ง ํ์โ
์ด ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ฉด ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณ ์ด์ ,
์: Multilevel Feedback Queue๊ฐ ์ I/O bound์ ์ ๋ฆฌํ์ง๊น์ง ์์ฐ์ค๋ฝ๊ฒ ์ด์ด์ง ์ ์์ด!
๐ FCFS (First-Come First-Served)

์ ์ฒด ์์ฝ
FCFS๋ ๋จผ์ ๋์ฐฉํ ํ๋ก์ธ์ค๋ถํฐ ์คํํ๋ ์ค์ผ์ค๋ง ๋ฐฉ์์ผ๋ก, ๋์ฐฉ ์์๊ฐ ์คํ ์์๋ฅผ ๊ฒฐ์ ํ๋ค.
์์ ๊ตฌ์ฑ
Pโ | 24 |
Pโ | 3 |
Pโ | 3 |
- ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ๋์์ ๋์ฐฉํ๋ค๊ณ ๊ฐ์
์คํ ์์ ๋ฐ Gantt Chart
- ๋์ฐฉ ์์๋๋ก: Pโ โ Pโ โ Pโ
- ์คํ ํ๋ฆ (์๊ฐ ๋จ์):
Waiting Time (๋๊ธฐ ์๊ฐ)
- Pโ: 0 (๋์ฐฉํ์๋ง์ ์คํ)
- Pโ: 24 (Pโ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆผ)
- Pโ: 27 (Pโ + Pโ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆผ)
โ ํ๊ท ๋๊ธฐ ์๊ฐ:
0+24+273=17\frac{0 + 24 + 27}{3} = \boxed{17}30+24+27=17
โ ์๊ธฐ ํฌ์ธํธ
- FCFS๋ ํ๋ก์ธ์ค๋ฅผ ๋์ฐฉ ์์๋๋ก ์คํํจ
- ํ ๋ฒ ์คํ์ด ์์๋๋ฉด ์ค๊ฐ์ ์ค๋จ๋์ง ์์ (Non-preemptive)
- burst time์ด ๊ธด ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์ค๋ฉด โ ์ ์ฒด ํ๊ท ๋๊ธฐ ์๊ฐ ์ฆ๊ฐ (convoy effect)
- ๊ฐ๋จํ์ง๋ง ๋นํจ์จ์ ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค
โ๏ธ ํ๊ธฐ ์์ฝ
- โready queue ์์: Pโ โ Pโ โ Pโโ
- โPโ, Pโ๋ ์คํ ๋ชป ํ๊ณ ๊ธฐ๋ค๋ฆผโ โ CPU ๋ญ๋น๋ ์์ง๋ง, ๋๊ธฐ ์๊ฐ ํผ
- โ์์ ๋ ์คํ ์๊ฐโ์ด๋ผ๋ ํํ์ผ๋ก burst time์ ์ดํดํจ
์ด ์ฌ๋ผ์ด๋๋ FCFS์ ๋จ์์ฑ๊ณผ ๋จ์ (๊ธด ์์
์ด ์์ ์์ผ๋ฉด ์ ์ฒด ์ง์ฐ)์ ํจ๊ป ๋ณด์ฌ์ฃผ๋ ๋ํ ์์ ์ผ.
์ดํ SJF, RR, Priority ์ค์ผ์ค๋ง๊ณผ ๋น๊ตํ ๋ ๊ธฐ๋ณธ์ด ๋๋ ๊ผญ ๊ธฐ์ตํด๋ฌ์ผ ํด!
๐ Example of Non-Preemptive SJF

์ด ์ฌ๋ผ์ด๋๋ SJF (Shortest Job First) - Non-Preemptive ๋ฐฉ์์ ์ค์ผ์ค๋ง ์์ ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์์ด.
**๋์ฐฉ ์๊ฐ(Arrival Time)**๊ณผ **์คํ ์๊ฐ(Burst Time)**์ด ์ฃผ์ด์ก์ ๋,
Non-Preemptive SJF๊ฐ ์ด๋ป๊ฒ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋์ง, **๊ฐํธ ์ฐจํธ(Gantt Chart)**์ ํ๊ท ๋๊ธฐ ์๊ฐ๊น์ง ๊ณ์ฐํด๋์ ์์ฃผ ๋ํ์ ์ธ ์์ ์ผ.
๊ทธ๋ฆผ์ ํฌํจ๋ ๋ฉ๋ชจ๊น์ง ๋ฐ์ํด์ ์ ์ฒด์ ์ผ๋ก ์ ๋ฆฌํด์ค๊ฒ!
๐ Example of Non-Preemptive SJF (Shortest Job First)
ํ๋ก์ธ์ค ์ ๋ณด
Pโ | 0.0 | 7 |
Pโ | 2.0 | 4 |
Pโ | 4.0 | 1 |
Pโ | 5.0 | 4 |
์ค์ผ์ค๋ง ๊ท์น (Non-Preemptive SJF)
Non-Preemptive SJF๋ ํ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๋ฉด ๋๋ ๋๊น์ง ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋ฐ๊พธ์ง ์์.
๋จ, ๋ค์์ ๋๊ตฌ๋ฅผ ์คํํ ์ง๋ ๋์ฐฉํ ํ๋ก์ธ์ค ์ค์์ burst time์ด ๊ฐ์ฅ ์งง์ ๊ฒ์ ๊ณ ๋ฆ.
์คํ ์์ ๋ถ์
- ์๊ฐ 0: Pโ๋ง ๋์ฐฉํ์ผ๋ฏ๋ก โ Pโ ์คํ ์์
- ์๊ฐ 7: Pโ ์ข ๋ฃ, ๋์ฐฉํ Pโ, Pโ, Pโ ์ค์์ burst time ๊ฐ์ฅ ์งง์ Pโ ์ ํ
- ์๊ฐ 8: Pโ ์ข ๋ฃ โ ๋จ์ Pโ(4), Pโ(4) ์ค ๋์ฐฉ ๋น ๋ฅธ Pโ ๋จผ์
- ์๊ฐ 12: Pโ ์ข ๋ฃ โ Pโ ์คํ
- ์๊ฐ 16: Pโ ์ข ๋ฃ
โก๏ธ Gantt Chart:
๋๊ธฐ ์๊ฐ(Waiting Time) ๊ณ์ฐ
- Pโ: 0 (๋์ฐฉํ์๋ง์ ์คํ)
- Pโ: 8 - 2 = 6
- Pโ: 7 - 4 = 3
- Pโ: 12 - 5 = 7
โ ํ๊ท ๋๊ธฐ ์๊ฐ:
0+6+3+74=4\frac{0 + 6 + 3 + 7}{4} = \boxed{4}40+6+3+7=4
โ ์๊ธฐ ํฌ์ธํธ ์์ฝ
- SJF(Non-Preemptive)๋ ๋์ฐฉํ ํ๋ก์ธ์ค ์ค์์ burst time์ด ๊ฐ์ฅ ์งง์ ๊ฒ๋ถํฐ ์ ํ
- ํ ๋ฒ ์คํ๋๋ฉด ์ข ๋ฃ๊น์ง CPU ์ ์ (Preemption ์์)
- ๋๊ธฐ ์๊ฐ์ ์์ ์๊ฐ - ๋์ฐฉ ์๊ฐ
- ํ๊ท ๋๊ธฐ ์๊ฐ ๊ณ์ฐ์ ๋ชจ๋ ํ๋ก์ธ์ค์ ๋๊ธฐ ์๊ฐ์ ํ๊ท
โ๏ธ ๊ทธ๋ฆผ ํ๊ธฐ ๋ด์ฉ ์์ฝ
- โ0์ด์๋ Pโ๋ง ๋์ฐฉ โ ๋ฌด์กฐ๊ฑด ์คํ๋จโ
- โ7์ด๊น์ง๋ Pโ์ด ์ ์ ํ๊ณ ์์ด์ ์๋ฌด๋ ๋ชป ์คํ๋จโ
- โ๋๊ธฐ ์๊ฐ ๊ณ์ฐ ์์ ์ ํ ์์ (0, 6, 3, 7)โ
์ด ์ฌ๋ผ์ด๋๋ SJF ๊ฐ๋
์ ์๊ฐ์ ์ผ๋ก ์ ๋ฆฌํ ์ ์๋ ๋ํ ์์ ๋๊น ์ํ ์ ์ ๊ผญ ๋ค์ ํ ๋ฒ ๋ณด๊ธธ ์ถ์ฒํด!

์ด ์ฌ๋ผ์ด๋๋ Preemptive SJF (Shortest Job First), ์ฆ SRTF (Shortest Remaining Time First) ์๊ณ ๋ฆฌ์ฆ์ ๋ณด์ฌ์ฃผ๋ ์์ ์ผ.
ํ๋ก์ธ์ค๊ฐ ์คํ ์ค์ด์ด๋, ๋ ์งง์ ์์
์ด ๋์ฐฉํ๋ฉด ์ ์ (preemption)๋๋ค๋ ํน์ง์ด ํต์ฌ์ด๊ณ ,
์ด ์๊ณ ๋ฆฌ์ฆ์ ํ๊ท ๋๊ธฐ ์๊ฐ์ ์ต์ํํ๋ ์ด๋ก ์ ์ต์ ์๊ณ ๋ฆฌ์ฆ์ด์ผ.
์ด๋ฒ์๋ ์ฌ๋ผ์ด๋์ ํ, Gantt ์ฐจํธ, ํ๊ธฐ๊น์ง ์ ๋ถ ๋ฐ์ํด์ ์ ๋ฆฌํด์ค๊ฒ!
๐ Example of Preemptive SJF (SRTF)
ํ๋ก์ธ์ค ์ ๋ณด
Pโ | 0.0 | 7 |
Pโ | 2.0 | 4 |
Pโ | 4.0 | 1 |
Pโ | 5.0 | 4 |
์คํ ํ๋ฆ ๋ถ์ (Preemption ์์)
- 0~2: Pโ ์์ (๋จ์ ์๊ฐ 5)
- 2~4: Pโ ๋์ฐฉ โ Pโ(4) vs Pโ(5) โ Pโ ์คํ
- 4~5: Pโ ๋์ฐฉ โ Pโ(1) vs Pโ(2) โ Pโ ์คํ (Pโ ์ ์ ๋จ)
- 5~7: Pโ ์ข ๋ฃ โ Pโ(2) ๋ณต๊ท
- 7~11: Pโ ๋์ฐฉ โ Pโ ์ข ๋ฃ ํ Pโ ์คํ
- 11~16: ๋ง์ง๋ง์ผ๋ก Pโ ์ฌ๊ฐ โ ์ข ๋ฃ
Gantt Chart
Waiting Time ๊ณ์ฐ
Pโ | (์ฌ๊ฐ ์์ 11 - ๋์ฐฉ 0 - ์ค์ ์คํ 2์ด) = 9 | |
Pโ | (์ฌ๊ฐ๊น์ง ๋๊ธฐ: 5~7) = 1 | |
Pโ | ๋ฐ๋ก ์คํ โ 0 | |
Pโ | 7 - 5 = 2 |
ํ๊ท ๋๊ธฐ ์๊ฐ=9+1+0+24=3\text{ํ๊ท ๋๊ธฐ ์๊ฐ} = \frac{9 + 1 + 0 + 2}{4} = \boxed{3}ํ๊ท ๋๊ธฐ ์๊ฐ=49+1+0+2=3
โ ์๊ธฐ ํฌ์ธํธ
- SRTF (Preemptive SJF)๋ ๋จ์ ์๊ฐ ๊ธฐ์ค์ผ๋ก ๊ฐ์ฅ ์งง์ ์์ ์ ์ฐ์ ์คํ
- ๊ธฐ์กด์ ์คํ ์ค์ธ ํ๋ก์ธ์ค๋ณด๋ค ๋ ์งง์ job์ด ๋์ฐฉํ๋ฉด ์ ์ ๋๋ค
- ํ๊ท ๋๊ธฐ ์๊ฐ์ ์ต์ํํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ (Optimal)
- ๋จ์ : ์์ธก ์ด๋ ค์, Starvation ๋ฐ์ ๊ฐ๋ฅ (๊ธด job์ด ๊ณ์ ๋ฐ๋ฆผ)
โ๏ธ ํ๊ธฐ ์์ฝ
- "Pโ๊ฐ ๋์ฐฉํ์ ๋ Pโ๋ณด๋ค burst๊ฐ ๋ ์งง์์ ์ ์ ๋จ (1 vs 2)"
- "Pโ ๋์ฐฉํ์ง๋ง Pโ๊ฐ ๋ ์งง์์ ๋จผ์ ์คํ"
- "Non-preemptive๋ณด๋ค ํ๊ท ๋๊ธฐ ์๊ฐ์ด ๊ฐ์ํจ โ Optimal"
์ด ์ฌ๋ผ์ด๋๋ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ ์ค ์ด๋ก ์ ์ผ๋ก ๊ฐ์ฅ ์ข์ ์ฑ๋ฅ์ ๋ณด์ด์ง๋ง,
์ค์ ๋ก๋ burst time ์์ธก์ด ์ด๋ ค์์ ๊ทธ๋๋ก ๊ตฌํ๋๊ธด ํ๋ค์ด.
๐ Example: RR (Round Robin) with Time Quantum = 20

์ด ์ฌ๋ผ์ด๋๋ RR (Round Robin) ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์์ ๋ฅผ ๋ณด์ฌ์ค.
Time Quantum์ด 20์ผ ๋, ๊ฐ ํ๋ก์ธ์ค๊ฐ ์ด๋ป๊ฒ CPU๋ฅผ ๋๋ ์ ์ฌ์ฉํ๋์ง ์๊ฐ์ ์ผ๋ก ์ค๋ช
ํ๊ณ ์๊ณ ,
์งง์ ์์
์๋ต ์๊ฐ(response time)์ ์ข์์ง์ง๋ง, ํ๊ท ์๋ฃ ์๊ฐ์ ๊ธธ์ด์ง ์ ์๋ค๋ ์ ์ด ํต์ฌ์ด์ผ.
ํ๋ก์ธ์ค ์ ๋ณด
Pโ | 53 |
Pโ | 17 |
Pโ | 68 |
Pโ | 24 |
- Time Quantum = 20
- ์ ์ ์ ์ถ(FCFS) ๋ฐฉ์์ผ๋ก ํ์์ ๋์๊ฐ๋ฉฐ ์คํ
Gantt Chart ๋ถ์
๊ฐ ํ๋ก์ธ์ค ์คํ ๋ถํ :
- Pโ: 20 + 20 + 13 = 53 (์ด 3๋ฒ)
- Pโ: 17 (1๋ฒ์ ๋)
- Pโ: 20 + 20 + 20 + 8 = 68 (์ด 4๋ฒ)
- Pโ: 20 + 4 = 24 (์ด 2๋ฒ)
โ ํต์ฌ ๊ฐ๋ ์์ฝ
- RR์ ๊ณ ์ ๋ ์๊ฐ(Time Quantum)๋ง๋ค CPU๋ฅผ ๊ต๋๋ก ํ ๋น
- ์งง์ ์์ ์ด ๋จผ์ ๋๋์ง ์๋๋ผ๋ ์์ฃผ CPU๋ฅผ ๋ฐ์ผ๋ฏ๋ก ์๋ต ์๊ฐ(response time)์ ์ข์
- ์์
์ ๊ธธ์ด์ ๊ด๊ณ์์ด ๊ณต์ ํ๊ฒ ์คํ๋์ง๋ง,
ํ๊ท turnaround time์ SJF๋ณด๋ค ๊ธธ์ด์ง ์ ์์ - short job๊ณผ long job์ด ์์ฌ ์์ ๋ ํนํ ํจ๊ณผ์
โ๏ธ ์ฌ๋ผ์ด๋ ํ๊ธฐ ์์ฝ
- "์๋ต ์๊ฐ์ด ์งง์์ง โ time sharing ํ๊ฒฝ์ ์ ํฉ"
- "short job, long job ์์ฌ ์์ ๋ ํจ๊ณผ์ "
- "๋จ, ๋๋ฑ job ์๋๋ฉด ์คํ๋ ค ๋นํจ์จ ๊ฐ๋ฅ"
- "CPU first ๋ฐ๋ ์๊ฐ์ด ๋นจ๋ผ์ง = ๋น ๋ฅธ ๋ฐ์"
RR ์๊ณ ๋ฆฌ์ฆ์ ํน์ฑ ์์ฝ
โ ์๋ต ์๊ฐ(response time) ์ข์ | โ ํ๊ท ์๋ฃ ์๊ฐ ์ฆ๊ฐ ๊ฐ๋ฅ |
โ starvation ์์ | โ Context Switching ๋น์ฉ ์์ |
โ ๊ณต์ ํ ํ ๋น (Fairness) | โ ๋๋ฌด ์์ Quantum์ ์ค๋ฒํค๋ |
์ด ์์ ๋ ์๋ถํ ์์คํ
์์ ์ RR์ด ์ฐ์ด๋์ง๋ฅผ ๋ช
ํํ ๋ณด์ฌ์ค.
ํนํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ธฐ๋ฐ ์์คํ
์์๋ SJF๋ณด๋ค ํจ์ฌ ์์ฐ์ค๋ฝ๊ณ ๋ฐ์์ฑ์ด ์ข์!
๐ Turnaround Time Varies With Time Quantum

์ ์ฒด ๋งฅ๋ฝ
RR (Round Robin) ์ค์ผ์ค๋ง์์ time quantum์ ํฌ๊ธฐ๋
์์คํ ๋ฐ์์ฑ๊ณผ **ํ๊ท turnaround time(์์ ์ข ๋ฃ๊น์ง ๊ฑธ๋ฆฐ ์ ์ฒด ์๊ฐ)**์ ํฐ ์ํฅ์ ์ค.
๊ทธ๋ํ ๊ตฌ์กฐ ํด์
- x์ถ: Time Quantum (1~7)
- y์ถ: Average Turnaround Time (9.0 ~ 12.5)
๊ด์ฐฐ ํฌ์ธํธ:
- Time Quantum์ด ๋๋ฌด ์์ผ๋ฉด: context switching์ด ์์ฃผ ๋ฐ์ํด ์ค๋ฒํค๋ ์ฆ๊ฐ โ turnaround time ์ฆ๊ฐ
- Time Quantum์ด ์ ๋นํ๋ฉด: short job ๋น ๋ฅด๊ฒ ์ข ๋ฃ + long job๋ ๋ถ์ฐ ์คํ โ turnaround time ์ต์ํ
- Time Quantum์ด ๋๋ฌด ํฌ๋ฉด: FCFS์ฒ๋ผ ์๋ํ๊ฒ ๋๋ฉฐ short job ์ง์ฐ โ turnaround time ์ฆ๊ฐ
โ๏ธ ํ๊ธฐ:
- "time quantum ๋ณํ์ ๋ฐ๋ผ turnaround time์ด ์ด๋ป๊ฒ ๋ณํ๋์ง ํต์ฐฐ๋ ฅ ์ฃผ๋ ๊ทธ๋ํ"
- "ํ ๋น ์๊ฐ ์ปค์ง์๋ก FCFS์ฒ๋ผ ๋์ํ๊ฒ ๋จ"
์ค๋ฅธ์ชฝ ํ๋ก์ธ์ค ์ ๋ณด
Pโ | 6 |
Pโ | 3 |
Pโ | 1 |
Pโ | 7 |
โ short job(Pโ), medium(Pโ, Pโ), long job(Pโ)์ด ์์ฌ ์์
โ time quantum ํฌ๊ธฐ์ ๋ฐ๋ผ ํฐ ์ฐจ์ด ๋ฐ์ ๊ฐ๋ฅ
โ ์๊ธฐ ํฌ์ธํธ
- time quantum์ด ๋๋ฌด ์์ผ๋ฉด โ context switch ๋น์ฉ โ โ ๋นํจ์จ
- ๋๋ฌด ํฌ๋ฉด โ short job์ด ๋ฆ๊ฒ ๋๋จ (FCFS์ ์ ์ฌ)
- ์ ์ ํ ๊ฐ ์ค์ ํ์ โ short job์ ๋น ๋ฅด๊ฒ, long job์ ๊ณต์ ํ๊ฒ
์ ๋ต์ ์์ฝ
์์์๋ก | ๋์ | ์ฆ๊ฐ ๊ฐ๋ฅ | context switch ๊ณผ๋ค, short job ๋น ๋ฆ |
์ ์ ํ ๋ | ๋์ + ํจ์จ์ | ์ต์ํ | ๊ฐ์ฅ ์ด์์ ์ฑ๋ฅ |
ํด์๋ก | ๋ฎ์ | ์ฆ๊ฐ ๊ฐ๋ฅ | FCFS์ฒ๋ผ ๋์, short job ์ง์ฐ |
โ๏ธ ํต์ฌ ์ ๋ฆฌ ๋ฉํธ
โRR์ ํต์ฌ์ time quantum์ด๋ค.
๋๋ฌด ์์ผ๋ฉด ์์คํ ๊ณผ๋ถํ, ๋๋ฌด ํฌ๋ฉด FCFSํ.
์ ์ ํ ์ค๊ฐ๊ฐ์ ์ฐพ๋ ๊ฒ์ด ์ฑ๋ฅ ์ต์ ํ์ ํต์ฌ์ด๋ค.โ
์ด ์ฌ๋ผ์ด๋๋ ์ด์์ฒด์ ์ค๊ณ์์ ํ์ ์ฌ๋ผ์ด์ค ์กฐ์ ์ด ์ผ๋ง๋ ์ค์ํ๊ฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํต์ฌ ํต๊ณ ๊ทธ๋ํ์ผ.
์คํ๋ฌธ์ , ์์ ํ ๋ ๋ค ์ถ์ ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ ๊ผญ ๊ธฐ์ตํด!
๐ Multilevel Feedback Queue (MLFQ)

๐ Multilevel Feedback Queue (MLFQ)
๐ง ํต์ฌ ๊ฐ๋
MLFQ๋ ํ๋ก์ธ์ค์ ์คํ ์๊ฐ๊ณผ ํ๋ ํจํด์ ๋ฐ๋ผ ์ฐ์ ์์๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํ๋ ์ค์ผ์ค๋ง ๊ธฐ๋ฒ์ด๋ค.
์งง์ ์์ ์ ๋น ๋ฅด๊ฒ, ๊ธด ์์ ์ ์ ์ฐจ ๋ฎ์ ์ฐ์ ์์๋ก ๋ฐ๋ฆฌ๊ฒ ํ์ฌ ๊ณต์ ์ฑ๊ณผ ๋ฐ์์ฑ์ ๋์์ ์ก๋๋ค.
๐ข ํ ๊ตฌ์กฐ
- Queue 1 (quantum = 8)
- ์ด๊ธฐ ์ง์
- 8์ด ์ด๋ด ์ข ๋ฃ๋๋ฉด ์ฌ๊ธฐ์ ์์ ํ ๋
- ์๊ฐ ์ด๊ณผ ์ โ Queue 2๋ก ์ด๋
- Queue 2 (quantum = 16)
- Queue 1์์ ๋ฐ๋ ค์จ ํ๋ก์ธ์ค
- 16์ด ์์ ์ข ๋ฃ๋๋ฉด ์ฌ๊ธฐ์ ์๋ฃ
- ๋ ์๊ฐ ์ด๊ณผ ์ โ FCFS ํ๋ก ์ด๋
- Queue 3 (FCFS)
- Time quantum ์์ด ์์๋๋ก ๋๋ ๋๊น์ง ์คํ
๐ ๋์ ์์ (์ฌ๋ผ์ด๋ ํ๊ธฐ ์์ ๊ธฐ์ค)
- โ ~โค: ์ฒ์์ ๋ชจ๋ Queue 1์ ๋ค์ด๊ฐ
- ๊ฐ๊ฐ 8์ด์ฉ ์คํ๋จ
- ์: โค๋ฒ์ 6์ด ๋ง์ ๋๋์ Queue 1์์ ์ข ๋ฃ๋จ (โ )
- ๋จ์ ํ๋ก์ธ์ค(โฃ,โข,โก,โ )๋ ์๊ฐ์ด ๋ถ์กฑํด โ Queue 2๋ก ์ด๋
- ๊ฐ์ 16์ด ๋ฐฐ์ ๋จ
- Queue 2์์๋ ๋ชป ๋๋ ํ๋ก์ธ์ค(์: โข)๋ โ Queue 3 (FCFS)๋ก ์ด๋
โ๏ธ ์ฌ๋ผ์ด๋ ํ๊ธฐ ์์ฝ
- โ24์ด ์์ ์ด ์์๋๋ฐโฆ Queue 1์์ 8์ด, Queue 2์์ 16์ด โ ์ด 24์ด ํ ์ข ๋ฃโ
- โ๋จ์ ์์ด ๋ง์ผ๋ฉด FCFS๋ก ๋ด๋ ค๊ฐ๋คโ
- โ์ ์ ํ ํ โ ์งง์ job์ ์ ๋ฆฌโ
- โ๋ ๋ฒ์งธ ํ๋ preemptive ์๋โ (context switch ์์)
- โ์งง์ job์ Queue 1์์ ๋ฐ๋ก ๋๋ โ ๋ฐ์์ฑ ์ข์โ
โ ์๊ธฐ ํฌ์ธํธ
- ๋ค๋จ๊ณ ํ๋ก ์ฐ์ ์์ ๊ตฌ์ฑ
- ๋์ ์ฐ์ ์์ ํ๋ ์งง์ quantum (์ ์ ํ)
โ ๋ฐ์์ฑโ - ๊ธด job์ ์ ์ฐจ ๋ฎ์ ์ฐ์ ์์๋ก ๋ฐ๋ ค FCFS๋ก
- ์งง์ job์ ๋์ ์ฐ์ ์์์์ ๋น ๋ฅด๊ฒ ๋๋จ
- ์ค์ ์ด์์ฒด์ ์์ ๊ฐ์ฅ ์ ์ฐํ๊ณ ํ์ค์ ์ธ ๋ฐฉ์
์์ฝ ํ
Q1 | 8 | O | ์งง์ ์์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ, ๊ธฐ๋ณธ ์ง์ |
Q2 | 16 | X | ์ค๊ฐ ์์ ์ฒ๋ฆฌ |
Q3 | ์์ | X (FCFS) | ๊ธด ์์ ์ฒ๋ฆฌ, CPU bound์ฉ |
์ด ์ฌ๋ผ์ด๋๋ ์ค์ OS์์ ์ฌ์ฉํ๋ ๋์ ์ค์ผ์ค๋ง ๋ฐฉ์์ ํต์ฌ ๋ชจ๋ธ
๐ Multiple-Processor Scheduling

๐ง ํต์ฌ ๊ฐ๋
์ฌ๋ฌ ๊ฐ์ **CPU ๋๋ ์ฝ์ด(Core)**๊ฐ ์๋ ์์คํ ์์,
๊ฐ ์์ (Job, ํ๋ก์ธ์ค)๋ฅผ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ด๋ค CPU์ ๋ฐฐ๋ถํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ์ค์ผ์ค๋ง ๊ธฐ๋ฒ
๐๏ธ ์์คํ ์ ํ ๊ตฌ๋ถ
1. Homogeneous Processor
- ๋์ผํ CPU ๊ตฌ์กฐ
- ํ๋์ **๊ณตํต ํ(shared ready queue)**๋ฅผ ์ฌ์ฉ
- ์ด๋ค CPU๋ ์ด๋ค job์ด๋ ์คํ ๊ฐ๋ฅ
โ Load Sharing ๊ฐ๋ฅ
๐ ์ค์ผ์ค๋ง ๋ฐฉ์ ๊ตฌ๋ถ
โ Asymmetric Multiprocessing (AMP)
- ํ CPU๋ง ์ค์ผ์ค๋ง์ ๋ด๋น (master)
- ๋๋จธ์ง CPU๋ ๋จ์ํ ์์ ๋ง ์คํ
- ์ฅ์ : ์ค๊ณ ๊ฐ๋จ
- ๋จ์ : ์ค์ผ์ค๋ง ๋ณ๋ชฉ ๊ฐ๋ฅ
โ โ ํ๊ธฐ: โํ๋์ด ์ค์ผ์ค ๋ค ๋ด๋นํจ โ ๋ณ๋ชฉ๋ ์ ์์โ
โ Symmetric Multiprocessing (SMP)
- ๋ชจ๋ CPU๊ฐ ์ค์ผ์ค๋ง ๊ธฐ๋ฅ ๊ฐ์ง
- ๊ฐ๊ฐ ์ค์ค๋ก ์์ ์ ํ์์ ๊ฐ์ ธ์ด
- ์ฅ์ : ๋ณ๋ ฌ์ฑ ๊ทน๋ํ
- ๋จ์ : ๊ฒฝ์ ์กฐ๊ฑด, ๋๊ธฐํ ์ค๋ฒํค๋
โ โ ํ๊ธฐ: โ๋ชจ๋ ์์์ ํ์์ ๊บผ๋ โ lock ๊ฒฝํฉ, ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅโ
๐ Load Sharing ์ ๋ต
์ฌ๋ฌ CPU๊ฐ ready queue๋ฅผ ๊ณต์ ํ๋ฉด์,
๊ฐ์๊ฐ ๊ท ํ ์๊ฒ ์์ ์ ๋ถ๋ดํ๋ ๊ตฌ์กฐ
- ์์ ์ด ๋ชฐ๋ฆฌ๋ ํ์์ ์ํ
- SMP์ ํจ๊ป ์ฌ์ฉ๋๋ ๋ํ ์ ๋ต
๐ง ํ๊ธฐ ํฌํจ ์์ฝ
- โCore = ์ฒ๋ฆฌ ๋จ์โ
- โMulticore๋ ํ๋์ CPU ์์ ์ฌ๋ฌ ์ฝ์ดโ
- โMultiprocessor๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก CPU๊ฐ ์ฌ๋ฌ ๊ฐโ
- ์๋ ๋์์์ MultiCPU vs MultiCore๋ฅผ ๊ตฌ๋ถํด ๊ทธ๋ฆผ
โ ์๊ธฐ ํฌ์ธํธ
- AMP: ํ CPU๊ฐ ์ ์ฒด ์ค์ผ์ค ๊ด๋ฆฌ (๋ณ๋ชฉ ๊ฐ๋ฅ)
- SMP: ๋ชจ๋ CPU๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์์ ๊ฐ์ ธ๊ฐ (์ฑ๋ฅ ์ข์ง๋ง ๊ฒฝ์ ๋ฐ์ ๊ฐ๋ฅ)
- Load Sharing: queue ๊ณต์ ๊ธฐ๋ฐ์ ์์ ๋ถ์ฐ
- Homogeneous vs Heterogeneous๋ ๊ตฌ๋ถ ํ์ (์ด ์ฌ๋ผ์ด๋์ ์ธ๊ธ X)
๊ตฌ์กฐ ์์ฝํ
AMP (๋น๋์นญ) | 1๊ฐ CPU | ์ค์์ง์ค์ | ์ค๊ณ ๊ฐ๋จ | ๋ณ๋ชฉ, ์ ์ฐ์ฑ ๋ฎ์ |
SMP (๋์นญ) | ๋ชจ๋ CPU | ๋ถ์ฐ์ | ๋ณ๋ ฌ์ฑ/ํ์ฅ์ฑ ์ข์ | ๋๊ธฐํ ์ค๋ฒํค๋ ์กด์ฌ |
Load Sharing | ๊ณต์ ํ ๊ธฐ๋ฐ | ๊ท ๋ฑ ๋ถ์ฐ | ์ ํด CPU ํ์ฉ, ๋ถํ ๊ท ํ | ๊ตฌํ ๋ณต์ก๋ ์กด์ฌ |
์ด ์ฌ๋ผ์ด๋๋ ๋ค์ค ํ๋ก์ธ์ ํ๊ฒฝ์์ ์ค์ผ์ค๋ง ์ ์ฑ
์ ๊ตฌ์กฐ์ ์ฅ๋จ์ ์ ๋น๊ตํ๋ ํต์ฌ ์ฌ๋ผ์ด๋์ผ.
SMP์ AMP๋ ์ํ์์ ์์ฃผ ๋น๊ต