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๋ผ๋ ๊ธฐ๋ฒ๋ ์์๋ค.
โป ๋ณธ ๋ด์ฉ์ ํ์๋ํ๊ต ๊ฐ์์ฉ ๊ต์๋์ ๊ฐ์๋ฅผ ๋ฐํ์ผ๋ก ์์ฑ๋์์ต๋๋ค.
'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 |