Search

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ

Demand Paging

โ€ข
ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ๊ทธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ฃผ์†Œ๊ณต๊ฐ„์˜ ํŽ˜์ด์ง€๋ฅผ ์ „๋ถ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ demand paging ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉ
โ€ข
์š”์ฒญ์ด ๋์„ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฐ๋‹ค.
โ€ข
IO ์–‘์˜ ๊ฐ์†Œ
โ—ฆ
ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ์ฃผ์†Œ๊ณต๊ฐ„ ์ค‘์—์„œ ์‹ค์ œ๋กœ ๋นˆ๋ฒˆํžˆ ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„์€ ์ง€๊ทนํžˆ ์ œํ•œ์ 
โ—ฆ
์ข‹์€ ์†Œํ”„ํŠธ์›จ์–ด์ผ์ˆ˜๋ก ๋ฐฉ์–ด์ ์ธ ์ฝ”๋“œ๊ฐ€ ๋Œ€๋ถ€๋ถ„
โ—ฆ
์ด๋Ÿฐ ๋ฐฉ์–ด์ ์ธ ์ฝ”๋“œ๋ฅผ ํ•œ๋ฒˆ์— ์˜ฌ๋ฆฌ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„
โ€ข
๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๊ฐ์†Œ
โ€ข
๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„
โ€ข
๋” ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜์šฉ ๊ฐ€๋Šฅ
โ€ข
์šฐ์ธก์˜ ์›ํ†ต์€ ๋””์Šคํฌ(swap area)
โ€ข
valid/invalid bit ์˜ ์‚ฌ์šฉ
โ—ฆ
invalid
โ–ช
์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ฃผ์†Œ ์˜์—ญ
โ–ช
ํŽ˜์ด์ง€๊ฐ€ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ๊ฒฝ์šฐ
โ—ฆ
์ฒ˜์Œ์—๋Š” ๋ชจ๋“  page entry ๊ฐ€ invalid ๋กœ ์ดˆ๊ธฐํ™”
โ—ฆ
address translation ์‹œ invalid bit ์ด set ๋˜์–ด์žˆ์œผ๋ฉด page fault
โ€ข
์˜ˆ์‹œ
โ—ฆ
1๋ฒˆ ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ๋ณด๋‹ˆ page table ์—์„œ invalid bit ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋‹ค๋Š” ๋œป
โ—ฆ
๋””์Šคํฌ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์˜ฌ๋ฆฐ๋‹ค. โ†’ IO ์ž‘์—… โ†’ ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง์ ‘ ๋ชปํ•˜๋Š” ์ผ
โ—ฆ
page fault
โ—ฆ
๊ทธ๋Ÿฌ๋ฉด CPU ๋Š” ์šด์˜ ์ฒด์ œ์— ๋„˜์–ด๊ฐ„๋‹ค.
โ—ฆ
์šด์˜ ์ฒด์ œ๋Š” fault ๋‚œ ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฐ๋‹ค.

page fault

โ€ข
invalid page ๋ฅผ ์ ‘๊ทผํ•˜๋ฉด MMU๊ฐ€ trap ์„ ๋ฐœ์ƒ์‹œํ‚ด
โ€ข
kernel mode ๋กœ ๋“ค์–ด๊ฐ€์„œ page fault handler ๊ฐ€ invoke ๋จ
โ€ข
page fault ์ฒ˜๋ฆฌ ๋ฃจํ‹ด
1.
invalid reference ์ธ์ง€ ํ™•์ธ(bad address, protection violation) โ†’ process ๋ฅผ abort ํ•œ๋‹ค.
2.
๋น„์–ด์žˆ๋Š” page frame ์„ ๊ฐ€์ ธ์˜ค๊ณ  ๋นˆ ํŽ˜์ด์ง€๊ฐ€ ์—†์œผ๋ฉด ์ซ“์•„๋‚ด๊ณ  ๋บ์–ด์˜จ๋‹ค.
3.
ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ disk ์—์„œ memory ๋กœ ์ฝ์–ด์˜จ๋‹ค.
a.
disk IO ๊ฐ€ ๋๋‚˜๊ธฐ๊นŒ์ง€ ์ด ํ”„๋กœ์„ธ์Šค๋Š” CPU ๋ฅผ ์„ ์ ๋‹นํ•จ(block)
b.
disk read ๊ฐ€ ๋๋‚˜๋ฉด page table entry ๋ฅผ ๊ธฐ๋กํ•˜๊ณ  valid ๋กœ ๋ฐ”๊พผ๋‹ค.
c.
ready queue ์— process ๋ฅผ insert ํ•œ๋‹ค.
โ€ข
emtry frame ์ด ์—†๋Š” ๊ฒฝ์šฐ page replacement ๋ฅผ ํ•ด์•ผํ•˜๊ณ  replacement algorithm ์œผ๋กœ page fault rate ์„ ์ตœ์†Œํ™”ํ•œ๋‹ค.

Replace Algorithm

optimal algorithm

โ€ข
๊ฐ€์žฅ ๋จผ ๋ฏธ๋ž˜์— ์ฐธ์กฐ๋˜๋Š” page ๋ฅผ replace
โ€ข
์–ด๋–ค ํŽ˜์ด์ง€๊ฐ€ ์ฐธ์กฐ๋  ์ง€ ์•ˆ๋‹ค๋Š” ๊ฐ€์ •์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
โ€ข
๊ทธ๋ž˜์„œ ์‹ค์ œ๋กœ ์ ์šฉํ•˜์ง€๋Š” ๋ชปํ•œ๋‹ค.
โ€ข
์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ upper bound ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

FIFO algorithm

โ€ข
๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์˜จ ๊ฒƒ์„ replace
โ€ข
๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๋Š”๋ฐ ์„ฑ๋Šฅ์ด ๋‚˜๋น ์ง€๋Š”(fault ๋ฅผ ๋” ๋งŽ์ด ๋ƒ„) ํŠน์ด์ ์ด ์žˆ๋‹ค.

Least Recently Used algorithm

โ€ข
๊ฐ€์žฅ ์˜ค๋ž˜ ์ „์— ์ฐธ์กฐ๋œ ๊ฒƒ์„ replace

Least Frequently Used algorithm

โ€ข
์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ํŽ˜์ด์ง€๋ฅผ replace
โ€ข
์ตœ์ € ์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒฝ์šฐ
โ—ฆ
LUF ์ž์ฒด์—์„œ๋Š” ์ž„์˜๋กœ ์„ ์ •
โ—ฆ
์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€ ์ค‘ PRU ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
โ€ข
์žฅ๋‹จ์ 
โ—ฆ
์žฅ๊ธฐ์ ์ธ ์‹œ๊ฐ„ ๊ทœ๋ชจ๋ฅผ ๋ณด๊ธฐ ๋•Œ๋ฌธ์— page ์˜ ์ธ๊ธฐ๋„ ๋ฐ˜์˜
โ—ฆ
์ตœ๊ทผ์„ฑ ๋ฐ˜์˜ ๋ถˆ๊ฐ€
โ—ฆ
LRU ๋ณด๋‹ค ๊ตฌํ˜„์ด ๋ณต์žก

LRU vs LFU

LRU ๋Š” ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•œ ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(1)
LFU ๋Š” ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด O(N) ์‹œ๊ฐ„ ๋ณต์žก๋„
LFU ๋ฅผ ํž™์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด O(logN)
CPU๊ฐ€ ์š”์ฒญํ•œ ํŽ˜์ด์ง€ ์ˆœ์„œ
1,1,1,1,2,2,3,3,2,4,5
โ€ข
LRU ๋Š” ๊ฐ€์žฅ ์˜ค๋ž˜ ์ „์— ์ฐธ์กฐํ•œ ํŽ˜์ด์ง€๋ฅผ ์‚ญ์ œ - 1๋ฒˆ ํŽ˜์ด์ง€(๋„๋‘‘์งˆ ์˜ˆ์‹œ)
โ€ข
LFU ๋Š” ๊ฐ€์žฅ ์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ์ ์€ ํŽ˜์ด์ง€๋ฅผ ์‚ญ์ œ - 4๋ฒˆ ํŽ˜์ด์ง€(๋„์„œ๊ด€ ์ฑ… ๋Œ€์ถœ ์˜ˆ์‹œ)
โ—ฆ
๊ฐ„๊ณผํ•˜๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ์˜ˆ์ธก์ด ๋ถ€์กฑ

๋‹ค์–‘ํ•œ ์บ์‹ฑ ํ™˜๊ฒฝ

โ€ข
์บ์‹ฑ ๊ธฐ๋ฒ•
โ—ฆ
ํ•œ์ •๋œ ๋น ๋ฅธ ๊ณต๊ฐ„์— ์š”์ฒญ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด ๋‘์—ˆ๋‹ค๊ฐ€ ํ›„์† ์š”์ฒญ์‹œ ์บ์‹œ๋กœ๋ถ€ํ„ฐ ์ง์ ‘ ์„œ๋น„์Šคํ•˜๋Š” ๋ฐฉ์‹
โ—ฆ
paging system ์™ธ์—๋„ cache memory, buffer caching, web caching ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์‚ฌ์šฉ
โ€ข
์บ์‹œ ์šด์˜์˜ ์‹œ๊ฐ„ ์ œ์•ฝ
โ—ฆ
๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์‚ญ์ œํ•  ํ•ญ๋ชฉ์„ ๊ฒฐ์ •ํ•˜๋Š” ์ผ์— ์ง€๋‚˜์น˜๊ฒŒ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ ์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ
โ€ข
์‚ฌ์‹ค LRU, LFU ๋Š” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
โ—ฆ
LRU, LFU ๋“ฑ ์ด์ „ ์ฐธ์กฐ ๋‚ด์šฉ์„ ์ €์žฅํ•˜๋ ค๋ฉด ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋กœ์ง์ด ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ, page ๊ฐ€ ์ด๋ฏธ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” OS ๊ฐ€ CPU ์ œ์–ด๊ถŒ์„ ์–ป์ง€ ๋ชปํ•ด ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋กœ์ง ์ˆ˜ํ–‰์„ ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.

Clock algorithm

โ€ข
LRU ๊ทผ์‚ฌ(approximation) ์•Œ๊ณ ๋ฆฌ์ฆ˜
โ€ข
second chance algorithm, Not Used Recently ๋˜๋Š” Not Recently Used ๋“ฑ์œผ๋กœ ๋ถˆ๋ฆผ
โ€ข
โ€ข
reference bit ์„ ์‚ฌ์šฉํ•œ๋‹ค. ํŽ˜์ด์ง€ ์ฐธ์กฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•˜๋“œ์›จ์–ด์—์„œ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ reference bit ์„ 1๋กœ ๋ฐ”๊พผ๋‹ค.
โ€ข
0 ์˜ ์˜๋ฏธ๋Š” ์‹œ๊ณ„ ๋ฐ”๋Š˜์ด ํ•œ๋ฐ”ํ€ด ๋„๋Š” ๋™์•ˆ ์ฐธ์กฐ๊ฐ€ ์—†์—ˆ๋‹ค.
โ€ข
1 ์€ ์ตœ์†Œ ํ•œ ๋ฒˆ ์ฐธ์กฐ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ OS ๊ฐ€ ๋‚ด์ซ“์„ ํŽ˜์ด์ง€ ์ฐพ์„ ๋•Œ 1์ด๋ฉด 0์œผ๋กœ ๋ฐ”๊พธ๊ณ  ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ
โ€ข
modified bit(dirty bit) ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์„œ ์ฐธ์กฐ ์ด์™ธ์—๋„ ๋ณ€๊ฒฝ ํŽ˜์ด์ง€์— ๋Œ€ํ•ด์„œ๋„ ๊ธฐ๋ก ์ €์žฅ

page frame allocation

โ€ข
๊ฐ ํ”„๋กœ์„ธ์Šค์— ์–ผ๋งˆ๋งŒํผ์˜ page frame ์„ ํ• ๋‹นํ•  ๊ฒƒ์ธ๊ฐ€?
โ€ข
allocation ์˜ ํ•„์š”์„ฑ
โ—ฆ
๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ ๋ช…๋ น์–ด ์ˆ˜ํ–‰์‹œ ๋ช…๋ น์–ด, ๋ฐ์ดํ„ฐ ๋“ฑ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€ ๋™์‹œ์— ์ฐธ์กฐ
โ—ฆ
๋ช…๋ น์–ด ์ˆ˜ํ–‰์„ ์œ„ํ•ด ์ตœ์†Œํ•œ ํ• ๋‹น๋˜์–ด์•ผ ํ•˜๋Š” frame ์˜ ์ˆ˜๊ฐ€ ์žˆ์Œ
โ—ฆ
loop ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” page ๋“ค์€ ํ•œ๊บผ๋ฒˆ์— allocate ๋˜์–ด์•ผ ํ•จ
โ—ฆ
์ตœ์†Œํ•œ์˜ allocation ์ด ์—†์œผ๋ฉด ๋งค loop ๋งˆ๋‹ค page fault
โ€ข
equal allocation: ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ๋˜‘๊ฐ™์€ ๊ฐฏ์ˆ˜ ํ• ๋‹น
โ€ข
proportional allocation: ํ”„๋กœ์„ธ์Šค ํฌ๊ธฐ์— ๋น„๋ก€ํ•˜์—ฌ ํ• ๋‹น
โ€ข
priority allocation: ํ”„๋กœ์„ธ์Šค์˜ priority ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ํ• ๋‹น

global replacement

โ€ข
replace ์‹œ ๋‹ค๋ฅธ process ์— ํ• ๋‹น๋œ frame ์„ ๋นผ์•—์„ ์ˆ˜ ์žˆ๋‹ค.
โ€ข
process ๋ณ„ ํ• ๋‹น๋Ÿ‰ ์กฐ์ ˆ ๊ฐ€๋Šฅ
โ€ข
working set, PFF ์•Œ๊ณ ๋ฆฌ์ฆ˜

local replacement

โ€ข
์ž์‹ ์—๊ฒŒ ํ• ๋‹น๋œ frame ๋‚ด์—์„œ๋งŒ replacement

Thrashing