CPU๋ ํ๋ก๊ทธ๋จ์ ๊ธฐ๊ณ์ด ๋ช ๋ น์ ์ค์ ๋ก ์ํํ๋ ์ปดํจํฐ ๋ด์ ์ค์ ์ฒ๋ฆฌ์ฅ์น์ด๋ค. ํ๋ก๊ทธ๋จ์ด ์์๋์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ฉด ํ๋ก๊ทธ๋จ ์นด์ดํฐ(Program Counter: PC)๋ผ๋ ์ด๋ฆ์ ๋ ์ง์คํฐ๊ฐ ํ์ฌ CPU์์ ์ํํ ์ฝ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์๊ฒ ๋๋ค. ๊ทธ๋ฌ๋ฉด CPU๋ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์์ ๊ธฐ๊ณ์ด ๋ช ๋ น์ ํ๋์ฉ ์ํํ๊ฒ ๋๋ค.
ํ๋ก๊ทธ๋จ์ ์ํ์ ์๋ก ๋ค๋ฅธ ๋ ๋จ๊ณ์ ์กฐํฉ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค. ์ฒซ์งธ๋ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด CPU๋ฅผ ์ง์ ๊ฐ์ง๊ณ ๋น ๋ฅธ ๋ช ๋ น์ ์ํํ๋ ์ผ๋ จ์ ๋จ๊ณ์ด๊ณ , ๋์งธ๋ I/O ์์ฒญ์ด ๋ฐ์ํด ์ปค๋์ ์ํด ์ ์ถ๋ ฅ ์์ ์ ์งํํ๋ ๋น๊ต์ ๋๋ฆฐ ๋จ๊ณ์ด๋ค.
์ ์๋ฅผ CPU ๋ฒ์คํธ, ํ์๋ฅผ I/O๋ฒ์คํธ๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ฆ ํ๋ก๊ทธ๋จ์ด I/O๋ฅผ ํ ๋ฒ ์ํํ ํ ๋ค์ ๋ฒ I/O๋ฅผ ์ํํ๊ธฐ๊น์ง ์ง์ ์ง์ CPU๋ฅผ ๊ฐ์ง๊ณ ๋ช ๋ น์ ์ํํ๋ ์ผ๋ จ์ ์์ ์ด CPU ๋ฒ์คํธ์ด๊ณ , ์ดํด ๋นํด I/O ๋ฒ์คํธ๋ I/O ์์ ์ด ์์ฒญ๋ ํ ์๋ฃ๋์ด ๋ค์ CPU ๋ฒ์คํธ๋ก ๋์๊ฐ๊ธฐ๊น์ง ์ผ์ด๋๋ ์ผ๋ จ์ ์์ ์ ๋งํ๋ค.
๊ฐ ํ๋ก๊ทธ๋จ๋ง๋ค CPU ๋ฒ์คํธ์ I/O ๋ฒ์คํธ๊ฐ ์ฐจ์งํ๋ ๋น์จ์ด ๊ท ์ผํ์ง ์๋ค. I/O ์์ฒญ์ด ๋น๋ฒํด CPU ๋ฒ์คํธ๊ฐ ์งง๊ฒ ๋ํ๋๋ ํ๋ก์ธ์ค๋ฅผ I/O ๋ฐ์ด๋ ํ๋ก์ธ์ค๋ผ ํ๊ณ ๊ทธ ๋ฐ๋๋ฅผ CPU ๋ฐ์ด๋ ํ๋ก์ธ์ค๋ผ ํ๋ค.
CPU ์ค์ผ์ค๋ง์ ์ด์ ๊ฐ์ด CPU๋ฅผ ์ฌ์ฉํ๋ ํจํด์ด ์์ดํ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋์ผํ ์์คํ ๋ด๋ถ์์ ํจ๊ฒ ์คํ๋๊ธฐ ๋๋ฌธ์ ํ์ํ๋ค.
์ปดํจํฐ ์์คํ ๋ด์์ ์ํ๋๋ ํ๋ก์ธ์ค๋ค์ CPU ๋ฒ์คํธ๋ฅผ ๋ถ์ํด๋ณด๋ฉด ๋๋ถ๋ถ์ ํ๋ก์ธ์ค๋ CPU ๋ฒ์คํธ๊ฐ ์งง๊ฒ ๋ํ๋๋ค. ์ด๋ CPU๋ฅผ ํ๋ฒ์ ์ค๋ ์ฌ์ฉํ๊ธฐ๋ณด๋ค ์ ๊น ์ฌ์ฉํ๊ณ I/O ์์ ์ ์ํํ๋ ํ๋ก์ธ์ค๋ค์ด ๋ง๋ค๋ ๊ฒ์ด๋ค.
CPU ๋ฒ์คํธ๊ฐ ์งง์ ํ๋ก์ธ์ค๋ ๋๋ถ๋ถ ๋ํํ ์์ ์ผ๋ก ์ฌ์ฉ์์ ์ธํฐ๋์ ์ ํด๊ฐ๋ฉฐ ํ๋ก๊ทธ๋จ์ ์ํ์ํค๋๋ฐ ์ด๋ ์ฌ์ฉ์์๊ฒ ์ ๋ ฅ์ ๋ฐ์ CPU์ฐ์ฐ์ ์ํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์ถ๋ ฅํ๋ ์์ ์ ์ํํ๋ค. ์ด๋ฌํ ์์ ์ ์ํํ๋ ํ๋ก์ธ์ค๋ CPU์ ๋น ๋ฅธ ์๋น์ค๋ฅผ ํ์๋ก ํ๊ธฐ ๋๋ฌธ์ CPU ์ค์ผ์ค๋ง์ ํ ๋ CPU ๋ฒ์คํธ๊ฐ ์งง์ ํ๋ก์ธ์ค์๊ฒ ์ฐ์ ์ ์ผ๋ก CPU๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ์ค์ผ์ค๋ง์ด ํ์ํ๋ค.
CPU ์ค์ผ์ค๋ฌ๋ ์ค๋น ์ํ์ ์๋ ํ๋ก์ธ์ค๋ค ์ค ์ด๋ ํ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ํ ๋นํ ์ง ๊ฒฐ์ ํ๋ ์ด์์ฒด์ ์ ์ฝ๋์ด๋ค. ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น๋ฐ๊ณ ๊ธฐ๊ณ์ด ๋ช ๋ น์ ์ํํ๋ค๊ฐ ํ์ด๋จธ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ฉด CPU ์ค์ผ์ค๋ฌ๊ฐ ํธ์ถ๋๋ค. ๊ทธ๋ฌ๋ฉด CPU ์ค์ผ์ค๋ฌ๋ ์ค๋น ํ์์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค ์ค ํ๋๋ฅผ ์ ํํด CPU๋ฅผ ํ ๋นํ๊ฒ ๋๋ค.
CPU ์ค์ผ์ค๋ง ํ์ํ ๊ฒฝ์ฐ๋ ๋ช๊ฐ์ง๊ฐ ์๋ค.
- ์คํ ์ํ์ ์๋ ํ๋ก์ธ์ค๊ฐ I/O ์์ฒญ ๋ฑ์ ์ํด ๋ด์ ์ํ๋ก ๋ฐ๋๋ ๊ฒฝ์ฐ
- ์คํ ์ํ์ ์๋ ํ๋ก์ธ์ค๊ฐ ํ์ด๋จธ ์ธํฐ๋ฝํธ ๋ฐ์์ ์ํด ์ค๋น ์ํ๋ก ๋ฐ๋๋ ๊ฒฝ์ฐ
- I/O ์์ฒญ์ผ๋ก ๋ด์ ์ํ์ ์๋ ํ๋ก์ธ์ค์ I/O ์์ ์ด ์๋ฃ๋์ด ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๊ณ ๊ทธ ๊ฒฐ๊ณผ ์ด ํ๋ก์ธ์ค์ ์ํ๊ฐ ์ค๋น ์ํ๋ก ๋ฐ๋๋ ๊ฒฝ์ฐ
- CPU์์ ์คํ์ํ์ ์๋ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ ๊ฒฝ์ฐ
CPU ์ค์ผ์ค๋ง ๋ฐฉ์์๋ ๋น์ ์ ํ ๋ฐฉ์๊ณผ ์ ์ ํ ๋ฐฉ์์ด ์๋ค.
๋น์ ์ ํ ๋ฐฉ์์ด๋ CPU๋ฅผ ํ๋ํ ํ๋ก์ธ์ค๊ฐ ์ค์ค๋ก CPU๋ฅผ ๋ฐ๋ฉํ๊ธฐ ์ ๊น์ง๋ CPU๋ฅผ ๋นผ์๊ธฐ์ง ์๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค.
์ ์ ํ ๋ฐฉ์์ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ๋๋ผ๋ ๊ฐ์ ๋ก ๋นผ์์ ์ ์๋ ์ค์ผ์ค๋ง ๋ฐฉ๋ฒ์ ๋งํ๋ค.
์์ ์ค์ผ์ค๋ง์ด ํ์ํ 4๊ฐ์ง ๊ฒฝ์ฐ์ค 1๋ฒ๊ณผ 4๋ฒ์ ๋น์ ์ ํ ์ค์ผ์ค๋ง์ ์์๊ฐ ๋๊ณ , 2๋ฒ๊ณผ 3๋ฒ์ ์ ์ ํ ์ค์ผ์ค๋ง ๋ฐฉ์์ ํด๋นํ๋ค.
CPU ์ค์ผ์ค๋ฌ๊ฐ ์ด๋ค ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ํ ๋นํด์ผ ํ ์ง ๊ฒฐ์ ํ๊ณ ๋๋ฉด ์ ํ๋ ํ๋ก์ธ์ค์๊ฒ ์ค์ ๋ก CPU๋ฅผ ์ด์ํ๋ ์์
์ด ํ์ํ๋ค.
์ด๋ ๊ฒ ์๋กญ๊ฒ ์ ํ๋ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น๋ฐ๊ณ ์์
์ ์ํํ ์ ์๋๋ก ํ๊ฒฝ์ค์ ์ ํ๋ ์ด์์ฒด์ ์ ์ฝ๋๋ฅผ ๋์คํจ์ฒ(dispatcher)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋์คํจ์ฒ๋ ํ์ฌ ์ํ ์ค์ด๋ ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ(context)์ ๊ทธ ํ๋ก์ธ์ค์ PCB์ ์ ์ฅํ๊ณ , ์๋กญ๊ฒ ์ ํ๋ ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ์ PCB๋ก๋ถํฐ ๋ณต์ํ ํ ๊ทธ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ๋๊ธฐ๋ ๊ณผ์ ์ ์ํํ๋ค.
์ค์ผ์ค๋ง ๊ธฐ๋ฒ์ ์ฑ๋ฅ ํ๊ฐ๋ ํฌ๊ฒ ์์คํ ๊ด์ ์ ์งํ์ ์ฌ์ฉ์ ๊ด์ ์ ์งํ๋ก ๋๋์ด์ง๋ค.
์์คํ ๊ด์ ์ ์งํ๋ก๋ CPU ์ด์ฉ๋ฅ ๊ณผ ์ฒ๋ฆฌ์์ด ์์ผ๋ฉฐ, ์ฌ์ฉ์ ๊ด์ ์ ์งํ๋ก๋ ์์์๊ฐ, ๋๊ธฐ์๊ฐ, ์๋ต์๊ฐ ๋ฑ ๊ธฐ๋ค๋ฆฐ ์๊ฐ๊ณผ ๊ด๋ จ๋ ์งํ๋ค์ด ์๋ค.
์์คํ ๊ด์ ์ ์งํ
CPU ์ด์ฉ๋ฅ : ์ ์ฒด ์๊ฐ ์ค์์ CPU๊ฐ ์ผ์ ํ ์๊ฐ์ ๋น์จ์ ๋ํ๋ธ๋ค. cpu๋ ๋๋ถ๋ถ ์์คํ ์ ํ๋๋ง ์กด์ฌํ๋ฏ๋ก CPU๊ฐ ์ผ์ํ์ง ์๋ ์ํ์ ๋จธ๋ฌด๋ฅด๋ ์๊ฐ์ ์ต๋ํ ์ค์ด๋ ๊ฒ์ด ์ค์ํ ๋ชฉํ์ด๋ค.
CPU์ฒ๋ฆฌ๋ : ์ฃผ์ด์ง ์๊ฐ ๋์ ์ค๋น ํ์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ํ๋ก์ธ์ค ์ค ๋ช๊ฐ๋ฅผ ๋๋ง์ณค๋์ง(CPU ๋ฒ์คํธ๋ฅผ ์๋ฃํ ํ๋ก์ธ์ค ๊ฐ์)๋ฅผ ๋ํ๋ธ๋ค.
์ฌ์ฉ์ ๊ด์ ์ ์งํ
์์์๊ฐ : ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์์ฒญํ ์์ ๋ถํฐ ์์ ์ด ์ํ๋ ๋งํผ CPU๋ฅผ ๋ค ์ฐ๊ณ CPU ๋ฒ์คํธ๊ฐ ๋๋ ๋๊น์ง ๊ฑธ๋ฆฐ ์๊ฐ, ์ฆ ์ค๋น ํ์์ ๊ธฐ๋ค๋ฆฐ ์๊ฐ๊ณผ ์ค์ ๋ก CPU๋ฅผ ์ฌ์ฉํ ์๊ฐ์ ํฉ
๋๊ธฐ์๊ฐ : CPU ๋ฒ์คํธ ๊ธฐ๊ฐ ์ค ํ๋ก์ธ์ค๊ฐ ์ค๋น ํ์์ CPU๋ฅผ ์ป๊ธฐ ์ํด ๊ธฐ๋ค๋ฆฐ ์๊ฐ์ ํฉ
์๋ต์๊ฐ : ํ๋ก์ธ์ค๊ฐ ์ค๋น ํ์ ๋ค์ด์จ ํ ์ฒซ ๋ฒ์งธ CPU๋ฅผ ํ๋ํ๊ธฐ๊น์ง ๊ธฐ๋ค๋ฆฐ ์๊ฐ
์ ์ ์ ์ถ ์ค์ผ์ค๋ง์ ํ๋ก์ธ์ค๊ฐ ์ค๋น ํ์ ๋์ฐฉํ ์๊ฐ ์์๋๋ก CPU๋ฅผ ํ ๋นํ๋ ๋ฐฉ์์ ๋งํ๋ค.
ํ๋ก์ธ์ค | CPU ๋ฒ์คํธ ์๊ฐ |
---|---|
P1 | 12 |
P2 | 3 |
P3 | 3 |
์์์ด๋ค. ํ๋ก์ธ์ค์ ๋์ฐฉ ์์๊ฐ p1, P2, P3๋ผ ํ๊ณ CPU ๋ฒ์คํธ ์๊ฐ์ด 12, 3, 3์ด๋ผ๊ณ ๊ฐ์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
๋ง์ฝ ํ๋ก์ธ์ค๊ฐ p2, p3, p1 ์์ผ๋ก ๋์ฐฉํ๋ค๊ณ ํ๋ค๋ฉด ์ด๋ฐ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
์ด ๋ ๊ฐ์ง ์ํฉ์ ๋น๊ตํด๋ณด๋ฉด CPU๋ฒ์คํธ๊ฐ ์งง์ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ๋์ฐฉํ ํ์์ ๊ฒฝ์ฐ ํ๊ท ๋๊ธฐ์๊ฐ์ด ํฌ๊ฒ ์ค์ด๋ค์์์ ๋ณผ ์ ์๋ค.
CPU๋ฅผ ๋จผ์ ์์ฒญํ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ๋จผ์ ํ ๋นํ๊ณ , ๊ทธ ํ๋ก์ธ์ค๊ฐ ์๋ฐ์ ์ผ๋ก CPU๋ฅผ ๋ฐ๋ฉํ ๋๊น์ง ๋นผ์์ง ์๋๋ค. ๋ฐ๋ผ์ ๋จผ์ ๋์ฐฉํ ํ๋ก์ธ์ค์ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ํ๊ท ๋๊ธฐ์๊ฐ์ด ํฌ๊ฒ ๋ฌ๋ผ์ง๋ค.
์ฆ CPU๋ฒ์คํธ๊ฐ ๊ธด ํ๋ก์ธ์ค๊ฐ ๋จผ์ ๋์ฐฉํ ๊ฒฝ์ฐ ํ๊ท ๋๊ธฐ์๊ฐ์ด ๊ธธ์ด์ง๋ ๋ฐ๋ฉด, ์งง์ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ๋์ฐฉํ๋ฉด ํ๊ท ๋๊ธฐ์๊ฐ์ด ์งง์์ง๊ฒ ๋๋ค.
๋ฐ๋ผ์ FCFS ์ค์ผ์ค๋ง์ ๊ฐ์ฅ ํฐ ๋จ์ ์ CPU ๋ฒ์คํธ๊ฐ ์งง์ ํ๋ก์ธ์ค๊ฐ CPU ๋ฒ์คํธ๊ฐ ๊ธด ํ๋ก์ธ์ค๋ณด๋ค ๋์ค์ ๋์ฐฉํด ์ค๋ ์๊ฐ์ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ ๊ฒ์ด๋ค.(์ฝ๋ณด์ด ํ์)
SJF ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ CPU ๋ฒ์คํธ๊ฐ ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค์๊ฒ ์ ์ผ ๋จผ์ CPU๋ฅผ ํ ๋นํ๋ ๋ฐฉ์์ด๋ค.
SJF ์๊ณ ๋ฆฌ์ฆ์ ๋น์ ์ ํ ๋ฐฉ์๊ณผ ์ ์ ํ ๋ฐฉ์ ๋ ๊ฐ์ง๋ก ๊ตฌํ๋ ์ ์๋ค. SJF์ ์ ์ ํ ๊ตฌํ ๋ฐฉ์์์๋ ํ์ฌ CPU์์ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ๋จ์ CPU ๋ฒ์คํธ ์๊ฐ๋ณด๋ค ๋ ์งง์ CPU ๋ฒ์คํธ ์๊ฐ์ ๊ฐ์ง๋ ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ ๊ฒฝ์ฐ CPU๋ฅผ ๋นผ์๊ฒ ๋๋ค.
ํ๋ก์ธ์ค | ๋์ฐฉ์๊ฐ | CPU ๋ฒ์คํธ ์๊ฐ |
---|---|---|
P1 | 0 | 14 |
P2 | 4 | 8 |
P3 | 8 | 2 |
P3 | 10 | 8 |
์ ์ ํ ๋ฐฉ์์์๋ ํ๋ก์ธ์ค๊ฐ ์๋กญ๊ฒ ๋์ฐฉํ๊ฑฐ๋ ์์ ์ด ๋๋ ๋๋ง๋ค CPU ๋ฒ์คํธ ์๊ฐ์ ๋น๊ตํ๊ฒ ๋๋ค.
SJF ์๊ณ ๋ฆฌ์ฆ์ด ํ๊ท ๋๊ธฐ์๊ฐ์ ์ต์ํํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๊ธฐ๋ ํ์ง๋ง ์์คํ ์์ ํ๊ท ์ ์ค์ด๋ ๊ฒ์ด ํญ์ ์ข์ ๋ฐฉ์์ด๋ผ๊ณ ๋ ๋งํ ์ ์๋ค.
CPU ๋ฒ์คํธ๊ฐ ์งง์ ํ๋ก์ธ์ค์๊ฒ๋ง CPU๋ฅผ ํ ๋นํ ๊ฒฝ์ฐ CPU ๋ฒ์คํธ๊ฐ ๊ธด ํ๋ก์ธ์ค๋ ์ค๋น ํ์ ์ค ์์ ๊ณ์ํด์ ๊ธฐ๋ค๋ ค์ผ ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
์๋ฅผ ๋ค์ด์ ์ด๋ฌํ ๊ฒฝ์ฐ์ด๋ค.
ํ๋ก์ธ์ค | ๋์ฐฉ์๊ฐ | CPU ๋ฒ์คํธ ์๊ฐ |
---|---|---|
P1 | 0 | 10 |
P2 | 4 | 20 |
P3 | 8 | 30 |
P4 | 10 | 1000 |
P5 | 20 | 100 |
P6 | 24 | 200 |
P7 | 30 | 300 |
CPU ๋ฒ์คํธ ์๊ฐ์ด ๊ฐ๊ฐ 10, 20 , 30์ธ ํ๋ก์ธ์ค p1, p2, p3๊ฐ ์ํ๋ ํ CPU ๋ฒ์คํธ ์๊ฐ์ด 1000์ธ ํ๋ก์ธ์ค p4๋ ๊ทธ ๋ค์์ ์ค๋ p5, p6, p7์ CPU ๋ฒ์คํธ ์๊ฐ์ด ์งง์๋ฐ๋ค ์ฌ๊ธฐ์ ๋ง์ฝ ๊ณ์ํด์ CPU ๋ฒ์คํธ ์๊ฐ์ด ์งง์ ํ๋ก์ธ์ค๋ค์ด ๋์ฐฉํ๋ค๋ฉด p4๋ ์์ํ CPU๋ฅผ ํ ๋น๋ฐ์ง ๋ชปํ ์๋ ์๋ค. ์ด๋ฌํ ํ์์ ๊ธฐ์ ํ์์ด๋ผ๊ณ ํ๋ค. ์ด๋ SJF ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ฅ ์ฌ๊ฐํ ๋ฌธ์ ์ ์ด๋ค.
์ฐ์ ์์ ์ค์ผ์ค๋ง์ด๋ ์ค๋น ํ์์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๋ค ์ค ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ํ๋ก์ธ์ค์๊ฒ ์ ์ผ ๋จผ์ CPU๋ฅผ ํ ๋นํ๋ ๋ฐฉ์์ ๋งํ๋ค.
์ฐ์ ์์๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ์์๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ ์ ์๋ค. CPU ๋ฒ์คํธ ์๊ฐ์ ์ฐ์ ์์ ๊ฐ์ผ๋ก ์ ์ํ๋ฉด ์ด๋ SJF ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋์ผํ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค. ๋ํ ์ฐ์ ์์ ์ค์ผ์ค๋ง๋ ๋น์ ์ ํ ๋ฐฉ์๊ณผ ์ ์ ํ ๋ฐฉ์์ผ๋ก ๊ฐ๊ฐ ๊ตฌํํ ์ ์๋ค.
์ฐ์ ์์ ์ค์ผ์ค๋ง ๋ฐฉ์์์์ ๋ฌธ์ ์ ์ค ํ๋๋ SJF ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ฐ์ด ๊ธฐ์ ํ์์ด ๋ฐ์ํ ์ ์๋ค๋ ์ ์ด๋ค.
์ด๋ฌํ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋
ธํ(aging)๊ธฐ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค. ๋
ธํ ๊ธฐ๋ฒ์ด๋ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ๊ธธ์ด์ง๋ฉด ์ฐ์ ์์๋ฅผ ์กฐ๊ธ์ฉ ๋์ฌ, ์ธ์ ๊ฐ๋ ๊ฐ์ฅ ๋์ ์ฐ์ ์์๊ฐ ๋์ด CPU๋ฅผ ํ ๋น๋ฐ์ ์ ์๊ฒ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ผ์ด๋ ๋ก๋น ์ค์ผ์ค๋ง(Round Robin Scheduling)์ ์๋ถํ ์์คํ ์ ์ฑ์ง์ ๊ฐ์ฅ ์ ํ์ฉํ ์๋ก์ด ์๋ฏธ์ ์ค์ผ์ค๋ง ๋ฐฉ์์ด๋ผ ํ ์ ์๋ค.
๋ผ์ด๋ ๋ก๋น ์ค์ผ์ค๋ง์์๋ ๊ฐ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฐ์์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์๊ฐ์ด ํน์ ์๊ฐ์ผ๋ก ์ ํ๋๋ฉฐ, ์ด ์๊ฐ์ด ๊ฒฝ๊ณผํ๋ฉด ํด๋น ํ๋ก์ธ์ค๋ก๋ถํฐ CPU๋ฅผ ํ์ํด ์ค๋น ํ์ ์ค ์ ์๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ํ ๋นํ๋ค. ์ด๋ ๊ฐ ํ๋ก์ธ์ค๋ง๋ค ํ ๋ฒ์ CPU๋ฅผ ์ฐ์์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์ต๋์๊ฐ์ ํ ๋น์๊ฐ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์๋์ ๊ฐ์ด ํ๋ก์ธ์ค p1, p2, p3๊ฐ ์์๋๋ก ๋์ฐฉํ๋ค๊ณ ๊ฐ์ ํ์๋
ํ๋ก์ธ์ค | CPU ๋ฒ์คํธ ์๊ฐ |
---|---|
P1 | 24 |
P2 | 17 |
P3 | 3 |
ํ ๋น์๊ฐ์ด 10์ธ ๋ผ์ด๋ ๋ก๋น ์ค์ผ์ค๋ง์ ์ ์ฉํ๋ฉด ๊ฒฐ๊ณผ๋ ๋ค์ ์ฐจํธ์ ๊ฐ๋ค.
๋ผ์ด๋ ๋ก๋น ์ค์ผ์ค๋ง์ ์ผ๋ฐ์ ์ผ๋ก SJF ๋ฐฉ์๋ณด๋ค ํ๊ท ๋๊ธฐ ์๊ฐ์ ๊ธธ์ง๋ง ์๋ต์๊ฐ์ด ๋ ์งง๋ค.
ํ ๋น์๊ฐ์ด ๋ง๋ฃ๋์ด CPU๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ๐ฐํ์ด๋จธ ์ธํฐ๋ฝํธ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค.
๋ผ์ด๋ ๋ก๋น ์ค์ผ์ค๋ง์ ๊ธฐ๋ณธ์ ์ธ ๋ชฉ์ ์ CPU ๋ฒ์คํธ ์๊ฐ์ด ์งง์ ํ๋ก์ธ์ค๊ฐ ๋นจ๋ฆฌ CPU๋ฅผ ์ป์ ์ ์๋๋ก ํ๋ ๋์์, CPU ๋ฒ์คํธ ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๊ฐ ๋ถ์ด์ต์ ๋นํ์ง ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
๋ฉํฐ๋ ๋ฒจ ํ(multi-level queue)๋ ์ค๋น ํ๋ฅผ ์ฌ๋ฌ๊ฐ๋ก ๋ถํ ํด ๊ด๋ฆฌํ๋ ์ค์ผ์ค๋ง ๊ธฐ๋ฒ์ ๋งํ๋ค. ์ฆ ํ๋ก์ธ์ค๋ค์ด CPU๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ธฐ ์ํด ํ ์ค๋ก ์๋ ๊ฒ์ด ์๋ ์ฌ๋ฌ ์ค๋ก ์๋ ๊ฒ์ด๋ค. ์ฝ๊ฒ๋งํด ํ๋ก์ธ์ค๋ค์ด CPU๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ธฐ ์ํด ํ ์ค๋ก ์๋ ๊ฒ์ด ์๋๋ผ ์ฌ๋ฌ ์ค๋ก ์๋ ๊ฒ์ด๋ค.
CPU๋ ํ๋๋ฐ์ ์์ผ๋ฏ๋ก ์ด๋ค ์ค์ ์ ์๋ ํ๋ก์ธ์ค๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ค์ผ์ค๋ง ํ ๊ฒ์ธ๊ฐ ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๋ฉํฐ๋ ๋ฒจ ํ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฑ๊ฒฉ์ด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ ๋ณ๋๋ก ๊ด๋ฆฌํ๊ณ , ํ๋ก์ธ์ค์ ์ฑ๊ฒฉ์ ๋ง๋ ์ค์ผ์ค๋ง์ ์ ์ฉํ๊ธฐ ์ํด ์ค๋น ํ๋ฅผ ๋ณ๋๋ก ๋๊ฒ ๋๋ค.
๋ฉํฐ๋ ๋ฒจ ํ์์ ์ค๋น ํ๋ ๋ํํ ์์ ์ ๋ด๊ธฐ ์ํ ์ ์ ํ(foreground queue)์ ๊ณ์ฐ ์์ฃผ์ ์์ ์ ๋ด๊ธฐ ์ํ ํ์ ํ(background queue)๋ก ๋ถํ ํ์ฌ ์ด์๋๋ค.
์ ์ ํ์์๋ ์๋ต์๊ฐ์ ์งง๊ฒ ํ๊ธฐ ์ํด ๋ผ์ด๋ ๋ก๋น ์ค์ผ์ค๋ง์ ์ฌ์ฉํ๊ณ ,
๊ณ์ฐ ์์ฃผ์ ์์
์ ์ํ ํ์ ํ์์๋ ์๋ต์๊ฐ์ด ํฐ ์๋ฏธ๋ฅผ ๊ฐ์ง ์๊ธฐ ๋๋ฌธ์ FCFS ์ค์ผ์ค๋ง ๊ธฐ๋ฒ์ ์ฌ์ฉํด ๋ฌธ๋งฅ๊ตํ ์ค๋ฒํค๋๋ฅผ ์ค์ธ๋ค.
๋ฉํฐ๋ ๋ฒจ ํ์์๋ ๋ ๋ค๋ฅธ ์ค์ผ์ค๋ง์ด ํ์ํ๋ฐ, ์ด๋ ํ ์์ฒด์ ๋ํ ์ค์ผ์ค๋ง์ด๋ค. ์ฌ๋ฌ ๊ฐ์ ์ค๋น ํ์ ๋ํด์ ์ด๋ ํ์ ๋จผ์ CPU๋ฅผ ํ ๋นํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ ์ค์ผ์ค๋ง์ด ํ์ํ ๊ฒ์ด๋ค.
ํ์ ๋ํ ์ค์ผ์ค๋ง์ผ๋ก ๊ฐ์ฅ ์ฝ๊ฒ ์๊ฐํ ์ ์๋ ๋ฐฉ์์ ๊ณ ์ ์ฐ์ ์์ ๋ฐฉ์(fixed priority scheduling)์ด๋ค. ์ด ๋ฐฉ์์์๋ ํ์ ๊ณ ์ ์ ์ธ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํด ์ฐ์ ์์๊ฐ ๋์ ํ๋ฅผ ๋จผ์ ์๋น์คํ๊ณ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ ์ฐ์ ์์๊ฐ ๋์ ํ๋ฅผ ๋น์ด ์์ ๋์๋ง ์๋น์คํ๊ฒ ๋๋ค.
๋ฉํฐ๋ ๋ฒจ ํผ๋๋ฐฑ ํ(Multilevel Feedback Queue)๋ CPU๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ ์ค ์ธ์ด๋ค๋ ์ธก๋ฉด์์ ๋ฉํฐ๋ ๋ฒจ ํ์ ๋์ผํ๋, ํ๋ก์ธ์ค๊ฐ ํ๋์ ํ์์ ๋ค๋ฅธ ํ๋ก ์ด๋ ๊ฐ๋ฅํ๋ค๋ ์ ์ด ๋ค๋ฅด๋ค.
๋ฉํฐ๋ ๋ฒจ ํผ๋๋ฒก ํ์ ๋ํ์ ์ธ ๋ฐฉ์์ ๋ค์ ์ฌ์ง๊ณผ ๊ฐ๋ค.
์์์ ์๋ ํ์ผ์๋ก ์ฐ์ ์์๊ฐ ๋๊ณ , ์์ 2๊ฐ์ ํ๋ ๊ฐ๊ฐ ํ ๋น์๊ฐ์ด 5์ 10์ธ ๋ผ์ด๋ ๋ก๋น ์ค์ผ์ค๋ง์ ์ฌ์ฉํ๋ค. ์ธ ๋ฒ์งธ ํ๋ FCFS ์ค์ผ์ค๋ง ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค. ํ๋ก์ธ์ค๊ฐ ์ค๋น ํ์ ๋์ฐฉํ๋ฉด ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ํ์ ์ค์ ์ ๋ค. ๊ทธ๋ฌ๋ฉด CPU ์ฌ์ฉ์๊ฐ์ด ์งง์ ๋ํํ ํ๋ก์ธ์ค๋ค์ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ํ์์ ๋นจ๋ฆฌ ์๋น์ค๋ฐ๊ณ ์์ ์ ์๋ฃํ ์ ์๋ค.
๊ทธ๋ฌ๋ CPU ๋ฒ์คํธ ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๋ค์ 5๋งํผ์ ์๊ฐ ๋์ CPU๋ฅผ ์ฌ์ฉํ๊ณ ๋ ์์ ์ด ์๋ฃํ ์ ์๊ธฐ ๋๋ฌธ์ ํ ๋น ์๊ฐ์ด 10์ธ ํ์ํ๋ก ๋ด๋ ค๊ฐ์ ์ค ์๊ฒ ๋๋ค. ์ดํ ํ์ ํ์์ ๋ณธ์ธ ์ฐจ๋ก๊ฐ ๋์ด ํ ๋น์๊ฐ 10์ ์ถ๊ฐ๋ก ์ฌ์ฉํ๊ณ ๋ ์์ ์ด ์๋ฃ๋์ ์์ผ๋ฉด, ์ด ํ๋ก์ธ์ค๋ CPU๋ฅผ ์ค๋ ์ฌ์ฉํ๋ ๊ณ์ฐ ์์ฃผ์ ํ๋ก์ธ์ค๋ก ๊ฐ์ฃผ๋์ด ์ตํ์ ํ๋ก ์ด๋ํ๊ฒ ๋๊ณ FCFS ์ค์ผ์ค๋ง์ ์ ์ฉ๋ฐ๊ฒ ๋๋ค.
ํ์ ๋ํ ์ค์ผ์ค๋ง ๋ฐฉ์์ผ๋ก๋ ์ต์์ ํ๊ฐ ์ฐ์ ์ ์ผ๋ก CPU๋ฅผ ๋ฐฐ๋น๋ฐ๊ณ , ์์ ํ๊ฐ ๋น์์ ๋์๋ง ํ์ ํ์ ์๋ ํ๋ก์ธ์ค๋ค์ด CPU๋ฅผ ํ ๋น๋ฐ์ ์ ์๊ฒ ๋๋ค.