Post

[OS] Operating System(9-2): Main Memory - Paging

[OS] Operating System(9-2): Main Memory - Paging

๐Ÿ€ ์šด์˜์ฒด์ œ ์ „๊ณต ์ˆ˜์—… ์ •๋ฆฌ

๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž„์˜๋กœ ํ• ๋‹นํ•˜๊ณ  free์‹œํ‚ค๋ฉด ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ํ•œ๋‹ค

๊ด€๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ํ•˜๋ ค๋ฉด ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋™์ผํ•œ ๊ทœ๊ฒฉ์œผ๋กœ ์ž˜๋ผ๋†“๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค!

Paging(โญ)


๐Ÿ“šPaging: Main memory๋ฅผ ๋™์ผํ•œ ๊ทœ๊ฒฉ์œผ๋กœ ์ž˜๋ผ์„œ ๊ทธ ๋‹จ์œ„๋กœ ํ• ๋‹นํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค alt text

  • frames: ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณ ์ • ํฌ๊ธฐ๋กœ ๋‚˜๋ˆˆ ๋ธ”๋ก
  • pages: ๋…ผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ frame๊ณผ ๊ฐ™์€ ํฌํ‚ค๋กœ ๋‚˜๋ˆˆ ๋ธ”๋ก
  • page table: ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์†Œ๋ฅผ ๋…ผ๋ฆฌ์ ์ธ ์ฃผ์†Œ๋กœ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•œ ๋งคํ•‘ table

Address Translation Scheme


page ๋‹จ์œ„๋กœ ์ž๋ฅธ ์ฃผ์†Œ๋ฅผ ๋ณด๋ฉด ์œ„์น˜์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ๋‹ค

  • Page Number: ๋…ผ๋ฆฌ ์ฃผ์†Œ์˜ ์ƒ์œ„ ๋น„ํŠธ, page table์˜ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉ
  • offset: ๋…ผ๋ฆฌ ์ฃผ์†Œ์˜ ํ•˜์œ„ ๋น„ํŠธ, page/frame ๋‚ด์—์„œ์˜ ์œ„์น˜

alt text

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(โญ)

alt text

p|d ์˜ ๋ฌผ๋ฆฌ์  ๊ณต๊ฐ„์€ f|d์ด๊ณ  frame f์— ์ €์žฅ๋œ๋‹ค ์ด๊ฑธ ํ•˜๊ธฐ์œ„ํ•ด page table์ด ํ•„์š”ํ•˜๋‹ค

๋˜ํ•œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ์ž page table์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค

  • Paging Model: alt text

ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ 4๊ฐœ์˜ page๋ฅผ ์“ฐ๊ณ  ์žˆ๋‹ค ๊ฐ page๊ฐ€ page table์„ ํ†ตํ•ด ๋…ผ๋ฆฌ์ ์ธ ์ฃผ์†Œ์—์„œ ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์†Œ๋กœ ๋งค์นญ๋œ๋‹ค

โœ…๋™์ž‘ ๊ณผ์ •:

  1. CPU๊ฐ€ ๋…ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ์ด๋ฅผ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ(p)์™€ ์˜คํ”„์…‹(d)์œผ๋กœ ๋ถ„ํ• 
  2. ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์—์„œ ํ•ด๋‹นํ•˜๋Š” ํ”„๋ ˆ์ž„ ๋ฒˆํ˜ธ๋ฅผ ์ฐพ์Œ
  3. ์ฐพ์€ ํ”„๋ ˆ์ž„ ๋ฒˆํ˜ธ์™€ ์›๋ž˜ ์˜คํ”„์…‹์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ฌผ๋ฆฌ ์ฃผ์†Œ ์ƒ์„ฑ
  4. ์ƒ์„ฑ๋œ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ „์†กํ•˜์—ฌ ์‹ค์ œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ

Paging Example

alt text

๋ฌผ๋ฆฌ์ฃผ์†Œ๋Š” ๋…ผ๋ฆฌ์ฃผ์†Œ๋ณด๋‹ค ์ปค๋„ ์ƒ๊ด€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

alt text

ํ”„๋ ˆ์ž„ ํ• ๋‹น ๊ณผ์ •

  • ์ƒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ 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๋ฒˆ์˜ ๋ฉ”๋ชจ๋ฆฌ ์กฐํšŒ๊ฐ€ ์ผ์–ด๋‚œ๋‹ค
    1. page table์— ์ ‘๊ทผํ•˜์—ฌ ๋ฌผ๋ฆฌ ์ฃผ์†Œ ๋ณ€ํ™˜ ์ •๋ณด ํš๋“
    2. ์‹ค์ œ data/instruction ์ ‘๊ทผ

๊ทธ๊ฑธ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Translation look-aside buffers(TBLs)์ด ์žˆ๋‹ค

Translation look-aside buffers(TBLs)


๐Ÿ“šTranslation look-aside buffers(TBLs): ์ตœ์†Œ ๋‘๋ฒˆ์˜ ๋ฉ”๋ชจ๋ฆฌ ์กฐํšŒ์˜ ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•œ cache

  • ์ตœ๊ทผ์— ์‚ฌ์šฉ๋œ ํŽ˜์ด์ง€ ๋ณ€ํ™˜ ์ •๋ณด๋ฅผ ๋น ๋ฅด๊ฒŒ ์ €์žฅํ•จ
  • โ†’ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ๋‹ค์‹œ ์ ‘๊ทผํ•  ํ•„์š” X, ์ฆ‰์‹œ physical address ํš๋“ ๊ฐ€๋Šฅ

โœ…ํŠน์ง•:

  1. ASID(Address Space Identifier)
    • ๊ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ณ ์œ  ID
    • ํ”„๋กœ์„ธ์Šค ๊ฐ„ ์ฃผ์†Œ ๊ณต๊ฐ„ ๋ณดํ˜ธ ์ œ๊ณต
    • ASID๊ฐ€ ์—†์œผ๋ฉด context switch ๋•Œ๋งˆ๋‹ค TLB๋ฅผ ๋ชจ๋‘ ๋น„์›Œ์•ผ ํ•จ (flush)
  2. TLB ํฌ๊ธฐ์™€ ์„ฑ๋Šฅ
    • ์ผ๋ฐ˜์ ์œผ๋กœ 64~1024๊ฐœ์˜ ์—”ํŠธ๋ฆฌ
    • ์ž‘์ง€๋งŒ ๋งค์šฐ ๋น ๋ฅธ ์ ‘๊ทผ ์†๋„
    • Intel Core i7 ์˜ˆ์‹œ: L1 instruction TLB(128๊ฐœ) + L1 data TLB(64๊ฐœ) + L2 TLB(512๊ฐœ) - ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ธฐ๋„ ํ•จ
  3. Replacement Policy
    • TLB๊ฐ€ ๊ฐ€๋“ ์ฐฐ ๋•Œ ์–ด๋–ค entry๋ฅผ ์ œ๊ฑฐํ• ์ง€ ๊ฒฐ์ •
    • LRU, FIFO, Random ๋“ฑ์˜ ์ •์ฑ… ์‚ฌ์šฉ
    • ์ผ๋ถ€ ์—”ํŠธ๋ฆฌ๋Š” โ€œwired downโ€ ๊ฐ€๋Šฅ (์˜๊ตฌ ๋ณด์กด)
TLB hardware
  • Associative Memory (์—ฐ๊ด€ ๋ฉ”๋ชจ๋ฆฌ) - ๋ณ‘๋ ฌ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ alt text

  • ๋ชจ๋“  ์—”ํŠธ๋ฆฌ๋ฅผ ๋™์‹œ์— ๊ฒ€์ƒ‰
  • ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ์—”ํŠธ๋ฆฌ๋ฅผ ์ฆ‰์‹œ ์ฐพ์•„๋ƒ„

alt text

  • 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๋ฅผ ์ด์šฉํ•จ!
    1. read-only
    2. read-wirte
    3. execute-only ๋“ฑ์ด ์žˆ์Œ
  • page table์—์„œ ์—”ํŠธ๋ฆฌ ์กด์žฌ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ๋•Œ Valid/Invalid bit ๋˜๋Š” page-table length register(PTLR) ์ด์šฉ!

  • 1(valid): ํŽ˜์ด์ง€๊ฐ€ ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์— ์†ํ•จ
  • 0(invalid): ํ• ๋‹น๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

alt text

alt text

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;
}

alt text

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๊ฐ€์ง€:

  1. Hierarchical Paging
  2. Hashed Page Tables
  3. Inverted Page Tables

Hierarchical Paging


๐Ÿ“šHierarchical Paging: page table์„ paging ํ•˜๋Š” ๊ฒƒ!

alt text

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): ํŽ˜์ด์ง€ ๋‚ด ์˜คํ”„์…‹

alt text

โœ…๋ณ€ํ™˜ ๊ณผ์ •:

  1. pโ‚์œผ๋กœ Outer Page Table์—์„œ Inner Page Table ์ฃผ์†Œ ์ฐพ๊ธฐ
  2. pโ‚‚๋กœ Inner Page Table์—์„œ ๋ฌผ๋ฆฌ ํ”„๋ ˆ์ž„ ๋ฒˆํ˜ธ ์ฐพ๊ธฐ
  3. ํ”„๋ ˆ์ž„ ๋ฒˆํ˜ธ + 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 ์‹œ๋„

alt text

  • pโ‚ (Outer Page): 42bits
  • pโ‚‚ (Inner Page): 10bits
  • d (Offset): 12bits
  • Outer page table size: 2^42 x 8 = 2^45 = 32TB
  • ์—ฌ์ „ํžˆ ๋„ˆ๋ฌด ํผ!
3-level ํ•ด๊ฒฐ์ฑ…

alt text

  • pโ‚ (2nd Outer): 32bits
  • pโ‚‚ (Outer): 10bits
  • pโ‚ƒ (Inner): 10bits
  • d (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๋ณด๋‹ค ํฐ ์ฃผ์†Œ ๊ณต๊ฐ„์—์„œ ์‚ฌ์šฉ๋จ

โœ…์ž‘๋™์›๋ฆฌ:

  1. hash ํ•จ์ˆ˜ ์‚ฌ์šฉ: ๊ฐ€์ƒ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ํ•ด์‹œ ํ•จ์ˆ˜ h(p)์— ์ž…๋ ฅํ•˜์—ฌ ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ณ„์‚ฐ
  2. chain ๊ตฌ์กฐ: ๊ฐ™์€ ํ•ด์‹œ ๊ฐ’์„ ๊ฐ–๋Š” ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋“ค์€ ์ฒด์ธ ํ˜•ํƒœ๋กœ ์ €์žฅ๋จ
  3. ๊ฐ ์—”ํŠธ๋ฆฌ๋Š” 3๊ฐ€์ง€ ์ •๋ณด๋ฅผ ํฌํ•จ:
    1. Virtual Page Number
    2. Physical Frame Number
    3. ๋‹ค์Œ ์—”ํŠธ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” Pointer

alt text

โœ…์ž‘๋™ ๊ณผ์ •:

  1. ํ•ด์‹ฑ ๊ณผ์ •: ๊ฐ€์ƒ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ(Virtual Page Number)๋ฅผ ํ•ด์‹œ ํ•จ์ˆ˜(h(p))์— ์ž…๋ ฅ โ†’ hash table์˜ ์ธ๋ฑ์Šค ๊ณ„์‚ฐ
  2. ์ฒด์ธ ๊ฒ€์ƒ‰: ํ•ด์‹œ๋œ ์œ„์น˜์—์„œ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ €์žฅ๋œ ์—”ํŠธ๋ฆฌ๋“ค์„ ์ˆœ์ฐจ ๊ฒ€์ƒ‰
  3. ๋งค์นญ: ์ฐพ๋Š” ๊ฐ€์ƒ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ์™€ ์ผ์น˜ํ•˜๋Š” ์—”ํŠธ๋ฆฌ ๋ฐœ๊ฒฌ ์‹œ ๋ฌผ๋ฆฌ ํ”„๋ ˆ์ž„ ๋ฒˆํ˜ธ ๋ฐ˜ํ™˜ โ†’ ๋ฌผ๋ฆฌ ์ฃผ์†Œ ์ƒ์„ฑ
  • 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:

  • ์‹œ์Šคํ…œ ์ „์ฒด์— ๋‹จ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๋งŒ ์กด์žฌ
  • ๋ฌผ๋ฆฌ์  ํŽ˜์ด์ง€๋“ค์„ ์ถ”์  (๋…ผ๋ฆฌ ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹Œ!)
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์—๋งŒ ๋น„๋ก€

  • ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๊ฐ€์ง€์ง€ ๋ง๊ณ  ๋ฌผ๋ฆฌ์  ํŽ˜์ด์ง€๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•` alt text

  • hash table ํ™œ์šฉ
    • (PID, p)๋ฅผ ํ•ด์‹œ ํ•จ์ˆ˜์— ์ž…๋ ฅํ•˜์—ฌ ๊ฒ€์ƒ‰ ๋ฒ”์œ„๋ฅผ 1๊ฐœ ๋˜๋Š” ๋ช‡ ๊ฐœ์˜ ์—”ํŠธ๋ฆฌ๋กœ ์ œํ•œ
    • โœ” TLB์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋”์šฑ ๋น ๋ฅธ ์ ‘๊ทผ ๊ฐ€๋Šฅ

โŒ ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌํ˜„์ด ์–ด๋ ต๋‹ค
โ†’ ํ•˜๋‚˜์˜ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ์— ํ•˜๋‚˜์˜ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋งŒ ๋งคํ•‘๋˜๊ธฐ ๋•Œ๋ฌธ์— alt text

alt text

  • ๋ˆ„๊ตฌ์˜ page์ธ์ง€๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด pid ์ •๋ณด๋„ ๊ฐ™์ด ๋“ค์–ด๊ฐ„๋‹ค
    • ์ฆ‰, ์–ด๋–ค ํ”„๋กœ์„ธ์Šค(pid)์˜ ํŽ˜์ด์ง€(p)๊ฐ€ i๋ฒˆ์งธ ํ”„๋ ˆ์ž„์— ํ• ๋‹น ๋˜์–ด์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค
  • ๊ทธ๋ž˜์„œ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค page๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ค„์–ด๋“ ๋‹ค
This post is licensed under CC BY 4.0 by the author.