CPU Scheduling
CPU ์ค์ผ์ค๋ง์ด๋, OS๊ฐ ํ๋ก์ธ์ค๋ค์๊ฒ ๊ณต์ ํ๊ณ ํฉ๋ฆฌ์ ์ผ๋ก CPU ์์์ ๋ฐฐ๋ถํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๋ง์ฝ ํ๋ก์ธ์คํํ CPU๋ฅผ ์ ๋๋ก ๋ถ๋ฐฐํ์ง ๋ชปํ๋ฉด ๋ฐ๋์ ์คํ๋ผ์ผ ๋๋ ํ๋ก์ธ์ค๊ฐ ์คํ์ด ์๋๊ฑฐ๋ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ค๋ง ๊ณ์ํด์ ์คํ๋๋ ์ํ๊ฐ ๋ฐ๋ณต๋ ์ ์๋ค.
ํ๋ก์ธ์ค ์ฐ์ ์์
์ด๋ป๊ฒ ํด์ผ ๋ชจ๋ ํ๋ก์ธ์ค๋ค์๊ฒ CPU ์์์ ๊ณต์ ํ๊ฒ ๋ฐฐ๋ถํ ์ ์์๊น.
๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก๋ CPU๋ฅผ ํ์๋กํ๋ ํ๋ก์ธ์ค๋ค์๊ฒ ์์๋๋ก ์ด์ฉํ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
ํฉ๋ฆฌ์ ์ผ๋ก ๋ณด์ด์ง๋ง ๊ทธ๋ ๊ฒ ์ข์ ๋ฐฉ๋ฒ์ด ์๋๋ค.
ํ๋ก์ธ์ค๋ง๋ค ์ฐ์ ์์๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ CPU๋ฅผ ๋ง์ด ์ฌ์ฉํด์ผ ํ ํ๋ก์ธ์ค๊ฐ ์๋ ๋ฐ๋ฉด ๊ทธ๋ ์ง ์์ ํ๋ก์ธ์ค๋ ์๋ค.
CPU bound process: CPU ์์ ์ด ๋ง์ ํ๋ก์ธ์ค I/O bound process: ์ /์ถ๋ ฅ ์์ ์ด ๋ง์ ํ๋ก์ธ์ค
I/O bound ํ๋ก์ธ์ค๋ CPU bound ํ๋ก์ธ์ค๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๋ค.
๐ค ๊ทธ ์ด์ ๋ ๋ญ๊น?
๋๋ถ๋ถ์ ํ๋ก์ธ์ค๋ CPU์ ์ ์ถ๋ ฅ ์ฅ์น๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋ฉด์ ์คํ๋๋ค.
I/O bound ํ๋ก์ธ์ค๋ CPU bound์ ๋นํด ๋๊ธฐ์ํ์ ๋ ๋ง์ด ๋จธ๋ฌด๋ฅธ๋ค.
์คํ์ํ๋ณด๋ค๋ ๋๊ธฐ ์ํ์ ๋ ๋ง์ด ๋จธ๋ฌด๋ฅธ๋ค.
๋๊ธฐ์ํ์ ๋จธ๋ฌผ๊ฒ ๋๋ฉด CPU๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ I/O ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ๋์ฌ ๋จผ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด CPU bound ํ๋ก์ธ์ค์๊ฒ ๋ ๋ง์ด ํ ๋นํ ์ ์๋ค.
I/O bound ํ๋ก์ธ์ค๋ ์ด์ฐจํผ ์ ๊น CPU๋ฅผ ์ฌ์ฉํ๊ณ ๋๋ฉด, ๋๊ธฐ์ํ๋ก ๋จธ๋ฌด๋ฅด๊ณ ํ๋ํ CPU๋ฅผ ์ฐ์ง ์๋๋ค.
์ด๋ฌํ ์ด์ ๋ก, I/O bound ํ๋ก์ธ์ค๊ฐ ์ฐ์ ์์๊ฐ ๋๋ค๊ณ ์๋ ค์ ธ์๋ค.
์ด๋ฌํ ์ฐ์ ์์๋ ํ๋ก์ธ์ค์ PCB์ ์ ์ฅ๋๊ณ , OS๋ PCB๋ฅผ ๋ณด๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ค ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ผ๋ง๋ ์ฌ์ฉํ๊ฒ ๋ ์ง๋ฅผ ๊ฒฐ์ ํ๊ฒ ๋๋ค.
์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๋ ๋ ๋นจ๋ฆฌ, ๋ ์์ฃผ ์คํ๋ ์ ์๋ค.
์ค์ผ์ค๋ง Queue
PCB๋ง๋ค ์ฐ์ ์์๊ฐ ์กด์ฌํ์ง๋ง, OS๊ฐ ๋ค์์ CPU๋ฅผ ์ฌ์ฉํ ํ๋ก์ธ์ค๋ฅผ ์ฐพ๊ธฐ ์ํด ๋ชจ๋ PCB๋ฅผ ํ์ธํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ค. ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด OS๊ฐ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ผ์ค๋ง ํ ์ด๋ค.
์์์ ์ด์ฉํ๊ณ ์ถ์ดํ๋ ํ๋ก์ธ์ค๋ค์ด ์ค ์์๋ ๊ณต๊ฐ์ด๋ค.
์ฌ๊ธฐ์ ์์์ CPU, ๋ฉ๋ชจ๋ฆฌ, HHD, CD-ROM ๋ฑ์ ์๋ฏธํ๋ค.
๋ณดํต Queue ์๋ฃ๊ตฌ์กฐ๋ FIFO ํน์ฑ์ ๊ฐ์ง๋ง, ์ค์ผ์ค๋ง Queue๋ FIFO์ผ ํ์๋ ์๋ค.
ํ๋ก์ธ์ค๋ง๋ค ์ฐ์ ์์๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋จผ์ ํ์ ์ฝ์ ๋์๋ค๊ณ ํด์ ๋ฐ๋์ ๋จผ์ ์ฒ๋ฆฌ๋์ง ์๋๋ค.
์ ๋ฆฌํ๋ฉด, OS๋ ์์คํ ์์์ ์ฌ์ฉํ๊ณ ์ถ์ดํ๋ ํ๋ก์ธ์ค๋ฅผ ํ์ ์ฝ์ ํด์ ์ค์ ์ธ์์ ์์์ ์ด์ฉํ๋๋ก ํ๋ค.
์ค์ผ์ค๋ง ํ์๋ ์ฌ๋ฌ ์ข
๋ฅ๊ฐ ์์ง๋ง, ๋ํ์ ์ผ๋ก ์ค๋น/๋๊ธฐ ํ๊ฐ ์๋ค.
์ธ์๋ Job, Device Queue๊ฐ ์๋ค.
Ready Queue
์ค๋น ํ๋ CPU๋ฅผ ์ด์ฉํ๊ณ ์ ํ๋ ํ๋ก์ธ์ค๋ค์ด ์๋ ์ค์ ์๋ฏธํ๋ค. ์ค๋น ์ํ์ ํ๋ก์ธ์ค, ์ธ์ ๋ ์ง CPU๋ฅผ ํ ๋น๋ฐ์ ์คํํ ์ ์์ง๋ง ์ฐจ๋ก๊ฐ ๋์ง ์์์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ์ ํ๋ก์ธ์ค๋ค์ ์ค์ด๋ค.
์ฆ, ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์ CPU ํ ๋น์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค ํ์ด๋ค.
์ค๋น ์ํ๊ฐ ๋ ํ๋ก์ธ์ค๋ ๋์คํจ์น๋ผ์ CPU๋ฅผ ํ ๋น๋ฐ์ ์คํํ๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ CPU ํ ๋น ์๊ฐ์ด ์๋ฃ๋๋ฉด ํ์์์ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํด์ ์ค๋น์ํ์ ๋ค์ด๊ฐ๋ค.
Wating Queue
๋๊ธฐ ํ๋ ์ ์ถ๋ ฅ ์ฅ์น๋ฅผ ์ด์ฉํ๊ณ ์ถ์ ํ๋ก์ธ์ค๋ค์ด ์๋ ์ค์ ์๋ฏธํ๋ค.
I/O ๋ฑ ์ด๋ฒคํธ ์๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค ํ์ด๋ค.
I/O ์์ ์ ํด์ผ ๋์, ๋น์ฅ CPU๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๊ธฐ ์ํ๋ก ์๋๊ฒ์ด๋ค.
์ ์ถ๋ ฅ ์์ ์ ์๋ฃํ๊ณ , ๋ค์ CPU ์์ ์ ์งํํ๋ ๊ฒฝ์ฐ ๋๊ธฐ ํ์์ ๋น ์ ธ๋์ ๋ค์ ์ค๋น ์ํ๊ฐ๋์ด ์ค๋น ํ๋ก ๋ค์ด๊ฐ๋ค.
์ปดํจํฐ์๋ ์ฌ๋ฌ ๊ฐ์ง ์ ์ถ๋ ฅ(I/O) ์ฅ์น๋ค์ด ์๊ธฐ ๋๋ฌธ์ ๋๊ธฐ ํ ์์๋ ์ฌ๋ฌ ์ข ๋ฅ๊ฐ ์๋ค.
๋ณดํต์ ์ ์ถ๋ ฅ ์ฅ์น๋ณ๋ก ์กด์ฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
๊ฐ์ ์ฅ์น๋ฅผ ์๊ตฌํ ํ๋ก์ธ์ค๋ค์ ๊ฐ์ ํ์ ๋๊ธฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
Last updated