8. Memory Management(1)
Background
- ํ๋ก๊ทธ๋จ์ ๋์คํฌ์์ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ถ๋ฌ์จ ํ, ํ๋ก์ธ์ค ๋ด์ ์์นํด์ผ ์คํ๋ ์ ์์
- main memory์ register๋ง์ด CPU๊ฐ ์ง์ ์ ๊ทผ ๊ฐ๋ฅํ ์ ์ฅ ์ฅ์น์
- register ์ ๊ทผ์ CPU clock cycle 1ํ (๋๋ ๊ทธ ์ดํ)
- main memory ์ ๊ทผ์ ์ฌ๋ฌ cycle์ด ์์๋ ์ ์์
- cache๋ main memory์ CPU register ์ฌ์ด์ ์์น
- ์ฌ๋ฐ๋ฅธ ๋์์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ๊ฐ ํ์ํจ
Multistep Processing of a User Program
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์์ ์คํ๋๊ธฐ ์ ๊น์ง ์ฌ๋ฌ ๋จ๊ณ๋ฅผ ๊ฑฐ์นจ
source program
โ (compiler ๋๋ assembler)
object module
โ (linker ๋๋ linkage editor)
executable module
โ (loader)
memory image
โ
์คํ
Process in Memory: Address Space
max
+--------+
| stack |
+--------+
| heap |
+--------+
| data |
+--------+
| text |
+--------+
0
Binding of Instructions and Data to Memory
Compile time binding
- ์ด ์์ ์ ๊ฐ symbol์ ์ ๋ ์ฃผ์๊ฐ ๊ฒฐ์ ๋์ด์ผ ํจ
- ์ ๋ ์ฃผ์๋ฅผ ํฌํจํ absolute code๊ฐ ์์ฑ๋จ
- ์์ ์์น๊ฐ ๋ฐ๋๋ฉด ์ฝ๋๋ฅผ ๋ค์ ์ปดํ์ผํด์ผ ํจ
Load time binding
- loader๊ฐ ๊ฐ symbol์ ๋ํ ์ ๋ ์ฃผ์๋ฅผ ํ ๋น
- compiler๋ ์๋ ์ฃผ์๋ฅผ ํฌํจํ relocatable code๋ฅผ ์์ฑํจ
Execution time binding
- ์คํ ์ค์ผ ๋, ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ด ์์น๋ฅผ ๋ณ๊ฒฝํ ๊ฒฝ์ฐ ์ฌ์ฉ๋จ
- CPU๊ฐ ์ฃผ์๋ฅผ ์์ฑํ ๋๋ง๋ค ์ฃผ์ ๋ณํ(address mapping)์ด ํ์
- ํ๋์จ์ด ์ง์ ํ์ (์: base and limit register, MMU)
Address Mapping Table
CPU
๋
ผ๋ฆฌ์ ์ฃผ์ (logical) โ ๋ฌผ๋ฆฌ์ ์ฃผ์ (physical)
--------------------- -------------------------
0๋ฒ์ง โ 500๋ฒ์ง
500๋ฒ์ง โ 20000๋ฒ์ง
CPU๊ฐ ์ ์ํ ์ฃผ์ = ๋
ผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๋ด ์ฃผ์
์ค์ ๋ฉ๋ชจ๋ฆฌ์์์ ์์น = ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๋ด ์ฃผ์
์: ๋
ผ๋ฆฌ ์ฃผ์ 500
โ ๋ฌผ๋ฆฌ ์ฃผ์ 20500
Base and Limit Registers
- ๋ฌผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ base register์ limit register์ ์์ผ๋ก ์ ์๋จ
0 โ
โ operating system
256000 โ
300040 โ process โ base
409240 โ
880000 โ process
1024000 โ โ limit
Logical vs. Physical Address Space
๋ ผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ(logical address space) ๊ฐ๋ ์ ๋ฌผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ(physical address space)๊ณผ ๋ถ๋ฆฌ๋์ด ์์ผ๋ฉฐ, ์ด๋ ์ ์ ํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ํต์ฌ์
Logical address
- CPU์ ์ํด ์์ฑ๋จ
- virtual address๋ผ๊ณ ๋ ๋ถ๋ฆผ
Physical address
- ๋ฉ๋ชจ๋ฆฌ ์ฅ์น์ ์ํด ์ธ์๋๋ ์ฃผ์
๋ ผ๋ฆฌ ์ฃผ์์ ๋ฌผ๋ฆฌ ์ฃผ์๋ ์ปดํ์ผ ์๊ฐ๊ณผ ์ ์ฌ ์๊ฐ ๋ฐ์ธ๋ฉ์์๋ ๋์ผํจ
์คํ ์๊ฐ ๋ฐ์ธ๋ฉ์์๋ ์๋ก ๋ค๋ฆ
Memory-Management Unit (MMU)
MMU (Memory-Management Unit)
- ๋ ผ๋ฆฌ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณํํด์ฃผ๋ ํ๋์จ์ด ์ฅ์น
MMU ๋ฐฉ์
- relocation register์ ๊ฐ์ CPU์์ ์ ๋ฌ๋ ๋ชจ๋ ์ฃผ์์ ๋ํ ํ ๋ฉ๋ชจ๋ฆฌ์ ๋ณด๋
[ CPU ]
โ
โผ
โโโโโโโโโโโโโโโ
โ logical addrโ โโโโโโ
โ = 346 โ โ
โโโโโโโโโโโโโโโ โผ
โโโโโโโโโโโโโโโโโโ
โ relocation reg โ = 14000
โโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโ
โ physical addrโ = 14346
โโโโโโโโโโโโโโโโ
โ
โผ
[ memory ]
- ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ๋ ผ๋ฆฌ ์ฃผ์๋ง ๋ค๋ฃจ๋ฉฐ, ๋ฌผ๋ฆฌ ์ฃผ์๋ ์ง์ ์ ๊ทผํ์ง ์์
Swapping necessitates dynamic relocation
Swapping
- ํ๋ก์ธ์ค๋ ์ผ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์์ backing store๋ก ์ค์๋จ
- ์ดํ ๋ค์ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ณต๊ท๋จ
Backing store
- ๋ชจ๋ ์ฌ์ฉ์ ๋ฉ๋ชจ๋ฆฌ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ ์ ์์ ๋งํผ ํฐ ๊ณ ์ ๋์คํฌ
- ์ฌ์ฉ์๋ค์ด ์ง์ ์ ๊ทผํ ์ ์์ด์ผ ํจ
์ค์์์ ๊ฐ์ฅ ํฐ ๋น์ค์ ์ฐจ์งํ๋ ๊ฒ์ ์ ์ก ์๊ฐ
- ์ด ์ ์ก ์๊ฐ์ ์ค์๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ ๋น๋กํจ
Contiguous Allocation
์ฃผ๊ธฐ์ต์ฅ์น๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ํํฐ์ ์ผ๋ก ๋๋จ:
- Resident OS: interrupt vector๊ฐ ์๋ low memory์ ์์น
- User process๋ high memory์ ์์น
์ฌ์ฉ์ ํ๋ก์ธ์ค๋ฅผ ๋ณดํธํ๊ธฐ ์ํด:
- Relocation register: ๊ฐ์ฅ ์์ ๋ฌผ๋ฆฌ ์ฃผ์ ๊ฐ์ ๊ฐ์ง
- Limit register: ๋
ผ๋ฆฌ ์ฃผ์ ๋ฒ์๋ฅผ ๊ฐ์ง
- ๊ฐ ๋ ผ๋ฆฌ ์ฃผ์๋ limit register๋ก ๊ฒฝ๊ณ ์ค์ ๋จ
โโโโโโโโโโโโโโ
โ OS โ โ low memory
โโโโโโโโโโโโโโ
โโโโโโโโโโโโโโ
โ user proc. โ โ high memory
โโโโโโโโโโโโโโ
Hardware Support for Relocation and Limit Registers
- ํ๋์จ์ด๋ relocation๊ณผ limit register๋ฅผ ์ฌ์ฉํ์ฌ ์ฃผ์๋ฅผ ๋ณํํจ
[ CPU ]
โ
โผ
โโโโโโโโโโโโโโ
โ logical addrโ
โโโโโโฌโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโ
โ limit registerโ
โโโโโโฌโโโโโโโโโโ
โผ (๋น๊ต)
logical < limit ?
โ
โโโดโโโโโโโโโโโโโ
โ yes โโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโ โผ
โโโโโโโโโโโโโโโโ
โ relocation โ
โ register โ
โโโโโโฌโโโโโโโโโโ
โผ
[ + ] (ํฉ์ฐ)
โผ
โโโโโโโโโโโโโโโโ
โ physical addrโ
โโโโโโฌโโโโโโโโโโ
โผ
[ memory ]
no
โ
โผ
trap: addressing error
Contiguous Allocation (Cont.)
- Hole: ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก
- ๋ค์ํ ํฌ๊ธฐ์ hole(๋น ๊ณต๊ฐ)์ ๋ฉ๋ชจ๋ฆฌ ์ ๋ฐ์ ํฉ์ด์ ธ ์์
- ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ๋ฉด, ํด๋น ์์ฒญ์ ์์ฉํ ์ ์๋ ํฌ๊ธฐ์ hole์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋จ
- ์ด์์ฒด์ ๋ ๋ค์ ์ ๋ณด๋ฅผ ์ ์งํจ:
- a) ํ ๋น๋ ๊ณต๊ฐ
- b) ๋น ๊ณต๊ฐ (hole)
Dynamic Storage-Allocation Problem
์์ฒญ ํฌ๊ธฐ
n
์ ์ถฉ์กฑ์ํค๊ธฐ ์ํด hole ๋ฆฌ์คํธ์์ ์ด๋ป๊ฒ ํ ๋นํ ๊ฒ์ธ๊ฐFirst-fit
- ์ถฉ๋ถํ ํฐ ์ฒซ ๋ฒ์งธ hole์ ํ ๋น
Best-fit
- ์ถฉ๋ถํ ํฐ ๊ฐ์ฅ ์์ hole์ ํ ๋น
- ์ ์ฒด ๋ฆฌ์คํธ๋ฅผ ํ์ํด์ผ ํจ (์ ๋ ฌ๋ ๊ฒฝ์ฐ ์์ธ)
- ๋ง์ ์์ leftover hole์ ์์ฑํจ
Worst-fit
- ๊ฐ์ฅ ํฐ hole์ ํ ๋น
- ์ญ์ ์ ์ฒด ๋ฆฌ์คํธ๋ฅผ ํ์ํด์ผ ํจ
- ๊ฐ์ฅ ํฐ leftover hole์ ์์ฑ
์ ์ฅ ๊ณต๊ฐ ํ์ฉ ์ธก๋ฉด์์ First-fit ๋ฐ Best-fit์ด Worst-fit๋ณด๋ค ๋ ํจ์จ์ ์
Fragmentation
External fragmentation
- ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์์ฒญ์ ๋ง์กฑํ ์ ์์ ๋งํผ ์์ง๋ง, ์ฐ์์ ์ด์ง ์์
Internal fragmentation
- ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ ์ค์ ์์ฒญ๋ณด๋ค ์ฝ๊ฐ ํด ์ ์์ โ ์ด ํฌ๊ธฐ ์ฐจ์ด๊ฐ internal fragmentation (ํํฐ์ ๋ด๋ถ ๋ฉ๋ชจ๋ฆฌ์ด๋ ์ฌ์ฉ๋์ง ์์)
์ธ๋ถ ๋จํธํ๋ฅผ ์ค์ด๋ ๋ฐฉ๋ฒ: compaction
- ๋ฉ๋ชจ๋ฆฌ ๋ด ๋ด์ฉ์ ์์ด ๋ชจ๋ ๋น ๊ณต๊ฐ์ ํ๋์ ํฐ ๋ธ๋ก์ผ๋ก ๋ง๋ฆ
- ๋จ, relocation์ด ๋์ ์ผ๋ก ๊ฐ๋ฅํ๊ณ ์คํ ์๊ฐ์ ์ํ๋ ๊ฒฝ์ฐ์๋ง compaction ๊ฐ๋ฅ
Paging
Paging
- ์ฃผ์ ๊ณต๊ฐ์ ๋น์ฐ์์ ์ผ๋ก ๋ง๋ค ์ ์๊ฒ ํ๋ ์คํด
๊ธฐ๋ณธ ๋ฐฉ์
- ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณ ์ ํฌ๊ธฐ ๋ธ๋ก(frame) ์ผ๋ก ๋๋
(ํฌ๊ธฐ๋ 2์ ์ ๊ณฑ์, 512B ~ 8MB) - ๋ ผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ ํฌ๊ธฐ์ ๋ธ๋ก(page) ์ผ๋ก ๋๋
- ๋ชจ๋ frame์ ์ํ๋ฅผ ์ถ์
- ํ๋ก๊ทธ๋จ ์คํ ์,
n
๊ฐ์ ํ์ด์ง์ ๋ํดn
๊ฐ์ ๋น frame๊ณผ page table์ด ํ์ - ํ์ด์ง ํ ์ด๋ธ์ ํตํด ๋ ผ๋ฆฌ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณํ
- ๋ด๋ถ ๋จํธํ๋ ์์ผ๋ ์ธ๋ถ ๋จํธํ๋ ์์
- ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณ ์ ํฌ๊ธฐ ๋ธ๋ก(frame) ์ผ๋ก ๋๋
Paging
max
โ
โผ
โโโโโโโโโโโโโโ
โ stack โ
โโโโโโโโโโโโโโค
โ ... โ โ pages
โโโโโโโโโโโโโโค
โ heap โ
โโโโโโโโโโโโโโค
โ data โ
โโโโโโโโโโโโโโค
โ text โ
โโโโโโโโโโโโโโ
Process Address Space
โ
โผ
โโโโฌโโโฌโโโฌโโโฌโโโฌโโโฌโโโ
โ โ โ โ โ โ โ โ โ (page) frames
โโโโดโโโดโโโดโโโดโโโดโโโดโโโ
Physical Memory
Address Translation Scheme in Paging
CPU๊ฐ ์์ฑํ๋ ์ฃผ์๋ ๋ค์ ๋ ๋ถ๋ถ์ผ๋ก ๋๋จ:
Page number (p)
โ ํ์ด์ง ํ ์ด๋ธ์์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ ํ์ด์ง์ ํด๋นํ๋ base address๋ฅผ ์ฐพ๋ ์ธ๋ฑ์ค๋ก ์ฌ์ฉ๋จPage offset (d)
โ base address์ ๋ํด ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ฃผ์๋ฅผ ๊ฒฐ์
์ฃผ์ ๊ตฌ์กฐ:
page number page offset
โโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โ p โ d โ
โโโโโโโโโดโโโโโโโโโโโโโโโโโ
(m-n)๋นํธ n๋นํธ
- ๋
ผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ด $2^m$์ผ ๋, ํ์ด์ง ํฌ๊ธฐ๊ฐ $2^n$์ด๋ฉด
Address Translation Architecture
CPU
โ
โโโโโโโโโโโโโโโ
โ logical addrโ
โโโโโโฌโโโโโโโโโ
โ
โโโโโโโโโโโโโโโ
โ Page Table โ
โโโโโโฌโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโ
โ physical addrโ
โโโโโโโโโโโโโโโโ
โ
Physical Memory
Paging Example
Page Number = 2 / 4 = 0
Offset = 2 % 4 = 2
Logical address (m): 4๋นํธ
Page number (m-n): 2๋นํธ
Offset (n): 2๋นํธ
4๋ฐ์ดํธ ํ์ด์ง โ n = 2๋นํธ
Free Frames
- (a) ํ ๋น ์
free-frame list: 18 3 14 9 6 ...
new process: page 0, page 1
- (b) ํ ๋น ํ
free-frame list: 13 8 10 ...
new process:
page 0 โ frame 14
page 1 โ frame 9
Implementation of Page Table
ํ์ด์ง ํ ์ด๋ธ์ ์ฃผ๊ธฐ์ต์ฅ์น์ ์ ์ฅ๋จ
- Page-table base register (PTBR): ํ์ด์ง ํ ์ด๋ธ์ ๊ฐ๋ฆฌํด
- Page-table length register (PTLR): ํ ์ด๋ธ์ ํฌ๊ธฐ๋ฅผ ๋ํ๋
๋ฌธ์ ์ : ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ๋ง๋ค ๋ ๋ฒ์ ์ ๊ทผ์ด ํ์ํจ
- ํ๋๋ ํ์ด์ง ํ ์ด๋ธ, ๋ค๋ฅธ ํ๋๋ ๋ฐ์ดํฐ/๋ช ๋ น์ด ์ ๊ทผ
ํด๊ฒฐ์ฑ : TLB(Translation Look-aside Buffer) ๋๋ Associative memory ์ฌ์ฉ
- ์ผ๋ฐ์ ์ผ๋ก, TLB๋ ์ปจํ ์คํธ ์ ํ ์ ํ๋ฌ์๋จ (์ด์ ํญ๋ชฉ ์ ๊ฑฐ)
- ์ผ๋ถ TLB๋ ASID(Address-Space Identifiers)๋ฅผ ์ ์ฅํ์ฌ ํ๋ฌ์๋ฅผ ํผํจ
โ ๊ฐ ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ ๋ณดํธ ์ง์
Associative Memory (TLB)
๋ ๊ฐ์ง ์ข ๋ฅ์ ๋ฉ๋ชจ๋ฆฌ:
- ์ผ๋ฐ ๋ฉ๋ชจ๋ฆฌ (์: DRAM)
- ์ฃผ์๋ฅผ ์ฃผ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ฐํ
- ์ฐ๊ด ๋ฉ๋ชจ๋ฆฌ (Associative memory)
- ๋ฐ์ดํฐ ์ผ๋ถ๋ฅผ ์ฃผ๋ฉด ์ ์ฒด ๋ ์ฝ๋๋ฅผ ๋ฐํ (ex: ์ ํ๋ฒํธ๋ถ)
- ๋ณ๋ ฌ ํ์ ์์ด๋ ๋๋ฆผ, ๊ตฌํ ๋น์ฉ์ด ํผ
- ์ผ๋ฐ ๋ฉ๋ชจ๋ฆฌ (์: DRAM)
Associative Memory (TLB): ๋ณ๋ ฌ ํ์
โ ํ์ด์ง ํ ์ด๋ธ์ ์ผ๋ถ๋ง TLB์ ์ ์ฅ๋จ์ฃผ์ ๋ณํ ๊ณผ์ (p, d)
- ํ์ด์ง ๋ฒํธ p๋ฅผ TLB์์ ๋จผ์ ์ฐพ์
- ์กด์ฌํ๋ฉด ํด๋น frame ๋ฐํ
- ์์ผ๋ฉด ํ์ด์ง ํ ์ด๋ธ์์ frame ๋ฒํธ ๊ฒ์
- ํ์ด์ง ๋ฒํธ p๋ฅผ TLB์์ ๋จผ์ ์ฐพ์
Paging Hardware with TLB
logical address
โ
โโโโโ
โ p โโโโโโ
โโโโโ โ
โ
โโโโโโโโ
โโโโโโถโ TLB โโโโโโ
โ โโโโโโโโ โ
โ โโโโโโโโโโโโโโ
โ โ Page Table โ
โ โโโโโโโโโโโโโโ
โ โ
โโโโโโ โโโโโโโโ
โ d โโโโโโโโโโโโโโถโ + d โ
โโโโโโ โโโโโโโโ
โ
Physical Memory
Effective Access Time
์ฐ๊ด ๋ฉ๋ชจ๋ฆฌ(associative memory) ํ์ ์๊ฐ = ฮฑ time unit
๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๊ฐ = ฮฒ
Hit ratio = ฮต (์ฐ๊ด ๋ฉ๋ชจ๋ฆฌ์์ ์ฐพ์ ๋น์จ)
์ ํจ ์ ๊ทผ ์๊ฐ (EAT: Effective Access Time)
<ํํธ ์> + <๋ฏธ์ค ์>
EAT = (ฮฑ + ฮฒ) * ฮต + (ฮฑ + 2ฮฒ) * (1 โ ฮต)
= ฮฑ + (2 โ ฮต)ฮฒ
Memory Protection
- ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ๋ ๊ฐ frame์ ๋ณดํธ ๋นํธ(protection bit)๋ฅผ ์ฐ๊ฒฐํ์ฌ ๊ตฌํ
- Valid-invalid ๋นํธ: ํ์ด์ง ํ
์ด๋ธ์ ๊ฐ ํญ๋ชฉ์ ํฌํจ
- "valid": ํด๋น ํ์ด์ง๊ฐ ์ ํจ (์ฌ์ฉ ๊ฐ๋ฅํ page)
- ํ๋ก์ธ์ค์ ๋ ผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ํฌํจ๋จ
- "invalid": ์ ๊ทผ์ด ํ์ฉ๋์ง ์์ (ํด๋น ์ฃผ์๋ ๋ถ๋ฒ)
- "valid": ํด๋น ํ์ด์ง๊ฐ ์ ํจ (์ฌ์ฉ ๊ฐ๋ฅํ page)
Valid (v) or Invalid (i) Bit in a Page Table
- ํ์ด์ง ํฌ๊ธฐ = 2KB
- ์ฃผ์ ๋ฒ์: 0 ~ 10468๋ง ์ฌ์ฉ
- ์ด 6๊ฐ ํ์ด์ง๋ง ์ฌ์ฉ๋จ (10469 / 2048 = ์ฝ 6)
- ํ์ด์ง ํ ์ด๋ธ์์๋ 6๊ฐ์ ํญ๋ชฉ๋ง ์ ํจ
- PTLR(Page Table Length Register)์ ์ฌ์ฉํ์ฌ valid-invalid bit ๋์ ์ ํจ์ฑ์ ๊ฒ์ฌํ ์ ์์
logical address โ 00000
โ frame number
โ valid-invalid bit
ํ์ด์ง ํ
์ด๋ธ:
page 0 โ valid
page 1 โ valid
...
page 4 โ valid
page 5 โ valid
page 6 ์ด์ โ invalid
Shared Pages
Shared code
- ์ฝ๊ธฐ ์ ์ฉ (read-only, ์ฌ์ง์ ๊ฐ๋ฅ) ์ฝ๋
- ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๊ณต์ (์: ํ ์คํธ ํธ์ง๊ธฐ, ์ปดํ์ผ๋ฌ, ์๋์ฐ ์์คํ )
- ๊ณต์ ์ฝ๋๋ ๋
ผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ๋์ผํ ์์น์ ์์ด์ผ ํจ
- ๊ณต์ ์ฝ๋์์์ ์๊ธฐ ์ฐธ์กฐ๊ฐ ๊ฐ๋ฅํ๋๋ก ํ๊ธฐ ์ํจ
Private code and data
- ๊ฐ ํ๋ก์ธ์ค๋ ๊ฐ๋ณ ๋ณต์ฌ๋ณธ์ ์ ์ง
- ํด๋น ์ฝ๋๋ ๋ ผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ ๋ด ์์์ ์์น์ ์กด์ฌํ ์ ์์
Shared Pages Example
- ์๋ํฐ๋ 3๊ฐ์ ํ์ด์ง๋ก ๊ตฌ์ฑ (ed1, ed2, ed3)
- ed1~ed3๋ ๊ณต์ ์ฝ๋
- ๋๋จธ์ง ๋ฐ์ดํฐ ํ์ด์ง๋ ํ๋ก์ธ์ค ๋ณ๋ก ๋ถ๋ฆฌ๋จ
process P1:
page table โ ed1
ed2
ed3
data1
data2
process P2:
page table โ ed1
ed2
ed3
data3
process P3:
page table โ ed1
ed2
ed3
...
MemoryManagement-1 ๊ต์๋ ๊ฐ์ ๋ด์ฉ ์์ฝ
Address Binding
- ๋ชจ๋ instruction๊ณผ ํจ์ ์ด๋ฆ์ ์ฃผ์๋ฅผ ๊ฐ์ง
- CPU๋ instruction์ fetch ๋ฐ ์คํํ๋ฉฐ ์ฃผ์ ์ ๋ณด๋ฅผ ํ์๋ก ํจ
- ์ฃผ์๋ฅผ ๊ฒฐ์ ํ๋ ์ฃผ์ฒด๋ compiler
Binding ์ข ๋ฅ
์์ | ์ค๋ช |
---|---|
Compile Time | physical address๋ฅผ ์ง์ ์ฝ๋์ ์ฝ์ (kernel ์ดํ ์ฃผ์๋ถํฐ) |
Load Time | ๋ก๋ฉ ์ physical address๋ฅผ ์ฝ์ |
Execution Time | ์คํ ์ ์ฃผ์ ๋ณํ ์ํ (๊ฐ์ฅ ์ ์ฐ, modern OS์์ ์ฌ์ฉ) |
- Execution Time Binding์์๋ ์ฃผ์๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ณํ
- ์ด ์์ ์ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํด MMU (Memory Management Unit) ์ฌ์ฉ
MMU์ ์ญํ
- Logical Address + Base Address = Physical Address
- ๋ง์ ์ฐ์ฐ๋ง์ผ๋ก ์ฒ๋ฆฌ๋จ (์ค๋ฒํค๋ ๋ฎ์)
- Protection: limit register๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผ ๋ฒ์ ์ ํ
๋ฉ๋ชจ๋ฆฌ ๋จํธํ ๋ฌธ์ ์ Paging ๋์
๋ฌธ์ : External Fragmentation
- ์ฐ์ ํ ๋น ๋ฐฉ์์์๋ ๋น ๊ณต๊ฐ์ด ํํธํ๋์ด ์ฌ์ฉ ๋ถ๊ฐ
- compaction์ ์ฑ๋ฅ ๋น์ฉ ํผ โ ๋นํ์ค์
ํด๊ฒฐ: Paging
- Address space์ memory๋ฅผ ๋์ผํ ํฌ๊ธฐ(page, frame)๋ก ๋ถํ
- page๋ฅผ ๋น frame ์๋ฌด ๊ณณ์๋ ํ ๋น
- Internal Fragmentation: ๋ง์ง๋ง page์์๋ง ๋ญ๋น ๋ฐ์ โ ๋ฌด์ํ ์ ์๋ ์์ค
์ฃผ์ ๋ณํ ๋ฐฉ์
- Logical Address = Page Number + Offset
- ๋ณํ: page number โ frame number (via page table), offset ๊ทธ๋๋ก ์ ์ง
- ์ฃผ์ ๋ณํ์ paging table ์ฌ์ฉ (process๋ง๋ค ํ๋์ฉ ์กด์ฌ)
๋นํธ ๋ถํ ์ ํตํ ํจ์จ์ ์ฃผ์ ๋ณํ
- Page size = 2^n ์ผ ๋
- ํ์ n๋นํธ โ offset
- ์์ ๋นํธ โ page number
- ๋๋์ ๋ถํ์, bit ๋ถํ ๋ก ์ฐ์ฐ ๊ฐ๋ฅ
TLB (Translation Lookaside Buffer)
TLB๋?
- ํ์ด์ง ํ ์ด๋ธ ์ค ์ผ๋ถ๋ฅผ cache์ ์ ์ฅ
- Associative Memory ์ฌ์ฉ
- TLB hit ์: ๋น ๋ฅธ ์ฃผ์ ๋ณํ ๊ฐ๋ฅ (1 memory access)
- TLB miss ์: page table ์ ๊ทผ ํ์ (2 memory access)
Context-Switch์ TLB
- ํ๋ก์ธ์ค ์ ํ ์ TLB๋ invalidate๋์ด์ผ ํจ
- ์ด๊ธฐ์๋ miss ๋ฐ์ํ์ง๋ง locality ๋๋ถ์ ๊ธ๋ฐฉ hit ์ฆ๊ฐ
Effective Access Time ๊ณ์ฐ
- hit ratio: ( \epsilon \ )
- TLB hit: ( \alpha \ ) (access time)
- Memory access: ( \beta \ )
- EAT = ( \epsilon (\alpha + \beta) + (1 - \epsilon)(\alpha + 2\beta) )
TLB์ ์ฅ์
- Locality ๋๋ถ์ hit ratio ๋งค์ฐ ๋์ (ex: 1023/1024)
- ์ฑ๋ฅ ํฅ์์ ๋งค์ฐ ํจ๊ณผ์
Protection
- Valid / Invalid bit ์ฌ์ฉ
- ์ ๊ทผ ๊ฐ๋ฅํ ๋ฒ์๋ง valid๋ก ์ค์
Shared Paging
๊ณต์ ์ ํ์์ฑ
- text section ๋ฑ์ read-only์ด๋ฏ๋ก ๊ณต์ ๊ฐ๋ฅ
- ์๋ก ๋ค๋ฅธ process๋ผ๋ ๊ฐ์ frame์ ๊ฐ๋ฆฌํค๊ฒ ์ค์ ๊ฐ๋ฅ
- ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ ํจ๊ณผ ํผ
Paging์ ๊ณต์ ๊ตฌ์กฐ
- process๋ณ๋ก ๋ ๋ฆฝ๋ page table ์ ์ง
- text section์ entry๋ง ๋์ผ frame ๋ฒํธ๋ฅผ ๊ฐ๋ฆฌํด
๊ฒฐ๋ก
- Paging์ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋ฅ์ผ ํ๋ ํต์ฌ ๊ธฐ๋ฒ
- Overhead((\alpha))๋ ์กด์ฌํ์ง๋ง, ๋ฉ๋ชจ๋ฆฌ ํจ์จ๊ณผ ๊ณต์ ๊ตฌ์กฐ๋ก ์ธํด ์ด๋ฅผ ์์ํจ
- TLB, ๋นํธ ๋ถํ , shared paging ๋ฑ์ผ๋ก ์ฑ๋ฅ ์ต์ ํ ๊ฐ๋ฅ