Virtual Memory๋ Physical Memory์ ๊ณต๊ฐ ์ฌ์ฉ ํจ์จ์ ๋์ด๊ธฐ ์ํด ๋ง๋ค์ด์ง ๊ธฐ์ ์ด๋ค.
์ง๊ธ๊น์ง ์ดํด๋ณธ memory management๋ virtual memory๊ฐ ์๋ค๋ ๊ฐ์ ํ์ ์ ๊ฐ๊ฐ ๋์๋ค.
Virtual Memory
ํฐ๋
ธ์๋ง ๋จธ์ ์ ๋ฐ๋ฅด๋ฉด ํ๋ก์ธ์ค์ ๋ชจ๋ address space๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์ผ ํ๋ก๊ทธ๋จ์ด ์ํ๋ ์ ์๋ค๊ณ ํ๋ค.
=> ์ด๋ก ์ ์ผ๋ก๋ ๊ทธ๋ ๋ค.
๊ทธ๋ฌ๋ CPU ์ ์ฅ์์๋ ์๊ธฐ๊ฐ ํ์ฌ ์ํํด์ผ ํ Instruction๊ณผ Instruction์ด ์ ๊ทผํด์ผ ํ Data๋ง ์ฌ์ฉํ๋ฏ๋ก ์๋ค๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ผ๋ฉด ์ค์ง์ ์ผ๋ก ํ๋ก๊ทธ๋จ ์ํ์ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์๋ค.
์ด์ ๋ถํฐ ์ด๋ก ๊ณผ ์ค์ ๋ ๋ค๋ฅด๋ค.
์ค์ ๋ก CPU๊ฐ ์ ๊ทผํ๋ Instruction๊ณผ ๋ฐ์ดํฐ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ์.
๋น์ฅ ํ์ํ์ง ์์ ๋ถ๋ถ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค์ง ์์ผ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
๋ํ ํ๋ก์ธ์ค ๊ด์ ์ผ๋ก ๋ณด๋ฉด ์ ์ฒด address space ์ค ์ผ๋ถ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ผ๋ฏ๋ก ๋ ๋ง์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์ํ๋ ์ ์์ผ๋ฏ๋ก ๋์์ ๋ ๋ง์ ํ๋ก์ธ์ค๊ฐ ์ํ๋ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ๋๋ฉด ํ๋ก์ธ์ค์ ๋ชจ๋ address space๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ด์ผ ํ๋ค๋ ์ฒ ํ์ด ๊นจ์ ธ๋ฒ๋ฆฐ๋ค.
์ด ์ฒ ํ์ ์ ์งํ๋ฉด์๋ ์ค์ง์ ์ผ๋ก ์ผ๋ถ๋ง ์ฌ๋ผ์ค๊ฒ ํด์ ํจ์จ์ฑ์ ๋์ด๋ ๋ฐฉ๋ฒ์ ์์๊น??
CPUํํ
๋ ์ด ํ๋ก์ธ์ค์ ๋ชจ๋ address space๊ฐ ๋ค ์ฌ๋ผ์จ ๊ฒ์ฒ๋ผ ์์ธ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ๋ค์์ OS๊ฐ CPU๊ฐ ์ ๊ทผํ๋ ๋ถ๋ถ์ ๋ค ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ ์ ์๋๋ก ๋ฐ์๊ฒ ์ผ์ ํ๋ค.
=> OS๋ ์ผ๋ถ๋ง ์ฌ๋ผ์จ ๊ฑธ ์์ง๋ง CPU์ ํ๋ก์ธ์ค๋ ๋ชจ๋ address space๊ฐ ๋ค ์ฌ๋ผ์จ ๊ฒ์ผ๋ก ์๊ณ ์๋ค.
๊ทธ๋ ๋ค๋ฉด CPU๊ฐ ์ ๊ทผํ๋ ค๋ ๋ฐ์ดํฐ๊ฐ ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ง ์์ ๋๋ง ์ ์ฒ๋ฆฌํด์ฃผ๋ฉด ๋ฌธ์ ์์ด ์ํ๋ ์ ์๋ค.
=> page๋ฅผ ๊ต์ฒดํ๋ ๋ฐฉ์์ผ๋ก ํด๊ฒฐ
์ฆ, logical address space์ physical address space๊ฐ ๋ถ๋ฆฌ๊ฐ ๋๋ค.
=> CPU๊ฐ ์๊ณ ์๋ ๊ฑด logical address space, OS๊ฐ ์๊ณ ์๋ ๊ฑด physical address space.
์ด๋ ๊ฒ ํ๋ฉด ์ข์ ์ ์ค ํ๋๋ ํ๋ก์ธ์ค๋ ์ค์ ์ฃผ์๋ ๋ชจ๋ฅด๊ณ logical address๋ง ์๊ณ ์๊ธฐ ๋๋ฌธ์ OS๋ ํ๋ก์ธ์ค๋ค์ด physical address space๋ฅผ ๊ณต์ ํ๋๋ก ํ ์ ์๋ค.
๊ทธ๋ผ์๋ ํ๋ก์ธ์ค๋ค์ ๊ฐ๋ณ์ ์ผ๋ก logical address space๋ฅผ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋
๋ฆฝ์ ์ธ ๊ณต๊ฐ์ ๊ฐ๊ณ ์๋ค๊ณ ์๊ฐํ๋ค.
์ด๋ฌํ ํน์ ์ด ๊ฐ์ ธ๋ค์ฃผ๋ ์ถ๊ฐ์ ์ธ ์ด์ ๋ ์๋ค.
ํ๋ก์ธ์ค๊ฐ ๋ง๋ค์ด์ง๋ ค๋ฉด fork๋ฅผ ํด์ผ ํ๋๋ฐ, ์์ ํ๋ก์ธ์ค๋ ๋ถ๋ชจ ํ๋ก์ธ์ค์ address space๋ฅผ ๊ทธ๋๋ก ๋ณต์ฌํ๋ค๊ณ ํ๋ค.
virtual memory ๊ฐ๋
์ด ์์ ๋๋ ์ค์ ๋ก ๋
๋ฆฝ์ ์ธ physical address ๊ณต๊ฐ์ ๋ง๋ค์ด์ address space๋ฅผ ๋ณต์ฌํด์คฌ๋ค.
๊ทธ๋ฐ๋ฐ virtual mermoy ๊ฐ๋
์ด ๋์
๋๋ฉด, ์์ ํ๋ก์ธ์ค๋ logical address space๋ง ๋
๋ฆฝ์ ์ผ๋ก ์ ๊ณตํ๊ณ ์ค์ ๋ก๋ ๋ถ๋ชจ์ address space๊ฐ ์ ์ฅ๋ physical memory๋ฅผ ๊ณต์ ํ๋๋ก ๋ง๋ค ์ ์๋ค.
=> ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
=> ๋ํ ๋ฉ๋ชจ๋ฆฌ ๋ณต์ฌ๊ฐ ํ์๊ฐ ์์ผ๋ฏ๋ก ๋น ๋ฅด๊ฒ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ํ๋ ๋ง๋ค ์ ์๋ค.
์์ ๋๋ ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ๊ทผํด์ ๊ฐ์ ๋ฐ๊พธ๋ ค๊ณ ํ๋ฉด ๊ทธ๋๋ ์ด์ฉ ์ ์์ด ์ค์ ๋ก ๋ฌผ๋ฆฌ์ ๊ณต๊ฐ์ ๋ณ๋๋ก ์ ๊ณตํด์ผ ํ๋ค.
Demand paging
์ง๊ธ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ง ์์ ๋ถ๋ถ์ CPU๊ฐ ๊ฐ์๊ธฐ ์ ๊ทผํ๊ฒ ๋ ๋ ์ด๋ป๊ฒ ํ ๊ฒ์ธ์ง๋ฅผ ํด๊ฒฐํด์ผ ํ๋ค.
์ด๊ฒ๋ง ํด๊ฒฐํ๋ฉด ํ๋ก์ธ์ค๋ ํฐ ๋ฌธ์ ์์ด ์ํ๋ ์ ์๋ค.
์ฐ๋ฆฌ๋ paging ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค๋ ๊ฐ์ ํ์ virtual memory๋ฅผ ๋ฐฐ์ธ ๊ฒ์ด๋ค.
ํ๋ก์ธ์ค์ ์ ์ฒด address space ์ค ์ผ๋ถ ํ์ด์ง๋ ์ค์ physical memory์ ์ฌ๋ผ์ ์์ ๊ฒ์ด๊ณ ์ผ๋ถ ํ์ด์ง๋ ์ฌ๋ผ์ ์์ง ์์ ๊ฒ์ด๋ค.
๊ทธ๋ฐ๋ฐ CPU๊ฐ ์ฌ๋ผ์ ์์ง ์์ ํ์ด์ง์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด OS๋ ์ฌ๋น ๋ฅด๊ฒ ํด๋นํ์ด์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ฃผ์ด์ผ ํ๋ค.
๊ทธ๋์ ํ์ด์ง ๋จ์๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ณ ๋ด๋ฆฌ๋ ๊ธฐ์ ์ด ํ์ํ๋ค.
์ง๊ธ๊น์ง ๋ฐฐ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋์คํฌ ์ฌ์ด์ Swap์ ํ๋ก์ธ์ค ๋จ์๋ก ๋ฐ์ํ์๋๋ฐ, ์ด์ ๋ ํ์ด์ง ๋จ์๋ก ํด์ฃผ๋ฉด ๋๋ค.
๋ํ ์ค์ ๋ก ์ ๊ทผ๋๋ ํ์ด์ง๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค๊ฒ ๋ ๊ฒ์ด๋ฏ๋ก, Suspend๋ ํ๋ก์ธ์ค์ ํ์ด์ง๋ค์ ๊ตณ์ด ๋์คํฌ๋ก ๋ด๋ฆฌ์ง ์์๋ ์์ฐ์ค๋ฝ๊ฒ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ๋ ค๋ ๊ฒ์ด๋ค.
Virtual memory larger than Physical memory
Virtual memory๋ฅผ ์ฌ์ฉํ์ ๋์ ํจ๊ณผ :
์ค์ ํ๋ก์ธ์ค์ logical address space์ ํฌ๊ธฐ๊ฐ DRAM์ ํฌ๊ธฐ๋ณด๋ค ํฐ ๊ฒฝ์ฐ์๋ ํ๋ก์ธ์ค๊ฐ ์ํ๋ ์ ์๋๋ก ํด์ค๋ค.
ํ๋ก์ธ์ค๊ฐ ๋์ ํ ๋น์ ๋ง์ด ํด์ ์ ์ ์ปค์ง๋ค ๋ณด๋ฉด ์ค์ DRAM์ ํฌ๊ธฐ๋ณด๋ค ์ปค์ง ์๋ ์๋ค.
=> ๊ทธ๋ฌ๋ฉด ํ๋ก์ธ์ค๋ ๋์์ ํ ์ ์๊ฒ ๋๋๋ฐ, virtual memory๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ฌ ์ฌ์ฉ์ค์ธ ํ์ด์ง๋ง ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ฉด ๋๋ฏ๋ก ๊ทธ ๊ฒฝ์ฐ์๋ ์ ์์ ์ผ๋ก ์ํ๋ ์ ์๋ค.
Demand paging
ํ์ด์ง์ ์ ๊ทผํ๋ ค ํ ๋๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ฒ ๋๋ฉด ์ป์ ์ ์๋ ์ฅ์ ์ด ๋ช ๊ฐ์ง ์๋ค.
์ ๊ทผ๋๋ ํ์ด์ง๋ง I/O๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๊ฒ ๋๋ฏ๋ก I/O์ ์์ด ์ค์ด๋ค๊ณ , ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
๋ฐ์์ฑ์ ์ ์ข์์ง๊น?
CPU๊ฐ ์ค์ ๋ก ์ ๊ทผ์ ํด์ผ์ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ฒ์ ํ๋ก์ธ์ค๊ฐ ๋ง๋ค์ด์ง ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋ฌด๋ฐ ํ์ด์ง๋ ์ฌ๋ฆฌ์ง ์๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ฉด ๋ณ๋์ ์ค๋น ๊ณผ์ ์์ด ๋ฐ๋ก ์ํ์ ์์ํ ์ ์๋ค.
์ค์ ๋ก ํ์ด์ง๊ฐ ์ฌ๋ผ์ ์๋์ง๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด์ valid, invalid bit์ ์ฌ์ฉํ๋ค.
๋ํ ์ด ํ์ด์ง์ ๋ํ ์ ๊ทผ์ด ํฉ๋ฒ์ ์ธ ์ ๊ทผ์ธ์ง ํฉ๋ฒ์ ์ด์ง ์์ ์ ๊ทผ์ธ์ง๋ฅผ ๋ํ๋ด๋ ์ฉ๋๋ก๋ ์ฌ์ฉ๋๋ค.
Swap์ ์ํํ๋ ์ ๋ฅผ Swapper๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ, ๊ทธ ์ค์์๋ page ๋จ์๋ก swap์ ํ๋ Swapper๋ฅผ Pager๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
ํ์ด์ง ํ ์ด๋ธ์ ๋ชจ๋ ํ์ด์ง์ ๋ํด ์ํธ๋ฆฌ๊ฐ ๋ง๋ค์ด์ ธ ์์ง๋ง, ๋ชจ๋ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์๋ ๊ฒ์ด ์๋๋ฏ๋ก ์ํธ๋ฆฌ๋ง๋ค ํ์๋ valid-invalid bit์ ์ญํ ์ด ํ ์ธต ๋ ์ค์ํด์ง๋ค.
ํ์ด์ง ํ ์ด๋ธ์ ์ํธ๋ฆฌ๊ฐ invalid๋ก ํ์๋์ด ์๋ ๊ฒฝ์ฐ๋ 3๊ฐ์ง๋ก ๋๋ ์ ์๊ฐํ ์ ์๋ค.
1. illegal
CPU๊ฐ ๋ฐ์์ํจ logical address๊ฐ ํ๋ก์ธ์ค์ ์ฌ์ด์ฆ๋ณด๋ค ํฐ ๊ฒฝ์ฐ์ ์์ ํ ์๋ชป๋ ์ฃผ์๋ฅผ ์ ๊ทผํ๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด ์ด ํ๋ก์ธ์ค์ address space๋ 10๊ฐ์ ํ์ด์ง๋ก ๊ตฌ์ฑ๋์ด ์๋๋ฐ, 11๋ฒ์งธ ํ์ด์ง์ ์ ๊ทผํ๋ ค๋ ๊ฒฝ์ฐ์ ์๋ชป๋ ์ ๊ทผ์ด๋ค.
ํ์ด์ง ํ
์ด๋ธ์ด ํ๋ก์ธ์ค์ ์ฌ์ด์ฆ์ ๋ฑ ๋ง์ถฐ์ ๋ง๋ค์ด์ง๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ๋์ง ์๋ ์ํธ๋ฆฌ๊ฐ ๋ฐ์ํ ์ ์๋ค.
=> ์ด ์ํธ๋ฆฌ๋ invalid๋ก ํ์๋ฅผ ํด์ผ ํ๋ค.
2. not in memory
์ค์ CPU๊ฐ ์ ๊ทผ์ ํ ๋๋ง ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์๋ ๊ฒ์ด ์๋๋ผ๊ณ ํ๋ค. ๋์คํฌ์๋ ์ ์ฅ๋์ด ์์ง๋ง ์ค์ ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ง ์์ ํ์ด์ง๋ผ๋ฉด invalid๋ผ๊ณ ํ์๋ฅผ ํด์ผ ํ๋ค.
3. obsolete
๋ฉ๋ชจ๋ฆฌ์๋ ์ฌ๋ผ์ ์๊ณ , ํฉ๋ฒ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ์ ์ธ๋ฐ๋ invalid๋ผ๊ณ ํํ๋์ด ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์๋ ํ์ด์ง์ ๋ฐ์ดํฐ๊ฐ ๋ค๋ฅธ ๋๊ตฐ๊ฐ์ ์ํด ์
๋ฐ์ดํธ๊ฐ ๋ ๊ฒฝ์ฐ, ์ด ํ์ด์ง์ ๋ด๊ฒจ ์๋ ๋ด์ฉ์ ๊ณผ๊ฑฐ์ ๋ฐ์ดํฐ๊ฐ ๋์ด ๋ฒ๋ฆฐ๋ค.
์ด๋๋ ์ต์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฝ์ด์์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ผ ํ๋ค.
์ค์ ๋ก ๊ทธ ํ์ด์ง์ ์ ๊ทผํ๋ ค๊ณ ํ ๋ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค๋ฏ๋ก, ์ฒ์ ํ๋ก์ธ์ค๊ฐ ๋ง๋ค์ด์ง๋ฉด ๋ฉ๋ชจ๋ฆฌ์๋ ์ด๋ ํ ํ์ด์ง๋ ์ฌ๋ผ์ ์์ง ์๋ค.
=> ํ์ด์ง ํ
์ด๋ธ์ ๋ชจ๋ ์ํธ๋ฆฌ๊ฐ invalid์์ ์์ํ๋ค.
๊ทธ๋ฆฌ๊ณ CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๊ธฐ ์ํด์ logical address๋ฅผ ๋ฐ์์ํค๊ฒ ๋๋ฉด, ํ์ด์ง ๊ธฐ๋ฒ์ ์ํด MMU๋ ๊ทธ ํ์ด์ง๊ฐ ์ค์ ๋ก ๋ช ๋ฒ frame์ ์ ์ฅ๋์ด ์๋์ง ์ฐพ๊ธฐ ์ํด ํ์ด์ง ํ
์ด๋ธ์ look up์ ํ๊ฒ ๋๋๋ฐ ํด๋น ์ํธ๋ฆฌ๊ฐ invalid๋ก ํ์๋์ด ์์ผ๋ฉด ํ์ด์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ฃผ์ด์ผ ํ๋ค.
๊ทธ๋๋ page fault๋ฅผ ํธ์ถํ๋ค.
=> ์ปค๋ ์ฝ๋์ page fault handler๊ฐ ๋์คํฌ์์ ํ์ด์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ณผ์ ์ ์ฒ๋ฆฌํด์ค๋ค.
๋ง์ฝ CPU๊ฐ 0๋ฒ ํ์ด์ง์ ๋ฐ์ดํฐ์ ์ ๊ทผ์ ํ๋ ค๊ณ ํ๋ค๋ฉด, MMU๋ ํ์ด์ง ํ ์ด๋ธ์์ 0๋ฒ ํ์ด์ง์ ํด๋นํ๋ ์ํธ๋ฆฌ๋ฅผ ์ฐพ์ ๊ฒ์ด๊ณ valid๋ก ํ์๋์ด ์๊ธฐ ๋๋ฌธ์ ์ค์ frame์ ์์์ฃผ์๋ฅผ ์ฐพ์์ ๋ฌผ๋ฆฌ ์ฃผ์๋ฅผ CPU์๊ฒ ์ ๋ฌํ ์ ์๋ค.
ํ์ง๋ง CPU๊ฐ 1๋ฒ ํ์ด์ง์ ๋ฐ์ดํฐ์ ์ ๊ทผ์ ์๋ํ๋ฉด, MMU๋ ๋๊ฐ์ด ํ์ด์ง ํ ์ด๋ธ์ look upํด์ 1๋ฒ ํ์ด์ง์ ํด๋นํ๋ ์ํธ๋ฆฌ๋ฅผ ์ฐพ์ ๊ฒ์ด๊ณ invalid๋ก ํ์๊ฐ ๋์ด ์๋ค. ๊ทธ๋ ๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ง ์์ ํ์ด์ง๋ผ๋ ๋ป์ด๋ฏ๋ก Page fault๋ฅผ ํธ์ถํ๋ค.
Page Fault
OS๋ ์ด๋ ํ ๊ณผ์ ์ ๊ฑฐ์ณ์ ํ์ด์ง ํดํธ๋ฅผ ์ฒ๋ฆฌํ ๊น?
ํ์ด์ง ํดํธ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ์ MMU๊ฐ ์ ๊ทผํ ํ์ด์ง ํ ์ด๋ธ์ ์ํธ๋ฆฌ๊ฐ invalid๋ก ํ์๋์ด ์์๋ค๋ ๊ฒ์ด๋ค.
๋จผ์ invalid๋ผ๊ณ ํ์๋์ด ์๋ ์ด์ ๊ฐ illegal reference์ธ์ง๋ฅผ ํ๋จํ๋ค.
๋ง์ฝ ์๋ชป๋ ์ฃผ์์ ๋ํ ์ ๊ทผ์ด๋ผ๋ฉด ์ด ํ๋ก์ธ์ค๋ ์ด์ ๋์์ ํ๊ณ ์๋ค๋ ๋ป์ด๋ฏ๋ก abort๋ฅผ ์์ผ๋ฒ๋ฆฐ๋ค.
์ ๋๋ก๋ ์์ญ์ ์ ๊ทผ์ ํ๋๋ฐ invalid๋ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ง ์์ ํ์ด์ง๊ฑฐ๋, update๊ฐ ๋ฐ์ํด์ ๊ณผ๊ฑฐ์ ๋ฐ์ดํฐ๊ฐ ๋์ด๋ฒ๋ฆฐ ํ์ด์ง๊ฑฐ๋ ๋ ์ค ํ๋๋ค.
=> ์ด ๋ ๊ฒฝ์ฐ๋ ๋ชจ๋ ๋์คํฌ์์ ํ์ด์ง๋ฅผ ์ฝ์ด์์ผ ํ๋ ๊ฒฝ์ฐ์ด๋ค.
์ด์ ํ์ด์ง๋ฅผ ์ค์ ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆด ๊ฒ์ธ๋ฐ, ๊ทธ๋ผ ๋จผ์ ๋ฉ๋ชจ๋ฆฌ ๋น frame์ ์ฐพ์์ผ ํ๋ค.
=> ๋น frame์ด ์กด์ฌํ๋ฉด ๊ฑฐ๊ธฐ์ ์ฌ๋ฆฌ๋ฉด ๋์ด๋ค.
๊ทธ๋ฐ๋ฐ ๋ชจ๋ frame์ด ๊ฐ๋ ์ฐฌ ์ํฉ์ด๋ผ๋ฉด ์ด๋ฏธ ์ฌ๋ผ์จ ํ์ด์ง ์ค์ ํ๋๋ฅผ ์ซ์๋ด๊ณ ๋น ๊ณต๊ฐ์ ํ๋ณดํด์ผ ํ๋ค.
=> Replace
๋น ๊ณต๊ฐ์ด ํ๋ณด๋๋ฉด ๋์คํฌ์์ ํ์ด์ง๋ฅผ ์ฝ์ด์์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ๋ค.
๋์คํฌ I/O๊ฐ ๋๋๊ณ ๋๋ฉด( ํ์ด์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ณ ๋๋ฉด ) valid/invalid bit๋ฅผ valid๋ก ๋ฐ๊พธ๊ณ ํ์ด์ง๊ฐ ์ ์ฅ๋ frame์ ์์ ์ฃผ์๋ฅผ ํ์ด์ง ํ
์ด๋ธ์ ์ํธ๋ฆฌ์ ๊ธฐ๋กํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋์๋ ๋์คํฌ I/O๊ฐ ๋ฐ์ํด์ wait ์ํ๊ฐ ๋ ํ๋ก์ธ์ค๋ฅผ ready ์ํ๋ก ๋ฐ๊พธ๊ณ ready queue์ ํธ์
์ํจ๋ค.
page fault๊ฐ ๋ฐ์ํด์ wait ์ํ๊ฐ ๋์๋ ํ๋ก์ธ์ค๊ฐ ๋ค์ ready๊ฐ ๋์ด CPU๋ฅผ ๋ฐ๊ฒ ๋๋ฉด trap์ด ๋๋๊ฒ ๋๊ณ , ์ ๊ทผํ๋ ค๋ ๋ฐ์ดํฐ๊ฐ ์ด์ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ผ๋ฏ๋ก ์๋ ์ํํ๋ ค๋ ์ฝ๋๋ฅผ ์ ์์ ์ผ๋ก ์ํํ ์ ์๊ฒ ๋๋ค.
Page fault๊ฐ ๋ฐ์ํ๊ณ , ์ฒ๋ฆฌ๋๋ ๊ณผ์ ์ ๊ฐ๋ตํ๊ฒ ๋ํ๋ธ ๊ทธ๋ฆผ์ด๋ค.
Difficulties in actual HW design
์์์ ์ดํด๋ณธ page fault๋ฅผ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ ์ค์ ๋ก ๊ตฌํํ๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ต๋ค.
๋ช ๋ น์ด๋ฅผ fetchํ๋ ๊ณผ์ ์ด๋ operand(ํผ์ฐ์ฐ์)๋ฅผ fetchํ๋ ๊ณผ์ ์์ ํ์ด์ง ํดํธ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋น๊ต์ ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
๊ทธ๋ฌ๋ Worst Case๋ฅผ ์ดํด๋ณด์.
Instruction์ด updateํ๋ ค๋ destination์ด ์ฌ๋ฌ ๊ณณ์ผ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
Destination address๊ฐ 10 byte์ copy๋ฅผ ํด์ผ ํ๋ค. ๊ทธ๋ฐ๋ฐ 5 byte๋ ํ๋์ ํ์ด์ง ๋ ๋ถ๋ถ์ ๋ค์ด๊ฐ ์๊ณ , ๋๋จธ์ง 5 byte๋ ๋ ๋ฒ์งธ ํ์ด์ง ์ฒซ ๋ถ๋ถ์ ๋ค์ด ์๋ค๋ฉด?
์ฆ, ์นดํผํด์ผ ํ ๋์์ด 2๊ฐ์ ํ์ด์ง์ ๊ฑธ์ณ์ ์๋ค๋ฉด?
์ผ๋จ ์ด instruction์ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฑ๊ณตํ๊ณ , source address๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ๊ฒ๋ ์ฑ๊ณต์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ destination address์ ์ฒซ ๋ฒ์งธ ํ์ด์ง๋ฅผ ์ฝ์ด์ค๋ ๋ฐ์๋ ์ฑ๊ณตํ๋ค, ๊ทธ๋ผ ์ฒซ ๋ฒ์งธ ํ์ด์ง์๋ source ๋ฐ์ดํฐ๊ฐ copy๊ฐ ๋๊ฒ ์ง,
๊ทธ๋ฐ๋ฐ ๋ ๋ฒ์งธ ํ์ด์ง๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ง ์์ ํ์ด์ง๋ผ๋ฉด, ๋ ๋ฒ์งธ ํ์ด์ง์๋ copy๋ฅผ ํ ์๊ฐ ์๋ค.
=> page fault๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. ๋ช
๋ น ์ํ ๋์ค์ page fault๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค.
๊ทธ๋ผ ์ด ํ๋ก์ธ์ค๋ I/O๋ฅผ ๋ฐ์์ํค๊ณ wait ์ํ๋ก ๊ฐ์ผ ํ๋ค.
ํ์ด์ง ํดํธ๊ฐ ์ฒ๋ฆฌ๋๊ณ ๋ค์ ๋์์ค๋ฉด ์ด ํ๋ก์ธ์ค๋ ๋ช
๋ น์ด๋ฅผ fetchํ๋ ๊ฒ๋ถํฐ ๋ค์ ์์ํด์ผ ํ๋ค.
๊ทธ๋ฐ๋ฐ ์ฒซ ๋ฒ์งธ ํ์ด์ง๋ ์ด๋ฏธ ์นดํผ๊ฐ ๋๋๋ฒ๋ฆฐ ์ํ์ด๋ค.
์ด ํ๋ก์ธ์ค๊ฐ ๋ค์ CPU๋ฅผ ์ก์์ ์์ ํ copy๋ฅผ ๋ง์น ๋๊น์ง๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ด ๊นจ์ง ์ํ๊ฐ ๋์ด๋ฒ๋ฆฌ๋ ๊ฒ์ด๋ค.
๋ช
๋ น์ด ์ํ๋๋ ๋์ค์ ํ์ด์ง ํดํธ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์๋ ๋ค์ ์ํํ๊ธฐ ์ ์ผ๋ก ๋๋๋ฆฌ๊ณ ํ์ด์ง ํดํธ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ค.
๊ทธ๋ฐ๋ฐ ๊ทธ๊ฒ ๋๋ ค๋ฉด ์นดํผ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ฐฑ์
ํด๋ฌ์ผ ํ๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ค๋ก ์ธํด ํ์ด์ง ํดํธ๋ฅผ ๋จ์๊ฒ ์ฒ๋ฆฌํ ์๋ ์๋ค.
=> ์ฌ๊ธฐ๋ถํฐ๋ OS๋ฅผ ์ ๊ณต์ผ๋ก ํ๊ฒ ๋๋ฉด ์ด๋ฐ ๊ฒ๋ค์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊น ์ฌ๋์๊ฒ ๋ฐฐ์ฐ๊ฒ ๋๋ค.
์ผ๋จ์ ํ์ด์ง ํดํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์์ฒญ ์ด๋ ค์ด ์ผ์ด๊ตฌ๋ ์ ๋๋ง ์๊ณ ๋์ด๊ฐ์.
Performance of Demand Paging
Demad Paging ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ ๋์ ์ฑ๋ฅ์ ์ด๋ป๊ฒ ๋ ๊น?
[Swap page out if nedded] ๋ผ๊ณ ํ๊ธฐ๋ ์ด์ ๋? ๋น์ด ์๋ frame์ด ์์ผ๋ฉด ๊ธฐ์กด์ ์ฌ๋ผ์ ์๋ ํ์ด์ง์ค ํ๋๋ฅผ ์ซ์๋ด์ผ ํ๋ค๊ณ ํ๋ค. ์ด๋ ์ซ๊ฒจ๋๋ ํ์ด์ง๋ ๋ค์ ๋์คํฌ์ ์จ์ผํ ์๋ ์๊ณ ์ฐ์ง ์์๋ ๋ ์๋ ์๋ค.
๋ฉ๋ชจ๋ฆฌ์ ํ์ด์ง์ ํ๋ ๋์คํฌ์ ํ์ด์ง์ ๋ด์ฉ์ด ์ผ์นํ๋ฉด, ์ฆ ๋ฐ์ดํฐ์ update๊ฐ ๋ฐ์ํ์ง ์์์ผ๋ฉด ๊ตณ์ด swap out์ ํด์ค ํ์๊ฐ ์๋ค.
๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ์๊ฐ์ 200ns์ด๊ณ , ํ์ด์ง ํดํธ๊ฐ ๋ฐ์ํ์ ๋ ์ฒ๋ฆฌํ๋ ์๊ฐ์ 8ms๊ฐ ๊ฑธ๋ฆฐ๋ค๊ณ ํ์.
ํ์ด์ง ํดํธ๊ฐ ๋ฐ์ํ๋ฉด ๋์คํฌ I/O๊ฐ ๋ฐ์ํ๋ฏ๋ก ๋น์ฐํ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ๊ฒ์ด๋ค.
์ด๋ ํ์ด์ง ํดํธ๊ฐ CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ 1000๋ฒ ์ ๊ทผํ ๋๋ง๋ค 1๋ฒ์ฉ ๋ฐ์ํ๋ค๊ณ ํ๋ฉด, p = 0.001์ด ๋๋ค.
๊ทธ๋์ EAT๋ 8.2 μs๋ก ๊ทธ๋ฅ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ์ ๋๋ณด๋ค ๋ฌด๋ ค 40๋ฐฐ๋ ๋๋ ค์ง๋ค.
์ด ์ ๋๋ฉด ์ฌ์ฉ์ ํ๋ฉด ์ ๋๋ ๊ฒ ์๋๊ฐ??
Pure demand paging :
CPU๊ฐ ์ ๊ทผํ ๋๋ง Swap์ด ๋ฐ์ํด์ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋ฌด๋ฐ ํ์ด์ง๋ ์ฌ๋ผ์ ์์ง ์๋ค.
Locality of reference :
ํ ๋ฒ ๊ฐ์ง๊ณ ์จ ๋ฐ์ดํฐ์ ๋ํด์ ์์ฃผ ์ ๊ทผํ๊ฒ ๋๋ฉด ํ์ด์ง ํดํธ ํ ๋ฒ์ผ๋ก ๋ง์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ์ปค๋ฒํ ์ ์๊ฒ ๋๋ค.
์ค์ ๋ก locality๊ฐ ๋งค์ฐ ๊ฐํ๊ธฐ ๋๋ฌธ์ ํ์ด์ง ํดํธ๋ก ์ธํ ์ฑ๋ฅ ์ ํ๊ฐ ๊ทธ๋ ๊ฒ ์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ virtual memory๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ์ธ๊ธฐ ์๋ ํ์ด์ง๋ฅผ ์ซ์๋ด์ง ์๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ค์ํ ์ํฅ์ ๋ฏธ์น๋ค.
=> ์์คํ ์ด locality๋ฅผ ์ด์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ฒ์ด ์ค์ํ๋ค.
=> ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ด locality ๋ณดํธ๋ฅผ ์ํด ์ค์ํ๋ค.
ํ์ด์ง ํดํธ๊ฐ ๋ฐ์ํ์ ๋, ๋์คํฌ์์ ํ์ด์ง๋ฅผ ์ฝ์ด์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ผ ํ๋๋ฐ ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ด ์๋ค๋ฉด ๊ธฐ์กด์ ํ์ด์ง ์ค ํ๋๋ฅผ ๋ฐ์ด๋ด์ผ ํ๋ค๊ณ ํ๋ค.
์ด๊ฒ์ Page replacement(ํ์ด์ง ๊ต์ฒด)๋ผ๊ณ ํ๊ณ , ๋ฐ๋ ค๋๋ ํ์ด์ง๋ฅผ victim page๋ผ๊ณ ํ๋ค.
๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ์ดํ์ ํด๋น ํ์ด์ง์์ ์์ ์ด ๋ฐ์ํ๋์ง๋ฅผ ํ์ธํด์ผ ํ๋ค.
=> ์์ ์ด ๋ฐ์ํ์ง ์์์ผ๋ฉด ๊ตณ์ด swap out์ ํด์ค ํ์๊ฐ ์๋ค.
=> ์์ ์ด ๋ฐ์ํ๋ค๋ฉด dirty bit๋ฅผ 1๋ก ํ์ํ๊ณ , dirty bit๊ฐ 1์ธ ํ์ด์ง๋ ๋์คํฌ์ ๋ค์ ์จ์ค์ผ ํ๋ค(swap out).
victim page๋ฅผ ์ ์ ํ ๋, Locality๋ฅผ ์ต๋ํ ํ์ฉํ ์ ์๋๋ก ์ ์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค.
Page-Replacement Algorithms
Victim page๋ฅผ ์ ์ ํ๊ธฐ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ดํด๋ณผ ๊ฒ์ด๋ค.
ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ์ธก์ ํ๊ธฐ ์ํด์, CPU๊ฐ ์ ๊ทผํ๋ ํ์ด์ง ๋ฒํธ๋ฅผ ์ ํด๋๊ณ ์ด ์์๋๋ก ์ ๊ทผํ์ ๋ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ด ํ์ด์ง ํดํธ๊ฐ ๊ฐ์ฅ ์ ๊ฒ ๋ฐ์ํ๋์ง ์๋ฎฌ๋ ์ด์ ํ๋ค.
์๋ฎฌ๋ ์ด์ ์ ๋ค์ด๊ฐ๊ธฐ ์ ์, ํ๋ ์๊ฐํด๋ณด์.
๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ์ปค์ง๋ฉด ํ์ด์ง ํดํธ๊ฐ ๋ ๋ฐ์ํ๋ค๋ ๊ฒ์ ์์์ ์ผ๋ก ์๊ฐํด ๋ณผ ์ ์๋ค.
1. First In First Out (FIFO) Algorithm
ํ์ด์ง ๊ต์ฒด๋ ์ด๋ค ์์๋ก ํ์ด์ง๋ฅผ ์ซ์๋ผ์ง๋ฅผ ์ ํ๋ ๊ฒ์ด๋ฏ๋ก ์ค์ผ์ค๋ง์ผ๋ก ์๊ฐํ ์ ์๋ค.
์ค์ผ์ค๋ง ์ ์ฑ
์์ ํญ์ ๊ณ ๋ ค๋๋ ๋ฐฉ์ ์ค ํ๋๊ฐ FIFO ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ํ๋ค.
victim page๋ฅผ ์ ์ ํ ๋, ๊ฐ์ฅ ์ค๋ ์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ํ์ด์ง๋ฅผ victim์ผ๋ก ์ ์ ํ๋ค.
๋ฉ๋ชจ๋ฆฌ์ 3๊ฐ์ ํ์ด์ง frame์ด ์กด์ฌํ๋ค๊ณ ํ์ ๋, 9๋ฒ์ ํ์ด์ง ํดํธ๊ฐ ๋ฐ์ํ๋ค.
๊ทธ๋ฐ๋ฐ ๊ณต๊ฐ์ ๋๋ ค์ 4๊ฐ์ ํ์ด์ง frame์ด ์กด์ฌํ๋ค๊ณ ํ๋ฉด, 10๋ฒ์ ํ์ด์ง ํดํธ๊ฐ ๋ฐ์ํ๋ค.
์์์์ ๋ฒ์ด๋๋ ํ์์ด๋ค.
=> Belady's Anomaly (Belady์ ์ด์ํ์)
FIFO๋ ์ข์ Replacement Algorithm์ด ๋ ์ ์๋ค.
2. Optimal Algorithm
FIFO ๋ฐฉ์์์ ๋ณผ ์ ์์๋ฏ์ด ์ฐจํ์ ์ ๊ทผ๋ ํ์ด์ง๊ฐ victim์ผ๋ก ์ ์ ๋๋ฉด ํ์ด์ง ํดํธ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
๊ทธ๋ฌ๋ฉด ๊ฐ๊น์ด ์๊ฐ์ ์ ๊ทผ๋ ํ์ด์ง๋ victim์ผ๋ก ์ ์ ํ์ง ๋ง์๋ ์๊ณ ๋ฆฌ์ฆ
=> ์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋ฏธ๋์ ์ ๊ทผ๋ ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ์์์ผ ํ๋๋ฐ ์ ์ด ์๋ ์ด์ ์ฌ์ค์ ๋ถ๊ฐ๋ฅํ๋ค.
๊ทธ๋๋ ์ ์ ์๋ค๊ณ ๊ฐ์ ํ๊ณ ์ด๋ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ค์ ํ์.
=> ์ด ์๊ณ ๋ฆฌ์ฆ๊ณผ ์ต๋ํ ๊ฐ๊น์ด ์ฑ๋ฅ์ ๋ณด์ด๋ ์๊ณ ๋ฆฌ์ฆ์ด ์ข์ ์๊ณ ๋ฆฌ์ฆ์ผ ๊ฒ์ด๋ค.
ํ์ด์ง ํดํธ๊ฐ ๋ฐ์ํ ์์ ์์ ์ฐจํ์ ๊ฐ์ฅ ๋์ค์ ์ ๊ทผ๋ ํ์ด์ง๋ฅผ victim์ผ๋ก ์ ์ ํ๋ค.
์ด๋ ๊ฒ ํ์ ๋๋ ํ์ด์ง ํดํธ๊ฐ 6๋ฒ ๋ฐ์ํ๋ค.
3. Least Recently Used Algorithm
๋ฏธ๋๋ฅผ ์์ธกํ๊ธฐ ์ํ ๊ฐ์ฅ ์ข์ ์ ๋ณด๋ ๊ณผ๊ฑฐ์ ์ ๋ณด๋ผ๊ณ ํ๋ค.
Locality์ ์ํด ๊ณผ๊ฑฐ์ ์์ฃผ ์ ๊ทผ๋ ๋ฐ์ดํฐ๋ ๋ฏธ๋์๋ ์์ฃผ ์ ๊ทผ๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ์ต๊ทผ์ ์ ๊ทผ๋ ํ์ด์ง๋ ์์ผ๋ก๋ ์ ๊ทผ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ ๊ฒ์ด๋ค.
=> ์ต๊ทผ์ ๊ฐ์ฅ ์ค๋ ์ ์ ์ ๊ทผ์ด ๋ ํ์ด์ง๋ฅผ victim์ผ๋ก ์ ์ ํ๋ค.
๊ณผ๊ฑฐ์ ์ ๊ทผ ํํ๋ฅผ ๋ณด๊ณ ๋ฏธ๋์ ์ ๊ทผ๋ ๋ฐ์ดํฐ๋ฅผ ์์ธก.
optimal์ ๋ฏธ๋๋ฅผ ๋ด๋ค๋ดค๋ค๋ฉด, LRU๋ ๊ณผ๊ฑฐ๋ฅผ ๋ณธ๋ค.
LRU ์๊ณ ๋ฆฌ์ฆ์ ์ปดํจํฐ๋ฅผ ๋ฐฐ์ฐ๋ ์ฌ๋์ด๋ผ๋ฉด ๋ชจ๋๊ฐ ์๊ณ ์์ด์ผ ํ ๋งํผ ์์คํ ์์ ๋ง์ด ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
๊ทธ๋ฐ๋ฐ LRU ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ค๊ณ ํ์ ๋ ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ์๋ค.
LRU ์๊ณ ๋ฆฌ์ฆ์ OS์ ๊ตฌํํ๋ ค๋ฉด, ์ผ๋จ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ๊ฐ๊ฐ์ ํ์ด์ง๊ฐ ์ต๊ทผ์ ์ธ์ ์ ๊ทผ๋์๋์ง timestamp๊ฐ ๋ค ์ฐํ ์์ด์ผ ํ๋ค.
๊ฐ ํ์ด์ง์ ๋ํ timestamp ์ ๋ณด๋ค์ด ๋ณ๋๋ก ๊ด๋ฆฌ๊ฐ ๋์ด์ผ ํ๋ค.
OS์์ ํ์ด์ง ๋ฐฐ์ด ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์๋ ์๋ฃ ๊ตฌ์กฐ๊ฐ ์๋ค.
=> ๋ฐ๋ก ํ์ด์ง ํ
์ด๋ธ์ด๋ค.
ํ์ด์ง ํ
์ด๋ธ์๋ ๋ชจ๋ ํ์ด์ง์ ๋ํ ๋งคํ ์ ๋ณด๊ฐ ์ ์ฅ๋์ด ์๋ค.
ํ์ด์ง ํ
์ด๋ธ์ column ํ๋๋ฅผ ์ถ๊ฐํด์ ์ต๊ทผ์ ์ ๊ทผ๋ ์๊ฐ์ ๊ธฐ๋กํ๋ค๋ฉด, ๋ชจ๋ ํ์ด์ง๋ค์ด ์ธ์ ์ ๊ทผ๋์๋์ง ๊ธฐ๋กํ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ํ์ด์ง ํ
์ด๋ธ์ ๊ธฐ๋กํ๋ space ์ค๋ฒํค๋๋ ๊ทธ๋ ๋ค๊ณ ์น๊ณ , victim์ ์ ์ ํด์ผ ํ ๋ ํ์ด์ง ํ
์ด๋ธ์์ ๊ฐ ํ์ด์ง์ timestamp๋ฅผ ๋ณด๊ณ min ๊ฐ์ ์ฐพ์์ผ ํ๋ค. => O(N)์ด ์์๋๋ค.
time ์ค๋ฒํค๋๊ฐ ๋๋ฌด ํฌ๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค.
ํ์ด์ง ํดํธ๊ฐ ๋๋ฉด ํ์ด์ง ํดํธ ํธ๋ค๋ฌ๋ O(N)์ ๊ฑธ์ณ ๊ฐ์ฅ ์ค๋ ์ ์ ์ ๊ทผ๋ ํ์ด์ง๋ฅผ ์ฐพ์์ผ ํ๋ค.
๊ทธ๋ผ LRU๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ ๊ฑด๊ฐ?
LRU์ ๋น์ทํ์ง๋ง ํ์ ์ค๋ฒํค๋๋ ํ ์ค์ด๋๋ ์๊ณ ๋ฆฌ์ฆ์ด ์์๊น?
=> LRU approximation algorithm
๊ทธ ์ ์ LRU ๊ตฌํ์ ๋ฐฉ์์ ์กฐ๊ธ ๋ณ๊ฒฝํด์ ์ค๋ฒํค๋๋ฅผ ์ค์ผ ์ ์๋์ง ์ดํด๋ณด์.
Counter implementation
timestamp๋ฅผ ์ฐ๊ธฐ ์ํด์๋ ํ์ด๋จธ๋ผ๋ device์์ ์๊ฐ ๊ฐ์ ๋ฐ์์์ผ ํ๋๋ฐ, ํ์ด๋จธ๋ ์ฅ์น์ด๋ฏ๋ก I/O๊ฐ ๋ฐ์ํด์ผ ํ๋ค.
๋ฌผ๋ก ๋์คํฌ ์ ๊ทผ์ฒ๋ผ ์ค๋ ๊ฑธ๋ฆฌ๋ I/O๋ ์๋์ง๋ง ๊ทธ๋๋ I/O๋๊น ์๊ฐ์ด ์กฐ๊ธ์ ๊ฑธ๋ฆฐ๋ค.
๊ตณ์ด ์ ํํ ์๊ฐ์ ๋ฐ์์์ ๊ธฐ๋กํ ํ์๊ฐ ์์๊น??
CPU count๋ผ๋ ๋ณ์๋ฅผ ๊ฐ๊ณ ์๊ณ , CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ๋๋ง๋ค Count๊ฐ์ 1 ์ฆ๊ฐ์ํจ๋ค.
=> ์ฆ, CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ํ์๊ฐ CPU count๊ฐ ๋๋ค.
CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ๋, ํด๋น ํ์ด์ง์ Count ๊ฐ์ ๊ธฐ๋กํ๋ค.
์ด Count ๊ฐ์ด ๊ฐ์ฅ ์์ ํ์ด์ง๊ฐ ๊ฐ์ฅ ์ค๋ ์ ์ ์ ๊ทผ๋ ํ์ด์ง๊ฐ ๋๋ค.
๊ทธ๋ฐ๋ฐ ๊ทธ๋ ๋ค๊ณ ํ๋๋ผ๋ ์ฌ์ ํ victim์ ์ฐพ๊ธฐ ์ํด O(N)์ ์๊ฐ์ด ์์๋๋ค๋ ๋ฌธ์ ๋ ํด๊ฒฐ๋์ง ์๋๋ค.
Stack implementation
ํ์ด์ง๋ค์ double linked list๋ก ๊ตฌํํด์ ๊ฐ์ฅ ์ต๊ทผ์ ์ ๊ทผ๋ ํ์ด์ง๋ฅผ ์คํ์ ๊ฐ์ฅ ์๋ก ์ฌ๋ฆฐ๋ค.
์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋ชจ๋ ํ์ด์ง๋ค์ prev์ next ํฌ์ธํฐ๋ฅผ ๊ฐ๊ณ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ double linked list์ด๋ค.
ํ์ด์ง ํดํธ๊ฐ ๋ฐ์ํ ์์ ์์ Stack์ ์ ์ผ ์๋์ ์๋ ํ์ด์ง๊ฐ ๊ฐ์ฅ ์ ๊ทผ๋์ง ์ค๋๋ ํ์ด์ง๊ฐ ๋๋ค.
O(1)๋ง์ victim์ ์ ์ ํ ์ ์๋ค.
ํ์ง๋ง ์ด Stack์ ์ ์งํ๊ธฐ ์ํ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
7์ ์ ๊ทผํ์ ๋, 7์ top์ผ๋ก ์ฌ๋ฆฌ๊ธฐ ์ํ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค.
7์ ์๋ก ์ฌ๋ฆฌ๊ธฐ ์ํด์๋ 6๋ฒ ํฌ์ธํฐ์ ์ ๊ทผ์ ํด์ ํฌ์ธํฐ ๊ฐ์ ๋ฐ๊ฟ์ผ ํ๋ค.
=> ์ฆ, 6๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ๋ฐ์ํ๊ฒ ๋๋ค.
์ด Stack์ ์ ์งํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ๋ง๋ค ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํด์ผ ํ๋ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค.
victim ์ ์ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ธฐ ์ํด ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ ์ค๋ฒํค๋๊ฐ ๋งค์ฐ ์ปค์ง๋ค.
Search๋ฅผ ์ํ overhead์ ์๋ฃ ๊ตฌ์กฐ ์ ์ง๋ฅผ ์ํ ์ค๋ฒํค๋๋ ํ๋๋ฅผ ์ค์ด๋ฉด ํ๋๊ฐ ์ปค์ง๋ ๊ด๊ณ๋ค.
LRU๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ด์ฉ ์ ์์ด ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
์ค๋ฒํค๋๋ฅผ ์ค์ด๋ ค๋ฉด LRU ์ฑ๋ฅ์ ์กฐ๊ธ ํฌ๊ธฐํ ์ ๋ฐ์ ์๊ฒ ๋ค.
LRU Approximation Algorithms
Reference bit
ํ์ด์ง๋ง๋ค ์ด ํ์ด์ง๊ฐ ์ฐธ์กฐ๊ฐ ๋์ผ๋ฉด 1, ์ฐธ์กฐ๊ฐ ์ ๋์ผ๋ฉด 0์ผ๋ก ํ์ํ๋ค.
์ฒ์์ ์ด ํ์ด์ง๊ฐ ์ฌ๋ผ์ค๋ฉด 0์ผ๋ก ์ค์ ๋๊ณ , ๋์ค์ ์ด ํ์ด์ง๊ฐ ๋ค์ ํ ๋ฒ ์ฐธ์กฐ๋๋ฉด 1๋ก ๋ฐ๋๋ค.
์ด ๊ฐ์ ์ฃผ๊ธฐ์ ์ผ๋ก 0์ผ๋ก ๋ค์ reset์ ํด์ค๋ค.
victim์ ์ ์ ํ ๋ reference bit์ด 0์ธ ์ ๋ค์ victim์ผ๋ก ์ ์ ํ๊ฒ ๋ค.
๊ทธ๋ฆฌ๊ณ Searchํ ๋ bit๊ฐ 0์ธ ์ ๋ค ์ค ์๋ฌด๊ฑฐ๋ ํ๋๋ฅผ ์ฐพ์ผ๋ฉด ๋๋ฏ๋ก, Search ์ค๋ฒํค๋๊ฐ ๋ง์ด ์ค์ด๋ ๋ค.
๊ทธ๋ฐ๋ฐ victim์ ์ ์ ํด์ผ ํ๋ ์์ ์ 0์ธ ์ ๋ค์ด ๊ฝค ๋ง์ด ์์ํ
๋ฐ, ๊ทธ ์ค์ ๋๊ฐ ๋ ์ค๋ ์ ์ ์ฐธ์กฐ๋๋์ง๋ ๊ตฌ๋ถ์ด ์ ๋๋ค.
=> ์ด๊ฑด ๋๋ฌด ์ฌํ๊ฒ ๊ฐ๋ตํํ ๊ฒ ๊ฐ๋ค.
Additional Reference Bits Algorithm
Reference bit 1๋นํธ ์ธ์ ์ถ๊ฐ์ ์ธ Reference bit๋ฅผ ์ฌ์ฉํ๋ค.
์ฃผ๊ธฐ์ ์ผ๋ก 0์ผ๋ก resetํ์ง ๋ง๊ณ , ํ์ฌ Reference bit๋ฅผ Most Significant Bit(MSB)์ ์ ๊ณ shift right ํ๋ค.
=> ์ฆ, ๊ณผ๊ฑฐ์ ์ ๊ทผ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด๋ค.
8๊ฐ์ ์ถ๊ฐ์ ์ธ ๋นํธ๊ฐ ๊ณผ๊ฑฐ์ ๋ํ ์ ๋ณด๊ฐ ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ฐ๋ฐ ์ด ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋นํธ๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํด์ผ ํ๋ฏ๋ก space ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๊ณ , LRU ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋๊ฐ์ด ๋ชจ๋ ํ์ด์ง์ Additional Reference bit๋ฅผ ํ์ธํด์ victim์ ์ ์ ํด์ผ ํ๋ฏ๋ก time ์ค๋ฒํค๋๋ ๋ฐ์ํ๊ฒ ๋๋ค.
=> ์ด๊ฒ๋ ์ฌ์ฉํ๊ธฐ๊ฐ ์ข ๊ทธ๋ ๋ค.
Clock algorithm
๊ฐ ํ์ด์ง๋ 1bit์ Reference bit๋ฅผ ๊ฐ๊ณ , ํ์ด์ง๋ค์ Circular queue์ ๊ด๋ฆฌ๋๋ค.
๋ค์ ๋ฒ์ victim์ผ๋ก ์ ์ ๋ ํ์ด์ง๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๊ฐ ์๋ค.
=> ์ด ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ํ์ด์ง๋ฅผ victim์ผ๋ก ์ ์ ํ๋ค.
์ด ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ํ์ด์ง์ reference bit๊ฐ 0์ด๋ฉด ๊ทธ๋ฅ ์๋ฅผ victim์ผ๋ก ์ ์ ํ๋ค.
์ด ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ํ์ด์ง์ reference bit๊ฐ 1์ด๋ฉด ์ต๊ทผ์ ์ฐธ์กฐ๊ฐ ๋์๋ค๋ ๋ป์ด๋ฏ๋ก ์ด ํ์ด์ง๋ฅผ victim์ผ๋ก ์ ์ ํ์ง ์๊ณ reference bit๋ฅผ 0์ผ๋ก ๋ฐ๊พผ๋ค. ๊ทธ๋ฐ ๋ค์ ํฌ์ธํฐ๋ฅผ ํ ์นธ ์ฎ๊ฒจ์ ๋ค์ ํ์ด์ง๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํ๋ค.
=> reference bit๊ฐ 0์ธ ์ ๋ฅผ ๋ง๋ ๋๊น์ง ํฌ์ธํฐ๋ฅผ ์ ์ง
Reference bit algorithm๊ณผ์ ์ฐจ์ด๋ reference bit algorithm์์๋ 0๋ค ์ฌ์ด์์ ๋๊ฐ ๋ ์ค๋๋๋์ง๋ฅผ ๊ตฌ๋ถํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์๋ ๋๋ ์์๊ฐ ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์ ๋ฐฉ๊ธ ์ ์ 0์ผ๋ก ๋ฐ๊พผ ๋นํธ์ ์๊น ์ ์ 0์ผ๋ก ๋ฐ๊พผ ๋นํธ๋ ์์ ์์ ์ฐจ์ด๋ก ๊ตฌ๋ถํ ์ ์๋ค๋ ๋ป์ด๋ค.
0์ผ๋ก ๋ฐ๊พธ๊ณ ํ ๋ฐํด๋ฅผ ๋๊ณ ๋ค์ ์์ ๋ ์ฌ์ ํ 0์ด๋ฉด, ํ ๋ฐํด๋ฅผ ๋ ๋์ ์ ๊ทผ์ด ๋์ง ์์๋ค๋ ๋ป์ด๋ฏ๋ก ๊ทธ๋๋ victim์ผ๋ก ์ ์ ํ๋ค.
์์ ๋งํ๋ฏ์ด, 0์ธ bit ์ฌ์ด์๋ ๋ ์ค๋ ์ ์ ์ฐธ์กฐ๊ฐ ๋์๋ ํ์ด์ง๋ฅผ ๊ตฌ๋ถํ ์ ์๊ฒ ๋๋ค.
๋ค์ ๋์์์ ๋ ๋ ๋จผ์ ๋ง๋ 0์ด ๋ ์ค๋ ์ ์ 0์ผ๋ก ๋ฐ๋ bit์ผ ๊ฒ์ด๋ค.
=> ์๊ฐ victim์ผ๋ก ์ ์ ๋์ด์ผ ํ๋ค.
Second change(clock) page-replacement algorithm์ ์ฑ๋ฅ์ด ์ข์ผ๋ฉด์๋ space overhead์ time overhead๊ฐ ๊ทธ๋ ๊ฒ ํฌ์ง ์์ ์ข์ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
Counting Algorithms
์ง๊ธ๊น์ง๋ ์ ๊ทผ ์์ ์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ฅ ์ค๋ ์ ์ ์ ๊ทผ๋ ํ์ด์ง๋ฅผ victim์ผ๋ก ์ ์ ํ๋ค.
์ ๊ทผ ์์ ๋ ์ค์ํ์ง๋ง ์ ๊ทผ ๋น๋๋ ์ค์ํ ์์๊ฐ ๋ ์ ์๋ค.
์๋ฅผ ๋ค์ด ์ด๋ค ํ์ด์ง๋ ๋ฐ๋ก ์ง์ ์ ํ ๋ฒ ์ ๊ทผ์ด ๋์๊ณ , ๋ค๋ฅธ ํ์ด์ง๋ ์์ฒญ ๋ง์ด ์ ๊ทผ์ด ๋์๋๋ฐ ๋ฐฉ๊ธ ์ ์๋ ์ ๊ทผ์ด ๋์ง ์์๋ค.
LRU ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ๋ง์ด ์ ๊ทผ๋ ํ์ด์ง๊ฐ ๋ฐฉ๊ธ ์ ์ ์ ๊ทผ๋์ง ์์๋ค๋ ์ด์ ๋ก ๊ฐ์ฐจ์์ด victim์ผ๋ก ์ ์ ์ด ๋๋ค.
LFU (Least Frequently Used) Algorithm
์ต๊ทผ ์ ๊ทผ ํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ victim์ผ๋ก ์ ์ ํ๋ ๋ฐฉ์
MFU (Most Frequently Used) Algorithm
์ต๊ทผ์ ๊ฐ์ฅ ์์ฃผ ์ ๊ทผ๋ ํ์ด์ง๋ฅผ victim์ผ๋ก ์ ์ ํ์๋ ๋ฐฉ์
๋ง๋ ์ ๋๋ ์๋ฆฌ์ฒ๋ผ ๋ณด์ผ ์ ์์ง๋ง, ๋๋ฆ์ ์ฒ ํ์ด ์๋ค.
์ ๊ทผ ๋น๋๊ฐ ๋ฎ์ ํ์ด์ง๋ ์ต๊ทผ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์ ๊ทธ๋ด ์ ์๋ค๋ ์์ด๋์ด
=> ์์ผ๋ก ์์ฃผ ์ ๊ทผ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
์ ๊ทผ ๋น๋๊ฐ ๋์๋ ํ์ด์ง๋ ์ค๋ ์ ์ ์ฌ๋ผ์์ ์ถฉ๋ถํ ์ ๊ทผ์ด ๋์์ผ๋ฏ๋ก ์์ผ๋ก๋ ์ ๊ทผ ๋น๋๊ฐ ๋ฎ์ ์๋ ์๊ธฐ ๋๋ฌธ์ victim์ผ๋ก ์ ์ ํ๋ค.
์์คํ
์ ๋ชฉ์ ์ ๋ฐ๋ผ, ์ด๋ค ์ดํ๋ฆฌ์ผ์ด์
์ ๋๋ฆฌ๋ ์์คํ
์ธ์ง์ ๋ฐ๋ผ LFU๊ฐ ์ข์ ๊ฒฝ์ฐ๋ ์๊ณ MFU๊ฐ ์ข์ ๊ฒฝ์ฐ๋ ์๋ค. => ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ด ์ข๋ค๊ณ ๋จ์ ์ง์ด ์๊ธฐํ ์ ์๋ค.
๋์ ์ผ๋ฐ์ ์ผ๋ก๋ ์ด๋ค ๊ฒ์ด ๋ ์ข์์ง๋ฅผ ๋ฐ์ ธ๋ดค์ ๋ LRU ์๊ณ ๋ฆฌ์ฆ์ด ๊ฐ์ฅ ์ข๋๋ผ.
โป ๋ณธ ๋ด์ฉ์ ํ์๋ํ๊ต ๊ฐ์์ฉ ๊ต์๋์ ๊ฐ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋์์ต๋๋ค.
'HYU > ์ด์์ฒด์ (OS)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
11. Virtual Memory (2) (0) | 2023.05.19 |
---|---|
7. Deadlocks (0) | 2023.05.18 |
9. Memory Management (2) (0) | 2023.05.07 |
8. Memory Management (1) (0) | 2023.05.02 |
6. Process Syncronization (2) (0) | 2023.04.07 |