๐ป CS/์ด์์ฒด์
[์ด์์ฒด์ ] 5. CPU Scheduling
nitronium102
2022. 11. 27. 23:01
ํ๋ก์ธ์ค์ ํน์ฑ ๋ถ๋ฅ
- CPU-bound process
- CPU๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ ํ๋ก์ธ์ค(high CPU)
- ๊ณ์ฐ ์์ฃผ์ job
- few very long CPU burst(CPU-intensive)
- I/O-bound process
- CPU๋ฅผ ์ก๊ณ ๊ณ์ฐํ๋ ์๊ฐ๋ณด๋ค I/O์ ๋ง์ ์๊ฐ์ด ํ์ํ process(low CPU)
- interactive program
- many short CPU bursts(์ค๊ฐ์ I/O๊ฐ ๋ผ์ด๋ฆ)
CPU-burst Time์ ๋ถํฌ
- ์ฌ๋ฌ ์ข ๋ฅ์ job/process์ด ์์ฌ์๊ธฐ ๋๋ฌธ์ CPU ์ค์ผ์ค๋ง์ด ํ์ํ๋ค
- interactive job(I/O bound job)์๊ฒ ์ ์ ํ response๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ ๊ณต
- CPU์ I/O ์ฅ์น ๋ฑ ์์คํ ์์์ ๊ณจ๊ณ ๋ฃจ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ
CPU Scheduler & Dispatcher
1) CPU scheduler (OS ๋ด๋ถ ์ฝ๋)
ready ์ํ์ ํ๋ก์ธ์ค ์ค์์ ์ด๋ฒ์ CPU๋ฅผ ์ค ํ๋ก์ธ์ค๋ฅผ ๊ณ ๋ฅธ๋ค
2) Dispatcher (OS ๋ด๋ถ ์ฝ๋)
context switch - CPU์ ์ ์ด๊ถ์ CPU scheduler์ ์ํด ์ ํ๋ ํ๋ก์ธ์ค์๊ฒ ๋๊ธด๋ค
CPU Scheduling์ด ํ์ํ ๊ฒฝ์ฐ
- Running -> Blocked (I/O ์์ฒญ ์์คํ ์ฝ) : nonpreemtive
- Running -> Ready (ํ ๋น ์๊ฐ ๋ง๋ฃ๋ก timer interrupt) : preemtive
- Blocked -> Ready (I/O ์๋ฃ ํ ์ธํฐ๋ฝํธ) : preemtive
- Terminate : nonpreemtive
- nonpreemtive : ์์ง ๋ฐ๋ฉ - ์์คํ ์ ๊ฐ์ง๊ณ ์์ด๋ ์ฌ์ฉํ์ง ์์
- preemtive : ๊ฐ์ ๋ก ๋นผ์์