Day16 - jeremy0405/Codesquad_CS GitHub Wiki
Process Scheduling - RR
์ด์์ฒด์ ์คํฐ๋๋ฅผ ์งํํ๋ฉด์ ์ ๋ฆฌํ์๋ CPU Scheduling (= Process Scheduling)์ ๋ํด์ ๋ค์ ํ ๋ฒ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
์ Process Scheduling์ ํด์ผ ํ๋ ๊ฒ์ผ๊น?
์ฌ์ ์ง์
- ๋ชจ๋ ํ๋ก์ธ์ค๋
CPU โ I/O ์์ โ CPU โ I/O ์์ โ CPU โ ...
์์ ์ ๋ฐ๋ณตํ๋ค. - CPU ์ฌ์ฉํ ๋๋ CPU burst ๋ผ๊ณ ํ๊ณ CPU๋ฅผ ์ฌ์ฉํ ์๊ฐ์ CPU burst Time์ด๋ผ๊ณ ํ๋ค.
- I/O ์์ ์ ํ๋ ๊ฒฝ์ฐ์๋ I/O burst ๋ผ๊ณ ํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฌ๋๊ณผ ์ํธ์์ฉํ๋(I/O์์
์ด ๋ง์) ํ๋ก์ธ์ค๋ CPU๋ฅผ ๊ต์ฅํ ์งง๊ฒ ์ฌ์ฉํ๊ณ CPU๋ฅผ ์ฌ์ฉํ๋ ๋น๋๊ฐ ์ฆ๋ค. ์ด๋ฐ ํ๋ก์ธ์ค๋ค์ I/O bound job
์ด๋ผ๊ณ ํ๋ค.
ํ์ง๋ง ์ ์ ์ ์ผ๊ธฐ์์ด ๊ณ์ฐํ๋ ํ๋ก์ธ์ค ๋๋ ๋ฅ๋ฌ๋ ์ฐ์ฐ์ค์ธ ํ๋ก์ธ์ค์ ๊ฐ์ด ์ผ๋ถ ํ๋ก์ธ์ค๋ค์ I/O ์์
์์ด CPU๋ง์ ์ฃผ๊ตฌ์ฅ์ฐฝ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋ฐ ํ๋ก์ธ์ค๋ค์ CPU bound job
์ด๋ผ๊ณ ํ๋ค.
๋ณธ๋ก ์ผ๋ก ๋์์์ ์ Process Scheduling์ด ํ์ํ์ง ์์๋ณด์.
CPU๋ฅผ ์งง๊ฒ ์ฐ๋ I/O bound job
๊ณผ CPU๋ฅผ ๊ธธ๊ฒ ์ฐ๋ CPU bound job
์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด์ Process Scheduling์ ํ๋ ๊ฒ์ด๋ค. ์๋ก ์ฑ์ง์ด ๋ค๋ฅธ ์ ๋ค์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ค๋ ๊ฒ์ด๋ค.
๋ณดํต ์ฌ์ฉ์์ ์ํธ์์ฉ์ ํ๋ I/O bound job
์๊ฒ ๋ ์์ฃผ CPU๋ฅผ ํ ๋นํด์ฃผ๋๋ฐ ์ด๋ ์ฌ๋์ด I/O ์์
์ ์๋ฃํ์ ๋ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น๋ฐ์ง ๋ชปํ๊ณ ๊ณ์ ready ์ํ
๋ก ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ฉด ์ฌ์ฉ์๊ฐ ๋ต๋ตํจ์ ๋๋ผ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ฒฐ๊ตญ ์ฌ์ฉ์๋ ํ๋ก๊ทธ๋จ์ด ๋ฉ์ถฐ์ ๋ ์ ๊ฑธ๋ฆฐ ๊ฒ ์ฒ๋ผ ๋๋ ๊ฒ์ด๋ค. ์ด๋ฌํ ๊ฒ์ ๋ฐฉ์งํ๊ณ ์ Process Scheduling์ ํตํด ํจ์จ์ ์ผ๋ก ํ๋ก์ธ์ค๋ค์ ๊ด๋ฆฌํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด ์ด๋ป๊ฒ ํจ์จ์ ์ผ๋ก ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํด์ผ ํ ๊น?
Process Scheduling์ ์ํด์๋ 2๊ฐ์ง๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค.
- ์ด๋ค ํ๋ก์ธ์ค์๊ฒ ์ฐ์ ๊ถ์ ์ค ๊ฒ์ธ๊ฐ?
- ์ธ์ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ๋บ์ ๊ฒ์ธ๊ฐ?
ํ์ฌ ๋ฏธ์ ์ ๋์จ RR(Round Robin) ๋ฐฉ์์ผ๋ก Process Scheduling์ ํ๋ ๊ฒ์ผ๋ก ์ค๋ช ํด๋ณด๋ ค๊ณ ํ๋ค.
๋จผ์ RR์ ๊ฒฝ์ฐ ํ์ฌ ๋ง์ OS๊ฐ ์ฐ๊ณ ์๋ Process scheduling์ ๊ธฐ๋ฐ์ด๋ค. Ready Queue์ ํ๋ก์ธ์ค๋ค์ ์์๋๋ก ๋ฃ์ด ๋๊ณ ๋จผ์ ์จ ์ ๋ค๋ถํฐ ์ผ์ ํ ์๊ฐ(quantum)๋์ CPU๋ฅผ ํ ๋นํด์ฃผ๊ณ ์ผ์ ํ ์๊ฐ์ด ๋์ผ๋ฉด ๊ฐ์ (preemptive)๋ก CPU๋ฅผ ๋บ์ด์ ๋ค์ Ready Queue์์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ์ฃผ๋ ๋ฐฉ์์ธ Process scheduling ๋ฐฉ๋ฒ์ด๋ค.
- ์ด๋ค ํ๋ก์ธ์ค์๊ฒ ์ฐ์ ๊ถ์ ์ค ๊ฒ์ธ๊ฐ?
- ๋จผ์ ๋ค์ด์จ ํ๋ก์ธ์ค์๊ฒ ์ฐ์ ๊ถ์ ์ค
- ์ธ์ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ๋บ์ ๊ฒ์ธ๊ฐ?
- ์ผ์ ํ ์๊ฐ(quantum)์ด ์ง๋๋ CPU๋ฐํ์ ํ์ง ์์ผ๋ฉด ๊ฐ์ ๋ก ๋บ์(Timer๊ฐ interrupt๋ฅผ ํตํด ๋บ์)