Virtual Memory - hochan222/Everything-in-JavaScript GitHub Wiki
๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์๋ณํ์ ์ด์์ฒด์ ๊ฐ ๊ด์ฌํ์ง ์๋๋ค.
ํ์ง๋ง, Virtual Memory๋ ์ด์์ฒด์ ๊ฐ ๊ด์ฌํ๋ค.
Demand Paging
- ์ค์ ๋ก ํ์ํ ๋ page๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฒ
- I/O ์์ ๊ฐ์
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๊ฐ์
- ๋น ๋ฅธ ์๋ต ์๊ฐ
- ๋ ๋ง์ ์ฌ์ฉ์ ์์ฉ
- Valid / Invalid bit์ ์ฌ์ฉ
- Invalid์ ์๋ฏธ
- ์ฌ์ฉ๋์ง ์๋ ์ฃผ์ ์์ญ์ธ ๊ฒฝ์ฐ
- ํ์ด์ง๊ฐ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฒฝ์ฐ
- ์ฒ์์๋ ๋ชจ๋ page entry๊ฐ invalid๋ก ์ด๊ธฐํ
- address translation ์์ invalid bit๊ฐ set๋์ด์์ผ๋ฉด page fault
- Invalid์ ์๋ฏธ
Memory์ ์๋ Page์ Page Table
Page Fault
- invalid page๋ฅผ ์ ๊ทผํ๋ฉด MMU๊ฐ trap์ ๋ฐ์ ์ํด (page fault trap)
- Kernel mode๋ก ๋ค์ด๊ฐ์ page fault handler๊ฐ invoke๋จ
- ๋ค์๊ณผ ๊ฐ์ ์์๋ก page fault๋ฅผ ์ฒ๋ฆฌํ๋ค.
๋๋ถ๋ถ์ ๊ฒฝ์ฐ๋ ํ์ด์ง ํดํธ๋ ๋์ง ์๋๋ค 0.9xxxx
Free frame์ด ์๋ ๊ฒฝ์ฐ
OS๊ฐ ํ๋ ์ญํ , ๋นํ์ด์ง๊ฐ ์์ ๊ฒฝ์ฐ ์ด๋ค ํ์ด์ง๋ฅผ ์ซ์๋ด๊ณ ๋์ฒดํ ์ง
- Page replacement
- ์ด๋ค frame์ ๋นผ์์์ฌ์ง ๊ฒฐ์ ํด์ผ ํจ
- ๊ณง๋ฐ๋ก ์ฌ์ฉ๋์ง ์์ page๋ฅผ ์ซ์๋ด๋ ๊ฒ์ด ์ข์
- ๋์ผํ ํ์ด์ง๊ฐ ์ฌ๋ฌ ๋ฒ ๋ฉ๋ชจ๋ฆฌ์์ ์ซ๊ฒจ๋ฌ๋ค๊ฐ ๋ค์ ๋ค์ด์ฌ ์ ์์
- Replacement Algorithm
- page-fault rate์ ์ต์ํํ๋ ๊ฒ์ด ๋ชฉํ
- ์๊ณ ๋ฆฌ์ฆ์ ํ๊ฐ
- ์ฃผ์ด์ง page reference string์ ๋ํด page fault๋ฅผ ์ผ๋ง๋ ๋ด๋์ง ์กฐ์ฌ
Optimal Algorithm
- Min(OPT): ๊ฐ์ฅ ๋จผ ๋ฏธ๋์ ์ฐธ์กฐ๋๋ page๋ฅผ replace
- Page Fault๋ฅผ ๊ฐ์ฅ ์ ๊ฒ ํ๋ ์๊ณ ๋ฆฌ์ฆ
- Offline algorithm
FIFO (First In First Out) Algorithm
- ๋จผ์ ๋ค์ด์จ ๊ฒ์ ๋จผ์ ๋ด์ซ์
- FIFO Anomaly (Belady's Anomaly)
- more frames => more page faults
LRU (Least Recently Used) Algorithm
- LRU: ๊ฐ์ฅ ์ค๋ ์ ์ ์ฐธ์กฐ๋ ๊ฒ์ ์ง์.
LFU (Least Frequently Used) Algorithm
- LFU: ์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ ์ง์
๋ค์ํ ์บ์ฌ ํ๊ฒฝ
- ์บ์ ๊ธฐ๋ฒ
- ํ์ ๋ ๋น ๋ฅธ ๊ณต๊ฐ(=์บ์ฌ)์ ์์ฒญ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด ๋์๋ค๊ฐ ํ์ ์์ฒญ์ ์บ์ฌ๋ก๋ถํฐ ์ง์ ์๋น์ค ํ๋ ๋ฐฉ์
- paging system ์ธ์๋ cache memory, buffer caching, Web caching๋ฑ ๋ค์ํ ๋ถ์ผ์์ ์ฌ์ฉ
Pageing System์์ LRU, LFU ๊ฐ๋ฅํ๊ฐ?
์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฒฝ์ฐ๋ ์ด์์ฒด์ ๋ ๊ฐ์ฅ ์ต๊ทผ, ์์ฃผ ์ฐธ์กฐ๋๊ฒ์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ถ๊ฐ๋ฅํ๋ค.
trap(page fault)์ด ๋ฐ์ํ ๋๋ง CPU ์ ์ ๊ถ์ด ์ด์์ฒด์ ์๊ฒ ๋์ด์จ๋ค.
Clock Algorithm
- NRU (Not Recently Used)
Page Frame์ Allocation
- Allocation Problem: ๊ฐ process์ ์ผ๋ง๋งํผ์ page frame์ ํ ๋นํด ์ค ๊ฒ ์ธ๊ฐ?
- Allocation์ ํ์์ฑ
- ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ๋ช
๋ น์ด ์ํ์ ๋ช
๋ น์ด, ๋ฐ์ดํฐ ๋ฑ ์ฌ๋ฌ ํ์ด์ง ๋์ ์ฐธ์กฐ
- ๋ช ๋ น์ด ์ํ์ ์ํด ์ต์ํ ํ ๋น๋์ด์ผ ํ๋ frame์ ์๊ฐ ์์
- Loop๋ฅผ ๊ตฌ์ฑํ๋ page๋ค์ ํ๊บผ๋ฒ์ allocate ๋๋ ๊ฒ์ด ์ ๋ฆฌํจ
- ์ต์ํ์ allocation์ด ์์ผ๋ฉด ๋งค loop ๋ง๋ค page fault
- ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ๋ช
๋ น์ด ์ํ์ ๋ช
๋ น์ด, ๋ฐ์ดํฐ ๋ฑ ์ฌ๋ฌ ํ์ด์ง ๋์ ์ฐธ์กฐ
- Allocation Scheme
- Equal allocation: ๋ชจ๋ ํ๋ก์ธ์ค์ ๋๊ฐ์ ๊ฐฏ์ ํ ๋น
- Proportional allocation: ํ๋ก์ธ์ค ํฌ๊ธฐ์ ๋น๋กํ์ฌ ํ ๋น
- Priority allocation: ํ๋ก์ธ์ค์ priority์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ํ ๋น
Global vs Local Replacement
- Global replacement
- replace ์ ๋ค๋ฅธ process์ ํ ๋น๋ frame์ ๋นผ์์ ์ฌ ์ ์ด์ฟ
- Local replacement
- ์์ ์๊ฒ ํ ๋น๋ frame ๋ด์์๋ง replacement
Trashing
- ํ๋ก์ธ์ค์ ์ํํ ์ํ์ ํ์ํ ์ต์ํ์ page frame ์๋ฅผ ํ ๋น ๋ฐ์ง ๋ชปํ ๊ฒฝ์ฐ ๋ฐ์
- Page fault rate์ด ๋งค์ฐ ๋์์ง
- CPU utilization์ด ๋ฎ์์ง
- OS๋ MPD(Multiprogramming degree)๋ฅผ ๋์ฌ์ผ ํ๋ค๊ณ ํ๋จ
- ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์์คํ ์ ์ถ๊ฐ๋จ
- ํ๋ก์ธ์ค ๋น ํ ๋น๋ frame์ ์๊ฐ ๋์ฑ ๊ฐ์
- ํ๋ก์ธ์ค๋ page์ swap in / swap out์ผ๋ก ๋งค์ฐ ๋ฐ์จ
- ๋๋ถ๋ถ์ ์๊ฐ์ CPU๋ ํ๊ฐํจ
- low throughtput
Working-Set Model
-
Locality of reference
- ํ๋ก์ธ์ค๋ ํน์ ์๊ฐ ๋์ ์ผ์ ์์๋ง์ ์ง์ค์ ์ผ๋ก ์ฐธ์กฐํ๋ค
- ์ง์ค์ ์ผ๋ก ์ฐธ์กฐ๋๋ ํด๋น page๋ค์ ์งํฉ์ locality set์ด๋ผ ํจ
-
Working-set Model
- Locality์ ๊ธฐ๋ฐํ์ฌ ํ๋ก์ธ์ค๊ฐ ์ผ์ ์๊ฐ ๋์ ์ํํ๊ฒ ์ํ๋๊ธฐ ์ํด ํ๊บผ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ด์ผ ํ๋ page๋ค์ ์งํฉ์ Working Set์ด๋ผ ์ ์ํจ
- Working Set ๋ชจ๋ธ์์๋ process์ working set ์ ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ด์ผ ์ํ๋๊ณ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๋ชจ๋ frame์ ๋ฐ๋ฉํ ํ swap out
- Thrashing์ ๋ฐฉ์งํจ
- Multiprogramming degree๋ฅผ ๊ฒฐ์ ํจ
PFF (Page-Fault Frequency) Scheme
Page Size์ ๊ฒฐ์
-
Page size๋ฅผ ๊ฐ์์ํค๋ฉด
- ํ์ด์ง ์ ์ฆ๊ฐ
- ํ์ด์ง ํ ์ด๋ธ ํฌ๊ธฐ ์ฆ๊ฐ
- Internal fragmentation ๊ฐ์
- Disk transfer์ ํจ์จ์ฑ ๊ฐ์
- ํ์ํ ์ ๋ณด๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ๋ฉ๋ชจ๋ฆฌ ์ด์ฉ์ด ํจ์จ์
- Locality์ ํ์ฉ ์ธก๋ฉด์์๋ ์ข์ง ์์
-
Trend
- Larger page size