๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš— Major Study (Bachelor)/๐ŸŸง Operating System

[OS / ์šด์˜์ฒด์ œ] Virtual Memory, Virtual Address Space, Demand Paging, Copy-on-Write

by UKHYUN22 2022. 6. 6.
728x90

Background

ํ”„๋กœ๊ทธ๋žจ์ด ์•„์ฃผ ๋งŽ์€ Instruction์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ ๋‹ค Load ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•œ๊ฐ€?
์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด ๋ชจ๋“  ์˜์—ญ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Error handling code๋“ค์€ error ๋ฐœ์ƒ ์ด์ „๊นŒ์ง€ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ์„ load ํ•˜์ž๋Š” ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

 


Background

ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ์„ loadํ•˜๋ฉด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์žฅ์ ์ด ์ƒ๊ธด๋‹ค. ์ฒซ ๋ฒˆ์งธ๋กœ ์ƒ๋‹นํžˆ ํฐ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. physical memory์˜ ์–‘์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋ฉด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๋™์ผํ•œ ํฌ๊ธฐ์˜ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋” ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ Swaping์„ ํ•  ๋•Œ I/O Overhead๊ฐ€ ํฌ๊ฒŒ ์ค„์–ด๋“ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 

 


Virtual Memory

Logical ๋ฉ”๋ชจ๋ฆฌ์™€ Physical ๊ณต๊ฐ„์„ ๋ถ„๋ฆฌํ•œ๋‹ค. Virtual memory๋ผ๋Š” ๊ฐœ๋…์ด logical memory์™€ ๊ฑฐ์˜ ๋น„์Šทํ•œ ๊ฐœ๋…์ด๋‹ค. ์‹ค์ œ ์‹œ์Šคํ…œ์— ์กด์žฌํ•˜๋Š” Physical memory์™€์˜ mapping์„ Page table์— ์˜ํ•ด์„œ ์ด๋ฃจ์–ด์ง„๋‹ค. Page๋ผ๋Š” Technique๊ณผ ๋น„์Šทํ•˜๋‹ค. ์™ผ์ชฝ์˜ virtual memory ๊ณต๊ฐ„์€ logical address space๋ผ๋Š” ๊ฐœ๋…๊ณผ ์ƒ์‘ํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ์ž ์ž๊ธฐ ์ž์‹ ์˜ virtual address space๋ฅผ ๊ฐ€์ง„๋‹ค. Paging ๊ณผ ๋‹ค๋ฅธ ์ ์€ Vitual Memory์™€ Physical Memory์˜ ํฌ๊ธฐ ์ฐจ์ด์ด๋‹ค. ์ผ๋ฐ˜์ ์ธ page์—  logial address space๊ฐ€ physical address page๋ณด๋‹ค ์ž‘๋‹ค. ๊ณต์œ ํ•˜๋ฉด์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ–๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์€ Physical Memory ๊ณต๊ฐ„๋ณด๋‹ค ์ž‘์„ ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋‹ค. ํ•˜์ง€๋งŒ Virtual์˜ ๊ฒฝ์šฐ๋Š” Virtual Memory๊ฐ€ ๋” ํด ์ˆ˜๋„ ์žˆ๋‹ค. ์˜ค๋ฅธ์ชฝ ์›๊ธฐ๋‘ฅ์€ Disk์— ํ•ด๋‹นํ•œ๋‹ค. Swaping ์— ํ•ด๋‹นํ•˜๋Š” ๊ทธ๋ฆผ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹น์žฅ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” Content๋Š” Disk๋กœ Save๋ฅผ ํ•ด์„œ ๋นˆ ๊ณต๊ฐ„์— ์›ํ•˜๋Š” ํ”„๋กœ์„ธ์Šคํ•œํ…Œ ์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์‹ค์ œ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ Virtual Memory์˜ Content๋ฅผ ์š”๊ตฌํ–ˆ๋‹ค๊ณ  ํ•˜๋ฉด ์‹ค์ œ Physical Memory์— ๊ฐ€์„œ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ ์กด์žฌํ•˜๋ฉด ๋ฐ”๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋˜์ง€๋งŒ ์—†์œผ๋ฉด Disk์— ์žˆ๋Š” ๋‚ด์šฉ์„ Physical memory๋กœ ์ฝ์–ด์˜ค๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. Physical Memory๋Š” ๊ถ๊ทน์ ์œผ๋กœ Cache์˜ ์—ญํ• ์„ ํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•„์š”ํ•œ ๋งŒํผ๋งŒ Physical Memory์— loadํ•ด์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. Disk์˜ ๊ฒฝ์šฐ Physical Memory๋ณด๋‹ค ํฌ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„์ฃผ ๋„“์€ Virtual Memory๋ฅผ ์š”๊ตฌํ•˜๋”๋ผ๋„ Coverํ•  ์ˆ˜ ์žˆ๋Š” ์ž ์žฌ๋ ฅ์ด ์žˆ๋‹ค. ํ˜„์žฌ ์กด์žฌํ•˜์ง€ ์•Š๋Š” Content๋ผ๊ณ  ํ•˜๋”๋ผ๋„ Disk์—์„œ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. Virtual Memory์˜ ํฌ๊ธฐ๊ฐ€ Physical Memory๋ณด๋‹ค ํด ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ. 

 


Virtual Memory

๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์ด load ๋  ํ•„์š”๊ฐ€ ์—†๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค. physical address space๋ณด๋‹ค ํ›จ์”ฌ ํฐ Address space๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ๋™์ผํ•œ Address space๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. Page table์— ๋™์ผํ•œ frame number๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด share๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ–ˆ์—ˆ๋‹ค. Paging์ด ์›๋ž˜ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋˜ shared page๋ผ๋Š” ๊ฐœ๋…์„ ๋ฌผ๋ ค๋ฐ›์•„ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค. Page๋ฅผ shareํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Process Creation์ด ๋” ํšจ์œจ์ ์ด๊ฒŒ ๋œ๋‹ค. 3์žฅ์—์„œ fork๋กœ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ค๋•Œ Parent๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์ œํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•ด๋ณด์ž. parent์™€ child๊ฐ€ ๊ฐ™๋‹ค๊ณ  ํ•˜๋ฉด Parent์˜ content๊ฐ€ child์—๊ฒŒ ๋ฐ”๋กœ ๊ณต์œ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์žˆ๋‹ค. ๋” ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์ด concurrentํ•˜๊ฒŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค. swap์„ ํ• ๋•Œ I/O Data์˜ ์–‘์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๊ฐ์†Œํ•˜๊ฒŒ ๋œ๋‹ค. Virtual Memory๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ผ๋ถ€๋งŒ์„ swap in swap out์„ ํ•œ๋‹ค๋ฉด overhead๋Š” ๋งŽ์ด ์ค„์ผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 


Virtual Address Space

๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์ž๊ธฐ๊ฐ€ ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ฐฉ๊ฐ ์†์—์„œ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒƒ์„ Virtual Memory๊ฐ€ ์ œ๊ณตํ•˜๊ธฐ ๋–„๋ฌธ์ด๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 64bit๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”  address space๋Š” ์–ด๋งˆํ•˜๊ฒŒ ํฌ๋‹ค. physical memory๋Š” page frame์ด๋ผ๋Š” ๋‹จ์œ„๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. page๋กœ๋ถ€ํ„ฐ ๋‚ด๋ ค์˜ค๋Š” ๋™์ผํ•œ ์„ฑ์งˆ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. MMU๊ฐ€ logical๊ณผ physical mapping์„ ๋‹ด๋‹นํ•œ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค Virtual Memory์˜ ์ข‹์€ ์ ์€ Swapping, Address Translation์„ Application์ด ์ „ํ˜€ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์ ์ด๋‹ค. Virtual Address Space๋Š” sparceํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. Address Space์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋Š” ํฌ์ง€๋งŒ ์‹ค์ œ ์‚ฌ์šฉ๋˜๋Š” ํฌ๊ธฐ๋Š” ์ผ๋ถ€์— ๋ถˆ๊ณผํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์ด 4GB๋ผ๊ณ  ํ•˜์ž. ์‹ค์ œ๋กœ ๊ทธ ํ”„๋กœ๊ทธ๋žจ์€ 500MB๋ฐ–์— ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•˜์ž. ์ด์™€ ๊ฐ™์ด ์‹ค์ œ๋กœ ์กด์žฌํ•˜์ง€ ์•Š์ง€๋งŒ Address Hole๋“ค์ด ๋งŽ์ด ์กด์žฌํ•˜๊ณ  ์ด๊ฒƒ์€ Sparce๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆผ์„ Virtual Address Space๋ผ๊ณ  ํ•˜์ž. ๋งจ ์•„๋ž˜์— code๊ฐ€ ์ €์žฅ๋˜๊ณ   local variable์ด ์ €์žฅ๋˜๋Š” data์™€ function call์ด ์ด๋ฃจ์–ด์ง€๋Š” stack์˜ ๊ณต๊ฐ„์ด ์žˆ๋‹ค. stack์€ ์œ„์—์„œ ์•„๋ž˜๋กœ ๋‚ด๋ ค์˜ค๋ฉด์„œ ์ปค์ง€๋„๋ก ๋˜์–ด์žˆ๊ณ  heap์€ ๊ทธ ๋ฐ˜๋Œ€์ด๋‹ค. ํŒŒ๋ž€์ƒ‰ ์ค‘๊ฐ„์˜ ๊ฒฝ์šฐ function call๊ณผ dynamic allocation~~

 

 


Shared Library Using Virtual Memory

2๊ฐœ์˜ process๊ฐ€ ๊ฐ๊ฐ์˜ Address Space๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๋ฌผ๋ก  ์ด๋Š” Virtual Address Space์ด๋‹ค. Shared Page๋ฅผ ์ด์šฉํ•˜๋ฉด Physicalํ•œ ๊ณต๊ฐ„์—๋Š” Library๊ฐ€ ํ•˜๋‚˜๋ฐ–์— ์—†๋Š”๋ฐ๋„ ์–‘์ชฝ์— ์žˆ๋Š” Address space์— Mappingํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 

 


Implementation Techniques

Demand paging์€ paging๊ณผ swapping์„ ๊ฒฐํ•ฉํ•œ ๋ฐฉ์‹์ด๋‹ค. Demand Segmentation ๋ฐฉ๋ฒ•์€ Segmentation์™€ swapping์„ ๊ฒฐํ•ฉํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค

 


Demand Paging

paging + Swaping. ์ผ๋ฐ˜์ ์ธ Swapper๊ฐ€ Process๋‹จ์œ„๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๋ฐ˜ํ•ด Demand paging์˜ ๊ฒฝ์šฐ Page์˜ ๋‹จ์œ„๋กœ Swap in๊ณผ Swap out์„ ์ง„ํ–‰ํ•œ๋‹ค. ๋ชจ๋“  page๋ฅผ loadํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์„ ํƒ์ ์ธ Load๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค. Lazy Swapper๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๊ผญ ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ์ตœ์†Œํ•œ์œผ๋กœ Swap์„ ํ•˜๋ฉด์„œ I/O ์—ฐ์‚ฐ์„ ์ค„์ด๊ณ  ํšจ์œจ์„ ๋†’์˜€๋‹ค๋Š” ๊ธ์ •์ ์ธ ์˜๋ฏธ์ด๋‹ค. Swapping์˜ ๊ธฐ๋ณธ ๋‹จ์œ„๊ฐ€ Page์ด๊ธฐ ๋•Œ๋ฌธ์— pager๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค. 

 

 


Demand Paging

์š”๊ตฌ๋˜๋Š” page๋งŒ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ ์•„์ด๋””์–ด. hardware์˜ Support๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜ ์žˆ๊ณ  ์ด๋Š” logical memory๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด๋Š” ๊ถ๊ทน์ ์œผ๋กœ Disk์— ์กด์žฌํ•˜๊ณ  ์žˆ๋Š”๋ฐ ๋‹น์žฅ ํ•„์š”ํ•œ Page๋ฅผ Loadํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ผ๋ถ€๋Š” Memory์— ์กด์žฌํ•˜๊ณ  ์ผ๋ถ€๋Š” memory์— ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ Memory์— ์žˆ๋Š”์ง€ Disk์— ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๋ฏ€๋กœ HardWare์˜ Support๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Valid- invalid table์„ ์ด์šฉํ•œ๋‹ค.

 


page Table with Valid/inValid Bit

Page Table์˜ ๊ฐ Entry๋งˆ๋‹ค ํ•ด๋‹นํ•˜๋Š” bit๊ฐ€ ์žˆ๋‹ค. 2๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ํ•œํ•œ๋‹ค. page ์ž์ฒด๊ฐ€ ์ ์ ˆํ•œ Address์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ. Virtual Memory์—์„œ๋Š” ๊ฐ Process์—๊ฒŒ ์•„์ฃผ ๋„“์€ Virtual Address Space๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ํ•˜์ง€๋งŒ sparceํ•œ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ์˜์—ญ์— ์กด์žฌํ•˜์ง€ ์•Š๋‹ค๋ฉด ๊ทธ ์ž์ฒด๋กœ invalidํ•˜๋‹ค๋Š” ๊ฒƒ์ด ๋œ๋‹ค. Page์˜ Content๊ฐ€ Physical Memory์— load๋˜์–ด ์žˆ์–ด์„œ ๋‹น์žฅ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ. Valid๋ผ๋Š” ๊ฒƒ์˜ ์˜๋ฏธ๋Š” Page๊ฐ€ ์‹ค์ œ ์กด์žฌํ•˜๊ณ  Load๊ฐ€ ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” And ์กฐ๊ฑด์„ ์˜๋ฏธํ•œ๋‹ค. inValid๋Š” ๋‘ ์กฐ๊ฑด ์ค‘ ์ ์–ด๋„ ํ•˜๋‚˜๊ฐ€ ๋งŒ์กฑ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. Page-fault Trap์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ ์ ˆํžˆ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” Hardware support๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŠน์ •ํ•œ ์œ„์น˜๋ฅผ Accessํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ i์—ฌ์„œ ์‹ค์ œ Accessํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์˜ ๊ฒฝ์šฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. Page - fault๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด OS๊ฐ€ ์ผ์„ ํ•ด์•ผ ํ•œ๋‹ค. ๋ฌด์—‡์ธ๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ๊ทธ ๊ณผ์ •์€ Page Fault Handler๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 


Basic Concepts

Valid inValid bit์ด i ๊ฐ’์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค. ํ•˜๋‚˜๋Š” page ์ž์ฒด๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ page๋Š” ์กด์žฌํ•˜์ง€๋งŒ Load๋˜์ง€ ์•Š์•˜๋‹ค๊ณ  ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ œ์ผ ๋จผ์ €ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๋‘ ๊ฐ€์ง€ ์ค‘ ์–ด๋””์— ์†ํ•˜๋Š” ์ง€ ๋ฅผ ํŒ๋‹จํ•ด์•ผ ํ•œ๋‹ค. page Table์€ Page์˜ Content๊ฐ€ ์–ด๋””์— ์กด์žฌํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” table์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. Disk์— ์žˆ์œผ๋ฉด Disk์˜ Block ๋ฒˆํ˜ธ ๋˜๋Š” File์˜ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ ํ‘œ๋ฅผ ํ•ด๋‹นํ•˜๋ฉด Page๊ฐ€ ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ธ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์กด์žฌํ•˜์ง€ ์•Š๋Š” page๋ฅผ Accessํ•˜๋ ค๊ณ  ํ–ˆ์—ˆ๋‹ค๋ฉด ์ด๊ฒƒ์€ ์ž˜๋ชป๋œ ๊ฒƒ์ด๋‹ค. Bug๋‚˜ Hacking ์‹œ๋„๋กœ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘ ๋‹ค๋ฅธ ์‹œ์Šคํ…œํ•œํ…Œ ์•…์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ฒŒ ๊ฐ•์ œ ์ข…๋ฃŒ๋ฅผ ์‹œํ‚ค๊ฒŒ ๋œ๋‹ค. Page๋Š” ์กด์žฌํ•˜๋Š” ํŽ˜์ด์ง€ ์ด์ง€๋งŒ ์•„์ง load๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, Load๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋นˆ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค. ์š”์ฒญ๋œ page๋ฅผ table์„  updateํ•ด์•ผ ํ•œ๋‹ค. ํ•ด๋‹น page์˜ valid์˜ ๊ฐ’์„ V๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ  ์กฐ๊ธˆ ์ „์— load๋œ frame number๋ฅผ page table์— ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ.

 


Handling Page-Fault

ํŠน์ •ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ Accessํ•œ๋‹ค. ์ฃผ์†Œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์ฃผ์†Œ๋Š” Virtual address๊ฐ€ ๋œ๋‹ค. page number๋ฅผ ๊ฐ€์ ธ๋‹ค๊ฐ€ page table์— ์ ‘๊ทผ์„ ํ•œ๋‹ค. ๊ทธ ์œ„์น˜๋กœ ๊ฐ€์„œ ์ œ์ผ ๋จผ์ € valid in valid๋ฅผ ์ฒดํฌํ•˜๊ณ  invalid์˜ ๊ฒฝ์šฐ trap์ด ๋ฐœ์ƒํ•œe๋‹ค. Interrupt Handler๊ฐ€ page Fault๋ฅผ ์ธ์ง€ํ•˜๊ณ  Page Fault Handler๋ฅผ ์ž‘๋™ํ•œ๋‹ค. ๋งŒ์•ฝ disk์— ์กด์žฌํ•œ๋‹ค๋ฉด Disk์— ๊ฐ€์„œ Memory๋กœ swapํ•˜๊ฒŒ ๋œ๋‹ค. ์˜ฌ๋ฆฌ๊ฒŒ ๋˜๋ฉด Valid bit๋ฅผ ๋ฐ”๊พธ๊ฒŒ ๋˜๊ณ  ์›๋ž˜ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ–ˆ๋˜ Instruction ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค.

 


Basic Concepts
Page fault๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Performance๊ฐ€ down๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ์ˆœ๊ฐ„ ์ž ๊น ๋ฉˆ์ถ”๊ณ  Disk๋กœ ์ด๋™์„ ํ•˜๊ฒŒ ๋˜๊ณ  Page๋ฅผ updateํ•˜๊ธฐ ๊นŒ์ง€ ์—ฌ๋Ÿฌ Handler์™€ Disk  Access๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. ์‹คํ–‰ ์†๋„๊ฐ€ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์ €ํ•˜๋œ๋‹ค. ์–ผ๋งˆ๋‚˜ ์ž์ฃผ Page Fault๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€? ์ด๋ก ์ ์œผ๋กœ page fault๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. Instruction ์ž์ฒด๊ฐ€ ํ•œ ํŽ˜์ด์ง€์— ์กด์žฌํ•˜๊ณ  ๊ฐ’์„ ์ฝ์–ด์˜ค๋Š” page์™€ ๊ฐ’์„ ์“ฐ๋ ค๋Š”Page๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. Instruction ํ•˜๋‚˜๊ฐ€ 3๊ฐœ์˜ page fault๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์ • ์œ„์น˜๋ฅผ Access๋ฅผ ํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ Memory ์œ„์น˜๋Š” ๊ทธ ์ฃผ๋ณ€์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. H/W Support๋Š” page table์—์„œ valid-invalid bit ์ œ๊ณต์ด๊ณ , Disk์ฒ˜๋Ÿผ Virtual Memory์˜ Content๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” Swap space๊ฐ€ ํ•„์š”ํ•˜๋‹ค. 

 


Performance of Demand paging
ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ Accessํ•˜๋ฉด์„œ ์‹คํ–‰ํ•˜๋Š” ์‹œ๊ฐ„์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ma๋Š” main Memory์˜ ์ ‘๊ทผ ์‹œ๊ฐ„์ด๋‹ค. 
p๋Š” page fault์˜ ํ™•๋ฅ ์ด๋‹ค. 

 


Performance of Demand Paging
๋ฉ”๋ชจ๋ฆฌ Access time์„ 200 nano๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  page fault๋ฅผ 8 msec์ด๋ผ๊ณ  ํ•˜์ž. page fault๊ฐ€ ๋‚˜ํƒ€๋‚ฌ์„ ๋•Œ๋Š” ์—†์„ ๋•Œ๋ณด๋‹ค 40๋ฐฐ ์ •๋„ ์ปค์ง€๊ฒŒ ๋œ๋‹ค.

 


Execution of Program in File System
File์„ ๋ณต์‚ฌํ•˜๋Š” Overhead๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. swap space๋Š” main memory์˜ content๋ฅผ ๋Œ€ํ”ผํ•˜๊ธฐ ์œ„ํ•œ ๊ณต๊ฐ„์ด๋‹ค. File system์— ์žˆ๋Š” ์‹คํ–‰ํŒŒ์ผ ์ž์ฒด๋ฅผ Content๋กœ ๋ณด๊ณ  page์™€ ๋ฐ”๋กœ mapping ์‹œํ‚ค๋Š” ๊ฒƒ. ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ page์™€ file system์˜ ์‹คํ–‰ํŒŒ์ผํ•˜๊ณ  mapping์„ ์‹œ์ผœ๋ฒ„๋ฆฐ๋‹ค. ๊ทธ๋ฆฌ๊ณ  demand paging์„ ๊ฐ€๋™ํ•˜๋ฉด page fault๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ์‹คํ–‰ํŒŒ์ผ์„ ํ•ด๋‹น ๋ธ”๋Ÿญ์—์„œ ์ฝ์–ด์˜ค๊ณ  ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. 2 ๋ฒˆ์งธ option์˜ ์„ฑ๋Šฅ์ด ๋” ๋น ๋ฅด๋‹ค.! 

 


Copy-on-Write
Process๋ฅผ Createํ•  ๋•Œ ์„ฑ๋Šฅ ๊ฐœ์…˜์„ ํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. fork๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด parent๋ฅผ ๋ณต์‚ฌํ•ด์„œ child๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๊ฒŒ ๋œ๋‹ค. ๊ทธ ์ˆœ๊ฐ„ child์˜ ํ˜•ํƒœ๋Š” parent์™€ ๋™์ผํ•˜๊ฒŒ ๋œ๋‹ค. ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ดค์„ ๋•Œ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ content๋ฅผ ๋ณต์‚ฌํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง„๋‹ค. Creation Time์ด ์งง์•„์ง„๋‹ค. ๋ณต์‚ฌํ•  ํ•„์š”์—†์ด Sharingํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์•„์ฃผ ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. Process๊ฐ€ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง€๋ฉด ๋…๋ฆฝ์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ ๋  ์ˆ˜ ์—†๋Š” ๋…๋ฆฝ์ ์ด์–ด์•ผ ํ•จ์„ ๋ฐฐ์› ๋‹ค. ๋…ผ๋ฆฌ์ ์ธ ์ƒํ™ฉ์—์„œ๋Š” ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์ง€๋งŒ ๋ฌผ๋ฆฌ์ ์ธ ์ƒํ™ฉ์—์„œ๋Š” ๊ณต์œ ๋˜์–ด ์žˆ๋‹ค. 

 


Copy-on-Write
๋…ผ๋ฆฌ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ Content๊ฐ€ ์ผ์น˜ํ•œ๋‹ค. Physicalํ•˜๊ฒŒ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ frame number๋ฅผ ๋™์ผํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. parent์— page C์— writeํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž. ๊ทธ ํŽ˜์ด์ง€์— ํ•ด๋‹นํ•˜๋Š” ๋‚ด์šฉ์ด CHild์—๊ฒŒ ์˜ํ–ฅ์„ ์ค˜์„œ๋Š” ์•ˆ๋œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋…๋ฆฝ์ ์ธ Process์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ์ƒํ™ฉ์˜ ๊ฒฝ์šฐ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ Frame์ด ๋œ๋‹ค. Physical Memory์•ˆ์—์„œ Copyํ•˜๋Š” ์–‘์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.