๐Ÿ’ฟ KAIST:PINTOS | Concept | Virtual Memory

์ด์ˆœ๊ฐ„ยท2025๋…„ 5์›” 30์ผ

KAIST:PINTOS

๋ชฉ๋ก ๋ณด๊ธฐ
22/23

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ(Virtual Memory)๋ž€?

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•œ๊ณ„๋ฅผ ๋ชฐ๋ผ๋„ ๋˜๋„๋ก ์šด์˜์ฒด์ œ๊ฐ€ ๊ฐ€์ƒ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ํ”„๋กœ๊ทธ๋žจ์€ ์ž์‹ ๋งŒ์˜ ์—ฐ์†๋œ ๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ ์‚ฌ์šฉํ•œ๋‹ค.

๊ฐ„๋‹จํžˆ ๋งํ•ด:

"์‹ค์ œ๋กœ๋Š” ์กฐ๊ฐ๋‚œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ, ๋งˆ์น˜ ๋‚ด ๊ฒƒ์ฒ˜๋Ÿผ ์—ฐ์†๋œ ๊ณต๊ฐ„์œผ๋กœ ์“ฐ๊ฒŒ ํ•ด์ฃผ๋Š” ์ฐฉ๊ฐ์˜ ๊ธฐ์ˆ !"


๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

  • ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ(RAM)๋Š” ํ•œ์ •๋˜์–ด ์žˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ๋งˆ๋‹ค ๋…๋ฆฝ์ ์ด๊ณ  ์•ˆ์ „ํ•œ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์€ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋งŒ์œผ๋กœ๋„ ๋” ํฐ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ์šด์˜์ฒด์ œ๊ฐ€ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ:

๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ (ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๊ฐ„์„ญ ๋ฐฉ์ง€)
ํ”„๋กœ๊ทธ๋žจ ํฌ๊ธฐ์™€ ๋ฌด๊ด€ํ•œ ์œ ์—ฐ์„ฑ
๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์  ์‚ฌ์šฉ (ํŽ˜์ด์ง•, ์Šค์™€ํ•‘ ๋“ฑ)

์„ ๊ตฌํ˜„ํ•œ๋‹ค.


PintOS์˜ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌํ˜„ ๋ชฉํ‘œ

PintOS์˜ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ(VM) ํ”„๋กœ์ ํŠธ์—์„œ ์šฐ๋ฆฌ๋Š” 3๊ฐ€์ง€ ํ•ต์‹ฌ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„/์—ฐ๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.


[1] Supplemental Page Table (SPT)

์—ญํ• ์„ค๋ช…
๊ฐ ์œ ์ € ๊ฐ€์ƒ ํŽ˜์ด์ง€์˜ ์ƒํƒœ ๊ด€๋ฆฌ์˜ˆ: ๋กœ๋“œ๋˜์—ˆ๋‚˜? ํŒŒ์ผ/์Šค์™‘์—์„œ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•˜๋‚˜?
ํŽ˜์ด์ง€ ํดํŠธ ์ฒ˜๋ฆฌ ์‹œ ๋กœ๋“œ ๋ฐฉ์‹ ๊ฒฐ์ •ํŽ˜์ด์ง€๊ฐ€ ์—†์œผ๋ฉด SPT๋ฅผ ๋ณด๊ณ  ์–ด๋””์„œ ๋ถˆ๋Ÿฌ์˜ฌ์ง€ ๊ฒฐ์ •
ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ๊ด€๋ฆฌ๋…๋ฆฝ์  SPT๋ฅผ ์‚ฌ์šฉ, ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ ์‹œ ํ•จ๊ป˜ ์ œ๊ฑฐ๋จ

ํ•ต์‹ฌ ๊ตฌ์กฐ์ฒด
struct page, struct supplemental_page_table


[2] Frame Table

์—ญํ• ์„ค๋ช…
๋ชจ๋“  ๋ฌผ๋ฆฌ ํ”„๋ ˆ์ž„์˜ ์ƒํƒœ ๊ด€๋ฆฌ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์˜ ์–ด๋–ค ๊ฐ€์ƒ ํŽ˜์ด์ง€๊ฐ€ ์“ฐ๊ณ  ์žˆ๋Š”์ง€ ์ถ”์ 
ํ”„๋ ˆ์ž„ ๋ถ€์กฑ ์‹œ Eviction ๋Œ€์ƒ ์ฐพ๊ธฐ์Šค์™€ํ•‘ํ•  ํ”„๋ ˆ์ž„ ์„ ํƒ (ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ)
์‹œ์Šคํ…œ ์ „์ฒด์—์„œ ๋‹จ์ผ ๊ธ€๋กœ๋ฒŒ ๊ตฌ์กฐ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ 

ํ•ต์‹ฌ ํ•จ์ˆ˜
vm_get_frame(), vm_evict_frame() ๋“ฑ


[3] Swap Table

์—ญํ• ์„ค๋ช…
์Šค์™‘ ๊ณต๊ฐ„ ๊ด€๋ฆฌ๋””์Šคํฌ์˜ ์Šค์™‘ ์Šฌ๋กฏ ์‚ฌ์šฉ ์—ฌ๋ถ€ ์ถ”์ 
Eviction ์‹œ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ ์Šค์™‘์•„์›ƒํ•„์š”ํ•˜๋ฉด ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ๋กœ ๋‚ด๋ณด๋‚ด๊ณ  ์ž๋ฆฌ ํ™•๋ณด
ํŽ˜์ด์ง€ ์žฌ์ง„์ž… ์‹œ ์Šค์™‘์ธ ์ฒ˜๋ฆฌ๋‹ค์‹œ ์“ธ ๋•Œ ์Šค์™‘์—์„œ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ด

ํ•ต์‹ฌ ํ•จ์ˆ˜
swap_out(), swap_in() ๋“ฑ


ํŽ˜์ด์ง€ ํดํŠธ(Page Fault) ์ฒ˜๋ฆฌ ํ๋ฆ„

์œ ์ € ํ”„๋กœ๊ทธ๋žจ ์ ‘๊ทผ โ†’ ํŽ˜์ด์ง€ ํดํŠธ ์˜ˆ์™ธ ๋ฐœ์ƒ โ†’ page_fault() โ†’ SPT ๊ฒ€์ƒ‰ โ†’ ํ•„์š” ์‹œ ์Šค์™‘/ํŒŒ์ผ ๋กœ๋“œ โ†’ ํ”„๋ ˆ์ž„ ํ• ๋‹น โ†’ ๋งคํ•‘
  • vm.c์™€ page_fault()์—์„œ ํดํŠธ ๋ฐœ์ƒ ์‹œ ์ฒ˜๋ฆฌ
  • SPT๋ฅผ ํ†ตํ•ด ํŽ˜์ด์ง€๊ฐ€ ์–ด๋””์„œ ์™€์•ผ ํ•˜๋Š”์ง€ ํŒ๋‹จ
  • ํ”„๋ ˆ์ž„ ๋ถ€์กฑํ•˜๋ฉด Eviction โ†’ SwapOut ํ›„ ์ƒˆ๋กœ์šด ํ”„๋ ˆ์ž„ ํ™•๋ณด

ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Eviction)

PintOS์—์„œ๋Š” ๋ณดํ†ต ์‹œ๊ณ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Clock Algorithm) ์„ ์‚ฌ์šฉํ•ด Victim ํ”„๋ ˆ์ž„์„ ๊ณ ๋ฅธ๋‹ค.

  • Accessed Bit ํ™•์ธ
  • ํ•œ ๋ฐ”ํ€ด ๋Œ๋ฉฐ ๋น„ํ™œ์„ฑ ํ”„๋ ˆ์ž„ ์ฐพ๊ธฐ
  • ์ ์ ˆํ•œ ํ›„๋ณด๋ฅผ ์ฐพ์•„ Swap Out ์ˆ˜ํ–‰

๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘ (mmap)

PintOS๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘(mmap)๋„ ์ง€์›ํ•œ๋‹ค.

  • ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ๋งคํ•‘
  • do_mmap(), do_munmap()์œผ๋กœ ๊ตฌํ˜„
  • ํŽ˜์ด์ง€ ํดํŠธ ์‹œ mmap ์˜์—ญ์—์„œ ๋กœ๋“œ

๋ฐฉ์–ด ์ฝ”๋“œ์™€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ณด์•ˆ๊ณผ ์•ˆ์ •์„ฑ๋„ ์ค‘์š”ํ•˜๋‹ค. ๋‹ค์Œ์˜ ๋ฐฉ์–ด ์ฝ”๋“œ๋กœ ์œ ์ € ์ ‘๊ทผ์„ ๊ฒ€์ฆ:

  • is_user_vaddr(ptr) : ์œ ์ € ์˜์—ญ์ธ์ง€ ํ™•์ธ
  • pml4_get_page() : ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘ ํ™•์ธ
  • ์ž˜๋ชป๋œ ์ ‘๊ทผ โ†’ exit(-1)๋กœ ์ข…๋ฃŒ

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์™€ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋Šฅ ๋งคํ•‘

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฒ€์ฆ ๊ธฐ๋Šฅ
anon์ต๋ช… ํŽ˜์ด์ง€ (zero ํŽ˜์ด์ง€)
mmap, mmap-close๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘
swap, swap-anon์Šค์™‘์ธ/์Šค์™‘์•„์›ƒ ๋™์ž‘ ํ™•์ธ
page-faultํŽ˜์ด์ง€ ํดํŠธ ์ฒ˜๋ฆฌ (SPT/Swap ์—ฐ๊ณ„)
bad-*, access-*์ž˜๋ชป๋œ ์ ‘๊ทผ ์ฒ˜๋ฆฌ, SPT ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋“ฑ
fork-*fork ์‹œ SPT ๋ณต์‚ฌ ๋ฐ ๊ณต์œ  ์—ฌ๋ถ€ ํ™•์ธ

์ •๋ฆฌ

  • ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ๋ฌด์ œํ•œ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ œ๊ณต
  • SPT, Frame Table, Swap Table์˜ ํ˜‘๋ ฅ์œผ๋กœ ๋™์ž‘
  • ํŽ˜์ด์ง€ ํดํŠธ์™€ Eviction์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ๊ณผ ๋ณดํ˜ธ๋ฅผ ๋‹ฌ์„ฑ
  • PintOS๋Š” ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ๊นŒ์ง€ ์ œ๊ณตํ•˜๋ฉฐ, ์ง์ ‘ ์ž‘์„ฑ/์—ฐ๊ฒฐํ•ด์•ผ ํ•จ
profile
์„œํˆด์ง€์–ธ์ • ๋Š˜ ํ–‰๋™์ด ๋จผ์ €์ด๊ธฐ๋ฅผ

0๊ฐœ์˜ ๋Œ“๊ธ€