์ถ์ฒ : https://box0830.tistory.com/150
๋ฉ๋ชจ๋ฆฌ ์์ญ(Code, Data, Heap, Stack)
์ด๊ฒ ๋งค๋ฒ ํท๊ฐ๋ ค์ ํ์คํ ์ ๋ฆฌ๋ฅผ ํ ํ์๊ฐ ์๊ฒ ๋ค์. ํ๋ก์ธ์ค๊ฐ ์ฐจ์งํ๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ดํด๋ณด๋ฉดํฌ๊ฒ Code, Data, Heap, Stack์ ์์ญ์ผ๋ก ๋๋์ด์ ธ ์์ต๋๋ค.์ด๋ค ๊ฐ๊ฐ์ segment๋ผ ๋ถ๋ฌ์. - ๋ฉ๋ชจ
box0830.tistory.com
์ด๊ฒ ๋งค๋ฒ ํท๊ฐ๋ ค์ ํ์คํ ์ ๋ฆฌ๋ฅผ ํ ํ์๊ฐ ์๊ฒ ๋ค์.
ํ๋ก์ธ์ค๊ฐ ์ฐจ์งํ๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ดํด๋ณด๋ฉด
ํฌ๊ฒ Code, Data, Heap, Stack์ ์์ญ์ผ๋ก ๋๋์ด์ ธ ์์ต๋๋ค.
์ด๋ค ๊ฐ๊ฐ์ segment๋ผ ๋ถ๋ฌ์.
- ๋ฉ๋ชจ๋ฆฌ ๋งต
โ ์ ์ ์ธ๊ทธ๋จผํธ
1. Code
: ์ ์ผ ์๋ text๊ฐ ์ฝ๋ ๋ถ๋ถ์ ๋๋ค.
์์ฑํ ์ฝ๋๊ฐ ๋ค์ด๊ฐ๋ ๋ถ๋ถ์ ๋๋ค. ๊ธฐ๊ณ์ด๋ ํฌํจ๋์.
์ด ๋ถ๋ถ์ "read only" ์์ญ์ด๋ผ ์ฐ๊ธฐ ์์ ์ด ๋ค์ด์ค๋ฉด "access violation"์ด ๋ฐ์ํฉ๋๋ค.
ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋๊น์ง, ๊ณ์ ์ ์ง๋๋ ์์ญ์ ๋๋ค.
2. Data
์ ์ญ๋ณ์(global), ์ ์ ๋ณ์(static), ๋ฐฐ์ด(array), ๊ตฌ์กฐ์ฒด(structure) ๋ฑ์ด ์ ์ฅ๋ฉ๋๋ค.
1) ์ด๊ธฐํ ๋ ๋ฐ์ดํฐ : data์ ์ ์ฅ
2) ์ด๊ธฐํ ๋์ง ์์ ๋ฐ์ดํฐ : bss(Block Stated Symbol)์ ์ ์ฅ
==> ์ฌ์ค bss๋ ์ด๊ธฐํ๋ฅผ ํจ. ๋จ, ๊ฐ์ ์ด๊ธฐํ ํ๋ ๊ฒ์ด ์๋๋ผ, ๋ฉ๋ชจ๋ฆฌ ์์ ๊ณต๊ฐ์ ์ด๊ธฐํ ์ํค๋ ๊ฒ.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์, bss๋ฅผ ์ฌ์ฉํ๋๊ฒ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ผ๋ก ๋ณด๋ฉด ๋ ํจ์จ์ ์ด๋ผ ํ ์ ์๋ค.
==> ์ ๋ฆฌํ์๋ฉด, data ์์ญ์ด ๋ฐํ์ ์ด์ ์ ์ด๊ธฐํ ํ๋ ๊ฒ์ด๋ผ๋ฉด, bss๋ ๋ฐํ์ ์ดํ ์ด๊ธฐํ ํ๋ ๊ฒ
์ด ์์ญ ๋ํ ํ๋ก์ธ์ค์ ์ข ๋ฃ๊น์ง ์ ์ง๋ฉ๋๋ค.
* ํจ์ ๋ด (์ฌ์ง์ด main ํจ์๋ ํฌํจ) ๋ณ์๋ค์ ์ฌ๊ธฐ์ ํด๋น๋์ง ์์์!
--> Stack segment
โ ๋์ ์ธ๊ทธ๋จผํธ
3. Heap
ํ๋ก๊ทธ๋๋จธ๊ฐ ๋์ ์ผ๋ก ์ฌ์ฉํ๋ ์์ญ์ ๋๋ค.
malloc, free ๋๋ new, delete ์ ์ํ์ฌ ํ ๋น, ๋๋ ๋ฐํ๋๋ ์์ญ์ด์ง์.
์๋ฐ๋ c++๊ณผ ๊ฐ์ด garbage collector๊ฐ ํ๋ํ๋ ๊ฒฝ์ฐ, ์๋์ผ๋ก ๋ฐํ๋๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
4. Stack
์ง์ญ๋ณ์, ๋งค๊ฐ๋ณ์, ๋ณต๊ท ๋ฒ์ง ๋ฑ์ด ์ ์ฅ๋์ด ์๋ ํ๋ก๊ทธ๋จ์ด ์๋์ผ๋ก ์ฌ์ฉํ๋ ์์ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ค.
ํจ์ ํธ์ถ ์ ์์ฑ๋๊ณ , ํจ์ ์ข ๋ฃ์ ๋ฐํ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ Stack์ผ๋ก๋ถํฐ ์ ์ถ ๊ฐ๋ฅํ๋ฏ์ด Last In First Out ์ ์ฑ ์ ์ฌ์ฉํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ๋ค๋ฅธ ์ธ๊ทธ๋จผํธ๋ค์ด ํ์ ์์ญ์ผ๋ก๋ถํฐ ํ ๋น๋์ง๋ง Stack ์ธ๊ทธ๋จผํธ๋ ์์ ์์ญ๋ถํฐ ํ ๋น๋ฉ๋๋ค.
* Heap ์์ญ์ด ์ปค์ง๋ฉด Stack ์์ญ์ด ์์์ง๊ฒ ๋๊ณ , ์ญ๋ ์ฑ๋ฆฝํฉ๋๋ค.
==> heap overflow : heap์ด stack ์์ญ์ ์นจ๋ฒํ๋ ๊ฒ
==> stack overflow : stack์ด heap ์์ญ์ ์นจ๋ฒํ๋ ๊ฒ
'Backgrounds > Operating System' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ณต๋ฃก์ฑ | Chapter 3. Processes 2. (0) | 2022.12.02 |
---|---|
[ C ]ํ์ผ ์ด๊ธฐ - open (0) | 2022.11.24 |
Linux - PID, PPID, PGID, SID๋? (0) | 2022.11.19 |
Linux ํฐ๋ฏธ๋ ๋ช ๋ น์ด ๋ชจ์ (0) | 2022.11.16 |