{"id":41554,"date":"2026-05-26T09:01:12","date_gmt":"2026-05-26T00:01:12","guid":{"rendered":"https:\/\/blog.agentsoft.co.kr\/index.php\/2026\/05\/26\/41554\/"},"modified":"2026-05-26T09:01:12","modified_gmt":"2026-05-26T00:01:12","slug":"pintos-project-3-%ed%95%9c%ea%b5%ad%ec%96%b4-%ec%84%a4%eb%aa%85%ec%84%9c-design-report-virtual-memory-frame-table","status":"publish","type":"post","link":"https:\/\/blog.agentsoft.co.kr\/index.php\/2026\/05\/26\/41554\/","title":{"rendered":"Pintos Project 3 \ud55c\uad6d\uc5b4 \uc124\uba85\uc11c (design report) &#8211; Virtual Memory, Frame table"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/image4.happycampus.com\/Production\/thumbnail\/2024\/06\/15\/data30007227-0001.jpg\"><img decoding=\"async\" src=\"https:\/\/image4.happycampus.com\/Production\/thumbnail\/2024\/06\/15\/data30007227-0002.jpg\"><\/p>\n<p><strong>\ubaa9\ucc28<\/strong><\/p>\n<p>0. Background<br \/>\n0.1. Memory<br \/>\n0.1.1. virtual memory<br \/>\n0.1.2. physical memory<br \/>\n0.2. pintos virtual memory<br \/>\n0.2.1. user virtual memory<br \/>\n0.2.2. Kernel virtual memory<br \/>\n0.2.3. page fault \ubc1c\uc0dd \uc6d0\uc778<br \/>\n0.3. memory allocation<br \/>\n0.3.1. page allocator<br \/>\n0.3.2. block allocator<br \/>\n0.4. hash table<br \/>\n0.5. paging<\/p>\n<p>1. Frame Table<br \/>\n   1.1. Meaning of Frame Table<br \/>\n   1.2. Necessity of Frame Table<br \/>\n   1.3. Current Implementation<br \/>\n   1.4. New Implementation<\/p>\n<p>2. Lazy loading<br \/>\n   2.1. Meaning of Lazy Loading<br \/>\n   2.2. Necessity of Lazy Loading<br \/>\n   2.3. Current Implementation<br \/>\n   2.4. New Implementation<\/p>\n<p>3. Supplemental page table<br \/>\n   3.1. Meaning of Supplemental Page Table<br \/>\n   3.2. Necessity of Supplemental Page Table<br \/>\n   3.3. Current Implementation<br \/>\n   3.4. New Implementation<\/p>\n<p>4. Stack growth<br \/>\n   4.1. Meaning of Stack growth<br \/>\n   4.2. Necessity of Stack growth<br \/>\n   4.3. Current Implementation<br \/>\n   4.4. New Implementation<\/p>\n<p>5. File memory mapping<br \/>\n   5.1. Meaning of File memory mapping<br \/>\n   5.2. Necessity of File memory mapping<br \/>\n   5.3. Current Implementation<br \/>\n   5.4. New Implementation<\/p>\n<p>6. Swap table<br \/>\n   6.1. Meaning of Swapping<br \/>\n   6.2. Necessity of Swap table<br \/>\n   6.3. Current Implementation<br \/>\n   6.4. New Implementation<\/p>\n<p>7. On process termination<br \/>\n   7.1. Necessity of On process termination<br \/>\n   7.2. Current Implementation<br \/>\n   7.3. New Implementation<\/p>\n<p><strong>\ubcf8\ubb38\ub0b4\uc6a9<\/strong><\/p>\n<p>0. Background<br \/>\n1. Memory<br \/>\n31 12 11 0 31 12 11 0<br \/>\n+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8211;+ +&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8211;+<br \/>\n| Page Number | Offset | | Frame Number | Offset |<br \/>\n+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8211;+ +&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8211;+<br \/>\n Virtual Address Physical Address<br \/>\nvirtual address (=page)<br \/>\n32-bit\uc758 address = 20 bit\uc758 frame number + 12 bit\uc758 frame offset<br \/>\nphysical address (=frame)<br \/>\n32-bit\uc758 address = 20 bit\uc758 frame number + 12 bit\uc758 frame offset<br \/>\n1.1. virtual memory<br \/>\nvirtual memory\ub294 physical memory\ub97c \ubcf4\uc870\ud558\ub294 \uac1c\ub150<br \/>\nprocess\uac00 \ud544\uc694\ud55c data\ub294 virtual memory\uc5d0\uc11c physical memory\ub85c load\ud574\uc624\uace0, \ud544\uc694\uc5c6\ub294 data\ub294 virtual memory (ex : disk) \uc5d0 \uc800\uc7a5\ud568\uc73c\ub85c\uc368 physical memory \uacf5\uac04 \ud655\ubcf4<br \/>\n\uac01 process\ub294 virtual address\uc640 physical address \ub97c mapping\ud558\ub294 table\uc744 \uac00\uc9c0\uace0 \uc788\uc5b4 virtual address\ub85c physical address\ub97c \ucc3e\uc544\uac08 \uc218 \uc788\ub2e4.<br \/>\nvirtual memory\ub294 page\uc758 \ud615\ud0dc\ub85c disk\uc5d0 \uc800\uc7a5\ub418\uc5b4 \uc788\uc73c\uba70, \ud544\uc694\ud560 \ub54c\ub9c8\ub2e4 physical memory\ub85c swap in\ub418\uc5b4 \uc0ac\uc6a9\ub41c\ub2e4.<\/p>\n<p>\ucd9c\ucc98 : <a href=\"https:\/\/www.happycampus.com\/report-doc\/30007227\/\" target=\"_blank\">\ud574\ud53c\ucea0\ud37c\uc2a4<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ubaa9\ucc28 0. Background 0.1. Memory 0.1.1. virtual memory 0.1.2. physical memory 0.2. pintos virtual memory 0.2.1. user virtual memory 0.2.2. Kernel virtual memory 0.2.3. page fault \ubc1c\uc0dd \uc6d0\uc778 0.3. memory allocation 0.3.1. page allocator 0.3.2. block allocator 0.4. hash table 0.5. paging 1. Frame Table 1.1. Meaning of Frame Table 1.2. Necessity of Frame Table [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[12085,50878,50883,50880,50862,50882,50881,50879,16377,50863],"class_list":["post-41554","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-acarbose","tag-frame-table","tag-lazy-loading","tag-page-table","tag-pintos","tag-stack-growth","tag-swap-table","tag-virtual-memory","tag-16377","tag-50863"],"_links":{"self":[{"href":"https:\/\/blog.agentsoft.co.kr\/index.php\/wp-json\/wp\/v2\/posts\/41554","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.agentsoft.co.kr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.agentsoft.co.kr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.agentsoft.co.kr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.agentsoft.co.kr\/index.php\/wp-json\/wp\/v2\/comments?post=41554"}],"version-history":[{"count":0,"href":"https:\/\/blog.agentsoft.co.kr\/index.php\/wp-json\/wp\/v2\/posts\/41554\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.agentsoft.co.kr\/index.php\/wp-json\/wp\/v2\/media?parent=41554"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.agentsoft.co.kr\/index.php\/wp-json\/wp\/v2\/categories?post=41554"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.agentsoft.co.kr\/index.php\/wp-json\/wp\/v2\/tags?post=41554"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}