Virtual Memory
Last updated
Last updated
์ค์ ๋ก ํ์ํ ๋ page ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฒ
์ด๋ ๊ฒ ํ๋ฉด ๋ญ๊ฐ ์ข์๊น?
I/O ์์ด ๊ฐ์ํ๊ฒ ๋๊ณ
๋น์ฅ ํ์์๋ ๋ฐ์ดํฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ์ง ์์ผ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๋ ๊ฐ์ํ๊ฒ ๋๋ค.
์์คํ ์ ์ฒด์ ์ผ๋ก ๋ณด์์ ๋, ํผํฌ๋จผ์ค๊ฐ ํฅ์ํ๋ฏ๋ก ๋ ๋น ๋ฅธ ์๋ต์ ํ ์ ์๊ณ
๋ ๋ง์ ์ฌ์ฉ์๋ฅผ ์์ฉํ ์๋ ์๋ค.
valid/invalid bit ์ ์ฌ์ฉ
invalid ์ ์๋ฏธ
์ฌ์ฉ๋์ง ์๋ ์ฃผ์ ์์ญ์ธ ๊ฒฝ์ฐ
ํ์ด์ง๊ฐ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฒฝ์ฐ
์ฒ์์๋ ๋ชจ๋ page entry ๊ฐ invalid ๋ก ์ด๊ธฐํ ๋๋ค.
address translation ์์ invalid bit ์ด set ๋์ด ์์ผ๋ฉด page fault
invalid page ์ ์ ๊ทผํ๋ฉด MMU ๊ฐ trap ์ ๋ฐ์์ํจ๋ค. โ page fault trap
kernal mode ๋ก ๋ค์ด๊ฐ์ page fault handler ๊ฐ invoke ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์์๋ก page fault ๋ฅผ ์ฒ๋ฆฌํ๋ค.
invalid reference ์ธ์ง ์ฒดํฌํ๋ค.
์์ฒญ ์ฃผ์๊ฐ ์๋ชป๋๊ฑฐ๋ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃ์ํจ๋ค.
empty frame ์ ๊ฐ์ ธ์จ๋ค. ์๋ค๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก๋ถํฐ ๋บ์ด์จ๋ค. (replace)
ํด๋น ํ์ด์ง๋ฅผ disk ์์ memory ๋ก ์ฝ์ด์จ๋ค.
์ด ๊ณผ์ ๋์์ ํ๋ก์ธ์ค๋ CPU ๋ฅผ preepmt ๋นํ๋ค. โ block
disk read ๊ฐ ๋๋๋ฉด page tables entry ์ ๊ธฐ๋กํ๊ณ valid/invalid bit ๋ฅผ valid ๋ก ๋ฐ๊พผ๋ค.
ready queue ์ process ๋ฅผ insert ํ๋ค. โ dispatch later
์ด ํ๋ก์ธ์ค๊ฐ CPU ๋ฅผ ์ก๊ณ ๋ค์ running ํ๋ค.
์๊น ์ค๋จ๋์๋ instruction ์ ์ฌ๊ฐํ๋ค.
ํ์ง๋ง page fault ์์ ๋์คํฌ์์ ๊ฐ์ ์ฝ์ด์ค๋ ์์ ์ ๋งค์ฐ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ ์์ ์ด๋ค.
page fault rate 0 โค p โค 1.0
if p = 0, no page faults
it p = 1, ๋ชจ๋ ์ฐธ์กฐ๊ฐ fault ๊ฐ ๋ฐ์ํ์์ ์๋ฏธํ๋ค.
์ค์ ์ปดํจํฐ์์ ๋๋ page fault ๋น์จ์ ์กฐ์ฌํด๋ณด๋, 0.x ์ ๋๋ก ๊ฑฐ์ 1์ ๊ฐ๊น์ ์์ ์ ์ ์๋ค.
effective access time
page fault ๊ฐ ์๋๋ ๊ฒฝ์ฐ + page fault ๊ฐ ๋๋ ๊ฒฝ์ฐ = ์ด ๊ฑธ๋ฆฐ ์๊ฐ
(1 - p) * memory access
p (OS & HW page fault overhead + [swap page out if needed] + swap page in + OS & HW restart overhead)
page replacement
์ด๋ค frame ์ ๋นผ์์์ฌ์ง ๊ฒฐ์ ํด์ผํ๋ค.
๊ณง๋ฐ๋ก ์ฌ์ฉ๋์ง ์์ page ๋ฅผ ์ซ์๋ด๋ ๊ฒ์ด ์ข๋ค.
๋์ผํ ํ์ด์ง๊ฐ ์ฌ๋ฌ๋ฒ ๋ฉ๋ชจ๋ฆฌ์์ ์ซ๊ฒจ๋ฌ๋ค๊ฐ ๋์ ๋ค์ด์ฌ ์๋ ์๋ค.
replacement algorithm
page-fault rate ์ ์ต์ํํ๋ ๊ฒ์ด ๋ชฉํ์ด๋ค.
์๊ณ ๋ฆฌ์ฆ์ ํ๊ฐ
์ฃผ์ด์ง page reference string ์ ๋ํด page fault ๋ฅผ ์ผ๋ง๋ ๋ด๋์ง ์กฐ์ฌ๋ฅผ ํ๋ค.
reference string์ ์์ : 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
replacement algorithm ์ค ๊ฐ์ฅ ์ต์ ์ ์๊ณ ๋ฆฌ์ฆ
MIN(OPT) ๊ฐ์ฅ ๋จผ ๋ฏธ๋์ ์ฐธ์กฐ๋๋ page ๋ฅผ replace ํ๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ฐ์ฅ ๋จผ ๋ฏธ๋์ ์ฐธ์กฐ๋๋ page ๋ ์ด๋ป๊ฒ ์ ์ ์๋๊ฐ?
๋ฏธ๋์ ์ฐธ์กฐ๋๋ ํ์ด์ง(page reference string)๋ค์ ๋ฏธ๋ฆฌ ๋ค ์๋ค๊ณ ๊ฐ์ ํ๋ค.
offline optimal algorithm
๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๋ํ upper bound ๋ฅผ ์ ๊ณตํ๋ค.
beladyโs optimal algorithm, MIN, OPT ๋ฑ์ผ๋ก ๋ถ๋ฆฐ๋ค.
7๋ฒ ์ผ์ด์ค์ ๊ฒฝ์ฐ, 1-2-3-4 ๊ฐ ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์๋ ์ํ์์ 5๋ฒ์ ๋ฃ์ด์ผ ํ ๊ฒฝ์ฐ, 4๋ฒ์ด ๊ฐ์ฅ ๋ฏธ๋์ ์ฐธ์กฐ๋๋ฏ๋ก 4๋ฒ์ 5๋ฒ์ผ๋ก replace ํ๋ค.
๊ฒฐ๊ตญ, optimal algorithm ์ ์ค์ ๋ก๋ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ์ต์ ์ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ์ค์ ์ผ๋ก ๋๊ณ , ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ํ๊ฐํ ๋ ์ฌ์ฉ๋ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด, ์ค์ ๋ก ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์๋ ์ด๋ค ๊ฒ๋ค์ด ์์๊น?
๋จผ์ ๋ค์ด์จ ๊ฒ์ ๋จผ์ ๋ด์ซ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ 3โ4 ๋ก ๋๋ ธ๋๋ฐ ์คํ๋ ค page fault ๊ฐ ๋ ๋์ด๋ ์ฑ๋ฅ์ด ๋ ์์ข์์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์๋ค.
FIFO anomaly (beladyโs anomaly)
more frames โ less page faults
๊ฐ์ฅ ์ค๋ ์ ์ฒด ์ฐธ์กฐ๋ ๊ฒ์ ์ง์ด๋ค.
7๋ฒ์งธ ์ผ์ด์ค์์ ๊ฐ์ฅ ์ค๋์ ์ ์ฐธ์กฐ๋ 3๋ฒ์ 5๋ฒ์ผ๋ก replace ํ๋ค.
๐ก ๋ฏธ๋๋ฅผ ์์ธกํ ์ ์๋ค๋ฉด ๊ณผ๊ฑฐ๋ฅผ ๋ณด๋ฉด ๋๋ค
๊ฐ์ฅ ์ฐธ์กฐํ์๊ฐ ์ ์ ํ์ด์ง๋ฅผ ์ง์ด๋ค.
์ต์ ์ฐธ์กฐํ์์ธ page ๊ฐ ์ฌ๋ฌ๊ฐ๊ฐ ์๋ ๊ฒฝ์ฐ๋ ๊ทธ๋ผ ์ด๋ป๊ฒ ํ ๊น?
LFU ์๊ณ ๋ฆฌ์ฆ ์์ฒด์์๋ ์ฌ๋ฌ page ์ค ์์๋ก ์ ์ ํ๋ค.
์ฑ๋ฅ ํฅ์์ ์ํด ๊ฐ์ฅ ์ค๋์ ์ ์ฐธ์กฐ๋ ํ์ด์ง๋ฅผ ์ง์ฐ๊ฒ ๊ตฌํํ ์๋ ์๋ค.
์ฅ์
LRU ์ฒ๋ผ ์ง์ ์ฐธ์กฐ ์์ ๋ง ๋ณด๋ ๊ฒ์ด ์๋๋ผ ์ฅ๊ธฐ์ ์ธ ์๊ฐ ๊ท๋ชจ๋ฅผ ๋ณด๊ธฐ ๋๋ฌธ์ page ์ ์ธ๊ธฐ๋๋ฅผ ์ข ๋ ์ ํํ ๋ฐ์ํ ์ ์๋ค.
๋จ์
์ฐธ์กฐ ์์ ์ ์ต๊ทผ์ฑ์ ๋ฐ์ํ์ง ๋ชปํ๋ค.
LRU ๋ณด๋ค ๊ตฌํ์ด ๋ณต์กํ ์ ์๋ค.
LRU ๋ ๊ฐ์ฅ ์ค๋์ ์ฒด ์ฐธ์กฐ๋ ๊ฒ์ ์ง์ฐ๊ธฐ ๋๋ฌธ๋ฐ 1๋ฒ ํ์ด์ง๋ฅผ ์ญ์ ํ ๊ฒ์ด๋ค.
LFU ๋ ๊ฐ์ฅ ์ฐธ์กฐ ํ์๊ฐ ์ ์ ๊ฒ์ replace ๋์์ผ๋ก ์ผ๊ธฐ ๋๋ฌธ์ 4๋ฒ ํ์ด์ง๋ฅผ ์ญ์ ํ๋ค.
LRU : linked list ํํ๋ก ๊ตฌํ๋๋ค.
O(1) ์ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค. ๋งค๋ฒ ์ซ์๋ผ ๋์์ด ๋ช ํํ์ฌ ๊ณ์ฐํ ํ์๊ฐ ์๋ค.
์ ๊ท ํ์ด์ง๋ ์๋๋ก ๋ถ์ด๊ณ ์ซ์๋ผ ๋์๋ ์ ์ผ ์ฒซ๋ฒ์งธ ํ์ด์ง๋ฅผ ๋ด๋ณด๋ด๋ฉด ๋๋ค.
LFU : linked list ํํ โ heap ์ผ๋ก ๊ตฌํ๋๋ค.
LFU - MFU ํํ๋ก ๊ตฌํ๋๋๋ฐ, ์ค์ ๋ก๋ ์ฐธ์กฐ ํ์์ ๋ฐ๋ผ์ ๊ธฐํ ํ์ด์ง๋ค์ด ๋ฐ๋ฆฌ๊ฑฐ๋ ์๋น๊ฒจ์ง๋ ๋ฑ ์์น์ด๋์ด ์์ ์ ์๋ค.
O(N)
HEAP : ์ต์๋จ์ ๊ฐ์ฅ ์ฐธ์กฐํ์๊ฐ ์ ์ ๊ฒ์ ๋๊ณ , ์๋๋ก ๊ฐ์๋ก ์ฐธ์กฐํ์๊ฐ ๋์ ํ์ด์ง๋ค์ด ์์นํ๋ค.
์ด์ง ํธ๋ฆฌ ํํ๋ก ๊ตฌํ๋๊ธฐ ๋๋ฌธ์ ํ๋จ์ ์์ 2๊ฐ์ ๋น๊ตํ์ฌ ์ฐธ์กฐํ์๊ฐ ๋ง์ผ๋ฉด ๋ ๋ฐ์ผ๋ก ๋ด๋ ค๊ฐ๋ฉด ๋๋ค.
์ต์ ์ ๊ฒฝ์ฐ, ์ต์๋จ์์ ์ตํ๋จ๊น์ง ์ด๋ํ ์๋ ์๋๋ฐ, ๊ทธ๋ ๋ค๊ณ ํ๋๋ผ๋ log n์ ์๊ฐ์ ๋๋ง ์์๋๋ฏ๋ก ๋งค์ฐ ํจ์จ์ ์ด๋ผ๊ณ ํ ์ ์๋ค.
O(log N)