- Code(Text)
- ์ฐ๋ฆฌ๊ฐ ์์ฑํ ์์ค์ฝ๋๊ฐ ๋ค์ด ๊ฐ๋ ๋ถ๋ถ. ์ฆ, ์คํํ ํ๋ก๊ทธ๋จ์ ์ฝ๋๊ฐ ์ ์ฅ๋๋ ์์ญ์ผ๋ก ํ ์คํธ(code)์์ญ ์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
- ์ฝ๋์์ญ์ ์คํ ํ์ผ์ ๊ตฌ์ฑํ๋ ๋ช ๋ น์ด๋ค์ด ์ฌ๋ผ๊ฐ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ผ๋ก ํจ์, ์ ์ด๋ฌธ, ์์ ๋ฑ ํจ์์ ๋ํ ๊ธฐ๊ณ์ด ์ฝ๋๊ฐ ์ฌ๊ธฐ์ ์ง์ ๋๋ค.
- ์ปดํ์ผ ํ์์ ๊ฒฐ์ ๋๊ณ ์ค๊ฐ์ ์ฝ๋๋ฅผ ๋ฐ๊ฟ ์ ์๊ฒ Read-Only ๋ก ์ง์ ๋ผ์๋ค.
- Data
- ํ๋ก๊ทธ๋จ์ ์ด๊ธฐ๊ฐ ์๋ ์ ์ญ ๋ณ์, ๋ฐฐ์ด, ์ ์ (static) ๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ์ด๋ค. ์ฆ, ํ๋ก๊ทธ๋จ์ด ๊ตฌ๋๋๋ ๋์ ํญ์ ์ ๊ทผ ๊ฐ๋ฅํ ๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ์ด๋ค.
- ์ ์ญ๋ณ์, static ๊ฐ์ ์ฐธ์กฐํ ์ฝ๋๋ ์ปดํ์ผ ํ๊ณ ๋๋ฉด Data ์์ญ์ ์ฃผ์๊ฐ์ ๊ฐ๋ฅดํค๋๋ก ๋ฐ๋๋ค.
- ๋ฐ์ดํฐ ์์ญ์ ํ๋ก๊ทธ๋จ์ ์์๊ณผ ํจ๊ป ํ ๋น๋๋ฉฐ, ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ฉด ์๋ฉธํ๋ค.
- ์คํ ์ค๋์ ์ ์ญ๋ณ์๊ฐ ๋ณ๊ฒฝ ๋ ์๋ ์์ผ๋ ์ด ์์ญ์ Read-Write๋ก ์ง์ ๋ผ์๋ค.
- BSS(Block Stated Symbol)
- ์ด๊ธฐ๊ฐ ์๋ ์ ์ญ๋ณ์, ๋ฐฐ์ด, ์ ์ (static) ๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ์ด๋ค.
- ์ด๊ธฐํ ๋ ๋ฐ์ดํฐ๋ Data ์์ญ์ ์ ์ฅ๋๊ณ , ์ด๊ธฐํ ๋์ง ์์ ๋ฐ์ดํฐ๋ BSS(Block Stated Symbol)์์ญ์ ์ ์ฅ๋๋ค.
- ์ด๊ธฐํ๋์ง ์์ ๋ณ์๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋ ์์ญ๋ง ์ก์์ฃผ๋ฉด ๋๊ณ ๊ทธ ๊ฐ์ ํ๋ก๊ทธ๋จ์ ์ ์ฅํ๊ณ ์์ ํ์๋ ์์ผ๋, ์ด๊ธฐํ๊ฐ ๋๋ ๋ณ์๋ ๊ทธ ๊ฐ๋ ํ๋ก๊ทธ๋จ์ ์ ์ฅํ๊ณ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ BSS์์ญ ๋ณ์๋ค์ด ๋ง์์ ธ๋ ํ๋ก๊ทธ๋จ์ ์คํ์ฝ๋ ์ฌ์ด์ฆ๋ฅผ ๋๋ฆฌ์ง ์๋๋ค.
- Stack
- ํจ์์ ํธ์ถ๊ณผ ๊ด๊ณ๋๋ ์ง์ญ ๋ณ์์ ๋งค๊ฐ๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ์ด๋ค.
- Stack์ ํจ์์ ํธ์ถ๊ณผ ํจ๊ป ํ ๋น๋๋ฉฐ, ํจ์์ ํธ์ถ์ด ์๋ฃ๋๋ฉด ์๋ฉธํ๋ค.
- ์์ํ์ ์ ๋ฐ์ดํฐ๊ฐ ๊ฐ๊ณผ ํจ๊ป ํ ๋น๋๋ค.
- Heap ์์ญ์ ์์ฑ๋ Object ํ์ ์ ๋ฐ์ดํฐ ์ฐธ์กฐ๊ฐ์ด ํ ๋น๋๋ค.
- LIFO(๊ฐ์ฅ ๋์ค์ ๋ค์ด๊ฐ๊ฒ ๋จผ์ ๋์ด)ํน์ฑ์ ๊ฐ์ง
- ๋ฉ๋ชจ๋ฆฌ์ ๋์ ์ฃผ์์์ ๋ฎ์ ์ฃผ์์ ๋ฐฉํฅ์ผ๋ก ํ ๋น๋๋ค.
- ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ผ๋ง๋ ์ฌ์ฉํ ์ง ๋ฏธ๋ฆฌ ๊ณ์ฐํ ์ ์๋ค. ๊ทธ๋์ stack ํจ์์ ๋ท๋ถ๋ถ์์๋ถํฐ ๋ณ์์ ์ฃผ์๊ฐ ๋งค๊ฒจ์ง๋ค(code๋ 0์์ stack FFFFFFFF๊น์ง ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ๊ฐ์ง๊ณ , stack์ FFFFFFFF ๊ทผ์ฒ์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ๊ฐ์ง๋ค). ์ฆ, ๋ณ์ ์ ์ธ ์์์ ๋ฐ๋ผ ๋์ ์ฃผ์์์ ๋ฎ์ ์ฃผ์๋ก ๋ด๋ ค๊ฐ๋ค.
- ์ปดํ์ผ ํ์์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ ๋ฌดํํ ํ ๋น ํ ์ ์๋ค. ์ฌ๊ทํจ์๊ฐ ๋๋ฌด ๊น๊ฒ ํธ์ถ๋๊ฑฐ๋ ํจ์๊ฐ ์ง์ญ๋ณ์๋ฅผ ๋๋ฌด ๋ง์ด ๊ฐ์ง๊ณ ์์ด stack ์์ญ์ ์ด๊ณผํ๋ฉด stack overflow ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
- Heap
- ๋ฐํ์์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค.
- ์ฌ์ฉ์์ ์ํด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋์ ์ผ๋ก ํ ๋น๋๊ณ ํด์ ๋๋ค.
- ์ฐธ์กฐํ์ ๋ฐ์ดํฐ์ ๊ฐ์ด ์ ์ฅ๋๋ค.
- ์๋ฅผ ๋ค์ด ํด๋์ค, ํด๋ก์ ๊ฐ ์ด ๋ถ๋ถ์ ํด๋น ๋๋ค.
- Heap์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฎ์ ์ฃผ์์์ ๋์ ์ฃผ์์ ๋ฐฉํฅ์ผ๋ก ํ ๋น๋๋ค.
- HEAP๊ณผ STACK์์ญ์ ์ฌ์ค ๊ฐ์ ๊ณต๊ฐ์ ๊ณต์ ํ๋ค. HEAP์ด ๋ฉ๋ชจ๋ฆฌ ์์ชฝ ์ฃผ์๋ถํฐ ํ ๋น๋๋ฉด STACK์ ์๋์ชฝ๋ถํฐ ํ ๋น๋๋ ์์ด๋ค. ๊ทธ๋์ ๊ฐ ์์ญ์ด ์๋ ๊ณต๊ฐ์ ์นจ๋ฒํ๋ ์ผ์ด ๋ฐ์ํ ์ ์๋๋ฐ ์ด๋ฅผ ๊ฐ๊ฐ HEAP OVERFLOW, STACK OVERFLOW๋ผ๊ณ ์นญํ๋ค.
ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ฉด Code ์์ญ์ด ๋์ด๋๋ค.
Code, Data, BSS ๋ Compile time์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๊ณ ์ดํ๋ก ๋ณ๋๋์ง ์๊ณ (๊ณ ์ ),
Stack, Heap์ Runtime์์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ๊ฒฐ์ ๋๋ค. Heap์ ์๋๋ก, Stack์ ์๋ก ์ฃผ์๊ฐ์ ๋งค๊ธด๋ค.
Q. ์ด๋ ๊ฒ ๊ตฌ์ญ์ ๋๋ ์ด์ ๋?
์ต๋ํ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ด๊ธฐ ์ํจ.
Code๋ ๊ฐ์ ํ๋ก๊ทธ๋จ ์์ฒด์์๋ ๋ชจ๋ ๊ฐ์ ๋ด์ฉ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๊ด๋ฆฌํ์ฌ ๊ณต์ ํ๋ค.
Stack๊ณผ Data๋ฅผ ๋๋ ์ด์ ๋, ์คํ ๊ตฌ์กฐ์ ํน์ฑ๊ณผ ์ ์ญ ๋ณ์์ ํ์ฉ์ฑ์ ์ํ ๊ฒ์ด๋ค.
ํ๋ก๊ทธ๋จ์ ํจ์์ ์ง์ญ ๋ณ์๋, LIFO(๊ฐ์ฅ ๋์ค์ ๋ค์ด๊ฐ๊ฒ ๋จผ์ ๋์ด)ํน์ฑ์ ๊ฐ์ง ์คํ์์ ์คํ๋๋ค.
๋ฐ๋ผ์ ์ด ํจ์๋ค ์์์ ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ '์ ์ญ ํจ์'๋ ๋ฐ๋ก ์ง์ ํด์ฃผ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ ์ ์๋ค.
์ฐธ๊ณ
'๐CS > OS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[OS] ํ์ด์ง & ์ธ๊ทธ๋จผํ ์ด์ (0) | 2021.10.13 |
---|---|
[OS] ์์คํ ํธ์ถ(System Calls) (0) | 2021.08.31 |
[OS] ์ธํฐ๋ฝํธ (0) | 2021.08.23 |
[OS] ํ๋ก์ธ์ค vs ์ค๋ ๋ (0) | 2021.08.18 |
[OS] CPU ์ค์ผ์ค๋ง (0) | 2021.08.11 |
๋๊ธ