CPU Scheduler & Dispatcher
Scheduling Algorithm
CPU ๋ฒ์คํธ๋ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด CPU๋ฅผ ์ง์ ๊ฐ์ง๊ณ ๋น ๋ฅธ ๋ช ๋ น์ ์ํํ๋ ๋จ๊ณ์ด๋ค. ์ด ๋จ๊ณ์์ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ CPU ๋ด์์ ์ผ์ด๋๋ ๋ช ๋ น (ex. Add)์ด๋ ๋ฉ๋ชจ๋ฆฌ(ex. Store, Load)์ ์ ๊ทผํ๋ ์ผ๋ฐ ๋ช ๋ น์ ์ฌ์ฉํ ์ ์๋ค.
I/O ๋ฒ์คํธ๋ ์ปค๋์ ์ํด ์ ์ถ๋ ฅ ์์ ์ ์งํํ๋ ๋น๊ต์ ๋๋ฆฐ ๋จ๊ณ์ด๋ค. ์ด ๋จ๊ณ์์๋ ๋ชจ๋ ์ ์ถ๋ ฅ ๋ช ๋ น์ ํน๊ถ ๋ช ๋ น์ผ๋ก ๊ท์ ํ์ฌ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ง์ ์ํํ ์ ์๋๋ก ํ๊ณ , ๋์ ์ด์์ฒด์ ๋ฅผ ํตํด ์๋น์ค๋ฅผ ๋ํํ๋๋ก ํ๋ค.
ex) 1. ํค๋ณด๋๋ก๋ถํฐ ์ ๋ ฅ์ ๋ฐ๋ ์์ 2. ์ปดํจํฐ์์ ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ๋ ์์ 3. ๋์คํฌ์์ ํ์ผ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ์์ ๋ฑ
์ด์ฒ๋ผ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ํ๋๋ ๊ณผ์ ์ CPU ์์ ๊ณผ I/O ์์ ์ ๋ฐ๋ณต์ผ๋ก ๊ตฌ์ฑ๋๋ค.
๊ฐ ํ๋ก๊ทธ๋จ๋ง๋ค CPU ๋ฒ์คํธ์ I/O ๋ฒ์คํธ๊ฐ ์ฐจ์งํ๋ ๋น์จ์ด ๊ท ์ผํ์ง ์๋ค. ์ด๋ค ํ๋ก์ธ์ค๋ I/O ๋ฒ์คํธ๊ฐ ๋น๋ฒํด CPU ๋ฒ์คํธ๊ฐ ๋งค์ฐ ์งง์ ๋ฐ๋ฉด, ์ด๋ค ํ๋ก์ธ์ค๋ I/O๋ฅผ ๊ฑฐ์ ํ์ง ์์ CPU ๋ฒ์คํธ๊ฐ ๋งค์ฐ ๊ธธ๊ฒ ๋ํ๋๋ค. ์ด์ ๊ฐ์ ๊ธฐ์ค์์ ํ๋ก์ธ์ค๋ฅผ ํฌ๊ฒ I/O ๋ฐ์ด๋ ํ๋ก์ธ์ค์ CPU ๋ฐ์ด๋ ํ๋ก์ธ์ค๋ก ๋๋ ์ ์๋ค.
I/O ์์ฒญ์ด ๋น๋ฒํด CPU ๋ฒ์คํธ๊ฐ ์งง๊ฒ ๋ํ๋๋ ํ๋ก์ธ์ค๋ฅผ ๋งํ๋ค. ์ฃผ๋ก ์ฌ์ฉ์๋ก๋ถํฐ ์ธํฐ๋์ ์ ๊ณ์ ๋ฐ์๊ฐ๋ฉฐ ํ๋ก๊ทธ๋จ์ ์ํํ๋ ๋ํํ ํ๋ก๊ทธ๋จ์ด ํด๋น๋๋ค.
I/O ์์ ์ ๊ฑฐ์ ์ํํ์ง ์์ CPU ๋ฒ์คํธ๊ฐ ๊ธธ๊ฒ ๋ํ๋๋ ํ๋ก์ธ์ค๋ฅผ ๋งํ๋ค. ์ฃผ๋ก ํ๋ก์ธ์ค ์ํ์ ์๋น ์๊ฐ์ ์ ์ถ๋ ฅ ์์ ์์ด CPU ์์ ์ ์๋ชจํ๋ ๊ณ์ฐ ์์ฃผ์ ํ๋ก๊ทธ๋จ์ด ํด๋น๋๋ค.
ํ๋ก๊ทธ๋จ์ด ์ํ๋๋ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด I/O ๋ฐ์ด๋ ํ๋ก์ธ์ค๋ ์งง์ CPU ๋ฒ์คํธ๋ฅผ ๋ง์ด ๊ฐ์ง๊ณ ์๋ ๋ฐ๋ฉด, CPU ๋ฐ์ด๋ ํ๋ก์ธ์ค๋ ์์์ ๊ธด CPU ๋ฒ์คํธ๋ก ๊ตฌ์ฑ๋๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
์ปดํจํฐ ์์คํ ๋ด์์ ์ํ๋๋ ํ๋ก์ธ์ค์ CPU ๋ฒ์คํธ๋ฅผ ๋ถ์ํด๋ณด๋ฉด ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์งง์ CPU ๋ฒ์คํธ๋ฅผ ๊ฐ์ง๋ฉฐ, ๊ทนํ ์ผ๋ถ๋ถ๋ง ๊ธด CPU ๋ฒ์คํธ๋ฅผ ๊ฐ๋๋ค. ์ด๋ ๋ค์ ๋งํด์ CPU๋ฅผ ํ ๋ฒ์ ์ค๋ ์ฌ์ฉํ๊ธฐ๋ณด๋ค๋ ์ ๊น ์ฌ์ฉํ๊ณ I/O ์์ ์ ์ํํ๋ ํ๋ก์ธ์ค๊ฐ ๋ง๋ค๋ ๊ฒ์ด๋ค. ์ฆ ๋ํํ ์์ ์ ๋ง์ด ์ํํด์ผ ํ๋๋ฐ, ์ฌ์ฉ์์ ๋ํ ๋น ๋ฅธ ์๋ต์ ์ํด์๋ ํด๋น ํ๋ก์ธ์ค์๊ฒ ์ฐ์ ์ ์ผ๋ก CPU๋ฅผ ํ ๋นํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค. ๋ง์ฝ CPU ๋ฐ์ด๋ ํ๋ก์ธ์ค์๊ฒ ๋จผ์ CPU๋ฅผ ํ ๋นํ๋ค๋ฉด ๊ทธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ๋ค ์ฌ์ฉํ ๋๊น์ง ์๋ง์ I/O ๋ฐ์ด๋ ํ๋ก์ธ์ค๋ ๊ธฐ๋ค๋ ค์ผํ ๊ฒ์ด๋ค. ์ด๋ฌํ ์ด์ ๋ก CPU ์ค์ผ์ค๋ง์ด ํ์ํด์ก๋ค.
- CPU๋ฅผ ์ฌ์ฉํ๋ ํจํด์ด ์์ดํ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋์ผํ ์์คํ ๋ด๋ถ์์ ํจ๊ป ์คํ๋๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ธ CPU ์ฌ์ฉ์ ์ํด ํ์ํ๋ค.
CPU ์ค์ผ์ค๋ฌ๋ ์ค๋น ์ํ์ ์๋ ํ๋ก์ธ์ค๋ค ์ค ์ด๋ ํ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ํ ๋นํ ์ง ๊ฒฐ์ ํ๋ ์ด์์ฒด์ ์ ์ฝ๋์ด๋ค.
- ๋น์ ์ ํ(nonpreemptive): CPU๋ฅผ ํ๋ํ ํ๋ก์ธ์ค๊ฐ ์ค์ค๋ก CPU๋ฅผ ๋ฐ๋ฉํ๊ธฐ ์ ๊น์ง๋ CPU๋ฅผ ๋นผ์๊ธฐ์ง ์๋ ๋ฐฉ๋ฒ
- ์ ์ ํ(preemptive): ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ๋๋ผ๋ ๊ฐ์ ๋ก ๋นผ์์ ์ ์๋ ์ค์ผ์ค๋ง ๋ฐฉ๋ฒ
CPU ์ค์ผ์ค๋ฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ
- Running โ Blocked (ex. I/O ์์ฒญํ๋ ์์คํ ์ฝ)
- Running โ Ready (ex. ํ ๋น ์๊ฐ ๋ง๋ฃ๋ก ์ธํ ํ์ด๋จธ ์ธํฐ๋ฝํธ)
- Blocked โ Ready (ex. I/O ์๋ฃ ํ ์ธํฐ๋ฝํธ)
- Terminated
1, 4๋ฒ์งธ์ ์ค์ผ์ค๋ง์ ๊ฐ์ ๋ก ๋นผ์์ง ์๊ณ ์์ง ๋ฐ๋ฉํ๋ nonpreemptive ๋ฐฉ์์ด๊ณ , ๊ทธ ์ธ์ ์ค์ผ์ค๋ง์ CPU๋ฅผ ๊ฐ์ ๋ก ๋นผ์๋ preemptive ๋ฐฉ์์ด๋ค. 3๋ฒ์งธ ์ค์ผ์ค๋ง์ I/O ์์
์ด ์๋ฃ๋ ํ๋ก์ธ์ค๊ฐ ์ธํฐ๋ฝํธ ๋นํ ํ๋ก์ธ์ค๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์, ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ํ ์ง์ ์ ์ํ๋๋ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ๋ค์ ํ ๋นํ๋ ๊ฒ์ด ์๋๋ผ ๋ฌธ๋งฅ๊ตํ์ ํตํด I/O๊ฐ ์๋ฃ๋ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ํ ๋นํ๋ ๊ฒฝ์ฐ๊ฐ ํด๋นํ๋ค.
-
์๋กญ๊ฒ ์ ํ๋ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น๋ฐ๊ณ ์์ ์ ์ํํ ์ ์๋๋ก ํ๊ฒฝ์ค์ ์ ํ๋ ์ด์์ฒด์ ์ ์ฝ๋
-
CPU๋ฅผ ๋๊ตฌํํ ๋๊ตฌํํ ์ค ์ง ๊ฒฐ์ ํ์ผ๋ฉด ํด๋น ํ๋ก์ธ์ค์๊ฒ ๋๊ฒจ์ผ ํ๋๋ฐ, ๋์คํจ์ฒ๊ฐ ์ด ์ญํ ์ ์ํํ๋ค. ์ด ๊ณผ์ ์ด Context Switch์ ํด๋นํ๋ค.
-
๋์คํจ์น ์ง์ฐ์๊ฐ(dispatch latency): ๋์คํจ์ฒ๊ฐ ํ๋์ ํ๋ก์ธ์ค๋ฅผ ์ ์ง์ํค๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ์ ๋ฌํ๊ธฐ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ. ๋์คํจ์น ์ง์ฐ์๊ฐ์ ๋ฌธ๋งฅ๊ตํ ์ค๋ฒํค๋์ ํด๋น๋๋ค.
์์คํ ์ ์ฅ
- CPU utilization (์ด์ฉ๋ฅ )
- ์ ์ฒด ์๊ฐ ์ค์์ CPU๊ฐ ์ผ์ ํ ์๊ฐ์ ๋น์จ
- keep the CPU as busy as possible
- Throughput (์ฒ๋ฆฌ๋)
- ์ฃผ์ด์ง ์๊ฐ๋์ ์ค๋น ํ์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ํ๋ก์ธ์ค ์ค ๋ช ๊ฐ๋ฅผ ๋๋ง์ณค๋์ง ๋ํ๋ธ๋ค.
- ์ฆ CPU์ ์๋น์ค๋ฅผ ์ํ๋ ํ๋ก์ธ์ค ์ค ๋ช ๊ฐ๊ฐ ์ํ๋ ๋งํผ์ CPU๋ฅผ ์ฌ์ฉํ๊ณ ์ด๋ฒ CPU ๋ฒ์คํธ๋ฅผ ๋๋ด์ด ์ค๋น ํ๋ฅผ ๋ ๋ฌ์ง ์ธก์ ํ ๊ฒ์ด๋ค.
- ๋ ๋ง์ ํ๋ก์ธ์ค๋ค์ด CPU ์์ ์ ์๋ฃํ๊ธฐ ์ํด์๋ CPU ๋ฒ์คํธ๊ฐ ์งง์ ํ๋ก์ธ์ค์๊ฒ ์ฐ์ ์ ์ผ๋ก CPU๋ฅผ ํ ๋นํ๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค.
- number of processes that complete their execution per time until
ํ๋ก์ธ์ค ์ ์ฅ
- Turnaround time (์์ ์๊ฐ, ๋ฐํ ์๊ฐ)
- ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์์ฒญํ ์์ ๋ถํฐ ์์ ์ด ์ํ๋ ๋งํผ CPU๋ฅผ ๋ค ์ฐ๊ณ CPU ๋ฒ์คํธ๊ฐ ๋๋ ๋๊น์ง ๊ฑธ๋ฆฐ ์๊ฐ์ ๋ปํ๋ค.
- (์ค๋น ํ์์ ๊ธฐ๋ค๋ฆฐ ์๊ฐ) + (์ค์ ๋ก CPU๋ฅผ ์ฌ์ฉํ ์๊ฐ)
- amount of time to execute a particular process
- Waiting time (๋๊ธฐ ์๊ฐ)
- CPU ๋ฒ์คํธ ๊ธฐ๊ฐ ์ค ํ๋ก์ธ์ค๊ฐ ์ค๋น ํ์์ CPU๋ฅผ ์ป๊ธฐ ์ํด ๊ธฐ๋ค๋ฆฐ ์๊ฐ์ ํฉ์ ๋ปํ๋ค.
- ์๋ถํ ์์คํ ์ ๊ฒฝ์ฐ, ํ ๋ฒ์ CPU ๋ฒ์คํธ ์ค์๋ ์ค๋น ํ์์ ๊ธฐ๋ค๋ฆฐ ์๊ฐ์ด ์ฌ๋ฌ ๋ฒ ๋ฐ์ํ ์ ์๋ค.
- ์ด๋ ๋๊ธฐ ์๊ฐ์ CPU ๋ฒ์คํธ๊ฐ ๋๋๊ธฐ๊น์ง ์ค๋น ํ์์ ๊ธฐ๋ค๋ฆฐ ์๊ฐ์ ํฉ์ ๋ปํ๊ฒ ๋๋ค.
- amount of time a process has been waiting in the ready queue
- Response time (์๋ต ์๊ฐ)
- ํ๋ก์ธ์ค๊ฐ ์ค๋น ํ์ ๋ค์ด์จ ํ ์ฒซ ๋ฒ์งธ CPU๋ฅผ ํ๋ํ๊ธฐ๊น์ง ๊ธฐ๋ค๋ฆฐ ์๊ฐ์ ๋ปํ๋ค.
- ์๋ต ์๊ฐ์ ๋ํํ ์์คํ ์ ์ ํฉํ ์ฑ๋ฅ ์ฒ๋๋ก์, ์ฌ์ฉ์ ์ ์ฅ์์ ๊ฐ์ฅ ์ค์ํ ์ฑ๋ฅ ์ฒ๋๋ผ๊ณ ํ ์ ์๋ค.
- ๋จผ์ ์จ ์์๋๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ์ (
nonpreemptive) = (๋น์ ์ ) - CPU๋ฅผ ์ค๋ ์ฐ๋ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์์ CPU๋ฅผ ํ ๋น ๋ฐ์ผ๋ฉด, ๋๋จธ์ง ํ๋ก์ธ์ค๋ค์ ์ ๋ถ ๊ธฐ๋ค๋ ค์ผํ๋ฏ๋ก ํจ์จ์ ์ด์ง ์์
- ์ ์ฌ์ง์ฒ๋ผ ์ด๋ค ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์คํ๋๋๋์ ๋ฐ๋ผ ์ ์ฒด ๋๊ธฐ ์๊ฐ์ ์๋นํ ์ํฅ์ ๋ฏธ์นจ
- 1๋ฒ
- ๋๊ธฐ ์๊ฐ: P1 = 0, P2 = 24, P3 = 27
- ํ๊ท ๋๊ธฐ ์๊ฐ: (0 + 24 + 27) / 3 = 17
- 2๋ฒ
- ๋๊ธฐ ์๊ฐ: P1 = 6, P2 = 0, P3 = 3
- ํ๊ท ๋๊ธฐ ์๊ฐ: (6 + 0 + 3) / 3 = 3
- 1๋ฒ
- ๊ธด ํ๋ก์ธ์ค ํ๋ ๋๋ฌธ์ ์งง์ ํ๋ก์ธ์ค ์ฌ๋ฌ ๊ฐ๊ฐ ๊ธฐ๋ค๋ฆฌ๋ ํ์์
Convoy effect๋ผ ๋ถ๋ฆ
- SJF๋ CPU ๋ฒ์คํธ๊ฐ ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค์๊ฒ ์ ์ผ ๋จผ์ CPU๋ฅผ ํ ๋นํ๋ ๋ฐฉ์
- ํ๊ท ๋๊ธฐ ์๊ฐ์ ๊ฐ์ฅ ์งง๊ฒ ํ๋ ์ต์ ์๊ณ ๋ฆฌ์ฆ
- ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ๊ตฌํ ๊ฐ๋ฅ
- nonpreemptive (๋น์ ์ ํ)
- ์ผ๋จ CPU๋ฅผ ์ก์ผ๋ฉด ๋ ์งง์ ํ๋ก์ธ์ค๊ฐ ๋ค์ด์๋ CPU ๋ฒ์คํธ๊ฐ ์๋ฃ๋ ๋๊น์ง CPU๋ฅผ ์ ์ ๋นํ์ง ์์.
- preemptive (์ ์ ํ)
- SRTF (Shortest-Remaining-Time-First)
- CPU๋ฅผ ์ก์๋ค ํ๋๋ผ๋ ๋ ์งง์ ํ๋ก์ธ์ค๊ฐ ๋ค์ด์ค๋ฉด CPU๋ฅผ ๋บด์๊น.
- nonpreemptive (๋น์ ์ ํ)
- ๋ฌธ์ ์
- Starvation (๊ธฐ์): ์งง์ ํ๋ก์ธ์ค๋ก ์ธํด ๊ธด ํ๋ก์ธ์ค๊ฐ ์์ํ CPU๋ฅผ ์ก์ง ๋ชปํ ์ ์์
- CPU ๋ฒ์คํธ ์๊ฐ์ ๋ฏธ๋ฆฌ ์ ์ ์์: ๊ณผ๊ฑฐ CPU ์ฌ์ฉ ์๊ฐ์ ํตํด ์ถ์ ๋ง ๊ฐ๋ฅ
๋น์ ์ ํ ๋ฐฉ์ ์์
์ ์ ํ ๋ฐฉ์ ์์
- ์ฐ์ ์์๊ฐ ์ ์ผ ๋์ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ํ ๋น
- ์ผ๋ฐ์ ์ผ๋ก ์ฐ์ ์์ ๊ฐ (priority number)๊ฐ ์์ ์๋ก ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ๋๋ค.
- ๋ ๊ฐ์ง ๋ฐฉ์
- nonpreemptive (๋น์ ์ ํ)
- ์ผ๋จ CPU๋ฅผ ์ก์ผ๋ฉด ๋ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค๊ฐ ๋ค์ด์๋ CPU ๋ฒ์คํธ๊ฐ ์๋ฃ๋ ๋๊น์ง CPU๋ฅผ ์ ์ ๋นํ์ง ์์.
- preemptive (์ ์ ํ)
- CPU๋ฅผ ์ก์๋ค ํ๋๋ผ๋ ๋ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค๊ฐ ๋ค์ด์ค๋ฉด CPU๋ฅผ ๋นผ์๊น
- nonpreemptive (๋น์ ์ ํ)
- SJF๋ ์ผ์ข ์ ์ฐ์ ์์ ์ค์ผ์ค๋ง์ด๋ผ๊ณ ๋ณผ ์ ์์ (์ฐ์ ์์ = ์์๋๋ ๋ค์ CPU ๋ฒ์คํธ ์๊ฐ)
- ๋ฌธ์ ์
- Starvation (๊ธฐ์): ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ ์์ํ CPU๋ฅผ ์ก์ง ๋ชปํ ์ ์์
- ํด๊ฒฐ ๋ฐฉ์
- Aging (๋ ธํ): ์๋ฌด๋ฆฌ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ผ ํ๋๋ผ๋ ์๊ฐ์ด ์ค๋ ์ง๋๋ฉด ์ฐ์ ์์๋ฅผ ๋์ฌ์ฃผ๋ ๊ธฐ๋ฒ.
- ๊ฐ ํ๋ก์ธ์ค๋ ๋์ผํ ํฌ๊ธฐ์ ํ ๋น ์๊ฐ์ธ
time quantum์ ๊ฐ์ง - ํ ๋น ์๊ฐ์ด ์ง๋๋ฉด ํ๋ก์ธ์ค๋ CPU๋ฅผ ๋นผ์๊ธฐ๊ณ Ready Queue ๋งจ ๋ค์ ๊ฐ์ ์ค์ ์๊ฒ ๋จ
- ์งง์ ์๋ต ์๊ฐ์ ๋ณด์ฅํจ
- ์กฐ๊ธ์ฉ CPU๋ฅผ ์คฌ๋ค ๋บ์๋ค๋ฅผ ๋ฐ๋ณตํ๊ธฐ ๋๋ฌธ์ CPU๋ฅผ ์ต์ด๋ก ์ป๊ธฐ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ์งง์
- n๊ฐ์ ํ๋ก์ธ์ค๊ฐ Ready Queue์ ์๊ณ , ํ ๋น ์๊ฐ์ด q time unit์ธ ๊ฒฝ์ฐ ์ด๋ค ํ๋ก์ธ์ค๋
(n - 1) * q time unit์ด์ ๊ธฐ๋ค๋ฆฌ์ง ์์ - CPU๋ฅผ ํ ๋น๋ฐ๊ธฐ ์ํด ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด CPU ๋ฒ์คํธ์ ๋น๋ก
- ์ฑ๋ฅ
- q๊ฐ ์ปค์ง ์๋ก FCFS์ ๊ฐ๊น์์ง
- q๊ฐ ์์ ์๋ก context switch ์ค๋ฒํค๋๊ฐ ์ฆ๊ฐํจ
- ์ผ๋ฐ์ ์ผ๋ก SJF๋ณด๋ค ํ๊ท turnaround time (์์ ์๊ฐ)์ด ๊ธธ์ง๋ง, ์๋ต ์๊ฐ์ ์งง์
- ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ job๊ณผ ์งง๊ฒ ๊ฑธ๋ฆฌ๋ job์ด ์์ฌ ์์ ๋๋ ํจ์จ์ ์ด์ง๋ง, ๋ชจ๋ ์๊ฐ์ด ๋์ผํ job๋ง ์์ ๋๋ ๋นํจ์จ์ ์ด๋ค.
์์ ๊ฐ์ด ๋ผ์ด๋ ๋ก๋น์ ์ผ์ ํ ๋น ์๊ฐ(20)์ ๊ณตํํ๊ฒ ํ ๋น ๋ฐ์์ CPU ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- Ready Queue๋ฅผ ์ฐ์ ์์์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ฐ๋ก ๋ถํ ํ๋ค.
- ์ด๋ค ์ค์ ์ ์๋ ํ๋ก์ธ์ค๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ค์ผ์ค๋งํ ๊ฒ์ธ๊ฐ, ํ๋ก์ธ์ค๋ฅผ ์ด๋ ์ค์ ์ธ์์ผํ ๊ฒ์ธ๊ฐ๋ฅผ ๊ฒฐ์ ํด์ผํ๋ค.
- ๋น ๋ฅธ ์๋ต์ ํ์๋ก ํ๋ ๋ํํ ์์
์ ์ ์ ํ์ ๋ฃ๋๋ค.
- ์ ์ ํ์์๋ ์ฃผ๋ก ๋ผ์ด๋ ๋ก๋น ์ค์ผ์ค๋ง ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค. (์๋ต์๊ฐ์ ์งง๊ฒ ํ๊ธฐ ์ํด)
- ๊ณ์ฐ ์์ฃผ์ ์์
์ ํ์ ํ์ ๋ฃ๋๋ค.
- ํ์ ํ์์๋ ์ฃผ๋ก FCFS ์ค์ผ์ค๋ง ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค. (์๋ต์๊ฐ์ด ํฐ ์๋ฏธ๋ฅผ ๊ฐ์ง์ง ์๊ธฐ ๋๋ฌธ์ ๋ฌธ๋งฅ๊ตํ ์ค๋ฒํค๋๋ฅผ ์ค์ด๋๋ก ํ๋ค.)
- ๋ฉํฐ ๋ ๋ฒจ ํ ์์ฒด์ ๋ํ ์ค์ผ์ค๋ง์ด ํ์ํ๋ค. (์ด๋ ํ์ ๋จผ์ CPU๋ฅผ ํ ๋นํ ๊ฒ์ธ๊ฐ)
- ๊ณ ์ ์ฐ์ ์์ ๋ฐฉ์ (Fixed Priority Scheduling)
- ์ ์ ํ์ ์๋ ํ๋ก์ธ์ค์๊ฒ ์ฐ์ ์ ์ผ๋ก CPU๊ฐ ํ ๋น๋๊ณ , ์ ์ ํ๊ฐ ๋น์ด ์๋ ๊ฒฝ์ฐ์๋ง ํ์ ํ์ ์๋ ํ๋ก์ธ์ค์๊ฒ CPU๊ฐ ํ ๋น๋๋ค.
- Starvation ๊ฐ๋ฅ์ฑ์ด ์กด์ฌํ๋ค.
- ํ์ ์ฌ๋ผ์ด์ค ๋ฐฉ์ (Time Slice)
- ๊ฐ ํ์ CPU time์ ์ ์ ํ ๋น์จ๋ก ํ ๋นํ๋ค.
- ex) 80%๋ ์ ์ ํ, 20%๋ ํ์ ํ
- ๊ณ ์ ์ฐ์ ์์ ๋ฐฉ์ (Fixed Priority Scheduling)
- ํ๋ก์ธ์ค๊ฐ ์ฌ๋ฌ ๊ฐ๋ก ๋ถํ ๋ Ready Queue ๋ด์์ ๋ค๋ฅธ ํ๋ก ์ด๋์ด ๊ฐ๋ฅํ๋ค.
- ๋ฉํฐ ๋ ๋ฒจ ํผ๋๋ฐฑ ํ๋ฅผ ์ด์ฉํ์ฌ aging ๊ธฐ๋ฒ์ผ๋ก ๊ตฌํํ ์ ์๋ค.
- aging ๊ธฐ๋ฒ์ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ์์ ์ค๋ ๊ธฐ๋ค๋ ธ์ผ๋ฉด ์ฐ์ ์์๊ฐ ๋์ ํ๋ก ์น๊ฒฉํ๋ ๋ฐฉ์์ด๋ค.
- ๋ฉํฐ ๋ ๋ฒจ ํผ๋๋ฐฑ ํ๋ฅผ ์ ์ํ๋ ์์
- ํ์ ์
- ๊ฐ ํ์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก์ธ์ค๋ฅผ ์์ ํ๋ก ์น๊ฒฉํ๋ ๊ธฐ์ค
- ํ๋ก์ธ์ค๋ฅผ ํ์ ํ๋ก ๊ฐ๋ฑํ๋ ๊ธฐ์ค
- ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ์ ๋ ๋ค์ด๊ฐ ํ๋ฅผ ๊ฒฐ์ ํ๋ ๊ธฐ์ค
- ๋ณดํต ์ฒ์ ๋ค์ด์ค๋ ํ๋ก์ธ์ค๋ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ํ์ CPU ํ ๋น ์๊ฐ์ ์งง๊ฒ ํ์ฌ ๋ฐฐ์นํ๋ค.
- ๋ง์ฝ ์ฃผ์ด์ง ํ ๋น ์๊ฐ ์์ ์์ ์ ์๋ฃํ์ง ๋ชปํ๋ฉด CPU ํ ๋น ์๊ฐ์ ์กฐ๊ธ ๋ ์ฃผ๋, ์ฐ์ ์์๊ฐ ํ ๋จ๊ณ ๋ฎ์ ํ๋ก ๊ฐ๋ฑํ๋ค.
- ์ด ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค๊ฐ ์ตํ์ ํ์ ๋ฐฐ์น๊ฐ ๋๋ค.
- CPU๊ฐ ์ฌ๋ฌ ๊ฐ์ธ ์์คํ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ ๊ธฐ๋ฒ์ด๋ค.
- ํ๋ก์ธ์ค๋ฅผ Ready Queue์ ํ ์ค๋ก ์ธ์์ ๊ฐ CPU๊ฐ ์์์ ๋ค์ ํ๋ก์ธ์ค๋ฅผ ๊บผ๋ด์ด ๊ฐ๋๋ก ํ๋ค.
- ์ผ๋ถ CPU์ ์์
์ด ํธ์ค๋๋ ํ์์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋ค.
- ๋์นญํ ๋ค์ค ์ฒ๋ฆฌ
- ๊ฐ CPU๊ฐ ๊ฐ์ ์์์ ์ค์ผ์ค๋ง์ ๊ฒฐ์
- ๋น๋์นญํ ๋ค์ค ์ฒ๋ฆฌ
- ํ๋์ CPU๊ฐ ๋ค๋ฅธ ๋ชจ๋ CPU์ ์ค์ผ์ค๋ง ๋ฐ ๋ฐ์ดํฐ ์ ๊ทผ์ ์ฑ ์์ง๊ณ ๋๋จธ์ง CPU๋ ๊ฑฐ๊ธฐ์ ๋ฐ๋ผ ์์ง์ด๋ ๋ฐฉ์
- ๋์นญํ ๋ค์ค ์ฒ๋ฆฌ
- ์ ํด์ง ์๊ฐ ์์ ๋ฐ๋์ ์คํ์ด ๋์ด์ผ ํ๋, ์ฆ deadline์ด ์๋ ํ๋ก์ธ์ค์ผ ๋ ์ฌ์ฉํ๋ ๊ธฐ๋ฒ์ด๋ค.
- ๊ฒฝ์ฑ ์ค์๊ฐ ์์คํ
(hard real-time system)
- ์ ํด์ง ์๊ฐ ์์ ๋ฐ๋์ ์์ ์ด ๋๋๋๋ก ์ค์ผ์ค๋งํด์ผ ํ๋ค.
- ์ฐ์ฑ ์ค์๊ฐ ์์คํ
(soft real-time system)
- ๋ฐ๋๋ผ์ธ์ด ์กด์ฌํ๊ธฐ๋ ํ์ง๋ง ์งํค์ง ๋ชปํ๋ค๊ณ ํด์ ์ํํ ์ํฉ์ด ์๊ธฐ์ง๋ ์๋๋ค.
- ์ผ๋ฐ ํ๋ก์ธ์ค์ ๋นํด ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ๋๋ก ๊ตฌํํ๋ค.
- Local Scheduling
- ์ ์ ๋ ๋ฒจ ์ค๋ ๋์ ๊ฒฝ์ฐ ์ด์์ฒด์ ๊ฐ ํด๋น ์ค๋ ๋์ ์กด์ฌ๋ฅผ ๋ชจ๋ฅธ๋ค.
- OS๊ฐ ์๋ ์ฌ์ฉ์ ํ๋ก์ธ์ค๊ฐ ์ง์ ์ด๋ ์ค๋ ๋ํํ CPU๋ฅผ ์ค ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ค.
- Global Scheduling
- ์ปค๋ ๋ ๋ฒจ ์ค๋ ๋์ ๊ฒฝ์ฐ ์ผ๋ฐ ํ๋ก์ธ์ค์ฒ๋ผ ์ปค๋์ ๋จ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์ด๋ค ์ค๋ ๋๋ฅผ ์ค์ผ์คํ ์ง ๊ฒฐ์ ํ๋ค.
- ์ฃผ๋ก ์ด๋ก ๊ฐ๋ค์ด ์ํํ๋ ๋ฐฉ์์ด๋ค.
- ํ๋ฅ ๋ถํฌ๋ฅผ ํตํด ํ๋ก์ธ์ค๋ค์ ๋์ฐฉ๋ฅ ๊ณผ CPU์ ์ฒ๋ฆฌ์จ์ ์ ๋ ฅ๊ฐ์ผ๋ก ์ฃผ๋ฉด, ๋ณต์กํ ์ํ์ ๊ณ์ฐ์ ํตํด ๊ฐ์ข ์ฑ๋ฅ ์งํ์ธ CPU์ ์ฒ๋ฆฌ๋, ํ๋ก์ธ์ค์ ํ๊ท ๋๊ธฐ ์๊ฐ ๋ฑ์ ๊ตฌํ๊ฒ ๋๋ค.
- ์ฃผ๋ก ๊ตฌํ๊ฐ๋ค์ด ์ํํ๋ ๋ฐฉ์์ด๋ค.
- ์ด์ ์ฒด์ ์ปค๋์ ์์ค ์ฝ๋ ์ค CPU ์ค์ผ์ค๋ง์ ์ํํ๋ ์ฝ๋๋ฅผ ์์ ํด์ ์ปค๋์ ์ปดํ์ผํ ํ ์์คํ ์ ์ค์นํ๋ค. ๊ทธ๋ฐ ๋ค์ ๋์ผํ ํ๋ก๊ทธ๋จ์ ์๋ ์ปค๋๊ณผ CPU ์ค์ผ์ค๋ฌ๋ฅผ ์์ ํ ์ปค๋์์ ์ํํด ๋ณด๊ณ ์คํ ์๊ฐ์ ์ธก์ ํ๋ค.
- ๊ฐ์์ผ๋ก CPU ์ค์ผ์ค๋ง ํ๋ก๊ทธ๋จ์ ์์ฑํ ํ ํ๋ก๊ทธ๋จ์ CPU ์์ฒญ์ ์ ๋ ฅ๊ฐ์ผ๋ก ๋ฃ์ด ์ด๋ ํ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋์ง ํ์ธํ๋ค.
- ์
๋ ฅ๊ฐ์ ๊ฐ์์ผ๋ก ์์ฑํ ์๋ ์๊ณ ์ค์ ์์คํ
์์์ CPU ์์ฒญ ๋ด์ญ์ ์ถ์ถํด ์ฌ์ฉํ ์๋ ์๋ค.
- ์ค์ ์์คํ ์์ ์ถ์ถํ ์ ๋ ฅ๊ฐ์ ํธ๋ ์ด์ค (trace)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ํธ๋ ์ด์ค๋ ๋ช ์ด์ ์ด๋ค ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ๊ณ , ๊ฐ๊ฐ CPU ๋ฒ์คํธ ์๊ฐ์ ์ผ๋ง๋ก ํ๋์ง์ ๋ํ ์ ๋ณด๋ฅผ ์๊ฐ ์์๋๋ก ์ ์ด ๋์ ํ์ผ์ ๋งํ๋ค.
๋ฐํจ๊ฒฝ๊ต์๋ ์ด์์ฒด์ ๊ฐ์
- ์ค์ผ์ค๋ง์ด ๋ฌด์์ธ์ง์ ๋ชฉ์ ์ ์ค๋ช ํด์ฃผ์ธ์.
- ๋น์ ์ ๋ฐฉ์๊ณผ ์ ์ ๋ฐฉ์์ ์ค๋ช ํด์ฃผ์ธ์.
- ์ค์ผ์ค๋ง ๊ธฐ๋ฒ ์ค FCFS์ ๋จ์ ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํด์ฃผ์ธ์.






