- ์ธ๊ทธ๋จผํ ์ด์ ์ด๋?
- ๋ณดํธ์ ๊ณต์
- ๋ฉ๋ชจ๋ฆฌ ๋จํธํ(Memory Fragmentation)
- ํ์ด์ง ์ธ๊ทธ๋จผํ ์ด์ (Page Segmentation)
- ์ฐธ๊ณ ์๋ฃ
ํ๋ก์ธ์ค๋ฅผ ๋ ผ๋ฆฌ์ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ๋๋์ด ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ก ๋ค๋ฅธ ์์น์ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฒ.
์ธ๊ทธ๋จผํ ์ด์ (Segmentation) ๊ธฐ๋ฒ์ ํ๋ก์ธ์ค๋ฅผ ๋ ผ๋ฆฌ์ ์๋ฏธ ๋จ์(Segment)๋ก ๋๋์ด ๋ถ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ๋ ๊ธฐ๋ฒ์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ค Code, Data, Heap, Stack ๋ฑ์ ๊ธฐ๋ฅ ๋จ์๋ก ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
ํ์ด์ง ๊ธฐ๋ฒ๊ณผ ์ ์ฌํ๊ฒ ์ธ๊ทธ๋จผํ ์ด์ ์์๋ ํ๋ก์ธ์ค๋ฅผ ์ ์์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ๊ฐ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณ๊ฒฝ(์ฃผ์ ๋ฐ์ธ๋ฉ)ํด์ผ ํ๋ค. ์ด๋ฅผ ์ธ๊ทธ๋จผํธ ํ ์ด๋ธ(Segment Table)์ด๋ผ ํ๋ค.
์ธ๊ทธ๋จผํธ๋ ๊ทธ ํฌ๊ธฐ๊ฐ ์ผ์ ์น ์๊ธฐ ๋๋ฌธ์ ๋
ผ๋ฆฌ์ ์ฃผ์๊ฐ (์ธ๊ทธ๋จผํธ ๋ฒํธ, ์คํ์
)
์ผ๋ก ํํ๋๋ค. ๋ง์ฝ ์คํ์
๊ฐ์ด ํด๋น ์ธ๊ทธ๋จผํธ์ ๋ฆฌ๋ฏธํธ ๊ฐ๋ณด๋ค ํฌ๋ฉด ์ธ๊ทธ๋จผํ
์ด์
๋ถ์ฌ(Segmentation Fault)๊ฐ ๋ฐ์ํ๋ค.
์ธ๊ทธ๋จผํ ์ด์ ์์์ ๋ณดํธ์ ๊ณต์ ๋ ํ์ด์ง๋ณด๋ค ํจ์จ์ ์ด๋ค.
๋ณดํธ์์๋ ์ธ๊ทธ๋จผํ
์ด์
์ r
(์ฝ๊ธฐ), w
(์ฐ๊ธฐ), x
(์คํ) ๋นํธ๋ฅผ ํ
์ด๋ธ์ ์ถ๊ฐํ๋๋ฐ, ์ธ๊ทธ๋จผํ
์ด์
์ ๋
ผ๋ฆฌ์ ์ผ๋ก ๋๋๊ธฐ ๋๋ฌธ์ ํด๋น ๋นํธ์ ์ค์ ์ด ๋งค์ฐ ๊ฐ๋จํ๊ณ ์์ ํ๋ค. ํ์ด์ง์ code + data + stack ์์ญ์ด ์์ ๋, ์ด๋ฅผ ์ผ์ ํ ํฌ๊ธฐ๋ก ๋๋๋ฏ๋ก ๋ ๊ฐ์ง ์ด์์ ์์ญ์ด ์์ผ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ๋นํธ ์ค์ ์ด ๋งค์ฐ ๊น๋ค๋กญ๋ค.
๊ณต์ ์์๋ ๋ง์ฐฌ๊ฐ์ง๋ค. ํ์ด์ง์์ code ์์ญ์ ๋๋๋ค ํ๋๋ผ๋ ํ ์์ญ์ด ํฌํจ๋ ํ๋ฅ ์ด ๋งค์ฐ ๋์ผ๋, ์ธ๊ทธ๋จผํ ์ด์ ์ ์ ํํ code ์์ญ๋ง ๋๋๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ผ๋ก ๊ณต์ ๋ฅผ ์ํํ ์ ์๋ค.
์ธ๊ทธ๋จผํ ์ด์ ๊ธฐ๋ฒ์์๋ ์ธ๊ทธ๋จผํธ์ ํฌ๊ธฐ๋งํผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ฏ๋ก ๋ด๋ถ ๋จํธํ๊ฐ ๋ฐ์ํ์ง ์๋๋ค. ๊ทธ๋ฌ๋ ์๋ก ๋ค๋ฅธ ํฌ๊ธฐ์ ์ธ๊ทธ๋จผํธ๋ค์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ/์ ๊ฑฐ๋๋ ๊ณผ์ ์ด ๋ฐ๋ณต๋๋ฉด ์ธ๋ถ ๋จํธํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
์ธ๊ทธ๋จผํ ์ด์ ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ, ์ธ๊ทธ๋จผํธ๋ฅผ ๋ค์ ๋์ผ ํฌ๊ธฐ์ ํ์ด์ง๋ก ๋๋์ด ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฒ.
์ธ๊ทธ๋จผํ ์ด์ ๊ณผ ํ์ด์ง ๊ธฐ๋ฒ์ ํฉ์น ๋ฐฉ๋ฒ์ด๋ค. ๋ฐ๋ผ์ ๋ ๋ฐฉ๋ฒ์ ์ฅ์ ์ธ ๋ณดํธ์ ๊ณต์ ์์์ ํจ์จ์ฑ(์ธ๊ทธ๋จผํ ์ด์ ), ์ธ๋ถ ๋จํธํ ๋ฌธ์ ํด๊ฒฐ(ํ์ด์ง)์ ๋์์ ๋๋ฆด ์ ์๋ค๋ ์ด์ ์ด ์๋ค. ๊ทธ๋ฌ๋ ์ด ์ญ์ ๋จ์ ์ด ์กด์ฌํ๋๋ฐ, ์ธ๊ทธ๋จผํธ์ ํ์ด์ง๊ฐ ๋์์ ์กด์ฌํ๊ธฐ์ ์ฃผ์ ๋ณํ๋ ๋ ๋ฒ ์ํํด์ผ ํ๋ค.