Previous chapter
๋ฒ ์ด์ค & ๋ฐ์ด๋ ๋ฐฉ์์ ํ๋ก์ธ์ค๋ฅผ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ค๋ฅธ ๋ถ๋ถ์ผ๋ก ์ฝ๊ฒ ์ฌ๋ฐฐ์นํ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ํจ์จ์ฑ ์ธก๋ฉด์์ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ํจ์ ์ ๋น ์ง๊ฒ ๋๋ค.
ํ๋ก์ธ์ค๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋์ด ์๋๋ฐ ํ๊ณผ ์คํ ์ฌ์ด์ ๊ฑฐ๋ํ free๋ฉ๋ชจ๋ฆฌ์ ๊ณจ์ง๊ธฐ๊ฐ ํ์ฑ๋์ด์๋ค.
์ด ๊ณต๊ฐ์ด ์ฌ์ฉ๋์ง ์๋๋ผ๋ ์ด Address Space๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฐฐ์นํ ๋ ๊ฐ์ด ํ ๋น๋๋ค.
์ด๋ฐ ์ ์์ ๋ฒ ์ด์ค&๋ฐ์ด๋ ๋ฐฉ์์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ ์ฌํ๋ค.
๋ํ ์ฃผ์๊ณต๊ฐ์ด ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํฐ ๊ฒฝ์ฐ ์คํ์ด ๋งค์ฐ ์ด๋ ต๋ค.
์ฆ, ๋ฒ ์ด์ค ๋ฐ์ด๋๋ ์ ์ฐ์ฑ์ด ์๋ค.
Main Quest : How to support Large Address space
์คํ๊ณผ ํ ์ฌ์ด์ ๋น ์์ญ์ด ํฌ๊ฒ ์กด์ฌํ๋ ๊ณต๊ฐ์ ์ด๋ป๊ฒ ์ง์ํ ๊น?
ํฌ๊ธฐ๊ฐ ํฐ ์ฃผ์๊ณต๊ฐ์ ๊ฒฝ์ฐ ์ค์ ์ ๋ฉ๊ฐ๋ฐ์ดํธ๋ง ์ฌ์ฉํจ์๋ ๋ถ๊ตฌํ๊ณ ๊ณต๊ฐ ์ ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ํ์ฌ๋์ด์ผ ํ๋ค.
Segmentation : Normalize Base/Bounds
ํต์ฌ : ํ๋ก์ธ์ค๋ณ B&B๋ฅผ ์ธ๊ทธ๋จผํธ ๋จ์๋ก ์ชผ๊ฐ์!
์์ด๋์ด๋ ๊ฐ๋จํ๋ค.
MMU์ ํ๋์ ๋ฒ ์ด์ค์ ๋ฐ์ด๋๊ฐ์ด ์กด์ฌํ๋ ๊ฒ์ด ์๋, ์ธ๊ทธ๋จผํธ๋ณ ๋ฒ ์ด์ค์ ๋ฐ์ด๋๊ฐ์ ํ ๋นํ๋ค.
์ฐ๋ฆฌ๊ฐ ๊ตฌ์ฑํ ์ธ๊ทธ๋จผํธ๋ ๋ค์๊ณผ ๊ฐ์๋ค.
โข
์ฝ๋
โข
ํ
โข
์คํ
์ฆ, ๋ฒ ์ด์ค์ ๋ฐ์ด๋ ๋ ์ง์คํฐ 3์์ด ํ์ํ๋ค.
64KB์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ 3๊ฐ์ ์ธ๊ทธ๋ฉํธ์ ์ด์์ฒด์ ์ฉ์ผ๋ก ์์ฝ๋ 16KB ์์ญ์ด ์กด์ฌํ๋ค.
์ฌ์ฉ์ค์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋ํด์๋ง ๋ฌผ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ์ฌ, ์ฌ์ฉ๋์ง ์์ ์์ญ์ด ๋ง์ ๋ํ ์ฃผ์๊ณต๊ฐ์ ์์ฉํ ์ ์๋ ๊ตฌ์กฐ์ด๋ค.
โข
์ฝ๋ ์ธ๊ทธ๋จผํธ๋ ๋ฌผ๋ฆฌ์ฃผ์ 32KB์ 2KB์ง๋ฆฌ๋ก ๋ฐฐ์น๋๊ณ , ํ ์ธ๊ทธ๋จผํธ๋ 34KB์ 3KB์ง๋ฆฌ๋ก ๋ฐฐ์น๋๋ค.
์ธ๊ทธ๋จผํธ์ ์ฌ์ด์ฆ๋ ๋ฐ์ด๋ ๋ ์ง์คํฐ์ ์ผ์นํ๋ค. ์ด ์ธ๊ทธ๋จผํธ์ ๋ช ๋ฐ์ดํธ๊ฐ ์ ํจํ์ง ํ๋์จ์ด์๊ฒ ์๋ ค์ค๋ค.
Examples
๊ฐ์ ์ฃผ์ 100๋ฒ์ง์ ๋ฌผ๋ฆฌ์ฃผ์
โข
100๋ฒ์ง๋ ํ๋ก๊ทธ๋จ ์ฝ๋์ ์์ญ์ด๋ค. ์ฝ๋์ ๋ฒ ์ด์ค ๋ ์ง์คํฐ๋ 32KB์ด๋ฏ๋ก, ๋ฌผ๋ฆฌ์ฃผ์๋ 32KB + 100 = 32868์ด ๋๋ค.
โฆ
๊ทธ ํ, ์ฃผ์๊ฐ ๋ฒ์ ๋ด์ ์๋์ง ๊ฒ์ฌํ๊ณ , ๋ฒ์ ๋ด์ ์์ ๊ฒฝ์ฐ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ 32868์ Read.
๊ฐ์์์กฐ 4200๋ฒ์ง์ ๋ฌผ๋ฆฌ์ฃผ์.
โข
4200์ ํ์ด๋ค. ์ฝ๋์ ๋ฒ ์ด์ค ๋ ์ง์คํฐ๋ 34KB์ด๋ค. ๊ทธ๋ฐ๋ฐ VM ๋ด๋ถ์ ํ์ ์ฃผ์๋ 4200๋ฒ์ด ๋ง์ผ๋, ์ธ๊ทธ๋จผํธ์ ๊ด์ ์ผ๋ก ๋ฐ๋ผ๋ด์ผํ๋ค. ์ฐ๋ฆฌ๊ฐ ์ง์ง ์
๋ ฅํด์ผํ๋ ์ฃผ์๋ VM์ฃผ์ - VM์ ํ์ ๋ฒ ์ด์ค = 4200 - 4KB = 104์ด๋ค.
โข
์ฆ, 34KB+104 = 34920์ด ๋๋ค.
Types of Segments
ํ๋์จ์ด๋ ๋ณํ์ ์ํด ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ฐ์ ์ฃผ์๊ฐ ์ด๋ ์ธ๊ทธ๋จผํธ๋ฅผ ์ฐธ์กฐํ๋๊ฐ? ๊ทธ ์ธ๊ทธ๋จผํธ ์์์ ์คํ์
์ ์ผ๋ง์ธ๊ฐ?
์ฌ๊ธฐ์์ ์๊ฐํ๋ ๋ฐฉ๋ฒ์ ์ต์์ ๋นํธ ๋ช๊ฐ๋ฅผ ์ธ๊ทธ๋จผํธ ์ข
๋ฅ๋ฅผ ๋ํ๋ด๋๋ฐ ์ฌ์ฉํ๋ค.
์ต์์ ๋นํธ๊ฐ 00์ด๋ฉด ์ฝ๋, 01์ด๋ฉด ํ, 02๋ฉด ์คํ์ด ๋ ๊ฒ์ด๋ฉฐ
๋๋จธ์ง 0~11๋นํธ๊น์ง๋ ๊ทธ ์ธ๊ทธ๋จผํธ ์์ ์คํ์
์ด ๋๋ค.
ํ์ ๊ตฌํ ๋์ฒ๋ผ VM - Segment bound๋ฅผ ํ ํ์๊ฐ ์์ด์ง๋ ์ด์ผ๊ธฐ๋ค.
์ด๋ ๋ฐ์ด๋ ๊ฒ์ฌ์๋ ์ฉ์ดํด ๋ฐ์ด๋์์ Offset์ ๋นผ๊ธฐ๋ง ํ๋ฉด ๋๋๋ก ๋ฐ๋๋ค.
Segment = (VirtualAddress & SEG_MASK) >> SEG_SHIFT //14 bit VA์ค ์์ 2bit ์ถ์ถ
Offset = VirtualAddress & OFFSET_MASK //์คํ์
์ถ์ถ
if(Offset >= Bounds[Segment])
RaiseException(PROTECTION_FAULT)
else
PhysAddr = Base[Segment] + Offset
Register = AccessMemory(PhysAddr)
Assembly
๋ณต์ฌ
์ฌ๊ธฐ์๋ ๋ช๊ฐ์ง ๋ฌธ์ ๊ฐ ์๋ค.
1.
11์ ํด๋นํ๋ ๋ธ๋ก์ ์ฌ์ฉํ์ง ๋ชปํ๋ค.
a.
๋ฐ๋ผ์ ์ด๋ค ํ๋ก์ธ์ค๋ ํ๊ณผ ์คํ์ ํฉ์ณ 1๋นํธ๋ก ๋ํ๋ด๊ธฐ๋ ํ๋ค.
2.
์ธ๊ทธ๋จผํธ์ ํฌ๊ธฐ๋ ์ฌ์ ํ ์ ์ ์ด๋ค.
a.
์ธ๊ทธ๋จผํธ์ ์ต๋ ์คํ์
์ 12bit์ด๋ฏ๋ก, ์ด ์ด์ ํ์ด๋ ์คํ์ ํ ๋นํ ์ ์๊ฒ ๋๋ค.
Stack
์คํ์ ๋ค๋ฅธ ์ธ๊ทธ๋จผํธ์๋ ๊ฒฐ์ ์ ์ธ ์ฐจ์ด์ ์ ๊ฐ์ง๊ณ ์๋๋ฐ ๋ฐ๋ก ์ญ๋ฐฉํฅ์ด๋ผ๋ ์ ์ด๋ค.
๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ 28KB์์ ์์ํด์, 26KB๊น์ง ํ์ฅ๋๋ค. ์ด๋ฅผ ์ํด์๋ ๋ค๋ฅธ ๋ฐฉ์์ ๋ณํ์ด ํ์ํ๋ค.
1.
๊ฐ๋จํ ํ๋์จ์ด๊ฐ ์ถ๊ฐ๋ก ํ์ํ๋ค.
a.
์ธ๊ทธ๋จผํธ๊ฐ ์ด๋ ๋ฐฉํฅ์ผ๋ก ํ์ฅํ๋์ง ์ผ์ข
์ Sign๋นํธ๋ฅผ ์ถ๊ฐํ๋ค.
ํ๋์จ์ด๋ ์ธ๊ทธ๋จผํธ๊ฐ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ๋์ด๋ ์ ์๋ค๋ ๊ฑธ ์๊ณ ์์ผ๋ฏ๋ก ๊ทธ๋ฐ ๊ฐ์ ์ฃผ์์ ๋ํด์๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ณํํ๋ค.
Examples
๊ฐ์์ฃผ์ 15KB์ ์ ๊ทผํ ๋, ๋ฌผ๋ฆฌ์ฃผ์ 27KB์ ๋งคํ๋์ด์ผ ํ๋ค. ์ด ์ฃผ์๋ฅผ ๋ฐ์ด๋๋ฆฌ ๋นํธ๋ก ๋ฐ๊พธ๋ฉด
11 1100 0000 0000 (0x3C00)์ด ๋๋ค.
์์ 2๋นํธ๋ ์ธ๊ทธ๋จผํธ ์ง์ ๋นํธ์ด๋ฏ๋ก, 3KB์ ์คํ์
์ด ๋๋ค.
์ด ์ธ๊ทธ๋จผํธ๊ฐ ์คํ์ผ ๊ฒฝ์ฐ, ํ๋์จ์ด๋ ์ด ์คํ์
์์ ์ธ๊ทธ๋จผํธ์ ์ต๋ ํฌ๊ธฐ๋ฅผ ๋บ๋ค.
3KB-4KB = -1KB์ด๋ฏ๋ก, ์ด ์์ ์คํ์
์ ๋ฒ ์ด์ค์ ๋ํด ์ต์ข
์คํ์
์ ์ป๋๋ค.
Support for Sharing
์ธ๊ทธ๋ฉํ
์ด์
๊ธฐ๋ฒ์ ์์ฉํ๋ฉด ์๋ก์ด ์ข
๋ฅ์ ํจ์จ์ฑ์ ์ป์ ์ ์๋ค!
ํน์ ๋ฉ๋ชจ๋ฆฌ ์ธ๊ทธ๋จผํธ๋ฅผ ๊ณต์ (ํนํ ์ฝ๋)ํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ ์ ์๋ค.
๊ณต์ ๋ฅผ ์ง์ํ๊ธฐ ์ํด ๊ฐ ์ธ๊ทธ๋จผํธ๋ณ๋ก ๋ค๋ฅธ ์ธ๊ทธ๋จผํธ๊ฐ ์์ ์ ์ธ๊ทธ๋จผํธ์ ์ด๋ค ์ผ์ ํ ์ ์๋์ง Protection bit๋ฅผ ์ถ๊ฐํจ์ผ๋ก์จ ์์ธ์ค ๊ถํ์ ๋์
ํ ์ ์๋ค.
Fine-grained vs. Coarse-grained
OS Support
โข
์ธ๊ทธ๋ฉํ
์ด์
์ ์์ ์ ์ธ ๋์
์ ์ํด์๋ ์ด์์ฒด์ ๊ฐ ๋ช๊ฐ์ง ๋ฌธ์ ๋ฅผ ๋์์ผ ํ๋ค.
1.
Context Switch
์ปจํ
์คํธ ์ค์์น๊ฐ ์ผ์ด๋ ์ ์ด์์ฒด์ ๋ ์ด๋ค์ผ์ ํด์ผํ ๊น?
OS๋ ์ด๋๊น์ง ์ฌ์ฉํ๋ ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ , ๋ค์ ํ๋ก์ธ์ค์ ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ๋ฅผ ๋ถ๋ฌ์์ผํ๋ค.
2.
๋๋ฒ์งธ๋ ์ธ๊ทธ๋จผํธ ํฌ๊ธฐ์ ๋ณ๊ฒฝ์ด๋ค.
์ด๋ค ํ๋ก๊ทธ๋จ์ด malloc์ ํธ์ถํด ๊ฐ์ฒด๋ฅผ ํ ๋นํ ๊ฒฝ์ฐ, ๊ธฐ์กด์ ํ์์ ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ ๊ฒ์ด๋ค.
๋น ๊ณต๊ฐ์ ์ฐพ๊ฑฐ๋, ๋น๊ณต๊ฐ์ด ์๋ค๋ฉด ํ์ ์ธ๊ทธ๋จผํธ ํฌ๊ธฐ๋ฅผ ๋๋ ค์ผ ํ ๊ฒ์ด๋ค.
3.
๋ง์ง๋ง์ผ๋ก, ๋ฏธ์ฌ์ฉ์ค์ธ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ด๋ฆฌ๋ค.
์๋ก์ด ์ฃผ์ ๊ณต๊ฐ์ด ์์ฑ๋๋ฉด ์ด์์ฒด์ ๋ ์ด ๊ณต๊ฐ์ ์ธ๊ทธ๋จผํธ๋ฅผ ์ํ ๋น์ด์๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฐพ์์ผ ํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ์๊ธฐ๋ ๋ฌธ์ ๋ ์ธ๊ทธ๋จผํธ์ ํฌ๊ธฐ๊ฐ ์ ๊ฐ๊ฐ์ด๋ค๋ณด๋, ๋น ์ฌ๋กฏ์ ์ ๋นํ ์ธ๊ทธ๋จผํธ๋ฅผ ์ฑ์๋ฃ๋ค ๋ณด๋ฉด ์ฌ์ฉํ ์ ์๋ ์ํฌ๋ฆฌ ๊ณต๊ฐ์ด ์๊ธฐ๊ฒ ๋๋ค. ์ด๋ฅผ ์ธ๋ถ ๋จํธํ(external fragmentation)์ด๋ผ ํ๋ค.
Example
์์ ๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋์ด์์ ๊ฒฝ์ฐ, ์ ํ๋ก์ธ์ค (20KB)๋ฅผ ํ ๋นํ๋ ค๊ณ ํ ๋, 24KB๊ฐ ์ด๋ก ์ ์ผ๋ก ๋น์ด์์ผ๋, ๋ชจ๋ ์๊ฒ ๋๋์ด ์์ด ํด๋น ์์ฒญ์ ์ถฉ์กฑ์ํค๊ธฐ ์ด๋ ต๋ค.
์ด ๋ฌธ์ ์ ํด๊ฒฐ์ฑ
์ ๊ธฐ์กด ์ธ๊ทธ๋จผํธ๋ฅผ ์์ถํด์ ์ ๋ฆฌํ ํ, ์๋ก์ด ์ธ๊ทธ๋จผํธ๋ฅผ ์ฑ์ฐ๋ ๋ฐฉ์์ด ๋ ๊ฒ์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ด๋ค์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ์ฐ์๋ ๊ณต๊ฐ์ ๋ณต์ฌํ๋ ๋ฐฉ์์ธ๋ฐ, ์ธ๊ทธ๋จผํธ์ ๋ณต์ฌ๋ ๋ฉ๋ชจ๋ฆฌ ๋ถํ์ ์๊ฐ๋ณต์ก๋๊ฐ ๋งค์ฐ ํฐ ์ฐ์ฐ์ด๋ผ ์ฝ์คํธ๊ฐ ์๋นํ๋ค.
ํ๊ฐ์ง ๋์๋ฐฉ๋ฒ์ผ๋ก๋ ๋น ๊ณต๊ฐ ๋ฆฌ์คํธ๋ฅผ ๊ด๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฐ๋ ๊ฒ์ด๋ค.
Next chapter