ํ๋ฅด์ธ์ค๋ฅผ ๋ ผ๋ฆฌ์ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ๋๋๋ ์ธ๊ทธ๋ฉํ ์ด์ (Segmentation)์ ๋ํด ์์๋ณธ๋ค.
Segmentation
์ง๊ธ๊น์ง ์ดํด๋ณธ ํ์ด์ง์ ํ๋ก์ธ์ค๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ผ์ ํ ํฌ๊ธฐ๋ก ๋๋ ์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋นํ์๋ค. ์ฌ๊ธฐ์ ๋ฌผ๋ฆฌ์ ์ด๋ผ ํจ์ ๋ง ๊ทธ๋๋ ํ๋ก์ธ์ค๋ฅผ ์ผ์ ํ ํฌ๊ธฐ๋ก ์๋ฅธ ๊ฒ์ด๋ค. ๋ฐ๋ฉด์ ์ธ๊ทธ๋จผํ ์ด์ ์ ํ๋ก์ธ์ค๋ฅผ ๋ ผ๋ฆฌ์ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ๋๋ ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐฐ์นํ๋ ๊ฒ์ ๋งํ๋ค. ๋ ผ๋ฆฌ์ ๋ด์ฉ์, ์ด๋ค ์๋ฏธ๋ก ์ ๋จ์๋ฅผ ์๋ฏธํ๋ค. ๋ผ์ง๊ณ ๊ธฐ๋ฅผ ๊ทธ๋ฅ 1cm ๊ฐ๊ฒฉ์ผ๋ก ๋๋๋ ๊ฒ์ด Paging, ๋ชฉ์ด, ์ผ๊ฒน์ด, ๊ฐ๋น์ ๊ฐ์ด ๋๋๋ ๊ฒ์ด Segmentation์ด๋ค. ๋ฐ๋ผ์ ๊ฐ ์ธ๊ทธ๋จผํธ์ ํฌ๊ธฐ๋ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ง ์๋ค.
์ธ๊ทธ๋จผํ ์ด์ ์ ํ๋ก์ธ์ค๋ฅผ ์ธ๊ทธ๋จผํธ(segment)์ ์งํฉ์ผ๋ก ์๊ฐํ๋ค. ์์์๋ ๋งํ๋ฏ, Process๋ Code, Data, Stack ๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋๋๋ค. ๋ฌผ๋ก code, data, stack ๊ฐ๊ฐ ๋ด๋ถ์์ ๋ ์์ ์ธ๊ทธ๋จผํธ๋ก ๋๋ ์๋ ์๋ค.
1. Segment Table
์ด๋ฒ์๋ page size๊ฐ ๋์ผํ์ง ์๊ธฐ ๋๋ฌธ์, frame ๋ฒํธ๋ก ๋ ผ๋ฆฌ ์ฃผ์์ ๋ฌผ๋ฆฌ ์ฃผ์๋ฅผ ์ฐ๊ฒฐํ ์ ์๋ค. ์ด๋ฒ์๋ table์ด bound๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค. ์ธ๊ทธ๋จผํธ ๋ฒํธ์ ์์ ์ฃผ์(base), ์ธ๊ทธ๋จผํธ ํฌ๊ธฐ(limit)๋ฅผ ์ํธ๋ฆฌ๋ก ๊ฐ๋๋ค. ํ์ด์ง๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ ผ๋ฆฌ ์ฃผ์์ ๊ท์ฝ์ ๊ฐ์ง๋ฉฐ, ์ด๋ฒ์๋ p๊ฐ ์๋๊ณ s๋ก ํ๊ธฐํ๋ค.
ํ ๊ฐ์ง ์ฃผ์ํ ์ ์ ์ธ๊ทธ๋จผํธ์ ํฌ๊ธฐ๋ ์ผ์ ํ์ง ์๊ธฐ ๋๋ฌธ์, ํ ์ด๋ธ์ limit ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ CPU์์ ํด๋น ์ธ๊ทธ๋จผํธ์ ํฌ๊ธฐ๋ฅผ ๋์ด์๋ ์ฃผ์๊ฐ ๋ค์ด์ค๋ฉด ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํด์ ํด๋น ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ๋ก ์ข ๋ฃ์ํจ๋ค.
์ ๊ทธ๋ฆผ์ ์ธ๊ทธ๋จผํธ ํ ์ด๋ธ๊ณผ ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ชจ์ต์ด๋ค. ํ์ด์ง ์ฃผ์๋ณํ๊ณผ ๋์ผํ๊ฒ d๋ ๋ ผ๋ฆฌ์ฃผ์์ ๋ฌผ๋ฆฌ์ฃผ์๊ฐ ๋์ผํ๋ค. ๋ฌผ๋ฆฌ์ฃผ์ a๋ base[s] + d ๋ก ๊ณ์ฐ๋๋ค.
- ๋
ผ๋ฆฌ์ฃผ์ (2, 100)
2(4300) + 100 = 4400 < 4700(base+limit)
- ๋
ผ๋ฆฌ์ฃผ์ (1, 500)
1(6300) + 500 = 6800 > 6700(base+limit)
- โ ์ธํฐ๋ฝํธ๋ก ์ธํด ํ๋ก์ธ์ค ๊ฐ์ ์ข ๋ฃ(๋ฒ์๋ฅผ ๋ฒ์ด๋จ)
2. ์ธ๊ทธ๋จผํ ์ด์ ์์ ๋ณดํธ์ ๊ณต์
๋จผ์ , ๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด ํ์ด์ง๋ณด๋ค ์ธ๊ทธ๋จผํ ์ด์ ์์์ ๋ณดํธ์ ๊ณต์ ๋ ๋ ํจ์จ์ ์ด๋ค.
๋ณดํธ์์๋ ์ธ๊ทธ๋จผํ ์ด์ ์ญ์ r, w, x ๋นํธ๋ฅผ ํ ์ด๋ธ์ ์ถ๊ฐํ๋๋ฐ, ์ธ๊ทธ๋จผํ ์ด์ ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋๋๊ธฐ ๋๋ฌธ์ ํด๋น ๋นํธ๋ฅผ ์ค์ ํ๊ธฐ ๋งค์ฐ ๊ฐ๋จํ๊ณ ์์ ํ๋ค. ํ์ด์ง์ code + data + stack ์์ญ์ด ์์ ๋ ์ด๋ฅผ ์ผ์ ํ ํฌ๊ธฐ๋ก ๋๋๋ฏ๋ก ๋ ๊ฐ์ง ์์ญ์ด ์์ผ ์๊ฐ ์๋ค. ๊ทธ๋ฌ๋ฉด ๋นํธ๋ฅผ ์ค์ ํ๊ธฐ๊ฐ ๋งค์ฐ ๊น๋ค๋กญ๋ค.
๊ณต์ ์์๋ ๋ง์ฐฌ๊ฐ์ง๋ค. ํ์ด์ง์์๋ code ์์ญ์ ๋๋๋คํด๋ ๋ค๋ฅธ ์์ญ์ด ํฌํจ๋ ํ๋ฅ ์ด ๋งค์ฐ ๋๋ค. ํ์ง๋ง ์ธ๊ทธ๋จผํ ์ด์ ์ ์ ํํ code ์์ญ๋ง ๋๋๊ธฐ ๋๋ฌธ์ ๋ ํจ์จ์ ์ผ๋ก ๊ณต์ ๋ฅผ ์ํํ ์ ์๋ค.
3. ์ธ๊ทธ๋จผํ ์ด์ ๊ณผ ํ์ด์ง
์ธ๊ทธ๋จผํ ์ด์ ์ ํ์ด์ง๊ณผ ์ ์ฌํ๊ณ ๋ณดํธ์ ๊ณต์ ์์๋ ๋ ๋์ ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ์์ง๋ง, ํ์ฌ ๋๋ถ๋ถ์ ํ์ด์ง ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค. ๊ทธ ์ด์ ๋ ์ธ๊ทธ๋จผํ ์ด์ ์๋ ์น๋ช ์ ์ธ ๋จ์ ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
3.1 ์ธ๋ถ ๋จํธํ
๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ฒ์ ์์ํ ๋ ๋ค์ค ํ๋ก๊ทธ๋๋ฐ์์์ ๋ฌธ์ ๋ ํฌ๊ธฐ๊ฐ ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ์ธํด ์ฌ๋ฌ ํฌ๊ธฐ์ hole์ด ๋ฐ์ํ๋ค. ์ด๋ก ์ธํด ์ด๋ hole์ ํ๋ก์ธ์ค๋ฅผ ํ ๋นํ๋ ๊ฒ์ ๋ํ ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํ์ง ์๊ณ , ์ธ๋ถ ๋จํธํ๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ ํฌ๋ค๊ณ ํ์๋ค.
์ธ๊ทธ๋จผํ ์ด์ ๋ ๋๊ฐ์ ๋ฌธ์ ์ ์ด ๋ฐ์ํ๋ค. ์๋ํ๋ฉด ์ธ๊ทธ๋จผํ ์ด์ ์ ๋ ผ๋ฆฌ์ ์ธ ๋จ์๋ก ๋๋๊ธฐ ๋๋ฌธ์ ์ธ๊ทธ๋จผํธ์ ํฌ๊ธฐ๊ฐ ๋ค์ํ๋ค. ์ด๋ก ์ธํด ๋ค์ํ ํฌ๊ธฐ์ hole์ด ๋ฐ์ํ๋ฏ๋ก ์ธ๋ถ ๋จํธํ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
3.2 Paged segmentation
๊ฒฐ๋ก ์ ์ผ๋ก ์ธ๊ทธ๋จผํ ์ด์ ์ ๋ณดํธ์ ๊ณต์ ์์ ํจ์จ์ ์ด๊ณ , ํ์ด์ง์ ์ธ๋ถ ๋จํธํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ ๊ฐ์ง๋ฅผ ํฉ์ณ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ๋์๋ค. ๋ ์ฅ์ ์ ํฉ์น๊ธฐ ์ํด์๋ ์ธ๊ทธ๋จผํธ๋ฅผ ํ์ด์ง ๊ธฐ๋ฒ์ผ๋ก ๋๋๋ ๊ฒ์ด๋ค.(Paged segmentation)
ํ์ง๋ง ์ด ์ญ์ ๋จ์ ์ด ์กด์ฌํ๋ค. ์ธ๊ทธ๋จผํธ์ ํ์ด์ง๊ฐ ๋์์ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ฃผ์ ๋ณํ๋ ๋ ๋ฒํด์ผํ๋ค. ์ฆ CPU์์ ์ธ๊ทธ๋จผํธ ํ ์ด๋ธ์์ ์ฃผ์ ๋ณํ์ ํ๊ณ , ๊ทธ ๋ค์ ํ์ด์ง ํ ์ด๋ธ์์ ๋ ์ฃผ์ ๋ณํ์ ํด์ผํ๋ค.
Reference
- KOCW ์ํฌ์ฌ ๊ต์๋ - ์ด์์ฒด์
- ์ํฌ์ฌ ๊ต์๋ ๋ธ๋ก๊ทธ(์ํ ๊ธฐ์ถ ๋ฌธ์ )
- codemcd ๋์ ์ ๋ฆฌ๊ธ
- ์ธ๋งํฌ ์ฌ์ง
- Operating System Concepts, 9th Edition - Abraham Silberschatz