๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
HYU/์šด์˜์ฒด์ œ(OS)

11. Virtual Memory (2)

by Jaeguk 2023. 5. 19.

page fault๋ฅผ ๋งŽ์ด ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•ž์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ํŽ˜์ด์ง€๋ฅผ victim์œผ๋กœ ์„ ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

์•ž์—์„œ๋Š” ์ด ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ช‡ ๊ฐœ์˜ ํ”„๋ ˆ์ž„์ด ํ• ๋‹น๋˜์—ˆ๋‹ค๋Š” ๊ฐ€์ • ํ•˜์— victim์„ ์„ ์ •ํ–ˆ์—ˆ๋‹ค.

๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฒ˜์Œ์— ๊ฐ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ช‡ ๊ฐœ์˜ frame์„ ํ• ๋‹นํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ์ •ํ•ด์•ผ ํ•œ๋‹ค.

 

Allocation of Frames

๊ฐ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ํ•„์š”๋กœ ํ•˜๋Š” ์ตœ์†Œ frame์˜ ์ˆ˜๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

ํ•˜๋“œ์›จ์–ด์ ์ธ ์ธก๋ฉด์—์„œ instruction ํ•˜๋‚˜๊ฐ€ 6byte๋ผ๋ฉด, instruction ํ•˜๋‚˜๊ฐ€ 2ํŽ˜์ด์ง€์— ๊ฑธ์ณ์„œ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ช…๋ น์ด source์˜ ์ฃผ์†Œ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ, destination์— ์žˆ๋Š” ์ฃผ์†Œ์— ์˜ฎ๊ฒจ๋ผ. ์ด๋Ÿฐ instruction์ด๊ณ  source๊ฐ€ 2 ํŽ˜์ด์ง€์— ๊ฑธ์ณ์„œ ์žˆ๊ณ , destination ์—ญ์‹œ 2 ํŽ˜์ด์ง€์— ๊ฑธ์ณ์„œ ์žˆ๋‹ค๋ฉด ์ด 6๊ฐœ์˜ ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•  ๊ฒƒ์ด๋‹ค.

=> ์ด instruction์€ ์ตœ์†Œ 6๊ฐœ์˜ ํŽ˜์ด์ง€๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค.

=> 5๊ฐœ์˜ frame๋งŒ ํ• ๋‹นํ•˜๊ฒŒ ๋˜๋ฉด instruction์„ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชป ํ•˜๊ฒŒ ๋  ์ˆ˜๋„ ์žˆ๋‹ค.

 

์†Œํ”„ํŠธ์›จ์–ด์ ์ธ ์ธก๋ฉด์—์„œ, ์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ณ„์† ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ˆ๊นŒ.
Loop๊ฐ™์€ ๊ฒฝ์šฐ๋Š” Loop๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ํŽ˜์ด์ง€์™€ ๋ฐ์ดํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์–ด์•ผ Loop๋ฅผ ๋„๋Š” ๋™์•ˆ์— ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค.

=> ์ž์ฃผ ์ˆ˜ํ–‰๋˜๋Š” instruction๊ณผ Data๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

=> ์†Œํ”„ํŠธ์›จ์–ด ์ธก๋ฉด์—์„œ locality์— ํฌํ•จ๋˜๋Š” instruction๊ณผ data๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์„ ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ frame์ด ํ• ๋‹น ๋˜์–ด์•ผ ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„๋Š”๋ฐ ์žˆ์–ด์„œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.

 

ํ”„๋กœ์„ธ์Šค์—๊ฒŒ frame์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ• 2๊ฐ€์ง€๋ฅผ ์‚ดํŽด๋ณด์ž.

Fixed Allocation๊ณผ Priority Allocation

 

Fixed Allocation

์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด Fixed Allocation ๋ฐฉ์‹์€ ๊ฐ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๊ณ ์ •๋œ ์ˆ˜์˜ frame์„ ํ• ๋‹นํ•ด์ค€๋‹ค.

Equal allocation

: ํ”„๋กœ์„ธ์Šค์˜ ํฌ๊ธฐ์™€ ๊ด€๊ณ„์—†์ด ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋™์ผํ•œ ํŽ˜์ด์ง€๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
E.g 100๊ฐœ์˜ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ frame์ด ์žˆ๊ณ , ํ”„๋กœ์„ธ์Šค๊ฐ€ 5๊ฐœ๋ผ๋ฉด ํ”„๋กœ์„ธ์Šค๋‹น 20๊ฐœ์˜ frame ํ• ๋‹น

Proportional allocation

: ํ”„๋กœ์„ธ์Šค ํฌ๊ธฐ์˜ ๋น„์œจ์— ๋”ฐ๋ผ ํ”„๋ ˆ์ž„์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•

 

Fixed allocation์€ ๋งค์šฐ ๊ฐ„๋‹จํ•œ ๋ฐฉ์‹์œผ๋กœ frame์˜ ์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

 

Priority Allocation

Priority Allocation์€ Proportional Allocation ๊ธฐ๋ฒ•์ธ๋ฐ ๋‹จ์ง€ ์‚ฌ์ด์ฆˆ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋น„๋ก€ํ•ด์„œ ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ”„๋กœ์„ธ์Šค์˜ ์ค‘์š”๋„๋ฅผ ๊ธฐ๋ฐ˜ํ•ด์„œ ๋น„๋ก€ํ•˜๊ฒŒ ํ”„๋ ˆ์ž„์„ ํ• ๋‹นํ•˜๋Š” ๊ธฐ๋ฒ•

ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ”„๋ ˆ์ž„์„ ๋งŽ์ด ํ• ๋‹นํ•ด์ฃผ๋ฉด ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ ๋˜๊ณ , I/O๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋นจ๋ฆฌ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.
=> ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋งŽ์€ frame์„ ํ• ๋‹นํ•ด์„œ ๋นจ๋ฆฌ ๋๋‚  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์šฐ์„ ์ˆœ์œ„ ๋˜๋Š” ์‚ฌ์ด์ฆˆ๋งŒ์„ ๊ฐ€์ง€๊ณ  frame์„ ํ• ๋‹นํ•ด์ฃผ๋ฉด ์ •ํ™•ํ•˜๊ฒŒ ๋™์ž‘์„ ํ• ๊นŒ??
์šฐ์„ ์ˆœ์œ„ ๋˜๋Š” ์‚ฌ์ด์ฆˆ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ• ๋‹นํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋™์  ํ• ๋‹น์„ ๋ฐ›์•„์„œ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปค์งˆ ์ˆ˜๊ฐ€ ์žˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด frame์ด ๋ถ€์กฑํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๊ณ  ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

๋„๋Š” ๊ณผ์ •์—์„œ ํ• ๋‹น๋œ frame์˜ ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋งค์ปค๋‹ˆ์ฆ˜์ด ํ•„์š”ํ•˜์ง€ ์•Š์„๊นŒ?

 

Global vs Local Replacement

์ž์‹ ์—๊ฒŒ ํ• ๋‹น๋œ frame์•ˆ์—์„œ victim page๋ฅผ ์„ ์ •ํ•˜๋Š” ๊ฒƒ์„ local replacement๋ผ๊ณ  ํ•œ๋‹ค.
์ด์™€ ๋‹ค๋ฅด๊ฒŒ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ frame ์ค‘์—์„œ victim์„ ์„ ์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด global replacement์ด๋‹ค.

์ž์‹ ์—๊ฒŒ ํ• ๋‹น๋œ frame ๋‚ด์—์„œ victim์„ ์„ ์ •ํ•˜๊ฒŒ ๋˜๋ฉด page fault๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋”๋ผ๋„, ์ž์‹ ์—๊ฒŒ ํ• ๋‹น๋œ frame์˜ ์ˆ˜๋Š” ์œ ์ง€๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

๋ฐ˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ frame ์ค‘์— victim์„ ์„ค์ •ํ•˜๊ณ  ์ž์‹ ์˜ ํŽ˜์ด์ง€๋ฅผ ์˜ฌ๋ฆฌ๋ฉด, ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹น๋œ frame์˜ ์ˆ˜๊ฐ€ ๋ณ€ํ•˜๊ฒŒ ๋œ๋‹ค.

global replacement์˜ ์žฅ์  ์ค‘ ํ•˜๋‚˜๊ฐ€ victim์„ ์„ ์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ๊ด€๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์˜ˆ๋ฅผ ๋“ค์–ด clock algorithm์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•˜๋ฉด ํŽ˜์ด์ง€๋“ค์„ circular queue๋กœ ์ญ‰ ์—ฐ๊ฒฐ์„ ํ–ˆ์—ˆ๋‹ค.
local replacement ๊ธฐ๋ฒ•๋งŒ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค circular queue๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ฒŒ ๋  ๊ฒƒ์ด๊ณ , global replacement ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ์Šคํ…œ ๋‚ด์— ํ•˜๋‚˜์˜ ํฐ circular queue๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ฒŒ ๋  ๊ฒƒ์ด๋ฏ€๋กœ ๊ด€๋ฆฌ๊ฐ€ ๋” ์‰ฝ๋‹ค.

 

ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์ฆˆ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๋Š” ํŠน์ˆ˜๋ชฉ์  ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ํ•˜๋ฉด, fixed allocation์— local replacement๋งŒ ์‚ฌ์šฉํ•ด๋„ ์ถฉ๋ถ„ํ•  ๊ฒƒ์ด๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์ผ๋ฐ˜์ ์ธ ์‹œ์Šคํ…œ์—์„œ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— Global replacement๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

๋‘˜ ์ค‘ ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์“ฐ๋“  ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•˜๋Š” ๊ฐœ๋…์ด ์žˆ๋‹ค.
=> Thrashing

 

Thrashing

์ง€๊ธˆ๊นŒ์ง€ ํŽ˜์ด์ง€ frame์ด ๋ถ€์กฑํ•  ๊ฒฝ์šฐ ์–ด๋–ค ๋†ˆ์„ victim์œผ๋กœ ์„ ์ •ํ•ด์„œ ์ซ“์•„๋‚ผ ๊ฒƒ์ธ๊ฐ€. ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ํŽ˜์ด์ง€ ํดํŠธ๋ฅผ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ธ๊ฐ€ ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์„ ๋ฐฐ์› ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฐ ๊ฒƒ๋“ค์ด ๋ชจ๋‘ ๋ฌด์˜๋ฏธํ•ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ frame์˜ ์ˆ˜๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ์ž‘์œผ๋ฉด, ์•„๋ฌด๋ฆฌ ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ victim์„ ์„ ์ •ํ•œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜๊ฐ€ ์—†๋‹ค.

๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ถฉ๋ถ„ํ•œ ํŽ˜์ด์ง€๋ฅผ ํ• ๋‹น๋ฐ›์ง€ ๋ชปํ•˜๋ฉด ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๊ณ , ๊ทธ๋ ‡๋‹ค๋ฉด I/O๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ CPU utilization์ด ๋–จ์–ด์ง„๋‹ค.
๊ทธ๋Ÿฌ๋ฉด long term scheduler๋Š” utilization์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ํŽธ์ž…์‹œํ‚จ๋‹ค.
๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ž์›์„ ๋‚˜๋ˆ ์ฃผ์–ด์•ผ ํ•˜๊ณ , frame์ด ๋” ๋ถ€์กฑํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ utilization์ด ๋” ๋–จ์–ด์ง„๋‹ค.
๊ทธ๋Ÿผ long term scheduler๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋” ํŽธ์ž…์‹œํ‚ค๋Š” ์•…์ˆœํ™˜์ด ๋ฐ˜๋ณต๋œ๋‹ค.

 

๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ ˆ๋Œ€์ ์œผ๋กœ ๋ถ€์กฑํ•ด์„œ ํŽ˜์ด์ง€ ํดํŠธ ๋ฐœ์ƒ ํšŸ์ˆ˜๊ฐ€ ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•ด์„œ I/O๋งŒ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์„ Thrashing์ด๋ผ๊ณ  ํ•œ๋‹ค.

main()

{ for (I = 1, 100000) {A = B + X}}

์ด๋Ÿฌํ•œ Loop๊ฐ€ ์žˆ์„ ๋•Œ, ์šด์ด ๋‚˜์˜๊ฒŒ๋„ main๋ฌธ, I, A, B, X๊ฐ€ ๋ชจ๋‘ ๋‹ค๋ฅธ ํŽ˜์ด์ง€์— ๋“ค์–ด์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž.

๊ทธ๋Ÿฐ๋ฐ ํ• ๋‹น๋œ ํŽ˜์ด์ง€ frame์ด 4๊ฐœ๋ผ๊ณ  ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์ง€ ์•Š์€ ๋ณ€์ˆ˜๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•œ ๊ฐœ ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค.

=> Loop๋ฅผ ๋Œ ๋•Œ๋งˆ๋‹ค ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

ํŽ˜์ด์ง€ frame์ด 5๊ฐœ์˜€๋‹ค๋ฉด, ๋ณ€์ˆ˜๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ๋ชจ๋“  ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฏ€๋กœ ๋ฉ”์ธ ํ•จ์ˆ˜๊ฐ€ ๋ฌธ์ œ์—†์ด ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ์ด๋‹ค.
=> ํŽ˜์ด์ง€ frame ํ•˜๋‚˜๊ฐ€ ๋ชจ์ž๋ผ์„œ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ์ตœ์†Œ 10๋งŒ ๋ฒˆ ๋ฐœ์ƒ

์ถฉ๋ถ„ํ•œ ํŽ˜์ด์ง€ frame์ด ์—†์œผ๋ฉด, ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๊ณ  ํŽ˜์ด์ง€ ํดํŠธ๋Š” ๊ณง I/O๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์‹œํ‚จ๋‹ค.

์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๊ฐ€ ์ ์  ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋˜๋ฉด ์–ธ์  ๊ฐ€ ๊ฒฐ๊ตญ ์ ˆ๋Œ€์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๊ฐ€ ๋ถ€์กฑํ•œ ์ƒํ™ฉ์ด ์˜ค๊ฒŒ ๋œ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋˜๊ณ  I/O๋งŒ ๋ฐœ์ƒํ•ด์„œ CPU utilization์ด ๊ธ‰๊ฒฉํžˆ ๊ฐ์†Œํ•˜๋Š” ์ƒํ™ฉ์ด ๋œ๋‹ค.
=> Thrashing ๋ฐœ์ƒ

ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๊ณผ๋„ํ•˜๊ฒŒ ๋˜๋ฉด ํ”„๋กœ์„ธ์Šค๋‹น ํ• ๋‹น๋˜๋Š” frame์˜ ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ์ค„์–ด๋“ค๊ฒŒ ๋˜๊ณ , ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜์–ด Thrashing์ด ๋ฐœ์ƒ๋˜๊ฒŒ ๋œ๋‹ค.

๊ณผ๋„ํ•˜๊ฒŒ ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋˜๋ฉด ์•ˆ ๋œ๋‹ค.

 

ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์—„์ฒญ๋‚œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ผ์œผํ‚ค๋Š”๋ฐ, ์–ด๋–ป๊ฒŒ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?

๋ฐ”๋กœ locality๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค, locality์— ์˜ํ•ด ์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” ํŽ˜์ด์ง€๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ๋‹ค๋ฉด ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ์ž์ฃผ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.

locality๋Š” ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋ณ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค์˜ locality๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋‹ค ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ frame์˜ ์ˆ˜๊ฐ€ ๊ทธ๋•Œ ๊ทธ๋•Œ ๋ณ€ํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

=> ์ด๋ก ์ ์œผ๋กœ ์•Œ์•„๋‘ฌ์•ผ ํ•  ์‚ฌ์‹ค์€ ์™œ Thrashing์ด ๋ฐœ์ƒํ•˜๋Š”์ง€์ด๋‹ค.

=> ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ locality์˜ ํ•ฉ์ด ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์ฆˆ์˜ ํ•ฉ๋ณด๋‹ค ํฌ๋ฉด Thrashing์ด ๋ฐœ์ƒํ•œ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ๊ณผ๋„ํ•˜๊ฒŒ ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆ˜ํ–‰๋˜๊ฒŒ ๋œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?
OS๊ฐ€ ์ง€๊ธˆ์€ Thrashing์˜ ๋ฐœ์ƒ ์œ„ํ—˜์ด ์žˆ์œผ๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋งž์„๊นŒ?
์•„๋‹ˆ๋‹ค. OS๋Š” ์–ด๋–ป๊ฒŒ๋“  ์‹คํ–‰์„ ์‹œ์ผœ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
๊ทธ ๋’ท๊ฐ๋‹น์€ ์‚ฌ์šฉ์ž๊ฐ€ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

=> ์š”์ฆ˜ ๋Œ€๋ถ€๋ถ„์˜ OS๋Š” Thrashing์ด ๋ฐœ์ƒํ•ด๋„ ๋ง‰์ง€ ์•Š๋Š”๋‹ค.

 

Locality

์ด์ „์—๋„ ๋งํ–ˆ๋“ฏ์ด, ์–ด๋– ํ•œ ์‹œ์ ์— ์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” instruction๊ณผ data๋Š” ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•œ๋‹ค.

locality์˜ ์ข…๋ฅ˜๋Š” 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

์‹œ๊ฐ„ ์ง€์—ญ์„ฑ์€ ๊ฐ€๊นŒ์šด ์‹œ๊ฐ„ ๋‚ด์— ์ •ํ™•ํžˆ "๊ฐ™์€" ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‹ค์‹œ ์ฐธ์กฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

๊ณต๊ฐ„ ์ง€์—ญ์„ฑ์€ ๊ฐ€๊นŒ์šด ์‹œ๊ฐ„ ๋‚ด์— ํ˜„์žฌ ์ ‘๊ทผ ์ค‘์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ "์ฃผ๋ณ€" ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ฐธ์กฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

 

Working-Set Model

Working-set model์€ Thrashing ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ด๋ก ์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค.

๋ธํƒ€(โ–ณ)๋Š” working set์„ ๋„๋ ค๋‚ด๊ธฐ ์œ„ํ•œ window.
=> ํ˜„์žฌ ์‹œ์ ์˜ locality์— ํฌํ•จ๋˜๋Š” ํŽ˜์ด์ง€๋“ค์„ ๋„๋ž˜๋‚ด๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋‹ค.
=> ํ˜„์žฌ ์‹œ์ ์„ defineํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋˜๋Š” window

 

Working Set์€  [ti ~ ti - โ–ณ]์— ์ ‘๊ทผ๋œ ํŽ˜์ด์ง€๋“ค์˜ ์ง‘ํ•ฉ์ด๋‹ค.

๋ธํƒ€๊ฐ€ ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด ์ฆ‰, ๋„ˆ๋ฌด ์ž‘์€ ๊ตฌ๊ฐ„์„ ๋Œ€์ƒ์œผ๋กœ working set์„ ์ฐพ์•„๋‚ธ๋‹ค๋ฉด ํฐ locality๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๊ฒฝ์šฐ์— working set์ด ์ „์ฒด locality๋ฅผ ํฌ๊ด„ํ•˜์ง€ ๋ชป ํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ๋‹ค.
=> ์ •ํ™•๋„๊ฐ€ ๋–จ์–ด์ง

๋ธํƒ€๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง€๋ฉด, locality๊ฐ€ ์ด๋ฏธ ์ง€๋‚˜๊ฐ„ ํŽ˜์ด์ง€๋“ค๋„ working set์— ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค.
=> ์ •ํ™•๋„๊ฐ€ ๋–จ์–ด์ง

window์˜ ์‚ฌ์ด์ฆˆ์— ๋”ฐ๋ผ working set์˜ ์ •ํ™•๋„๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค.

WSSi๋Š” ํ˜„์žฌ ์‹œ์ ์˜ ํ”„๋กœ์„ธ์Šค i์˜ working set ์‚ฌ์ด์ฆˆ์ด๋‹ค.

D๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋“ค์˜ working set ์‚ฌ์ด์ฆˆ์˜ ํ•ฉ์ด๋‹ค.

=> ์ด ์š”๊ตฌ๋˜๋Š” frame์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋œ๋‹ค.

์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์กด์žฌํ•˜๋Š” frame์˜ ์ˆ˜(์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ frame์˜ ์ˆ˜)๋ฅผ m์ด๋ผ๊ณ  ํ–ˆ์„ ๋•Œ, D > m์ด๋ผ๋ฉด ์š”๊ตฌ๋˜๋Š” frame์„ ๋ชจ๋‘ ์ถฉ์กฑ์‹œ์ผœ์ฃผ์ง€ ๋ชป ํ•œ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ ๋ฌด์กฐ๊ฑด Thrashing์ด ๋ฐœ์ƒํ•œ๋‹ค.

 

๋งŒ์•ฝ D > m์ด๋ฉด ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๋ฅผ suspend ์‹œํ‚จ๋‹ค. ํ•˜๋‚˜๋ฅผ suspend ์‹œ์ผฐ๋Š”๋ฐ๋„ D > m์ด๋ฉด ํ•˜๋‚˜ ๋” suspend ์‹œํ‚จ๋‹ค.
์–ธ์ œ๊นŒ์ง€? D <= m์„ ๋งŒ์กฑํ•  ๋•Œ๊นŒ์ง€


suspend๋ฅผ ์‹œํ‚จ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ€์ •์ ์ธ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.
๋ช‡ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ suspend ์‹œ์ผœ์„œ ์‹œ์Šคํ…œ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค๊ณ , ์ผ์„ ๋ ๋งˆ์น˜๊ณ  ๋น ์ ธ๋‚˜๊ฐ€๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ๊ธฐ๋ฉด suspend๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์‹œ ์‹คํ–‰์‹œํ‚ค๊ณ  ์ด๋ ‡๊ฒŒ ํ•œ๋‹ค๋ฉด, Thrashing์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋นจ๋ฆฌ ์ผ์ด ์ฒ˜๋ฆฌ๋  ๊ฒƒ์ด๋‹ค.

=> ๊ณผ๊ฐํ•˜๊ฒŒ Suspend๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋‹ค.

Working set model์€ Multiprograming degree(๋™์‹œ ์ˆ˜ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜)๊ฐ€ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋ฌผ๋ก  ์ด๊ฒƒ์€ ๋ชจ๋‘ ์ด๋ก ์ผ ๋ฟ์ด๋‹ค.
์‚ฌ์šฉ์ž์˜ ์ง€์‹œ ์—†์ด OS๊ฐ€ ๋งˆ์Œ๋Œ€๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ suspend๋ฅผ ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ๋Š” ์ž˜ ์—†์„ ๊ฒƒ์ด๋‹ค.
์ด๊ฑด OS์˜ ๋””์ž์ธ ์ฒ ํ•™๋งˆ๋‹ค ๋‹ค๋ฅผ ๊ฒƒ

 

์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด locality๋„ ๋ณ€ํ™”ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, working set model์€ ์ด๊ฒƒ์„ ์ž˜ ๋”ฐ๋ผ๊ฐ€๊ณ  ์žˆ๋‹ค.


Working set model์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹น๋˜๋Š” frame์˜ ์ˆ˜๋„ ๊ฒฐ์ •ํ•˜๊ณ , ํŽ˜์ด์ง€ ๊ต์ฒด๋ฅผ ํ•  ๋•Œ ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ victim์œผ๋กœ ์„ ์ •ํ• ์ง€๋„ ๊ฒฐ์ •ํ•œ๋‹ค.

Victim์„ ์„ ์ •ํ•ด์•ผ ํ•  ๋•Œ, Working set์— ํฌํ•จ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€ ์ค‘ ํ•˜๋‚˜๋ฅผ Victim์œผ๋กœ ์„ ์ •ํ•œ๋‹ค.

Allocaton์„ ํ•  ๋•Œ, Working set์˜ ์‚ฌ์ด์ฆˆ์— ๋”ฐ๋ผ frame์„ ํ• ๋‹นํ•œ๋‹ค.

=> Working set์ด ๋ชจ๋“  locality๋ฅผ ํฌํ•จํ•œ๋‹ค๊ณ  ํ•˜๋ฉด, ๋ชจ๋“  locality๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ฌ ๊ฒƒ์ด๋‹ค.

 

Keeping Track of the Working Set

Victim์„ ์„ ์ •ํ•  ๋•Œ, ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ Working set์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ ํŽ˜์ด์ง€๋งˆ๋‹ค ์ฐธ์กฐ๋œ ์‹œ์ ์„ ์ ๋Š” space๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋˜ํ•œ working set์— ํฌํ•จ๋˜์—ˆ๋Š”์ง€ ์•„๋‹Œ์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” reference time์„ ๋ธํƒ€ ๊ฐ’๊ณผ ๋น„๊ต๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.
=> ๊ตฌํ˜„์ด ์–ด๋ ต๋‹ค

๊ทธ๋ ‡๋‹ค๋ฉด Working set์— ํฌํ•จ๋˜์—ˆ๋Š”์ง€๋ฅผ Approximateํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด๋ณด์ž.

ํŠน์ • ์‹œ๊ฐ„๋งˆ๋‹ค ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ํƒ€์ด๋จธ์™€, ์ถ”๊ฐ€์ ์ธ Reference ๋น„ํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๋ธํƒ€๊ฐ€ 10K๋ผ๊ณ  ํ–ˆ์„ ๋•Œ, 5K๋งˆ๋‹ค ํƒ€์ž„ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ณด๋‚ด์„œ Reference bit๋ฅผ ์™ผ์ชฝ bit์— ์นดํ”ผํ•˜๋ฉด์„œ 0์œผ๋กœ ๋งŒ๋“ ๋‹ค.

ํ™•์ธํ•œ ์‹œ์ ์— ๋ฐฉ๊ธˆ โ‘ ๋ฒˆ bit๊ฐ€ 1๋กœ set ๋˜์—ˆ๋‹ค๋ฉด ์ตœ๊ทผ 5K ์‹œ๊ฐ„ ๋‚ด์— ์ ‘๊ทผ์„ ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ™•์ธํ•œ ์‹œ์ ์— โ‘ก๋ฒˆ bit๊ฐ€ 1๋กœ set ๋˜์–ด ์žˆ์œผ๋ฉด ์ตœ๊ทผ 5K ~ 10K ๋‚ด์— ์ฐธ์กฐ๊ฐ€ ๋˜์—ˆ์Œ์„ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๊ณผ์—ฐ ์ง„์งœ 5K ~ 10K ๋‚ด์— ์ฐธ์กฐ๊ฐ€ ๋œ ๊ฑธ๊นŒ??
๋งŒ์•ฝ ํ™•์ธํ•œ ์‹œ์  ์ง์ „์— copy๊ฐ€ ๋˜์—ˆ๋‹ค๊ณ  ํ•˜๋ฉด ์‹ค์ œ 5K ~ 10K ๋‚ด์— ์ฐธ์กฐ๋œ ๊ฒƒ์ด ๋งž๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ๋˜ ๋‹ค์‹œ 5K๊ฐ€ ์ง€๋‚˜์•ผ bit๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์‹ค์ƒ 14,999 ์‹œ๊ฐ„ ์ „์— reference๊ฐ€ ๋˜์—ˆ์–ด๋„ ์—ฌ๊ธฐ๊ฐ€ 1๋กœ set๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.
์ตœ์•…์˜ ๊ฒฝ์šฐ์—” 0 ~ 14,999์‹œ๊ฐ„ ๋‚ด์— ์ฐธ์กฐ๊ฐ€ ๋˜์—ˆ๋Š”์ง€๋ฅผ ์ฒดํฌํ•˜๋Š” ์…ˆ์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
4,999๋ฅผ ์ดˆ๊ณผํ•ด์„œ ์œˆ๋„์šฐ๋ฅผ ๊ฐ–๊ฒŒ ๋˜๋Š” ํšจ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค.
=> ์ •ํ™•๋„๊ฐ€ ๊ฑฐ์˜ 50% ๋–จ์–ด์ง.

 

์ด๊ฑธ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ 1,000๋ฒˆ์— ํ•œ ๋ฒˆ copy๋ฅผ ํ•˜๋˜, ์ถ”๊ฐ€์ ์ธ bit๋ฅผ 10bit ์‚ฌ์šฉํ•œ๋‹ค.
=> ์ œ์ผ ๋งˆ์ง€๋ง‰ bit๋Š” 9,000 ~ 10,999 ์‚ฌ์ด์— ์ฐธ์กฐ๋˜์—ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๊ฒŒ ๋œ๋‹ค.
=> ์˜ค์ฐจ๊ฐ€ 10%๋กœ ๋‚ฎ์•„์กŒ๋‹ค.

ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ ๊ฐ„๊ฒฉ์„ ์งง๊ฒŒ ํ•˜๋ฉด, ์ •ํ™•์„ฑ์€ ๋†’์•„์ง€์ง€๋งŒ ์ถ”๊ฐ€์ ์ธ bit๊ฐ€ ๋งŽ์ด ํ•„์š”ํ•˜๊ฒŒ ๋œ๋‹ค.

=> ๋ญ ๊ทธ๋ ‡๋‹ค ํ•˜๋”๋ผ๋„ ๋” ํฐ ๋ฌธ์ œ๋Š” ๋ธํƒ€๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •ํ• ์ง€๊ฐ€ ๋ฌธ์ œ๋‹ค.
๊ณผ๊ฑฐ ์–ผ๋งˆ๊นŒ์ง€ ๋ด์•ผ ์ •ํ™•ํ•œ working set์ด ๋ ๊นŒ.
ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค locality ํฌ๊ธฐ๊ฐ€ ๋‹ค ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋ธํƒ€ ๊ฐ’์„ ์–ด๋Š ์ •๋„๋กœ ํ•ด์•ผ๋ ์ง€ ์ •ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค.
ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ํƒ€์ด๋จธ ๋””๋ฐ”์ด์Šค๋ฅผ ๊ฐ๊ฐ ์ค€๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ๊ธฐ ์ „์— locality์˜ ํฌ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ธํƒ€๋ฅผ ์–ผ๋งˆ๋กœ ์ •ํ• ์ง€ ์ •ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค.

์ด๋ก ์ ์œผ๋กœ๋Š” ๊ดœ์ฐฎ์ง€๋งŒ, ์‹ค์ œ ๊ตฌํ˜„์ด ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— OS๋Š” working set model์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค.

 

Page-Fault-Frequency Scheme

์•ž์„  ๋‚ด์šฉ์„ ๋ดค์„ ๋•Œ, locality๋ฅผ ํŒŒ์•…ํ•ด์„œ ์ •ํ™•ํžˆ working set์„ ์ฐพ๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋‚˜.
๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ‘๊ทผํ•ด์„œ, ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ์ง€ ์•ˆ ๋ถ€์กฑํ•œ์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ทธ๋„๋งŒ ํฌ์ฐฉํ•ด๋ณด์ž.
=> ๊ทธ ์‹œ๊ทธ๋„์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŽ˜์ด์ง€ ํดํŠธ๋ฅผ ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ๋ฐœ์ƒ์‹œํ‚ค๋Š”์ง€๊ฐ€ ๋œ๋‹ค.
=> ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋นˆ๋„๋ฅผ ๊ฐ€์ง€๊ณ  working set์˜ ํฌ๊ธฐ๋ฅผ ์ถ”์ •

์ƒํ•œ์„ ๊ณผ ํ•˜ํ•œ์„ ์„ ๋‘ฌ์„œ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ์ƒํ•œ์„ ๋ณด๋‹ค ๋งŽ์ด ๋ฐœ์ƒํ•˜๋ฉด, frame์ด ๋ถ€์กฑํ•œ ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•˜๊ณ ,
ํ•˜ํ•œ์„ ๋ณด๋‹ค ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ์ ๊ฒŒ ๋ฐœ์ƒํ•˜๋ฉด frame์ด ๋„ˆ๋ฌด ๊ณผ๋„ํ•˜๊ฒŒ ํ• ๋‹น๋œ ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•œ๋‹ค.

ํ•˜ํ•œ์„ ๋ณด๋‹ค ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ์ ๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ frame์„ ๋บ์–ด์„œ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹นํ•ด์ค€๋‹ค.

๊ฝค๋‚˜ ํ•ฉ๋ฆฌ์ ์ด๋ฉด์„œ๋„ ๊ตฌํ˜„๋„ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•

working set model์—์„œ๋Š” reference๊ฐ€ ํ•œ ๋ฒˆ ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค window๋ฅผ ์›€์ง์—ฌ์„œ working set์„ ์ˆ˜์ •ํ•ด์•ผํ•˜๋ฏ€๋กœ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—„์ฒญ ํฌ๋‹ค.

๋ฐ˜๋ฉด Page-fault Frequency scheme์—์„œ๋Š” ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ํ”„๋กœ์„ธ์Šค์˜ ํŽ˜์ด์ง€ํดํŠธ rate๋งŒ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค.
=> ๋“œ๋ฌผ๊ฒŒ ์ˆ˜์ •

๋ฉ”๋ชจ๋ฆฌ reference์˜ ํšŸ์ˆ˜์™€ ํŽ˜์ด์ง€ ํดํŠธ์˜ ๋ฐœ์ƒ ํšŸ์ˆ˜๋Š” ์ฐจ์ด๊ฐ€ ๋งค์šฐ ํฌ๋‹ค.
=> ์˜ค๋ฒ„ํ—ค๋“œ ์ฐจ์ด๊ฐ€ ํฌ๋‹ค.

 

PFF ๋ฐฉ์‹์€ ์˜ค๋ฒ„ํ—ค๋“œ๋„ ํฌ์ง€ ์•Š์•„ ๋ณด์ด๊ณ , ๊ตฌํ˜„๋„ ๊ฐ„๋‹จํ•ด ๋ณด์ด๋Š”๋ฐ ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๋ฐฉ๋ฒ•์„ ์‹ค์ œ ์‚ฌ์šฉํ• ๊นŒ?
์•„๋‹ˆ๋‹ค. 
ํ•˜ํ•œ์„ ๋ณด๋‹ค ํŽ˜์ด์ง€ ํดํŠธ ๋ฐœ์ƒํšŸ์ˆ˜๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค์—์„œ frame์„ ํ•˜๋‚˜ ๋บ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์–ด๋–ค frame์„ ๋บ์„๊นŒ?
๊ทธ๊ฑธ ๊ฒฐ์ •ํ•˜๋ ค๋ฉด ๊ฒฐ๊ตญ์€ locality์— ํฌํ•จ๋˜์ง€ ์•Š์€ frame์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.
=> Working set model๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ

ํŽ˜์ด์ง€ ๊ต์ฒด ๊ธฐ๋ฒ•์ด ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” ์ƒํ™ฉ์—์„œ, victim frame์„ ์„ ์ •ํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜๋Š” ์žˆ๋‹ค.

PFF ๊ธฐ๋ฒ•์€ frame์˜ ๊ฐœ์ˆ˜๋ฅผ ์ •ํ•˜๋Š” ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๊ณ , ๋ณ„๋„์˜ victim selection ๊ธฐ๋ฒ•์ด ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•œ๋‹ค.


์ด์ œ๋ถ€ํ„ฐ๋Š” Virtual memory๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์ƒ๊ธฐ๋Š” ๋ถ€๊ฐ€์ ์ธ ์ด์ ๋“ค์„ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค.

 

Copy on Write

๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ forkํ•  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ address space๋ฅผ ์ž์‹ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•ด์ค€๋‹ค๊ณ  ํ–ˆ๋‹ค.
=> memory copy๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋งค์šฐ ํฌ๋‹ค.

virtual mermoy๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋…ผ๋ฆฌ์ ์œผ๋กœ๋Š” ๋…๋ฆฝ์ ์ธ address space๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ physical address๋ฅผ ๊ณต์œ ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.
=> ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๋งŒ ์นดํ”ผํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด logical address๊ฐ€ ๊ฐ™์€ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋งคํ•‘๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๊ฒŒ ๋œ๋‹ค.
=> ํ”„๋กœ์„ธ์Šค๋Š” logical address space๋งŒ ๋ณด๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ๋Š” ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ๋ณด์ง€ ๋ชปํ•œ๋‹ค.

๋ถ€๋ชจ๋“  ์ž์‹์ด๋“  ๊ณต์œ ํ•˜๊ณ  ์žˆ๋Š” space์— write๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ๊ทธ๋•Œ๋Š” ์‹ค์ œ๋กœ ๋ณ„๋„์˜ ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด์„œ ๋ณต์‚ฌํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. 
=> write๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์‹ค์ œ๋กœ copy๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Copy on write๋ผ๊ณ  ํ•œ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค 1์ด write๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ์‹ค์ œ copy๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋งคํ•‘ํ•ด์ค€๋‹ค.

write๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, write๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ผ๋ถ€๋งŒ ๋ถ„๋ฆฌํ•ด์„œ ๊ฐ์ž ๊ฐ–๋„๋ก ๋งŒ๋“ค์–ด ์ค€๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด write๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์€ ๊ณ„์† ๊ณต์œ ๊ฐ€ ๋œ๋‹ค.

=> ์ตœ์†Œํ•œ Read only์ธ ์ฝ”๋“œ ์˜์—ญ์€ ๊ณต์œ ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

 

Memory Mapped Files

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ํŒŒ์ผ์ธ๋ฐ, ๊ทธ ํŒŒ์ผ์„ ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋กœ ์ ‘๊ทผํ•˜์ง€ ๋ง๊ณ , ํŒŒ์ผ์˜ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ address space์— ์ง‘์–ด ๋„ฃ๋Š”๋‹ค (mapping ์‹œํ‚จ๋‹ค).

ํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋Š” ๋ช‡ ๋ฒˆ์ง€, ๋‘ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋Š” ๊ทธ ๋‹ค์Œ ๋ฒˆ์ง€ ์ด๋ ‡๊ฒŒ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ address space์— ๋งคํ•‘์„ ์‹œํ‚จ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ๊ทธ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ file system์„ ํ†ตํ•ด์„œ ์ฆ‰, read, write๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฉ”๋ชจ๋ฆฌ access๋กœ ์ ‘๊ทผํ•œ๋‹ค.

์ด๊ฒŒ virtual memory์™€ ๋ฌด์Šจ ์ƒ๊ด€?
์‹ค์ œ ํŒŒ์ผ์„ logical address space ์ƒ์— ๋งคํ•‘์„ ์‹œํ‚ฌ ๋•Œ, virtual memory๊ฐ€ ์—†๋‹ค๋ฉด ํŒŒ์ผ์˜ ์ „์ฒด ๋‚ด์šฉ์ด ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ค ์˜ฌ๋ผ์™€์•ผ ํ•œ๋‹ค.
=> ์ ‘๊ทผํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋„ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ค ์˜ฌ๋ผ์˜ค๊ฒŒ ๋œ๋‹ค.
=> ์˜คํžˆ๋ ค ๋น„ํšจ์œจ์ ์ด๊ฒŒ ๋œ๋‹ค.

virtual memory๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด logical address space์— ํŒŒ์ผ์„ ๋งคํ•‘ํ•œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„, ์‹ค์ œ ์ ‘๊ทผํ•˜๋Š” ํŽ˜์ด์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ค๊ฒŒ ๋˜๋‹ˆ๊นŒ ๋ชจ๋“  ํŒŒ์ผ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ค๋Š” ์ผ์ด ์—†๊ฒŒ ๋˜๋ฏ€๋กœ, Memory-Mapped File ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ์ ‘๊ทผํ•œ๋‹ค๊ณ  ํ•˜๋ฉด, ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ํ•œ ๋ฒˆ๋งŒ ์˜ฌ๋ฆฌ๊ณ  ๊ฐ™์€ ์ฃผ์†Œ๋กœ ๋งคํ•‘์„ ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

=> write๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด ํ•˜๋‚˜์˜ copy๋งŒ์œผ๋กœ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŒŒ์ผ์„ ๊ณต์œ ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.


์—ฌ๊ธฐ๋ถ€ํ„ฐ๋Š” virtual memory์™€ ๊ด€๋ จ๋œ ์ฃผ๋ณ€์ ์ธ issue๋“ค์„ ๋ณผ ๊ฒƒ์ด๋‹ค.

 

Prepaging

pure demand paging์„ ์‚ฌ์šฉํ•˜๋ฉด, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฒ˜์Œ ์‹œ์ž‘๋˜๋ฉด ์ดˆ๊ธฐ์—๋Š” ๋งค๋ฒˆ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค์˜ ์‹œ์ž‘ ๋‹จ๊ณ„์—์„œ ํŽ˜์ด์ง€ ํดํŠธ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ, ์‹œ์ž‘ํ•˜๊ณ  ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ํ•œ ํŽ˜์ด์ง€์”ฉ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ํŽ˜์ด์ง€๋ฅผ ๋งŽ์ด ์˜ฌ๋ ค๋‘”๋‹ค.
=> ์ดˆ๊ธฐ ๋‹จ๊ณ„์— ๋ฐœ์ƒํ•˜๋Š” ํŽ˜์ด์ง€ ํดํŠธ์˜ ์ˆ˜๊ฐ€ ๋งŽ์ด ์ค„์–ด๋“ค ๊ฒƒ์ด๋‹ค.
=> ํ•˜์ง€๋งŒ ๋ฏธ๋ฆฌ ์˜ฌ๋ ค๋‘” ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉ์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜คํžˆ๋ ค ๋ถˆํ•„์š”ํ•œ ์ผ์„ ํ•ด๋ฒ„๋ฆฐ ๊ฒƒ์ด๋‹ค.
=> ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ฏธ๋ฆฌ ๋ช‡ ํŽ˜์ด์ง€๋ฅผ ์˜ฌ๋ฆด์ง€๋ฅผ ๊ฒฐ์ •์„ ํ•ด์•ผ ํ•œ๋‹ค.

 

Page size

ํŽ˜์ด์ง€์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์–ผ๋งˆ๋กœ ์žก์•„์•ผ ํ• ๊นŒ?

ํŽ˜์ด์ง€ ์‚ฌ์ด์ฆˆ๊ฐ€ ํฌ๋ฉด, ์ „์ฒด ํŽ˜์ด์ง€์˜ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ ๋‹ค.
=> ๋งคํ•‘ํ•  ํŽ˜์ด์ง€์˜ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ค„์–ด๋“ ๋‹ค.
๋˜ํ•œ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ๋””์Šคํฌ์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งŽ์•„์ง€๋ฏ€๋กœ I/O ์ธก๋ฉด์—์„œ๋„ ์ข‹๋‹ค.
locality ์ธก๋ฉด์—์„œ ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€ frame์ด ๋งŽ์€ ์–‘์˜ locality๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๊ธฐ ๋–„๋ฌธ์— locality ๋ณด์กด ์ธก๋ฉด์—์„œ๋„ ์žฅ์ ์„ ๊ฐ–๋Š”๋‹ค.

๊ทธ๋Ÿฐ๋ฐ internal fragmentation์ด ์ปค์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

์š”์ฆ˜์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปค์„œ internal framgmentation์ด ์กฐ๊ธˆ ์ปค์ง€๋”๋ผ๋„ ๊ทธ๋ ‡๊ฒŒ ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.
๊ทธ๋ณด๋‹ค๋Š” I/O๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์‹œ๊ฐ„์  ์ธก๋ฉด์—์„œ์˜ ๋‚ญ๋น„๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€ ์‚ฌ์ด์ฆˆ์˜ ํฌ๊ธฐ๋ฅผ ํ‚ค์šฐ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ๋‹ค.

 

TLB Reach

TLB Reach๋Š” TLB hit๋ฅผ ํ†ตํ•ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ํŽ˜์ด์ง€ ์ ‘๊ทผ์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
=> TLB Reach๊ฐ€ ํฌ๋ฉด ํด์ˆ˜๋ก ์ข‹์€ ๊ฒƒ์ด๋‹ค.

TLB Reach = (TLB Size) X (Page Size)๋กœ ๋ช‡ ๋ฐ”์ดํŠธ๊ฐ€ TLB๋ฅผ ํ†ตํ•ด ์ฃผ์†Œ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•œ๊ฐ€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

์ด์ƒ์ ์œผ๋กœ locality์— ํฌํ•จ๋œ ํŽ˜์ด์ง€๋“ค์€ ๋ชจ๋‘ TLB๋ฅผ ํ†ตํ•ด ์ฃผ์†Œ ๋ณ€ํ™˜์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹๋‹ค.

TLB Size๋Š” ํ•˜๋“œ์›จ์–ด์ ์œผ๋กœ ๊ณ ์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ํŽ˜์ด์ง€ ์‚ฌ์ด์ฆˆ๋ฅผ ํ‚ค์›Œ์„œ TLB Reach๋ฅผ ํ‚ค์šธ ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

ํ•˜์ง€๋งŒ Page size๋ฅผ ํ‚ค์šฐ๋ฉด Internal fragmentation์ด ์ปค์ง„๋‹ค๊ณ  ํ–ˆ๋‹ค.
๋ฌผ๋ก  ์š”์ฆ˜์€ ํŽ˜์ด์ง€ ์‚ฌ์ด์ฆˆ์˜ ํฌ๊ธฐ๋ฅผ ํ‚ค์šฐ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ–ˆ์ง€๋งŒ, TLB Reach๋ฅผ ํ‚ค์šฐ๊ธฐ ์œ„ํ•ด์„œ Page size๋ฅผ ํ‚ค์šฐ๊ธฐ๋Š” ์ข€ ๊ทธ๋ ‡๋‹ค.

์ตœ์‹  OS ๊ธฐ์ˆ  ์ค‘์— ํŽ˜์ด์ง€ ์‚ฌ์ด์ฆˆ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์ง€ ์•Š๊ณ , ํŽ˜์ด์ง€ ์‚ฌ์ด์ฆˆ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.
=> ์ œ์ผ ๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ ์ž‘์€ ํŽ˜์ด์ง€๋กœ ํ• ๋‹นํ•˜๋ฉด internal fragmentation์„ ์ค„์ด๋ฉด์„œ๋„ TLB Reach๋Š” ํ‚ค์šธ ์ˆ˜ ์žˆ๋‹ค.

 

Program Structure

ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์— ๋”ฐ๋ผ ํŽ˜์ด์ง€ ํดํŠธ์˜ ๋ฐœ์ƒ ํšŸ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค.

int data[128][128] ์ด๋Ÿฌํ•œ ๋ฐฐ์—ด์ด ์žˆ๊ณ , ํ•œ ํŽ˜์ด์ง€์—๋Š” ํ•˜๋‚˜์˜ row๊ฐ€ ํ†ต์งธ๋กœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

๊ทธ๋ฆฌ๊ณ  frame์˜ ์ˆ˜๋Š” 128๊ฐœ๋ณด๋‹ค ์ ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

=> ๋”ฐ๋ผ์„œ ๋ชจ๋“  data๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ฌ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

 

for(j = 0; j < 128; j++)
	for(i = 0; i < 128; i++)
    	data[i][j] = 0;

์ด๋Ÿฌํ•œ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜๋ฉด, row ์ˆœ์„œ๋Œ€๋กœ data์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ฒ˜์Œ์—๋Š” ๋งค ์ ‘๊ทผ๋งˆ๋‹ค ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๊ณ , ํ•œ ๋ฐ”ํ€ด๋ฅผ ๋Œ๊ณ  ๋‹ค์‹œ i = 0์ด ๋˜์—ˆ์„ ๋•Œ๋Š” ํ•ด๋‹น row๋Š” ๋ฐ€๋ ค๋‚˜์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์ง€ ์•Š์„ ๊ฒƒ์ด๋ฏ€๋กœ, ๋˜ ๋‹ค์‹œ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

=> ๋ชจ๋“  ์ ‘๊ทผ์—์„œ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ 128 * 128 = 16,384๋ฒˆ์˜ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

for(i = 0; i < 128; i++)
	for(j = 0; j < 128; j++)
    	data[i][j] = 0;

๋ฐ˜๋ฉด์— ์ด ์ฝ”๋“œ๋Š” column ์ˆœ์„œ๋Œ€๋กœ data์— ์ ‘๊ทผ์„ ํ•œ๋‹ค.

๋ชจ๋“  row์˜ ์ฒซ ๋ฒˆ์งธ column์„ ์ ‘๊ทผํ•  ๋•Œ์—๋Š” ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒ ์ง€๋งŒ, ํŽ˜์ด์ง€์—๋Š” ํ•˜๋‚˜์˜ row๊ฐ€ ํ†ต์งธ๋กœ ์˜ฌ๋ผ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ ์ ‘๊ทผ๋ถ€ํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

=> ๋”ฐ๋ผ์„œ ์ด 128๋ฒˆ์˜ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ด ์ฝ”๋“œ๋Š” free frame์ด ํ•˜๋‚˜๋งŒ ์žˆ๋”๋ผ๋„ 128๋ฒˆ์˜ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

I/O interlock

ํ•˜๋“œ ๋””์Šคํฌ์—์„œ ํŒŒ์ผ์„ ์ฝ์–ด์„œ USB๋กœ ์นดํ”ผํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด,  ๋จผ์ € ํ•˜๋“œ๋””์Šคํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์™€์„œ ๋ฒ„ํผ์— ์˜ฌ๋ฆฐ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฒ„ํผ์— ์˜ฌ๋ฆฐ ๋ฐ์ดํ„ฐ๋ฅผ USB๋กœ ๋‹ค์‹œ ๋‚ด๋ณด๋‚ด๋Š” ํ˜•์‹์œผ๋กœ ์นดํ”ผ๊ฐ€ ์ด๋ฃจ์–ด์งˆ ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด ๋ฒ„ํผ์— ์˜ฌ๋ฆฐ ๋†ˆ์ด ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ธํ•ด ๋””์Šคํฌ๋กœ ์ซ“๊ฒจ๋‚˜๊ฒŒ ๋œ๋‹ค๋ฉด, ๋‹ค์‹œ ๋””์Šคํฌ์—์„œ ์˜ฌ๋ ค์•ผ ํ•œ๋‹ค.

์ด๋Ÿฐ ๊ฒฝ์šฐ, ํ•˜๋“œ ๋””์Šคํฌ์—์„œ ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๋Š” Victim์œผ๋กœ ์„ ์ •๋˜์ง€ ์•Š๋„๋ก ๋ณดํ˜ธํ•ด์ค„ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
=> pin์„ ๊ผฝ๋Š”๋‹ค๊ณ  ํ•ด์„œ pinning์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.

I/O๋ฅผ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ„ํผ๋Š” victim์œผ๋กœ ์„ ์ •๋˜์–ด swap out๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†๋„๋ก lock์„ ๊ฑฐ๋Š” ๊ฒƒ์„ I/O Interlock์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์ด ์ •๋ฆฌ

virtual memory๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์‚ฌ์šฉ์˜ ํšจ์œจ์„ฑ์„ ๋†’์—ฌ์ฃผ๋Š” ์ข‹์€ ๊ธฐ๋ฒ•์ด๋‹ค.
๋‹จ์ง€, virtual memory์˜ ํ•ต์‹ฌ์ธ demand paging์„ ์œ„ํ•ด์„œ๋Š”, ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผ์ด ์ผ์–ด๋‚  ๋•Œ ํŽ˜์ด์ง€ ํดํŠธ๋กœ ์ธํ•œ I/O๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
=> ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ตœ๋Œ€ํ•œ ๋ง‰๊ธฐ ์œ„ํ•ด victim์„ ์ž˜ ์„ ์ •ํ•ด์•ผ ํ•œ๋‹ค.
=> locality๋ฅผ ์ตœ๋Œ€ํ•œ ๋ณด์กดํ•  ์ˆ˜ ์žˆ๋„๋ก victim์„ ์„ ์ •ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์„ ๋ดค์—ˆ๋‹ค.

ํŽ˜์ด์ง€ ํดํŠธ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด locality๋ฅผ ์ž˜ ๋ณด์กดํ•  ํ•„์š”๊ฐ€ ์žˆ๊ณ , locality๋“ค์€ ์›ฌ๋งŒํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€์„œ ๋ณด์กด๋  ํ•„์š”๊ฐ€ ์žˆ๋”๋ผ. ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” locality๊ฐ€ ์˜ฌ๋ผ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ frame์„ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ œ๊ณตํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
=> locality๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋ธ๋“ค์ด ํ•„์š”ํ•˜๋‹ค.

๊ทธ๋Ÿฐ๋ฐ working set model์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ, locality๋ฅผ ์ผ์ผ์ด ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์—, locality๋ฅผ ์ถ”์ •ํ•˜๋Š” PFF๋ผ๋Š” ๊ธฐ๋ฒ•๋„ ์žˆ์—ˆ๋‹ค.

 

โ€ป ๋ณธ ๋‚ด์šฉ์€ ํ•œ์–‘๋Œ€ํ•™๊ต ๊ฐ•์ˆ˜์šฉ ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

728x90

'HYU > ์šด์˜์ฒด์ œ(OS)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

13. Mass Storage Management  (0) 2023.06.02
12. File System  (2) 2023.05.27
7. Deadlocks  (0) 2023.05.18
10. Virtual Memory (1)  (1) 2023.05.12
9. Memory Management (2)  (0) 2023.05.07