CPU ์ค์ผ์ฅด๋ง์ ๋ํด ์์๋ณธ๋ค.
CPU๊ฐ ํ๋์ ํ๋ก์ธ์ค ์์ ์ด ๋๋๋ฉด ๋ค์ ํ๋ก์ธ์ค ์์ ์ ์ํํด์ผ ํ๋ค. ์ด๋ ๋ค์ ํ๋ก์ธ์ค๊ฐ ์ด๋ ํ๋ก์ธ์ค์ธ์ง๋ฅผ ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ์ CPU Scheduling ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ํ๋ค. ๊ฐ๋จํ ์๊ฐํด๋ณด๋ฉด ๋จผ์ ์จ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์คํ๋๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ๊ฒ์ด๋ผ ์๊ฐํ ์ ์๋ค. ํ์ง๋ง ์ฌ๋ฌ ์ํฉ์์ ์ฌ์ฉ๋๋ ์ปดํจํฐ ํ๊ฒฝ์์ ๊ผญ ์ด๋ฌํ ๋ฐฉ๋ฒ์ด ์ข๋ค๊ณ ํ ์ ์๋ค. (๋จ์ํ ํ๊ฒฝ์์๋ ์ด ๋ฐฉ๋ฒ์ด ๋ฐ๋์ ๋น ๋ฅธ ๊ฒ๋ ์๋๋ค.) ๊ทธ๋ฌ๋ฏ๋ก CPU ์ค์ผ์ค๋ง์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.
1. ์ค์ผ์ฅด๋ง์ ์ ํ
์ ํ์ผ๋ก๋ Preemptive ์ Non-preemptive๊ฐ ์๋ค.
1.1 Preemptive
Preemptive(์ ์ )์ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๊ณ ์๋ ๋์ I/O๋ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ ๊ฒ๋ ์๋๊ณ ๋ชจ๋ ์์
์ ๋๋ด์ง๋ ์์๋๋ฐ, ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ํด๋น CPU๋ฅผ ๊ฐ์ ๋ก ์ ์ ํ ์ ์๋ค. ์ฆ, ํ๋ก์ธ์ค๊ฐ ์ ์์ ์ผ๋ก ์ํ์ค์ธ ๊ฐ์ด๋ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ๊ฐ์ ๋ก ์ ์ ํ์ฌ ์คํํ ์ ์๋ ๊ฒ์ด๋ค. ๊ธ๋ฅ ์ฐ์ ์์
1.2 Non-preemptive
Non-preemptive(๋น์ ์ )์ ๋ง ๊ทธ๋๋ก preemptive์ ๋ฐ๋์ด๋ค. ํ ํ๋ก์ธ์ค๊ฐ ํ ๋ฒ CPU๋ฅผ ์ ์ ํ๋ค๋ฉด, I/O๋ ์ธํฐ๋ฝํธ ๋ฐ์ ๋๋ ํ๋ก์ธ์ค ์ข
๋ฃ๊ฐ ๋ ๋๊น์ง ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ์ง ๋ชปํ๋ ๊ฒ์ด๋ค. ์์๋๋ก ๋ค์ด๊ฐ์
2. Scheduling criteria
Scheduling criteria(์ฒ๋)๋ ์ค์ผ์ค๋ง์ ํจ์จ์ ๋ถ์ํ๋ ๊ธฐ์ค๋ค์ด๋ค.
- CPU Utilization(์ด์ฉ๋ฅ , %)
- CPU๊ฐ ์ํ๋๋ ๋น์จ
- Throughput(์ฒ๋ฆฌ์จ, jobs/sec)
- ๋จ์์๊ฐ๋น ์ฒ๋ฆฌํ๋ ์์ ์ ์(์ฒ๋ฆฌ๋)
- Turnaround time(๋ฐํ์๊ฐ)
- ํ๋ก์ธ์ค์ ์ฒ์ ์์ ์๊ฐ๋ถํฐ ๋ชจ๋ ์์ ์ ๋๋ด๊ณ ์ข ๋ฃํ๋๋ฐ ๊ฑธ๋ฆฐ ์๊ฐ์ด๋ค.(CPU, waiting, I/O ๋ฑ ๋ชจ๋ ์๊ฐ์ ํฌํจํ๋ค.) ๋ฐํ์๊ฐ์ ์งง์ ์๋ก ์ข๋ค.
- Waiting time(๋๊ธฐ์๊ฐ)
- CPU๋ฅผ ์ ์ ํ๊ธฐ ์ํด์ ready queue์์ ๊ธฐ๋ค๋ฆฐ ์๊ฐ์ ๋งํ๋ค.(๋ค๋ฅธ ํ์์ ๋๊ธฐํ ์๊ฐ์ ์ ์ธํ๋ค.)
- Response time(์๋ต์๊ฐ)
- ์ผ๋ฐ์ ์ผ๋ก ๋ํํ ์์คํ ์์ ์ ๋ ฅ์ ๋ํ ๋ฐ์ ์๊ฐ์ ๋งํ๋ค. ์ฌ์ฉ์์์ ์ํธ์์ฉ์ ์ค์๋ก ํ๋ ํ๋ก์ธ์ค์ ๊ฒฝ์ฐ์ด๋ค.
3. CPU Scheduling Algorithms
CPU์์ ํ๋ก์ธ์ค์ ์์๋ฅผ ์ฒ๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์์๋ณธ๋ค.
3.1 First-Come, First-Served(FCFS)
FCFS๋ ๋จผ์ ์จ ํ๋ก์ธ์ค๊ฐ ๋จผ์ CPU๋ฅผ ์ ์ ํ๋ ๋ฐฉ์์ด๋ค. ์ด๋ ๋งค์ฐ ๋จ์ํ๊ณ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด์ง๋ง, ๋ชจ๋ ๋ถ๋ถ์์ ํจ์จ์ ์ธ ๊ฒ์ ์๋๋ค.
Gantt Chart
Process | Burst Time(msec) |
---|---|
P1 | 24 |
P2 | 3 |
P3 | 3 |
์์ ํ๋ฅผ ์๋์ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ธ ๊ฒ์ Gantt Chart๋ผ ํ๋ค. P1, P2, P3 ์์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ๋์ฐฉํ๋ค๊ณ ๊ฐ์ ํ์ ๋, P1, P2, P3์ ์ด ๋๊ธฐ์๊ฐ์ ํ๊ท ์ ๊ตฌํด๋ณด์.
- Average Waiting Time = ์ด๋ค.
๊ทธ๋ฐ๋ฐ ๋ง์ฝ P3, P2, P1 ์์ผ๋ก ๋ค์ด์๋ค๊ณ ์๊ฐํด๋ณด์.
- Average Waiting Time = ์ด๋ค.
๋ ์์ ์์ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ๋๋ ์๊ฐ์ 30msec๋ก ๊ฐ์ง๋ง, ํ๊ท ๋๊ธฐ์๊ฐ์ผ๋ก ๋ดค์ ๋๋ ์์ ์์ ๋ 17msec์ด๊ณ ์๋๋ 3msec๋ก ์ฐจ์ด๊ฐ ๋๋ค. ์ฆ, ๋ค์ด์จ ์์๋ก ์ํํ๋ค๊ณ ํด๋ ๋ฐ๋์ ํจ์จ์ ์ธ ๊ฒ์ ์๋ ๊ฒ์ ์ ์ ์๋ค.
์ด๊ฒ์ ๊ณต์คํ์ฅ์ค์ ๊ธฐ๋ค๋ฆฌ๋ ๋งจ๋ ๋๋ฝ๋ 3๋ช
์ ์ฌ๋์ผ๋ก ์นํํด์ ์๊ฐํ ์ ์๋ค. ๋น ๋ฅธ ๋งบ๊ณ ๋์์ด ๊ฐ๋ฅํ ์ ์๊ฐ ๋จผ์ ์
์ฅํ๋ ๊ฒ์ด ๊ณต๊ณต์ ์ด์ต์ ์ต๋ํ ํ ์ ์๋ค. ์?
์ ์์ ์ฒ๋ผ P1, P2, P3 ์์๋ก ๋ค์ด์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ํ์์ Convoy Effect ๋ผ๊ณ ํ๋ค. ์ด๋ CPU ์๊ฐ์ ์ค๋ ์ฌ์ฉํ๋ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์ํํ๋ ๋์ ๋๋จธ์ง ํ๋ก์ธ์ค๋ค์ ๊ทธ ๋งํผ ์ค๋ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ๋งํ๋ค.
FCFS์ ํน์ง ์ ๋ฆฌ
- Convoy Effect๊ฐ ๋ฐ์ํ ์ ์๋ค.
- Non-preemptive ๋ฐฉ์์ด๋ค. ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋๋๊ธฐ ์ ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋ผ์ด๋ค ์ ์๋ค.
3.2 Shortest-Job-First(SJF)
SJF๋ ์ด๋ฆ์์๋ ๋ํ๋๋ฏ์ด ๊ฐ์ฅ ์งง๊ฒ ์ํ๋๋ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ฅ ๋จผ์ ์ํ๋๋ ๊ฒ์ ๋งํ๋ค. FCFS์์ ๋ณด์๋ฏ์ด ์ํ ์๊ฐ์ด ์งง์ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์ค๋ ๊ฒ์ด ํ๊ท ๋๊ธฐ์๊ฐ์ด ์งง์ ๊ฒ์ ์ ์ ์์๋ค. ์ด๋ฅผ ์ด์ฉํ ๊ฒ์ด SJF์ด๋ค.
Process | Burst Time(msec) |
---|---|
P1 | 6 |
P2 | 8 |
P3 | 7 |
P4 | 3 |
- Average Waiting Time(AWT) = ์ด๋ค.
์์ ์๋ฅผ FCFS๋ก ๋ํ๋์ ๋ ํ๊ท ๋๊ธฐ์๊ฐ์ ๊ณ์ฐํด๋ณด์.
- Average Waiting Time(AWT) = ์ด๋ค.
SJF์ FCFS์ ํ๊ท ๋๊ธฐ์๊ฐ์ ์ดํด๋ณด๋ฉด ๋น์ฐํ SJF๊ฐ ๋ ์งง์ ๊ฒ์ ๋ณผ ์ ์๋ค. SJF๊ฐ ํ๊ท ๋๊ธฐ์๊ฐ ๊ธฐ์ค์ผ๋ก ์ด๋ ํ ๋ฐฉ๋ฒ๋ณด๋ค ์งง์ ๊ฒ์ ์ด๋ฏธ ์ํ์ ์ผ๋ก ์ฆ๋ช ๋์ด ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ด๋ ํ ์์ ๋ฅผ ๋ณด๋๋ผ๋ SJF๊ฐ AWT๋ ๊ฐ์ฅ ์งง๋ค.
ํ๊ณ
์ด๋ฅผ ๋ณด๋ฉด SJF๊ฐ ๊ฐ์ฅ ํจ์จ์ ์ธ CPU ์ค์ผ์ค๋ง ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ฅผ ์ฐ๋ฉด ๋ ๊ฒ ๊ฐ์ง๋ง, ์ฌ์ค์ ์ด ์ค์ผ์ค๋ง ๋ฐฉ๋ฒ์ ๋งค์ฐ ๋นํ์ค์ ์ด๋ค. ์๋ํ๋ฉด ํ์ค์ ์ธ ์ปดํจํฐ ํ๊ฒฝ์์๋ ํ๋ก์ธ์ค์ CPU ์ ์ ์๊ฐ(burst time)์ ์ ์ ์๋ค. ์๋ํ๋ฉด ํ ํ๋ก์ธ์ค๊ฐ ์คํ ์ค์๋ ๋ง์ ๋ณ์๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ CPU ์ ์ ์๊ฐ์ ์๋ ค๋ฉด ์ค์ ๋ก ์ํํ์ฌ ์ธก์ ํ๋ ์ ๋ฐ์ ์๋ค. ์ค์ ์ธก์ ํ ์๊ฐ์ผ๋ก ์์ธกํด์ SJF๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง, ์ด๋ ์ค๋ฒํค๋๊ฐ ๋งค์ฐ ํฐ ์์ ์ผ๋ก ์ ์ฌ์ฉ๋์ง ์๋๋ค.
Preemptive & non-preemptive ๋ฐฉ์
Process | Arrival Time | Burst Time(msec) |
---|---|---|
P1 | 0 | 8 |
P2 | 1 | 4 |
P3 | 2 | 9 |
P4 | 3 | 6 |
non-preemptive
๊ฐ์ฅ ๋จผ์ ๋์ฐฉํ P1์ด ์ํ๋๋ ๋์ P2, P3, P4 ๋ชจ๋ ๋์ฐฉํ์ง๋ง, non-preemptive์ด๋ฏ๋ก ์ด๋ฏธ ์ํ์ค์ธ ํ๋ก์ธ์ค๊ฐ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ค. ์ผ๋จ ์์ํ ๋์ ๊ทธ๋๋ก ํ๊ณ ๋จ์ ๋๋ค์ ๋ํด์ ๋๊ธฐ์๊ฐ์ด ์งง์ ๊ฒ์ ์ฐ์ ์์๋ฅผ ์ฃผ์.
- Average Waiting Time(AWT) = ์ด๋ค. โ
Preemptive
์ด๋ฒ์๋ p]Preemptive์ด๋ฏ๋ก ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ ๋๋ง๋ค, ์ด๋ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ฅ ์งง์ ๊ฒ์ธ์ง ์ ํํด์ผ ํ๋ค. ์ฃผ๋ชฉํ ์ ์ P2 ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ์ ๋, ํ์ฌ ๋จ์ burst time ์ค ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค๊ฐ P2์ด๋ฏ๋ก P1์ ์ํํ๋ ๊ฒ์ ๋ฉ์ถ๊ณ P2๊ฐ ์ํ์ ์์ํ๋ค.
- Average Waiting Time(AWT) = ์ด๋ค.
Preemptive SJF๋ ์์ ์์ ์ดํด๋ณด์๋ฏ์ด ํ์ฌ ๋จ์์๋ ์๊ฐ ์ค ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค๋ฅผ ์ ํํ๋ฏ๋ก Shortest-Remaining-Time-First(์ต์์์ฌ์๊ฐ ์ฐ์ ) ์ด๋ผ ๋ถ๋ฆฌ๊ธฐ๋ ํ๋ค.
SJF์ ํน์ง ์ ๋ฆฌ
- AWT๊ฐ ๊ฐ์ฅ ์งง๋ค.
- ํ๋ก์ธ์ค์ ์คํ ์๊ฐ์ ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋นํ์ค์ ์ด๋ค. ์ด๋ฅผ ๊ฐ๋ฅ์ผ ํ๊ธฐ ์ฌํด์๋ ์์ธก์ด ํ์ํ๋ค.
- Preemptive & non-preemptive ๋๋ค ๊ฐ๋ฅํ๋ค.
- ์ด ์ค Preemptive SJF๋ Shortest-Remaining-Time-First(์ต์์์ฌ์๊ฐ ์ฐ์ )์ด๋ผ ๋ถ๋ฆฐ๋ค.
3.3 Priority
Priority ์ค์ผ์ค๋ง์ ๋ง๊ทธ๋๋ก ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์ ํ๋๋ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ด์์ฒด์ ์์ ์ผ๋ฐ์ ์ผ๋ก ์ฐ์ ์์๋ ์ ์๊ฐ์ผ๋ก ๋ํ๋ด๋ฉฐ, ์์ ๊ฐ์ด ์ฐ์ ์์๊ฐ ๋๋ค.(Unix/Linux ๊ธฐ์ค)๋ ์ฃผ๋ฉฐ ํ์ฅ์ค ์ ์ค์ ์ฌ๋ ํ์
Process | Burst Time(msec) | Priority |
---|---|---|
P1 | 10 | 3 |
P2 | 1 | 1 |
P3 | 2 | 4 |
P4 | 1 | 5 |
P5 | 5 | 2 |
ํ์์ ์ฐ์ ์์ ๊ฐ์ด ๊ฐ์ฅ ๋ฎ์ ์์๋๋ก ์ํํ ๋ชจ์ต์ ๊ฐํธ ์ฐจํธ๋ก ๋ํ๋ด์๋ค.
- Average Waiting Time(AWT) = ์ด๋ค.
์ฐ์ ์์๋ฅผ ์ ํ๋ ๋ฐฉ๋ฒ
์ฐ์ ์์๋ฅผ ์ ํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ๋ด๋ถ์ ์ธ ์์์ ์ธ๋ถ์ ์ธ ์์ ๋ ๊ฐ์ง๋ก ๋๋๋ค.
- Internal
- time limit, memory requirement, I/O to CPU burst(I/O์์ ์ ๊ธธ๊ณ , CPU ์์ ์ ์งง์ ํ๋ก์ธ์ค ์ฐ์ ) ๋ฑ
- External
- amount of funds being paid, political factors ๋ฑ
Priority ์ค์ผ์ค๋ง ์ญ์ preemprive ์ non-preemptive ๋ ๋ฐฉ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค.
ํ๊ณ
Priority ์ค์ผ์ค๋ง์ ๋ฌธ์ ์ ์ **Starvation(๊ธฐ์)**์ด ์๋ค. ๋ชป ์ธ๋ ๋์ ํ์ ๋ชป์ธ ใ
ใ
Starvation์ ๋ง ๊ทธ๋๋ก CPU์ ์ ์ ๋ฅผ ์ค๋ซ๋์ ํ์ง ๋ชปํ๋ ํ์์ ๋งํ๋ค. Priority ์ค์ผ์ค๋ง ๋ฐฉ์์์ ์ฐ์ ์์๊ฐ ๋งค์ฐ ๋ฎ์ ํ๋ก์ธ์ค๊ฐ ready queue์์ ๋๊ธฐํ๊ณ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์ด ํ๋ก์ธ์ค๋ ์๋ฌด๋ฆฌ ์ค๋ ๊ธฐ๋ค๋ ค๋ CPU๋ฅผ ์ ์ ํ์ง ๋ชปํ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ํฌ๋ค. ์ค์ ์ปดํจํฐ ํ๊ฒฝ์์๋ ์๋ก์ด ํ๋ก์ธ์ค๊ฐ ์์ฃผ ready queue์ ๋ค์ด์จ๋ค. ์ด๋ฌํ ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ ์ฐ์ ์์๊ฐ ๋์ ์ํ๋ผ๋ฉด ์ด๋ฏธ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ ํ์ผ์์ด ๊ธฐ๋ค๋ฆฌ๊ณ ๋ง ์๋ ์ํ๋ก ๋จ์์์ ์ ์๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
์ด๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ aging์ด ์๋ค. ์ด ๋ฐฉ์์ ready queue์์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ์ฐ์ ์์๋ฅผ ์ผ์ ๋ ๋์ฌ์ฃผ๋ ๊ฒ์ด๋ค. ๋ณต์ง ๊ทธ๋ฌ๋ฉด ์ฐ์ ์์๊ฐ ๋งค์ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ผ ํ๋๋ผ๋, ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ๊ธธ์ด์ง์๋ก ์ฐ์ ์์๋ ๊ณ์ ๋์์ง๋ฏ๋ก ์ํ๋ ๊ฐ๋ฅ์ฑ์ด ์ปค์ง๋ค.
Priority์ ํน์ง ์ ๋ฆฌ
- ์ฐ์ ์์๊ฐ ๋์ ๋ ์ ๋ถํฐ ์ฒ๋ฆฌ
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ์ ์ฒ๋ฆฌ ๋ชป๋ฐ๋ ๋ ์์ด ์๊ธด๋ค. (Starvation)
- ์ด๋ฅผ ๋ฐฉ์ง ํ๊ธฐ ์ํด Ready ์ํ์์ ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ์ฐ์ ์์๋ฅผ ๋์ฌ์ค๋ค. (aging)
3.4 Round-Robin(RR)
Round-Robin์ ์ ๋ชจ์์ผ๋ก ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ๋์๊ฐ๋ฉฐ ์ค์ผ์ค๋งํ๋ ๊ฒ์ ๋งํ๋ค. ์ด๋ ์๋ถํ ์์คํ ์์ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค. ์ผ์ ์๊ฐ์ ์ ํ์ฌ ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ด ์๊ฐ๋์ ์ํํ๊ณ ๋ค์ ๋๊ธฐ ์ํ๋ก ๋์๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ ํ๋ก์ธ์ค๊ฐ ์ญ์ ๊ฐ์ ์๊ฐ๋์ ์ํํ ํ ๋๊ธฐํ๋ค. ์ด๋ฌํ ์์ ์ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ๋์๊ฐ๋ฉด์ ํ๋ฉฐ, ๋ง์ง๋ง ํ๋ก์ธ์ค๊ฐ ๋๋๋ฉด ๋ค์ ์ฒ์ ํ๋ก์ธ์ค๋ก ๋์์์ ๋ฐ๋ณตํ๋ค.
์์์ ๋งํ ์ผ์ ์๊ฐ์ Time Quantum(Time Slice)์ด๋ผ ๋ถ๋ฅธ๋ค. Time Quantum์ ์ผ๋ฐ์ ์ผ๋ก 10 ~ 100msec ์ฌ์ด์ ๋ฒ์๋ฅผ ๊ฐ๋๋ค. Round-Robin์ ๊ธฐ๋ณธ์ ์ผ๋ก preemptive ์ด๋ค. ํ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๊ธฐ ์ ์ time quantum์ด ๋๋๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก CPU๋ฅผ ๋๊ฒจ์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
Process | Burst Time(msec) |
---|---|
P1 | 24 |
P2 | 3 |
P3 | 3 |
time Quantum = 4msec{:.center-text}
Round-Robin ๋ฐฉ์์์๋ time quantum์ด ๋๋๋ฉด CPU๋ ํ์ฌ ํ๋ก์ธ์ค๋ฅผ ๋๊ธฐ์ํ๋ก ๋ณด๋ด๊ณ ๋ค์ ํ๋ก์ธ์ค๋ฅผ ์ํํ๋ค. ์์ ์์ P1์ด 0msec์ ์ํ์ ์์ํ์ฌ ์ข ๋ฃ๋๊ธฐ ์ ์ time quantum ์๊ฐ์ด ๋๋์ฌ P2๊ฐ ์ํ๋๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ P2, P3๋ time quantum์ด ๋๋๊ธฐ์ ์ ์ํ์ด ๋๋ฌ๊ณ , ๋ง์ง๋ง ๋จ์ P1์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์์ผ๋ฏ๋ก time quantum์ด ๋๋๋๋ผ๋ ์ข ๋ฃ๋ ๋๊น์ง ๊ณ์ํด์ ์ํํ๋ ๋ชจ์ต์ด๋ค.
- Average Waiting Time(AWT) = ์ด๋ค.
ํ๊ณ
RR๋ฐฉ์์ time quantum ํฌ๊ธฐ์ ๋ฐ๋ผ AWT์ ๊ฐ์ ์ค์ผ์ค๋ง ์ฒ๋๊ฐ ๋ฐ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก RR ๋ฐฉ์์ time quantum์ ๋งค์ฐ ์์กด์ ์ธ ๊ฒ์ ์ ์ ์๋ค.
๋ง์ฝ time quantum ํฌ๊ธฐ๊ฐ ๋ฌดํ์ ๊ฐ๊น๊ฒ ์ค์ ํ๋ค๋ฉด FCFS์ ๋์ผํ๊ฒ ๋์ํ๋ค. ๋ฐ๋๋ก time quantum ํฌ๊ธฐ๋ฅผ 0์ ๊ฐ๊น๊ฒ ์ค์ ํ๋ฉด switching overhead๊ฐ ๋งค์ฐ ์ฆ๊ฐํ์ฌ ๋นํจ์จ์ ์ด๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก time quantum ์ ์ ๋นํ ํฌ๊ธฐ๋ก ์ค์ ํด์ฃผ์ด์ผ ํ๋๋ฐ, ์ผ๋ฐ์ ์ผ๋ก ์์์ ๋งํ๋ฏ์ด 10 ~ 100msec ์ผ๋ก ์ ํ๋ค.
RR์ ํน์ง ์ ๋ฆฌ
- ๋ชจ๋ ํ๋ก์ธ์ค์ ์ผ์ ํ ์๊ฐ(time quantum)์ ์ฃผ์ด์ ๊ด๋ฆฌํ๋ค.
- ๋ฐ๋ผ์ time quantum์ ๋งค์ฐ ์์กด์ ์ด๋ค. ์ ๋นํ ๊ฐ(10 ~ 100msec)์ด ์ค์ํ๋ค.
- ~ FCFS
- ~ switching overhead๊ฐ ๋งค์ฐ ์ฆ๊ฐ
3.5 Multilevel Queue
Multilevel Queue๋ฅผ ์ดํด๋ณด๊ธฐ ์ ์ ํ๋ก์ธ์ค ๊ทธ๋ฃน์ ๋ํด ์ดํด๋ณด์. ํ๋ก์ธ์ค๋ ๊ธฐ์ค์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ทธ๋ฃน์ผ๋ก ๋๋ ์ ์๋ค.
- System processes
- ์ด์์ฒด์ ์ปค๋ ์์ค์ ํ๋ก์ธ์ค
- Interactive processes
- ์ ์ ์์ค์ ๋ํํ ํ๋ก์ธ์ค (๊ฒ์)
- Interactive editing processes
- Word Processor
- Batch processes
- ๋ํํ ํ๋ก์ธ์ค์ ๋ฐ๋์ธ ๊ฒ์ผ๋ก ์ผ์ ๋์ ํ ๋ฒ์ ์ฒ๋ฆฌํ๋ ํ๋ก์ธ์ค(Ex, ์ปดํ์ผ๋ฌ)
- Student processes
์์ ๊ฐ์ด ์ฌ๋ฌ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ํ๋ก์ธ์ค ๊ทธ๋ฃน์ ๋๋ ์ ์๋๋ฐ ์ด๋ฅผ ํ๋์ ํ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ผ๊ณ ํ๋จํ์๋ค. ๊ทธ๋์ ๊ฐ ๊ทธ๋ฃน์ ๋ฐ๋ผ ํ๋ฅผ ๋์ด ์ฌ๋ฌ ๊ฐ์ ํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด Muitilevel Queue ๋ฐฉ์์ด๋ค.
์ ๊ทธ๋ฆผ์ ๊ฐ ๊ทธ๋ฃน์ ๋ฐ๋ผ ํ๋ฅผ ๋๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ ํ๋ง๋ค ๋ค๋ฅธ ๊ท์น์ ์ง์ ํ ์๋ ์๋ค.
๋จผ์ , ํ๋ง๋ค ์ฐ์ ์์๋ฅผ ์ง์ ํด์ค ์ ์๋ค. ํ๋ก์ธ์ค ๊ทธ๋ฃน์ ๋ณด๋ฉด System process๋ ์ปค๋ ์์ค์์ ์ค์ํ ์์ ์ด๋ฏ๋ก ์ฐ์ ์์๊ฐ ๋์ ๊ทธ๋ฃน์ด๋ผ ๋ณผ ์ ์๋ค. ์ ๊ทธ๋ฆผ์์ System process, Interactive process, Batch process ์์ผ๋ก ์ฐ์ ์์๊ฐ ๋์ ์์์ด๋ค. Batch ํ๋ก์ธ์ค๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ด ๋งค์ฐ ์ ์ผ๋ฏ๋ก ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋ฎ๋ค๊ณ ๋ณผ ์ ์๋ค.
์์ ๋ฐฉ์ ์ด์ธ์๋ ํ์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ธฐ์ค์ ๋ ์ ์๋ค. ํ๋ง๋ค CPU ์๊ฐ์ ๋ค๋ฅด๊ฒ ์ค ์๋ ์๊ณ , ํ๋ง๋ค ๋ค๋ฅธ ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ฌ์ฉํ ์๋ ์๋ค.
Multilevel Queue์ ํน์ง
- ํ๋ก์ธ์ค๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋๋๋ค.
- ๊ฐ๊ฐ์ Queue์ ์ ๋์ ์ฐ์ ์์๊ฐ ์กด์ฌํ๋ค.
- CPU time์ Queue์ ์ฐจ๋ฑ ๋ฐฐ๋ถํ๋ค.
- ๊ฐ Queue๋ ๋ ๋ฆฝ๋ scheduling ์ ์ฑ ์ ๊ฐ๋๋ค.
3.6 Multilevel Feedback Queue
Multilevel Feedback Queue๋ Multilevel Queue์ ๊ฐ์ด ์ฌ๋ฌ ๊ฐ์ ํ๋ฅผ ์ฌ์ฉํ๋ค๋ ์ ์์ ์ ์ฌํ๋ค.
์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๋จผ์ ๋ชจ๋ ํ๋ก์ธ์ค๋ ๊ฐ์ฅ ์์ ํ์์ CPU์ ์ ์ ๋ฅผ ๋๊ธฐํ๋ค. ์ด ์ํ๋ก ์งํํ๋ค๊ฐ ์ด ํ์์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ฉด ์๋์ ํ๋ก ํ๋ก์ธ์ค๋ฅผ ์ฎ๊ธด๋ค. ์ด์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋๊ธฐ ์๊ฐ์ ์กฐ์ ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ Multilevel Feedback Queue์์๋ ๊ฐ ํ๋ง๋ค ๋ค๋ฅธ ์ค์ผ์ค๋ง, ๋ค๋ฅธ ์ฐ์ ์์ ๋ฑ์ ์ฌ์ฉํ ์ ์๋ค.
๋ง์ฝ ์ฐ์ ์์์์ผ๋ก ํ๋ฅผ ์ฌ์ฉํ๋ ์ํฉ์์ ์ฐ์ ์์๊ฐ ๋ฎ์ ์๋์ ํ์ ์๋ ํ๋ก์ธ์ค์์ starvation ์ํ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฅผ ์ฐ์ ์์๊ฐ ๋์ ์์ ํ๋ก ์ฎ๊ธธ ์๋ ์๋ค.
๋๋ถ๋ถ์ ์์ฉ ์ด์์ฒด์ ๋ ์ฌ๋ฌ ๊ฐ์ ํ๋ฅผ ์ฌ์ฉํ๊ณ ๊ฐ ํ๋ง๋ค ๋ค๋ฅธ ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ฌ์ฉํ๋ค. ํ๋ก์ธ์ค์ ์ฑ๊ฒฉ์ ๋ง๋ ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ์ต๋ํ ํจ์จ์ ๋์ผ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ํํ๋ค.
Multilevel Feedback Queue์ ํน์ง
- ์ฌ๋ฌ๊ฐ์ Queue๋ฅผ ๊ฐ์ง๋ค.
- ๋ค๋ฅธ Queue๋ก ์ ์ง์ ์ด๋ํ๋ค.
- ๋ชจ๋ ํ๋ก์ธ์ค๋ ๊ฐ์์ ํ๋์ Queue๋ก ์ง์ ํ๋ค.
- ๋๋ฌด ๋ง์ CPU time ์ฌ์ฉ์ ๋ค๋ฅธ Queue๋ก ์ด๋ํ๋ค.
- ๊ธฐ์ ์ํ ์ฐ๋ ค์ ์ฐ์ ์์ ๋์ Queue๋ก ์ด๋ํ๋ค.
Reference
- KOCW ์ํฌ์ฌ ๊ต์๋ - ์ด์์ฒด์
- ์ํฌ์ฌ ๊ต์๋ ๋ธ๋ก๊ทธ(์ํ ๊ธฐ์ถ ๋ฌธ์ )
- codemcd ๋์ ์ ๋ฆฌ๊ธ
- Operating System Concepts, 9th Edition - Abraham Silberschatz