ํํ RAM(Random Access Memory)๋ฅผ ๋งํ๋ฉฐ ์ฃผ๊ธฐ์ต์ฅ์น ๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
- ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ํ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ธฐ์ต์ฅ์น
๋จ ์ฉ๋์ด ํฌ๋ฉด ํด์๋ก ๋ง์ ํ๋ก์ธ์์ ์ ๋ณด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค๋ ์ ์๊ธฐ ๋๋ฌธ์, ํด์ผํ ์ผ์ ์ฌ๋ ค๋ ์ ์๋ ์ฑ
์
์ ๋ง์ด ๋น์ ํ๊ณค ํฉ๋๋ค.
SRAM์ ๊ฐ ๋นํธ๋ฅผ ์ด์ค์์ (bistable) ๋ฉ๋ชจ๋ฆฌ ์ ์ ์ ์ฅํ๋ค. ์ด์ค์์ ๋ณธ์ฑ์ผ๋ก ์ธํด SRAM ๋ฉ๋ชจ๋ฆฌ ์ ์ ์์ ์ ๊ฐ์ ์ ์์ด ๊ณต๊ธ๋๋ ํ ์ ์งํ๋ค. SRAM์ DRAM๊ณผ ๋ฌ๋ฆฌ refresh๊ฐ ํ์ ์๊ณ , ์ธ๋์ ๋ฏผ๊ฐํ์ง ์๋ค. ๋์ DRAM๋ณด๋ค ํธ๋์ง์คํฐ๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ๋ฉฐ ๋ ๋ฎ์ ๋ฐ๋๋ฅผ ๊ฐ์ง๊ณ ๋ ๋น์ธ๊ณ ๋ ๋ง์ ์ ๋ ฅ์ ์๋ชจํ๋ค
- ex) ์บ์๋ฉ๋ชจ๋ฆฌ
DRAM์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ๋ชจ๋ ๋นํธ๋ฅผ ์ฝ์๋ค๊ฐ ๋ค์ ์จ ์ฃผ๋ ๋ฐฉ์์ผ๋ก refreshํด์ผ ํ๋ค. ๋ํ DRAM์ ๋น์ด๋ ์ ๊ธฐ์ ์ก์ ๊ฐ์ ์ธ๋์ ๋ฏผ๊ฐํ๋ค.
- ex) ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ, ๊ทธ๋ํฝ ์์คํ ์ ํ๋ ์ ๋ฒํผ
- ์ฝ๋ : ์คํํ ํ๋ก๊ทธ๋จ์ ์ฝ๋๊ฐ ์ ์ฅ๋๋ ํ ์คํธ ์์ญ์ด๋ค. CPU๋ ์ฝ๋์์ญ์์ ์ ์ฅ๋ ๋ช ๋ น์ด๋ฅผ ํ๋์ฉ ๊ฐ์ ธ๊ฐ์ ์ฒ๋ฆฌํ๋ค.
- ๋ฐ์ดํฐ : ์ ์ญ๋ณ์์ ์ ์ ๋ณ์๊ฐ ์ดํด ํด๋น๋๋ค. ํ๋ก๊ทธ๋จ์ ์์๊ณผ ํจ๊ป ํ ๋น๋๋ฉฐ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ฉด ์๋ฉธ๋๋ค.
- ์คํ : ์คํ์์ญ์ ํจ์์ ํธ์ถ๊ณผ ๊ด๊ณ๋๋ ์ง์ญ๋ณ์์ ๋งค๊ฐ๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ์ด๋ค.
ํจ์์ ํธ์ถ๊ณผ ํจ๊ป ํ ๋น๋๋ฉฐ, ํจ์์ ํธ์ถ์ด ์ข ๋ฃ๋ ๋ ํด์ ๋๋ค.- ํ : ํ ์์ญ์ ์ฌ์ฉ์๊ฐ ์ง์ ๊ด๋ฆฌํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค. ํ ์์ญ์ ์ฌ์ฉ์์ ์ํด ๋ฉ๋ชจ๋ฆฌ๊ณต๊ฐ์ด ๋์ ์ผ๋ก ํ ๋น๋๊ณ ํด์ ๋๋ค.
- ํ๋ก์ธ์ค๋ง๋ค ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ง๋ ์ฃผ์ ๊ณต๊ฐ
- ๊ฐ ํ๋ก์ธ์ค๋ง๋ค 0๋ฒ์ง๋ถํฐ ์์
- CPU๊ฐ ๋ณด๋ ์ฃผ์
- ๋ฉ๋ชจ๋ฆฌ์ ์ค์ ๋ก ์ฌ๋ผ๊ฐ๋ ์์น
์ฃผ์๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ.
Symbolic Address ->"Logical Address -> Physical Address"
์ ๊ณผ์ ์์ ๊ฒฐ์
Symbolic Address
๋ณ์ ์ด๋ฆ, ํจ์ ์ด๋ฆ๊ณผ ๊ฐ์ด ํ๋ก๊ทธ๋๋จธ๊ฐ ์ฌ์ฉํ๋ ์ฃผ์
ex) int * a=&n;
๋ฌผ๋ฆฌ์ ์ฃผ์๊ฐ ์ปดํ์ผ ์ ๊ฒฐ์ ๋จ
๊ณ ์ ๋ ์ฃผ์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค์ ์์ ์์น ๋ณ๊ฒฝ๋๋ฉด ์ฌ์ปดํ์ผ ํด์ผํ๋ค
์ปดํ์ผ๋ฌ๋ ์ ๋ ์ฃผ์(absolute address) ์์ฑ
๋ ผ๋ฆฌ์ ์ฃผ์์ ๋ฌผ๋ฆฌ์ ์ฃผ์๊ฐ ๋์ผํจ
- ์ฃผ์๊ฐ ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์์ ๋น ๊ณต๊ฐ์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋นํจ์จ์ ์ด๊ณ ๋ก๋ํ๋ ค๋ ์ฃผ์์ ์ด๋ฏธ ๋ค๋ฅธ ํ๋ก์ค์ธ๊ฐ ์กด์ฌํ ์ ์๋ค.
Loader๊ฐ ํ๋ก์ธ์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ load ํ๋ ์์ ์ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ฅผ ๊ฒฐ์ ๋ฉ๋ชจ๋ฆฌ์์ ๋น์ด์๋ ์์น์ ์ธ์ ๋ ์ฌ๋ผ๊ฐ ์ ์๋๋ก ์ปดํ์ผ๋ฌ๊ฐ ์ฌ๋ฐฐ์น๊ฐ๋ฅ์ฝ๋(relocatable code)๋ฅผ ์์ฑํด์ผ ํ๋ค.
- ํ๋ก์ธ์ค ๋ด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ ๋ช ๋ น์ด๋ค์ด ๋ง์์ ์ฃผ์๋ฅผ ๋ค ๋ฐ๊ฟ์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ load ์๊ฐ์ด ์ค๋๊ฑธ๋ฆด ์ ์๋ค.
ํ๋ก์ธ์ค๊ฐ ์คํ๋ ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ ์ฆ, Runtime๋ ๋ฌผ๋ฆฌ์ ์ฃผ์๊ฐ ๊ฒฐ์ ๋๋ฉฐ ์คํ ๋์ค์ ์ฃผ์๊ฐ ๋ฐ๋ ์ ์๋ค.
CPU๊ฐ ์ฃผ์๋ฅผ ์ฐธ์กฐํ ๋๋ง๋ค address mapping table์ ์ด์ฉํ์ฌ binding์ ์ ๊ฒํ๋ค
ํ๋์จ์ด์ ์ธ ์ง์์ด ํ์ํ๋ค
- ex) base and limit registers, MMU(Memory Management Unit)
- MMU๋ ๋ ผ๋ฆฌ์ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ก ๋งคํํด์ฃผ๋ ์ญํ ์ ํ๋ฉฐ ๋ ผ๋ฆฌ์ ์ฃผ์์ base register์ ๊ฐ์ ๋ํ๋ ๋ฐฉ์์ด๋ค.
- base register๋ ํ๋์ด๋ฉฐ ํ๋ก์ธ์ค๋ผ๋ฆฌ ๊ณต์ ํ๋ค.
์ ๊ทผํ ์ ์๋ ๋ฌผ๋ฆฌ์ ์ฃผ์์ ์ต์๊ฐ์ ๋ํ๋ธ๋ค
๋ ผ๋ฆฌ์ ์ฃผ์์ ์ต๋๊ฐ์ด๋ฉฐ, ํ๋ก๊ทธ๋จ ํฌ๊ธฐ๋ฅผ ๋ด๊ณ ์๋ค.
์๋ชป๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ง ์๋๋ก ๋ง์์ฃผ๋ ๊ธฐ๋ฅ์ ํ๋ค.
๋ง์ฝ ์ปค๋๋ชจ๋์ธ ๊ฒฝ์ฐ์๋ MMU๊ฐ ๋
ผ๋ฆฌ์ ์ฃผ์๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ค. ๋ฐ๋ผ์ ์ปค๋ ๋ชจ๋์ธ์ง ์ฒดํฌํ๋ ๊ณผ์ ์ด ํฌํจ๋์ด ์๋ค.
ํ๋ก์ธ์ค๋ฅผ ์ผ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์์ backing store(swap area, ๋์คํฌ)๋ก ์ซ์๋ด๋ ๊ฒ.
- ์ผ๋ฐ์ ์ผ๋ก ์ค๊ธฐ ์ค์ผ์ค๋ฌ(swapper)์ ์ํด swap out ์ํฌ ํ๋ก์ธ์ค๋ฅผ ๊ฒฐ์ ํ๋ค. ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ swap out ์์ผ ๋์คํฌ๋ก ๋ณด๋ด๊ณ ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ load ํ๋ค.
- swap in ๋ ๋ compile time, load time ๋ฐฉ์์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์น๋ก loadํด์ผ ํ๋ค.
- execution time ์์๋ ๋น ๋ฉ๋ชจ๋ฆฌ ์์ญ ์๋ฌด ๊ณณ์๋ loadํ ์ ์๋ค.
- swap time์ swap๋๋ ์์ ๋น๋กํ๋ค.
- ์ปค๋์์ญ
- interrupt vetor์ ํจ๊ป ๋ฎ์ ์ฃผ์ ์์ญ ์ฌ์ฉ
- ์ฌ์ฉ์ ํ๋ก์ธ์ค ์์ญ
- ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์์ ์ธ ๊ณต๊ฐ์ ํ ๋น์ํค๋ ๋ฐฉ๋ฒ.
- ํ๋์ ํ๋ก์ธ์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ์์ญ์ ๋ถ์ฐํ์ฌ ํ ๋นํ๋ ๋ฐฉ๋ฒ
- Paging, Segmentation, Paged Segmentation
๋ง ๊ทธ๋๋ก ํ๋ก์ธ์ค๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์์ ์ผ๋ก ํ ๋น์ํค๋ ๋ฐฉ๋ฒ์ด๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ ๊ณ ์ ๋ ํฌ๊ธฐ๋ก ๋๋๋ ๋ฐฉ์
- ๋ถํ ์ ํฌ๊ธฐ๋ ๋ชจ๋ ๋์ผํ๊ฑฐ๋ ๋ค๋ฅผ ์ ์๊ณ ๋์์ ๋ฉ๋ชจ๋ฆฌ์ load๋๋ ํ๋ก์ธ์ค ๊ฐ์๊ฐ ๊ณ ์ ๋๋ฉฐ ์ํ ๊ฐ๋ฅํ ํ๋ก์ธ์์ ํฌ๊ธฐ๊ฐ ์ ํ๋๋ค.
internal fragmentation, external fragmentation ๋ฐ์
- ํ๋ก์ธ์ค์ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํด์ ํ ๋นํ๋ ๋ฐฉ์
- ๋ถํ ์ ํฌ๊ธฐ๋ ๊ฐ์๊ฐ ๋์ ์ผ๋ก ๋ณํ๋ค
- ๊ธฐ์ ์ ๊ด๋ฆฌ ๊ธฐ๋ฒ์ด ํ์ํ๋ค.
external fragmentation ๋ฐ์
๊ฐ๋ณ ๋ถํ ๋ฐฉ์์์ ํฌ๊ธฐ๊ฐ n์ธ ํ๋ก์ธ์ค๊ฐ ๋ค์ด๊ฐ ๊ฐ์ฅ ์ ์ ํ hole์ ์ฐพ๋ ๋ฌธ์ ๋ก 3๊ฐ์ง ๋ฐฉ์์ด ์๋ค.
- ๊ฐ์ฉ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ
- ๋ค์ํ ํฌ๊ธฐ์ hole๋ค์ด ๋ฉ๋ชจ๋ฆฌ ์ฌ๋ฌ ๊ณณ์ ํฉ์ด์ ธ ์๋ค.
- ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ๋ฉด ์์ฉ ๊ฐ๋ฅํ hole์ ํ ๋น
- ์ด์์ฒด์ ๋ ๋ค์์ ์ ๋ณด๋ฅผ ์ ์งํด์ผ ํ๋ค.
- ํ ๋น๊ณต๊ฐ
- ๊ฐ์ฉ๊ณต๊ฐ(hole)
- ํฌ๊ธฐ๊ฐ n ์ด์ํ hole ์ค ์ต์ด๋ก ๋ฐ๊ฒฌํ hole์ ํ ๋น
- ํฌ๊ธฐ๊ฐ n ์ด์์ธ ๊ฐ์ฅ ์์ hole์ ์ฐพ์์ ํ ๋น
- hole๋ค์ ๋ฆฌ์คํธ๊ฐ ํฌ๊ธฐ์์ผ๋ก ์ ๋ ฌ๋์ง ์์ ๊ฒฝ์ฐ ๋ชจ๋ hole์ ๋ฆฌ์คํธ๋ฅผ ํ์ํด์ผ ํ๋ค.
- ํญ์ ๊ฑฐ์ ๋ฑ ๋ง๋ ํฌ๊ธฐ๋ฅผ ํ ๋นํ๊ธฐ ๋๋ฌธ์ ํ ๋น ํ์ ๋ง์ ์์ ์์ฃผ ์์ hole๋ค์ด ์์ฑ๋๋ค.
- ๊ฐ์ฅ ํฐ hole์ ํ ๋น
- ๋ชจ๋ ๋ฆฌ์คํธ๋ฅผ ํ์ํด์ผ ํ๊ณ ์๋์ ์ผ๋ก ์์ฃผ ํฐ hole๋ค์ด ์์ฑ๋๋ค.
first-fit๊ณผ best-fit์ด worst-fit๋ณด๋ค ์๋์ ๊ณต๊ฐ ์ด์ฉ๋ฅ ์ธก๋ฉด์์ ํจ๊ณผ์ ์ธ ๊ฒ์ผ๋ก ์๋ ค์ ธ ์๋ค
Fragmentation(๋จํธํ)์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๊ณ ์ ๊ฑฐ๋๋ ์ผ์ด ๋ฐ๋ณต๋๋ฉด ํ๋ก์ธ์ค๋ค์ด ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ ํ ์ฌ์ด์ ์ฌ์ฉํ์ง ๋ชปํ ๋งํผ์ ์์ ๊ณต๊ฐ๋ค์ด ๋์ด๋๊ฒ ๋๋ ํ์์ ๋งํ๋ค.
- ์ธ๋ถ ๋จํธํ๋ ํ๋ก์ธ์ค๊ฐ ๋ค์ด๊ฐ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์์๋ ๋ถ๊ตฌํ๊ณ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฐ์ํ์ง ์์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค.
- ๋ด๋ถ ๋จํธํ๋ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ณด๋ค ๋ถํ ๋ ๊ณต๊ฐ์ด ๋ ์ปค์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋จ๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค.
external fragmentation ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ์ค์ธ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ๊ตฐ๋ฐ๋ก ๋ชฐ์๋ฃ๊ณ hole๋ค์ ๋ค๋ฅธ ํ ๊ณณ์ผ๋ก ๋ชฐ์ ํฐ hole์ ๋ง๋๋ ๊ฒ์ด๋ค.
- ๋งค์ฐ ๋์ cost๊ฐ ๋ฐ์ํ๋ฉฐ ์ต์ํ์ ๋ฉ๋ชจ๋ฆฌ ์ด๋์ผ๋ก compactionํ๋ ๋ฐฉ๋ฒ์ด ๋งค์ฐ ๋ณต์กํ๋ค.
- ํ๋ก์ธ์ค์ ์ฃผ์๊ฐ ์คํ ์๊ฐ์ ๋์ ์ผ๋ก ์ฌ๋ฐฐ์น ๊ฐ๋ฅํ ๊ฒฝ์ฐ์๋ง ์ํ ๊ฐ๋ฅํ๋ค.
ํ๋ก๊ทธ๋จ์ ์๋ฏธ ๋จ์์ธ ์ฌ๋ฌ๊ฐ์ segment ๋จ์๋ก ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ
- ์๊ฒ๋ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ํจ์ ํ๋ํ๋๋ฅผ ์ธ๊ทธ๋จผํธ๋ก ์ ์
- ํฌ๊ฒ๋ ํ๋ก๊ทธ๋จ ์ ์ฒด๋ฅผ ํ๋์ ์ธ๊ทธ๋จผํธ๋ก ์ ์๊ฐ ๊ฐ๋ฅํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก๋ code, data, stack ๋ถ๋ถ์ด ํ๋์ฉ์ ์ธ๊ทธ๋จผํธ๋ก ์ ์๋จ
- ์ธ๊ทธ๋จผํธ ํ ์ด๋ธ์ ์ด์ฉํด ์ฃผ์๋ณํ
<segment-number, offset>
๊ฐ๊ฐ์ ํ ์ด๋ธ์ ๋ค์ ๋ ๊ฐ์ง๋ฅผ ๊ฐ์ง๋ค
- base: ์ธ๊ทธ๋จผํธ์ ์์ ๋ฌผ๋ฆฌ์ ์ฃผ์
- limit: ์ธ๊ทธ๋จผํธ์ ๊ธธ์ด
- ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์์์ segment table์ ์์น
- ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ segment์ ์
- segment number s is legal if s<STLR
- ์ธ๊ทธ๋จผํธ ๋ฒํธ๊ฐ ์ธ๊ทธ๋จผํธ ๊ธธ์ด๋ณด๋ค ์์์ผ ํ๋ค.
Segmentation์ ์ฅ์ ์ paging๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก segment๋ค์ด ์ฐ์์ ์ผ๋ก ํ ๋น๋ ํ์๊ฐ ์๊ณ , stack๊ณผ heap์ด ๋ ๋ฆฝ์ ์ผ๋ก ์ปค์ง ์ ์์ผ๋ฉฐ, segment๋ง๋ค protection์ ๋ฐ๋ก ์ํํ ์ ์๋ ๋ฑ paging๊ณผ ์ ์ฌํ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋ค. ํ์ง๋ง, ๊ฐ๊ฐ์ segment๋ ๋ฐ๋์ ์ฐ์์ ์ผ๋ก ํ ๋นํด์ผ ํ๋ ๋จ์ ์ด ์๋ค.
๊ฐ ์ธ๊ทธ๋จผํธ ๋ณ๋ก ์ํธ๋ฆฌ(Entry)์๋ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ bit๊ฐ ํฌํจ๋์ด ์๋ค
- Valid-invalid bit: valid๋ ํด๋น ์ฃผ์์ ์ธ๊ทธ๋จผํธ์ ๊ทธ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ๋ ์ ํจํ ๋ด์ฉ์ด ์์. invalid๋ ์์(์ ๊ทผ ๋ถ๊ฐ)
- Protection bit: ์ธ๊ทธ๋จผํธ์ ๋ํ Read/Write/Execution ๊ถํ
segment๋ฅผ ๊ณต์ ํ ์ ์๋ค.
๊ฐ์ segment ๋ฒํธ๋ฅผ ์ฌ์ฉํด์ผํจ
- segment๋ ์๋ฏธ ๋จ์์ด๊ธฐ ๋๋ฌธ์ ๊ณต์ ์ ๋ณด์์ ์์ด์ paging๋ณด๋ค ํจ์ฌ ํจ๊ณผ์ ์ด๋ค.
fitst-fit / best-fit ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ธ๋ถ ๋จํธํ(external fragmentation)๊ฐ ๋ฐ์ํ๋ค.
- segment์ ๊ธธ์ด๊ฐ ๋์ผํ์ง ์์ผ๋ฏ๋ก ๊ฐ๋ณ๋ถํ ๋ฐฉ์์์์ ๋์ผํ ๋ฌธ์ ์ ๋ค์ด ๋ฐ์ํจ
Paging(ํ์ด์ง)์ Noncontiguous Allocation ๋ฐฉ์์ผ๋ก ์ธ๋ถ ๋จํธํ์ ์์ถ ์์ ์ ๋นํจ์จ์ฑ์ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ ํ๋ ์(Frame), ํ๋ก์ธ์ค๋ ํ์ด์ง(Page)๋ผ ๋ถ๋ฆฌ๋ ๊ณ ์ ํฌ๊ธฐ์ ๋ธ๋ก(Block)์ผ๋ก ๋ถ๋ฆฌ๋๋ค. ๋ธ๋ก์ ํฌ๊ธฐ๋ 2์ ๊ฑฐ๋ญ์ ๊ณฑ ๊ผด์ด๋ค.
ํ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๊ณต๊ฐ์ ์ฌ๋ฌ page๋ก ๋๋์ด ๊ด๋ฆฌ๋๊ณ , ๊ฐ๊ฐ์ page๋ ์์์ ๊ด๊ณ์์ด ๋ฉ๋ชจ๋ฆฌ์ frame์ mapping๋์ด ์ ์ฅ๋๋ค.
-
ํ๋ก์ธ์ค๊ฐ ์์๋๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ง ์๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ธฐ ์ํด์ page๊ฐ ์ด๋ frame์ ๋ค์ด์๋์ง๋ฅผ ์์์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด์ ๋ํ ์ ๋ณด๊ฐ page table์ด๋ผ๋ ํ ์ด๋ธ์ ์ ์ฅ๋์ด ์๊ณ , ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ ผ๋ฆฌ์ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ก mapping ํ๋ค.
- page๋ค์ด ์ฐ์ํ ํ์๊ฐ ์์ด ์ธ๋ถ ๋จํธํ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
- ํ ๋น๊ณผ ํด์ ๊ฐ ๋น ๋ฅด๋ค.
- swap out์ด ๊ฐ๋จํ๋ค.
- ์ฝ๋๋ฅผ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๋ค(Shared pages). ์ฝ๋๊ฐ pure code๋ผ๋ฉด ๊ณต์ ๊ฐ ๊ฐ๋ฅํ๋ฉฐ read-only๋ก ํ๋ก์ธ์ค ๊ฐ์ ํ๋์ ์ฝ๋๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ๋ค.
- ๋ด๋ถ ๋จํธํ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ๋ค
- page table์ ์ ์ฅํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถ๊ฐ๋ก ์๋ชจ๋๋ค
- page table์ด ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ์ฐ์ฐ์ 2๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ํ์ํ๊ฒ ๋์ด ์๋๊ฐ ๋๋ฆฌ๋ค(page table ์ ๊ทผ + ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ)
๋ฐ๋ผ์ ์๋ ํฅ์์ ์ํด TLB(Translation Look-aside Buffer)๋ผ ๋ถ๋ฆฌ๋ ์บ์๋ฅผ ์ฌ์ฉํ๋ค.
page number, page offset
page number๋ page table์ ์ธ๋ฑ์ค๋ก์จ page table์ ์ ๊ทผํ ๋ ์ฌ์ฉ๋๋ค.
page offset์ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ฅผ ์ป์ ๋ ์ฌ์ฉ๋๊ณ page table์ abse address์ page offset์ ๋ํ๋ฉด ๋ฌผ๋ฆฌ์ ์ฃผ์๋ฅผ ๊ตฌํ ์ ์๋ค.
page table์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ PTBR(Page-Table Base Register)๋ผ๋ ๋ ์ง์คํฐ๊ฐ page table์ ๊ฐ๋ฆฌํค๋๋ก ํ๋ค.
- context switch ๋ฐ์ ์ ์ด ๋ ์ง์คํฐ์ ๋ด์ฉ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋ค.
page table์ ๊ฐ ์ํธ๋ฆฌ(Entry)์๋ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ bit๊ฐ ํฌํจ๋์ด ์๋ค.
- Protection bit: page์ ๋ํ ์ ๊ทผ ๊ถํ Read/Write/Read-only
- Vaild-invalid bit: vaild๋ ํด๋น ์ฃผ์์ frame์ ๊ทธ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ๋ ๋ด์ฉ์ด ์๋ค. invaild๋ ์์(์ ๊ทผ ๋ถ๊ฐ)
page์ ํฌ๊ธฐ๊ฐ ์์์ง์๋ก ๋ด๋ถ ๋จํธํ๊ฐ ๊ฐ์ํ๊ณ ํ์ํ ์ ๋ณด๋ง ๋ฉ๋ชจ๋ฆฌ์ load ํ ์ ์์ด ํจ์จ์ ์ด์ง๋ง, page table์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ๊ณ ๋์คํฌ ์ด๋์ ํจ์จ์ฑ์ด ๊ฐ์ํ๋ค.
- CPU๋ page table๋ณด๋ค TLB๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ฐธ์กฐํ์ฌ ๋ง์ฝ ์ํ๋ page๊ฐ TLB์ ์๋ ๊ฒฝ์ฐ ๊ณง๋ฐ๋ก frame number๋ฅผ ์ป์ ์ ์๋ค. ์ด๋ฅผ TLB hit ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ย
TLB hit ๋น์จ์ a๋ผ๊ณ ํ๊ณ , TLB๋ฅผ ํ์ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ b๋ผ๊ณ ํ๋ฉด, ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํ์์ ๊ธฐ๋๊ฐ์ย TLB hit + TLB miss = (b+1)a + (b+2)(1-a) = 2+b-a๊ฐ ๋๋ค.ย
- b๋ ์ผ๋ฐ์ ์ผ๋ก ๋งค์ฐ ์์ ๊ฐ์ด๊ณ , a๋ ๊ฐ์ด ํฌ๋ค. ์ค์ ๋ก Block์ด ์ด๋์๋ ์์นํ ์ ์์ด Cache miss์ ํ๋ฅ ์ด ์ ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ๊ธฐ์กด์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํ์์ธ 2๋ณด๋ค ํจ์ฌ ์์ ๊ฐ์ด ๋๋ค.ย ย ย
ย
- ๋งค Switch๋ง๋ค TLB ์ ์ฒด๋ฅผ ๋น์ฐ๋ ๋ฐฉ๋ฒ์ด ์์ง๋ง ์บ์๋ฅผ flush ํ๊ธฐ ๋๋ฌธ์ cost๊ฐ ๋๋ค.
- TLB์ ๊ฐ ์ํธ๋ฆฌ๊ฐ ์ด๋ ํ๋ก์ธ์ค๋ฅผ ์ํ ๊ฒ์ธ์ง ์ถ์ ํ์ฌ ์ด์ฉ๋์ง ์๋ ์ํธ๋ฆฌ๋ง ๋น์ด๋ค.ย ์ด๋ฅผ ASID๋ฅผ ์ด์ฉํ์ฌ ํด๊ฒฐํ๋ค.
ASID๋ Process ID์ ์ ์ฌํ์ง๋ง 8bit๋ก, 32bit์ธ PID๋ณด๋ค ๊ฐ๋ณ๋ค. ๋์ผํ ASID๋ฅผ ๊ฐ๋ ํ๋ก์ธ์ค๋ผ๋ฆฌ๋ TLB๋ฅผ ๊ณต์ ํ ์ ์๊ธฐ ๋๋ฌธ์, ์ด๋ฐ ๊ฒฝ์ฐ์ TLB๋ฅผ ๋น์ฐ๋ ์ค๋ฒํค๋๋ฅผ ์ค์ผ ์ ์๋ค.ย ย
- KOCW ๊ณต๊ฐ๊ฐ์ (2014-1. ์ดํ์ฌ์๋ํ๊ต - ๋ฐํจ๊ฒฝ)
- https://rebro.kr/178