Previous chapter
ํ์ด์ง์ ๋๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๊ณณ์ ์๋ค!
ํ์ด์ง์ ํ๋ฅญํ ๊ธฐ๋ฒ์ด์ง๋ง, ํ์ด์ง ํ
์ด๋ธ์ ํฌ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋ํ ๋ง์ด ์ฐจ์งํ๊ฒ ๋๋ค.
Main QUEST : HOW TO MAKE PAGE TABLE SMALL
์ ํ ๋ฐฐ์ด ํ์ด์ง ํ
์ด๋ธ์ ํฌ๊ธฐ๊ฐ ํฌ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณผ๋ํ๊ฒ ์ฐจ์งํ๋ค.
ํ์ด์ง ํ
์ด๋ธ์ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๋ฐฉ๋ฒ์?
More Big Page
๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ํ์ด์ง์ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ ๋ฐฉ๋ฒ์ด ๋ ๊ฒ์ด๋ค.
โข
ํ์ด์ง๋น ํฌ๊ธฐ๊ฐ 4KB, ํ์ด์ง ํ
์ด๋ธ์ ๊ฐ ํญ๋ชฉ์ด 4๋ฐ์ดํธ์ธ 32๋นํธ ์ฃผ์๊ณต๊ฐ.
โฆ
ํ์ด์ง ๋๋ฒ๊ฐ ๊ฐ๊ฐ ๋๋ฉฐ, PFN์ด ์ด๊ณ , ๊ฐ ํญ๋ชฉ์ด 4๋ฐ์ดํธ์ด๋ฉด, ํ์ด์ง ํ
์ด๋ธ์ ์ด ์ฉ๋์ 4MB๊ฐ ๋๋ค.
PFN์ ๋นํธ๊ฐ 20์๋ฆฌ์ธ๋ฐ, ์ด๋ฅผ 18๋ก ์ค์ฌ๋ณด์. ํ์ด์ง ๋๋ฒ๋ 4๋ฐฐ ์ค๊ณ , ์คํ์
(ํ์ด์ง์ ์ต๋ํ๋)์ 4๋ฐฐ ๋๊ฒ ๋๋ค. ์ด ํ์ด์ง ์ฉ๋๋ 1MB๋ก ์ค์ด๋๋ค.
ํ์ด์ง ํฌ๊ธฐ์ ์ฆ๊ฐ๋ ๋ถ์์ฉ์ ์๋ฐํ๋ค.
๋ฐ๋ก ํ์ด์ง ๋ด๋ถ์ ๋ญ๋น๊ณต๊ฐ์ด ๋์ด๋๊ฒ ๋๋ค๋ ๋ฌธ์ ์ธ๋ฐ, ์ด๋ฅผ ๋ด๋ถ ๋จํธํ(internal fragmentation)์ด๋ผ๊ณ ํ๋ค.
์์ฉ ํ๋ก๊ทธ๋จ์ด ์ฌ๋ฌ ํ์ด์ง๋ฅผ ํ ๋น ๋ฐ์์ง๋ง ํ ๋น๋ฐ์ ํ์ด์ง์ ์ผ๋ถ๋ถ๋ง ์ฌ์ฉํด, ๊ฒฐ๊ตญ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ธ๋ฐฉ ๊ณ ๊ฐ๋๊ฒ ๋๋ค.
HYBRID : Paging & Segment
ํ์ด์ง๊ณผ ์ธ๊ทธ๋ฉํ
์ด์
์ ๊ฒฐํฉํ์ฌ ํ
์ด๋ธ ํฌ๊ธฐ๋ฅผ ์ค์ผ ์๋ ์๋ค!
๊ธฐ์กด์ ์ ํ ํ์ด์ง ๋ฐฉ์์ ํ์ํ ์ ๋ณด๊ฐ ์ ์ ๊ฒฝ์ฐ, ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ ์ฌํ ๋จ์ ์ด ์๋ค.
valid bit์ ๋ฌด์ํ 0์ ๋ณด๋ผ. ์ ๋งํผ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น๋๋ค.
ํ๋ก์ธ์ค์ ์ ์ฒด ์ฃผ์ ๊ณต๊ฐ์ ์ํด ํ๋์ ํ์ด์ง ํ
์ด๋ธ์ ๋๋ ๋์ , ์ธ๊ทธ๋จผํธ๋ณ๋ก ํ์ด์ง ํ
์ด๋ธ์ ๋๋ฉด ์ด๋จ๊น? ์ข์ ์์ด๋์ด ๊ฐ๋ค.
์ด ๋ฐฉ๋ฒ์์๋ ์ธ๊ทธ๋ฉํ
์ด์
์์ ํ๋ ๊ฒ ์ฒ๋ผ ๋ฒ ์ด์ค, ๋ฐ์ด๋ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ๋ค.
๊ทธ๋ฌ๋ ๊ฐ๊ฐ์ ์ธ๊ทธ๋จผํธ์ ๋ํ ์์ ์ฃผ์๊ฐ ์๋, ์ธ๊ทธ๋จผํธ์ ํ์ด์ง ํ
์ด๋ธ์ ์์ ์ฃผ์๋ฅผ ๊ฐ์ง๋ค.
32๋นํธ ๊ฐ์์ฃผ์๋๋ ์ด์ VPN, ์คํ์
๊ทธ๋ฆฌ๊ณ ์๋ก ๋ค์ด์จ ์ธ๊ทธ๋จผํธ๋ก ๊ตฌ์ฑ๋๋ค.
์์ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ์์ 2๋นํธ๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค. 01 = ์ฝ๋, 10 = ํ, 11 = ์คํ
๋ํ ํ๋์จ์ด์ ์ธ ๊ฐ์ ๋ฒ ์ด์ค, ๋ฐ์ด๋ ๋ ์ง์คํฐ ์์ด ์๋ค๊ณ ๊ฐ์ ํ์.
์คํ์ค์ธ ํ๋ก์ธ์ค์์ ๊ฐ ๋ฒ ์ด์ค ๋ ์ง์คํฐ๋ ๊ฐ ์ธ๊ทธ๋จผํธ ํ์ด์ง์ ์์ ์ฃผ์๋ฅผ ๊ฐ์ง๋ค.
TLB์ ๋ฏธ์ค๊ฐ ์ผ์ด๋๋ฉด ํ๋์จ์ด๋ ์ธ๊ทธ๋จผํธ ๋๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ค ๋ฒ ์ด์ค์ ๋ฐ์ด๋๋ฅผ ์ธ ์ง ๊ฒฐ์ ํ๋ค.
๊ทธ ๋ ์ง์คํฐ์ ๋ค์ด์๋ ๋ฌผ๋ฆฌ ์ฃผ์๋ฅผ VPN๊ณผ ๋ค์๊ณผ ๊ฐ์ ํ์์ผ๋ก ์กฐ์ํด PTE์ ์ฃผ์๋ฅผ ์ป๋๋ค.
SN = (VirtualAddress & SEG_MASK) >> SN_SHIFT
VPN = (virtualAddress & VPN_MASK) >> VPN_SHIFT
AddressOfPTE = Base[SN] + (VPN*sizeof(PTE))
C
๋ณต์ฌ
ํ์ด๋ธ๋ฆฌ๋ ๊ธฐ๋ฒ์ ํต์ฌ์ ์ธ๊ทธ๋จผํธ๋ง๋ค ๋ฐ์ด๋ ๋ ์ง์คํฐ๊ฐ ๋ฐ๋ก ์กด์ฌํ๋ค๋ ๊ฒ์ด๋ค.
๊ฐ ๋ฐ์ด๋ ๋ ์ง์คํฐ์ ๊ฐ์ ์ต๋ ์ธ๊ทธ๋จผํธ์ ์ ํจํ์ด์ง ์๋ฅผ ๋ํ๋ธ๋ค.
ํ์ด๋ธ๋ฆฌ๋ ๊ธฐ๋ฒ ์ญ์ ๋ฌธ์ ๊ฐ ์๋๋ฐ,
1.
์ฌ์ ํ ์ธ๊ทธ๋ฉํ
์ด์
์ ์ฌ์ฉํ๋ค.
๋น๊ณต๊ฐ์ด ๋ง์ ํ์ ๊ฒฝ์ฐ ์ฌ์ ํ ํ์ด์ง ํ
์ด๋ธ์ ๋ญ๋น๋ฅผ ๋ฉด์น ๋ชปํ๋ค.
2.
ํ์ด๋ธ๋ฆฌ๋ ๊ธฐ๋ฒ์ ์ธ๋ถ ๋จํธํ๋ฅผ ์ ๋ฐํ๋ค.
ํ์ด์ง ํ
์ด๋ธ์ ํฌ๊ธฐ์ ์ ํ์ด ์์ผ๋ฉฐ, ๋ค์ํ ํฌ๊ธฐ๋ฅผ ๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ฐ ๋ฌธ์ ๋ก ์ธํด ์ธ๊ทธ๋ฉํ
์ด์
์ ์ฌ์ฉํ์ง ์๊ณ ํ์ด์ง ํ
์ด๋ธ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๊ฒ ๋ ์ข์ ๋ฐฉํฅ์ด๋ผ๊ณ ํ๋จ๋๋ค.
Multi-Level Page Table
๋ฉํฐ๋ ๋ฒจ ํ์ด์ง ํ
์ด๋ธ์์๋ ์ ํ ํ์ด์ง ํ
์ด๋ธ์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ํํํ๋ค.
์ด๋ ๋งค์ฐ ํจ์จ์ ์ด๋ฉฐ ๋ง์ ํ๋ ์์คํ
์์ ์ฌ์ฉ๋๊ณ ์๋ค.
๋ฉํฐ ๋ ๋ฒจ ํ์ด์ง ํ
์
๋ฅด์ ๊ฐ๋
์ ๊ฐ๋จํ๋ค.
1.
ํ์ด์ง ํ
์ด๋ธ์ ํ์ด์ง ํฌ๊ธฐ์ ๋จ์๋ก ๋๋๋ค.
2.
ํ์ด์ง ํ
์ด๋ธ์ ํ์ด์ง๊ฐ ์ ํจํ์ง ์๋ ํญ๋ชฉ๋ง ์๋ค๋ฉด, ํด๋น ํ์ด์ง๋ฅผ ๋ ๋ ค๋ฒ๋ฆฐ๋ค.
3.
ํ์ด์ง ๋๋ ํฐ๋ฆฌ(page directory)๋ผ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด์ง ํ
์ด๋ธ ๊ฐ ํ์ด์ง์ ํ ๋น ์ฌ๋ถ์ ์์น๋ฅผ ํ์
ํ๋ค.
a.
ํ์ด์ง ๋๋ ํฐ๋ฆฌ๋ ํ์ด์ง ํ
์ด๋ธ์ ๊ตฌ์ฑํ๋ ๊ฐ ํ์ด์ง์ ์กด์ฌ์ฌ๋ถ์ ์์น๋ฅผ ๊ฐ์ง๋ค.
์ ์์ ๋ฅผ ํด์ฒดํด๋ณด์.
์ข์ธก ๊ทธ๋ฆผ์ ์ ํ์ ์ธ ์ ํ ํ์ด์ง ํ
์ด๋ธ๋ก, ๊ฐ์ด๋ฐ ์ฃผ์๊ณต๊ฐ์ ์ฌ์ฉ๋์ง ์๊ณ ์์ง๋ง ํ์ด์ง ํ
์ด๋ธ์ ํ ๋น๋์ด์๋ค.
์ฐ์ธก์ ๋ฉํฐ๋ ๋ฒจ ํ์ด์ง ํ
์ด๋ธ๋ก, ๋๊ฐ์ ์ ํจํ ํ์ด์ง๊ฐ ์๋ค. ์ ํจํ์ด์ง ๋๊ฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ค.
๋ฉํฐ๋ ๋ฒจ ํ์ด์ง ํ
์ด๋ธ์ ๋ช๊ฐ์ง ์ฅ์ ์ด ์๋ค.
1.
๋ฉํฐ ๋ ๋ฒจ ํ
์ด๋ธ์ ์ฌ์ฉ๋ ์ฃผ์๊ณต๊ฐ์ ํฌ๊ธฐ์ ๋น๋กํด ํ์ด์ง ํ
์ด๋ธ ๊ณต๊ฐ์ด ํ ๋น๋๋ค.
๋ณด๋ค ์์ ํฌ๊ธฐ์ ํ์ด์ง ํ
์ด๋ธ๋ก ์ฃผ์๊ณต๊ฐ์ ํํํ ์ ์๋ค.
2.
ํ์ด์ง ํ
์ด๋ธ์ ํ์ด์ง ํฌ๊ธฐ๋ก ๋ถํ ํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ๋ค.
ํ์ด์ง ํ
์ด๋ธ์ ํ ๋น, ํ์ฅํ ๋ OS๋ free ํ์ด์ง ํ์ ์๋ ๋น ํ์ด์ง๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๋ฉด ๋์ด๋ค!
์๊ฐํด๋ณด์. ์ ํ ํ์ด์ง ํ
์ด๋ธ์ ์ฐ์๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํ๋ค. ๋ณดํต ์ ํ ํ์ด์ง ํ
์ด๋ธ์ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๊ฐ ํฐ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ํฌ๊ธฐ๊ฐ ํฌ๊ณ ์ฐ์๋ ๋ฌผ๋ฆฌ ๊ณต๊ฐ์ ์ฐพ๋ ๊ฑด ์ฌ์ด์ผ์ด ์๋๋ค.
๋ฐ๋๋ก ๋ฉํฐ๋ ๋ฒจ ํ์ด์ง๋ ํ์ด์ง ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฌ์ฉํด ๊ฐ ํ์ด์ง ํ
์ด๋ธ์ ์์น๋ฅผ ํ์
ํ ์ ์๋ค. ๊ฐ ํ์ด์ง๊ฐ ์ค๊ตฌ๋๋ฐฉ์ด๋๋ผ๋ ํ์ด์ง ๋๋ ํฐ๋ฆฌ๋ฅผ ํตํด ์์น์ถ์ ์ด ๊ฐ๋ฅํ๋ค!
๊ทธ๋ฌ๋ ์ฅ์ ๋ง ์๋ ๊ฒ์ ์๋๋ค.(๋ ๊ทธ๋ ๋ฏ์ด) ๋ค์๊ณผ ๊ฐ์ ๋จ์ ์ ๊ฐ์ง๋ค.
1.
๋ฉํฐ ๋ ๋ฒจ ํ
์ด๋ธ์ ์ถ๊ฐ ๋น์ฉ์ด ๋ฐ์ํ๋ค.
์ฃผ์๋ณํ์ ์ํด ๋๋ฒ ์ด์์ ๋ฉ๋ชจ๋ฆฌ ๋ก๋๊ฐ ๋ฐ์ํ๋ค.(ํ๋ฒ์ ํ์ด์ง ๋๋ ํฐ๋ฆฌ, ํ๋ฒ์ PTE)
์ ํ ํ์ด์ง ํ
์ด๋ธ์ ๋นํด์ ์๊ฐ ํจ์จ์ ์ผ์ ๋ฒ๋ฆฐ ์
์ด๋ค.
2.
ํ์ด์ง ํ
์ด๋ธ์ ๊ฒ์์ด ์ ํ ํ
์ด๋ธ๋ณด๋ค ๋ณต์กํด์ง๋ค.
Examples
ํ์ด์ง๋น 64๋ฐ์ดํธ๋ฅผ ๊ฐ๋ 16KB์ ํฌ๊ธฐ์ ์์ ์ฃผ์๊ณต๊ฐ์ ์๊ฐํด๋ณด์.
16KB = ์ด๋ฏ๋ก, ์ฃผ์๊ณต๊ฐ์ ๋นํธ๊ธธ์ด๋ 14๋นํธ๋ค.
ํ์ด์ง๋น 64๋ฐ์ดํธ์ด๋ฏ๋ก, ์คํ์
์ 6, VPN์ 8๋นํธ๋ก ๊ตฌ์ฑ๋์ด, 256๊ฐ์ ์ ํ ํ์ด์ง ํ
์ด๋ธ์ด 1์ฐจ์ ์ผ๋ก ๊ฐ์ ๋ ์ ์๋ค.
๊ฐ ํ์ด์ง ํ
์ด๋ธ ๋น 4๋ฐ์ดํธ๋ผ๊ณ ๊ฐ์ ํ ๊ฒฝ์ฐ, ํ์ด์ง ํ
์ด๋ธ์ ํฌ๊ธฐ๋ 256 ^ 4 = 1024๋ฐ์ดํธ = 1KB์ด๋ค.
ํ์ด์ง๊ฐ 64๋ฐ์ดํธ์์ผ๋ฏ๋ก, 1KB๋ฅผ 64๋ฐ์ดํธ๋ก ์ชผ๊ฐ์. ์ด 16๊ฐ์ ํ์ด์ง๋ก ๋ถํ ๋ ๊ฒ์ด๋ฉฐ, ๊ฐ ํ์ด์ง์๋ 16๊ฐ์ PTE๊ฐ ์์ ๊ฒ์ด๋ค.
์ด์ VPN์ผ๋ก๋ถํฐ ํ์ด์ง ๋๋ ํฐ๋ฆฌ ์ธ๋ฑ์ค๋ฅผ ์ถ์ถํ๊ณ , ํ์ด์ง ํ
์ด๋ธ์ ๊ฐ ํ์ด์ง ์์น๋ฅผ ํ์
ํ๋ ๋ฒ์ ์ดํด๋ณด์. ํ์ด์ง ๋๋ ํฐ๋ฆฌ, ํ์ด์ง ํ
์ด๋ธ์ ํ์ด์ง ๋ชจ๋ ํญ๋ชฉ์ ๋ฐฐ์ด์์ ์์ง ๋ง์.
๋จผ์ ํ์ด์ง ๋๋ ํฐ๋ฆฌ์ ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ๋ค. ์์ ํ์ด์ง ํ
์ด๋ธ์ 256๊ฐ์ ํญ๋ชฉ์ผ๋ก ๊ฐ 16๊ฐ์ ํ์ด์ง๋ก ๋๋์ด ์์ผ๋ฉฐ, ๊ฐ ํ์ด์ง๋น 16๊ฐ์ PTE๊ฐ ์๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก 16๊ฐ์ ํ์ด์ง๋ฅผ ์ธ๋ฑ์ฑํ๋ ค๋ฉด, 4bit๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ค. VPN์ ์์ 4๋นํธ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ค.
VPN์์ ํ์ด์ง-๋๋ ํ ๋ฆฌ ์ธ๋ฑ์ค(page-directory index : PDIndex)๋ฅผ ์ถ์ถํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์ด ๋์ฌ ๊ฒ์ด๋ค.
PDEAddr = PageDirBaseReg + (PDIndex * sizeof(PDE))
C
๋ณต์ฌ
PD์ ํด๋น ํญ๋ชฉ์ด ๋ฌดํจ ์ฒ๋ฆฌ๋์ด์์ผ๋ฉด, ์ด ์ ๊ทผ์ ์ ํจํ์ง ์๋ค.
๋ฐ๋๋ก PDE๊ฐ ์ ํจํ๋ค๋ฉด ์ถ๊ฐ ์์
์ ํด์ผํ๋ค.
ํ์ด์ง ํ
์ด๋ธ์ ํ์ด์ง์์ ์ํ๋ ํ์ด์ง ํ
์ด๋ธ ์๋๋ฆฌ๋ฅผ ์ฝ์ด๋ค๊ธฐ๋ ๊ฒ์ด ๋ชฉํ๋ค. ๋๋จธ์ง ๋นํธ๋ฅผ ์ฌ์ฉํ์.
ํ์ด์ง ํ
์ด๋ธ ์ํธ๋ฆฌ์ ์ฃผ์๋ ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐํ๋ค.
PTEAddr = (PDE.PFN << SHIFT) + (PTIndex * sizeof(PTE))
C
๋ณต์ฌ
PTE์ ์ฃผ์๋ฅผ ์์ฑํ๋ ค๋ฉด, ํ์ด์ง ๋๋ ํฐ๋ฆฌ ํญ๋ชฉ์์ ์ป์ ํ์ด์ง-ํ๋ ์ ๋๋ฒ๋ฅผ ๋จผ์ ์ข์ธก ์ฌํํธ ์ฐ์ฐํ ํ, ํ์ด์ง ํ
์ด๋ธ ์ธ๋ฑ์ค์ ํฉ์ฐํ๋ค.
Inverted Page Table
๋์ค์โฆ
Next chapter