[OS] Operating System(9-2): Main Memory - Paging
๐ ์ด์์ฒด์ ์ ๊ณต ์์ ์ ๋ฆฌ
๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ ๋ ํ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์๋ก ํ ๋นํ๊ณ free์ํค๋ฉด ์ฌ๋ฌ๊ฐ์ง๋ฅผ ํ๋ค
๊ด๋ฆฌ๋ฅผ ์ฝ๊ฒ ํ๋ ค๋ฉด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ผํ ๊ท๊ฒฉ์ผ๋ก ์๋ผ๋๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค!
Paging(โญ)
๐Paging: Main memory๋ฅผ ๋์ผํ ๊ท๊ฒฉ์ผ๋ก ์๋ผ์ ๊ทธ ๋จ์๋ก ํ ๋นํ๊ณ ๊ด๋ฆฌํ๋ค
- frames: ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณ ์ ํฌ๊ธฐ๋ก ๋๋ ๋ธ๋ก
- pages: ๋ ผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ frame๊ณผ ๊ฐ์ ํฌํค๋ก ๋๋ ๋ธ๋ก
- page table: ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์๋ฅผ ๋ ผ๋ฆฌ์ ์ธ ์ฃผ์๋ก ๋ฐ๊พธ๊ธฐ ์ํ ๋งคํ table
Address Translation Scheme
page ๋จ์๋ก ์๋ฅธ ์ฃผ์๋ฅผ ๋ณด๋ฉด ์์น์ ๋ํ ์ ๋ณด๊ฐ ๋ด๊ฒจ์๋ค
- Page Number: ๋ ผ๋ฆฌ ์ฃผ์์ ์์ ๋นํธ, page table์ ์ธ๋ฑ์ค๋ก ์ฌ์ฉ
- offset: ๋ ผ๋ฆฌ ์ฃผ์์ ํ์ ๋นํธ, page/frame ๋ด์์์ ์์น
logical address ๊ตฌ์กฐ
page size(offset) = $2^n$
page number = $2^(m-n)$
์ ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ด๊ณ ๋ง์ฝ page size๊ฐ 4KB๋ผ๋ฉด ๊ทธ page ๋ด์ ์์น๋ฅผ ํ์ํ๋ ค๋ฉด 12bits๊ฐ ํ์ํจ ๊ทธ๋ผ 32-bit ์์คํ ์ ๊ฒฝ์ฐ page number = 32 - 12(page offset) = 20bits๊ฐ ๋๋ค
๋ฌผ๋ฆฌ์ฃผ์ = (ํ์ด์งํ
์ด๋ธ[p] ร 2^n) + d
Paging Hardware(โญ)
p|d
์ ๋ฌผ๋ฆฌ์ ๊ณต๊ฐ์ f|d
์ด๊ณ frame f
์ ์ ์ฅ๋๋ค ์ด๊ฑธ ํ๊ธฐ์ํด page table์ด ํ์ํ๋ค
๋ํ ๋ชจ๋ ํ๋ก์ธ์ค๋ ๊ฐ์ page table์ ๊ฐ์ง๊ณ ์๋ค
ํ ํ๋ก์ธ์ค๊ฐ 4๊ฐ์ page๋ฅผ ์ฐ๊ณ ์๋ค ๊ฐ page๊ฐ page table์ ํตํด ๋ ผ๋ฆฌ์ ์ธ ์ฃผ์์์ ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์๋ก ๋งค์นญ๋๋ค
โ ๋์ ๊ณผ์ :
- CPU๊ฐ ๋ ผ๋ฆฌ ์ฃผ์๋ฅผ ์์ฑํ๋ฉด, ์ด๋ฅผ ํ์ด์ง ๋ฒํธ(p)์ ์คํ์ (d)์ผ๋ก ๋ถํ
- ํ์ด์ง ๋ฒํธ๋ฅผ ์ธ๋ฑ์ค๋ก ์ฌ์ฉํ์ฌ ํ์ด์ง ํ ์ด๋ธ์์ ํด๋นํ๋ ํ๋ ์ ๋ฒํธ๋ฅผ ์ฐพ์
- ์ฐพ์ ํ๋ ์ ๋ฒํธ์ ์๋ ์คํ์ ์ ๊ฒฐํฉํ์ฌ ๋ฌผ๋ฆฌ ์ฃผ์ ์์ฑ
- ์์ฑ๋ ๋ฌผ๋ฆฌ ์ฃผ์๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์กํ์ฌ ์ค์ ๋ฐ์ดํฐ์ ์ ๊ทผ
Paging Example
๋ฌผ๋ฆฌ์ฃผ์๋ ๋ ผ๋ฆฌ์ฃผ์๋ณด๋ค ์ปค๋ ์๊ดX
- ๋ ผ๋ฆฌ ์ฃผ์ 4bits = 16๊ฐ์ง ์ฃผ์ ๊ฐ ํํ ๊ฐ๋ฅ(๊ฐ ์ฃผ์๊ฐ 1byte๋ฅผ ๊ฐ๋ฆฌํด)
- page size: 4bytes
Pageing- Internal Fragmentation ๊ณ์ฐ
1
2
3
4
5
6
7
8
Page size = 2,048 bytes (2KB)
Process size = 72,766 bytes
72,766 / 2,048 = 35.52..
โ 36๊ฐ page ํ์
๋๋จธ์ง = 72,766 - 35pages(71,680) = 1,086 bytes(๋ง์ง๋ง 1,086๋ง ์)
โ 2,048 - 1,086 = 962 bytes๋ฅผ ์์!
- Worst case fragmenation = 1 frame - 1 bytes
- Average fragmentation = 1/2 frame size
frame size๋ฅผ ์๊ฒ ํ ์๋ก page table entry๊ฐ ์ฆ๊ฐ ๊ฐ์ฅ ์ธ๊ธฐ์๋ page size๋ 4KB and 8KB
page table์๋ frame ๊ฐ ์ด์ธ์๋ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ์ฅํ ๊ณต๊ฐ์ด ์ถฉ๋ถํด์ผํจ
Free frames
ํ๋ ์ ํ ๋น ๊ณผ์
- ์ ํ๋ก์ธ์ค๊ฐ 4๊ฐ page๋ฅผ ํ์
- ํ ๋น ํ์ free frame์ด 15 ๋ฐ์ ์๋จ์
Implementation of Page Table
- Page-table base register (PTBR): page table์ ์์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ ์ง์คํฐ
- Page-table length register (PTLR): page table์ size๋ฅผ ๋ํ๋ด๋ ๋ ์ง์คํฐ
โ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๋ฌธ์ ์ :
- ๋ชจ๋ data/instruction access๋ฅผ ์์ฒญํ๋ฉด ์ต์ 2๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ์กฐํ๊ฐ ์ผ์ด๋๋ค
- page table์ ์ ๊ทผํ์ฌ ๋ฌผ๋ฆฌ ์ฃผ์ ๋ณํ ์ ๋ณด ํ๋
- ์ค์ data/instruction ์ ๊ทผ
๊ทธ๊ฑธ ํด๊ฒฐํ๊ธฐ ์ํด Translation look-aside buffers(TBLs)์ด ์๋ค
Translation look-aside buffers(TBLs)
๐Translation look-aside buffers(TBLs): ์ต์ ๋๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ์กฐํ์ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ๋น ๋ฅด๊ฒ ์กฐํํ๊ธฐ ์ํ cache
- ์ต๊ทผ์ ์ฌ์ฉ๋ ํ์ด์ง ๋ณํ ์ ๋ณด๋ฅผ ๋น ๋ฅด๊ฒ ์ ์ฅํจ
- โ ํ์ด์ง ํ ์ด๋ธ์ ๋ค์ ์ ๊ทผํ ํ์ X, ์ฆ์ physical address ํ๋ ๊ฐ๋ฅ
โ ํน์ง:
- ASID(Address Space Identifier)
- ๊ฐ ํ๋ก์ธ์ค๋ฅผ ์๋ณํ๋ ๊ณ ์ ID
- ํ๋ก์ธ์ค ๊ฐ ์ฃผ์ ๊ณต๊ฐ ๋ณดํธ ์ ๊ณต
- ASID๊ฐ ์์ผ๋ฉด context switch ๋๋ง๋ค TLB๋ฅผ ๋ชจ๋ ๋น์์ผ ํจ (
flush
)
- TLB ํฌ๊ธฐ์ ์ฑ๋ฅ
- ์ผ๋ฐ์ ์ผ๋ก 64~1024๊ฐ์ ์ํธ๋ฆฌ
- ์์ง๋ง ๋งค์ฐ ๋น ๋ฅธ ์ ๊ทผ ์๋
- Intel Core i7 ์์:
L1 instruction TLB(128๊ฐ) + L1 data TLB(64๊ฐ) + L2 TLB(512๊ฐ)
- ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ธฐ๋ ํจ
- Replacement Policy
- TLB๊ฐ ๊ฐ๋ ์ฐฐ ๋ ์ด๋ค entry๋ฅผ ์ ๊ฑฐํ ์ง ๊ฒฐ์
LRU
,FIFO
,Random
๋ฑ์ ์ ์ฑ ์ฌ์ฉ- ์ผ๋ถ ์ํธ๋ฆฌ๋ โwired downโ ๊ฐ๋ฅ (์๊ตฌ ๋ณด์กด)
TLB hardware
Associative Memory (์ฐ๊ด ๋ฉ๋ชจ๋ฆฌ) - ๋ณ๋ ฌ ๊ฒ์ ๊ฐ๋ฅ
- ๋ชจ๋ ์ํธ๋ฆฌ๋ฅผ ๋์์ ๊ฒ์
- ํ์ด์ง ๋ฒํธ๊ฐ ์ผ์นํ๋ ์ํธ๋ฆฌ๋ฅผ ์ฆ์ ์ฐพ์๋
- TLB Hit: ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ 1ํ(๋งค์ฐ ๋น ๋ฆ)
- TLB Miss: ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ 2ํ(์๋์ ์ผ๋ก ๋๋ฆผ)
Effective Access Time(EAT)
๐Effective Access Time(EAT): TLB์ ์ ์ค๋ฅ ์ ๊ณ ๋ คํ ์ค์ ํ๊ท ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๊ฐ
๐EAT ๊ณ์ฐ ๊ณต์
1
EAT = (Hit Rate ร Hit Time) + (Miss Rate ร Miss Time)
80% hit ratio
์ ์์คํ
์ด ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด 10ns
๊ฐ ๊ฑธ๋ฆฐ๋ค ๊ฐ์ :
- Hit ์๊ฐ:
10ns
- Miss ์๊ฐ:
20ns
- ์ ์ค๋ฅ :
80%
- EAT = 0.80 x 10 + 0.20 x 20 = 12ns
์ฑ๋ฅ ์ ํ 20%
- ๋ง์ฝ ๊ณ ์ฑ๋ฅ ์์คํ
์ด๋ผ
99% hit ratio
๋ผ๋ฉด - EAT = 0.99 x 10 + 0.01 x 20 = 10.1ns
- ์ฆ, ์ฑ๋ฅ ์ ํ๊ฐ 1%์ ๋ถ๊ณผํจ
Memory Protection
๐Memory Protection: ํ๋ก์ธ์ค๊ฐ ํ์ฉ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ๊ทผํ๋ ๊ฒ์ ๋ฐฉ์ง
- protection bit๋ฅผ ์ด์ฉํจ!
read-only
read-wirte
execute-only
๋ฑ์ด ์์
page table์์ ์ํธ๋ฆฌ ์กด์ฌ์ฌ๋ถ๋ฅผ ํ์ธํ ๋ Valid/Invalid bit ๋๋ page-table length register(PTLR) ์ด์ฉ!
1(valid)
: ํ์ด์ง๊ฐ ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ์ ์ํจ0(invalid)
: ํ ๋น๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ
Shared Pages
๐Shared Pages: reentrant(์ฌ์ง์
๊ฐ๋ฅ) code, ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ค์ , ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์ ์ฌ์ฉ ๊ฐ๋ฅ
(ex: text editors, compilers, shared libraries)
- ๊ฐ๋ณ ์ฝ๋ ๋ฐ ๋ฐ์ดํฐ(shared data):๊ฐ ํ๋ก์ธ์ค๋ณ ๋ ๋ฆฝ์ ์ธ ์ฌ๋ณธ, read-write ๊ฐ๋ฅ (ex: ์ ์ญ ๋ณ์, ์ ์ ๋ณ์)
โ Reentrancy์ ์ค์์ฑ:
1
2
3
4
5
6
7
8
9
10
11
12
// โ ์ฌ์ง์
๋ถ๊ฐ๋ฅํ ํจ์ (์ ์ญ ๋ณ์ ์ฌ์ฉ)
static int counter = 0;
int bad_function() {
counter++; // ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์ ํธ์ถ ์ ๋ฌธ์ !
return counter;
}
// โ
์ฌ์ง์
๊ฐ๋ฅํ ํจ์ (์ง์ญ ๋ณ์๋ง ์ฌ์ฉ)
int good_function(int input) {
int local_var = input * 2; // ์์ ํจ
return local_var;
}
Structure of the Page Table
์ฐ๋ฆฌ๊ฐ ์์์ ์์๋ณธ page table์๋ ๋ฌธ์ ๊ฐ ์๋ค.
32-bit ์์คํ ์์ 4KB ํ์ด์ง๋ฅผ ์ฌ์ฉํ๋ค ๊ฐ์ :
- ์ ์ฒด ์ฃผ์ ๊ณต๊ฐ: %2^32% = 4GB
- ํ์ด์ง ํฌ๊ธฐ: 4KB = 2ยนยฒ
- ์ด ํ์ด์ง ์: 2ยณยฒ/2ยนยฒ = 2ยฒโฐ = 1,048,576๊ฐ
- ํ์ด์ง ํ ์ด๋ธ ์ํธ๋ฆฌ: ๊ฐ 4bytes
- ํ์ด์ง ํ ์ด๋ธ ํฌ๊ธฐ: 4 ร 2ยฒโฐ = 4MB
โ๋ฌธ์ ์ :
- ํ๋ก์ธ์ค๋ง๋ค 4MB์ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ด์ง ํ ์ด๋ธ์ฉ์ผ๋ก ํ์
- ํ์ง๋ง ๋๋ถ๋ถ์ ํ๋ก์ธ์ค๋ ์ ์ฒด ์ฃผ์ ๊ณต๊ฐ์ ์ฌ์ฉ X(์ฆ, ๊ณต๊ฐ๋ญ๋น)
- ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์ํฉ์์๋ ํฐ ๋ถ๋ด
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ 3๊ฐ์ง:
- Hierarchical Paging
- Hashed Page Tables
- Inverted Page Tables
Hierarchical Paging
๐Hierarchical Paging: page table์ paging ํ๋ ๊ฒ!
Two-Level Paging Example
4KB page size์ 32-bit ์์คํ ์์ ๋ ผ๋ฆฌ ์ฃผ์์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์:
- ์ ์ฒด ์ฃผ์ ๊ณต๊ฐ: 2^32 bytes(4GB)
- page number = 20-bits โ 2^20 ๊ฐ
page offset(ํ์ด์ง ํฌ๊ธฐ) = 4KB (12-bits โ 2^12bytes)
- page number, ์ฆ ํ์ด์ง๋ฅผ ๋ค์ ๋๋:
1
2
32-bit logical address = [10bits][10bits][12bits]
pโ pโ d
pโ
(10bits): Outer Page Table ์ธ๋ฑ์คpโ
(10bits): Inner Page Table ๋ด์์์ ์คํ์ d
(12bits): ํ์ด์ง ๋ด ์คํ์
โ ๋ณํ ๊ณผ์ :
- pโ์ผ๋ก Outer Page Table์์ Inner Page Table ์ฃผ์ ์ฐพ๊ธฐ
- pโ๋ก Inner Page Table์์ ๋ฌผ๋ฆฌ ํ๋ ์ ๋ฒํธ ์ฐพ๊ธฐ
- ํ๋ ์ ๋ฒํธ + d๋ก ์ต์ข ๋ฌผ๋ฆฌ ์ฃผ์ ์์ฑ
Three level Paging Example
4KB page size์ 64-bit ์์คํ ์์ ๋ ผ๋ฆฌ ์ฃผ์์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์:
- ์ ์ฒด ์ฃผ์ ๊ณต๊ฐ: 2^64 bytes
- page offset: 4KB =
2^12bytes
- page number: 2^64 / 2^12 =
2^52
๊ฐ ํ์ด์ง - page table entry:
8 bytes
(64-bit ํฌ์ธํฐ) - page table size: 2^52 x 8 = 2^55 bytes =
32 Petabytes
โ ํ๋ก์ธ์ค๋น 32PB์ ํ์ด์ง ํ ์ด๋ธ ํ์!(ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅ)
2-level ์๋
pโ
(Outer Page): 42bitspโ
(Inner Page): 10bitsd
(Offset): 12bits- Outer page table size: 2^42 x 8 = 2^45 =
32TB
- ์ฌ์ ํ ๋๋ฌด ํผ!
3-level ํด๊ฒฐ์ฑ
pโ
(2nd Outer): 32bitspโ
(Outer): 10bitspโ
(Inner): 10bitsd
(Offset): 12bits- 2nd Outer Page Table: 2^32 ร 8 bytes = 2^35 bytes = 32GB
- ํ์ง๋ง ์ฌ์ ํ 32GB๋ ํฌ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํ์๋ 4ํ๋ก ์ฆ๊ฐํจ
intel์ 9bits์ฉ 4๊ณ์ธต์ผ๋ก ๋๋ ์ 64bit ์ค 36bit + offset 12bit๋ง ์ฌ์ฉํ๋ค
1
2
3
4
5
6
7
- 64๋นํธ ์ค 48๋นํธ๋ง ์ฌ์ฉ
- ๊ฐ์ ์ฃผ์ ๊ณต๊ฐ: 2^48 = 256TB (์ถฉ๋ถํ ํผ)
- 4-Level ํ์ด์ง ์ฌ์ฉ
48-bit ๊ตฌ์กฐ: [9][9][9][9][12]
PML4 โ PDP โ PD โ PT โ Offset
๊ฐ ๋ ๋ฒจ๋น 512๊ฐ ์ํธ๋ฆฌ (2^9)
Hashed Page Table
๐Hashed Page Table: ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์คํ ์์ ๊ฐ์ ํ์ด์ง ๋ฒํธ๋ฅผ ๋ฌผ๋ฆฌ์ ํ๋ ์ ๋ฒํธ๋ก ๋ณํ
- ์ผ๋ฐ์ ์ผ๋ก 32bit๋ณด๋ค ํฐ ์ฃผ์ ๊ณต๊ฐ์์ ์ฌ์ฉ๋จ
โ ์๋์๋ฆฌ:
- hash ํจ์ ์ฌ์ฉ: ๊ฐ์ ํ์ด์ง ๋ฒํธ๋ฅผ ํด์ ํจ์ h(p)์ ์ ๋ ฅํ์ฌ ํด์ ํ ์ด๋ธ์ ์ธ๋ฑ์ค๋ฅผ ๊ณ์ฐ
- chain ๊ตฌ์กฐ: ๊ฐ์ ํด์ ๊ฐ์ ๊ฐ๋ ์ฌ๋ฌ ํ์ด์ง๋ค์ ์ฒด์ธ ํํ๋ก ์ ์ฅ๋จ
- ๊ฐ ์ํธ๋ฆฌ๋ 3๊ฐ์ง ์ ๋ณด๋ฅผ ํฌํจ:
- Virtual Page Number
- Physical Frame Number
- ๋ค์ ์ํธ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํค๋ Pointer
โ ์๋ ๊ณผ์ :
- ํด์ฑ ๊ณผ์ : ๊ฐ์ ํ์ด์ง ๋ฒํธ(Virtual Page Number)๋ฅผ ํด์ ํจ์(
h(p)
)์ ์ ๋ ฅ โ hash table์ ์ธ๋ฑ์ค ๊ณ์ฐ - ์ฒด์ธ ๊ฒ์: ํด์๋ ์์น์์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ํํ๋ก ์ ์ฅ๋ ์ํธ๋ฆฌ๋ค์ ์์ฐจ ๊ฒ์
- ๋งค์นญ: ์ฐพ๋ ๊ฐ์ ํ์ด์ง ๋ฒํธ์ ์ผ์นํ๋ ์ํธ๋ฆฌ ๋ฐ๊ฒฌ ์ ๋ฌผ๋ฆฌ ํ๋ ์ ๋ฒํธ ๋ฐํ โ ๋ฌผ๋ฆฌ ์ฃผ์ ์์ฑ
- page number = hash function
- h(p)๊ฐ hash table์ ๋งค์นญ์ด ๋๋์ง ํ์ธํจ
์ ์์์์๋ p์ q๋ ๊ฐ์ hash table์ ์กด์ฌํ๋ ๊ฒ์ ์ ์ ์์
- Clustered Page Tables
- 64-bit system์์๋ ๊ฐ ์ํธ๋ฆฌ๊ฐ ์ฌ๋ฌ ํ์ด์ง(์: 16๊ฐ)๋ฅผ ์ฐธ์กฐํ๋ Clustered Page Tables๋ฅผ ์ฌ์ฉํจ
- sparse address space(๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ๊ฐ ๋ถ์ฐ์์ ์ด๊ณ ์ฐ์ฌ๋ ๊ฒฝ์ฐ)์์ ๋งค์ฐ ์ ์ฉ
Inverted page table
์ผ๋ฐ์ ์ผ๋ก page table์ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๋ง๋ค ๊ฐ์ง๊ณ ์๋๋ฐ ๊ทธ๋ฌ๋ค ๋ณด๋ฉด page table์ด frame table๋ณด๋ค ๋ง๊ฒ ๋๋ค
๊ทธ๋์ frame table์ ๊ด๋ฆฌํ์๋ ์ทจ์ง์ table์ด Inverted page table
๐Inverted Page Table:
- ์์คํ ์ ์ฒด์ ๋จ ํ๋์ ํ ์ด๋ธ๋ง ์กด์ฌ
- ๋ฌผ๋ฆฌ์ ํ์ด์ง๋ค์ ์ถ์ (๋ ผ๋ฆฌ ํ์ด์ง๊ฐ ์๋!)
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ์๋ง ๋น๋ก
ํ๋ก์ธ์ค๋ง๋ค ํ์ด์ง ํ ์ด๋ธ์ ๊ฐ์ง์ง ๋ง๊ณ ๋ฌผ๋ฆฌ์ ํ์ด์ง๋ฅผ ์ง์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ`
- hash table ํ์ฉ
(PID, p)
๋ฅผ ํด์ ํจ์์ ์ ๋ ฅํ์ฌ ๊ฒ์ ๋ฒ์๋ฅผ 1๊ฐ ๋๋ ๋ช ๊ฐ์ ์ํธ๋ฆฌ๋ก ์ ํ- โ TLB์ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋์ฑ ๋น ๋ฅธ ์ ๊ทผ ๊ฐ๋ฅ
โ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌํ์ด ์ด๋ ต๋ค
โ ํ๋์ ๋ฌผ๋ฆฌ์ ์ฃผ์์ ํ๋์ ๊ฐ์๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ง ๋งคํ๋๊ธฐ ๋๋ฌธ์
- ๋๊ตฌ์ page์ธ์ง๋ฅผ ์๊ธฐ ์ํด
pid
์ ๋ณด๋ ๊ฐ์ด ๋ค์ด๊ฐ๋ค- ์ฆ, ์ด๋ค ํ๋ก์ธ์ค(pid)์ ํ์ด์ง(p)๊ฐ i๋ฒ์งธ ํ๋ ์์ ํ ๋น ๋์ด์์์ ์ ์ ์๋ค
- ๊ทธ๋์ ํ๋ก์ธ์ค๋ง๋ค page๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ค์ด๋ ๋ค