ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ(Virtual Address Space; VAS)
Parent Content: ๋ฆฌ๋ ์ค OS์ ์๋ธ์์คํ (Conceptual Architecture of the Linux Kernel)
[+] ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ
- ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ๊ฐ์ ์ฃผ์ ๊ณต๊ฐ(ๅๆณ ไฝๆ ็ฉบ้, ์์ด: Virtual Address Space; VAS)์ ์ฌ์ฉํ๋ฉฐ, ํ๋ก์ธ์ค์ ๊ด์ ์์ ์ฌ์ฉํ๋ ์ฃผ์์
๋๋ค. ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์์์ ์ฃผ์ ๊ณต๊ฐ, ์ฆ ๊ฐ์ ์ฃผ์ ๊ณต๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์ฐธ์กฐํ ์ ์๋ ์ฃผ์๋ค์ ๋ฒ์์ด๋ฉฐ, ํ๋์ ํ๋ก์ธ์ค ๋น ํ๋์ ๊ฐ์ ์ฃผ์ ๊ณต๊ฐ์ด ์ฃผ์ด์ ธ ๋ค์ค ํ๋ก์ธ์ค ํ๊ฒฝ์์ ํ๋ก์ธ์ค ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ฒฉ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ ์ค์ํ ๋ฉ์ปค๋์ฆ ์ค ํ๋์
๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ๋์ ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ์ค๋ ๋๋ ๊ฐ์ ํ๋ก์ธ์ค ๋ด์ ์ฃผ์ ๊ณต๊ฐ ๋ฐ ์์์ ๊ณต์ ํ์ฌ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ๋์ํ ์ ์์ต๋๋ค:[1]
- ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ๋ค์๊ณผ ๊ฐ์ ์์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:
(1) ์ฝ๋ ์น์ (Code Segment):
- ํ๋ก๊ทธ๋จ์ ์คํ ์ฝ๋๊ฐ ์ ์ฅ๋๋ ์ฝ๊ธฐ ์ ์ฉ ๊ณต๊ฐ์ ๋๋ค.
(2) ๋ฐ์ดํฐ ์น์ (Data Segment):
- ์ ์ญ ๋ณ์ ๋ฐ ์ ์ ๋ณ์์ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ณต๊ฐ์ผ๋ก ์ฝ๊ธฐ/์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
(3) ์คํ(Stack):
- ์ง์ญ ๋ณ์ ๋ฐ ํจ์ ํธ์ถ๊ณผ ๊ฐ์ ์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ณต๊ฐ์ผ๋ก ํจ์ ํธ์ถ ๋ฐ ๋ฐํ์ ๊ด๋ฆฌํ๋ฉฐ ํ์ ์ ์ถ(LIFO) ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ฉ๋๋ค.
(4) ํ(Heap)
- ํ๋ก๊ทธ๋จ ์คํ ์ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ํ ๋นํ๊ณ ํด์ ํ ์ ์๋ ๊ณต๊ฐ์ผ๋ก, ๋ฐ์ดํฐ ์์ ์ฃผ๊ธฐ๋ฅผ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์ ์ดํ ์ ์์ต๋๋ค. ์ฃผ๋ก ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ๋ณํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
(5) ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋ฐ ์ฃผ์ ๋ณํ
- ์ปค๋์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋(MMU) ์ด๋ ํ๋์จ์ด ์ปดํฌ๋ํธ๋ฅผ ํตํด ๊ฐ์ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณํํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค ๊ถํ์ ๊ฒ์ฌํ์ฌ ํ๋ก์ธ์ค๊ฐ ์์ ํ๊ฒ ๋์ํ๊ณ ๊ฒฉ๋ฆฌ๋ ์ ์๋๋ก ํฉ๋๋ค. ๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ ์ ํฉํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํด ์ด๋๋น ํฌํ ์ต๊ณผ ๊ฐ์ ์ผ๋ถ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ค์ค๋ก ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๊ธฐ๋ ํฉ๋๋ค.
References:
[1] https://ko.wikipedia.org/wiki/%EA%B0%80%EC%83%81_%EC%A3%BC%EC%86%8C_%EA%B3%B5%EA%B0%84