๊ฐ์ ๋ฉ๋ชจ๋ฆฌ(Virtual Memory)์ ๋ํด ์์๋ณธ๋ค.
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ๋์จ ๊ธฐ์ ์ด๋ค. ์ฆ, ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํฐ ํ๋ก์ธ์ค๋ฅผ ์ํํ๊ธฐ ์ํด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค. ์๋ฅผ ๋ค์ด, 100MB ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ์์ 200MB ํฌ๊ธฐ์ ํ๋ก์ธ์ค๋ฅผ ์ํํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
1. Demanding Paging
์ด๋ฌํ ๋ฐฉ์์ด ์ด๋ป๊ฒ ๊ฐ๋ฅํ ๊น? ์์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น ๋ฐฉ์ง์ ๋์ ํ ๋น์์๋ ๋ดค๋ฏ์ด, ํ์ํ ๋ถ๋ถ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋ ๊ฒ์ด๋ค. ํ๋ก์ธ์ค๋ฅผ ์คํํ ๋, ์คํ์ ํ์ํ ๋ถ๋ถ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฒ์ด๋ค. ์ด๋ฌํ ํ๋ก์ธ์ค์ ์ผ๋ถ๋ถ์ ํ์ด์ง ๋จ์์ผ ์๋ ์๊ณ , ์ธ๊ทธ๋จผํธ ๋จ์์ผ ์๋ ์์ง๋ง ํ์ฌ ๋๋ถ๋ถ์ ํ์ด์ง ๋จ์๋ฅผ ์ฌ์ฉํ๋ค.
์ด์ฒ๋ผ ํ์ฌ ํ์ํ(์๊ตฌ๋์ด์ง๋) ํ์ด์ง๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฒ์ Demanding Paging(์๊ตฌ ํ์ด์ง) ์ด๋ผ๊ณ ํ๋ค.
1.1 ๋์
- CPU๊ฐ page table์ ๊ฐ์ ํด๋น page์ ์ ๊ทผํ๋ค.
- ์ด ๋, Memory์ ์ฌ๋ผ์จ ์ํ๊ฐ ์๋๋ฉด(invaild), Interupt๋ฅผ ๋ฐ์ํ๋ค.
- OS ๋ด๋ถ์ ISR์์ ์ด ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ๋ฌ Disk์์ page๋ฅผ ์ฐพ๋๋ค.
- ์ฐพ์ Page๋ฅผ Memory์ ์ฌ๋ ค Frameํ ํ๋ค.
- page table์ ์ ๋ฐ์ดํธ ํ๋ค.
- CPU์๊ฒ ๋ค์ ์ํํ๋ผ๊ณ ๋ช ๋ นํ๋ค.
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ์ ์ผ๋ก ๋ ๊ฐ์ง๊ฐ ์กด์ฌํ์ง๋ง, ๋๋ถ๋ถ ์๊ตฌ ํ์ด์ง์ ์ฌ์ฉํ๋ฏ๋ก ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์๊ตฌ ํ์ด์ง์ ๊ฐ์ ์ฉ์ด๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
1.2 Page Fault(ํ์ด์ง ๋ถ์ฌ)
ํ์ด์ง ๋ถ์ฌ๋ ์์์ ์ดํด๋ณธ CPU๊ฐ ์ ๊ทผํ๋ ค๋ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฒฝ์ฐ์ด๋ค. ์ฆ, ํ์ด์ง ํ ์ด๋ธ์ valid bit๊ฐ์ด 0์ธ ๊ฒฝ์ฐ์ด๋ค.
์์์ ์ด๋ฌํ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์๋ค. ์ค์ง์ ์ผ๋ก ์ด ๋ถ๋ถ์ด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ํต์ฌ์ ์ธ ๊ธฐ๋ฅ์ด๋ผ ํ ์ ์๋ค.
1.2.1 Pure Demanding Paging
Pure Demanding Paging์ ํ๋ก์ธ์ค๊ฐ ์ต์ด๋ก ์คํ๋ ๋๋ ์ด๋ค ํ์ด์ง๊ฐ ํ์ํ์ง ์ ์ ์์ผ๋ฏ๋ก, ์๋ฌด ํ์ด์ง๋ ์ฌ๋ฆฌ์ง ์๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ํ๋ก๊ทธ๋จ์ ์คํํ์๋ง์ page fault๊ฐ ๋ฐ์ํ๋ค. ์ฆ, ์์ํ๊ฒ ํ์ํ ํ์ด์ง๋ง ์ฌ๋ฆฌ๋ ๊ฒ์ ๋งํ๋ค. Pure Demanding Paging์ ์ฅ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ต๋ํ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. ํ์ง๋ง ์์๋ถํฐ page fault๊ฐ ๋ฐ์ํ๋ฏ๋ก ์๋๋ฉด์์ ๋๋ฆฌ๋ค.
1.2.2 Prepaging
Prepaging์ pure demanding paging๊ณผ ๋ฐ๋๋๋ ๊ฐ๋ ์ด๋ค. ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ํ์ํ ๊ฒ์ด๋ผ ํ๋จ๋๋ ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ์ฌ๋ฆฌ๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ ์ฅ์ ์ page fault๊ฐ ๋ฐ์ํ ํ๋ฅ ์ด ์ ์ผ๋ฏ๋ก ์๋๋ฉด์์ ๋น ๋ฅด์ง๋ง, ๋จ์ ์ผ๋ก ๋ฏธ๋ฆฌ ์ฌ๋ผ๊ฐ ํ์ด์ง๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น๋๋ค.
1.2.3 Swapping VS Demanding Paging
Swapping์ Demanding Paging์ ๊ณตํต์ ์ ๋ ๋ค ๋ฉ๋ชจ๋ฆฌ์ backing store ์ฌ์ด๋ฅผ ์๋ก ์ค๊ณ ๊ฐ๋ ๊ธฐ๋ฅ์ ์ํํ์ง๋ง, Swapping์ ํ๋ก์ธ์ค ๋จ์๋ก ์ด๋ํ๊ณ Demanding Paging์ ํ์ด์ง ๋จ์๋ก ์ด๋ํ๋ ์ฐจ์ด์ ์ด ์๋ค.
1.2.4 ์ ํจ ์ ๊ทผ ์๊ฐ(Effective Access Time)
Demending Paging์ ํ์ด์ง ํ ์ด๋ธ์ ํด๋น ํ์ด์ง๊ฐ ์์ผ๋ฉด backing store์์ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์ค๋ ๊ณผ์ ์ด ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ์ด์ง ํ ์ด๋ธ์ ํด๋น ํ์ด์ง๊ฐ ์์ ๋์ ์์ ๋ ์๊ฐ ์ฐจ์ด๊ฐ ๋ฐ์ํ๋ค. ์ด๋ฌํ ์๊ฐ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํ์ฌ ํ๊ท ์ ์ผ๋ก ์ด๋์ ๋ ์์๋๋์ง ๊ณ์ฐํ๋ ๊ฒ์ ์ ํจ ์ ๊ทผ ์๊ฐ์ด๋ผ ํ๋ค.
- p
- ํ์ด์ง ๋ถ์ฌ ํ๋ฅ (probability of a page fault = page fault rate)
- Tm
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ๋ ์๊ฐ(DRAM)
- Tp
- Page fault๊ฐ ๋ฐ์ํ์ ๋ ์์๋๋ ์๊ฐ(๋๋ถ๋ถ backing store(ํ๋๋์คํฌ)๋ฅผ ์ฝ๋ ์๊ฐ์ด ์ฐจ์งํ๋ค. (seek time + rotational delay + transfer time)
p = 1/1,000
|์ฉ์ด|์ ์|๊ฐ| |::----|::----|:โ| |p|ํ์ด์ง ๋ถ์ฌ ํ๋ฅ |1/1000| |Tm|๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ๋ ์๊ฐ|200nsec| |Tp|Disk ํ์ ์๊ฐ|8msec|
๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ๋ ์๊ฐ์ ๋นํด 40๋ฐฐ ์ ๋ ๋๋ฆฌ๋ค.
p = 1/399,990
|์ฉ์ด|์ ์|๊ฐ| |::----|::----|:โ| |p|ํ์ด์ง ๋ถ์ฌ ํ๋ฅ |1/399,990| |Tm|๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ๋ ์๊ฐ|200nsec| |Tp|Disk ํ์ ์๊ฐ|8msec|
๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ๋ ์๊ฐ์ ๋นํด 10% ๋๋ฆฌ๋ค.
์ง์ญ์ฑ์ ์๋ฆฌ(Locality of reference)
์์ ์์ ๋ฅผ ๋ณด์์ ๋, page fault๋ ๋งค์ฐ ์ ์ ํ๋ฅ ๋ก ๋ฐ์ํด์ผ ํจ์จ์ ์ด๋ค. ๊ทธ๋ฌ๋ฉด ํ์ค์ ์ผ๋ก ํ์ด์ง ๋ถ์ฌ๋ ์ด๋์ ๋๋ก ๋ฐ์ํ ๊น? ์ด๋ **์ง์ญ์ฑ์ ์๋ฆฌ(Locality of reference)**๋ก ์ธํด ํ์ด์ง ๋ถ์ฌ ํ๋ฅ ์ ๋งค์ฐ ๋ฎ๋ค. ์ง์ญ์ฑ์ ์๋ฆฌ๋ โ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ์๊ฐ์ ์ง์ญ์ฑ๊ณผ ๊ณต๊ฐ์ ์ง์ญ์ฑ์ ๊ฐ์ง๋คโ๋ ์๋ฏธ์ด๋ค.
- ์๊ฐ์ ์ง์ญ์ฑ
- CPU๋ ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฝ์ ํ, ์๊ฐ์ด ์ง๋๋ ๊ทธ ๊ณต๊ฐ์ ๋ค์ ์ฝ์ ํ๋ฅ ์ด ๋งค์ฐ ๋๋ค๋ ๊ฒ์ ๋งํ๋ค.
- ๋ํ์ ์ธ ์๋ก ๋ฐ๋ณต๋ฌธ์ด ์๋ค. ๋ฐ๋ณต๋ฌธ์ ํ๋์ ์ฝ๋ ๊ณต๊ฐ์ ์ฌ๋ฌ ๋ฒ ์ฝ๋๋ค.
- ๊ณต๊ฐ์ ์ง์ญ์ฑ
- CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฝ์ ๋๋ ์ธ์ ํ ๋ฒ์ ๋ด์์ ์ฝ๋๋ค๋ ์๋ฏธ์ด๋ค.
- ํ๋ก๊ทธ๋จ์ ๋๋ถ๋ถ ์ ์ฐจ์ ์ธ ์์๋ก ๊ตฌํ๋์ด ์์ด ์์๋๋ก ์ฝ๋ ๊ฒฝ์ฐ๊ฐ ๋น๋ฒํ๋ค.
์ด์ ๊ฐ์ด ํ์ด์ง ๋ถ์ฌ๊ฐ ํ์ค์ ์ผ๋ก ๋ฐ์ํ ํ๋ฅ ์ ๋งค์ฐ ๋ฎ์ผ๋ฏ๋ก ์์ ์ ๊ฐ์ด 40๋ฐฐ๋ก ๋๋ ค์ง๋ ์ผ์ ๊ฑฐ์ ์๋ค. ์ฌ๊ธฐ์ ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํ์ด์ง ๋ถ์ฌ์ผ ๋ ์์๋๋ ์๊ฐ์ ์ค์ผ ์ ์๋๋ฐ, backing store๋ก HDD๋ฅผ ์ฌ์ฉํ๊ธฐ ๋ณด๋ค๋ ๋์ฑ ๋น ๋ฅด๊ฒ ๋์ํ๋ SSD๋ ์ ๊ฐ DRAM๊ณผ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
1.3 ํ์ด์ง ๊ต์ฒด(Page Replacement)
Demanding Paging์ ์๊ตฌ๋์ด์ง๋ ํ์ด์ง๋ง backing store์์ ๊ฐ์ ธ์จ๋ค. ํ์ง๋ง ํ๋ก๊ทธ๋จ๋ค์ด ๊ณ์ ์คํํจ์ ๋ฐ๋ผ ์๊ตฌ ํ์ด์ง๋ ๊ณ์ ๋์ด๋๊ณ , ์ธ์ ๊ฐ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ๋ ์ฐจ๊ฒ ๋ ๊ฒ์ด๋ค.(memory full) ์ฌ๊ธฐ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ด ์๋ก ์คํ๋๊ฑฐ๋ ์คํ์ค์ธ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ์ด์ง๋ฅผ ์๊ตฌํ๋ค๋ฉด ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ํ์ด์ง ์ค ํ๋๋ฅผ ๋ค์ backing store์ ๋ณด๋ด๊ณ (page-out), ์๋ก์ด ํ์ด์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ผํ๋ค.(page-in) ์ด๋ฅผ ํ์ด์ง ๊ต์ฒด๋ผ๊ณ ํ๋ค. ์ฌ๊ธฐ์ backing store๋ก page-out์ด ๋ ํ์ด์ง๋ฅผ victim page ๋ผ๊ณ ํ๋ค.
1.2.1 Victim Page(ํฌ์์ ํ์ด์ง)
ํฌ์์ ํ์ด์ง๋ ์ด๋ค ํ์ด์ง๋ก ํ๋ ๊ฒ์ด ์ข์๊น? ๋จผ์ ์๊ฐํ ์ ์๋ ๊ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์๋ ํ์ด์ง ์ค CPU์ ์์ (modify)๋์ง ์๋ ํ์ด์ง๋ฅผ ๊ณ ๋ฅด๋ ๊ฒ์ด ํจ์จ์ ์ผ๋ก ๋ณด์ธ๋ค. ์ฆ, ์ฝ๊ธฐ๋ง ์ํํ๋ ํ์ด์ง๋ฅผ ๊ณ ๋ฅด๋ ๊ฒ์ด ์ด์์ ์ด๋ค. ์์ ๋์ง ์์ ํ์ด์ง๋ page-out์ด ๋ ๋ backing store์ ์ฐ๊ธฐ(write) ์ฐ์ฐ์ ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. backing store๋ ์ฝ๋ ์๊ฐ๋ ๋๋ฆฌ์ง๋ง, ๊ฑฐ๊ธฐ์ ๋ํด ์ฐ๊ธฐ ์์ ๊น์ง ํ๋ค๋ฉด ๋์ฑ ๋นํจ์จ์ ์ผ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด ํด๋น ํ์ด์ง๊ฐ ์์ ๋์๋์ง ์๋์๋์ง๋ฅผ ํ๋จํ ์ ์์ด์ผ ํ๋๋ฐ, ์ด๋ฅผ ์ํด ํ์ด์ง ํ ์ด๋ธ์ **modified bit(=dirty bit)**๋ฅผ ์ถ๊ฐํ์ฌ ์ด๋ฅผ ๊ฒ์ฌํ๋ค. ํด๋น ํ์ด์ง๊ฐ ์์ ๋์๋ค๋ฉด ์ด ๋นํธ๋ฅผ 1๋ก ๋๊ณ , ์์ ๋์ง ์์ผ๋ฉด 0์ผ๋ก ๋๋ค. ์ด๋ฅผ ์ด์ฉํด์ victim page๋ ์ต๋ํ ์์ ๋์ง ์์ ํ์ด์ง๋ฅผ ์ ํํ๋ค.
์ ๊ทธ๋ฆผ์ modified bit๋ฅผ ์ถ๊ฐํ ํ์ด์ง ํ ์ด๋ธ์ ๋ชจ์ต์ด๋ค. ์ฌ๊ธฐ์ ์์ ๋์ง ์์ ํ์ด์ง๋ 0, 2, 3๋ฒ 3๊ฐ์ ํ์ด์ง๊ฐ ์กด์ฌํ๋๋ฐ ์ด ์ค์์๋ ์ด๋ค ํ์ด์ง๋ฅผ ์ ํํด์ผ ํ ๊น?
์ ์ผ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋๋คํ๊ฒ ์ ํํ๋ ๊ฒ์ด์ง๋ง, ์ด๋ ์ฑ๋ฅ์ ๋ณด์ฅํ ์ ์๋ค. ๊ทธ ๋ค์์ ๊ฐ์ฅ ๋จผ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ํ์ด์ง๋ฅผ ํฌ์์ ํ์ด์ง๋ก ์ ํํ๋ ๊ฒ์ด๋ค. ์ด๋ ์์ฃผ ์ ๋ช ํ FIFO(First-In First-Out) ๋ฐฉ์์ด๋ค. ์ด ์ธ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.
Reference
- KOCW ์ํฌ์ฌ ๊ต์๋ - ์ด์์ฒด์
- ์ํฌ์ฌ ๊ต์๋ ๋ธ๋ก๊ทธ(์ํ ๊ธฐ์ถ ๋ฌธ์ )
- codemcd ๋์ ์ ๋ฆฌ๊ธ
- ์ธ๋งํฌ ์ฌ์ง
- Operating System Concepts, 9th Edition - Abraham Silberschatz