Table of Contents
๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ํ๋ก์ธ์ค๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃจ๋ ์ฑํฐ๋ก, ๋ณต์กํ ๋งค์ปค๋์ฆ๊ณผ ๊ณ์ฐ์ด ๋์ค๊ธฐ ์์ํด ์กฐ๊ธ ์ด๋ ค์์ง๋ ๋จ๊ณ๋ค.
Background
Ch.1 Overview์์ ์ธ๊ธํ๋ฏ ๋ฉ๋ชจ๋ฆฌ๋ ํ๋ ์ปดํจํฐ ์์คํ ์ ํต์ฌ์ด๋ค. ํ๋ก์ธ์ค๋ ๋ ๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํ๋ฉฐ, ์์คํ ์ ํ๋ก์ธ์ค๊ฐ ์์ ์ ์์ญ ์ธ์๋ ์ ๊ทผํ ์ ์๋๋ก ๋ง์์ผ ํ๋ค.
Basic Hardware
CPU๋ ๋ ์ง์คํฐ๋ฅผ ์ฐธ์กฐํ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ณดํธํ๋ฉฐ, ๋ ์ง์คํฐ ์ ๋ณด๋ PCB์ ๋ด๊ฒจ์๋ค. ์ด๋ ๋ ์ง์คํฐ๋ base์ limit์ผ๋ก ๋๋๋ค. base๋ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ฅ ์์ physical address๋ฅผ ์๋ฏธํ๋ฉฐ, limit์ ์ฌ์ฉํ ์ ์๋ ์ฃผ์์ ๋ฒ์๋ฅผ ์๋ฏธํ๋ค. ์ฆ, ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ฅ ํฐ ์ฃผ์๋ base์ limit์ ํฉ์ด๋ค. ๋ฐ๋ผ์ ์ด๋ค ํ๋ก์ธ์ค์ base๊ฐ 300040์ด๊ณ , limit์ด 120900์ด๋ผ๋ฉด ํ๋ก์ธ์ค๊ฐ ์ ๊ทผํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ฒ์๋ 300040๋ถํฐ, 300040์ 120900๋ฅผ ๋ํ 420940๊น์ง๊ฐ ๋๋ค.
Address Binding
์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ ๋์คํฌ์ binary executable ํ์ผ๋ก ์ ์ฅ๋์ด ์๋ค. ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํด์๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํด ํ๋ก์ธ์ค๋ก ๋ง๋ค์ด์ผ ํ๋ค. ์ด๋ ๋์คํฌ์์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ก๋๋๊ธฐ๋ฅผ ๋๊ธฐํ๋ ๊ณณ์ด input queue๋ค. ์ด์์ฒด์ ๋ input queue์์ ํ๋ก์ธ์ค๋ฅผ ์ ํํด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๋ค.
๋ช ๋ น๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ก bindingํ๋ ์์ ์ binding์ด ๊ตฌ๋ถ๋๋ค.
- Compile time: ๋ง์ฝ compile time์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ ์์น์ ๋ค์ด๊ฐ์ง ๋ฏธ๋ฆฌ ์๊ณ ์๋ค๋ฉด absolute codel๋ฅผ ์์ฑํ ์ ์๋ค. ์์น๊ฐ ๋ณ๊ฒฝ๋๋ค๋ฉด ์ฝ๋๋ฅผ ๋ค์ ์ปดํ์ผํด์ผ ํ๋ค. MS-DOS .COM ํ์ ํ๋ก๊ทธ๋จ์ด ์์๋ค.
- Load time: ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ ์์น์ ๋ค์ด๊ฐ์ง ๋ฏธ๋ฆฌ ์ ์ ์๋ค๋ฉด ์ปดํ์ผ๋ฌ๋ relocatable code๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค. ์ด ๊ฒฝ์ฐ ์ต์ข ๋ฐ์ธ๋ฉ์ ๋ก๋์ ์์ ์๊ฐ๋งํผ ์ง์ฐ๋ ์ ์๋ค.
- Execution time: ํ๋ก์ธ์ค๊ฐ ์คํ ์ค ๋ฉ๋ชจ๋ฆฌ์ ํ ์ธ๊ทธ๋จผํธ์์ ๋ค๋ฅธ ์ธ๊ทธ๋จผํธ๋ก ์ด๋ํ ์ ์๋ค๋ฉด ๋ฐ์ธ๋ฉ์ runtime๊น์ง ์ง์ฐ๋์ด์ผ ํ๋ค.
Logical Versus Physical Address Space
CPU๊ฐ ์์ฑํ๋ logical address์ด๊ณ , ๋ฉ๋ชจ๋ฆฌ์ ์ํด ์ทจ๊ธ๋๋ ์ฃผ์๋ physical address์ด๋ค. compile-time๊ณผ load-time์์ ์ฃผ์๋ฅผ bindingํ ๋๋ logical address์ physical address๊ฐ ๊ฐ๊ฒ ์์ฑ๋๋ ๋ฐ๋ฉด execution-time์์๋ ๋ค๋ฅด๊ฒ ์์ฑ๋๋ค. ์ด ๊ฒฝ์ฐ logical address๋ฅผ virtual address๋ผ๊ณ ํ๋ค. virtual address๋ฅผ physical address๋ก ๋์์ํค๋ ๊ฒ์ ํ๋์จ์ด ๋๋ฐ์ด์ค์ธ MMU(Memory-Management Unit)๊ฐ ํ๋ค.
Swapping
๋ฉ๋ชจ๋ฆฌ๋ ํฌ๊ธฐ๊ฐ ํฌ์ง ์๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค๋ฅผ ์์๋ก ๋์คํฌ์ ๋ณด๋๋ค๊ฐ ๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํด์ผ ํ๋ ์ํฉ์ด ์๊ธด๋ค. ์ด๋ ๋์คํฌ๋ก ๋ด๋ณด๋ด๋ ๊ฒ์ swap out, ๋ฉ๋ชจ๋ฆฌ๋ก ๋ค์ฌ๋ณด๋ด๋ ๊ฒ์ swap in์ด๋ผ๊ณ ํ๋ฉฐ, ์ฐ์ ์์์ ๋ฐ๋ผ ์ด๋ค ํ๋ก์ธ์ค๋ฅผ swap in/outํ ์ง ๊ฒฐ์ ํ๋ค. swapํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋๋ถ๋ถ์ ๋์คํฌ ์ ์ก ์๊ฐ์ด๋ค.
Contiguous Memory Allocation
๋ณดํต ๋ฉ๋ชจ๋ฆฌ๋ ๋ ๊ฐ์ ์์ญ์ผ๋ก ๋๋ ๊ด๋ฆฌ๋๋๋ฐ, low memory์๋ ์ปค๋์, high memory์๋ ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ฅผ ๋ด๋๋ค. ์ด๋ contiguous memory allocation ์์คํ ์์๋ ๊ฐ ํ๋ก์ธ์ค๋ค์ด ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํ๊ฒ ๋๋ค. ํ๋ก์ธ์ค๊ฐ ์์ ์ ๋ฒ์๋ฅผ ๋์ง ๋ชปํ๋๋ก ํ๋ ๊ฒ์ base register์ limit register์ ์ญํ ์ด๋ค.
Memory Allocation
ํ๋ก์ธ์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ ๋๋ ๋จผ์ ๋ฉ๋ชจ๋ฆฌ ์์ ํ๋ก์ธ์ค๋ฅผ ๋ฃ์ ์ ์๋ ๊ณต๊ฐ์ ์ฐพ๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ๋ถํ ํ๋ ๊ฐ ๋จ์๋ block์ด๊ณ , ์ด ์ค ์ฌ์ฉ ๊ฐ๋ฅํ block์ hole์ด๋ผ๊ณ ํ๋ค. ์ด๋ ํ ๋นํ๋๋ฐ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์๋ค.
- First fit: ์ฒซ ๋ฒ์งธ hole์ ํ ๋น
- Best fit: hole ์ค์์ ๊ฐ์ฅ ์์ ๊ณณ์ ํ ๋น
- Worst fit: ๊ฐ์ฅ ํฐ ๊ณณ์ ํ ๋น
ํ์ง๋ง Best fit๋ ๊ทธ๋ฅ ํจ์จ์ด ์ข์ง ์์ ์ด๋ฐ ์์ผ๋ก๋ ์ธ ์ ์๋ค.
Fragmentation
fragmentation์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉํ์ง ๋ชปํ๊ฒ ๋๋ ๊ฒ์ ๋งํ๋ค. (garbage collection์๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.) ์ฌ๋ฌ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ๋ชจ์ต์ ๋๋ต ์๋ ๊ทธ๋ฆผ๊ณผ ๋น์ทํ ๊ฒ์ด๋ค.
+---+----------+----+------+---------+
| | empty | | | empty |
+---+----------+----+------+---------+
๊ฐ block์ ํฌ๊ธฐ๋ฅผ ์์๋๋ก 30k, 60k, 20k, 40k, 60k๋ผ๊ณ ํด๋ณด์. hole์ 60k ๋ ๊ณณ๋ฟ์ด๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ 70k ํ๋ก์ธ์ค๊ฐ ๋ค์ด์์ผ ํ๋ค๋ฉด? ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ 120k๊ฐ ๋น์ด์์ง๋ง ์ด๋์๋ 70k๊ฐ ๋ค์ด๊ฐ ์๋ ์๋ค. ์ด๊ฒ์ external fragmentation์ด๋ผ๊ณ ํ๋ค.
internal fragmentation์ ์ค์ ํ๋ก์ธ์ค ๊ณต๊ฐ๋ณด๋ค ํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ฒ ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์คํ ํจ์จ์ ์ํด ๊ณ ์ ํฌ๊ธฐ์ ์ ์ ๋ฐฐ๋ก ํ ๋น๋๊ธฐ ๋๋ฌธ์ ์๊ธฐ๋ ํ์์ด๋ค.
์ด๋ฐ ๋ฌธ์ ๋ ํ ๋น๋ block์ ํ์ชฝ์ผ๋ก ๋ชฐ์ ํฐ block์ ์์ฑํ๋ compaction์ผ๋ก ํด๊ฒฐํ ์ ์๋ค.
+---+----+------+--------------------+
| | | | empty |
+---+----+------+--------------------+
์ด๋ ๊ฒ ํ๋ฉด 70k ํ๋ก์ธ์ค๋ ๋ค์ด๊ฐ ์ ์๋ค. ํ์ง๋ง ํ๋ก์ธ์ค ํ ๋น์ ์ ๋ง ์์ฃผ ์ผ์ด๋๋ ์ผ์ด๊ธฐ ๋๋ฌธ์ compaction์ฒ๋ผ ์ค๋ฒํค๋๊ฐ ํฐ ์์ ์ ๋งค๋ฒ ํ ์๋ ์๋ค. ๊ณผ๊ฑฐ์๋ ์ด ๋ฐฉ๋ฒ์ ์ผ์ง๋ง ์ด์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ด๋ค.
Segmentation
segmentation์ ํ๋์ ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ ๊ฐ๋ก ๋๋๋ ๊ฒ์ ๋งํ๋ค. segment๋ main, function, method, object ๋ฑ์ ๋ ผ๋ฆฌ์ ๋จ์๋ก, ์ธ๊ฐ์ ๊ด์ ์ผ๋ก ํ๋ก์ธ์ค๋ฅผ ๋๋ ๊ฒ์ด๋ค. ๊ฐ segment์ base์ limit์ segment table์ ์ ์ฅ๋๋ค.
Paging
paging์ segmentation๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ ์กฐ๊ฐ์ผ๋ก ๋๋๋ ๊ฒ์ด๋ค. ๊ทธ๋ฐ๋ฐ ๋จ์ํ ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๋๊ธฐ ๋๋ฌธ์ ๋น์ทํ ์์๋ผ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐ์์ ์ผ๋ก ํ ๋น๋์ง ์๋๋ค. ์ปดํจํฐ ์ ์ฅ์์๋ ํด์ํ๊ธฐ ์ฝ์ง๋ง ์ฌ๋์ด ์ง์ ๊ด๋ฆฌํ๊ธฐ๋ ์ด๋ ต๋ค.
paging์์๋ physical memory์ ๊ฐ block์ frame์ด๋ผ๊ณ ํ๊ณ , logical memory์ ๊ฐ block์ page๋ผ๊ณ ๋ถ๋ฅธ๋ค. frame์ ์๊ฒ ๋๋์๋ก fragment๊ฐ ์ ๊ฒ ์๊ธฐ๋ฉฐ, ์ค์ ๋ก external fragmentation์ ๊ฑฐ์ ์๊ธฐ์ง ์๋๋ค. logical address๋ฅผ physical address๋ก ๋ณํํ๋ page table์ด ํ์ํ๋ค.
Basic Method
CPU์ ์ํด ๋ง๋ค์ด์ง ์ฃผ์๋ page number(p)์ page offset(d) ๋ ๋ถ๋ถ์ผ๋ก ๋๋๋ค. page number๋ page table์ index๋ก์จ page table์ ์ ๊ทผํ ๋ ์ฌ์ฉ๋๋ค. page offset์ physical address๋ฅผ ์ป์ ๋ ์ฐ์ด๋ฉฐ, page table์ base address์ page offset์ ๋ํ๋ฉด physical address๋ฅผ ๊ตฌํ ์ ์๋ค.
Hardware Support
page table์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด ์๋ค. PTBR(Page-Table Base Register)๊ฐ page table์ ๊ฐ๋ฆฌํค๊ณ , PTLR(Page-Table Length Register)๊ฐ page table์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋ฐ๋ผ์ ๋งค๋ฒ ๋ฐ์ดํฐ์ ์ ๊ทผํ ๋๋ง๋ค ํ ๋ฒ์ ๋ฐ์ดํฐ์, ํ ๋ฒ์ page table์ ์ ๊ทผํด์ผ ํ๋ค. ๋ฌผ๋ก ์ด๋ ๋นํจ์จ์ ์ธ ์ผ์ด๊ธฐ ๋๋ฌธ์ ์บ์๊ฐ์ ๊ฒ์ ์ฌ์ฉํด ํด๊ฒฐํ๋ค.
TLB(Translation Look-aside Buffer)๋ ์ฐธ์กฐํ๋ ํ์ด์ง๋ฅผ ๋ด์์ฃผ๋ ์บ์ ์ญํ ์ ํ๋ค. TLB๋ key-value pair๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ acssociative memory์ด๋ฉฐ, CPU๋ page table๋ณด๋ค TLB์ ์ฐ์ ์ ์ผ๋ก ์ฐธ์กฐํ๋ค.
page number๊ฐ TLB์์ ๋ฐ๊ฒฌ๋๋ ๋น์จ์ hit ratio๋ผ๊ณ ํ๋ฉฐ, effective memory-access time์ ๊ตฌํ๋๋ฐ ์ธ ์ ์๋ค.
๋ง์ฝ hit ratio๊ฐ 80%์ด๊ณ , ํ๊ท ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๊ฐ์ด 100 ๋๋ ธ์ด๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐํ๋ค.
Protection
๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด contiguousํ ๊ฒฝ์ฐ limit๋ง ๋น๊ตํด๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ณดํธํ ์ ์์๋ค. ํ์ง๋ง paging์ contiguousํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ด๋ค. page table์ ๊ฐ ํญ๋ชฉ์๋ valid-invalid bit๊ฐ ๋ถ์ด์์ด ๊ทธ ๊ฐ์ด valid๋ผ๋ฉด ํด๋น ํ์ด์ง์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ณ , invalid๋ผ๋ฉด ํด๋น ํ์ด์ง๊ฐ logical address space์ ์ํ์ง ์์ ์ ๊ทผํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
Shared Pages
paging์ ๋ ๋ค๋ฅธ ์ฅ์ ์ ์ฝ๋๋ฅผ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ๋ง์ฝ ์ฝ๋๊ฐ reentrant code(๋๋ pure code)๋ผ๋ฉด ๊ณต์ ๊ฐ ๊ฐ๋ฅํ๋ค. reentrant code๋ runtime ๋์ ์ ๋๋ก ๋ณํ์ง ์๋ ์ฝ๋์ด๋ฉฐ, ๋ฐ๋ผ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ค์ด ๋์์ ๊ฐ์ ์ฝ๋๋ฅผ ์ํํ ์ ์๋ค. ์ด๋ฐ ์์ผ๋ก ๊ณตํต page๋ฅผ ๊ณต์ ํ๋ฉด 12๊ฐ ๋ก๋ํด์ผ ํ ๊ฒ์ 6๊ฐ๋ง ๋ก๋ํด๋ ๋๋ค.
Structure of the Page Table
paging์ ์ง์ ์ ์ฉํ๋ฉด page table์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค. ํ์ด์ง ํ ์ด๋ธ์ ํจ์จ์ ์ผ๋ก ๊ตฌ์ฑํ๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
Hierachial Paging
hierachical paging์ logical address space๋ฅผ ์ฌ๋ฌ ๋จ๊ณ์ page table๋ก ๋ถํ ํ๋ ๊ธฐ๋ฒ์ด๋ค. two-level paging scheme์ด ์์์ธ๋ฐ, page table๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ page table์ ํ๋ ๋ ๋ ์ผ๋ก์จ ๋ชจ๋ ํ์ด์ง๋ฅผ ๋ก๋ํด์ผ ํ๋ ๋ถ๋ด์ ์ค์ผ ์ ์๋ค.
Hashed Page Tables
๋ง๊ทธ๋๋ก hash table์ ์ด์ฉํด page table์ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฒ. address space๊ฐ 32๋นํธ๋ณด๋ค ์ปค์ง๋ฉด hierachial paging์ด ๋นํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ ์ฃผ๋ก ์ด ๋ฐฉ๋ฒ์ ์ด๋ค. virtual page number๋ฅผ hashingํด page table์ ์ฐธ์กฐํ๋ ๋ฐ ์ฌ์ฉํ๋ค. hashed page table์์๋ linked list๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉฐ page number๋ฅผ ๋น๊ตํ๊ณ , ์ผ์นํ๋ฉด ๊ทธ์ ๋์ํ๋ page frame number๋ฅผ ์ป๋๋ค. hash table์ ๊ฒ์์
Inverted Page Tables
์ง๊ธ๊น์ง page table์ ๊ฐ page๋ง๋ค ํ๋์ ํญ๋ชฉ์ ๊ฐ์ก๋ค. inverted page table์ ๋ฉ๋ชจ๋ฆฌ์ frame๋ง๋ค ํ ํญ๋ชฉ์ฉ ํ ๋นํ๋๋ฐ, ์ด๋ ๊ฒ ํ๋ฉด physical frame์ ๋์ํ๋ ํญ๋ชฉ๋ง ์ ์ฅํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์ฌ ์ ๊ฒ ์ฌ์ฉํ๊ฒ ๋๋ค. ๋ค๋ง ํ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ์ ๋ฉ๋ชจ๋ฆฌ๋ inverted page table๊ณผ hased page table์ ๊ฒฐํฉํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋์ด์๋ค.