CPU ์ค์ผ์ค๋ง
์ด์์ฒด์ ์ CPU ๋ฐฐ๋ถ ๋ฐฉ๋ฒ์ CPU ์ค์ผ์ค๋ง์ด๋ผ๊ณ ํ๋ค. CPU ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ฌํ CPU ์ค์ผ์ค๋ง์ ์ ์ฐจ๋ฅผ ๋งํ๋ฉฐ, ์ด CPU ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฐ์ ํ๊ณ ์ํํ๋ ์ด์์ฒด์ ์ ์ผ๋ถ๋ถ์ CPU ์ค์ผ์ค๋ฌ๋ผ๊ณ ํ๋ค.
- ํ๋ก์ธ์ค๋ฟ๋ง ์๋๋ผ ์ค๋ ๋๋ CPU์ ์ค์ผ์ค๋ง ๋์์ด๋ค. ์คํ์ ๋ฌธ๋งฅ์ ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ ๊ฒ์ ์ค์ผ์ค๋ง์ ํ ์ ์๋ค.
์ฐ์ ์์
๋ชจ๋ ํ๋ก์ธ์ค๋ CPU์ ์์์ ํ์๋ก ํ๊ธฐ ๋๋ฌธ์ ์ด์์ฒด์ ๋ ๊ณต์ ํ๊ณ ํฉ๋ฆฌ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก CPU์ ์์์ ํ๋ก์ธ์ค์ ํ ๋นํด์ผ ํ๋ค. ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค๋ณ ์ฐ์ ์์๋ฅผ ํ๋จํด PCB์ ๋ช ์ํ๊ณ , ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค์๋ CPU ์์์ ๋ ๋นจ๋ฆฌ, ๋ ๋ง์ด ํ ๋นํ๋ค.
๏นก์ฌ์ฉ์๊ฐ ์ผ๋ถ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ์ง์ ๋์ผ ์๋ ์๋ค.
์ด์์ฒด์ ๊ฐ ์ฐ์ ์์๋ฅผ ํ ๋นํ๋ ๋ํ์ ์ธ ๊ณ ๋ ค ์์๋ CPU ํ์ฉ๋ฅ ์ด๋ค. ์ด์์ฒด์ ๋ ๊ฐ๊ธ์ CPU ํ์ฉ๋ฅ ์ ๋๊ฒ ์ ์งํ ์ ์๋๋ก ์ฐ์ ์์๋ฅผ ํ ๋นํ๋ค.
CPU ํ์ฉ๋ฅ (CPU utilization): ์ ์ฒด CPU ๊ฐ๋ ์๊ฐ ์ค ์์ ์ ์ฒ๋ฆฌํ๋ ์๊ฐ์ ๋น์จ
์ด์์ฒด์ ๋ ๋์ CPU ํ์ฉ๋ฅ ์ ์ ์งํ๊ธฐ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ถ๋ ฅ ์์ ์ด ๋ง์ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ๋๊ฒ ์ ์งํ๋ค.
ํ๋ก์ธ์ค๋ค์ CPU์ ์ ์ถ๋ ฅ์ฅ์น๋ฅผ ๋ชจ๋ ์ฌ์ฉํด ์คํ๊ณผ ๋๊ธฐ ์ํ๋ฅผ ์ค๊ฐ๋ฉฐ ์คํ๋๋๋ฐ, ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ด์ฉํ๋ ์์ ์ CPU ๋ฒ์คํธ(CPU brust)๋ผ๊ณ ํ๊ณ , ์ ์ถ๋ ฅ์ฅ์น๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์์ ์ ์ ์ถ๋ ฅ ๋ฒ์คํธ(I/O burst)๋ผ๊ณ ํ๋ค.
๋ํ, ํ๋ก์ธ์ค๋ง๋ค ์ ์ถ๋ ฅ์ฅ์น๋ฅผ ์ด์ฉํ๋ ์๊ฐ๊ณผ CPU๋ฅผ ์ด์ฉํ๋ ์๊ฐ์ ์์๋ ์ฐจ์ด๊ฐ ์๋๋ฐ, ๋ณต์กํ ์ํ ์ฐ์ฐ์ด๋ ๊ทธ๋ํฝ ์ฒ๋ฆฌ ์์ ์ ๋ด๋นํ๋ ํ๋ก์ธ์ค์ฒ๋ผ CPU ์์ ์ด ๋ง์ ํ๋ก์ธ์ค๋ CPU ์ง์ค ํ๋ก์ธ์ค(CPU bound process)๋ผ๊ณ ํ๊ณ , ๋น๋์ค ์ฌ์์ด๋ ๋์คํฌ ๋ฐฑ์ ์์ ์ ๋ด๋นํ๋ ํ๋ก์ธ์ค์ฒ๋ผ ์ ์ถ๋ ฅ ์์ ์ด ๋ง์ ํ๋ก์ธ์ค๋ฅผ ์ ์ถ๋ ฅ ์ง์ค ํ๋ก์ธ์ค(I/O bound process)๋ผ๊ณ ํ๋ค.
์ ์ถ๋ ฅ ์ง์ค ํ๋ก์ธ์ค๋ ์คํ ์ํ๋ณด๋ค ์ ์ถ๋ ฅ์ ์ํ ๋๊ธฐ ์ํ์ ๋ ๋ง์ด ๋จธ๋ฌด๋ฅด์ง๋ง, CPU ์ง์ค ํ๋ก์ธ์ค๋ ๋๊ธฐ ์ํ๋ณด๋ค ์คํ ์ํ์ ๋ ๋ง์ด ๋จธ๋ฌด๋ฅธ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ์ถ๋ ฅ ์ง์ค ํ๋ก์ธ์ค์ CPU ์ง์ค ํ๋ก์ธ์ค๊ฐ ๋์์ CPU ์์์ ์๊ตฌํ๋ค๋ฉด, ์ ์ถ๋ ฅ ์ง์ค ํ๋ก์ธ์ค๋ฅผ ๊ฐ๋ฅํ ๋นจ๋ฆฌ ์คํ์์ผ ๋์์์ด ์ ์ถ๋ ฅ์ฅ์น๋ฅผ ์๋์ํจ ๋ค์, CPU ์ง์ค ํ๋ก์ธ์ค์ ์ง์ค์ ์ผ๋ก CPU๋ฅผ ํ ๋นํ๋ ๊ฒ์ด ๋ ํฉ๋ฆฌ์ ์ด๋ค.
์ด๋ ๋ฏ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฐจ๋ก๋๋ก ๋์๊ฐ๋ฉฐ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์ํฉ์ ๋ง๊ฒ CPU๋ฅผ ๋ฐฐ๋ถํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ด๋ฏ๋ก ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค๋ง๋ค ์ฐ์ ์์๋ฅผ ๋ถ์ฌํด CPU๋ฅผ ํ ๋นํ๋ค.
์ค์ผ์ค๋ง ํ
์ด์์ฒด์ ๋ ํ๋ก์ธ์ค๋ค์๊ฒ '์์์ ์ด์ฉํ๊ณ ์ถ๋ค๋ฉด ์ค์ ์์ ๊ธฐ๋ค๋ฆด ๊ฒ'์ ์๊ตฌํ๋ค. CPU๋ฅผ ์ด์ฉํ๊ณ ์ถ๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๊ณ ์ถ์ ํ๋ก์ธ์ค, ๋๊ธฐ ์ํ๋ก ํน์ ์ ์ถ๋ ฅ์ฅ์น๋ฅผ ์ด์ฉํ๊ณ ์ถ์ ํ๋ก์ธ์ค ๋ชจ๋์ ํด๋นํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ค์ ์ค์ผ์ค๋ง ํ๋ฅผ ํตํด ๊ตฌํ๋๋ค.

์ด์์ฒด์ ๊ฐ ๊ด๋ฆฌํ๋ ์ค์ธ ํ์๋ ๋ค์ํ ์ข ๋ฅ๊ฐ ์์ง๋ง, ๋ํ์ ์ผ๋ก ์ค๋น ํ์ ๋๊ธฐ ํ๊ฐ ์๋ค. ์ค๋น ํ(ready queue)๋ CPU๋ฅผ ์ด์ฉํ๊ณ ์ถ์ ํ๋ก์ธ์ค์ PCB๊ฐ ์๋ ์ค์ ์๋ฏธํ๊ณ , ๋๊ธฐ ํ(waiting queue)๋ ๋๊ธฐ ์ํ์ ์ ์ด๋ ํ๋ก์ธ์ค์ PCB๊ฐ ์๋ ์ค์ ์๋ฏธํ๋ค.
์ฃผ๋ก ์ ์ถ๋ ฅ ์์ ์ ์ํ ์ค์ผ ๊ฒฝ์ฐ, ๋๊ธฐ ํ์์ ๋๊ธฐ ์ํ๋ก ์ ์ถ๋ ฅ ์๋ฃ ์ธํฐ๋ฝํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ค. ์ค๋น ์ํ์ธ ํ๋ก์ธ์ค์ PCB๋ ์ค๋น ํ์ ๋ง์ง๋ง์ ์ฝ์ ๋์ด CPU๋ฅผ ์ฌ์ฉํ ์ฐจ๋ก๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค.
์ด์์ฒด์ ๋ ํ์ ์ฝ์ ๋ ์์๋๋ก ์คํํ๋, ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๋ถํฐ ๋จผ์ ์คํํ๋ค. ์คํ๋๋ ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ฐ์ ์๊ฐ์ด ๋ชจ๋ ์๋ชจํ ๊ฒฝ์ฐ(ํ์ด๋จธ ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ) ์ค๋น ํ๋ก ๋ค์ ์ด๋ํ๊ณ , ์คํ ๋์ค ์ ์ถ๋ ฅ ์์ ์ ์ํํ๋ ๋ฑ ๋๊ธฐ ์ํ๋ก ์ ์ด๋ค์ด์ผ ํ ๊ฒฝ์ฐ ๋๊ธฐ ํ๋ก ์ด๋ํ๊ฒ ๋๋ค.

๊ฐ์ ์ ์ถ๋ ฅ์ฅ์น๋ฅผ ์๊ตฌํ ํ๋ก์ธ์ค๋ค์ ๊ฐ์ ๋๊ธฐ ํ์์ ๊ธฐ๋ค๋ฆฐ๋ค. ์ ์ถ๋ ฅ์ด ์๋ฃ๋์ด ์๋ฃ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ฉด ์ด์์ฒด์ ๋ ๋๊ธฐ ํ์์ ์์ ์ด ์๋ฃ๋ PCB๋ฅผ ์ฐพ๊ณ , ์ด PCB๋ฅผ ์ค๋น ์ํ๋ก ๋ณ๊ฒฝํ ๋ค ํ์์ ์ ๊ฑฐํ๊ณ , ํด๋น PCB๋ ์ค๋น ํ๋ก ์ด๋ํ๋ค.

์ ์ ํ ์ค์ผ์ค๋ง๊ณผ ๋น์ ์ ํ ์ค์ผ์ค๋ง
์ค์ผ์ค๋ง์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก์ธ์ค์ ์คํ์ด ๋๋๋ฉด ์ด๋ฃจ์ด์ง์ง๋ง, ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์ง ์์์์๋ ์คํ ๋์ค ์ค์ผ์ค๋ง์ด ์ํ๋๋ ๋ํ์ ์ธ ๋ ์์ ์ด ์๋ค.
- ์คํ ์ํ์์ ์ ์ถ๋ ฅ ์์ ์ ์ํด ๋๊ธฐ ์ํ๋ก ์ ํ๋ ๋
- ์คํ ์ํ์์ ํ์ด๋จธ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํด ์ค๋น ์ํ๋ก ๋ณ๊ฒฝ๋ ๋
1๋ฒ๊ณผ 2๋ฒ ๋ชจ๋ ์ํฉ์์ ์ํ๋๋ ์ค์ผ์ค๋ง ์ ํ์ ์ ์ ํ ์ค์ผ์ค๋ง์ด๋ผ๊ณ ํ๊ณ , 1๋ฒ ์ํฉ์์๋ง ์ํ๋๋ ์ค์ผ์ค๋ง์ ๋น์ ์ ํ ์ค์ผ์ค๋ง์ด๋ผ๊ณ ํ๋ค.
์ ์ ํ ์ค์ผ์ค๋ง(preemptive scheduling): ํ์ฌ ์ด๋ค ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น๋ฐ์ ์ฌ์ฉํ๊ณ ์๋๋ผ๋ ์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค๋ก๋ถํฐ CPU ์์์ ๊ฐ์ ๋ก ๋นผ์์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋นํ ์ ์๋ ์ค์ผ์ค๋ง ๋ฐฉ์
- ํ๋ก์ธ์ค๋ง๋ค ์ ํด์ง ์๊ฐ๋งํผ๋ง CPU๋ฅผ ์ด์ฉํ๊ณ , ์ ํด์ง ์๊ฐ์ ๋ชจ๋ ์๋นํ๋ฉด ์ด์์ฒด์ ๊ฐ ํด๋น ํ๋ก์ธ์ค๋ก๋ถํฐ CPU ์์์ ๋นผ์์ ๋ค์ ํ๋ก์ธ์ค์๊ฒ ํ ๋นํ๋ ๋ฐฉ์์ด๋ค.
- ์ธ์ ๋ ๋ ๊ธํ ํ๋ก์ธ์ค๊ฐ ๋ผ์ด๋ค์ด CPU๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ํ ํ๋ก์ธ์ค์ CPU ๋ ์ ์ ๋ง๊ณ ์ฌ๋ฌ ํ๋ก์ธ์ค์ ๊ณจ๊ณ ๋ฃจ CPU ์์์ ๋ฐฐ๋ถํ ์ ์๋ค.
- ๋ฌธ๋งฅ ๊ตํ ๊ณผ์ ์์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์๋ค.
๋น์ ์ ํ ์ค์ผ์ค๋ง(non-preemptive scheduling): ์ด๋ค ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉํ๊ณ ์์ ๋ ๊ทธ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๊ฑฐ๋ ์ค์ค๋ก ๋๊ธฐ ์ํ์ ์ ์ด๋ค๊ธฐ ์ ๊น์ง๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋ผ์ด๋ค ์ ์๋ ์ค์ผ์ค๋ง ๋ฐฉ์
- ๋น์ ์ ํ ์ค์ผ์ค๋ง์ผ๋ก ์คํ๋๋ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ ๊ทธ ํ๋ก์ธ์ค์ CPU ์ฌ์ฉ์ด ๋ชจ๋ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ค.
- ๋ฌธ๋งฅ ๊ตํ์ ํ์๊ฐ ์ ์ด ์๋์ ์ผ๋ก ์ค๋ฒํค๋์ ๋ฐ์์ด ์ ๋ค.
- ์ด๋ค ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด ๋น์ฅ CPU๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ํ๋ก์ธ์ค๋ผ๋ ๋ฌด์์ ๊ธฐ๋ค๋ฆฌ๋ ์ ๋ฐ์ ์๋ค.
CPU ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ
์ ์ ์ ์ฒ๋ฆฌ ์ค์ผ์ค๋ง(FCFS, First Come First Served)
์ค๋น ํ์ ์ฝ์ ๋ ์์๋๋ก ๋จผ์ CPU๋ฅผ ์์ฒญํ ํ๋ก์ธ์ค๋ถํฐ CPU๋ฅผ ํ ๋นํ๋ ์ค์ผ์ค๋ง ๋ฐฉ์์ด๋ค.
- ํ๋ก์ธ์ค๋ค์ด ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ๋งค์ฐ ๊ธธ์ด์ง ์ ์๋ค๋ ๋ถ์์ฉ์ด ์๋ค. ๋จผ์ ์ฝ์ ๋ ํ๋ก์ธ์ค์ ์ค๋ ์คํ ์๊ฐ์ผ๋ก ์ธํด ๋์ค์ ์ฝ์ ๋ ํ๋ก์ธ์ค์ ์คํ์ด ์ง์ฐ๋๋ ๋ฌธ์ ๋ฅผ ํธ์ ํจ๊ณผ(convoy effect)๋ผ๊ณ ํ๋ค.
์ต๋จ ์์ ์ฐ์ ์ค์ผ์ค๋ง(SJF, Shortest Job First)
์ค๋น ํ์ ์ฝ์ ๋ ํ๋ก์ธ์ค ์ค CPU๋ฅผ ์ด์ฉํ๋ ์๊ฐ์ ๊ธธ์ด๊ฐ ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค๋ถํฐ ๋จผ์ ์คํํ๋ ์ค์ผ์ค๋ง ๋ฐฉ์์ด๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋น์ ์ ํ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ถ๋ฅ๋์ง๋ง, ์ต์ ์์ฌ ์๊ฐ ์ฐ์ ์ค์ผ์ค๋ง์ฒ๋ผ ์ ์ ํ์ผ๋ก ๊ตฌํ๋ ์๋ ์๋ค.
๋ผ์ด๋ ๋ก๋น ์ค์ผ์ค๋ง(RR, Round Robin)
์ ์ ์ ์ฒ๋ฆฌ ์ค์ผ์ค๋ง์ ํ์ ์ฌ๋ผ์ด์ค๋ผ๋ ๊ฐ๋ ์ด ๋ํด์ง ์ค์ผ์ค๋ง ๋ฐฉ์์ผ๋ก, ํ์ ์ฌ๋ผ์ด์ค๋ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉํ๋๋ก ์ ํด์ง ์๊ฐ์ ์๋ฏธํ๋ค.
์ฆ, RR์ ํ์ ์ฝ์ ๋ ํ๋ก์ธ์ค๋ค์ด ์ฝ์ ๋ ์์๋๋ก CPU๋ฅผ ์ด์ฉํ๋, ์ ํด์ง ํ์ ์ฌ๋ผ์ด์ค๋งํผ๋ง CPU๋ฅผ ์ด์ฉํ๋ ์ ์ ํ ์ค์ผ์ค๋ง์ด๋ค.
- ํ๋ก์ธ์ค๊ฐ ์ ํด์ง ์๊ฐ์ ๋ชจ๋ ์ฌ์ฉํ๊ณ ๋ ์๋ฃ๋์ง ์์ผ๋ฉด ๋ฌธ๋งฅ ๊ตํ์ด ๋ฐ์ํด ๋ค์ ํ์ ๋งจ ๋ค์ ์ฝ์ ๋๋ค.
์ต์ ์์ฌ ์๊ฐ ์ฐ์ ์ค์ผ์ค๋ง(SRT, Shortest Remaining Time)
์ต๋จ ์์ ์ฐ์ ์ค์ผ์ค๋ง๊ณผ ๋ผ์ด๋ ๋ก๋น ์ค์ผ์ค๋ง์ ํฉ์น ์ค์ผ์ค๋ง ๋ฐฉ์์ผ๋ก, ํ๋ก์ธ์ค๋ก ํ์ฌ๊ธ ์ ํด์ง ํ์ ์ฌ๋ผ์ด์ค๋งํผ CPU๋ฅผ ์ด์ฉํ๋, ๋จ์ ์๋ ์์ ์๊ฐ์ด ๊ฐ์ฅ ์ ์ ํ๋ก์ธ์ค๋ฅผ ๋ค์์ผ๋ก CPU๋ฅผ ์ด์ฉํ ํ๋ก์ธ์ค๋ก ์ ํํ๋ค.
์ฐ์ ์์ ์ค์ผ์ค๋ง(priority)
ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๊ณ , ๊ฐ์ฅ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค๋ถํฐ ์คํํ๋ ์ค์ผ์ค๋ง ๋ฐฉ์์ด๋ค.
- ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ (์ค๋น ํ์ ๋จผ์ ์ฝ์ ๋์๋๋ผ๋) ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๋ก ์ธํด ๊ณ์ํด์ ์คํ์ด ์ฐ๊ธฐ๋๋ ๊ธฐ์(=์์ฌ, starvation) ํ์์ด ๋ฐ์ํ ์ ์๋ค.
- ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ธฐ๋ฒ์ผ๋ก ์์ด์ง(aging)์ด ์๋ค. ์์ด์ง์ ์ค๋ซ๋์ ๋๊ธฐํ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ์ ์ฐจ ๋์ด๋ ๋ฐฉ์์ผ๋ก, ์์ด์ง์ ์ ์ฉํ๋ฉด ์ฐ์ ์์๊ฐ ๋ฎ์์ ๋ง๋ฅ ๊ธฐ๋ค๋ฆฌ๊ธฐ๋ง ํ๋ ํ๋ก์ธ์ค๊ฐ ์์ด์ง๊ฒ ๋๋ค.
๋ค๋จ๊ณ ํ ์ค์ผ์ค๋ง(multilevel queue)
์ฐ์ ์์ ์ค์ผ์ค๋ง์ ๋ฐ์ ๋ ํํ๋ก, ์ฐ์ ์์๋ณ๋ก ์ฌ๋ฌ ๊ฐ์ ์ค๋น ํ๋ฅผ ์ฌ์ฉํ๋ ์ค์ผ์ค๋ง ๋ฐฉ์์ด๋ค. ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ํ์ ์๋ ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์ฒ๋ฆฌํ๊ณ , ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ํ๊ฐ ๋น์ด ์๊ฒ ๋๋ฉด, ๊ทธ ๋ค์์ผ๋ก ์ฐ์ ์์๊ฐ ๋์ ํ์ ์๋ ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๋ค.
- ํ๋ก์ธ์ค๋ค์ด ํ ์ฌ์ด๋ฅผ ์ด๋ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค์ ์์ ์ด ๊ณ์ํด์ ์ฐ๊ธฐ๋๋ ๊ธฐ์ ํ์์ด ๋ฐ์ํ ์ ์๋ค.
๋ค๋จ๊ณ ํผ๋๋ฐฑ ํ ์ค์ผ์ค๋ง(multilevel feedback queue)
๋ค๋จ๊ณ ํ ์ค์ผ์ค๋ง๊ณผ ๋น์ทํ๊ฒ ๋์ํ์ง๋ง, ํ๋ก์ธ์ค๋ค์ด ํ ์ฌ์ด๋ฅผ ์ด๋ํ ์ ์๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์๋ค. ๋ค๋จ๊ณ ํผ๋๋ฐฑ ํ ์ค์ผ์ค๋ง์ ์๋กญ๊ฒ ์ง์ ํ๋ ํ๋ก์ธ์ค๋ ๋จผ์ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ์ฐ์ ์์ ํ์ ์ฝ์ ๋๊ณ , ํ์ ์ฌ๋ผ์ด์ค ๋์ ์คํ๋๋ค. ๋ง์ฝ ํด๋น ํ์์ ํ๋ก์ธ์ค์ ์คํ์ด ๋๋์ง ์์ผ๋ฉด ๋ค์ ์ฐ์ ์์ ํ์ ์ฝ์ ๋์ด ์คํ๋๋ค.
- ๋น๊ต์ CPU๋ฅผ ์ค๋ ์ฌ์ฉํด์ผ ํ๋ 'CPU ์ง์ค ํ๋ก์ธ์ค'๋ค์ ์ฐ์ ์์๋ ๋ฎ์์ง๊ณ , ๋น๊ต์ CPU๋ฅผ ์ ๊ฒ ์ฌ์ฉํ๋ '์ ์ถ๋ ฅ ์ง์ค ํ๋ก์ธ์ค'๋ค์ ์ฐ์ ์์๊ฐ ๋์ ํ์์ ์คํ์ด ๋๋๊ฒ ๋๋ค.
- ๊ธฐ์ ํ์์ ์๋ฐฉํ๊ธฐ ์ํด ๋ฎ์ ์ฐ์ ์์ ํ์์ ์ค๋ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ํ๋ก์ธ์ค๋ค์ ๋์ ์ฐ์ ์์ ํ๋ก ์ด๋์ํค๋ ์์ด์ง ๊ธฐ๋ฒ์ ์ ์ฉํ ์ ์๋ค.
๋ฆฌ๋ ์ค CPU ์ค์ผ์ค๋ง
๋ฆฌ๋ ์ค์์๋ ์ํฉ์ ๋ฐ๋ผ ๋ค์ํ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ์ฉ๋ ์ ์๋ค. ์ด๋ ๋ฆฌ๋ ์ค ์ด์์ฒด์ ์ ์ค์ผ์ค๋ง ์ ์ฑ ์ ๋ณด๋ฉด ์ ์ ์๋ค.
| ์ค์ผ์ค๋ง ์ ์ฑ | ์ ์ฉ ์ํฉ |
| SCHED_FIFO | ์ค์๊ฐ์ฑ ํ๋ก์ธ์ค์ ์ ์ฉ๋๋ ์ ์ฑ (๋งค์ฐ ๋์ ์ฐ์ ์์๋ฅผ ํ ๋นํจ) |
| SCHED_RR | |
| SCHED_NORMAL | ์ผ๋ฐ์ ์ธ ํ๋ก์ธ์ค์ ์ ์ฉ๋๋ ์ ์ฑ |
| SCHED_BATCH | ์ผ๋ฐ์ ์ธ ํ๋ก์ธ์ค๋งํผ ์์ฃผ ์ ์ ํ์ง ์๋ ๋ฐฐ์น ์์ ์ ์ ์ฉ๋๋ ์ ์ฑ |
| SCHED_IDLE | ์ฐ์ ์์๊ฐ ๋งค์ฐ ๋ฎ์ ํ๋ก์ธ์ค์ ์ ์ฉ๋๋ ์ ์ฑ (๋งค์ฐ ๋ฎ์ ์ฐ์ ์์๋ฅผ ํ ๋นํจ) |
- SCHED_FIFO, SCHED_RR์ RT(Real-Time) ์ค์ผ์ค๋ฌ์ ์ํด ์ด๋ค์ง๋ ์ค์ผ์ค๋ง์ผ๋ก, ์ค์๊ฐ์ฑ์ด ๊ฐ์กฐ๋ ํ๋ก์ธ์ค์ ์ ์ฉ๋๋ ์ค์ผ์ค๋ง ์ ์ฑ ์ด๋ค.
- SCHED_NORMAL์ CFS๋ผ๋ CPU ์ค์ผ์ค๋ฌ์ ์ํด ์ค์ผ์ค๋ง์ด ์ด๋ค์ง๋ค. CFS(Completely Fair Scheduler)๋ ํ๋ก์ธ์ค์ ๋ํด ์์ ํ ๊ณตํํ CPU ์๊ฐ ๋ฐฐ๋ถ์ ์งํฅํ๋ CPU ์ค์ผ์ค๋ฌ๋ฅผ ๋งํ๋ค.
๋ฆฌ๋ ์ค์์๋ ํ๋ก์ธ์ค๋ง๋ค ๊ฐ์ ์คํ ์๊ฐ(vruntime)์ด๋ผ๋ ์ ๋ณด๋ฅผ ์ ์งํ๋๋ฐ, CFS๋ ์ด vruntime์ด ๊ฐ์ฅ ์์ ํ๋ก์ธ์ค๋ถํฐ ์ค์ผ์ค๋งํ๋ค. vruntime์ ํ๋ก์ธ์ค๊ฐ '์ค์ ๋ก ์คํ๋ ์๊ฐ'์ด ์๋, ํ๋ก์ธ์ค์ '๊ฐ์ค์น(weight)'๋ฅผ ๊ณ ๋ คํ ๊ฐ์์ ์คํ ์๊ฐ์ด๋ค.
์ฆ, ํ๋ก์ธ์ค์ ๊ฐ์ค์น๊ฐ ๋์์ง์๋ก vruntime์ด ์ฒ์ฒํ ์ฆ๊ฐํ๊ณ , ๋จผ์ ์ค์ผ์ค๋ง๋ ํ๋ฅ ์ด ๋๋ค.
vruntime = CPU๋ฅผ ํ ๋น๋ฐ์ ์คํ๋ ์๊ฐ * $\frac{ํ๊ท ๊ฐ์ค์น(์์)}{ํ๋ก์ธ์ค์ ๊ฐ์ค์น}$
CFS๋ก ์ค์ผ์ค๋ง๋๋ ํ๋ก์ธ์ค๋ค์ ํ์ ์ฌ๋ผ์ด์ค๋ ํ๋ก์ธ์ค์ ๊ฐ์ค์น์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค. ํ๋ก์ธ์ค์ ์ฐ์ ์์๊ฐ ๋์์ง์๋ก ๊ฐ์ค์น๊ฐ ๋์์ง๊ณ ํ์ ์ฌ๋ผ์ด์ค๋ ํฌ๊ฒ ํ ๋น ๋ฐ์ ์ ์๋ค.
ํ์ ์ฌ๋ผ์ด์ค = ($\frac{ํ๋ก์ธ์ค์ ๊ฐ์ค์น}{CFS ํ์์ ๋๊ธฐํ๋ ํ๋ก์ธ์ค๋ค์ ์ ์ฒด ๊ฐ์ค์น}$) * CFS ํ์์ ๋๊ธฐํ๋ ํ๋ก์ธ์ค๋ค์ ํ์ ์ฌ๋ผ์ด์ค ์ ์ฒด ํฉ
์ฐธ๊ณ ์ฌ์ดํธ
์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ปดํจํฐ ๊ณผํ์ด๋ค
์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ปดํจํฐ ๊ณผํ์ด๋ค with CS ๊ธฐ์ ๋ฉด์ | ๊ฐ๋ฏผ์ฒ - ๊ต๋ณด๋ฌธ๊ณ
์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ปดํจํฐ ๊ณผํ์ด๋ค with CS ๊ธฐ์ ๋ฉด์ | ๊ธฐ์ ๋ฉด์ ๊ณผ ์ค๋ฌด์ ํ์ํ CS ์ง์, ํ ๊ถ์ผ๋ก ๋๋ด์!ํ๋ก๊ทธ๋จ์ ์คํ ์๋ฆฌ๋ฅผ ์ดํดํ์ง ๋ชปํ ์ฑ ‘์ผ๋จ ์๋๋ง ํ๋๋ก ๋ง๋๋ ๊ฒ’๊ณผ ์
product.kyobobook.co.kr