๐ก์ด์์ฒด์ ๋ ?
์ด์์ฒด์ ๋ ํ๋์จ์ด ์์์ ๊ด๋ฆฌํ๊ณ , ์์ฉ ํ๋ก๊ทธ๋จ์ ํ๋์จ์ด ์ฌ์ด๋ฅผ ์ค์ฌํ๋ ์ธํฐํ์ด์ค๋ฅผ ์๋ฏธ
์ธํฐํ์ด์ค : ์๋ก ๋ค๋ฅธ ๋ ๊ฐ์ ์์คํ ์ฌ์ด์์ ์ ๋ณด๋ ์ ํธ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ ์ ์ด๋ ๊ฒฝ๊ณ๋ฅผ ์๋ฏธ
์ปค๋์ด๋ ?
๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ํด์๋ ์ฃผ๊ธฐ์ต์ฅ์น์ ์ ์ฌ๋ ์ํ์ฌ์ผ ํฉ๋๋ค.
์ด์์ฒด์ ์ญ์ ํ๋ก๊ทธ๋จ์ด๊ธฐ ๋๋ฌธ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๊ฐ ๋์ด์ผ ํ๋, ์ด์์ฒด์ ์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ์ปค์ ์ ์ฒด๋ฅผ ๋ค ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ฒ ๋๋ค๋ฉด ๋นํจ์จ์ ์ ๋๋ค. (๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ญ๋น)
๋ฐ๋ผ์ ์ปค๋(kernel)์ด๋ผ๊ณ ํ๋ ํญ์ ํ์ํ ์ด์์ฒด์ ์ ํต์ฌ ๋ถ๋ถ๋ง์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ์ฌ ์ด์์ฒด์ ๋ฅผ ์ฌ์ฉํ๊ฒ๋ ํฉ๋๋ค.
์ฆ, ์ปค๋์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํ๋ ์ด์์ฒด์ ์ ํต์ฌ ๋ถ๋ถ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์์ญ์ ๋ฐ๋ผ ์ค๋ช ?
- ์ฝ๋ ์์ญ(ํ ์คํธ ์์ญ)
์คํํ ํ๋ก๊ทธ๋จ์ ์ฝ๋๊ฐ ์ ์ฅ๋๋ ์์ญ์ผ๋ก, 'ํ ์คํธ' ์์ญ์ด๋ผ๊ณ ๋ ๋ถ๋ฆ ๋๋ค. CPU๋ ํด๋น ์ฝ๋ ์์ญ์ ์ ์ฅ๋ ๋ช ๋ น์ด๋ฅผ ํ๋์ฉ ๊ฐ์ ธ๊ฐ์ ์ฒ๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ญ(static ์์ญ)
์ ์ญ ๋ณ์์ ์ ์ ๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ์ผ๋ก, ํ๋ก๊ทธ๋จ์ด ์์ํ๋ ๋์์ ํ ๋น๋๋ฉฐ, ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ฉด ์๋ฉธํฉ๋๋ค.
- ํ ์์ญ (Heap)
์ฌ์ฉ์๊ฐ ์ง์ ๊ด๋ฆฌํ๋ ์์ญ์ด๋ฉฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋์ ์ผ๋ก ํ ๋น ๋ฐ ํค์ ๋ฉ๋๋ค. ๋์ ์ผ๋ก ํ ๋น๋๋ฏ๋ก new๋ก ์์ฑํ object๊ฐ ๋ง์์ง ์๋ก ํ ์์ญ์ ํฌ๊ธฐ๊ฐ ๋์ด๋๊ฒ ๋ฉ๋๋ค.
- ์คํ ์์ญ (Stack)
ํจ์์ ํธ์ถ์ ๋ฐ๋ฅธ ์ง์ญ๋ณ์์ ๋งค๊ฐ๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ์ผ๋ก, ์ปดํ์ผ ์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค. ํจ์์ ํธ์ถ๊ณผ ํจ๊ป ํ ๋น๋๊ณ , ํจ์์ ํธ์ถ์ด ์ข ๋ฃ๋๋ฉด ์๋ฉธํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ์ ํ ์์ญ์ ํฌ๊ฒ ์ก๊ฒ ๋๋ฉด ๋ฐ์ํ๋ ์ผ?
ํ ์์ญ์ ์คํ ์์ญ๊ณผ ๋ค๋ฅด๊ฒ ์ง์ ์์ฑ๋ ๋ณ์๋ฅผ ์ ๊ฑฐ๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
๋ง์ฝ ๋ฉ๋ชจ๋ฆฌ์ ํ ์์ญ์ด ๋๋ฌด ํฌ๋ค๋ฉด, ๋์ ํ ์์ญ์ ์กด์ฌํ๋ ๋์ ๋ณ์์ ๋ํด ์ฐธ์กฐ ์ฌ๋ถ๋ฅผ ํ์ธํด์ผ ํ๊ธฐ ๋๋ฌธ์ Garbage Collect์ ์ํ์๊ฐ์ด ๋๋ฌด ๊ธธ์ด์ง๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ผ์ Java์ JVM์์๋ ์ฒ์๋ถํฐ ํ ์์ญ์ ํฌ๊ฒ ์ก์ง ์๊ณ , Heap ์์ญ์ด ๊ฝ ์ฐผ์ ๋ GC ์งํ ํ Heap ์์ญ์ ํ์ฅํ๊ฒ ๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ์ ํ ์์ญ๊ณผ ์คํ ์์ญ์ ์ฐจ์ด์
์คํ ์์ญ (Stack Area) | ํ ์์ญ (Heap Area) | |
์ ์ฅํ๋ ๋ฐ์ดํฐ | ์ง์ญ๋ณ์, ๋งค๊ฐ๋ณ์ | ๋์ ์ผ๋ก ์์ฑ๋ ๋ณ์ (new ์ฐ์ฐ์) |
ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ ํ์ด๋ฐ | ์ปดํ์ผ (Compile) | ๋ฐํ์ (Runtime) |
ํฌ๊ธฐ ์ ํ | ์คํ ํฌ๊ธฐ๊ฐ ์ ํ๋์ด ์๋ค. | ํฌ๊ธฐ๊ฐ ์ ํ๋์ด์์ง ์๋ค. (๋์ด๋จ) |
์ฃผ์ ํ ๋น ๋ฐฉํฅ | ๋์ ์ฃผ์ → ๋ฎ์ ์ฃผ์ | ๋ฎ์ ์ฃผ์ → ๋์ ์ฃผ์ |
๋น๊ต | ํ์ ๋นํด ๋น ๋ฅด๋ค, ํจ์์ ์ข ๋ฃ์ ๋ฐ๋ผ ์๋ฉธ๋๋ฏ๋ก ๋ณ๋ค๋ฅธ ๊ด๋ฆฌ๊ฐ ํ์ ์๋ค. | ์คํ์ ๋นํด ๋๋ฆฌ๋ค, ์ง์ ํ ์์ญ ๊ด๋ฆฌ ํ์ |
๋ ์์ญ์ ๊ฐ์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ณต์ ํ๋๋ฐ, ์คํ์ ๋์ ์ฃผ์์์ ๋ฎ์ ์ฃผ์๋ก, ํ์ ๋ฎ์ ์ฃผ์์์ ๋์ ์ฃผ์๋ก ์ฑ์์ง๊ธฐ ๋๋ฌธ์ ์๋ก์ ์์ญ์ ๋๊ฐ ์นจ๋ฒํ๋๋์ ๋ฐ๋ผ heap overflow, stack overflow๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ฐธ๊ณ ๋ก, ๋ฉ๋ชจ๋ฆฌ์ ์์ชฝ์ ์์นํ ์๋ก ๋ฎ์ ์ฃผ์์ด๋ฉฐ, ์๋์ชฝ์ ์์นํ ์๋ก ๋์ ์ฃผ์์ ๋๋ค.
ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด
1) ํ๋ก์ธ์ค
- ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ(์ฃผ๊ธฐ์ต์ฅ์น)์ ์ ์ฌ๋์ด ์คํ๋๋ ํ๋ก๊ทธ๋จ์ ์๋ฏธํฉ๋๋ค.
- PCB, code, data, heap, stack ์์ญ์ ๊ฐ์ต๋๋ค.
- ํ๋ก์ธ์ค๋ณ ๊ฐ๊ฐ์ ์์ญ์ ๊ฐ๊ธฐ ๋๋ฌธ์ ๋ณ๋ค๋ฅธ ๋๊ธฐํ ์์ ์ด ํ์ํ์ง ์์ต๋๋ค.
- ํ๋ก์ธ์ค๋ณ ๊ฐ๊ฐ์ ์์ญ์ ๊ฐ๊ธฐ ๋๋ฌธ์ context switching ๋น์ฉ์ด ํฝ๋๋ค.
- ํ๋ก์ธ์ค ์ฐ๋ ๋๋ณด๋ค ๋ฌด๊ฒ๊ธฐ ๋๋ฌธ์ ์์ฑ ์๊ฐ์ด ๋ ๊น๋๋ค.
- ํ ํ๋ก์ธ์ค์์ ์ค๋ฅ๊ฐ ์๊ธฐ๋๋ผ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค.
2) ์ฐ๋ ๋
- ํ ํ๋ก์ธ์ค ๋ด์ ์คํ ๋จ์, ์คํ์ ํ๋ฆ์ ์๋ฏธํฉ๋๋ค.
- stack ์์ญ๋ง ๋ณ๋๋ก ๊ฐ๊ณ , ๋๋จธ์ง ์์ญ(code, data, heap)์ ๋ํด์๋ ํด๋น ์ฐ๋ ๋๋ฅผ ํฌํจํ ํ๋ก์ธ์ค์ ์์์ ๊ณต์ ํฉ๋๋ค.
- stack ์์ญ ์ธ๋ถ์ ๊ณต์ ์์์ ๋ํด ์ ๊ทผ ์ ๋๊ธฐํ ์์ ์ด ํ์ํฉ๋๋ค.
- stack ์์ญ ์ธ๋ถ๋ฅผ ๊ณต์ ํ๋ฏ๋ก ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ์ด ์ ์ต๋๋ค.
- ์ฐ๋ ๋๋ ํ๋ก์ธ์ค๋ณด๋ค ๊ฐ๋ณ๊ธฐ ๋๋ฌธ์ ์์ฑ ์๊ฐ์ด ๋ ์งง์ต๋๋ค.
- ํ ์ฐ๋ ๋์์ ์ค๋ฅ๊ฐ ์๊ธฐ๋ฉด, ๋๋จธ์ง ํ๋ก์ธ์ค ๋ด์ ์ฐ๋ ๋์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
์ถ์ฒ: https://hoons-dev.tistory.com/95
'๐ CS [ComputerScience] > ๐ง ์ด์์ฒด์ [OS]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[4์ฃผ์ฐจ] Quiz (0) | 2021.03.25 |
---|---|
[3์ฃผ์ฐจ] Quiz (0) | 2021.03.16 |
[2์ฃผ์ฐจ] Quiz (0) | 2021.03.12 |
[1์ฃผ์ฐจ] Quiz (0) | 2021.03.10 |