๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ๋์จ ๊ธฐ์
ํ๋ก์ธ์ค๋ฅผ ์คํํ ๋ ํ์ํ ๋ถ๋ถ๋ง ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๊ณ ๋๋จธ์ง๋ ๋์คํฌ์ ๋๋ ๊ฒ
- ex) segmentation, paging
ํ์ํ ํ์ด์ง๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฒ
- I/O ์์ ๊ฐ์
- Memory ์ฌ์ฉ๋ ๊ฐ์
- ๋น ๋ฅธ ์๋ต ์๊ฐ
- ๋ ๋ง์ ์ฌ์ฉ์ ์์ฉ
frame number, vaild bit
Invalid
- ์ฌ์ฉ๋์ง ์์ ์ฃผ์ ์์ญ์ธ ๊ฒฝ์ฐ
- ํ์ด์ง๊ฐ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฒฝ์ฐ ์ฒ์์๋ ๋ชจ๋ page entry๊ฐ invalid๋ก ์ด๊ธฐํ ๋๋ค.
์ฃผ์ ๋ณํ์์ invalid bit๋ก set๋์ด ์๋ค๋ฉดpage fault
๋ฐ์
- page fault๊ฐ ๋ฐ์ํ๋ค.
- TLB์์ page๊ฐ ์๋์ง ํ์ธํ๋ค.
- TLB hit์ธ ๊ฒฝ์ฐ ์ฃผ์๋ณํ์ ํ๊ณ TLB miss์ธ ๊ฒฝ์ฐ page table์ ํ์ธํ๋ค.
- page table์ valid-invalid bit๊ฐ vaild์ด๋ผ๋ฉด TLB์ page table์ loadํ๋ค. invaild์ด๋ผ๋ฉด page fault ๋ฐ์
- page fault๊ฐ ๋ฐ์ํ๋ฉด MMU๊ฐ ์ด์์ฒด์ ์ Trap์ ๋ฐ์์ํค๊ณ ์ปค๋๋ชจ๋๋ก ๋ค์ด๊ฐ ISR์ ์ํด page fault handler๊ฐ ์๋๋๋ค.
- ์ ํจํ์ง ์์ ์ฐธ์กฐ์ธ ๊ฒฝ์ฐ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃ์ํค๊ณ ๊ทธ๋ ์ง ์๋ค๋ฉด ๋น page frame์ loadํ๋ค. ๋น page frame์ด ์๋ค๋ฉด victim page ๋ฅผ ์ ํํ์ฌ ๋์ฒดํ๋ค
- victim page: backing store(disk)๋ก page out ๋๋ page
- ์ด์์ฒด์ ๋ ์ฐธ์กฐ๋ page๋ฅผ ๋์คํฌ์์ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ก๋(I/O)ํ๊ณ , disk I/O๊ฐ ๋๋ ๋๊น์ง ํด๋น ํ๋ก์ธ์ค๋ ์ด์์ฒด์ ์๊ฒ CPU๋ฅผ ๋นผ์๊ธด๋ค.
- disk I/O๊ฐ ๋๋๋ฉด page table์ด ์ ๋ฐ์ดํธ ๋๊ณ vaild-invaild bit๊ฐ valid๋ก ๋ฐ๋๋ค. ํด๋น ํ๋ก์ธ์ค๋ ready queue์ ๋ค์ด๊ฐ๋ค.
- ํ๋ก์ธ์ค์ cpu๊ฐ ํ ๋น๋๋ฉด ๋ค์ ์คํํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์๋ page๋ฅผ ๊ด๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ
page in: backing store์์ ๋ฉ๋ชจ๋ฆฌ์ load ์ํค๋ ๊ฒ
page out: ๋ฉ๋ชจ๋ฆฌ์์ backing store๋ก out ์ํค๋ ๊ฒ
- page out๋๋ page๋ฅผ victim page๋ก ๋ถ๋ฆ page fault rate๋ฅผ ์ค์ด๊ธฐ ์ํ ์๊ณ ๋ฆฌ์ฆ
- page fault์ ๋ฐ์ํ๋ ์ค๋ฒํค๋๊ฐ ํฌ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์์ ๋ page๋ backing store๋ก page out๋ ๋ write ์ฐ์ฐ์ ํด์ผ๋๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฐ์ฅ ๋จผ ๋ฏธ๋์ ์ฐธ์กฐ๋๋ page๋ฅผ ๋์ฒดํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํญ์ ์ต์ ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋๋ค.
๋ค๋ง ๋ฏธ๋์ ์ฐธ์กฐ๋ฅผ ๋ชจ๋ ์๊ณ ์์ด์ผ ํ๋ฏ๋ก ์ค์ ๋ก ์ฌ์ฉํ๊ธฐ๋ ์ด๋ ต๊ณ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ์ํ upper bound๋ฅผ ์ ๊ณตํ๋ ์ญํ ์ ํ๋ค.
๋จผ์ ๋ค์ด์จ page๋ถํฐ page out ์ํค๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ฏธ๋๋ฅผ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ ์ ์๊ณ ๋ชจ๋ page๊ฐ frame์ ํ๋ฑํ๊ฒ ์กด์ฌํ๋ค.
balady's anomaly ์กด์ฌ
- ์ผ๋ฐ์ ์ผ๋ก frame์ด ์ฆ๊ฐํ๋ฉด page fault๊ฐ ๊ฐ์ํ์ง๋ง ํน์ ๊ตฌ๊ฐ์์ ๋์ด๋๋ ํ์์ด ๋ฐ์
์ฐธ์กฐํ์ง ๊ฐ์ฅ ์ค๋๋ page๋ฅผ page out ์ํค๋ ๋ฐฉ๋ฒ
optimal์ ๊ทผ์ ํ ๋ฐฉ๋ฒ์ด๋ฉฐ belady's anomaly๊ฐ ์กด์ฌํ์ง ์๋๋ค.
๊ตฌํํ๊ธฐ ์ด๋ ต๊ณ ์ ๊ทผ๋น๋๋ฅผ ๊ณ ๋ คํ์ง ์๋๋ค.
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ๊ตฌํํ๋ฉด O(1)๋ง์ page๋ฅผ ์ฐพ๊ณ ์ฝ์ ํ ์ ์๋ค. ์ ์ผ ์ต๊ทผ์ ์ฐน์กฐ๋ page๋ฅผ ๊ฐ์ฅ ์์ผ๋ก ์ฎ๊ธฐ๋ ๋ฐฉ์์ผ๋ก ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ๊ตฌํํ๋ฉด replace๊ฐ ์ผ์ด๋ ๋ ๊ฐ์ฅ ๋ค์ ์๋ page๋ฅผ ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค.
์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ์ ์ page๋ฅผ page out ์ํค๋ ๋ฐฉ๋ฒ
page๋ฅผ ์ฐธ์กฐํ๋ ๋น๋๋ ๊ณ ๋ คํ์ง๋ง ์ต๊ทผ์ ์ฌ์ฉ๋ page๋ ๋ฐ์ํ์ง ๋ชปํ๋ค.
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด์ ๊ตฌํํ๋ฉด replace ๋ page๋ฅผ ์ฐพ๋๋ฐ O(n)์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ณ heap์ ์ด์ฉํ๋ฉด O(logn)์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
- heap: ์์ ์ด์ง ํธ๋ฆฌ์ ์ผ์ข ์ผ๋ก ์ฐ์ ์์ ํ ํํ์ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
LRU์ LFU์ ์ด์์ฒด์ ๊ฐ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ ์งํ๋ ์์ ์ ์ํํด์ผ ํ์ง๋ง page fault๊ฐ ๋ฐ์ํ์ง ์์ผ๋ฉด ์ด์์ฒด์ ์๊ฒ cpu๊ฐ ๋์ด๊ฐ์ง ์๊ธฐ ๋๋ฌธ์ ๋์คํฌ์์ ๋ฉ๋ชจ๋ฆฌ๋ก page๋ฅผ ๋ก๋ํ ๋ ํด๋น page์ ๋ํ ์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธ ํ ์ ์๋ค.
- ์ด์์ฒด์ ๊ฐ page์ ๋ํ ์ฐธ์กฐ ํ์, ์ต๊ทผ์ ์ฐธ์กฐํ page๋ฅผ ์ ํํ๊ฒ ์ ์ ์๋ค.
ํด๋น ์๊ณ ๋ฆฌ์ฆ์ LRU์ ๊ทผ์ฌํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก page์ ๋ํ ์ต๊ทผ ์ฐธ์กฐ ์ฌ๋ถ๋ฅผ ์ ์ ์๋๋ก reference bit๋ฅผ ์ฌ์ฉํ๋ค
reference bit๊ฐ 0์ธ ๊ฒ์ ์ฐพ์ ๋๊น์ง ์๊ณ์ฒ๋ผ ํฌ์ธํฐ๋ฅผ ์ด๋ํ๋ค๊ฐ 0์ธ ๊ฒ์ ์ฐพ์ผ๋ฉด page๋ฅผ ๊ต์ฒดํ๋ค.
๋ง์ฝ reference bit๊ฐ 1์ธ page๋ฅผ ๋ง๋๋ฉด 0์ผ๋ก ๋ฐ๊พธ์ด ์ฃผ๊ณ ๋ค์ ํ ๋ฐํด ๋์์์ ๋๋ 0์ด๋ผ๋ฉด page๋ฅผ ๊ต์ฒดํ๋ค. ๋ง์ฝ ๋์์์ ๋ 1๋ก ๋ฐ๋์ด์๋ค๋ฉด ์ต๊ทผ์ ์ฐธ์กฐํ๋ค๋ ๋ป์ด๊ธฐ ๋๋ฌธ์ด๋ค.
- modified bit: page๊ฐ ์์ ๋์๋์ง ์ฌ๋ถ๋ฅผ ํ๋จ
page๊ฐ ์์ ๋์๋ค๋ฉด page out์ disk I/O์ write ๋์์ด ์ํ๋๊ธฐ ๋๋ฌธ์ cost๊ฐ ๋ฐ์
- ํ๋ก์ธ์ค๋ง๋ค ์ผ๋ง๋งํผ์ page frame์ ํ ๋นํ ์ง์ ๋ํ ๋ฌธ์
- Allocation์ ํ์์ฑ
๋ช ๋ น์ด ์ํ์ ์ํด ์ต์ํ ํ ๋น๋์ด์ผ ํ๋ frame์ ์๊ฐ ์กด์ฌํจ.
Loop๋ฅผ ๊ตฌ์ฑํ๋ page๋ค์ ํ๊บผ๋ฒ์ ํ ๋นํ๋ ๊ฒ์ด ์ข๋ค
- ์ต์ํ์ ํ ๋น์ด ์๋ค๋ฉด ๋งค Loop๋ง๋ค page fault ๋ฐ์
ํ ๋นํ๋ ๋ฐฉ์์ผ๋ก๋ ๊ท ์ผํ๊ฒ ํ ๋นํ๊ฑฐ๋ ํน์ ๊ธฐ์ค์ ๋ฐ๋ผ์ ํ ๋นํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
- Equal allocation: ๋ชจ๋ ํ๋ก์ธ์ค์ ๊ท ๋ฑํ๊ฒ ํ ๋น
- Proportional allocation: ํ๋ก์ธ์ค ํฌ๊ธฐ์ ๋น๋กํ์ฌ ํ ๋น
- priority allocation: ํ๋ก์ธ์ค์ ์ฐ์ ์์์ ๋ฐ๋ผ ํ ๋น
page fault๊ฐ ๋ฐ์ํ์ ๋ ๊ต์ฒด๋๋ frame์ ๊ทธ๋ฃน์๋ ๋ ๊ฐ์ง๊ฐ ์๋ค.
Replace์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋น๋ frame์ ๋นผ์์์ฌ ์ ์๋ค. ํ๋ก์ธ์ค๋ณ๋ก frame ํ ๋น๋์ ์กฐ์ ํ๋ ๋ฐฉ๋ฒ์ด ๋ ์๋ ์์ง๋ง, ์์ ์ page fault rate๋ฅผ ์กฐ์ ํ ์ ์๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ๋ ์ข์ ์ฒ๋ฆฌ๋์ ๊ฐ์ง๋ฏ๋ก ๊ฐ์ฅ ํํ๊ฒ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ด๋ค
์์ ์๊ฒ ํ ๋น๋ frame ๋ด์์๋ง ๊ต์ฒดํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์๊ณ ๋ฆฌ์ฆ์ ํ๋ก์ธ์ค๋ง๋ค ๋ ์์ ์ผ๋ก ์ด์ํ๋ ๊ฒฝ์ฐ ๊ฐ๋ฅํ๋ค
- ์ฌ๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋น๊ต์ ๋นํจ์จ์ ์ด๋ค.
ํ๋ก์ธ์ค๊ฐ ์ํํ ์คํ์ ํ์ํ ์ต์ํ์ page frame์ ํ ๋น๋ฐ์ง ๋ชปํด์ ์คํ๋ณด๋ค swapping ํ๋ ์๊ฐ์ด ๋ ๋ง์ ๊ฒฝ์ฐ
- page fault rate ์ฆ๊ฐ
- CPU utilization ๊ฐ์
- page๊ฐ ๋ถ์กฑํ์ฌ page fault ๋ฐ์
- Swapping(I/O)๊ฐ ๋ฐ์ํ์ฌ CPU utilization ๊ฐ์
- OS๋ MPD(Multiprogramming Degree)๋ฅผ ์ฆ๊ฐ์์ผ์ผ ํ๋ค๊ณ ํ๋จํ์ฌ ํ๋ก์ธ์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ load์ํจ๋ค
- ํ๋ก์ธ์ค๋น ํ ๋น๋ page frame์ด ๋ ๊ฐ์ํ์ฌ page fault๊ฐ ์ฆ๊ฐํ๋ค.
- ํ๋ก์ธ์ค๋ Swapping์ผ๋ก ์ธํด ๋งค์ฐ ๋ฐ๋น ์ ธ์ CPU ์ฌ์ฉ๋์ด ๊ฐ์ํ๋ค
- low throughput ๋ฐ์
Thrashing์ ์๋ฐฉํ๊ธฐ ์ํด์๋ ํ๋ก์ธ์ค์๊ฒ ํ์ํ ๋งํผ frame์ ์ ๊ณตํด์ผํ๋ค.
- ๊ฐ๋ฅํ ์ต๋์ Multiprogramming Degree๋ฅผ ์ ์งํ๋ฉด์ Thrashing์ ๋ง๋ ๋ฐฉ๋ฒ
Locality of Reference(์ฐธ์กฐ ์ง์ญ์ฑ ์๋ฆฌ)๋ ํ๋ก์ธ์ค๊ฐ ํน์ ์๊ฐ ๋์ ์ผ์ ์ฅ์๋ฅผ ์ง์ค์ ์ผ๋ก ์ฐธ์กฐํ๋ ์ฑ์ง์ ๋งํ๋ค. Locality์ ๊ธฐ๋ฐํ์ฌ ํ๋ก์ธ์ค๊ฐ ์ผ์ ์๊ฐ ๋์ ์ํํ ์ํ๋๊ธฐ ์ํด ํ๊บผ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์์ด์ผ ํ๋ page๋ค์ ์งํฉ์
working set
์ด๋ผ๊ณ ํ๋ค.
working set์ working set window๋ผ๋ ๊ณ ์ ๋ page ์ฐธ์กฐ ํ์(์๊ฐ)๋ก ๊ตฌํ๋ค
- page fault์ ์ํ์ ๊ณผ ํํ์ ์ ๋๋ ๋ฐฉ๋ฒ
page fault rate๊ฐ ์ํ์ ์ ๋์ผ๋ฉด
- frame์ ๋ ํ ๋นํด์ค๋ค. page fault rate๊ฐ ํํ์ ์ ๋์ผ๋ฉด
- ํ ๋น๋ frame์ ์ค์ธ๋ค.
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฒ์ ๋์คํฌ๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฌ์ฉํ๋ ๋์คํฌ ํ์ด์ง(์ค์)๊ณผ๋ ์ง์ ์ ์ผ๋ก ์ฐ๊ด์ด ์๋ค. ์ฌ๊ธฐ์ ๊ฐ์(Virtual) ์ ์๋ฏธ๋ ๋์คํฌ๋ฅผ ๊ฐ์์ RAM ์ฒ๋ผ ์ด๋ค๋ ์๋ฏธ๊ฐ ์๋๋ผ, ๊ฐ ํ๋ก์ธ์ค๋ง๋ค ์ค์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ ๊ฐ์์ ์ฃผ์ ๊ณต๊ฐ์ ๋ณด์ด๊ฒ ํ๋ค๋ ์๋ฏธ์ด๋ค. ์ฌ์ค ๋๊ฒ ๋ณด๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ๋ด์ฉ์ ๋์คํฌ์ ์์๋ก ์ ์ฅํ๋ ๊ฐ๋ ์์ฒด๋ ๋ณ๋ก ํน์ดํ ๊ฒ๋ ์๋๊ณ ์ด๋ก ์ ์ผ๋ก๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๋ ์์คํ ์์๋ ๊ตฌํํ ์ ์๋ค.์ด๋ ๊ฒ ์ฉ์ด๊ฐ ํผ๋๋์ด ์ฐ์ด๋ ์ด์ ๋ Windows ์์ ์ด๋ฌํ ๋์คํฌ ์ค์ ์ค์ ์ "๊ฐ์ ๋ฉ๋ชจ๋ฆฌ" ๋ผ๊ณ ๋ฒ์ญ ํด๋์๊ธฐ ๋๋ฌธ์ด๋ค.
์ถ์ฒ - ๋๋ฌด์ํค ๊ฐ์๋ฉ๋ชจ๋ฆฌ
๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ๋์จ ๊ธฐ์ ๋ก ํ๋ก์ธ์ค๋ฅผ ์คํํ ๋ ํ์ํ ๋ถ๋ถ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค๋๊ณ ๋๋จธ์ง๋ ๋์คํฌ์ ๋๋ ๊ฒ์ด๋ค.
Paging(ํ์ด์ง)์ Noncontiguous Allocation ๋ฐฉ์์ผ๋ก ์ธ๋ถ ๋จํธํ์ ์์ถ ์์ ์ ๋นํจ์จ์ฑ์ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ ํ๋ ์(Frame), ํ๋ก์ธ์ค๋ ํ์ด์ง(Page)๋ผ ๋ถ๋ฆฌ๋ ๊ณ ์ ํฌ๊ธฐ์ ๋ธ๋ก(Block)์ผ๋ก ๋ถ๋ฆฌ๋๋ค.
Fragmentation(๋จํธํ)์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๊ณ ์ ๊ฑฐ๋๋ ์ผ์ด ๋ฐ๋ณต๋๋ฉด ํ๋ก์ธ์ค๋ค์ด ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ ํ ์ฌ์ด์ ์ฌ์ฉํ์ง ๋ชปํ ๋งํผ์ ์์ ๊ณต๊ฐ๋ค์ด ๋์ด๋๊ฒ ๋๋ ํ์์ ๋งํ๋ค.
external fragmentation
- ์ธ๋ถ ๋จํธํ๋ ํ๋ก์ธ์ค๊ฐ ๋ค์ด๊ฐ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์์๋ ๋ถ๊ตฌํ๊ณ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฐ์ํ์ง ์์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค. internal fragmetation
- ๋ด๋ถ ๋จํธํ๋ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ณด๋ค ๋ถํ ๋ ๊ณต๊ฐ์ด ๋ ์ปค์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋จ๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค.
๋ฉ๋ชจ๋ฆฌ ์์ถ(๋์คํฌ ์กฐ๊ฐ ๋ชจ์), ๋ฉ๋ชจ๋ฆฌ ํตํฉ(๋จํธํ๊ฐ ๋ฐ์๋ ๊ณต๊ฐ๋ค์ ๋ชจ์ ํ๋์ ํฐ ๊ณต๊ฐ์ผ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ)
์ฐธ๊ณ )
- KOCW ๊ณต๊ฐ๊ฐ์ (2014-1. ์ดํ์ฌ์๋ํ๊ต - ๋ฐํจ๊ฒฝ)
- https://rebro.kr/179