OS๊ฐ ํ๋ Memory Management์ ํต์ฌ ๊ธฐ๋ฅ์ CPU๊ฐ ํ๋ก๊ทธ๋จ์ ์ํํ ์ ์๋๋ก ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ด๋ค.
CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ data์ Instruction์ ๊ฐ์ ธ์ฌ ๋ ์ฃผ์๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ์ ธ์จ๋ค. PC, MAR์ ๋ค์ด์๋ ์ฃผ์๋ฅผ ๋ณด๊ณ ๊ฐ์ ธ์ด.
๊ทธ๋ฌ๊ธฐ ์ํด์, OS๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด์์ ํ๋ ์ผ์ ํฌ๊ฒ 2๊ฐ์ง.
1. ์ฃผ์๋ฅผ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ๊ฒ์ธ๊ฐ. (๋ณธ์ง์ ๊ธฐ๋ฅ)
2. virtual memory - ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํจ์จ์ ์ฌ์ฉ
ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์๋ ๊ทธ ํ๋ก์ธ์ค์ ์ฝ๋๋ฅผ ์ํํ๋ ๊ณผ์ ์ ์์ ์ address space๋ฅผ ๋ฒ์ด๋ ์์ญ์ ์ ๊ทผํ๋ ค ํ๋ฉด ๋ง์์ฃผ๋ ๊ธฐ๋ฅ๋ ์ ๊ณตํด์ผ ํ๋ค.
๋์ ์์ ์ ์์ญ์ด ์๋ ์ปค๋ ์์ญ์ ์ ๊ทผํ๋ ๊ฒ์ System call์ ํตํด์ ๊ฐ์ ์ ์ผ๋ก ์ ๊ทผํ ์ ์๋ค.
Multistep Processing of a User Program
ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ํด์๋ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์ผ ํ๋๋ฐ, ์ด๋ ํ ๊ณผ์ ์ผ๋ก ์ฌ๋ผ์ค๊ฒ ๋๋์ง ์ดํด๋ณด์.
ํ๋์ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ์ฌ๋ฌ ๊ฐ์ ์์ค ์ฝ๋์ ๋ค์ด์๋ ํจ์๋ค์ด ์๋ก๊ฐ ์๋ก๋ฅผ ํธ์ถํ๊ธฐ ์ํด์ ์ฐ๊ฒฐ๊ณ ๋ฆฌ๊ฐ ์์ด์ผ ํ๋ค. ์ด ํจ์๋ ์ C ํ์ผ์ ์๋ ํจ์๋ฅผ ํธ์ถํ๋ ๊ฑฐ์ผ! ์ด๋ฐ ๊ฑฐ
์ด ์ฐ๊ฒฐํ๋ ๊ฒ์ด ๋งํน์ด๋ค. ๋ง์ปค๊ฐ object ํ์ผ๋ค์ ๋ค ๋ชจ์์ ํ๋๋ก ๋ฌถ์ด์ค๋ค. ๋ฌถ์ด์ง ๊ฒ load module์ด๊ณ ,
๋ง์ปค๊ฐ ๋ง๋ load module์ loader๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ํ์ฌํ๋ค. ์ด๋ ์์ค ์ฝ๋์์ ํธ์ถํ c library ํจ์ ๋ฑ๋ ๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ์ ํ์ฌํ๋ค. ์ฌ๊ธฐ์ ๋์ด ์๋๋ผ dynamic library๋ ์ค์ ํธ์ถ ์์ ๋ฐํ์์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค๊ฒ ๋๋ค.
Address Space
์ด์ ์๋ ๋งํ๋ฏ์ด, ํ๋ก์ธ์ค๋ Address space์ ํํ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค๊ฒ ๋๋ค.
์ Address space์ผ๊น?
๋ฉ๋ชจ๋ฆฌ์ ํ์ฌ๋ ์ด ํ๋ก์ธ์ค์ ์์ญ์ ์ฃผ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ ์ฃผ์๋ก ๊ด๋ฆฌ๋๋ ์์ญ์ด๋ผ๊ณ ํด์ address space๋ผ๊ณ ํ๋ค.
CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํด์ Instruction์ด๋ data๋ฅผ ๊ฐ์ ธ์ฌ ๋ ๊ฑฐ๊ธฐ์ ๋ฒ์ง์๋ฅผ ์์์ผ ๊ฐ์ ธ์ฌ ์ ์๊ณ , ๊ทธ ๋ฒ์ง์๋ฅผ ์๊ธฐ ์ํด์๋ ํ๋ก๊ทธ๋จ ์ฝ๋์์ ๋ณ์ ๋ช
์ผ๋ก ์ ์ธํ ์ด ๋ณ์ ๋ช
์ด ์ด ๋ณ์๊ฐ ์ ์ฅ๋ address space ์์ ์ฃผ์์ ๋งคํ์ด ๋์ด์ผ ํ๋ค.
๋ฐ๋ผ์ ๋ณ์ ๋ช
๊ณผ ์ค์ ๋ฐ์ดํฐ์ ์ฃผ์๋ฅผ ๋งคํ์์ผ ์ฃผ๋ ๊ฒ์ด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์ค์ํ ์ญํ ์ด๋ค.
๋ณ์ ๋ช ๊ณผ ๋ณ์๊ฐ ์ ์ฅ๋ ์ฃผ์๋ฅผ ๋งคํํ๋ ๊ฒ์ Binding์ด๋ผ๊ณ ํ๋ค.
Binding์ ์ผ์ด๋๋ ์์ ์ ๋ฐ๋ผ 3๊ฐ์ง๋ก ๋๋๋ค.
1. Compile time binding.
์ด๋ฆ์์ ์ ์ ์๋ฏ์ด ์ปดํ์ผ ํ์์ ๋ฐ์ธ๋ฉ์ด ์ผ์ด๋๋ ๊ฒ์ด๋ค.
์ด์ฐฝ๊ธฐ ์ปดํจํฐ์์๋ ํ๋ก์ธ์ค๊ฐ ํ๋ ๋ฐ์ ์์ ๋, ์ค๋ก์ง ํ ์๊ฐ์๋ ํ๋์ ํ๋ก์ธ์ค๋ง ์ํ๋ ์ ์๋ ์์คํ
์ OS๋ ์ปดํ์ผ ํ์ ๋ฐ์ธ๋ฉ์ ์ผ๋ค.
๊ฐ ๋ณ์ ๋ช
(์ฌ๋ณผ)์ ์ฃผ์๋ฅผ ๋งคํ์ ์ํค๋ ๊ฒ์ ์ปดํ์ผํ ๋ ํ๋ค. ์ปดํ์ผ ํ๊ณ ๋๋ฉด ํ๋ก๊ทธ๋จ ์ฝ๋ ์์ ๊ฐ ๋ณ์์ ์ฃผ์ ๊ฐ์ด ํ๋ ์ฝ๋ฉ์ด ๋๋ค.
=> ์ฝ๋ ์์ ์ฃผ์๊ฐ ๋ค ๋ฐํ์์ผ๋๊น CPU๋ ๊ทธ๋ฅ ๊ฑฐ๊ธฐ์ ์ ๊ทผํ๋ฉด ๋๋ค.
ํ๋ก์ธ์ค๊ฐ ํ๋๋ฉด DRAM์์ ์ปค๋ ์์ญ์ ์ ์ธํ ๋๋จธ์ง ์์ญ์ ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ ๋ถ ์ฌ์ฉํ๊ฒ ๋๋ค.
๊ทธ๋ผ ์ปค๋ ์์ญ ๋ฐ๋ก ์๋ถํฐ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ์จ๋ค ๊ฐ์ ํ๊ณ ์ฃผ์๋ฅผ ํ ๋นํ๋ฉด ๋จ.
=> ์ด๋ ๊ฒ ํ๋ฉด ๋ฌธ์ ๊ฐ ์๋ค. ์ด ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ OS ํ๊ฒฝ์์ ์คํ์ํค๋ฉด ์ปค๋ ์์ญ์ ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ ์ ํ๋ก๊ทธ๋จ์ ์์์ ์ด ๋ฌ๋ผ์ง๋ค. ๊ทธ๋ฌ๋ฉด ๊ทธ ํ๋ก๊ทธ๋จ์ ๊ทธ ๊ธฐ๊ณ์์ ๋ค์ ์ปดํ์ผ์ ํด์ผ ํ๋ค.
2. Load time binding.
์ปดํ์ผํ ๋๋ ์๋์ ์ธ ์ฃผ์๋ง ์ฝ๋์ ๋ฐ์๋ฃ๋๋ค. ์ด ํ๋ก์ธ์ค์ address space๊ฐ 0๋ฒ์ง๋ถํฐ ์์ํ๋ค๊ณ ๊ฐ์ ํ๊ณ 0๋ฒ์ง์์ ๋ช ๋ฐ์ดํธ ๋จ์ด์ง ๊ณณ์ ๋ณ์๊ฐ ์ ์ฅ๋์ด ์๋์ง ์๋์ ์ธ ์ฃผ์(offset)๋ฅผ ๋ณ์๋ง๋ค binding.
์๋์ ์ธ ์ฃผ์๋ ์ค์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฃผ์๊ฐ ์๋๋ค. ์ด ํ๋ก์ธ์ค๊ฐ ์ค์ DRAM์ 0๋ฒ์ง์ ์ฌ๋ผ๊ฐ๋ฉด ์ผ์นํ๊ฒ ์ง๋ง 0๋ฒ์ง์๋ ๋ฌด์กฐ๊ฑด ์ปค๋์ด ์ฌ๋ผ๊ฐ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ด ์ ์๋ค. ์ค์ physicalํ ์ฃผ์๊ฐ ๊ฒฐ์ ๋๋ ์์ ์ ํ๋ก์ธ์ค๊ฐ ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ ์์ ์ ๊ฒฐ์ ๋๋ค. ๊ทธ๋ ์ด ํ๋ก๊ทธ๋จ์ด ํ์ฌ๋ ์์ ์ฃผ์๋ฅผ ์ ์ ์์ผ๋๊น ์๋์ฃผ์๋ฅผ ์ด์ฉํด์ ๋ชจ๋ ์ฃผ์๋ฅผ ๋ฐ์ธ๋ฉํ ์ ์๋ค. ๊ทธ๋์ load time์ด๋ผ๊ณ ํจ.
๋ง์ฝ ์ด ํ๋ก์ธ์ค๊ฐ 100๋ฒ์ง๋ถํฐ ํ ๋น๋์๋ค๊ณ ํ๋ฉด, 100๋ฒ์ง์ ์๊น ๋ฐ์ธ๋ฉํ ์๋ ์ฃผ์๋ฅผ ๋ํด์ฃผ๋ฉด ๊ทธ ๋ณ์์ ์ฃผ์๋ฅผ ์ ์ ์๋ค.
=> ๋ก๋ํ ๋น์์ ์ค์ ์ฃผ์๊ฐ ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ load time binding.
์ด๋ ๊ฒ ๋๋ฉด OS๊ฐ ๋ฌ๋ผ์ ธ์ ์ปค๋ ์์ญ์ ํฌ๊ธฐ๊ฐ ๋ฌ๋ผ์ ธ๋ ์๋ ์ฃผ์๊ฐ ์์ผ๋ฉด ์ ๊ทผํ ์ ์๋ค.
๋ํ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ฌ๋ผ์ฌ ๋๋ ์ ์ฉ์ด ๊ฐ๋ฅํ ๋ฐฉ์์.
๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋ ๋ก๋ ํ์ ๋ฐ์ธ๋ฉ์ ํ ๋ฒ ์ฌ๋ผ๊ฐ์ผ๋ฉด ์ฃผ์๊ฐ ๊ฒฐ์ ๋์ด ๋ฒ๋ฆฐ๋ค. ์คํ๋๋ ๊ณผ์ ์ ์ด ํ๋ก์ธ์ค์ address space๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์์ ์์น๋ฅผ ์ด๋ํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅ. ์ด๋ํ๋ฉด ์์ ์ฃผ์๊ฐ ๋ฐ๋๊ธฐ ๋๋ฌธ์ ๋ฐ์ธ๋ฉํ ์ฃผ์๊ฐ ๋ค ๋ฐ๋์ด์ผ ํ๋ค.
3. Execution time binding
์ด๊ฒ ์์ฆ์ ์ฐ๋ ๋ฐฉ์. ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์์ ์์น๋ฅผ ์ด๋ํ๋ค๊ณ ํ๋๋ผ๋ ์๋ฌด ๋ฌธ์ ์์ด ํ๋ก๊ทธ๋จ์ด ์คํ๋ ์ ์๋๋ก ํด์ค๋ค.
์ค์ ๋ก ์ฝ๋ ์์ ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์๊ฐ ๊ฒฐ์ ๋์ง ์๋๋ค. ๋ก๋ ๋๋ ์์ ์๋ ์๋์ ์ธ ์ฃผ์๋ง ๊ฐ์ง๊ณ ์๋ค. CPU๊ฐ ์๋ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด ์ค์ ์ฃผ์๊ฐ์ผ๋ก ์ ํ๋๋ค.
ํ๋ก์ธ์ค์ ์์น๊ฐ ๋ฐ๋๋๋ผ๋ ์๋ ์ฃผ์๋ ๋ฐ๋์ง ์๊ธฐ ๋๋ฌธ์ (์์์ 0๋ฒ์ง๋ก ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์) ๋ฐ๋ ์์น์ ๋ํ ๊ด๋ฆฌ๋ฅผ OS๊ฐ ํ๊ฒ ๋๊ณ , ์์ ์ฃผ์๊ฐ ์๊น๋ 100๋ฒ์ง์๋๋ฐ ์ด์ 200๋ฒ์ง๋ก ๋ฐ๋์์ด ์ด๊ฒ๋ง ์๋ ค์ฃผ๋ฉด ์ ์์ ์ผ๋ก ๋์ํ๋ค.
=> ์๋ ์ฃผ์๋ฅผ ์ค์ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ก ๋ฐ๊ฟ์ฃผ๋ ๋ญ๊ฐ๊ฐ ํ์ํ๋ค.
=> address mapping table ์ด๋ผ๋ ์๋ฃ๊ตฌ์กฐ ํ์
=> ์ด ํ
์ด๋ธ์ ์ด์ฉํด์ ๋น ๋ฅด๊ฒ ์ฃผ์๋ฅผ ๋ฐ๊ฟ์ฃผ๋ ๋๊ตฐ๊ฐ๋ ํ์ํ๋ค. ๋งค Instruction์ ์ ๊ทผํ ๋๋ง๋ค ๋ฐ๊ฟ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋นจ๋ผ์ผ ํ๋ค. ํ๋์จ์ด์ ์ง์์ ๋ฐ์ ์ ๋ฐ์ ์์.
=> ๊ฑ๊ฐ MMU( Memory Management Unit) ์ด๋ค.
Address Mapping Table
logicalํ 0๋ฒ์ง๋ ์ค์ 500๋ฒ์ง์ ์ ์ฅ๋์ด ์์ด. ๋๋ logicalํ 500๋ฒ์ง๋ ์ค์ 20000๋ฒ์ง์ ์ ์ฅ๋์ด ์์ด.
์ด๊ฑธ mapping table์ ๋ณด๋ฉด ์ ์ ์๋ค.
0๋ฒ์ง๋ถํฐ ์์ํ๋ค๊ณ ์๊ฐํ๊ณ ๋ฐ์ธ๋ฉํ ์๋ ์ฃผ์๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์ค์ ์ฃผ์๋ฅผ ์์๋ด๊ธฐ ์ํด์๋ ํ์ํ ์ ๋ณด๋ค์ด ์๋ค.
๊ฐ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์ ์ฅ๋ ์์น์ ์์ ์ฃผ์์ Address space์ ๊ธธ์ด๋ฅผ ์ ์ฅํ๋ ๋ณ์๊ฐ ํ์. PCB์์๋ ์ด๊ฑธ ์ ์ฅํ๋ ๋ณ์๊ฐ ์กด์ฌํ๋ค. ์ค์ ๋ก ์ด ํ๋ก์ธ์ค๊ฐ ์ํ์ด ๋ ๋ ์ด ๊ฐ๋ค์ด CPU์ ๋ ์ง์คํฐ์ ์ ์ฅ์ด ๋๋ค. ์ด ๋ ์ง์คํฐ๋ค์ด base์ limit.
์ด ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ๋ด๋ ค๊ฐ๋ค๊ฐ ๋์ค์ ๋ค์ ์ฌ๋ผ์ค๋ฉด base ๊ฐ์ ๋ฐ๋ ์ ๋ฐ์ ์๋ค. limit์ ์ ๋ฐ๋ ์ ์์ง๋ง.
=> base๋ load time์ ๊ฒฐ์ ์ด ๋๋ค.
Logical vs Physical Address Space
- Logical address
: ๋ ผ๋ฆฌ ์ฃผ์๋ก ์ ๊ทผํ๋ ์ฃผ์ ๊ณต๊ฐ
CPU๊ฐ ๋ฐ์์ํค๋ ์ฃผ์๋ ๋
ผ๋ฆฌ ์ฃผ์์ด๋ค. CPU๊ฐ ์ด๋ค ์ฃผ์๋ก ์ ๊ทผํด์ ๋ณ์ ๊ฐ์ ์ฝ์ด์ค๋ ค๊ณ ํ ๋, CPU๊ฐ ์ ๊ทผํ๋ ค๊ณ ๋ฐ์์ํค๋ ์ฃผ์. ์ฆ, CPU๊ฐ ์๊ณ ์๋ ์ฃผ์ ์ฒด๊ณ๋ฅผ Logical address, virtual address ๋ผ๊ณ ํ๋ค.
=> 0๋ฒ์ง๋ฅผ ์์ ์ฃผ์๋ก ๊ฐ์ ํด์ ๋ง๋ค์ด๋ธ ์๋ ์ฃผ์
- Physical address
: ๋ฌผ๋ฆฌ ์ฃผ์๋ก ์ ๊ทผํ๋ ์ฃผ์ ๊ณต๊ฐ
์ค์ DRAM์ ์ฃผ์ ๊ฐ์ ๊ฐ์ง๋ ์ฃผ์ ์ฒด๊ณ๋ฅผ physical address๋ผ๊ณ ํ๋ค.
CPU๊ฐ ์ด๋ค ๋ณ์์ ์ ๊ทผํ ๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ด๋์ ์๋์ง๋ ์ ๊ฒฝ์ฐ์ง๋ง๊ณ ๋๊ฐ ์๊ณ ์๋ Logical address๋ฅผ ์ด์ฉํด์ ์ ๊ทผํด๋ผ. ์ค์ ๋ก DRAM์์ ์ฃผ์๋ OS๊ฐ ๊ด๋ฆฌํ๊ฒ ๋ค.
CPU๊ฐ ์ผ์ผ์ด ๋ชจ๋ ๋ฌผ๋ฆฌ ์ฃผ์๋ฅผ ์ ํ์๊ฐ ์๊ฒ ๋๋ค.
์ด๊ฒ compile time binding๊ณผ load time binding์ ์ฌ์ฉํ ๋์๋ ์ด๋ฏธ ๋ณ์์ ๋ฐํ์๋ ์ฃผ์๊ฐ physical ์ฃผ์์ด๊ธฐ ๋๋ฌธ์ CPU๊ฐ ์๊ณ ์๋ Logical address์ ์ค์ DRAM์ Physical address๊ฐ ์ผ์นํ๊ฒ ๋๋ค.
๊ทธ๋ฐ๋ฐ execution time binding์์๋ CPU๊ฐ ์๊ณ ์๋ ์ฃผ์์ธ logical address๋ฅผ ๋ฐ์์ํค๋ฉด ์ด๊ฑธ MMU๊ฐ ํ
์ด๋ธ์ ๋ณด๊ณ ์ค์ physical address๋ก ๋ณํํด์ค๋ค๊ณ ํ๋ค. ์ฆ, CPU๊ฐ ์๊ณ ์๋ ์ฃผ์์ DRAM์์ ์ฃผ์๊ฐ ๋ค๋ฅผ ์ ๋ฐ์ ์์.
=> Execution time binding์์๋ ๋ ์ฃผ์ ์ฒด๊ณ๊ฐ ๋ถ๋ฆฌ๋๋ค.
=> ์์ฆ ๋๋ถ๋ถ์ OS๋ Execution time binding์ ์ฐ๊ธฐ ๋๋ฌธ์ CPU์ ์ฃผ์ ์ฒด๊ณ์ ์ค์ DRAM์ ์ฃผ์ ์ฒด๊ณ๋ ์์ ํ ๋ค๋ฅด๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
Memory-Management Unit(MMU)
Execution time binding์ ์ง์ํ๊ธฐ ์ํด์๋ ์ค์๊ฐ์ผ๋ก logical address๊ฐ physical address๋ก ๋ฐ๋์ด์ผ ํ๋ค๊ณ ํ๋ค. CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ๋๋ง๋ค ์ฃผ์ ๋ณํ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋นจ๋ผ์ผ ํด์ ํ๋์จ์ด์ ์ง์์ ๋ฐ๋๋ค๊ณ ํ๋ค.
=> ๊ทธ ํ๋์จ์ด ์ฅ์น๊ฐ MMU์ด๋ค.
CPU๊ฐ ๋ฐ์์ํจ Logical addres๋ฅผ ํ๋ก์ธ์ค๊ฐ ์ ์ฅ๋์ด ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ ์ฃผ์์ธ Base register ๊ฐ์ ๋ํด์ ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์์๋ผ ์ ์๋ค.
=> ์ด ๊ณผ์ ์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ํด์ฃผ๋ ํ๋์จ์ด๊ฐ MMU์ด๋ค.
ํ๋ก์ธ์ค๊ฐ ์ ์ฅ๋ ์์น๊ฐ ๋ฐ๋๊ธฐ ๋๋ฌธ์ ์ค์ ์ฃผ์๋ ๊ณ์ํด์ ๋ฐ๋ ๊ฒ์ด๋ค. ๊ณ์ ๋ฐ๋๋ ์ค์ ์ฃผ์๋ฅผ ์ ๊ฒฝ์ฐ๋ฉด์ ์ผ์ ํ๋ฉด CPU๊ฐ ์ผ์ ์ ๋๋ก ํ์ง ๋ชป ํ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ CPU๋ logical address๋ง ์๊ณ ์ผ์ ํ๋ฉด ์ค์ ์ฃผ์๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ฑด MMU๊ฐ ํด์ค๋ค.
CPU๋ ๋
ผ๋ฆฌ ์ฃผ์๋ง ์๊ณ ์ค์ ์ฃผ์๋ ์ ํ ์์ง ๋ชป ํ๋ค.
์ ๊ทธ๋ฌ๋ฉด ๊ฒฐ๊ตญ MMU๊ฐ ํ๋ ์ผ์ Base register์ ๊ฐ์ CPU๊ฐ ๋ฐ์์ํจ ์๋ ์ฃผ์๋ฅผ ๋ํด์ ๋ฆฌํดํ๋ ๊ฑด๋ฐ, ํ๋์จ์ด๋ก ๊น์ง ๊ตฌ์ธ ํ์๊ฐ ์์์๊น??
=> ์ด๊ฑด ๋ค์ ๋์ฌ ํ์ด์ง ๊ธฐ๋ฒ์ ์๊ฒ ๋๋ฉด ๋จ์ํ ๋ง์ ์ผ๋ก ์ด๋ค์ง๋ ๊ฑด ์๋๋ผ๋ ๊ฒ์ ์๊ฒ ๋ ๊ฒ์ด๋ค.
์ผ๋จ ํ ๋ฒ address space๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ฉด ๊ทธ๊ฒ ๋ฐ๋ ์ผ์ด ๋ญ๊ฐ ์์๊น?
์ง๊ธ๊น์ง ์๊ณ ์๋ ์ง์์ผ๋ก๋ง ๋๋ต์ ์ค๋ค๋ฉด, ์๋ก์ด ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ์ฌ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด Medium term scheduler๊ฐ swap์ ํ๊ฒ ๋๋ค. ์ด๋ ์ฃผ๋ก suspend๋ ํ๋ก์ธ์ค๊ฐ swap out์ด ๋๋ค๊ณ ํ๋ค. ์ซ๊ฒจ๋ ํ๋ก์ธ์ค๊ฐ ๋์ค์ suspend๊ฐ ํด์ ๊ฐ ๋์ด์ ์คํ๋์ด์ผ ํ๋ ์์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค๊ฒ ๋๋๋ฐ, ์ ์ ์ด ํ๋ก์ธ์ค๊ฐ ์๋ ์ฃผ์์ ์ ํํ ๋ค์ ์ฌ๋ผ์จ๋ค๋ ๊ฒ์ ๋ณด์ฅํ ์๊ฐ ์๋ค.
๊ฒฐ๊ตญ ํ ๋ฒ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ์ค๋ฉด ๋๊น์ง ๊ทธ ์๋ฆฌ๋ฅผ ์งํจ๋ค๋ ๋ณด์ฅ์ด ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Execution time binding์ ํด์ผ ํ๋ค. CPU ๋๋ logical address๋ฅผ ์ด์ฉํด์๋ง ์ ๊ทผํด, ์ค์ ์ฃผ์๋ก ๋ฐ๊พธ๋ ๊ฑด MMU๊ฐ ํ ๊ฑฐ๋๊น.
์ฆ, ์ค์์ด ๋์ํ๋ OS์์๋ Execution time binding์ ์จ์ผ ํ๋ค. ์ฐ์ง ์๊ณ ๋ ๋ณํํ๋ ์ฃผ์ ์ฒด๊ณ๋ฅผ ๋ฐ๋ผ๋ค๋ ์๊ฐ ์์.
Swap๋ ํ๋ก์ธ์ค์ address space๊ฐ ์ ์ฅ๋ ๊ณต๊ฐ์ Backing store๋ผ๊ณ ํ๋ค. ์ด๊ฑธ ์ฐ๋ฆฐ ๊ทธ๋ฅ ๋์คํฌ๋ผ๊ณ ์๊ณ ์๋ค.
ํ๋ก์ธ์ค์ address space๋ ๋ฉ์น๊ฐ ํฌ๋ค. ์ด ๋์ด swap out ๋ ๋ ๋์คํฌ๋ก ๋ด๋ฆฌ๊ณ swap in ๋ ๋ ๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฑด ์๊ฐ์ด ๊ฝค ๊ฑธ๋ฆด ๊ฒ์ด๋ค. ์ด ์๊ฐ์ด ๊ธธ๋ฉด ๋๋ฌด ๋๋ฆฌ๋ค๋ ๋๋์ ๋ฐ๊ธฐ ๋๋ฌธ์ ์ต๋ํ ๋นจ๋ฆฌ I/O๊ฐ ๋ฐ์ํด์ผ ํ๊ณ , ๊ทธ๋์ Backing store์ ๋ํ ์ ๊ทผ์ ๋น ๋ฅด๊ฒ ํ๋ก์ธ์ค๋ฅผ ๋ด๋ฆฌ๊ณ ์ฌ๋ฆฌ๋ ์ต์ ํ๋ ๋งค์ปค๋์ฆ์ ์ฌ์ฉํด์ผ ํ๋ค.
์ผ๋ฐ์ ์ธ I/O์ ๋ค๋ฅด๊ฒ ํ๋๋์คํฌ์๋ ์ฐ์์ ์ผ๋ก ์ญ ์ ์ฅํ๋ค๊ฐ ์ฐ์์ ์ผ๋ก ์ฝ์ ์ ์๋๋ก ํ๋ ๋งค์ปค๋์ฆ์ ์ฌ์ฉํด์ผ ํ๋ค.
ํฌ์ง ์์ data๋ ์ฐ์์ ์ผ๋ก ์ฐ๋ฉด ์คํ๋ ค ๊ณต๊ฐ ํ์ฉ๋๊ฐ ๋จ์ด์ง๋ค. ํ์ง๋ง ํ๋ก์ธ์ค์ ๊ฐ์ ํฐ ๋ฐ์ดํฐ๋ ์ญ ์ฐ์์ ์ผ๋ก ์ผ๋ค๊ฐ ์ญ ์ฐ์์ ์ผ๋ก ์ฝ๋ ๊ฒ ์ ์ผ ๋น ๋ฅด๋ค.
Contiguous Allocation
์์์ ๋งํ Base register์ CPU๊ฐ ๋ฐ์์ํจ Logical address๋ฅผ ๋ํด์ ์ค์ ์ฃผ์๋ฅผ ์์๋ผ ์ ์๋ ์ ์ ์กฐ๊ฑด์ ๋ฌด์์ผ๊น?
์ด๊ฑด ํ๋ก์ธ์ค์ address space๊ฐ ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์์ ์ธ ๊ณต๊ฐ์ ์ฌ๋ผ์ ์์ ๋๋ง ๊ฐ๋ฅํ ๊ฒ์ด๋ค.
์ฐ์์ ์ผ๋ก ํ๋ก์ธ์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์์ ํ์ฌํ๋ ๊ธฐ๋ฒ์ Contiguous Allocation์ด๋ผ๊ณ ํ๋ค.
์ปค๋์ด ํ ๋น๋๋ ์์ญ์ ์ ์ธํ๊ณ , ๋๋จธ์ง ์์ญ์ ํ๋ก์ธ์ค๋ฅผ ์ฐ์์ ์ผ๋ก ์ ์ฅํ๋ฉด ๋๋ค.
์ด ๊ณต๊ฐ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์ ์ฅ๋๋๊น OS๋ ๊ฐ ํ๋ก์ธ์ค์ ์์น ์ ๋ณด๋ฅผ ์ ์ฅํด์ผ ํ๋ค.
=> ์ด๊ฒ base register์ limit register์ ๋ค์ด๊ฐ๋ ์ ๋ณด๋ค.
logical address๋ฅผ ๊ฐ์ง๊ณ ์ค์ physical address๋ก ๋ณํํ๋ ๊ณผ์ ์์, ์ ์์ ์ธ ์ ๊ทผ์ด๋ผ๋ฉด logical address๋ address space์ ์ ์ฒด ํฌ๊ธฐ์ธ limit register์ ๊ฐ๋ณด๋ค ์ปค์ง ์ ์๋ค.
logical address > limit register ๋ผ๋ฉด ํ๋ก์ธ์ค๊ฐ ํ ๋น ๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋์ด์์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ์ด๊ธฐ ๋๋ฌธ์ OS๊ฐ ๋ง์์ผ ํ๋ค.
Hole
Contiguous Allocation ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ๋ ์ฐ๋ฆฌ๊ฐ ์ฃผ๋ชฉํด์ผ ํ ์ฌ์ค์ด ํ๋ ์๋ค.
ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ์๋ค๊ฐ ์คํ์ด ๋๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ๋น ์ ธ๋๊ฐ๊ฒ ๋๋๋ฐ ๊ทธ๋ผ ์ค๊ฐ ์ค๊ฐ์ ๋น ๊ณต๊ฐ์ด ์๊ธฐ๊ฒ ๋๋ค. ์ด๋ ๋น ๊ณต๊ฐ์ ํฌ๊ธฐ๋ ์ ๊ฐ๊ฐ์ด๋ค. ํ๋ก์ธ์ค, ๋น๊ณต๊ฐ, ํ๋ก์ธ์ค, ๋น๊ณต๊ฐ, ... ์ด๋ฐ ํํ๋ก ํ์ฌ ์ ์ ์์ญ์ด ํ ๋น๋์ด ์์ ๊ฒ์ด๋ค.
์ด๋ฌํ ๋น๊ณต๊ฐ๋ค์ ์ฐ๋ฆฌ๋ Hole์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ด Hole๋ค์ OS๊ฐ ๊ด๋ฆฌ๋ฅผ ํด์ผ ํ๋๋ฐ, ์๋ํ๋ฉด ์๋ก์ด ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ์ฌ ๋ hole์ ํ ๋น์ ํ๊ฒ ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
Dynamic Storage-Allocation Problem
์๋ก ๋ค๋ฅธ ํฌ๊ธฐ์ ๋น ๊ณต๊ฐ(Hole)์ด ์ฌ๋ฌ ๊ฐ ์์ ๋ ์๋ก ์ฌ๋ผ์ฌ ํ๋ก์ธ์ค๋ฅผ ์ด๋ค ๋น ๊ณต๊ฐ์ ๋ฃ์์ง ๊ฒฐ์ ํ๋ ๊ฒ์ด ์ฌ์ด ์ผ์ด ์๋๋ค.
์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ๋น ๊ณต๊ฐ๋ค ์ค ์ด๋์ธ ํ ๋นํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ์ ์ผ๋ก 3๊ฐ์ง๊ฐ ์๋ค.
- First-fit
: ์์์๋ถํฐ ์ญ ๋๋ฉด์ ์ด ํ๋ก์ธ์ค๊ฐ ๋ค์ด๊ฐ ์ ์๋ ์ฒซ ๋ฒ์งธ ๊ณต๊ฐ์ ๋ฃ๊ฒ ๋ค
- Best-fit
: ์ด ํ๋ก์ธ์ค์ ๊ฐ์ฅ ํฌ๊ธฐ๊ฐ ๋น์ทํ ๋น ๊ณต๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋ฃ๊ฒ ๋ค.
- Worst-fit
: ๋ฌด์กฐ๊ฑด ์ ์ผ ํฐ hole์ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ๋ฃ๊ฒ ๋ค.
๋ญ๊ฐ ์ด๋ฆ๋ง ๋ณด๋ฉด Worst-fit์ด ์ ์ผ ์ข์ง ์์ ๋ฐฉ๋ฒ์ด๊ณ Best-fit์ด ์ ์ผ ์ข์ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ์๋ฐ ๊ณผ์ฐ ๊ทธ๋ด๊น?
๊ทธ๋ ์ง ์๋ค. best fit์ ์ฌ์ฉํ๋ฉด ์ต๋ํ ๊ฝ ์ฐจ๋๋ก ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ๋น๋ ๊ณต๊ฐ์ด ๋๋ฌด ํ์ํด์ง๋ค. ์ด๋ฌํ ์์ ๊ณต๊ฐ์ด ๋ง์ด ๋ง๋ค์ด์ง ๊ฒ์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ฌํ ๊ณต๊ฐ๋ค์ ๋๋ฌด ์์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ด ๋ค์ด์ฌ ์ ์๊ฒ ๋๋ฉด ์ธ๋ชจ์๋ ๊ณต๊ฐ์ด ๋๋ค.
๋ฐ๋ฉด์ worst fit์ ํฐ ๊ณต๊ฐ์ ๋ฃ๊ธฐ ๋๋ฌธ์ ํ ํ๋ก์ธ์ค๋ฅผ ๋ฃ์ด๋ ๋จ๋ ๊ณต๊ฐ์ ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋ค์ด์ฌ ์ ์๋ค.
=> ์ด๋ค ๊ฒ ์ข์์ง ๋จ์ ์ ์ผ๋ก ๊ฒฐ์ ํ ์๋ ์์.
Fragmentation
Fragmentation์ ์ํฌ๋ฆฌ ๊ณต๊ฐ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
Fragmentation์ด ๋ฐ์ํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ญ๋น๋๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ต๋ํ ์ค์ฌ์ผ ํ๋ค.
External fragmentation์ ์ค์ ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ ๊ณต๊ฐ์ธ๋ฐ ํฌ๊ธฐ๊ฐ ๋๋ฌด ์์์ ์ธ๋ชจ ์๋ ๊ณต๊ฐ์ด๋ค.
=> Best fit ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด External fragmentation์ด ๋ง์ด ๋ฐ์ํ ๊ฒ์ด๋ค.
Internal fragmentation์ ์ค์ ๋ก ํ ๋น์ ํด์คฌ๋๋ฐ, ์ด ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉ์ ํ์ง ์๋ ๊ฒฝ์ฐ์ด๋ค.
์๋ฅผ ๋ค์ด, 1000 byte๊ฐ ํ์ํ ํ๋ก์ธ์ค์๊ฒ 1024 byte๋ฅผ ํ ๋นํด์คฌ๋ค๋ฉด 24 byte๋ ์ฌ์ฉ์ ํ์ง ์๋ ๊ณต๊ฐ์.
=> ๋จ์ ๊ณต๊ฐ์ด ์๋๋ผ ์ค์ ํ ๋น์ ํด์ค ๊ณต๊ฐ์ธ๋ฐ, ์ฌ์ฉ์ ํ์ง ์๋ ๋ถ๋ถ.
์ฆ, External์ ํ ๋น์ด ์ ๋ ๋น ๊ณต๊ฐ์ธ๋ฐ ๋๋ฌด ์์์ ํ์ฉ๋๊ฐ ๋จ์ด์ง๋ ๊ณต๊ฐ์ด๊ณ Internal์ ์ค์ ํ ๋น์ ํด์ฃผ์๋๋ฐ ์ฌ์ฉํ์ง ์๋ ๊ณต๊ฐ.
Internal fragmentation์ ์ด๋ฏธ ํ๋ก์ธ์ค์๊ฒ ํ ๋น์ด ๋ ๊ณต๊ฐ์ด๋ผ ์ด์ฉ ์๊ฐ ์์ง๋ง External fragmentation์ Compaction์ ํตํด์ ์ค์ผ ์ ์๋ค.
=> ๋ฉ๋ชจ๋ฆฌ์ ์๋ ํ๋ก์ธ์ค์ address space๋ค์ ํ ์ชฝ์ผ๋ก ์ญ ๋ฐ๋ฉด External fragmentation๋ค์ด ๋ชจ์ฌ์ ๊ฝค ํฐ ๊ณต๊ฐ์ด ๋ง๋ค์ด์ง ๊ฒ์ด๋ค.
=> ์ด๊ฑธ Compaction์ด๋ผ๊ณ ํ๋ค.
Compaction์ ์ฌ์ฉํ๋ฉด external fragmentation์ ํ์ฉํ ์ ์๋๋ฐ, ๋ฌธ์ ๋ Compaction์ด ๋งค์ฐ heavyํ operation์ด๋ผ๋ ๊ฒ์ด๋ค.
Compaction์ ํ๊ณ ๋๋ฉด ๋ชจ๋ ํ๋ก์ธ์ค์ base ์ฃผ์๊ฐ ๋ฐ๋๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ์ด ๋ถ์ด๋ ๋์ ๋ฉ๋ชจ๋ฆฌ copy๊ฐ ๊ณ์ ๋ฐ์ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ค๋ฒํค๋๊ฐ ํฌ๋ค.
=> ํจ๋ถ๋ก ์ฌ์ฉํ ์๊ฐ ์๋ค. Compaction์ ํ๋ฉด ๋๋๊น external fragmentation์ ๋ง๊ตฌ ๋ฐ์์์ผ๋ ๋๊ฒ ๋ค? ๋ผ๊ณ ์๊ฐํ๋ฉด ์ ๋๋ค.
๊ฒฐ๋ก ์ Contiguos Allocation ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด Fragmentation์ด ๋ฐ์ํ๋ค๋ ๊ฒ์ธ๋ฐ, ์ด๊ฑธ ํด๊ฒฐํ๋ ๊ฒ์ด ๊น๋ค๋กญ๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ํ์ํ ๊ธฐ๋ฒ์ด Paging(ํ์ด์ง) ๊ธฐ๋ฒ์ด๋ค.
ํ์ด์ง ๊ธฐ๋ฒ์ External Fragmentation์ด ๋ฐ์ํ์ง ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
Paging
๋ ๊ณ ๋ธ๋ญ์ฒ๋ผ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ Address space๋ฅผ ๋ผ์๋ฃ๋ ๋ฐฉ์์ธ๋ฐ ๋๊ฐ์ ์ฌ์ด์ฆ์ ๋ ๊ณ ๋ธ๋ญ์ ๋ง๋ ๋ค. ๊ฐ์ ์ฌ์ด์ฆ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ ๋ถํ , ์ด๋๋ ์ค ์คํ์ด์ค๋ ๋ถํ .
๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์ค๊ฐ ์ค๊ฐ์ ๋ธ๋ญ์ ๋ผ์๋ฃ๋ค ๋ณด๋ ์ฐ์์ ์ธ ๊ณต๊ฐ์ ์ด๋๋ ์ค ์คํ์ด์ค๊ฐ ํ ๋น๋๋ค๊ณ ๋ณด์ฅํ ์ ์๋ค.
=> ์ด๊ฑธ ํ์ฉํด ์ค์ผ๋ก์จ External fragmentation์ด ๋ฐ์ํ์ง ์๋๋ก ํ๋ ๋ฐฉ๋ฒ.
DRAM์ ๋๊ฐ์ ํฌ๊ธฐ๋ก ๋ถํ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ถํ ๋ ๊ฐ๊ฐ์ ๊ณต๊ฐ์ frame์ด๋ผ๊ณ ํ๋ค. ๋ณดํต frame ํฌ๊ธฐ๋ 2์ ์ง์์น์ผ๋ก ์ ํ๋ค. (๋ณดํต 4KB๋ก ๋ง์ด ํจ)
frame์ด 4KB๋ผ๊ณ ํ๋ฉด Address๋ 4KB ๋จ์๋ก ์๋ฅธ๋ค. ๊ทธ ์๋ฅธ 4KB ํ๋๋ฅผ "ํ์ด์ง"๋ผ๊ณ ํ๋ค.
=> ํ์ด์ง์ frame์ ํฌ๊ธฐ๋ ๊ฐ์์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ frame์๋ค๊ฐ ํ์ด์ง๋ฅผ ์ง์ด ๋ฃ๊ฒ ๋ค. ๋์ ์ฐ์๋ frame ๊ณต๊ฐ์ ๋ฃ์ ํ์๋ ์๋ค.
๊ทธ๋ผ ๋ฌด์จ ๋ฌธ์ ๊ฐ ์๊ธธ๊น??
์ฐ์์ ์ผ๋ก ์ง์ด ๋ฃ์์ ๋๋ ์์ ์ฃผ์์ ์๋ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์ค์ ๋ฌผ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ ์์๋๋ฐ, ์ด์ ๋ ์ฌ๊ธฐ ์ ๊ธฐ์ ํ์ด์ง๊ฐ ๋ค์ด ์์ผ๋๊น ๋ฐ๋ก ์ฐพ์ ์๊ฐ ์๋ค.
=> ๊ฐ๊ฐ์ ํ์ด์ง๊ฐ ์ด๋์ ์๋ frame์ ์ ์ฅ๋์ด ์๋์ง ๋ค ์์์ผ ํ๋ค. ์ด๊ฑธ ๊ด๋ฆฌํ๋ ์๋ฃ ๊ตฌ์กฐ๊ฐ ํ์ํ๊ณ ๊ทธ๊ฑธ ์ฐ๋ฆฌ๋ "ํ์ด์ง ํ
์ด๋ธ" ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํ
์ด๋ธ์๋ ๋ด ์ด๋๋ ์ค ์คํ์ด์ค์ 1๋ฒ ํ์ด์ง๋ DRAM์ 5๋ฒ frame์ ๋ค์ด์๋ค. ์ด๋ฐ ์ ๋ณด๊ฐ ๋ค์ด ์์.
์ด๋ ๊ฒ ํ๋ฉด ์ข์ ์ ์ ๋น ๊ณต๊ฐ์ด frame ๋จ์๋ก ๋น์ด ์๋ค.
=> ์ธ๋ชจ ์๋ ์ํฌ๋ฆฌ ๊ณต๊ฐ์ด ์๊ธฐ์ง ์๋๋ค.
=> ์ฆ, External fragmentation์ด ๋ฐ์ํ์ง ์๋๋ค.
Contiguos Allocation์ ์ฌ์ฉํ๋ฉด ํ๋์ Address space๊ฐ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ์ฌ๋๊ธฐ ๋๋ฌธ์ ํด๋น ํ๋ก์ธ์ค์ base ์ฃผ์์ offset์ ์ด์ฉํด์ ์ํ๋ ๋ฐ์ดํฐ์ ์ ๊ทผ์ ํ ์๊ฐ ์์๋ค.
๊ทธ๋ฐ๋ฐ ํ์ด์ง ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ฉด ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ frame ๊ณณ๊ณณ์ ๋ถ์ฐ์ํ๊ฒ ํ ๋น๋๊ธฐ ๋๋ฌธ์ base register์ limit register์ ๊ฐ์ด ์๋ฏธ๊ฐ ์๊ฒ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ํ์ด์ง ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ ๋๋ CPU๊ฐ ๋ฐ์์ํจ ๋ ผ๋ฆฌ ์ฃผ์๋ฅผ ์ด๋ป๊ฒ ์ค์ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณํํ ๊น?
Address Translation Scheme in Paging
ํ์ด์ง์ ํฌ๊ธฐ๋ฅผ 2์ ์ง์์น์ผ๋ก ๊ฒฐ์ ํ๋ ์๊ฐ ๋ญ๊ฐ ๊ฐ๋ฅํด์ง๋, logical address์ bit๋ฅผ ๋ถํ ํด์ ํ์ด์ง ๋ฒํธ์ ํ์ด์ง ๋ด๋ถ์ offset์ผ๋ก ๋๋ ์ ์๊ฒ ๋๋ค.
logical address๊ฐ 2^m์ผ๋ก ์ฃผ์ ์ฒด๊ณ๊ฐ ๋ง๋ค์ด์ ธ ์๋ค๊ณ ํ๊ณ , page์ size๋ 2^n์ด๋ผ๊ณ ํ์. ๊ทธ๋ฌ๋ฉด logical address๋ฅผ ํํํ๊ธฐ ์ํ bit๋ m๋นํธ๊ฐ ๋๊ณ ํ์ด์ง ๋ด๋ถ์ offset์ ๋ํ๋ด๊ธฐ ์ํ bit๋ n๋นํธ๊ฐ ๋๋ค.
logical address๋ฅผ ๋ํ๋ด๋ ์ ์ฒด m๋นํธ ์ค์์ ์์ชฝ์ (m-n) bit๋ ๋ช ๋ฒ์งธ ํ์ด์ง์ธ์ง ๋ํ๋ด๊ณ , ์ ์ผ ๋ค์ n๋นํธ๋ page ๋ด๋ถ์ offset์ด ๋๋๋ผ.
์ ๊ทธ๋ ๊ฒ ๋ ๊น?
2^m ์ง๋ฆฌ Address space๋ฅผ 2^n ํฌ๊ธฐ์ ํ์ด์ง๋ก ์๋ฅธ๋ค๊ณ ํ์. ๊ทธ๋ผ ์ด ํ์ด์ง์ ์๋ 2^(m-n)์ด ๋๋ค. 2^(m-n)๊ฐ์ ํ์ด์ง๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด์๋ (m-n) ๋นํธ๊ฐ ํ์. ๊ทธ๋ฆฌ๊ณ ๋๋จธ์ง n ๋นํธ๋ ๊ทธ ํ์ด์ง ์์์์ offset์ด ๋๋ค.
๊ฒฐ๊ตญ ํ์ด์ง ๋ฒํธ๋ ์ฃผ์๋ฅผ ํ์ด์ง์ ์ฌ์ด์ฆ๋ก ๋๋ ๋ชซ์ด ๋๊ณ , ํ์ด์ง ๋ด์์์ offset์ ๊ทธ ๋๋จธ์ง๊ฐ ๋๋ค.
๊ทธ๋ฐ๋ฐ ๋๋๊ธฐ๋ ์๋์ ์ผ๋ก ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ ์ฐ์ฐ์ด๋ค.
๊ทธ๋์ ๋๋๋ ์์ธ ํ์ด์ง์ ์ฌ์ด์ฆ๋ฅผ ์ ์ ํ๋ฉด ์ฌ๋ฐ๋ ํ์์ด ๋ํ๋๋ค
์ดํด๋ฅผ ์ํด 10์ง์๋ก ๋จผ์ ์๊ฐ์ ํด๋ณด์.
๋ ผ๋ฆฌ ์ฃผ์๊ฐ 1234 ์ด๊ณ ํ์ด์ง์ ์ฌ์ด์ฆ๊ฐ 10^1 ์ด๋ผ๋ฉด
ํ์ด์ง ๋ฒํธ๋ 1234 / 10 = 123 (page #)
๊ทธ๋ฆฌ๊ณ 123๋ฒ ํ์ด์ง ๋ด์์์ offset์ 1234 % 10 = 4 (offset)
๊ตณ์ด ๋๋๊ธฐ๋ฅผ ํ์ง ์์๋ ์ซ์๋ฅผ ๊ทธ๋ฅ ์ฌ์ด์ฆ์ ์น์๋ก ์ชผ๊ฐ ๊ฒ์ผ๋ก ํ์ด์ง ๋ฒํธ์ offset์ ๊ตฌํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๋ค์ ์๋ฅผ ๋ณด๋ฉด์ ๋ ์ดํดํด ๋ณด์.
์ค์ Address space๋ ์ด๊ฒ๋ณด๋ค ํจ์ฌ ํฌ์ง๋ง ์ดํด๋ฅผ ์ํด Address space์ ํฌ๊ธฐ๊ฐ 16(2^4)์ด๋ผ๊ณ ํ์.
๊ทธ๋ฆฌ๊ณ ํ์ด์ง์ frame์ ํฌ๊ธฐ๋ 4(2^2)๋ผ๊ณ ํ์.
ํฌ๊ธฐ๊ฐ 16์ธ Address space๋ฅผ ํฌ๊ธฐ๊ฐ 4์ธ ํ์ด์ง๋ค๋ก ๋ถํ ํ์ผ๋ฏ๋ก 4๊ฐ์ ํ์ด์ง๊ฐ ์์ฑ๋๋ค.
=> ํ์ด์ง๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด์ (4 - 2)bit = 2bit๊ฐ ํ์ํ๊ฒ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ ํ์ด์ง ๋ด์์์ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ offset์ผ๋ก๋ 2 bit๊ฐ ํ์ํ๋ค.
๊ทธ๋ ๋ค๋ฉด CPU๊ฐ logical memory ์์ 2๋ฒ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ค๊ณ ํ๋ค๊ณ ํด๋ณด์.
2๋ฅผ ์ด์ง์๋ก ๋ํ๋ด๋ฉด 0010 ์ธ๋ฐ, ์ 2bit๋ ํ์ด์ง์ ๋ฒํธ ๋ค 2bit๋ offset์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ 0๋ฒ ํ์ด์ง์ 2๋ฒ ๋ฐ์ดํฐ๋ผ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๊ทธ๋ฌ๋ฉด ํ์ด์ง ํ ์ด๋ธ๋ก ๊ฐ์ 0๋ฒ ํ์ด์ง๊ฐ ์ด๋ frame์ ์ ์ฅ๋์ด ์๋์ง๋ฅผ ๋จผ์ ํ์ ํ๋ค.
ํ์ด์ง ํ ์ด๋ธ์ ํตํด 0๋ฒ ํ์ด์ง๋ 5๋ฒ frame์ ์ ์ฅ๋์ด ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ด์ง๊ฐ ์ด๋์ ์ ์ฅ๋๋ ํ์ด์ง ๋ด์์์ offset์ ๋ฐ๋์ง ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋๋ก offset์ 2๋ก ํด์ ์ํ๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ค.
์์ ๊ณผ์ ์ ์กฐ๊ธ ๋ ์ถ์์ ์ผ๋ก ๋ณด๋ฉด ์ด๋ฐ ๋๋
Free Frames
์์ ๋์จ ๊ณผ์ ์ ํ์ด์ง ํ
์ด๋ธ ์ ๋ณด๊ฐ ์ด๋ฏธ ๋ง๋ค์ด์ ธ ์๋ค๋ ์ ์ ๊ฐ ๊น๋ ค์๋ค.
๊ทธ๋ผ Address space๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค๊ฒ ๋ ๋ ํ์ด์ง ํ
์ด๋ธ ์ ๋ณด๋ ์ด๋ป๊ฒ ๋ง๋ค์ด์ง๊น.
OS๋ memory management๋ฅผ ๋ด๋นํ๋ ๋ถ๋ถ์์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์์ ๋น์ด ์๋ frame์ ์ ๋ณด๋ฅผ ์ ์งํ๋ค.
์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ OS๋ง๋ค ๋ค๋ฅด์ง๋ง ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด์ ๊ด๋ฆฌํ๋ค๊ณ ๊ฐ์ ํ๋ค.
์ด ์ํฉ์์ ์๋ก์ด ํ๋ก์ธ์ค๊ฐ ๋ง๋ค์ด์ก๋ค. address space๋ 4๊ฐ์ ํ์ด์ง๋ก ๋๋์ด์ ธ ์๋ค๊ณ ๊ฐ์ ํ๋ค.
์ด ํ๋ก์ธ์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ํ์ฌ๋ฅผ ํ ๋ ํ์ด์ง ๋ณ๋ก ํ์ฌ๋ฅผ ํ๋ค.
0๋ฒ ํ์ด์ง๋ถํฐ ๋ฃ๋๋ฐ, ๋ฆฌ์คํธ์ ๋งจ ์์ ๋ณด๋ 14๋ฒ์ด ๋น์ด์๋ค๊ณ ๋์ด ์๋ค. 0๋ฒ ํ์ด์ง๋ 14๋ฒ frame์ ๋ฃ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ ํ์ด์ง ํ
์ด๋ธ์ 0๋ฒ์ 14๋ฒ frame์ ๋ค์ด์๋ค๋ผ๊ณ ์ด๋ค. ๊ทธ ๋ค์์ 1๋ฒ ํ์ด์ง๋ฅผ ๋ฃ์ผ๋ ค๊ณ ๋ฆฌ์คํธ๋ฅผ ๋ดค๋๋ 13๋ฒ์ด ๋น์ด ์๋ค. 1๋ฒ ํ์ด์ง๋ 3๋ฒ frame์ ๋ฃ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ด์ง ํ
์ด๋ธ์ 1๋ฒ ํ์ด์ง๋ 13๋ฒ frame์ ์๋ค๊ณ ์ด๋ค.
์ด๋ ๊ฒ ์ญ์ญ ๋ฃ๋๋ค.
์ฌ๊ธฐ์ ์๋ฌธ. ํ์ด์ง๋ฅผ ๋ฃ์ผ๋ ค๋๋ฐ ๋น์ด์๋ frame์ด ์์ผ๋ฉด ์ด๋กํ ๊น?? ์ด ๋ฌธ์ ๋ ๋์ค์ virtual memory์์ ๋ค๋ฃฌ๋ค.
Implementation of Page Table
์ด ํ์ด์ง ํ ์ด๋ธ์ ๊ตฌํํ๊ธฐ ์ํด์ OS๋ ์ด๋ค ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์์ด์ผ ํ ๊น?
ํ์ด์ง ํ ์ด๋ธ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ด์ผ ํ๋ค.
PTBR: ํ์ด์ง ํ ์ด๋ธ์ด ์ ์ฅ๋ ์์น๋ฅผ ์ ์ฅํ๋ ๋ ์ง์คํฐ. ํ์ด์ง ํ ์ด๋ธ์ ์์น๋ฅผ ์ด์ฉํด์ ์ฐพ๊ณ ์ ํ๋ ํ์ด์ง์ ๋ฒํธ๋งํผ ๋ด๋ ค๊ฐ๋ฉด ํด๋น ํ์ด์ง๊ฐ ์ ์ฅ๋ frame์ด ๋์ ์๋ค.
PTLR: ํ์ด์ง ํ ์ด๋ธ์ ๊ธธ์ด๋ฅผ ์ ์ฅํ๋ ๋ ์ง์คํฐ
์์ ์๋ CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ์ํด์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ฐ์์ํค๋ฉด ์ง์ ๊ทธ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๋ฉด ๋์๋๋ฐ,
ํ์ด์ง ๊ธฐ๋ฒ์ ์ฐ๋ฉด ํ์ด์ง ํ
์ด๋ธ์ look up์ ํด์ ์ค์ ์ฃผ์๋ฅผ ์์๋ธ ๋ค์์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ 2๋ฒ ์ ๊ทผ์ ํด์ผ ํ๋ค. (ํ์ด์ง ํ
์ด๋ธ์ ์ ๊ทผํ ๋ ํ ๋ฒ, ์ค์ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ๋ ํ ๋ฒ)
๊ทธ๋์ CPU๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋๋ง๋ค ๋ฉ๋ชจ๋ฆฌ์ 2๋ฒ ์ ๊ทผํ ์ ๋ฐ์ ์์. ๊ทผ๋ฐ CPU ์
์ฅ์์ ๋ฉ๋ชจ๋ฆฌ access๋ ๋งค์ฐ ๋๋ฆฌ๋ค.
frame์ ์์ ์ฃผ์์ offset์ ๋ํ๋ ๋ณํ์ MMU ํ๋์จ์ด๋ฅผ ์ฌ์ฉํด์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ํ๋ค๊ณ ํ๋๋ผ๋, ํ์ด์ง ํ
์ด๋ธ์ ์ ๊ทผ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ ค์ง๋ ๊ฑด ์ด์ฉ ์ ์์.
๊ทธ๋ผ ํ์ด์ง ๊ธฐ๋ฒ์ ์ฐ๋ฉด ์ ๋๋??
ํ์ด์ง ๊ธฐ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๋ณต์ก์ฑ์ ๋ฎ์ถ๊ธฐ ์ํด ๊ผญ ํ์ํ๋ค.
๊ทธ๋์ TLB(Translation Look-aside Buffer)๋ผ๋ ๊ฒ์ ์ฌ์ฉํ๋ค.
์บ์๊ฐ์ ๊ฐ๋
. ๋ฉ๋ชจ๋ฆฌ์ ์๋ ํ์ด์ง ํ
์ด๋ธ์ ์ผ๋ถ๋ฅผ ๋ด๊ณ ์๋ ์๊ณ ๋น ๋ฅธ ๋ฉ๋ชจ๋ฆฌ์ด๋ค. ๊ทธ๋ฌ๋ฉด ์ฃผ์ ๋ณํ์ ํ์ด์ง ํ
์ด๋ธ์ ๊ฐ์ ํ๊ธฐ ์ ์ TLB์ ๋จผ์ ๊ฐ์ ์ด๋ฏธ ๋ณํ๋ ์ ๋ณด๊ฐ ์๋์ง ํ์ธ์ ํ๊ฒ ๋๋ค.
TLB๋ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ 2๋ฒ ์ ๊ทผํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋นจ๋ผ์ง๋ค.
CPU scheduling์ ์ํด CPU๊ฐ ์คํํ๋ ํ๋ก์ธ์ค๊ฐ ๋ฐ๋๊ฒ ๋๋ฉด, TLB๋ ๋น์ฐ๊ฒ ๋๋ค.
ํ์ด์ง ํ
์ด๋ธ์ ํ๋ก์ธ์ค๋ง๋ค ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ Context switch๊ฐ ์ผ์ด๋๋ฉด TLB์ ์ ์ฅ๋ ์ ๋ณด๋ ์๋ชป๋ ์ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ๋น์๋ฒ๋ ค์ผ ํ๋ค.
TLB์ ์๋ ํ์ด์ง๋ ์ด์ฉ ์ ์์ด ํ์ด์ง ํ ์ด๋ธ์ ๊ฐ์ ์ฐพ์์ผ ํ๋ค.
=> ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ TLB์์ ์ฃผ์ ๋ณํ์ด ๋๋ถ๋ถ ์ผ์ด๋์ผ TLB๋ฅผ ์ฌ์ฉํ๋ ํจ๊ณผ๊ฐ ์๋ค.
๊ทธ๋ฐ๋ฐ TLB๋ ๋น ๋ฅด๊ธด ํ์ง๋ง ์ ์ฅ ๊ณต๊ฐ์ด ๋งค์ฐ ์์ ๋ฉ๋ชจ๋ฆฌ์ด๋ค.
๋ฐ๋ผ์ ํ์ด์ง ํ
์ด๋ธ์ ๋งค์ฐ ์์ ์ผ๋ถ๊ฐ ์ ์ฅ์ด ๋๋๋ฐ ์ฌ๊ธฐ์ ๋ง์ ํํธ๊ฐ ๋ ๊น?
๊ฐ๋ฅํ๋ค. Locality(์ง์ญ์ฑ) ๋๋ฌธ์ด๋ค.
์์ฃผ ์ ๊ทผ๋๋ ํ์ด์ง์ ์ ๋ณด๋ฅผ TLB์ ์ ์ฅ์ ํด๋๋ฉด ๊ทธ ํ์ด์ง์ ์ ๊ทผํ ๋๋ง๋ค TLB์์ ๋ณํ์ด ๋ ํ
๋๊น ํํธ๊ฐ ์์ฃผ ๋ฐ์ํ ์ ๋ฐ์ ์๋ค.
=> ๊ทธ๋งํผ locality๊ฐ ๊ฐํ๋ค๋ ๋ป.
Associative Memory
TLB์๋ ํ์ด์ง ํ
์ด๋ธ์ ์ผ๋ถ๊ฐ ๋์๋์ ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์ ํ์ด์ง ํ
์ด๋ธ์ ์ผ๋ถ ์ํธ๋ฆฌ๋ค์ด ์ฐ์๋๊ฒ ์ ์ฅ๋์ง ์๋๋ค.
๋๋ฌธ์ ์์์๋ถํฐ 3์นธ์ ๋ด๋ ค์ค๋ฉด 4๋ฒ ํ์ด์ง์ ์ ๋ณด๊ฐ ์ ์ฅ๋์ด ์๋ค ์ด๊ฒ ๋ณด์ฅ์ด ์ ๋๋ค.
๊ทธ๋ฌ๋ฉด ์์์๋ถํฐ ํ์ด์ง ๋ฒํธ๋ฅผ ๋ค ์ฐพ์๋ด์ผ ํ๋ค. ์ด๋ฌ๋ฉด TLB๊ฐ ์๋ฌด๋ฆฌ ๋นจ๋ผ๋ TLB๋ฅผ ์ฌ์ฉํ๋ ํจ๊ณผ๊ฐ ์ค์ด๋ ๋ค.
๊ทธ๋์ "Associative Memory"๋ฅผ ์ฌ์ฉํด์ TLB๋ฅผ ๋ง๋ ๋ค.
=> TLB์ ๋ชจ๋ ์ํธ๋ฆฌ๋ฅผ ๋์์ ์ ๊ทผํด์ ์ฐพ๊ณ ์ ํ๋ ํ์ด์ง์ ๋ฒํธ๋ฅผ ํ ํ์ ์ฐพ์ ์ ์๋ค.
๊ทธ๋ผ ์ง๊ธ๊น์ง์ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณด์.
CPU๊ฐ Logical address๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด, ์ ์ผ ๋จผ์ Logical address๋ก๋ถํฐ ํ์ด์ง ๋ฒํธ๋ฅผ ์์๋ด๊ณ , ๊ทธ ํ์ด์ง ๋ฒํธ๋ฅผ ๊ฐ์ง๊ณ TLB์์ ์ฐพ๋๋ค. ์์ผ๋ฉด ๋ฐ๋ก frame์ ๋ฒํธ๋ฅผ ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ฃผ์ ๋ณํ์ ๋์ด ๋๋ค.
๋ง์ฝ TLB์ ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ํ์ด์ง ํ
์ด๋ธ์ ์ ๊ทผํด์ frame์ ๋ฒํธ๋ฅผ ์์๋ด์ ์ค์ ์ฃผ์๋ฅผ ์ ์ ์๊ฒ ๋๋ค.
๊ทธ๋ฐ๋ฐ Locality์ ์ํด ๋๋ถ๋ถ์ ๊ฒฝ์ฐ TLB์์ ์ฐพ์ ์ ์๊ฒ ๋๋ค.
=> TLB๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ด์ง ๊ธฐ๋ฒ์ ์ฑ๋ฅ์ด ์ข์์ง๋ค.
Contiguous allocation๋งํผ ์ฑ๋ฅ์ด ์ข์ง๋ ์์ง๋ง, ์ฝ๊ฐ์ ์ฑ๋ฅ ํฌ์์ผ๋ก External fragmentation์ ์์ ๊ณ , ๊ด๋ฆฌ์์ ์ธก๋ฉด์์ ๋ง์ ์ด์ ์ ์ป์ ์ ์๋ค.
Effective Access Time(EAT)
TLB๋ฅผ ์ฌ์ฉํ์ ๋์ ํ์ด์ง ๊ธฐ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๊ฐ
=> CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํด์ ์ํ๋ Instruction, Data๋ฅผ ๊ฐ์ ธ์ค๋๋ฐ๊น์ง ๊ฑธ๋ฆฌ๋ ํ๊ท ์๊ฐ.
TLB์์ Look up์ ํ๋ ์๊ฐ์ α ๋ผ๊ณ ํ๋ค. (์ด ์๊ฐ์ ๋งค์ฐ ๋งค์ฐ ์งง์)
๊ทธ๋ฆฌ๊ณ Memory์ ์ ๊ทผํ๋ ์๊ฐ์ β ๋ผ๊ณ ํ๋ค. (๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด๋ฏ๋ก ์ค๋ ๊ฑธ๋ฆฐ๋ค)
๊ทธ๋ฌ๋ฉด Best case์ ๊ฒฝ์ฐ ๋ชจ๋ TLB ํํธ๊ฐ ๋๋ฉด EAT = α + β ๊ฐ ๋๋ค.
ํ์ง๋ง ์ต์ ์ ๊ฒฝ์ฐ ๋ชจ๋ TLB ๋ฏธ์ค๊ฐ ๋๋ฉด EAT = α + 2β ๊ฐ ๋๋ค.
β๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ์๊ฐ์ด๋ฏ๋ก ์ต๋ํ ์ค์ฌ์ผ ํ๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ EAT๊ฐ α + β์ ๊ฐ๊น๊ฒ ๋๋๋ก ํด์ผ ํ๋ค.
=> Localitiy์ ์ํด TLB ๋ฏธ์ค๊ฐ ๋๋ ์ผ์ ์ ์์ผ๋ฏ๋ก ๊ฐ๋ฅํ๋ค.
Memory Protection
ํ์ด์ง ๊ธฐ๋ฒ์ ์ฐ์ง ์์์ ๋๋ ํ์ฌ ์ ๊ทผํ๋ ์ฃผ์๊ฐ ์๋ชป๋ ์ฃผ์๊ฐ ์๋์ง offset์ด limit register์ ๊ฐ๋ณด๋ค ํฐ์ง ๋น๊ต๋ฅผ ํตํด MMU์์ ๊ฒ์ฌ๋ฅผ ํ์๋ค.
๊ทธ๋ฐ๋ฐ ํ์ด์ง ๊ธฐ๋ฒ์์๋ ๊ทธ๋ฐ ๊ณผ์ ์ด ์๋ค.
ํ์ด์ง ๊ธฐ๋ฒ์ Protection์ด ํ์๊ฐ ์์๊น? ์๋ชป๋ ์ฃผ์์ ์ ๊ทผํ ๊ฐ๋ฅ์ฑ์ด ์์๊น?
์๋๋ค. ํ์ด์ง ๊ธฐ๋ฒ์๋ Protection์ด ํ์ํ๋ค.
ํ์ด์ง ํ
์ด๋ธ์ ๊ฐ ์ํธ๋ฆฌ๋ง๋ค Protection bit (=Valid-invalid bit) 1๋นํธ๋ฅผ ์ฌ์ฉํ๋ค.
์ด ๊ฐ์ด valid๋ก ํํ๋์ด ์์ผ๋ฉด ์ ์์ ์ธ ์ ๊ทผ์ด๊ณ , invalid๋ก ๋์ด ์์ผ๋ฉด ์๋ชป๋ ์ ๊ทผ์์ ์๋ฏธํ๋ค.
๊ทธ๋ฐ๋ฐ ํ์ด์ง ํ
์ด๋ธ์ ๊ธธ์ด๋ฅผ ์ ์ฅํ๋ ๋ ์ง์คํฐ๊ฐ ์์๋ค (PTLR).
Address space๋งํผ ํ์ด์ง ํ
์ด๋ธ์ด ๋ง๋ค์ด์ ธ ์์ผ๋ฉด ํ์ด์ง ํ
์ด๋ธ์ ๊ธธ์ด๋ง ๊ฐ์ง๊ณ ์ ๊ทผํ๋ ค๋ ํ์ด์ง ๋ฒํธ๊ฐ ๊ทธ ๊ธธ์ด๋ฅผ ๋์ด๊ฐ๋ฉด ์๋ชป๋ ํ์ด์ง ๋ฒํธ์์ ํ๋จํ ์ ์๋ค.
=> ์ฌ์ค valid-invalid bit์ด ์์ด๋ ์๋ชป๋ ๊ฒ์ ์ ์ ์๋๋ฐ, ์ค์ ๋ก ๊ทธ๊ฑธ ์ฐ์ง ์๋๋ค.
=> ์ด ์๊ธฐ ์ญ์ virtual memory ์๊ฐ์ ๋ค๋ฃฐ ๊ฒ์ด๋ค.
์ด๋ฌํ valid-invalid bit์ ์ด๋ป๊ฒ ๊ตฌํ์ด ๋ ๊น?
address space์ ํฌ๊ธฐ๊ฐ 12,287์ด๊ณ ํ์ด์ง์ ์ฌ์ด์ฆ๊ฐ 2^11 ์ด๋ผ๋ฉด ์ด 6๊ฐ์ ํ์ด์ง๊ฐ ์์ฑ๋ ๊ฒ์ด๋ค.
0 ~ 5๋ฒ ํ์ด์ง์ ์ํธ๋ฆฌ๋ ํ์ด์ง ํ ์ด๋ธ์ valid๋ก ํ์๊ฐ ๋์ด ์๊ณ ๋๋จธ์ง ์ํธ๋ฆฌ๋ invalid๋ก ํ์๊ฐ ๋์ด ์๋ค.
์ ๊ทธ๋ฌ๋ฉด page table์ address space์ ๋ง์ถฐ์ ํ ๋นํ๋ฉด ๋์ง ์๋? 5๋ฒ๊น์ง๋ง ์ ์ฅํ ์ ์๋๋ก ํ์ด์ง ํ
์ด๋ธ์ ๋ง๋ค๋ฉด ๋์ง ์๋? ๊ทธ๋ผ valid-invalid bit๊ฐ ํ์๊ฐ ์์ ๊ฒ ๊ฐ์๋ฐ,,
Address space๋ฅผ ์ ์๊ฐํด๋ณด์ ์ ์ผ ์๋์ชฝ์ธ 0๋ฒ๋ถํฐ๋ text(code)๊ฐ ์ ์ฅ๋๊ณ ๊ทธ ์์ data, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์ heap๊ณผ stack์ด ๋ง์ฃผ๋ณด๊ณ ์๋ค. ์ด๋ stack์ max๋ถํฐ ์๋๋ก ์๋ผ๋ ๋ฐฉํฅ์ผ๋ก ๋ง๋ค์ด์ ธ ์๋ค.
์ฆ, stack๊ณผ heap์ ๋ณํ๋ ๊ณต๊ฐ์ด๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค๊ฐ ์ฒ์ ๋ง๋ค์ด์ก์ ๋ ์ฌ์ด์ฆ๋ฅผ ์ ์ ์์
=> ๊ทธ๋์ ํ์ด์ง ํ
์ด๋ธ์ ์ผ๋ง๋ ํฌ๊ฒ ๋ง๋ค์ด์ผ ํ ์ง ์ ์๊ฐ ์๋ค.
๋ํ max๋ฒ์ง๋ ๋ช ๋ฒ์ง๋ก ํด์ผ ํ๋์ง๋ ๋ฌธ์ ๋ค. max๋ฅผ ๋๋ฌด ์๊ฒ ์ก์ผ๋ฉด, function call์ด ๊ณ์ ์ผ์ด๋์ Stack์ด ์ปค์ง๊ณ , ๋์ ํ ๋น์ด ๊ณ์ ์ผ์ด๋์ Heap์ด ๊ณ์ ์ปค์ง๋ฉด ๋์ด ์ถฉ๋ํ๊ฒ ๋ ๊ฒ์ด๋ค.
์์ ํ๊ฒ ํ๋ ค๋ฉด max๋ ์ผ๋ง๋ ํฌ๊ฒ?
์ด๋ก ์ ์ผ๋ก ๊ฐ์ฅ ํฐ max๋ OS๊ฐ 32bit ์ฒด๊ณ๋ฉด 2^32 - 1๋ฒ์ง, 64bit ์ฒด๊ณ๋ฉด 2^64 - 1๋ฒ์ง๊น์ง ๊ฐ๋ฅํ๋ค. ์ด๊ฒ max๊ฐ ๋๋ค.
๊ทธ๋ฌ๋ฉด ํ์ด์ง ํ
์ด๋ธ๋ ์ด์ ๋ง์ถฐ์ ๋ง๋ค์ด์ ธ์ผ ํ๋ค.
heap๊ณผ stack ์ฌ์ด์ ๋น์ด์๋ ๊ณต๊ฐ์ ํ ๋น๋ ๊ณต๊ฐ์ด์ง๋ง ์ฌ์ฉ๋์ง ์๋ ๊ณต๊ฐ์ด๋๊น invalid๋ก ํํํ ์ ์๋ค.
๋ํ ํ์ด์ง ํ
์ด๋ธ์ ์ฌ์ด์ฆ๋ฅผ ์ค์ ๋ก heap๊ณผ stack์ด ์ฌ์ฉํ๋ ์์ญ๋ง ๊ฐ์ง๊ณ ํ ๋น์ ํ๋ค๋ฉด, ์ฆ heap๊ณผ stack ์ฌ์ด์ ๋น ๊ณต๊ฐ์๋ ํ์ด์ง๋ฅผ ํ ๋นํ์ง ์์ผ๋ฉด heap๋๋ stack์ด ๋์ด๋๊ฒ ๋ผ์ ํ์ด์ง๊ฐ ์๊ฒจ๋๋ฉด ๋ค๋ฅธ ํ์ด์ง๋ค์ ๋ฒํธ๊ฐ ๋ค ๋ฐ๋๊ฒ ๋๋ค. ์ด๊ฑด ๋ถ๊ฐ๋ฅํ๋ค.
=> ๊ทธ๋์ Stack์ ์ ์ผ ๋ max๋ก ๋ฐ์ด๋ฒ๋ฆฌ๋ ๊ฒ์ด๊ณ ํ์ด์ง ํ
์ด๋ธ์ ์ถฉ๋ถํ ํฌ๊ฒ ๋ง๋ค์ด์ ธ์ผ ํ๋ค.
=> ๊ทธ๋ผ ๋๋ฌด ์ปค์ง๊ฒ ๋๋๋ฐ ์ด๊ฒ ๋ฉ๋ชจ๋ฆฌ์ ํ์ฌ๊ฐ ๋๋๋??
์ด๊ฒ๋ ๋์ค์ ๋ฐฐ์ฐ๊ฒ ์ง๋ง ํ์ด์ง ํ
์ด๋ธ ์ญ์ ์ฐ์๋ ๊ณต๊ฐ์ ํ ๋น๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ชผ๊ฐ์ ๋ค์ด๊ฐ๊ฒ ๋๋ค.
ํ์ด์ง ํ
์ด๋ธ์ ์ํ ํ์ด์ง ํ
์ด๋ธ์ด ๋ ๋ณ๋๋ก ํ์ํ๋ค.
Shared Pages
ํ์ด์ง ๊ธฐ๋ฒ์ ํฐ ์ฅ์ ์ค ํ๋๋ ํ๋ก์ธ์ค ๊ฐ์ ํ์ด์ง ๊ณต์ ๊ฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ ํ๋ก์ธ์ค์ address space๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ๋ณดํธ๋ฅผ ๋ฐ๋๋ค.
=> ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋ด ์์ญ์ ๋ค์ด์์ ๋ฐ์ดํฐ๋ฅผ ๋ง ์จ๋ฒ๋ฆฌ๋ฉด ํฐ์ผ๋๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฐ๋ฐ ์ฌ๋ฌ ํ์๋ค์ด ์๋ฒ์ ๋ถ์ด์ ์์ ๋ฅผ ํ๋ฉด์ ์๊ธฐ๊ฐ ๋ง๋ ์ฝ๋๋ฅผ gcc๋ฅผ ์ด์ฉํด์ ์ปดํ์ผํ๋ค๊ณ ํด๋ณด์. A๋ผ๋ ํ์๊ณผ B๋ผ๋ ํ์์ด ๊ฐ์์ ์ฝ๋๋ฅผ gcc๋ฅผ ์ฌ์ฉํด์ ์ปดํ์ผํ๋ฉด A๋ gcc ํ๋ก์ธ์ค๋ฅผ ํ๋ ๋ง๋ค๊ณ , B๋ gcc ํ๋ก์ธ์ค๋ฅผ ํ๋ ๋ง๋ ๋ค. ๊ฐ์ gcc๋ฅผ ์คํํ๋ ํ๋ก์ธ์ค์ง๋ง ๊ฐ์ address space๊ฐ ๋ง๋ค์ด์ ธ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๊ฒ ๋๋ค.
๋ ํ๋ก์ธ์ค๋ ์์ ํ ๋ค๋ฅธ ํ๋ก์ธ์ค์ง๋ง ๋ ๋ค gcc๋ฅผ ์คํํ๋ฏ๋ก code ๋ถ๋ถ์ ์ผ์นํ๋ค. (๋ ๋ค gcc ์ฝ๋๊ฐ ๋ค์ด ์์).
๊ทธ๋ฆฌ๊ณ ์ฝ๋์ ๋ํ ์ ๊ทผ์ read-only์ด๋ค.
๋ฐ๋ผ์ read-only๊ฐ ๋ณด์ฅ๋์ด ์๋ ์ํ๋ผ๋ฉด ํ๋์ ๊ณต๊ฐ์ ๊ณต์ ํด์ ์ฌ์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
=> ์ฝ๋ ์์ญ์ ๊ณต์ ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋ค.
์ด๊ฒ ์ ํ์ด์ง ๊ธฐ๋ฒ์ ์ฅ์ ์ด๋
contiguous allocation์ ํ๋ฉด address space ๊ณต์ ๊ฐ ๋ถ๊ฐ๋ฅ ํ๋ค. Instruction์ ๋ํ ์ ๊ทผ ์์ฒด๊ฐ address space์ ์์ ์ง์ ์์ offset์ ์ฌ์ฉํด์ ์ ๊ทผ์ ํ๋ค. ์ฆ, address space์์ ์ฃผ์๊ฐ ๋๊ฐ์ง ์์ ์ด์์ ๊ณต์ ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค. ๊ทธ๋ฐ๋ฐ ์์ ์ฃผ์๊ฐ ๊ฐ์ผ๋ฉด ๋ค๋ฅธ ์์ญ๋ ๊ณต์ ๋ฅผ ํ๊ฒ ๋๋ฏ๋ก ์ด๊ฑด ๋ถ๊ฐ๋ฅํ๋ค.
ํ์ด์ง ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ฉด, ํ์ด์ง ํ ์ด๋ธ ์ํธ๋ฆฌ๋ฅผ ํตํด ๊ฐ์ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋งคํ์ด ๋๋๋ก ํ๋ฉด ๊ณต์ ๋ฅผ ํ ์ ์๊ฒ ๋๋ค
โป ๋ณธ ๋ด์ฉ์ ํ์๋ํ๊ต ๊ฐ์์ฉ ๊ต์๋์ ๊ฐ์๋ฅผ ์ฐธ๊ณ ํด์ ์์ฑ๋์์ต๋๋ค.
'HYU > ์ด์์ฒด์ (OS)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
10. Virtual Memory (1) (1) | 2023.05.12 |
---|---|
9. Memory Management (2) (0) | 2023.05.07 |
6. Process Syncronization (2) (0) | 2023.04.07 |
5. Process Synchronization (1) (0) | 2023.03.30 |
4. CPU Scheduling (3) | 2023.03.24 |