ํ๋ก์ธ์ค๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ผ๋ก ๋์คํฌ๋ก๋ถํฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด CPU ์ ํ ๋น์ ๋ฐ์ ์ ์๋ ๊ฒ์ ๋งํ๋ค. ์ด์์ฒด์ ๋ก๋ถํฐ ์ฃผ์ ๊ณต๊ฐ, ํ์ผ, ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ํ ๋น๋ฐ์ผ๋ฉฐ ์ด๊ฒ๋ค์ ์ด์นญํ์ฌ ํ๋ก์ธ์ค๋ผ๊ณ ํ๋ค. ๊ตฌ์ฒด์ ์ผ๋ก ์ดํด๋ณด๋ฉด ํ๋ก์ธ์ค๋ ํจ์์ ๋งค๊ฐ๋ณ์, ๋ณต๊ท ์ฃผ์์ ๋ก์ปฌ ๋ณ์์ ๊ฐ์ ์์ ์๋ฃ๋ฅผ ๊ฐ๋ ํ๋ก์ธ์ค ์คํ๊ณผ ์ ์ญ ๋ณ์๋ค์ ์๋กํ๋ ๋ฐ์ดํฐ ์น์ ์ ํฌํจํ๋ค. ๋ํ ํ๋ก์ธ์ค๋ ํ๋ก์ธ์ค ์คํ ์ค์ ๋์ ์ผ๋ก ํ ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ์ธ ํ์ ํฌํจํ๋ค.
PCB ๋ ํน์ ํ๋ก์ธ์ค์ ๋ํ ์ค์ํ ์ ๋ณด๋ฅผ ์ ์ฅ ํ๊ณ ์๋ ์ด์์ฒด์ ์ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ธ์ค์ ์์ฑ๊ณผ ๋์์ ๊ณ ์ ํ PCB ๋ฅผ ์์ฑ ํ๋ค. ํ๋ก์ธ์ค๋ CPU ๋ฅผ ํ ๋น๋ฐ์ ์์ ์ ์ฒ๋ฆฌํ๋ค๊ฐ๋ ํ๋ก์ธ์ค ์ ํ์ด ๋ฐ์ํ๋ฉด ์งํํ๋ ์์ ์ ์ ์ฅํ๊ณ CPU ๋ฅผ ๋ฐํํด์ผ ํ๋๋ฐ, ์ด๋ ์์ ์ ์งํ ์ํฉ์ ๋ชจ๋ PCB ์ ์ ์ฅํ๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ CPU ๋ฅผ ํ ๋น๋ฐ๊ฒ ๋๋ฉด PCB ์ ์ ์ฅ๋์ด์๋ ๋ด์ฉ์ ๋ถ๋ฌ์ ์ด์ ์ ์ข ๋ฃ๋๋ ์์ ๋ถํฐ ๋ค์ ์์ ์ ์ํํ๋ค.
PCB ์ ์ ์ฅ๋๋ ์ ๋ณด
- ํ๋ก์ธ์ค ์๋ณ์(Process ID, PID) : ํ๋ก์ธ์ค ์๋ณ๋ฒํธ
- ํ๋ก์ธ์ค ์ํ : new, ready, running, waiting, terminated ๋ฑ์ ์ํ๋ฅผ ์ ์ฅ
- ํ๋ก๊ทธ๋จ ์นด์ดํฐ : ํ๋ก์ธ์ค๊ฐ ๋ค์์ ์คํํ ๋ช ๋ น์ด์ ์ฃผ์
- CPU ๋ ์ง์คํฐ
- CPU ์ค์ผ์ฅด๋ง ์ ๋ณด : ํ๋ก์ธ์ค์ ์ฐ์ ์์, ์ค์ผ์ค ํ์ ๋ํ ํฌ์ธํฐ ๋ฑ
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋ณด : ํ์ด์ง ํ ์ด๋ธ ๋๋ ์ธ๊ทธ๋จผํธ ํ ์ด๋ธ ๋ฑ๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ํฌํจ
- ์ ์ถ๋ ฅ ์ํ ์ ๋ณด : ํ๋ก์ธ์ค์ ํ ๋น๋ ์ ์ถ๋ ฅ ์ฅ์น๋ค๊ณผ ์ด๋ฆฐ ํ์ผ ๋ชฉ๋ก
- ์ด์นด์ดํ ์ ๋ณด : ์ฌ์ฉ๋ CPU ์๊ฐ, ์๊ฐ์ ํ, ๊ณ์ ๋ฒํธ ๋ฑ
์ค๋ ๋๋ ํ๋ก์ธ์ค์ ์คํ ๋จ์๋ผ๊ณ ํ ์ ์๋ค. ํ ํ๋ก์ธ์ค ๋ด์์ ๋์๋๋ ์ฌ๋ฌ ์คํ ํ๋ฆ์ผ๋ก ํ๋ก์ธ์ค ๋ด์ ์ฃผ์ ๊ณต๊ฐ์ด๋ ์์์ ๊ณต์ ํ ์ ์๋ค. ์ค๋ ๋๋ ์ค๋ ๋ ID, ํ๋ก๊ทธ๋จ ์นด์ดํฐ, ๋ ์ง์คํฐ ์งํฉ, ๊ทธ๋ฆฌ๊ณ ์คํ์ผ๋ก ๊ตฌ์ฑ๋๋ค. ๊ฐ์ ํ๋ก์ธ์ค์ ์ํ ๋ค๋ฅธ ์ค๋ ๋์ ์ฝ๋, ๋ฐ์ดํฐ ์น์ , ๊ทธ๋ฆฌ๊ณ ์ด๋ฆฐ ํ์ผ์ด๋ ์ ํธ์ ๊ฐ์ ์ด์์ฒด์ ์์๋ค์ ๊ณต์ ํ๋ค. ํ๋์ ํ๋ก์ธ์ค๋ฅผ ๋ค์์ ์คํ ๋จ์๋ก ๊ตฌ๋ถํ์ฌ ์์์ ๊ณต์ ํ๊ณ ์์์ ์์ฑ๊ณผ ๊ด๋ฆฌ์ ์ค๋ณต์ฑ์ ์ต์ํํ์ฌ ์ํ ๋ฅ๋ ฅ์ ํฅ์์ํค๋ ๊ฒ์ ๋ฉํฐ์ค๋ ๋ฉ์ด๋ผ๊ณ ํ๋ค. ์ด ๊ฒฝ์ฐ ๊ฐ๊ฐ์ ์ค๋ ๋๋ ๋ ๋ฆฝ์ ์ธ ์์ ์ ์ํํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ์์ ์คํ๊ณผ PC ๋ ์ง์คํฐ ๊ฐ์ ๊ฐ๊ณ ์๋ค.
์คํ์ ํจ์ ํธ์ถ ์ ์ ๋ฌ๋๋ ์ธ์, ๋๋์๊ฐ ์ฃผ์๊ฐ ๋ฐ ํจ์ ๋ด์์ ์ ์ธํ๋ ๋ณ์ ๋ฑ์ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด๋ฏ๋ก ์คํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ ๋ฆฝ์ ์ด๋ผ๋ ๊ฒ์ ๋ ๋ฆฝ์ ์ธ ํจ์ ํธ์ถ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๊ณ ์ด๋ ๋ ๋ฆฝ์ ์ธ ์คํ ํ๋ฆ์ด ์ถ๊ฐ๋๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์ค๋ ๋์ ์ ์์ ๋ฐ๋ผ ๋ ๋ฆฝ์ ์ธ ์คํ ํ๋ฆ์ ์ถ๊ฐํ๊ธฐ ์ํ ์ต์ ์กฐ๊ฑด์ผ๋ก ๋ ๋ฆฝ๋ ์คํ์ ํ ๋นํ๋ค.
PC ๊ฐ์ ์ค๋ ๋๊ฐ ๋ช ๋ น์ด์ ์ด๋๊น์ง ์ํํ์๋์ง๋ฅผ ๋ํ๋๊ฒ ๋๋ค. ์ค๋ ๋๋ CPU ๋ฅผ ํ ๋น๋ฐ์๋ค๊ฐ ์ค์ผ์ค๋ฌ์ ์ํด ๋ค์ ์ ์ ๋นํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ช ๋ น์ด๊ฐ ์ฐ์์ ์ผ๋ก ์ํ๋์ง ๋ชปํ๊ณ ์ด๋ ๋ถ๋ถ๊น์ง ์ํํ๋์ง ๊ธฐ์ตํ ํ์๊ฐ ์๋ค. ๋ฐ๋ผ์ PC ๋ ์ง์คํฐ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ํ ๋นํ๋ค.
ํ๋ก์ธ์ค๋ฅผ ์ด์ฉํ์ฌ ๋์์ ์ฒ๋ฆฌํ๋ ์ผ์ ์ค๋ ๋๋ก ๊ตฌํํ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๊ณผ ์์คํ ์์ ์๋ชจ๊ฐ ์ค์ด๋ค๊ฒ ๋๋ค. ์ค๋ ๋ ๊ฐ์ ํต์ ์ด ํ์ํ ๊ฒฝ์ฐ์๋ ๋ณ๋์ ์์์ ์ด์ฉํ๋ ๊ฒ์ด ์๋๋ผ ์ ์ญ ๋ณ์์ ๊ณต๊ฐ ๋๋ ๋์ ์ผ๋ก ํ ๋น๋ ๊ณต๊ฐ์ธ Heap ์์ญ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค ๊ฐ ํต์ ๋ฐฉ๋ฒ์ ๋นํด ์ค๋ ๋ ๊ฐ์ ํต์ ๋ฐฉ๋ฒ์ด ํจ์ฌ ๊ฐ๋จํ๋ค. ์ฌ์ง์ด ์ค๋ ๋์ context switch ๋ ํ๋ก์ธ์ค context switch ์๋ ๋ฌ๋ฆฌ ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋น์ธ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ ๋น ๋ฅด๋ค. ๋ฐ๋ผ์ ์์คํ ์ throughtput ์ด ํฅ์๋๊ณ ์์ ์๋ชจ๊ฐ ์ค์ด๋ค๋ฉฐ ์์ฐ์ค๋ฝ๊ฒ ํ๋ก๊ทธ๋จ์ ์๋ต ์๊ฐ์ด ๋จ์ถ๋๋ค. ์ด๋ฌํ ์ฅ์ ๋๋ฌธ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ก ํ ์ ์๋ ์์ ๋ค์ ํ๋์ ํ๋ก์ธ์ค์์ ์ค๋ ๋๋ก ๋๋ ์ํํ๋ ๊ฒ์ด๋ค.
๋ฉํฐ ํ๋ก์ธ์ค ๊ธฐ๋ฐ์ผ๋ก ํ๋ก๊ทธ๋๋ฐํ ๋๋ ํ๋ก์ธ์ค ๊ฐ ๊ณต์ ํ๋ ์์์ด ์๊ธฐ ๋๋ฌธ์ ๋์ผํ ์์์ ๋์์ ์ ๊ทผํ๋ ์ผ์ด ์์์ง๋ง ๋ฉํฐ ์ค๋ ๋ฉ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก๊ทธ๋๋ฐํ ๋๋ ์ด ๋ถ๋ถ์ ์ ๊ฒฝ์จ์ค์ผ ํ๋ค. ์๋ก ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๋ฐ์ดํฐ์ ํ ์์ญ์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ค ์ค๋ ๋๊ฐ ๋ค๋ฅธ ์ค๋ ๋์์ ์ฌ์ฉ์ค์ธ ๋ณ์๋ ์๋ฃ๊ตฌ์กฐ์ ์ ๊ทผํ์ฌ ์๋ฑํ ๊ฐ์ ์ฝ์ด์ค๊ฑฐ๋ ์์ ํ ์ ์๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฉํฐ์ค๋ ๋ฉ ํ๊ฒฝ์์๋ ๋๊ธฐํ ์์ ์ด ํ์ํ๋ค. ๋๊ธฐํ๋ฅผ ํตํด ์์ ์ฒ๋ฆฌ ์์๋ฅผ ์ปจํธ๋กค ํ๊ณ ๊ณต์ ์์์ ๋ํ ์ ๊ทผ์ ์ปจํธ๋กค ํ๋ ๊ฒ์ด๋ค. ํ์ง๋ง ์ด๋ก ์ธํด ๋ณ๋ชฉํ์์ด ๋ฐ์ํ์ฌ ์ฑ๋ฅ์ด ์ ํ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ณผ๋ํ ๋ฝ์ผ๋ก ์ธํ ๋ณ๋ชฉํ์์ ์ค์ฌ์ผ ํ๋ค.
๋ฉํฐ ์ค๋ ๋๋ ๋ฉํฐ ํ๋ก์ธ์ค๋ณด๋ค ์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํ๊ณ ๋ฌธ๋งฅ ์ ํ์ด ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ์ค๋ฅ๋ก ์ธํด ํ๋์ ์ค๋ ๋๊ฐ ์ข ๋ฃ๋๋ฉด ์ ์ฒด ์ค๋ ๋๊ฐ ์ข ๋ฃ๋ ์ ์๋ค๋ ์ ๊ณผ ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ์๊ณ ์๋ค. ๋ฐ๋ฉด ๋ฉํฐ ํ๋ก์ธ์ค ๋ฐฉ์์ ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ฃฝ๋๋ผ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์๋ ์ํฅ์ ๋ผ์น์ง ์๊ณ ์ ์์ ์ผ๋ก ์ํ๋๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ๋ฉํฐ ์ค๋ ๋๋ณด๋ค ๋ง์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๊ณผ CPU ์๊ฐ์ ์ฐจ์งํ๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค. ์ด ๋ ๊ฐ์ง๋ ๋์์ ์ฌ๋ฌ ์์ ์ ์ํํ๋ค๋ ์ ์์ ๊ฐ์ง๋ง ์ ์ฉํด์ผ ํ๋ ์์คํ ์ ๋ฐ๋ผ ์ ํฉ/๋ถ์ ํฉ์ด ๊ตฌ๋ถ๋๋ค. ๋ฐ๋ผ์ ๋์ ์์คํ ์ ํน์ง์ ๋ฐ๋ผ ์ ํฉํ ๋์ ๋ฐฉ์์ ์ ํํ๊ณ ์ ์ฉํด์ผ ํ๋ค.
ํ๋ก์ธ์ค๋ฅผ ์ค์ผ์ค๋งํ๊ธฐ ์ํ Queue ์๋ ์ธ ๊ฐ์ง ์ข ๋ฅ๊ฐ ์กด์ฌํ๋ค.
- Job Queue : ํ์ฌ ์์คํ ๋ด์ ์๋ ๋ชจ๋ ํ๋ก์ธ์ค์ ์งํฉ
- Ready Queue : ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์์ผ๋ฉด์ CPU ๋ฅผ ์ก์์ ์คํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค์ ์งํฉ
- Device Queue : Device I/O ์์ ์ ๋๊ธฐํ๊ณ ์๋ ํ๋ก์ธ์ค์ ์งํฉ
๊ฐ๊ฐ์ Queue ์ ํ๋ก์ธ์ค๋ค์ ๋ฃ๊ณ ๋นผ์ฃผ๋ ์ค์ผ์ค๋ฌ์๋ ํฌ๊ฒ ์ธ ๊ฐ์ง ์ข ๋ฅ๊ฐ ์กด์ฌํ๋ค.
๋ฉ๋ชจ๋ฆฌ๋ ํ์ ๋์ด ์๋๋ฐ ๋ง์ ํ๋ก์ธ์ค๋ค์ด ํ๊บผ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ฌ ๊ฒฝ์ฐ, ๋์ฉ๋ ๋ฉ๋ชจ๋ฆฌ(์ผ๋ฐ์ ์ผ๋ก ๋์คํฌ)์ ์์๋ก ์ ์ฅ๋๋ค. ์ด pool ์ ์ ์ฅ๋์ด ์๋ ํ๋ก์ธ์ค ์ค ์ด๋ค ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ์ฌ ready queue ๋ก ๋ณด๋ผ์ง ๊ฒฐ์ ํ๋ ์ญํ ์ ํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ๋์คํฌ ์ฌ์ด์ ์ค์ผ์ค๋ง์ ๋ด๋น.
- ํ๋ก์ธ์ค์ memory(๋ฐ ๊ฐ์ข ๋ฆฌ์์ค)๋ฅผ ํ ๋น(admit)
- degree of Multiprogramming ์ ์ด
๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ์ฌ๋ผ๊ฐ๋ ๊ฒ) ๋ช ๊ฐ์ ํ๋ก๊ทธ๋จ์ด ์ฌ๋ผ๊ฐ ๊ฒ์ธ์ง๋ฅผ ์ ์ด - ํ๋ก์ธ์ค์ ์ํ
new -> ready(in memory)
cf) ๋ฉ๋ชจ๋ฆฌ์ ํ๋ก๊ทธ๋จ์ด ๋๋ฌด ๋ง์ด ์ฌ๋ผ๊ฐ๋, ๋๋ฌด ์ ๊ฒ ์ฌ๋ผ๊ฐ๋ ์ฑ๋ฅ์ด ์ข์ง ์์ ๊ฒ์ด๋ค. ์ฐธ๊ณ ๋ก time sharing system ์์๋ ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์๋ค. ๊ทธ๋ฅ ๊ณง๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ready ์ํ๊ฐ ๋๋ค.
- CPU ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ ์ค์ผ์ค๋ง์ ๋ด๋น.
- Ready Queue ์ ์กด์ฌํ๋ ํ๋ก์ธ์ค ์ค ์ด๋ค ํ๋ก์ธ์ค๋ฅผ running ์ํฌ์ง ๊ฒฐ์ .
- ํ๋ก์ธ์ค์ CPU ๋ฅผ ํ ๋น(scheduler dispatch)
- ํ๋ก์ธ์ค์ ์ํ
ready -> running -> waiting -> ready
- ์ฌ์ ๊ณต๊ฐ ๋ง๋ จ์ ์ํด ํ๋ก์ธ์ค๋ฅผ ํต์งธ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ๋์คํฌ๋ก ์ซ์๋ (swapping)
- ํ๋ก์ธ์ค์๊ฒ์ memory ๋ฅผ deallocate
- degree of Multiprogramming ์ ์ด
- ํ ์์คํ ์์ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ฌด ๋ง์ ํ๋ก๊ทธ๋จ์ด ๋์์ ์ฌ๋ผ๊ฐ๋ ๊ฒ์ ์กฐ์ ํ๋ ์ค์ผ์ค๋ฌ.
- ํ๋ก์ธ์ค์ ์ํ
ready -> suspended
Suspended(stopped) : ์ธ๋ถ์ ์ธ ์ด์ ๋ก ํ๋ก์ธ์ค์ ์ํ์ด ์ ์ง๋ ์ํ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ๋ด๋ ค๊ฐ ์ํ๋ฅผ ์๋ฏธํ๋ค. ํ๋ก์ธ์ค ์ ๋ถ ๋์คํฌ๋ก swap out ๋๋ค. blocked ์ํ๋ ๋ค๋ฅธ I/O ์์ ์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ์ด๊ธฐ ๋๋ฌธ์ ์ค์ค๋ก ready state ๋ก ๋์๊ฐ ์ ์์ง๋ง ์ด ์ํ๋ ์ธ๋ถ์ ์ธ ์ด์ ๋ก suspending ๋์๊ธฐ ๋๋ฌธ์ ์ค์ค๋ก ๋์๊ฐ ์ ์๋ค.
์ค์ผ์ค๋ง ๋์์ Ready Queue ์ ์๋ ํ๋ก์ธ์ค๋ค์ด๋ค.
- ๋จผ์ ์จ ๊ณ ๊ฐ์ ๋จผ์ ์๋น์คํด์ฃผ๋ ๋ฐฉ์, ์ฆ ๋จผ์ ์จ ์์๋๋ก ์ฒ๋ฆฌ.
- ๋น์ ์ ํ(Non-Preemptive) ์ค์ผ์ค๋ง
์ผ๋จ CPU ๋ฅผ ์ก์ผ๋ฉด CPU burst ๊ฐ ์๋ฃ๋ ๋๊น์ง CPU ๋ฅผ ๋ฐํํ์ง ์๋๋ค. ํ ๋น๋์๋ CPU ๊ฐ ๋ฐํ๋ ๋๋ง ์ค์ผ์ค๋ง์ด ์ด๋ฃจ์ด์ง๋ค.
- convoy effect
์์์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๊ฐ ๋จผ์ ๋๋ฌํ์ฌ ํจ์จ์ฑ์ ๋ฎ์ถ๋ ํ์์ด ๋ฐ์ํ๋ค.
- ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ๋์ฐฉํ์ด๋ CPU burst time ์ด ์งง์ ํ๋ก์ธ์ค์๊ฒ ์ ํ ๋น
- ๋น์ ์ ํ(Non-Preemptive) ์ค์ผ์ค๋ง
- starvation
ํจ์จ์ฑ์ ์ถ๊ตฌํ๋๊ฒ ๊ฐ์ฅ ์ค์ํ์ง๋ง ํน์ ํ๋ก์ธ์ค๊ฐ ์ง๋์น๊ฒ ์ฐจ๋ณ๋ฐ์ผ๋ฉด ์๋๋ ๊ฒ์ด๋ค. ์ด ์ค์ผ์ค๋ง์ ๊ทน๋จ์ ์ผ๋ก CPU ์ฌ์ฉ์ด ์งง์ job ์ ์ ํธํ๋ค. ๊ทธ๋์ ์ฌ์ฉ ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๋ ๊ฑฐ์ ์์ํ CPU ๋ฅผ ํ ๋น๋ฐ์ ์ ์๋ค.
- ์๋ก์ด ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ ๋๋ง๋ค ์๋ก์ด ์ค์ผ์ค๋ง์ด ์ด๋ฃจ์ด์ง๋ค.
- ์ ์ ํ (Preemptive) ์ค์ผ์ค๋ง
ํ์ฌ ์ํ์ค์ธ ํ๋ก์ธ์ค์ ๋จ์ burst time ๋ณด๋ค ๋ ์งง์ CPU burst time ์ ๊ฐ์ง๋ ์๋ก์ด ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ๋ฉด CPU ๋ฅผ ๋บ๊ธด๋ค.
- starvation
- ์๋ก์ด ํ๋ก์ธ์ค๊ฐ ๋๋ฌํ ๋๋ง๋ค ์ค์ผ์ค๋ง์ ๋ค์ํ๊ธฐ ๋๋ฌธ์ CPU burst time(CPU ์ฌ์ฉ์๊ฐ)์ ์ธก์ ํ ์๊ฐ ์๋ค.
- ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ํ๋ก์ธ์ค์๊ฒ CPU ๋ฅผ ํ ๋นํ๊ฒ ๋ค. ์ฐ์ ์์๋ ์ ์๋ก ํํํ๊ฒ ๋๊ณ ์์ ์ซ์๊ฐ ์ฐ์ ์์๊ฐ ๋๋ค.
- ์ ์ ํ ์ค์ผ์ค๋ง(Preemptive) ๋ฐฉ์
๋ ๋์ ์ฐ์ ์์์ ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ๋ฉด ์คํ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ๋ฉ์ถ๊ณ CPU ๋ฅผ ์ ์ ํ๋ค. - ๋น์ ์ ํ ์ค์ผ์ค๋ง(Non-Preemptive) ๋ฐฉ์
๋ ๋์ ์ฐ์ ์์์ ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ๋ฉด Ready Queue ์ Head ์ ๋ฃ๋๋ค.
- starvation
- ๋ฌด๊ธฐํ ๋ด์(Indefinite blocking)
์คํ ์ค๋น๋ ๋์ด์์ผ๋ CPU ๋ฅผ ์ฌ์ฉ๋ชปํ๋ ํ๋ก์ธ์ค๋ฅผ CPU ๊ฐ ๋ฌด๊ธฐํ ๋๊ธฐํ๋ ์ํ
- aging
์๋ฌด๋ฆฌ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ผ๋ ์ค๋ ๊ธฐ๋ค๋ฆฌ๋ฉด ์ฐ์ ์์๋ฅผ ๋์ฌ์ฃผ์.
- ํ๋์ ์ธ CPU ์ค์ผ์ค๋ง
- ๊ฐ ํ๋ก์ธ์ค๋ ๋์ผํ ํฌ๊ธฐ์ ํ ๋น ์๊ฐ(time quantum)์ ๊ฐ๊ฒ ๋๋ค.
- ํ ๋น ์๊ฐ์ด ์ง๋๋ฉด ํ๋ก์ธ์ค๋ ์ ์ ๋นํ๊ณ ready queue ์ ์ ์ผ ๋ค์ ๊ฐ์ ๋ค์ ์ค์ ์ ๋ค.
RR
์ CPU ์ฌ์ฉ์๊ฐ์ด ๋๋คํ ํ๋ก์ธ์ค๋ค์ด ์์ฌ์์ ๊ฒฝ์ฐ์ ํจ์จ์ RR
์ด ๊ฐ๋ฅํ ์ด์ ๋ ํ๋ก์ธ์ค์ context ๋ฅผ save ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
Response time
์ด ๋นจ๋ผ์ง๋ค.
n ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ready queue ์ ์๊ณ ํ ๋น์๊ฐ์ด q(time quantum)์ธ ๊ฒฝ์ฐ ๊ฐ ํ๋ก์ธ์ค๋ q ๋จ์๋ก CPU ์๊ฐ์ 1/n ์ ์ป๋๋ค. ์ฆ, ์ด๋ค ํ๋ก์ธ์ค๋ (n-1)q time unit ์ด์ ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค.- ํ๋ก์ธ์ค๊ฐ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด CPU ๋ฅผ ์ฌ์ฉํ ๋งํผ ์ฆ๊ฐํ๋ค.
๊ณต์ ํ ์ค์ผ์ค๋ง์ด๋ผ๊ณ ํ ์ ์๋ค.
์ค์ ํ time quantum
์ด ๋๋ฌด ์ปค์ง๋ฉด FCFS
์ ๊ฐ์์ง๋ค.
๋ ๋๋ฌด ์์์ง๋ฉด ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๋ชฉ์ ์๋ ์ด์์ ์ด์ง๋ง ์ฆ์ context switch ๋ก overhead ๊ฐ ๋ฐ์ํ๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ๋นํ time quantum
์ ์ค์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค.
ํด์ผํ ์ผ(task)๊ฐ ๋นจ๋, ์ค๊ฑฐ์ง, ์ฒญ์ ์ธ ๊ฐ์ง๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ค. ์ด ์ผ๋ค์ ๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค๋ฉด ๋นจ๋๋ฅผ ํ๊ณ ์ค๊ฑฐ์ง๋ฅผ ํ๊ณ ์ฒญ์๋ฅผ ํ๋ค. ๋น๋๊ธฐ์ ์ผ๋ก ์ผ์ ์ฒ๋ฆฌํ๋ค๋ฉด ๋นจ๋ํ๋ ์ ์ฒด์๊ฒ ๋นจ๋๋ฅผ ์ํจ๋ค. ์ค๊ฑฐ์ง ๋ํ ์ ์ฒด์ ์ค๊ฑฐ์ง๋ฅผ ์ํจ๋ค. ์ฒญ์ ๋ํ ์ ์ฒด์ ์ฒญ์๋ฅผ ์ํจ๋ค. ์ ์ค ์ด๋ค ๊ฒ์ด ๋จผ์ ์๋ฃ๋ ์ง๋ ์ ์ ์๋ค. ์ผ์ ๋ชจ๋ ๋ง์น ์ ์ฒด๋ ๋์๊ฒ ์๋ ค์ฃผ๊ธฐ๋ก ํ์ผ๋ ๋๋ ๋ค๋ฅธ ์์ ์ ํ ์ ์๋ค. ์ด ๋๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋์์ ํด๋น ์์ ์ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ์ ๋น๋๊ธฐ๋ฅผ ์๋ฏธํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋๊ธฐ์ ๋น๋๊ธฐ์ ์ฐจ์ด๋ ๋ฉ์๋๋ฅผ ์คํ์ํด๊ณผ ๋์์
๋ฐํ ๊ฐ์ด ๊ธฐ๋๋๋ ๊ฒฝ์ฐ๋ฅผ ๋๊ธฐ ๋ผ๊ณ ํํํ๊ณ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์ ๋ํด์ ๋น๋๊ธฐ ๋ผ๊ณ ํํํ๋ค. ๋์์๋ผ๋ ๋ง์ ์คํ๋์์ ๋ ๊ฐ์ด ๋ฐํ๋๊ธฐ ์ ๊น์ง๋ blocking
๋์ด ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ๋น๋๊ธฐ์ ๊ฒฝ์ฐ, blocking
๋์ง ์๊ณ ์ด๋ฒคํธ ํ์ ๋ฃ๊ฑฐ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋์๊ฒ ํด๋น task ๋ฅผ ์์ํ๊ณ ๋ฐ๋ก ๋ค์ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋๋๋ ๊ฐ์ด ๋ฐ๋ก ๋ฐํ๋์ง ์๋๋ค.
๊ธ๋ก๋ง ์ค๋ช ํ๊ธฐ๊ฐ ์ด๋ ค์ด ๊ฒ ๊ฐ์ ๊ทธ๋ฆผ๊ณผ ํจ๊ป ์ค๋ช ๋ ๋งํฌ๋ฅผ ์ฒจ๋ถํฉ๋๋ค.
๋ฉํฐ ์ค๋ ๋ฉ์ ๋ฌธ์ ์ ์์ ๋์ค๋ฏ, ๋์ผํ ์์์ ๋์์ ์ ๊ทผํ๋ ์์ (e.g. ๊ณต์ ํ๋ ๋ณ์ ์ฌ์ฉ, ๋์ผ ํ์ผ์ ์ฌ์ฉํ๋ ๋ฑ)์ ์คํํ๋ ์ฝ๋ ์์ญ์ Critical Section ์ด๋ผ ์นญํ๋ค.
ํ๋ก์ธ์ค๋ค์ด Critical Section ์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ํ๋กํ ์ฝ์ ์ค๊ณํ๋ ๊ฒ์ด๋ค.
- Mutual Exclusion(์ํธ ๋ฐฐ์ )
ํ๋ก์ธ์ค P1 ์ด Critical Section ์์ ์คํ์ค์ด๋ผ๋ฉด, ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ ๊ทธ๋ค์ด ๊ฐ์ง Critical Section ์์ ์คํ๋ ์ ์๋ค. - Progress(์งํ)
Critical Section ์์ ์คํ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์๊ณ , ๋ณ๋์ ๋์์ด ์๋ ํ๋ก์ธ์ค๋ค๋ง Critical Section ์ง์ ํ๋ณด๋ก์ ์ฐธ์ฌ๋ ์ ์๋ค. - Bounded Waiting(ํ์ ๋ ๋๊ธฐ)
P1 ๊ฐ Critical Section ์ ์ง์ ์ ์ฒญ ํ ๋ถํฐ ๋ฐ์๋ค์ฌ์ง ๋๊ฐ์ง, ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ด Critical Section ์ ์ง์ ํ๋ ํ์๋ ์ ํ์ด ์์ด์ผ ํ๋ค.
- ํ๋์จ์ด ๊ธฐ๋ฐ ํด๊ฒฐ์ฑ ์ผ๋ก์จ, ๋์์ ๊ณต์ ์์์ ์ ๊ทผํ๋ ๊ฒ์ ๋ง๊ธฐ ์ํด Critical Section ์ ์ง์ ํ๋ ํ๋ก์ธ์ค๋ Lock ์ ํ๋ํ๊ณ Critical Section ์ ๋น ์ ธ๋์ฌ ๋, Lock ์ ๋ฐฉ์ถํจ์ผ๋ก์จ ๋์์ ์ ๊ทผ์ด ๋์ง ์๋๋ก ํ๋ค.
- ๋ค์ค์ฒ๋ฆฌ๊ธฐ ํ๊ฒฝ์์๋ ์๊ฐ์ ์ธ ํจ์จ์ฑ ์ธก๋ฉด์์ ์ ์ฉํ ์ ์๋ค.
- ์ํํธ์จ์ด์์์ Critical Section ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋๊ธฐํ ๋๊ตฌ
OS ๋ Counting/Binary ์ธ๋งํฌ๋ฅผ ๊ตฌ๋ถํ๋ค
-
์นด์ดํ ์ธ๋งํฌ
๊ฐ์ฉํ ๊ฐ์๋ฅผ ๊ฐ์ง ์์ ์ ๋ํ ์ ๊ทผ ์ ์ด์ฉ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, ์ธ๋งํฌ๋ ๊ทธ ๊ฐ์ฉํ ์์์ ๊ฐ์ ๋ก ์ด๊ธฐํ ๋๋ค. ์์์ ์ฌ์ฉํ๋ฉด ์ธ๋งํฌ๊ฐ ๊ฐ์, ๋ฐฉ์ถํ๋ฉด ์ธ๋งํฌ๊ฐ ์ฆ๊ฐ ํ๋ค. -
์ด์ง ์ธ๋งํฌ MUTEX ๋ผ๊ณ ๋ ๋ถ๋ฅด๋ฉฐ, ์ํธ๋ฐฐ์ ์ (Mutual Exclusion)์ ๋จธ๋ฆฟ๊ธ์๋ฅผ ๋ฐ์ ๋ง๋ค์ด์ก๋ค. ์ด๋ฆ ๊ทธ๋๋ก 0 ๊ณผ 1 ์ฌ์ด์ ๊ฐ๋ง ๊ฐ๋ฅํ๋ฉฐ, ๋ค์ค ํ๋ก์ธ์ค๋ค ์ฌ์ด์ Critical Section ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- Busy Waiting(๋ฐ์ ๋๊ธฐ)
Critical Section ์ ์ง์ ํด์ผํ๋ ํ๋ก์ธ์ค๋ ์ง์ ์ฝ๋๋ฅผ ๊ณ์ ๋ฐ๋ณต ์คํํด์ผ ํ๋ฉฐ, CPU ์๊ฐ์ ๋ญ๋นํ๊ฒ ๋๋ค.
- ์ธ๋งํฌ๊ฐ Ready Queue ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ๋ ์ด์์ ํ๋ก์ธ์ค๊ฐ Critical Section ์ง์ ์ ๋ฌดํ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๊ณ , Critical Section ์์ ์คํ๋๋ ํ๋ก์ธ์ค๋ ์ง์ ๋๊ธฐ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์คํ๋์ผ๋ง ๋น ์ ธ๋์ฌ ์ ์๋ ์ํฉ์ ์ง์นญํ๋ค.
- ๊ณ ๊ธ ์ธ์ด์ ์ค๊ณ ๊ตฌ์กฐ๋ฌผ๋ก์, ๊ฐ๋ฐ์์ ์ฝ๋๋ฅผ ์ํธ๋ฐฐ์ ํ๊ฒ๋ ๋ง๋ ์ถ์ํ๋ ๋ฐ์ดํฐ ํํ์ด๋ค.
- ๊ณต์ ์์์ ์ ๊ทผํ๊ธฐ ์ํ ํค ํ๋๊ณผ ์์ ์ฌ์ฉ ํ ํด์ ๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ๋ค. (์ธ๋งํฌ์ด๋ ์ง์ ํค ํด์ ์ ๊ณต์ ์์ ์ ๊ทผ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค. )
๊ฐ๊ฐ์ ํ๋ก์ธ์ค ๋ ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ๊ณ , ์ด์์ฒด์ ํน์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ๊ทผํ ์ ์๋ ์ ํ์ด ๊ฑธ๋ ค์๋ค. ๋จ์ง, ์ด์์ฒด์ ๋ง์ด ์ด์์ฒด์ ๋ฉ๋ชจ๋ฆฌ ์์ญ๊ณผ ์ฌ์ฉ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ๊ทผ์ ์ ์ฝ์ ๋ฐ์ง ์๋๋ค.
Swapping : ๋ฉ๋ชจ๋ฆฌ์ ๊ด๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉ๋๋ ๊ธฐ๋ฒ. ํ์ค Swapping ๋ฐฉ์์ผ๋ก๋ round-robin ๊ณผ ๊ฐ์ ์ค์ผ์ค๋ง์ ๋ค์ค ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์ CPU ํ ๋น ์๊ฐ์ด ๋๋ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ณด์กฐ ๊ธฐ์ต์ฅ์น(e.g. ํ๋๋์คํฌ)๋ก ๋ด๋ณด๋ด๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ถ๋ฌ ๋ค์ผ ์ ์๋ค.
์ด ๊ณผ์ ์ swap (์ค์์ํจ๋ค) ์ด๋ผ ํ๋ค. ์ฃผ ๊ธฐ์ต์ฅ์น(RAM)์ผ๋ก ๋ถ๋ฌ์ค๋ ๊ณผ์ ์ swap-in, ๋ณด์กฐ ๊ธฐ์ต์ฅ์น๋ก ๋ด๋ณด๋ด๋ ๊ณผ์ ์ swap-out ์ด๋ผ ํ๋ค. swap ์๋ ํฐ ๋์คํฌ ์ ์ก์๊ฐ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ํ์ฌ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ถ์กฑํ ๋ Swapping ์ด ์์๋๋ค.
๋จํธํ (Fragmentation) : ํ๋ก์ธ์ค๋ค์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๊ณ ์ ๊ฑฐ๋๋ ์ผ์ด ๋ฐ๋ณต๋๋ค๋ณด๋ฉด, ํ๋ก์ธ์ค๋ค์ด ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ ํ ์ฌ์ด์ ์ฌ์ฉ ํ์ง ๋ชปํ ๋งํผ์ ์์ ์์ ๊ณต๊ฐ๋ค์ด ๋์ด๋๊ฒ ๋๋๋ฐ, ์ด๊ฒ์ด ๋จํธํ ์ด๋ค. ๋จํธํ๋ 2 ๊ฐ์ง ์ข ๋ฅ๋ก ๋๋๋ค.
Process A |
free | Process B |
free | Process C |
ย ย ย ย ย ย free ย ย ย ย ย ย | Process D |
---|
- ์ธ๋ถ ๋จํธํ: ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์ค ์ฌ์ฉํ์ง ๋ชปํ๊ฒ ๋๋ ์ผ๋ถ๋ถ. ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ(RAM)์์ ์ฌ์ด์ฌ์ด ๋จ๋ ๊ณต๊ฐ๋ค์ ๋ชจ๋ ํฉ์น๋ฉด ์ถฉ๋ถํ ๊ณต๊ฐ์ด ๋๋ ๋ถ๋ถ๋ค์ด ๋ถ์ฐ๋์ด ์์๋ ๋ฐ์ํ๋ค๊ณ ๋ณผ ์ ์๋ค.
- ๋ด๋ถ ๋จํธํ: ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์ ํฌํจ๋ ๋จ๋ ๋ถ๋ถ. ์๋ฅผ๋ค์ด ๋ฉ๋ชจ๋ฆฌ ๋ถํ ์์ ๊ณต๊ฐ์ด 10,000B ์๊ณ Process A ๊ฐ 9,998B ์ฌ์ฉํ๊ฒ๋๋ฉด 2B ๋ผ๋ ์ฐจ์ด ๊ฐ ์กด์ฌํ๊ณ , ์ด ํ์์ ๋ด๋ถ ๋จํธํ๋ผ ์นญํ๋ค.
์์ถ : ์ธ๋ถ ๋จํธํ๋ฅผ ํด์ํ๊ธฐ ์ํด ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๊ณต๊ฐ๋ค์ ํ์ชฝ์ผ๋ก ๋ชฐ์, ์์ ๊ณต๊ฐ์ ํ๋ณดํ๋ ๋ฐฉ๋ฒ๋ก ์ด์ง๋ง, ์์ ํจ์จ์ด ์ข์ง ์๋ค. (์์ ๋ฉ๋ชจ๋ฆฌ ํํฉ์ด ์์ถ์ ํตํด ์๋์ ๊ทธ๋ฆผ ์ฒ๋ผ ๋ฐ๋๋ ํจ๊ณผ๋ฅผ ๊ฐ์ง ์ ์๋ค)
Process A |
Process B |
Process C |
Process D |
ย ย ย ย ย ย ย ย free ย ย ย ย ย ย ย ย |
---|
ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ์ฐ์์ ์ด์ด์ผ ํ๋ค๋ ์ ์ฝ์ ์์ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ด๋ค. ์ธ๋ถ ๋จํธํ์ ์์ถ ์์ ์ ํด์ ํ๊ธฐ ์ํด ์๊ธด ๋ฐฉ๋ฒ๋ก ์ผ๋ก, ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ Frame ์ด๋ผ๋ ๊ณ ์ ํฌ๊ธฐ๋ก ๋ถ๋ฆฌ๋์ด ์๊ณ , ๋ ผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ(ํ๋ก์ธ์ค๊ฐ ์ ์ ํ๋)๋ ํ์ด์ง๋ผ ๋ถ๋ฆฌ๋ ๊ณ ์ ํฌ๊ธฐ์ ๋ธ๋ก์ผ๋ก ๋ถ๋ฆฌ๋๋ค.(ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ด๊ฐ๋ ํ์ด์ง)
ํ์ด์ง ๊ธฐ๋ฒ์ ์ฌ์ฉํจ์ผ๋ก์จ ๋ ผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋, ์ฐ์๋์ด ์ ์ฅ๋ ํ์๊ฐ ์๊ณ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ๋จ๋ ํ๋ ์์ ์ ์ ํ ๋ฐฐ์น๋จ์ผ๋ก ์ธ๋ถ ๋จํธํ๋ฅผ ํด๊ฒฐํ ์ ์๋ ํฐ ์ฅ์ ์ด ์๋ค.
ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๊ณต๊ฐ์ ์ฌ๋ฌ๊ฐ์ ํ์ด์ง๋ก ๋๋์ด์ ๊ด๋ฆฌ๋๊ณ (๋ ผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์์), ๊ฐ๋ณ ํ์ด์ง๋ ์์์ ์๊ด์์ด ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ํ๋ ์์ mapping ๋์ด ์ ์ฅ๋๋ค๊ณ ๋ณผ ์ ์๋ค.
- ๋จ์ : ๋ด๋ถ ๋จํธํ ๋ฌธ์ ์ ๋น์ค์ด ๋์ด๋๊ฒ ๋๋ค. ์๋ฅผ๋ค์ด ํ์ด์ง ํฌ๊ธฐ๊ฐ 1,024B ์ด๊ณ ํ๋ก์ธ์ค A ๊ฐ 3,172B ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๊ตฌํ๋ค๋ฉด 3 ๊ฐ์ ํ์ด์ง ํ๋ ์(1,024 * 3 = 3,072) ํ๊ณ ๋ 100B ๊ฐ ๋จ๊ธฐ๋๋ฌธ์ ์ด 4 ๊ฐ์ ํ์ด์ง ํ๋ ์์ด ํ์ํ ๊ฒ์ด๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก 4 ๋ฒ์งธ ํ์ด์ง ํ๋ ์์๋ 924B(1,024 - 100)์ ์ฌ์ ๊ณต๊ฐ์ด ๋จ๊ฒ ๋๋ ๋ด๋ถ ๋จํธํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด๋ค.
๋ค์ค ํ๋ก๊ทธ๋๋ฐ์ ์คํํ๊ธฐ ์ํด์๋ ๋ง์ ํ๋ก์ธ์ค๋ค์ ๋์์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค๋์ด์ผ ํ๋ค. ๊ฐ์๋ฉ๋ชจ๋ฆฌ๋ ํ๋ก์ธ์ค ์ ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์ฌ๋ผ์ค์ง ์๋๋ผ๋ ์คํ์ด ๊ฐ๋ฅํ๋๋ก ํ๋ ๊ธฐ๋ฒ ์ด๋ฉฐ, ํ๋ก๊ทธ๋จ์ด ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ์ปค๋ ๋๋ค๋ ์ฃผ์ ์ฅ์ ์ด ์๋ค.
์คํ๋๋ ์ฝ๋์ ์ ๋ถ๋ฅผ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌ์์ผ์ผ ํ๊ณ , ๋ฉ๋ชจ๋ฆฌ ์ฉ๋๋ณด๋ค ํฐ ํ๋ก๊ทธ๋จ์ ์คํ์ํฌ ์ ์์๋ค. ๋ํ, ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ ๋์์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ธฐ์๋ ์ฉ๋์ ํ๊ณ์, ํ์ด์ง ๊ต์ฒด๋ฑ์ ์ฑ๋ฅ ์ด์๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. ๋ํ, ๊ฐ๋๋ง ์ฌ์ฉ๋๋ ์ฝ๋๊ฐ ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ๋ค์ ํ์ธํ ์ ์๋ค๋ ์ ์์, ๋ถํ์ํ๊ฒ ์ ์ฒด์ ํ๋ก๊ทธ๋จ ์ ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ด์ผ ํ๋๊ฒ ์๋๋ผ๋ ๊ฒ์ ์ ์ ์๋ค.
- ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ์ ์ ์ฝ๋ฐ์ง ์๊ฒ ๋๋ค.
- ๋ ๋ง์ ํ๋ก๊ทธ๋จ์ ๋์์ ์คํํ ์ ์๊ฒ ๋๋ค. ์ด์ ๋ฐ๋ผ
์๋ต์๊ฐ
์ ์ ์ง๋๊ณ ,CPU ์ด์ฉ๋ฅ
๊ณผ์ฒ๋ฆฌ์จ
์ ๋์์ง๋ค. - swap์ ํ์ํ ์ ์ถ๋ ฅ์ด ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋จ๋ค์ด ๋น ๋ฅด๊ฒ ์คํ๋๋ค.
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ค์ ์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๊ฐ๋
๊ณผ ์ฌ์ฉ์์ ๋
ผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๊ฐ๋
์ ๋ถ๋ฆฌํ ๊ฒ์ผ๋ก ์ ๋ฆฌํ ์ ์๋ค. ์ด๋ก์จ ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ๋ ์ผ๋ง๋ ์ง ํฐ ๊ฐ์ ์ฃผ์ ๊ณต๊ฐ
์ ํ๋ก๊ทธ๋๋จธ์๊ฒ ์ ๊ณตํ ์ ์๋ค.
- ํ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ ๋ ผ๋ฆฌ์ ์ธ ๋ชจ์ต์ ๊ฐ์๋ฉ๋ชจ๋ฆฌ์ ๊ตฌํํ ๊ณต๊ฐ์ด๋ค. ํ๋ก์ธ์ค๊ฐ ์๊ตฌํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ณตํจ์ผ๋ก์ ํ์ฌ ์ง์ ์ ์ผ๋ก ํ์์น ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ค์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ์ง ์๋ ๊ฒ์ผ๋ก ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ ์ ์๋ค.
- ์๋ฅผ ๋ค์ด, ํ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉฐ ๋
ผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ก 100KB ๊ฐ ์๊ตฌ๋์๋ค๊ณ ํ์.
ํ์ง๋ง ์คํ๊น์ง์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ
(Heap์์ญ, Stack ์์ญ, ์ฝ๋, ๋ฐ์ดํฐ)
์ ํฉ์ด 40KB ๋ผ๋ฉด, ์ค์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์๋ 40KB ๋ง ์ฌ๋ผ๊ฐ ์๊ณ , ๋๋จธ์ง 60KB ๋งํผ์ ํ์์์ ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ์ ์๊ตฌํ๋ค๊ณ ์ดํดํ ์ ์๊ฒ ๋ค.
Stack |
ย ย ย free (60KB) ย ย ย ย | Heap |
Data |
Code |
---|
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋...
์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๊ฐ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ค ์ฌ์ด์ ๊ณต์ ๋ ์ ์๋๋ก ํ๋ค. ๊ฐ ํ๋ก์ธ์ค๋ค์๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ฅผ ์์ ์ ๊ฐ์ ์ฃผ์ ๊ณต๊ฐ์ ๋๊ณ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ ์ธ์ํ์ง๋ง, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ฌ๋ผ๊ฐ์๋๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง
๋ค์ ๋ชจ๋ ํ๋ก์ธ์ค์ ๊ณต์ ๋๊ณ ์๋ค.- ํ๋ก์ธ์ค๋ค์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํ๊ณ , ํ๋ก์ธ์ค๋ค์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํตํด ํต์ ํ ์ ์๋ค. ์ด ๋ํ, ๊ฐ ํ๋ก์ธ์ค๋ค์ ๊ฐ์ ์์ ์ ์ฃผ์ ๊ณต๊ฐ์ฒ๋ผ ์ธ์ํ์ง๋ง, ์ค์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ ๊ณต์ ๋๊ณ ์๋ค.
fork()
๋ฅผ ํตํ ํ๋ก์ธ์ค ์์ฑ ๊ณผ์ ์์ ํ์ด์ง๋ค์ด ๊ณต์ ๋๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
ํ๋ก๊ทธ๋จ ์คํ ์์ ์์ ํ๋ก๊ทธ๋จ ์ ์ฒด๋ฅผ ๋์คํฌ์์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋ ๋์ , ์ด๊ธฐ์ ํ์ํ ๊ฒ๋ค๋ง ์ ์ฌํ๋ ์ ๋ต์ ์๊ตฌ ํ์ด์ง
์ด๋ผ ํ๋ฉฐ, ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์คํ
์์ ๋ง์ด ์ฌ์ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋๊ฐ ํ์ด์ง๋ก ๊ด๋ฆฌ๋๋ค.
์๊ตฌ ํ์ด์ง์ ์ฌ์ฉํ๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์์๋ ์คํ๊ณผ์ ์์ ํ์ํด์ง ๋ ํ์ด์ง๋ค์ด ์ ์ฌ๋๋ค. ํ ๋ฒ๋ ์ ๊ทผ๋์ง ์์ ํ์ด์ง๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ง ์๋๋ค.
ํ๋ก์ธ์ค ๋ด์ ๊ฐ๋ณ ํ์ด์ง๋ค์ ํ์ด์ (pager)
์ ์ํด ๊ด๋ฆฌ๋๋ค. ํ์ด์ ๋ ํ๋ก์ธ์ค ์คํ์ ์ค์ ํ์ํ ํ์ด์ง๋ค๋ง ๋ฉ๋ชจ๋ฆฌ๋ก ์ฝ์ด ์ฎ์ผ๋ก์, ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ๊ฐ์ ธ์ค๋ ์๊ฐ๋ญ๋น์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ค์ผ ์ ์๋ค.
์๊ตฌ ํ์ด์ง
์์ ์ธ๊ธ๋๋๋ก ํ๋ก๊ทธ๋จ ์คํ์์ ๋ชจ๋ ํญ๋ชฉ์ด ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค์ง ์๊ธฐ ๋๋ฌธ์, ํ๋ก์ธ์ค์ ๋์์ ํ์ํ ํ์ด์ง๋ฅผ ์์ฒญํ๋ ๊ณผ์ ์์ page fault(ํ์ด์ง ๋ถ์ฌ)
๊ฐ ๋ฐ์ํ๊ฒ ๋๋ฉด, ์ํ๋ ํ์ด์ง๋ฅผ ๋ณด์กฐ์ ์ฅ์ฅ์น์์ ๊ฐ์ ธ์ค๊ฒ ๋๋ค. ํ์ง๋ง, ๋ง์ฝ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ชจ๋ ์ฌ์ฉ์ค์ธ ์ํฉ์ด๋ผ๋ฉด, ํ์ด์ง ๊ต์ฒด๊ฐ ์ด๋ค์ ธ์ผ ํ๋ค.(๋๋, ์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ์ข
๋ฃํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.)
๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ชจ๋ ์ฌ์ฉ์ค์ธ ์ํฉ์์์ ๋ฉ๋ชจ๋ฆฌ ๊ต์ฒด ํ๋ฆ์ด๋ค.
- ๋์คํฌ์์ ํ์ํ ํ์ด์ง์ ์์น๋ฅผ ์ฐพ๋๋ค
- ๋น ํ์ด์ง ํ๋ ์์ ์ฐพ๋๋ค.
ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ
์ ํตํด ํฌ์๋ (victim) ํ์ด์ง๋ฅผ ๊ณ ๋ฅธ๋ค.- ํฌ์๋ ํ์ด์ง๋ฅผ ๋์คํฌ์ ๊ธฐ๋กํ๊ณ , ๊ด๋ จ ํ์ด์ง ํ ์ด๋ธ์ ์์ ํ๋ค.
- ์๋กญ๊ฒ ๋น์์ง ํ์ด์ง ํ ์ด๋ธ ๋ด ํ๋ ์์ ์ ํ์ด์ง๋ฅผ ์ฝ์ด์ค๊ณ , ํ๋ ์ ํ ์ด๋ธ์ ์์ ํ๋ค.
- ์ฌ์ฉ์ ํ๋ก์ธ์ค ์ฌ์์
๊ฐ์ฅ ๊ฐ๋จํ ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ผ๋ก FIFO(first-in first-out)์ ํ๋ฆ์ ๊ฐ์ง๋ค. ์ฆ, ๋จผ์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด์จ ํ์ด์ง ์์๋๋ก ํ์ด์ง ๊ต์ฒด ์์ ์ ๋จผ์ ๋๊ฐ๊ฒ ๋๋ค๋ ๊ฒ์ด๋ค.
-
์ฅ์
- ์ดํดํ๊ธฐ๋ ์ฝ๊ณ , ํ๋ก๊ทธ๋จํ๊ธฐ๋ ์ฝ๋ค.
-
๋จ์
- ์ค๋๋ ํ์ด์ง๊ฐ ํญ์ ๋ถํ์ํ์ง ์์ ์ ๋ณด๋ฅผ ํฌํจํ์ง ์์ ์ ์๋ค(์ด๊ธฐ ๋ณ์ ๋ฑ)
- ์ฒ์๋ถํฐ ํ๋ฐํ๊ฒ ์ฌ์ฉ๋๋ ํ์ด์ง๋ฅผ ๊ต์ฒดํด์ ํ์ด์ง ๋ถ์ฌ์จ์ ๋์ด๋ ๋ถ์์ฉ์ ์ด๋ํ ์ ์๋ค.
Belady์ ๋ชจ์
: ํ์ด์ง๋ฅผ ์ ์ฅํ ์ ์๋ ํ์ด์ง ํ๋ ์์ ๊ฐฏ์๋ฅผ ๋๋ ค๋ ๋๋ ค ํ์ด์ง ๋ถ์ฌ๊ฐ ๋ ๋ง์ด ๋ฐ์ํ๋ ๋ชจ์์ด ์กด์ฌํ๋ค.
Belady์ ๋ชจ์
์ ํ์ธํ ์ดํ ์ต์ ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ํ๊ตฌ๊ฐ ์งํ๋์๊ณ , ๋ชจ๋ ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ๋ฎ์ ํ์ด์ง ๋ถ์ฌ์จ์ ๋ณด์ด๋ฉฐ Belady์ ๋ชจ์
์ด ๋ฐ์ํ์ง ์๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ํต์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ์ฐพ์ ๊ต์ฒด
ํ๋ ๊ฒ์ด๋ค.
์ฃผ๋ก ๋น๊ต ์ฐ๊ตฌ ๋ชฉ์ ์ ์ํด ์ฌ์ฉํ๋ค.
-
์ฅ์
- ์๊ณ ๋ฆฌ์ฆ ์ค ๊ฐ์ฅ ๋ฎ์ ํ์ด์ง ๋ถ์ฌ์จ์ ๋ณด์ฅํ๋ค.
-
๋จ์
- ๊ตฌํ์ ์ด๋ ค์์ด ์๋ค. ๋ชจ๋ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ์ ๊ณํ์ ๋ฏธ๋ฆฌ ํ์ ํ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
LRU: Least-Recently-Used
์ต์ ์๊ณ ๋ฆฌ์ฆ์ ๊ทผ์ฌ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ์ ํํ์ฌ ๊ต์ฒดํ๋ค.
- ํน์ง
- ๋์ฒด์ ์ผ๋ก
FIFO ์๊ณ ๋ฆฌ์ฆ
๋ณด๋ค ์ฐ์ํ๊ณ ,OPT์๊ณ ๋ฆฌ์ฆ
๋ณด๋ค๋ ๊ทธ๋ ์ง ๋ชปํ ๋ชจ์ต์ ๋ณด์ธ๋ค.
- ๋์ฒด์ ์ผ๋ก
LFU: Least Frequently Used
์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ ๋ฐฉ๋ฒ์ด๋ค. ํ๋ฐํ๊ฒ ์ฌ์ฉ๋๋ ํ์ด์ง๋ ์ฐธ์กฐ ํ์๊ฐ ๋ง์์ง ๊ฑฐ๋ผ๋ ๊ฐ์ ์์ ๋ง๋ค์ด์ง ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- ํน์ง
- ์ด๋ค ํ๋ก์ธ์ค๊ฐ ํน์ ํ์ด์ง๋ฅผ ์ง์ค์ ์ผ๋ก ์ฌ์ฉํ๋ค, ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ฒ๋๋ฉด ๋ ์ด์ ์ฌ์ฉํ์ง ์์๋ ๊ณ์ ๋ฉ๋ชจ๋ฆฌ์ ๋จธ๋ฌผ๊ฒ ๋์ด ์ด๊ธฐ ๊ฐ์ ์ ์ด๊ธ๋๋ ์์ ์ด ๋ฐ์ํ ์ ์๋ค
- ์ต์ (OPT) ํ์ด์ง ๊ต์ฒด๋ฅผ ์ ๋๋ก ๊ทผ์ฌํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์, ์ ์ฐ์ด์ง ์๋๋ค.
MFU: Most Frequently Used
์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ์์ ํ์ด์ง๊ฐ ์ต๊ทผ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์๊ณ , ์์ผ๋ก ๊ณ์ ์ฌ์ฉ๋ ๊ฒ์ด๋ผ๋ ๊ฐ์ ์ ๊ธฐ๋ฐํ๋ค.
- ํน์ง
- ์ต์ (OPT) ํ์ด์ง ๊ต์ฒด๋ฅผ ์ ๋๋ก ๊ทผ์ฌํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์, ์ ์ฐ์ด์ง ์๋๋ค.
---
์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ์๋๊ฐ ๋น ๋ฅธ ์ฅ์น์ ๋๋ฆฐ ์ฅ์น๊ฐ์ ์๋์ฐจ์ ๋ฐ๋ฅธ ๋ณ๋ชฉ ํ์์ ์ค์ด๊ธฐ ์ํ ๋ฒ์ฉ ๋ฉ๋ชจ๋ฆฌ์ด๋ค. ์ด๋ฌํ ์ญํ ์ ์ํํ๊ธฐ ์ํด์๋ CPU ๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ํ ๊ฒ์ธ๊ฐ๋ฅผ ์ด๋ ์ ๋ ์์ธกํ ์ ์์ด์ผ ํ๋ค. ์บ์์ ์ฑ๋ฅ์ ์์ ์ฉ๋์ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ CPU ๊ฐ ์ดํ์ ์ฐธ์กฐํ , ์ธ๋ชจ ์๋ ์ ๋ณด๊ฐ ์ด๋ ์ ๋ ๋ค์ด์๋๋์ ๋ฐ๋ผ ์ข์ฐ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์ด ๋ ์ ์ค์จ(Hit rate)
์ ๊ทน๋ํ ์ํค๊ธฐ ์ํด ๋ฐ์ดํฐ ์ง์ญ์ฑ(Locality)์ ์๋ฆฌ
๋ฅผ ์ฌ์ฉํ๋ค. ์ง์ญ์ฑ์ ์ ์ ์กฐ๊ฑด์ผ๋ก ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ์ฝ๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ท ๋ฑํ๊ฒ Access ํ์ง ์๋๋ค๋ ํน์ฑ์ ๊ธฐ๋ณธ์ผ๋ก ํ๋ค. ์ฆ, Locality
๋ ๊ธฐ์ต ์ฅ์น ๋ด์ ์ ๋ณด๋ฅผ ๊ท ์ผํ๊ฒ Access ํ๋ ๊ฒ์ด ์๋ ์ด๋ ํ ์๊ฐ์ ํน์ ๋ถ๋ถ์ ์ง์ค์ ์ผ๋ก ์ฐธ์กฐํ๋ ํน์ฑ์ธ ๊ฒ์ด๋ค.
์ด ๋ฐ์ดํฐ ์ง์ญ์ฑ์ ๋ํ์ ์ผ๋ก ์๊ฐ ์ง์ญ์ฑ(Temporal Locality)๊ณผ ๊ณต๊ฐ ์ง์ญ์ฑ(Spatial Locality)์ผ๋ก ๋๋๋ค.
- ์๊ฐ ์ง์ญ์ฑ : ์ต๊ทผ์ ์ฐธ์กฐ๋ ์ฃผ์์ ๋ด์ฉ์ ๊ณง ๋ค์์ ๋ค์ ์ฐธ์กฐ๋๋ ํน์ฑ.
- ๊ณต๊ฐ ์ง์ญ์ฑ : ๋๋ถ๋ถ์ ์ค์ ํ๋ก๊ทธ๋จ์ด ์ฐธ์กฐ๋ ์ฃผ์์ ์ธ์ ํ ์ฃผ์์ ๋ด์ฉ์ด ๋ค์ ์ฐธ์กฐ๋๋ ํน์ฑ
์ธ๊ธํ๋ฏ์ด ์บ์(cache)๋ ํ๋ก์ธ์ ๊ฐ๊น์ด์ ์์นํ๋ฉด์ ๋น๋ฒํ๊ฒ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋๋๋ ์ฅ์์ด๋ค. ํ์ง๋ง ์บ์๊ฐ ์๋ฌด๋ฆฌ ๊ฐ๊น์ด ์๋๋ผ๋ ์ฐพ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๊ฐ ์ด๋ ๊ณณ์ ์ ์ฅ๋์ด ์๋์ง ๋ชฐ๋ผ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ํํด์ผ ํ๋ค๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ฒ ๋๋ค. ์ฆ, ์บ์์ ๋ชฉ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ด ์๋ค๋ฉด ๋ฐ๋ก ์ ๊ทผํ์ฌ ์ถ๋ ฅํ ์ ์์ด์ผ ์บ์๊ฐ ์๋ฏธ ์์ด์ง๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์บ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ํน์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌถ์
์ผ๋ก ์ ์ฅํ๊ฒ ๋๋๋ฐ ์ด๋ฅผ ์บ์ฑ ๋ผ์ธ ์ด๋ผ๊ณ ํ๋ค. ๋ค์ํ ์ฃผ์์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋น๋ฒํ๊ฒ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ์ ์ฃผ์๋ ํฉ์ด์ ธ ์๋ค. ๋ฐ๋ผ์ ์บ์์ ์ ์ฅํ๋ ๋ฐ์ดํฐ์๋ ๋ฐ์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๋ฑ์ ๊ธฐ๋กํด ๋ ํ๊ทธ๋ฅผ ๋ฌ์๋์ ํ์๊ฐ ์๋ค. ์ด๋ฌํ ํ๊ทธ๋ค์ ๋ฌถ์์ ์บ์ฑ ๋ผ์ธ์ด๋ผ๊ณ ํ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ๊ฐ์ ธ์ฌ ๋๋ ์บ์ฑ ๋ผ์ธ์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ ธ์จ๋ค.
์ข
๋ฅ๋ก๋ ๋ํ์ ์ผ๋ก ์ธ ๊ฐ์ง ๋ฐฉ์์ด ์กด์ฌํ๋ค.
- Full Associative
- Set Associative
- Direct Map
OS.end