Address
๋ฉ๋ชจ๋ฆฌ์๋ ์ฃผ์๊ฐ ์๋ค. ์ด๋ฌํ ์ฃผ์์๋ ๋๊ฐ์ง ์ข ๋ฅ, ๊ฐ์๋ฉ๋ชจ๋ฆฌ์ฃผ์์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์๋ค. ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด ํ๋ก์ธ์ค๊ฐ ๋๋ฉฐ ๋ ์์ ์ธ ์ฃผ์๊ณต๊ฐ์ด ํ์ฑ๋๋ค. ์ด๋ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ํด CPU๋ ๊ฐ์๋ฉ๋ชจ๋ฆฌ(logical address, virtual address)๋ฅผ ์ฐธ์กฐํ๊ณ ๊ฐ์๋ฉ๋ชจ๋ฆฌ๋ ์ค์ ๋ฉ๋ชจ๋ฆฌ(physical memory)๋ฅผ ์ฐธ์กฐํ๊ฒ ๋๋ค. ์ด๋ฌํ ์ฎ์ฌ์์์ ์ฃผ์๋ฐ์ธ๋ฉ์ด๋ผ๊ณ ํ๋ค.
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฃผ์๋ณํ์ด ๋๋ ์๊ฐ์ ํฌ๊ฒ 3๊ฐ์ง ์์ ์ผ๋ก ๋๋์ด ๋ณผ ์ ์๋ค.
Compile time binding
์ปดํ์ผ ์์ ์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๊ฒฐ์ ๋๋ค. ๊ฐ์๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์ฌ์ค์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์. ์ปดํ์ผ ๋ฐ์ธ๋ฉ์ ์ํด ๋ง๋ค์ด์ง ์ฝ๋๋ฅผ ์ ๋์ฝ๋(absolute code)๋ผ๊ณ ๋ถ๋ฅธ๋ค. -> ์ ๋์ฝ๋์ ์ฃผ์๋ฅผ ๋ฐ๊พธ๊ธฐ ์ํด์๋ ์ปดํ์ผ์ ๋ค์ํด์ผํจ
Load time binding
ํ๋ก๊ทธ๋จ์ด ์์๋์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ๋ ๋ ผ๋ฆฌ์ ์ฃผ์์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๋ฐ์ธ๋ฉ๋๋ค. ๋ก๋ํ์์ ๋ง๋ค์ด์ง ์ฝ๋๋ ์ฌ๋ฐฐ์น๊ฐ๋ฅ์ฝ๋(relocatable code) ๋ผ๊ณ ๋ถ๋ฅธ๋ค. -> ๊ฒฐ๊ตญ ์ปดํ์ผํ์, ๋ก๋ํ์ ๋ฐ์ธ๋ฉ์ ํ๋ก๊ทธ๋จ์ด ์์๋ ๋ ์ฃผ์๊ฐ ๊ฒฐ์ ๋๋ค.
Execution time binding(=run time binding)
ํ๋ก๊ทธ๋จ ์คํ๋ ๋ ผ๋ฆฌ์ ์ฃผ์์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๋ฐ์ธ๋ฉ + ํ๋ก๊ทธ๋จ ์คํ ์ดํ์๋ ์ฃผ์๊ฐ ๋ฐ๋ ์ ์์ -> CPU๊ฐ ์ฃผ์๋ฅผ ์ฐธ์กฐํ ๋๋ง๋ค ์ฃผ์ ๋ฐ์ธ๋ฉ์ ์ ๊ฒํ๊ธฐ ๋๋ฌธ์ ํ๋์จ์ด์ ์ธ ์ง์์ด ํ์ํ๋ค.
ํ๋์จ์ด์์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๋ฐ์ธ๋ฉ
๋ฐํ์ ๋ฐ์ธ๋ฉ์์ ์ฃผ์์ ๋์ ๋ฐ์ธ๋ฉ์ ํ๋์จ์ด ์ง์์ Memory-Management Unit(MMU) ์ด ๋งก๊ฒ๋๋ค. OS์ ๋ชจ๋์ด ์๋ ์ฃผ์ ๋ณํ์ ์ํ ํ๋์จ์ด์ด๋ค. MMU์์ ์ฃผ์๋ณํ์ ํ ๋๋ ๋๊ฐ์ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค.
MMU์์ ๊ฐ๋จํ ์ฃผ์๋ณํ์ ๋๊ฐ์ง ๋ ์ง์คํฐ์ ์ํด ๋์ํ๋๋ฐ ๋ฐ๋ก Relocation register ์ Limit Register ์ด๋ค.
Relocation Register (=base register)
์ ๊ทผํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ต์๊ฐ
Limit Register
๋ ผ๋ฆฌ์ ์ฃผ์์ ๋ฒ์
๋ง์ฝ ์์๊ฐ์ด CPU์์ P1์ด ์คํ์ค์ด๊ณ P1์ ๊ฐ์๋ฉ๋ชจ๋ฆฌ์์ 0๋ฒ๋ถํฐ 3000๋ฒ ์ฃผ์, ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ์์๋ 14000๋ฒ๋ถํฐ 17000๋ฒ ์ฃผ์๊น์ง ์ฌ์ฉํ๊ณ ์์ ๋ CPU์์ 346๋ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฒญํ๋ฉด
1. ์์์์น+์์ฒญ์ฃผ์ = ๋ ผ๋ฆฌ์ ์ฃผ์
2. ์์์์น+๋ ผ๋ฆฌ์ ์ฃผ์ = ๋ฌผ๋ฆฌ์ ์ฃผ์
์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ด์ฉํด์ CPU๊ฐ ์๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ ์ ์๊ฒํ๋ค. ์ด๋ฅผ์ํด base register์ ๋ ผ๋ฆฌ ์ฃผ์ ์์์์น๋ฅผ ์ ์ฅํด๋๋ค. ํ๋ก๊ทธ๋จ์ด ๋ง์ฝ ๋ณธ์ธํฌ๊ธฐ๋ฅผ ์ด๊ณผํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ์ํด ํ๋ก๊ทธ๋จ ํฌ๊ธฐ๋ฅผ limit register์ ์ ์ฅํด๋๊ณ ๋ฒ์๋ฅผ ๋์ด์ค๊ฒฝ์ฐ๋ฅผ ๋๋นํ๋ค.
Dynamic Loading / Overlay / Swapping / Dynamic Linking
๋ฉ๋ชจ๋ฆฌ์ ๋์ ์ผ๋ก ์ฌ๋ฆฐ๋ค๋ ๊ฒ์ ํ๋ก์ธ์ค ์คํ์ ๋ฏธ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ฌ๋ฆฌ๋๊ฒ ์๋๋ผ ํ์ํ ๋๋ง๋ค, ํธ์ถ๋ ๋๋ง๋ค ์ฌ๋ฆฌ๋ ๊ฒ์ด๋ค. ๋ณดํต ๋ค์ด๋๋ฏน ๋ก๋ฉ์ OS๋จ์์ ์ข๋ ์์ ํ๋ก์ธ์ค์๊ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ ๊ถํ์ ๋๊ฒจ ์ฃผ๋ก ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ฑํ๊ฒ๋๋ค.
๋ฉ๋ชจ๋ฆฌ์ ํ์ํ ๋ ๊ทธ๋๊ทธ๋ ์ฌ๋ ค๋๋ค๋ ์ ์์ ๋ค์ด๋๋ฏน ๋ก๋ฉ๊ณผ ๊ฐ์ผ๋ ์์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ ์๋ ์์ ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ด์ฉํ๊ธฐ ์ํด์ ํฐ ํ๋ก๊ทธ๋จ์ ์ชผ๊ฐ์ ํน์ ๋ถ๋ถ์ด ์คํ๋๋ฉด ํน์ ๋ถ๋ถ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค ์คํ์ํค๋ ๊ณผ์ ์ ๊ฐ๋ฐ์๊ฐ ์์์ ์ผ๋ก ์งํํ๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ Manual overlay๋ผ๊ณ ๋ ๋ถ๋ ธ๊ณ ๋งค์ฐ๋งค์ฐ ๋ณต์กํ๋ค. ๋ค์ด๋๋ฏน ๋ก๋ฉ๊ณผ์ ์ฐจ์ด์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์์ฝ๊ฒ ๋์ ์ฃผ์๋ฐ์ธ๋ฉ์ ํ๋ค๋ฉด ์ค๋ฒ๋ ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด ์์ ํ๋ํ๋ ๋์ ๋ฐ์ธ๋ฉ์ ํ ๊ฒ์ด๋ค.
Swapping ์ ํ๋ก์ธ์ค๋ฅผ ์ผ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์์ backing store(ํ๋๋์คํฌ, swap area)๋ก ์ซ์๋ด๋ ๊ฒ์ด๋ค.
Swap out: ๋ฉ๋ชจ๋ฆฌ -> ํ๋๋์คํฌ (backing store)
Swap in: ํ๋๋์คํฌ (backing store) -> ๋ฉ๋ชจ๋ฆฌ
ํ๋ก์ธ์ค ์ํ์์ ์ค๊ธฐ์ค์ผ์ฅด๋ฌ๊ฐ ์ด๋ป๊ฒ swap ํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ค. ์ด๋ CPU๊ฐ ์์ฃผ ์ฌ์ฉํ์ง ์๋, ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ถํฐ swap out ์ํจ๋ค. ์ด๋ฌํ swap time์ ์ฌ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ํ๋๋์คํฌ๋ฅผ ์๋ค๊ฐ๋ค ํ๋ transfer time์ด ๋๋ถ๋ถ ์ฐจ์งํ๋ฉฐ ์ด๋ ํ๋ก์ธ์ค ํฌ๊ธฐ์ ๋น๋กํ๋ค.
๋งํน์ด๋ ์ฌ๋ฌ๊ตฐ๋ฐ ์กด์ฌํ๋ ์ปดํ์ผ ๋ ํ์ผ๋ค์ ํ๋์ ์คํํ์ผ๋ก ๋ฌถ๋ ์์ ์ด๋ค. ๋งํน ๊ณผ์ ์์ ๋ด๊ฐ ์์ฑํ๋ ์ฝ๋, ํน์ ๋ด๊ฐ ์์ฑํ์ง ์์์ง๋ง ์ ์ฉํด์ ๊ฐ์ ธ๋ค ์ด ์ฝ๋๋ค์ด ํฉ์ณ์ ธ ํ๋์ ์คํํ ์ ์๋ ํ์ผ๋ก ๋ง๋ค์ด์ง๋ค. ๋ง์ฝ ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์คํํ์ผ ์ฝ๋์ ํฌํจ๋๋ค๋ฉด Static Linking, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์คํ์ ์ฐ๊ฒฐ๋๋ ๋ฐฉ์์ด๋ผ๋ฉด Dynamic Linking ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ง์ฝ Static linking ์์ 100๋ช ์ด printf() ํจ์๋ฅผ ๊ฐ์ ธ๋ค ์ด๋ค๋ฉด 100๊ฐ์ ์นดํผ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฌ์ฉ๋ ๊ฒ์ด๊ณ ๋ค์ด๋๋ฏน ๋งํนํ๊ฒฝ์ด๋ผ๋ฉด ํ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ฃผ์๋ฅผ 100๋ช ์ด ๊ณต์ ํ๋ ๋ฐฉ์์ด๋ค.
๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ํ ๋น
์์ ๋ฐฐ์ ๋ฏ์ด ์ผ๋จ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด ์คํ๊ตฌ์กฐ๋ฅผ ํตํด OS๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ฅ ๋ฐ๋จ์ ๊น๋ฆฌ๋ฉด์ ๊ณ์ํด์ ์์ฃผํ๊ณ ๊ทธ ์๋ก ์ฌ์ฉ์ ํ๋ก๋ ์ค๋ค์ด ์์ด๊ฒ๋๋ค. ์ด๋ ์ฌ์ฉ์ ํ๋ก์ธ์ค ์์ญ ํ ๋น ๋ฐฉ๋ฒ์๋ ๋ ๊ฐ์ง ์ฐ์์ ํ ๋น/๋น์ฐ์์ ํ ๋น ๋ฐฉ๋ฒ์ด ์๋ค.
Contiguous allocation
์ฐ์์ ํ ๋น์ ์์ ์์ ๊ฐ์ด ๊ฐ์ฅ ๋จ์ํ๊ฒ ์ฒซ๋ฒํธ๋ถํฐ ์์ฐจ์ ์ธ ์ฃผ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ๋ฐฉ๋ฒ์ด๋ค.
Noncontiguous allocation
๋ฐ๋ฉด ๋น์ฐ์์ ํ ๋น์ ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ฒซ์ฃผ์๋ถํฐ ์์ฐจ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋๋ ๊ฒ์ด ์๋ ๋ถ์ฐ๋ ์ฃผ์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฌ๋ผ๊ฐ๊ฒ ๋๋ค. ์ด๋ฌํ ๋ถ์ฐ์ ํ ๋น์ ํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. - Paging, Segmentation, Paged Segmentation
Contiguous Allocation (์ฐ์ํ ๋น)
์ฐ์ํ ๋น์์๋ ๋ ๊ฐ์ง ๋ฐฉ์์ด ์กด์ฌํ๋ค. - Fixed partition(๊ณ ์ ๋ถํ ) ๋ฐฉ์๊ณผ Variable partiiton(๊ฐ๋ณ๋ถํ ) ๋ฐฉ์์ด๋ค.
Fixed Partition (๊ณ ์ ๋ถํ ๋ฐฉ์)
Fixed partition ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ฏธ๋ฆฌ ๋๋์ด ๋๋๋ค. ์ ์ด๋ฏธ์ง ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ง์ฝ ํ๋ก๊ทธ๋จ A๊ฐ ์คํ๋๋ฉด ๋ฏธ๋ฆฌ ๋๋์ด๋์ ๊ณต๊ฐ ๋ถํ 1 ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ค. ๊ทธ ๋ค์์ ํ๋ก๊ทธ๋จ B๋ฅผ ํ ๋นํ๋ คํ๋ ๋ถํ 2 ๋ ๋๋ฌด ์์์ ์ด๋ถ๋ถ์ "์ธ๋ถ ์กฐ๊ฐ(external fragmentation)"์ผ๋ก ๋จ๊ธฐ๊ณ ๋ถํ 3์์ญ์ ํ๋ก๊ทธ๋จ B๋ฅผ ํ ๋นํ๋ค ๋ถํ 3์์ญ์ ๋จ์๋ถ๋ถ์ "๋ด๋ถ ์กฐ๊ฐ(internal fragmentation)"์ผ๋ก ๋จ๊ธด๋ค.
Variable Partition (๊ฐ๋ณ ๋ถํ ๋ฐฉ์)
๊ณ ์ ๋ถํ ๋ฐฉ์์ ์์ ์ดํด๋ณด์๋ฏ์ด ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ์ ๋ฏธ๋ฆฌ ๋๋์ด๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ง์ง ์์ผ๋ฉด ๋ญ๋น๊ฐ ์ฌํด์ง๋ค. ๊ทธ๋์ ๊ฐ๋ณ๋ถํ ๋ฐฉ์์์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ๋๋์ด๋์ง ์๊ณ ์คํ๋๋ ํ๋ก์ธ์ค๋ฅผ ์คํ๊ตฌ์กฐ๋ก ์๋ถํฐ ์๋๋ค. ํ์ง๋ง ์ด๋ฌํ ๋ฐฉ์์๋ ์ฌ์ ํ ์ธ๋ถ์กฐ๊ฐ ๋ญ๋น๊ฐ ์๊ธฐ๋๋ฐ ๋ง์ฝ ํ๋ก๊ทธ๋จB๊ฐ ๋๋๊ณ ํ๋ก๊ทธ๋จD๊ฐ ์คํ๋ ๊ฒฝ์ฐ ์คํ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋จB๋ ๊ทธ๋๋ก ์ธ๋ถ์กฐ๊ฐ ๊ณต๊ฐ์ผ๋ก ๋จ๊ฒ๋๋ค.
์ฐ์ํ ๋น์์๋ ์ ๋๊ฐ์ง ๋ชจ๋ ์ด์ฉ ์ ์์ด์กฐ๊ฐ ๊ณต๊ฐ์ด ์๊ธธ ์ ๋ฐ์ ์๋ค. ์ด๋ฌํ ๊ฐ์ฉ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ Hole์ด๋ผ๋ ์ฉ์ด๋ก ๋ถ๋ฅธ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฐ์ํ ๋น์์์ ์ต์ ํ๋ ์ด๋ป๊ฒ Hole์ ์ต์ํํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ๊ฒ์ธ๊ฐ๋ก ๊ท๊ฒฐํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ ๋น ์๊ณ ๋ฆฌ์ฆ์ ํฌ๊ฒ 3๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ค. - FirstFit, BestFit, WorstFIt
๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด First Fit, Best Fit ๋ฐฉ๋ฒ์ด Worst Fit๋ณด๋ค ์๋/๊ณต๊ฐ ์ธก๋ฉด์์ ๋ ๋์ ๋ฐฉ๋ฒ์ด๋ค.FirstFit ๋ฐฉ๋ฒ์ ์ํ๋ ๋งํผ์ ๋น ๊ณต๊ฐ์ ์ฐพ๋ ์ค๋ฒํค๋๊ฐ ์ ๊ณ Best Fit์ ํ์ํ ๊ฐ์ฅ ์ต์ ํ๋ ํฌ๊ธฐ์ hole์ ์ฐพ์ ๋ฃ๊ธฐ ๋๋ฌธ์ ํฅํ ๋ฏธ๋๋ฅผ ์๊ฐํ๋ค๋ฉด ์ ํฉํ ๋ฐฉ๋ฒ์ด๋ค.
Compaction์ ์ด๋ฌํ Hole๋ค์ ํ ๊ตฐ๋ฐ๋ก ๋ชจ์์ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. Hole์ ํ๊ตฐ๋ฐ๋ก ๋ชจ์ ํ ๋ฒ์ ์ฐ๊ฒ๋๋ฉด ์น๋ช ์ ์ธ ๋จ์ ์ด ํ๋ ์๋๋ฐ ๊ฐ Hole๋ค์ ์ฐพ์ ๋ฐ์ธ๋ฉ์ ํ๋ ๊ณผ์ ์์ฒด๊ฐ ๋งค์ฐ ๋ง์ ๋น์ฉ์ด ์๋ชจ๋๋ค๋ ์ ์ด๋ค.
Noncontiguous Allocation (๋ถ์ฐ์ ํ ๋น)
ํ์ด์ง(Paging)์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณ ์ ๋ ํฌ๊ธฐ์ ํ์ด์ง๋ก ๋๋์ด ์ฌ์ฉํ๋ ๊ธฐ๋ฒ์ด๋ค. ๊ณ ์ ๋ ํฌ๊ธฐ๊ฐ ์ ํด์ ธ์๋ค๋ ์ ์์ ์ฐ์ํ ๋น์ fixed partition๊ณผ ๋น์ทํ์ง๋ง ํ์ด์ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณ ์ ๋ ํฌ๊ธฐ์ ํ์ด์ง๋ก ๋๋์ด ํ๋ก์ธ์ค๋ฅผ ๋น์ฐ์์ ์ผ๋ก ํ ๋นํ๋ค. ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ํจ์จ์ด ๋๊ณ ์ธ๋ถ ๋จํธํ ๋ฌธ์ ๋ฅผ ์ค์ผ ์ ์์ง๋ง, ์ฃผ์ ๋ณํ์ด ๋ณต์กํ๊ณ ํ์ด์ง ํ ์ด๋ธ์ ์ค๋ฒํค๋๊ฐ ์๋ค๋ ๋จ์ ์ด ์๋ค.
ํ์ด์ง์ ๊ตฌ์ฒด์ ์ธ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค. ํ ์ค์์ฝํ์๋ฉด ๋ ผ๋ฆฌ์ ์ฃผ์ - ๋ฌผ๋ฆฌ์ ์ฃผ์ ์์ ํตํด ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ๋ฐฉ์์ด๋ค.
1. CPU๊ฐ ๋ ผ๋ฆฌ์ฃผ์(ํ์ด์ง ๋ฒํธ p)์ ์คํ์ (d)์ ์ค๋ค.
2. ํ์ด์ง ๋ฒํธ๋ฅผ ํตํด ํ์ด์ง ํ ์ด๋ธ ์ฃผ์๋ฅผ ์ฐพ์๊ฐ๋ค.
3. ํ ์ด๋ธ์ฃผ์์ ์คํ์ ์ ๋ํ๋ฉด ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ฐพ์๊ฐ ์ ์๋ค.
๊ฒฐ๊ตญ ํ์ด์ง ๊ธฐ๋ฒ์ ์ด์ฉํ๋ฉด ํ ์ด๋ธ์ ์ด์ฉํด์ ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ๋ฐ์ ์๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ฐ์ฐ์ 2๋ฒ์ memory access ๊ฐ ํ์ํ๋ค. (ํ์ด์ง ํ ์ด๋ธ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด ์์)
ํ์ด์ง์์์ ์ค๋ฒํค๋๋ฅผ ์ต์ ํํ๊ธฐ ์ํด ์์ฃผ ์ ๊ทผํ๋ ์ฃผ์๋ฅผ ์ ์ฅํด๋๋, ๋ง์น ์บ์ฌ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ํ ์ด๋ธ ๊ณต๊ฐ์ ๋๋๋ฐ ์ด๋ฅผ TLB(Translation Lookaside Buffer) ๋ผ๊ณ ๋ถ๋ฅธ๋ค. ํ์ด์ง ํ ์ด๋ธ์์ ๋น๋ฒํ๊ฒ ์ฐธ์กฐ๋๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ฃผ์๋ณํ์ ์ํ ์บ์ฌ๋ฉ๋ชจ๋ฆฌ๋ผ๊ณ ๋ณผ ์ ์๋ค. ๋ฐ๋ผ์ ๋จผ์ TLB๋ฅผ ์กฐํํด์ ์บ์ฌํํธ๋ฉด ๋ฐ๋ก ์ง ๋ง์ถ์ด ๋ฉ๋ชจ๋ฆฌ์ ๊ทผ ์บ์ฌ๋ฏธ์ค๋๋ฉด ํ์ด์ง ํ ์ด๋ธ๋ก ๊ฐ๊ฒ๋๋ค. (TLB๋ ๋ณ๋ ฌ๋ก ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ TLB๋ณด๋ค ๋น ๋ฅผ ์ ๋ฐ์ ์๋ค)
๊ฒฐ๊ตญ TLB๋ ํ์ด์ง ํ ์ด๋ธ์ด๋ ํ์ด์ง ๊ธฐ๋ฒ์ ํตํ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ 2๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผํ๋ค. 2๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผํ๋ ์ด์ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฝํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
1. ๊ฐ์๋ฉ๋ชจ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ํ ๋ฉ๋ชจ๋ฆฌ๋ง ์ค์ ๋ก ์ฌ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ ์ฝ๋๋ค.
2. ๋์ ์ธ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด๊ธฐ ๋๋ฌธ์ ๋ด๋ถ/์ธ๋ถ ๋จํธํ๋ฅผ ์ต์ํํ ์ ์๋ค.
๊ฒฐ๊ตญ ํ์ด์ง translation์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ์์์ ๊ณผ offset์ ํตํด ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋นํ๊ฒ ๋๋ค.
Memory Protection
ํ์ด์ง ๊ธฐ๋ฒ์ ํตํด ํ๋ก์ธ์ค๋ฅผ ์์ ๋จ์๋ก ๋๋์ด ๊ด๋ฆฌํ ๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐพ์๊ฐ๋๋ฐ ์์ด ํ์ด์ง ํ ์ด๋ธ์ ์กฐํํ๊ฒ ๋๋ค. ํ์ด์ง ํ ์ด๋ธ์์๋ ๋จผ์ ํ์ด์ง ๋ฒํธ์ ํ๋ ์๋ฒํธ๋ฅผ ์กฐํํ ๋ฌผ๋ฆฌ์ฃผ์๋ฅผ ํ์ธํ ๋ค์ valid-invalid bit์์ 1(Valid)์ ํ์ธํ ํ์์ผ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ก ์ ๊ทผํ๊ฒ ๋๋ค. ์ด๋ฌํ valid bit ๋๋ถ์ ์ด์์ฒด์ ๋ ์ปค๋์์ญ ์ฃผ์๋ฅผ ์ ๊ทผํ์ง ๋ชปํ๊ฒ ํ ์ ์๊ฑฐ๋ ์๋ชป๋ ๋ฌผ๋ฆฌ์ฃผ์ ์ ๊ทผ์ ๋ชปํ๊ฒ ๋ณดํธํ ์ ์๋ค.
๋ง์ฝ ๋ ผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ด์งํ ์ด๋ธ์ ๋ฐ๋ผ ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ๋๋ฐ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ์ด์์ฒด์ ๋ ํ์ด์ง์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์คํฌ -> ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ ์ฑ์๋ฃ๋๋ค. ์ด๋ฅผ ํ์ด์ง ํดํธ(page fault)๋ผ๊ณ ํ๋ค. ์ด๋ valid/invalid bit์ ํตํด ํ์ํ ๋ฐ์ดํฐ๊ฐ ์๋์ง ๋ฐ๋ก ํ์ธ๊ฐ๋ฅํด์(invalid bit, 0) ๊ตณ์ด ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ด๋ณด์ง ์์๋ ๋ฐ๋ก ํ์ด์ง ํดํธ๋ฅผ ๊ฐ์งํ๋ค.
๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ๋ตํ๊ธฐ์ํด ํ์ด์ง ํ ์ด๋ธ(๋ฉ๋ชจ๋ฆฌ ํ์ฌ)์ ๋ง๋ค์๋๋ฐ ๋ฌธ์ ๋ ํ์ด์ง ํ ์ด๋ธ์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ์ปค์ ธ๋ฒ๋ฆฐ๋ค. ์ด๋ฌํ ์ค๋ฒํค๋๊ฐ ๋๋ฌด ์ปค์ง๋ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด Inverted page table์ด ๋ฑ์ฅํ๋ค.
๊ธฐ์กด์ ํ์ด์ง ์์น์ ์์์ ๋ฑ ๋ ผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ฐธ๊ณ ํ์ฌ ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐพ์๊ฐ๋ค๋ฉด ์ด๋ฒ์๋ ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ํ์ด์งํ ์ด๋ธ์ ์ ์ด๋๊ณ ์ด๋ฅผ ์กฐํํ๋ค. ์๋ฅผ๋ค์ด p๋ฅผ ์ฐพ๊ธฐ ์ํด ํ์ด์ง ํ ์ด๋ธ ๋ค ๋ค์ง๋ค f๋ฒ์งธ ์ํธ๋ฆฌ๋ผ๋ ๊ฒ์ ์ฐพ์ผ๋ฉด f๋ฒ์งธ ์์ฒด๊ฐ ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๋๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ๋๋ฉด ํ์ด์ง ํ ์ด๋ธ์ ํฌ๊ธฐ์ ํ์ ํ๋ก์ธ์ค ์๊ฐ ์๋ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ก ๋๋ค. ๊ฒฐ๊ตญ ๊ณต๊ฐ๋ณต์ก๋๋ฅผ ์ ์ฝํ์ง๋ง ํ์ด์ง ํ ์ด๋ธ์ ์ ๋ถ ๋ค์ ธ์ผํ๊ธฐ ๋๋ฌธ์ ์๊ฐ๋ณต์ก๋๋ ํฌ์๋๋ค.
"Shared code"๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์ผํ ์ฝ๋ ์์ญ์ ๊ณต์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด๋ฅผ ํตํด ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋ฒ๋ง ๋ก๋ํ๊ณ , ์ด ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์ฐธ์กฐํ ์ ์๊ฒ ํ๋ค. ์ด๋ฌํ ๊ณต์ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ read only ๋ก ์ ํ ํด์ ์ฌ๋ฆฌ๋๋ฐ ์ด๋ฌํ ์ฝ๋๋ค์ Re-entry code(=pure code)๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ฐ๋ผ์ shared code๋ ๋ชจ๋ ํ๋ก์ธ์ค์ logical address space ๋ฅผ ๊ณต์ ํ๊ณ ์์ด์ผํ๋ค.
Segment
์์ ๋ถ์ฐ์ ํ ๋น ๋ฐฉ๋ฒ์ผ๋ก ํ์ด์ง์ ๋ฐฐ์ ๋ค๋ฉด ๋ํ๊ฐ์ง ๋ถ์ฐ์ ํ ๋น ๋ฐฉ๋ฒ์ผ๋ก๋ ์ธ๊ทธ๋จผํธ๊ฐ ์๋ค. ํ์ด์ง์์ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ ๋ ผ๋ฆฌ์ ๋จ์๋ก ๋์ด์ง๋ค๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ์ธ๊ทธ๋จผํธ๋ก ๊ตฌ์ฑ๋๊ณ ๊ฐ ์ธ๊ทธ๋จผํธ์๋ ์ฝ๋, ๋ฐ์ดํฐ, ์คํ์ด ์กด์ฌํ๋ค.
์ธ๊ทธ๋จผํธ ์ฃผ์๋ณํ๋ ํ ์ด๋ธ์ฃผ์๋ณํ๊ณผ ๋น์ทํ๋ค. ์ธ๊ทธ๋จผํธ ์์์ ์์ ๋๋ฒํธ(offset)๋ฅผ ํตํด ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ค.
CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ป๊ธฐ์ํด ์ธ๊ทธ๋จผํธ ๋๋ฒ์ offset์ ๋์ง๋ฉด ์ธ๊ทธ๋จผํธ ๋ฒํธ๋ ์ธ๊ทธ๋จผํธ ํ ์ด๋ธ์์ ์ฃผ์์์น๋ฅผ ์ฐพ์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ก ์ฐพ์๊ฐ๊ณ offset์ผ๋ก ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ธ์ํ๋ค. ์ด๋ ์ธ๊ทธ๋ฉํธ๋ limit์ด๋ผ๋ ์ ๋ณด๊ฐ ์๋๋ฐ ํ์ด์ง๋ ํฌ๊ธฐ๊ฐ ๋ค ๋๊ฐ์ผ๋ ์๊ด์์์ง๋ง ์ธ๊ทธ๋จผํธ๋ ํฌ๊ธฐ๋ฅผ ์๊ธฐ์ํด์ limit์ด๋ผ๋ ์ ๋ณด๋ฅผ ํ ์ด๋ธ์ ๋ฐ๋ก ๋์ด ๋ง์ฝ offset๋ณด๋ค limit์ด ํด๊ฒฝ์ฐ ๋น์ฐํ ์๋ชป๋ ์์ฒญ์ด๋ฏ๋ก ๋ฐ๋ก ์๋ฌ์ฒ๋ฆฌํ๋ค.
https://core.ewha.ac.kr/publicview/C0101020140425151219100144?vmode=f
'๐ฅ๏ธ ์ปดํจํฐ๊ณตํ > Operating System' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Deadlocks (0) | 2024.06.07 |
---|---|
Process Synchronization (0) | 2024.06.04 |
CPU Scheduling (0) | 2024.06.02 |
Process Management (0) | 2024.06.02 |
Process (0) | 2024.05.31 |