์ด์์ฒด์ ์์ ์ค์ํ ๋ถ๋ถ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ๋ํด ์์๋ณด์.
๋ฉ๋ชจ๋ฆฌ๋ CPU ์์๋งํผ ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ๋๋ฐ ๋งค์ฐ ์ค์ํ ์์ ์ค ํ๋์ด๋ค. ์ด์ ์๋ ์ด์์ฒด์ ์์ CPU ์์์ ๊ด๋ฆฌํ๋ ํ๋ก์ธ์ค ๊ด๋ฆฌ์ ๋ํด ์ดํด๋ณด์๊ณ , ์ง๊ธ๋ถํฐ๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ์ ๋ํด ์ดํด๋ณผ ๊ฒ์ด๋ค. ํนํ, ๊ณผ๊ฑฐ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋งค์ฐ ๋น์ผ ์์์ด์๊ณ ํฌ๊ธฐ ๋ํ ์์๊ธฐ ๋๋ฌธ์, ์ด์์ฒด์ ์์ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ๊ด๋ฆฌ๊ฐ ์ง๊ธ๋ณด๋ค ๋ ์ค์ํ์๋ค.
ํ์ฌ์๋ ๊ณผ๊ฑฐ๋ณด๋ค ํจ์ฌ ํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๋ ดํ๊ฒ ์ฌ์ฉํ์ง๋ง, ์ง๊ธ๋ ๋ฉ๋ชจ๋ฆฌ๋ ๋ถ์กฑํ๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ปค์ ธ์จ ๋งํผ ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ์ ์ฒ๋ฆฌํ๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ ๊ทธ๋ณด๋ค ๋์ฑ ๋น ๋ฅธ ์๋๋ก ์ปค์ ธ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ํ์ฌ์๋ ์ฌ์ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ต๋ํ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ์ฌ๋ฌ ๋ฐฉ๋ฒ๋ค์ด ์ฐ๊ตฌ๋๊ณ ์๊ณ , ์ด์์ฒด์ ๊ธฐ๋ฅ์์๋ ๋งค์ฐ ์ค์ํ ์์น๋ฅผ ์ฐจ์งํ๊ณ ์๋ค.
1. ๋ฉ๋ชจ๋ฆฌ์ ํ๋ก๊ทธ๋จ ํ ๋นํ๊ธฐ
๋ฉ๋ชจ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก **์ฃผ์(Address)**์ **๋ฐ์ดํฐ(Data)**๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
CPU์ ๋ฉ๋ชจ๋ฆฌ๋ ์๋ฐฉํฅ์ผ๋ก ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฃผ๊ณ ๋ฐ๋๋ค. CPU๋ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์์ฒญ์ํ๊ฑฐ๋ ํด๋น ์ฃผ์์ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ณ , ๋ฉ๋ชจ๋ฆฌ๋ ์๊ตฌํ๋ ์ฃผ์์ ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ๋ฅผ CPU์๊ฒ ์ ๋ฌํ๋ค.
1.1 ํ๋ก๊ทธ๋จ์ ๋น๋ํ๋ ๊ณผ์
ํ๋ก๊ทธ๋จ์ ๋น๋ํ๋ ๊ณผ์ ์ ์์คํ์ผ, ๋ชฉ์ ํ์ผ, ์คํํ์ผ ์์๋ก ์์ฑ๋๋ค.
- ์์คํ์ผ(Source file)
- ๊ณ ์์ค์ธ์ด ๋๋ ์ด์ ๋ธ๋ฆฌ์ด
- ๋ชฉ์ ํ์ผ(Object file)
- ์ปดํ์ผ ๋๋ ์ด์ ๋ธ ๊ฒฐ๊ณผ
- ์คํํ์ผ(Executable file)
- ๋งํฌ ๊ฒฐ๊ณผ
์ ๊ทธ๋ฆผ์ ํ๋ก๊ทธ๋จ์ด ๋ง๋ค์ด์ง๋ ๊ณผ์ ์ ๊ทธ๋ฆผ์ผ๋ก ํํํ ๊ฒ์ด๋ค.
- ์์คํ์ผ์ ์ปดํ์ผ๋ฌ(compiler)์ ์ํด ์ปดํ์ผ ์ํ ๊ฒฐ๊ณผ๋ก ๋ชฉ์ ํ์ผ์ ์์ฑํ๋ค.
- ์ด์ ๋ธ๋ฆฌ์ด๋ ์ด์ ๋ธ๋ฌ๊ฐ ์ด์ ๋ธ์ ์ํํ์ฌ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ค. ํ๋ก๊ทธ๋๋ฐ์ ํ๋ฉด์ ์ธ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋๊ฐ ๋น๋ฒํ๋ฐ, ์ปดํ์ผ ๋จ๊ณ์์๋ ์ด๋ฅผ ์ถ๊ฐํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ชฉ์ ํ์ผ์๋ ์ด์ ๋ํ ์ ๋ณด๊ฐ ์๋ค.
- ๋งํฌ ๋จ๊ณ์์ ํ๋๋์คํฌ์์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ถ๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ์ฌ, ์คํ ํ์ผ์ ๋ง๋ ๋ค.
- ๋งํฌ ๋จ๊ณ๋ ๋ง์ปค(linker)๊ฐ ์ํํ๋ค. ์ด ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ๋ก๋(loader)์ ์ํด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๋ค.
๊ทธ๋ฆฌ๊ณ ์์ฑ๋ ํ๋ก๊ทธ๋จ์ code, data, stack ์์ญ์ผ๋ก ๋๋์ด์ ธ ์๋ค. ๋จ์ํ ์์ฑ๋ ํ๋ก๊ทธ๋จ์๋ code์ data์์ญ๋ง ์กด์ฌํ๋ค. ์ค์ ๋ก ์คํ์ ํ๋ ๊ณผ์ ์์๋ ํจ์๋ฅผ ์คํํ๊ธฐ ๋๋ฌธ์, ๋์์ฌ return address ๋ฑ์ ์ ์ฅํ๋ stack๋ ํ์ํ๋ค.
1.2 MMU(Memory Management Unit)
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ํด์ฃผ๋ OS ์๋น์ค
๊ทธ๋ ๋ค๋ฉด, ํ๋ก๊ทธ๋จ์ ์ค์ ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ธฐ ์ํด์๋ ์ข ๋ ๋ณต์กํ ๊ณผ์ ์ด ํ์ํ๋ค. ๋จผ์ , ์ด ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ช ๋ฒ์ง์ ํ ๋น๋ ๊น? ๋ง์ฝ ์ด์์ฒด์ ๊ฐ ์๋ค๋ฉด, ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์ด๋ฅผ ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํ ๊ฒ์ด๋ค. ํ์ง๋ง ์ด์์ฒด์ ๊ฐ ์กด์ฌํ๋ฏ๋ก ์ค์ ํ๋ก๊ทธ๋๋จธ๋ ์ด๋ฅผ ์ ๊ฒฝ์ธ ํ์๊ฐ ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ, ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ ์ฃผ์๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ ๊ฒ์ด๋ค.(๊ณ ์์ค์ธ์ด์์๋ ์ง์ ์ฃผ์๋ฅผ ๋ค๋ฃจ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.)
๋ํ, ๋ค์ค ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์๋ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๊ณ ๋ด๋ ค๊ฐ๊ณ ๋ฅผ ๋ฐ๋ณตํ๊ธฐ ๋๋ฌธ์, ํ ํ๋ก๊ทธ๋จ์ ๊ณ ์ ์ ์ธ ๊ณต๊ฐ์ ์ฌ์ฉํ ์ ์๋ค. ์ด๋ฌํ ์ฌ๋ฌ ๊ณ ๋ ค ์ฌํญ์ ํด๊ฒฐํด์ฃผ๋ ๊ฒ์ด ์ ์๋ ์ดํด๋ดค๋ **MMU(Memory Management Unit)**์ด๋ค. ๊ทธ๋ฆฌ๊ณ MMU์๋ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋ ๋๋ง๋ค ๋ค๋ฅธ ์ฃผ์๊ณต๊ฐ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฌ๋ฐฐ์น ๋ ์ง์คํฐ(Relocation register)๊ฐ ๋ณ๋๋ก ์กด์ฌํ๋ค.
์ ๊ทธ๋ฆผ์ MMU์ ๋ชจ์ต์ด๋ค. ํ๋ก๊ทธ๋จ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ํด๋น ์ฃผ์๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์๊ฐํ์ง ์๊ณ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ค. ๋ง์ฝ ํด๋น ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ์์์ฃผ์๊ฐ 0๋ฒ์ง๋ผ๊ณ ํ ๋, ์ค์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์์๋ ํ ๋น๋๋ ์ฃผ์๊ฐ ์ ๋์ ์ด๊ธฐ ๋๋ฌธ์ 0๋ฒ์ง์ด๋ผ๋ ์ฃผ์๋ฅผ ์ค์ ํ ๋น๋ ์ฃผ์๋ก ๋ณ๊ฒฝํด์ฃผ์ด์ผ ํ๋ค. ์ด๋ ์ฌ๋ฐฐ์น ๋ ์ง์คํฐ๋ฅผ ์ด์ฉํ๋ค.
๋ง์ฝ, ํ๋ก๊ทธ๋จ์ด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ 500๋ฒ์ง์ ํ ๋น๋์ด ์ฌ๋ฐฐ์น ๋ ์ง์คํฐ๊ฐ์ด 500์ผ๋ก ์ค์ ๋์๋ค๋ฉด, CPU์์ ํ๋ก๊ทธ๋จ์ 0๋ฒ์ง๋ฅผ ์ฌ์ฉํ ๋ MMU๋ฅผ ํต๊ณผํ๋ฉด ์ฌ๋ฐฐ์น ๋ ์ง์คํฐ์ ์ํด 500๋ฒ์ง๋ก ๋ณ๊ฒฝ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ CPU๋ 0๋ฒ์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ์๊ณ ์์ง๋ง, ์ค์ ๋ฉ๋ชจ๋ฆฌ์์๋ MMU์ ์ํด 500๋ฒ์ง๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ๊ฒ์ด๋ค. CPU๋ฅผ ์์ธ๋ค.
MMU(Memory Management Unit)์ ๊ธฐ๋ฅ์ ์ดํด๋ณด๋ฉด, ์ด์ ์ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ๋ฅผ ์ํด base์ limit ๋ ์ง์คํฐ๊ฐ ์์๋ค. ์ด๋ CPU์์ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ด ์ฃผ์๊ฐ ํด๋น ํ๋ก๊ทธ๋จ์ base๋ limit ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ์ฌ ๊ทธ ํ๋ก๊ทธ๋จ์ ๊ฐ์ ๋ก ์ข ๋ฃ์ํจ๋ค.
MMU๋ ์ด ๊ธฐ๋ฅ ์ด์ธ์๋ ์ฌ๋ฐฐ์น ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํด์ ํ๋ก๊ทธ๋จ์ด ์ด๋ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋๋ผ๋ ์ค์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋ ์ฃผ์๋ฅผ ์ฐพ์๊ฐ ์ ์๋๋ก address translation ๋์์ ์ํํ๋ค. ์ฆ, CPU๋ ํ๋ก๊ทธ๋จ์ ์ค์ ๋ ์ฃผ์๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ณ ๋ฉ๋ชจ๋ฆฌ์ ๋ช ๋ น์ ๋ณด๋ด์ง๋ง, MMU์ ์ํด ์ค์ ๋ก ํ๋ก๊ทธ๋จ์ด ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ก ๋ณํํด์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด๋ค. ๊ทธ ๊ฒฐ๊ณผ, ํ๋ก๊ทธ๋จ์ ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ์์น๋ CPU์ ์ ํ ์ํฅ์ ๋ฏธ์น์ง ์๊ณ ์ ์์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด๋ค.
MMU์ ์ํด ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฃผ์๋ ๋ ๊ฐ์ง๋ก ๊ตฌ๋ถ๋๋ค. **CPU์์ ์ฌ์ฉํ๋ ์ฃผ์๋ ๋ ผ๋ฆฌ ์ฃผ์(logical address)**๋ผ๊ณ ํ๊ณ , **๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ์ฃผ์๋ ๋ฌผ๋ฆฌ ์ฃผ์(physical address)**๋ผ๊ณ ํ๋ค.
2. ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น ๋ฐฉ์ง
์ด์์ฒด์ ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ญ๋นํ์ง ์๋ ๊ฒ์ด ์ค์ํ๋ค.
2.1. ๋์ ์ ์ฌ(Dynamic Loading)
ํ๋ก๊ทธ๋จ์ด ์คํํ๋๋ฐ ๋ฐ๋์ ํ์ํ ๋ฃจํด/๋ฐ์ดํฐ๋ง ์ ์ฌ(load)ํ๋ ๊ฒ
ํ๋ก๊ทธ๋จ์ ์ ์ฒด ์ฝ๋์์ ๋ชจ๋ ๋ฃจํด์ด ๋ค ์ฌ์ฉ๋๋ ๊ฒ์ ์๋๋ค. ๋ํ์ ์ผ๋ก ์ค๋ฅ ์ฒ๋ฆฌ ๊ตฌ๋ฌธ์ด๋ค. ์ค๋ฅ ์ฒ๋ฆฌ ๊ตฌ๋ฌธ์ if๋ฌธ๊ณผ ๊ฐ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋๋ง ํด๋น ๋ด๋ถ ์ฝ๋๊ฐ ์คํ๋๋ ๊ฒ์ ๋งํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋์ ์ ์ฌ๋ฅผ ์ํํ๋ฉด ํ๋ก๊ทธ๋จ์ ์ค์ ๋ฉ๋ชจ๋ฆฌ์๋ ์ด๋ฌํ ์ค๋ฅ ๊ตฌ๋ฌธ์ ์ ์ธํ๊ณ ์ ์ฌํ๋ค. ์ด๋ฌํ ์ํ์์ ์คํํ๋ค๊ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๊ทธ ๋ ํด๋น ์ค๋ฅ ๊ตฌ๋ฌธ์ ์ฐพ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ๋ค.
๋ฐ์ดํฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ค. ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋์ ์ฌ์ฉ๋๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์, ํนํ ๋ฐฐ์ด๊ณผ ํด๋์ค์ ๊ฒฝ์ฐ๋ ํ์ํ ๋ถ๋ถ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค๋๊ณ , ์คํ ๋์ค ํ์ํ ๋๋ง๋ค ํด๋น ๋ถ๋ถ์ ์ฐพ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ค๋ค.
๋ฐ๋๋ก, ๋ชจ๋ ๋ฃจํด๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ๋ ๊ฒ์ ์ ์ ์ ์ฌ(static loading)์ด๋ผ๊ณ ํ๋ค. ํ๋ ์ด์์ฒด์ ๋ ๋๋ถ๋ถ ๋์ ์ ์ฌ๋ฅผ ์ฌ์ฉํ๋ค.
2.2. ๋์ ์ฐ๊ฒฐ(Dynamic Linking)
๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋๋ง ์ฌ๋ฆฌ์.
๋์ ์ฐ๊ฒฐ์ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค๋ณต์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฒ์ด ์๋๋ผ ํ๋๋ง ์ฌ๋ฆฌ๋๋ก ํ๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ์ฝ๋์ P1, P2 ํ๋ก์ธ์ค๊ฐ ์๋ค๊ณ ํ์.
์ด ๋ ์์คํ์ผ์ ์ปดํ์ผํ๋ฉด ๋ชฉ์ ํ์ผ์ด ์์ฑ๋๊ณ , ์ฌ๊ธฐ์ ์ฌ์ฉ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋งํฌํ์ฌ ์คํํ์ผ์ ๋ง๋ ๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋ค. ๋ ํ๋ก์ธ์ค๊ฐ ์ ์ฌ๋์์ ๋, printf() ๋ฅผ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ค๋ณต๋์ด์ ์ ์ฌ๋์ด์๋ค.
์ด์ ๊ฐ์ด, ๋๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ ํํ ๋ณผ ์ ์๋ค. ์ด๋ฌํ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ ํ, ์ด๋ฅผ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ด ํ๋์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋๋ก ํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ค์ผ ์ ์๋ค.
๋์ ์ฐ๊ฒฐ์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค๋ณต์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋ ํ์ ๋งํฌ(link) ์์ ์ ์ํํ๋ค. ๊ธฐ์กด์๋ ์คํ ํ์ผ์ด ๋ง๋ค์ด์ง๊ธฐ ์ ์ ๋งํฌ ๊ณผ์ ์ ์ํํ์๋๋ฐ, ์ด๋ฅผ ์ ์ ์ฐ๊ฒฐ์ด๋ผ๊ณ ํ๋ค.
์ ๊ทธ๋ฆผ์ ์์ ์์ ์ดํด ๋ณธ P1, P2 ํ๋ก์ธ์ค๊ฐ ๋์ ์ฐ๊ฒฐ์ ํตํด ๊ณตํต ๋ผ์ด๋ธ๋ฌ๋ฆฌ(printf() ๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ฅผ ์ฐ๊ฒฐํ ๋ชจ์ต์ ๋ณผ ์ ์๋ค. ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ Linux์์๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Shared Library), Windows์์๋ **๋์ ์ฐ๊ฒฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Dynamic Linking Library, DLL)**๋ผ๊ณ ๋ถ๋ฅธ๋ค.
2.3 Swapping
Swapping์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ์๋ ํ๋ก์ธ์ค ์ค์์ ์ค๋ซ๋์ ์ฌ์ฉํ์ง ์์ ํ๋ก์ธ์ค๋ฅผ ํ๋ก์ธ์ค ์ด๋ฏธ์ง ํํ๋ก ๋ง๋ ํ ํ๋๋์คํฌ(Backing store)์ ๋ด๋ ค๋ณด๋ธ๋ค. ๋ฉ๋ชจ๋ฆฌ์์ Backing store๋ก ๊ฐ๋ ๊ฒ์ swap-out, ๋ค์ Backing store์์ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ๋ ๊ฒ์ swap-in์ด๋ผ๊ณ ํ๋ค.
์ฌ๊ธฐ์, ํ๋ก์ธ์ค ์ด๋ฏธ์ง๋ ํด๋น ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋ ํ ์คํ๋๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ๋ฑ์ ๊ณผ์ ์ ๊ฑฐ์น๋๋ฐ, ํ์ฌ ๋ฐ์ดํฐ์ ์ํ๋ฅผ ํ๋ก์ธ์ค ์ด๋ฏธ์ง๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ด๋ ๋จ์ํ, ํ๋๋์คํฌ์ ์กด์ฌํ๋ ํ๋ก๊ทธ๋จ(exeํ์ผ)๊ณผ๋ ์ ํ ๋ค๋ฅธ ๋ฐ์ดํฐ์ด๋ฏ๋ก, ๋ฐ๋ก ์ ์ฅํด์ผํ๋ค. ์ด์ ๊ฐ์ swapping ๊ณผ์ ์ผ๋ก ์ธํ ํ๋ก์ธ์ค ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ํ๋๋์คํฌ์ ์ผ๋ถ๋ถ์ ๋ถ๋ฆฌํ์ฌ ์ฌ์ฉํ๋๋ฐ, ์ด๋ฅผ backing store ๋๋ swap device๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Backing store์ ํฌ๊ธฐ๋ ๋๋ต ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ ์ ๋๋ก ์์ํ ์ ์๋ค. ๋ฉ๋ชจ๋ฆฌ์ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ์ซ๊ฒจ๋๋ค๊ณ ํด๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ๋์ง ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ ํฌ์ง ์๋ PC๋ ์ค๋งํธํฐ์ ํ๋๋์คํฌ์ ์ผ๋ถ๋ฅผ backing store๋ก ์ฌ์ฉํ์ง๋ง, ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ ํฌ๋ค๋ฉด ๋ฐ๋ก ํ๋๋์คํฌ ์์ฒด๋ฅผ backing store๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์๋ค.
Swap-out๋ ํ๋ก์ธ์ค๋ ๋ค์ swap-in์ ํ ๋, ์ด์ ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ด ์๋ ์๋ก์ด ์ฃผ์ ๊ณต๊ฐ์ผ๋ก ๊ฐ ์๋ ์๋ค. ์ด๋ ํด๋น ํ๋ก์ธ์ค๊ฐ backing store์ ์๋ ๋์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ํด๋น ์ฃผ์ ๊ณต๊ฐ์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์๋ค. ํ์ง๋ง ์ด๋ MMU์ ์ฌ๋ฐฐ์น ๋ ์ง์คํฐ๋ก ์ธํด ์ด๋์ ์ ์ฌ๋๋์ง ์๊ด์์ด ์ ์์ ์ผ๋ก ์ํํ ์ ์๋ค.
ํ์ฌ๋ ํ๋ก์ธ์ค์ ํฌ๊ธฐ๊ฐ ์ปค์ง๊ณ , ํ๋๋์คํฌ๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ์๋๋ฉด์์ ๋งค์ฐ ๋๋ฆฌ๋ฏ๋ก swapping ๋์์ ์ค๋ฒํค๋๋ ํฌ๋ค๊ณ ๋ณผ ์ ์๋ค. ํ์ง๋ง ์ด๋ก ์ธํด ์ป๋ ์ด๋์ด ๋ ๋ง์ผ๋ฏ๋ก ๋๋ถ๋ถ ์ด์์ฒด์ ๋ ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์๊ณ , ์๋๊ฐ ์ค์ํ ์๋ฒ ์ปดํจํฐ๋ ์ํผ ์ปดํจํฐ๋ backing store๋ฅผ ํ๋๋์คํฌ๊ฐ ์๋ ์ข ๋ ๋น ๋ฅธ ์ ์ฅ ์ฅ์น๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
3. ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น(Contiguous Memory Allocation)
๊ณผ๊ฑฐ์๋ ๋ฉ๋ชจ๋ฆฌ์ ํ๋ก์ธ์ค๊ฐ ํ๋๋ง ์ฌ๋ผ๊ฐ๋ ํํ์๋ค. ํ์ง๋ง ํ์ฌ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ํ ๋น๋๋ ๋ค์ค ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์ด ๋์๋ค.
๋ถํ ์งํ์ ๋ฉ๋ชจ๋ฆฌ ์ํ๋ฅผ ์ดํด๋ณด๋ฉด, ์ด์์ฒด์ ๋ง ํ ๋น๋์ด ์๊ณ ๋น์ด์๋ ์ํ์ผ ๊ฒ์ด๋ค. ์ด๋ฌํ ๋น์ด์๋ ๊ณต๊ฐ์ hole ์ด๋ผ ๋ถ๋ฅธ๋ค. ์ฆ, ๋ถํ ์งํ์๋ ์ด์์ฒด์ ์ big single hole์ด ์๋ ์ํ์ด๋ค. ์๊ฐ์ด ์ง๋๋ฉด์ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๊ณ ์ข ๋ฃํ๊ณ ๋ฅผ ๋ฐ๋ณตํ๋ฉด, ์ฌ๋ฌ ๊ณณ์ ์๋ก ๋ค๋ฅธ ํฌ๊ธฐ์ ํ(hole)์ด ์กด์ฌํ ๊ฒ์ด๋ค. ์ด๋ฌํ ์ํ๋ฅผ scattered holes๋ผ๊ณ ํ๋ค.
์ ๊ทธ๋ฆผ์ ๋ถํ ์งํ ์ํ์์ ์๊ฐ์ด ๊ฒฝ๊ณผํ๋ฉด์ ํ๋ก์ธ์ค๋ค์ด ์์ฑ, ์ข ๋ฃ๋ฅผ ๋ฐ๋ณตํ ํ์ ์ํ์ด๋ค. ์ด์ ๊ฐ์ด hole๋ค์ด ๋ถ์ฐ์ํ๊ฒ ํฉ์ด์ ธ ์๋ ์ํ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ๋จํธํ(Memory fragmentation) ๋ผ๊ณ ํ๋ค.
๋ฉ๋ชจ๋ฆฌ ๋จํธํ๋ก ์ธํด์ ์ฌ๋ฌ ๊ณณ์ hole์ด ํฉ์ด์ ธ ์๋ ์ํ์์ ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๋ คํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, hole์ด 3๊ฐ๊ฐ ์๊ณ ๊ฐ ํฌ๊ธฐ๋ 50byte, 50byte, 80byte์ด๋ค. ๊ทธ๋ฐ๋ฐ ํ ๋นํ๋ ค๋ ํ๋ก์ธ์ค์ ํฌ๊ธฐ๋ 150byte์ด๋ค. ๊ฐ hole๋ค์ ํ๋๋ก ํฉ์น๋ฉด 230byte๋ก ์ด ํ๋ก์ธ์ค๋ฅผ ํ ๋นํ ์ ์๋๋ฐ ์ค์ฌ๋ก๋ ๋๋์ด์ ธ ์์ผ๋ฏ๋ก ํ ๋น๋์ง ๋ชปํ๋ค. ์ด๋ฌํ ํ์์ ์ธ๋ถ ๋จํธํ(External fragmentation) ๋ผ๊ณ ํ๋ค. ์ธ๋ถ ๋จํธํ๋ฅผ ์ค์ด๊ธฐ ์ํด์๋ ์ด๋ค ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์๊น?
3.1. ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐฉ์
์ธ๋ถ ๋จํธํ์ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ธฐ ์ ์ ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐฉ์์ ๋จผ์ ์ดํด๋ณด์. ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐฉ์์๋ 3๊ฐ์ง๊ฐ ์๋ค. First-fit, Best-fit, Worst-fit ์ด ์๋ค.
- First-fit(์ต์ด ์ ํฉ)
- ์ต์ด ์ ํฉ์ ํ ๋นํ ํ๋ก์ธ์ค ํฌ๊ธฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ hole์ ํ์ํ๋ ์์ ์ค์์ ๊ฐ์ฅ ๋จผ์ ์ฐพ์ hole์ ํ๋ก์ธ์ค๋ฅผ ํ ๋นํ๋ ๊ฒ์ด๋ค.
- Best-fit(์ต์ ์ ํฉ)
- ์ต์ ์ ํฉ์ ํ ๋นํ ํ๋ก์ธ์ค ํฌ๊ธฐ์ hole ํฌ๊ธฐ์ ์ฐจ์ด๊ฐ ๊ฐ์ฅ ์์ hole์ ํ๋ก์ธ์ค๋ฅผ ํ ๋นํ๋ ๊ฒ์ด๋ค.(holeํฌ๊ธฐ๋ ํ๋ก์ธ์ค ํฌ๊ธฐ๋ณด๋ค ๋ฐ๋์ ์ปค์ผ ํ๋ค.)
- Worst-fit(์ต์
์ ํฉ)
- ์ต์ ์ ํฉ๊ณผ ๋ฐ๋๋ก, ํ ๋นํ ํ๋ก์ธ์ค ํฌ๊ธฐ์ hole ํฌ๊ธฐ์ ์ฐจ์ด๊ฐ ๊ฐ์ฅ ํฐ hole์ ํ๋ก์ธ์ค๋ฅผ ํ ๋นํ๋ ๊ฒ์ด๋ค.
์์
Hole id | HoleSize | Process Name | Size |
---|---|---|---|
1 | 100kb | P1 | 212kb |
2 | 500kb | P2 | 417kb |
3 | 600kb | P3 | 112kb |
4 | 300kb | P4 | 426kb |
5 | 200kb |
First-fit
Best-fit
Worst-fit
๊ฐ 3๊ฐ์ง ๋ฐฉ์๋๋ก ํ๋ก์ธ์ค๋ฅผ ํ ๋นํ ๋ชจ์ต์ ๋ณผ ์ ์๋ค. ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด Best-fit์ 4๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋ชจ๋ ํ ๋นํ ์ ์์๊ณ , ๋๋จธ์ง 2๊ฐ๋ ๋ง์ง๋ง P4๋ฅผ ํ ๋นํ์ง ๋ชปํ๋ค. ๋ชจ๋ hole์ ํฉ์น๋ฉด P4๋ฅผ ํ ๋นํ ์ ์์ง๋ง, hole๋ค์ ๊ฐ๊ฐ ๋๋ ์ ธ ์๊ธฐ ๋๋ฌธ์ ํ ๋นํ ์ ์๋ค.(์ธ๋ถ ๋จํธํ)
๊ฐ ํ ๋น ๋ฐฉ์์ ์ผ๋ฐ์ ์ธ ์ฑ๋ฅ์ ๋น๊ตํด๋ณด๋ฉด, ์๋๋ฉด์์๋ first-fit์ด ๊ฐ์ฅ ๋น ๋ฅด๋ค. ๋ฉ๋ชจ๋ฆฌ ์ด์ฉ๋ฅ ๋ฉด์์๋ first-fit, best-fit์ด ๋น์ทํ ์ฑ๋ฅ์ ๋ธ๋ค๊ณ ์๋ ค์ ธ์๋ค. ํ์ง๋ง ์ฌ๋ฌ ์คํ์ ํตํด best-fit์ ์ฌ์ฉํ๋๋ผ๋ ์ธ๋ถ ๋จํธํ๋ก ์ธํด ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ์ 1/3 ์ ๋๋ฅผ ๋ญ๋นํ๋ค๊ณ ํ๋ค. ์ด๋ ๊ฑฐ์ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ ์์ค์ด๋ค.
์ด๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ Compaction ์ด๋ค. compaction์ ์ฌ๋ฌ ๊ณณ์ ํฉ์ด์ ธ์๋ hole๋ค์ ๊ฐ์ ๋ก ํ๋๋ก ํฉ์น๋ ๊ฒ์ด๋ค. ํ์ง๋ง hole์ ์ฎ๊ธฐ๋ ์ค๋ฒํค๋๊ฐ ๋๋ฌด ํฌ๊ณ , hole๊ณผ process ๋๊ฐ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ป๊ฒ ์ฎ๊ฒจ์ผ ๋น ๋ฅด๊ฒ ํฉ์น ์ ์๋์ง์ ๋ํ ์ต์ ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํ์ง ์๋ ํฐ ๋จ์ ์ด ์กด์ฌํ๋ค.
Reference
- KOCW ์ํฌ์ฌ ๊ต์๋ - ์ด์์ฒด์
- ์ํฌ์ฌ ๊ต์๋ ๋ธ๋ก๊ทธ(์ํ ๊ธฐ์ถ ๋ฌธ์ )
- codemcd ๋์ ์ ๋ฆฌ๊ธ
- Operating System Concepts, 9th Edition - Abraham Silberschatz