๐ ์์ฝ
- ํ๋ก๊ทธ๋จ: ์ด๋ ์์ ์ ํ๊ธฐ ์ํด ์คํ๋ ์ ์๋ ํ์ผ
- ํ๋ก์ธ์ค: ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๊ณ , ์ด์์ฒด์ ๋ก๋ถํฐ CPU๋ฅผ ํ ๋น๋ฐ์ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ
- ์ค๋ ๋: ํ๋ก์ธ์ค ๋ด์์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ ํ๋ฆ ๋จ์
โ ํ๋ก์ธ์ค (Process)
ํ๋ก์ธ์ค๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ์๋ฏธํฉ๋๋ค.
๊ทธ๋ผ ํ๋ก๊ทธ๋จ์ ๋ฌด์์ผ๊น์? ํ๋ก๊ทธ๋จ์ ์ปดํจํฐ์์ ์คํํ ์ ์๋ ํ์ผ์ ๋งํฉ๋๋ค.
๋ค๋ง ์์ง ํ์ผ์ ์คํํ์ง ์์์ผ๋ฏ๋ก ๊ทธ๋ฅ ํน์ ํ ์์ ์ ์ํด ์์ฑ๋ ์ฝ๋ ๋ฉ์ด๋ฆฌ์ผ ๋ฟ์ ๋๋ค.
์ด์์ฒด์ ๊ฐ ์ฌ์ฉ์์ ์คํ ์์ฒญ์ ์ํด ๋์คํฌ์ ์๋ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ณ ์คํํ๋ฉด ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋๋ค.
๋์คํฌ ๋ด์์ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ text, data, bss๋ก ๊ตฌ์ฑ๋์ด ์์์ต๋๋ค.
text(code) | ์ฝ๋. CPU๊ฐ ์ค์ ๋ก ์คํํ ๊ธฐ๊ณ์ด ๋ช ๋ น์ด์ ๋ชจ์. |
data | ์ด๊ธฐํ๋ ์๋ฃ ๊ตฌ์ญ. int count =100; ์ฒ๋ผ ์ ์ธ๊ณผ ์ด๊ธฐํ๊ฐ ๋ ์ ์ญ/์ ์ ๋ณ์๋ฅผ ์๋ฏธ. |
bss | ์ด๊ธฐํ๋์ง ์์ ์๋ฃ ๊ตฌ์ญ. ๊ฐ์ ์๊ณ ๊ณต๊ฐ๋ง ์ ์๋์ด ์์. |
์ด ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ผ๋ก ์ฌ๋ผ๊ฐ๋ฉด์ stack๊ณผ heap ์์ญ ๊ณต๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ์์ ๋์ ์์ฑ๋ฉ๋๋ค.
stack | ์ง์ญ ๋ณ์์ ๊ฐ์ด ํธ์ถํ ํจ์๊ฐ ์ข
๋ฃ๋๋ฉด ๋๋์์ฌ ์์์ ์ธ ์๋ฃ๋ฅผ ์ ์ฅํ๋ ์์ญ. ํจ์์ ํธ์ถ์ด ์๋ฃ๋๋ฉด ์๋ฉธ๋จ. ์๋์ผ๋ก ๊ด๋ฆฌ๋จ. |
heap | ๋ฐํ์์ new ๋ฑ์ผ๋ก ํ ๋น ๋๋ ๋์ ๋ฉ๋ชจ๋ฆฌ. ์ฌ์ฉ์(๊ฐ๋ฐ์)์ ์ํด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋์ ์ผ๋ก ํ ๋น๋๊ณ ํด์ ๋จ. |
๋ํ Process Control Block(PCB)์ด ์ถ๊ฐ๋๋๋ฐ, ๋ง ๊ทธ๋๋ก ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๋ ๋ธ๋ก์ผ๋ก ํ๋ก์ธ์ค ID, ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๋ฑ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด์์ฒด์ ๋ ์ด PCB๋ฅผ ํตํด ํด๋น ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ฅผ ์ป๊ณ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
์ด ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ(text, data, bss, heap, stack)๋ฅผ program image๋ผ๊ณ ํ๋ฉฐ, ์ฌ๊ธฐ์ ํ๊ฒฝ ๋ณ์ ๋ฑ runtime ์ค์ ์ ๋ณด(environment)๊ฐ ํจ๊ป ๊ตฌ์ฑ๋์ด ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ด๋ฃน๋๋ค.
์ดํ ์ด์์ฒด์ ๊ฐ CPU๋ฅผ ํด๋น ํ๋ก์ธ์ค์ ํ ๋นํ์ฌ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
ํ๋ก๊ทธ๋จ๊ณผ ํ๋ก์ธ์ค์ ๊ฐ๋ ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํ์๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํ๋ก๊ทธ๋จ: ์ด๋ค ์์
์ ํ๊ธฐ ์ํด ์คํํ ์ ์๋ ํ์ผ
- ๋์คํฌ ๋ด์ ์ ์ฅ๋์ด ์์ง๋ง, ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ์์ง ์๋ ์ฝ๋ ๋ฉ์ด๋ฆฌ
- ํ๋ก์ธ์ค: ์คํ๋์ด ์์
์ค์ธ ํ๋ก๊ทธ๋จ
- ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์ ์ฌ๋๊ณ , CPU ์์์ ํ ๋น๋ฐ์ ์คํ๋๊ณ ์๋ ์ํ
- ํ๋ก์ธ์ค๋ผ๋ฆฌ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผํ ์ ์
๐ ํ๋ก์ธ์ค ๊ตฌ์กฐ
text(code) | ์ฝ๋. CPU๊ฐ ์ค์ ๋ก ์คํํ ๊ธฐ๊ณ์ด ๋ช ๋ น์ด์ ๋ชจ์ |
data | ์ด๊ธฐํ๋ ์๋ฃ ๊ตฌ์ญ int count =100; ์ฒ๋ผ ์ ์ธ๊ณผ ์ด๊ธฐํ๊ฐ ๋ ์ ์ญ/์ ์ ๋ณ์๋ฅผ ์๋ฏธ |
bss | ์ด๊ธฐํ๋์ง ์์ ์๋ฃ ๊ตฌ์ญ int count;์ฒ๋ผ ๊ฐ์ ์๊ณ ๊ณต๊ฐ๋ง ์ ์๋์ด ์์ |
stack | ์ง์ญ ๋ณ์์ ๊ฐ์ด ํธ์ถํ ํจ์๊ฐ ์ข
๋ฃ๋๋ฉด ๋๋์์ฌ ์์์ ์ธ ์๋ฃ๋ฅผ ์ ์ฅํ๋ ์์ญ. ํจ์์ ํธ์ถ์ด ์๋ฃ๋๋ฉด ์๋ฉธ๋จ. ์๋์ผ๋ก ๊ด๋ฆฌ๋จ. |
heap | ๋ฐํ์์ new ๋ฑ์ผ๋ก ํ ๋น ๋๋ ๋์ ๋ฉ๋ชจ๋ฆฌ. ์ฌ์ฉ์(๊ฐ๋ฐ์)์ ์ํด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋์ ์ผ๋ก ํ ๋น๋๊ณ ํด์ ๋จ. |
PCB | Process Control Block. ํ๋ก์ธ์ค ID, ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๋ฑ์ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์์. |
โ ์ค๋ ๋ (Thread)
์ค๋ ๋๋ ํ๋ก์ธ์ค ์์์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ ํ๋ฆ์ ๋จ์์ ๋๋ค.
์ดํดํ๊ธฐ ์ฌ์ด ์๋ก ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๊ฐ ์์ต๋๋ค.
ํฌ๋กฌ์ด๋ผ๋ ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด, ํ๋์ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋ฉ๋๋ค.
์ด ํฌ๋กฌ์์ ์ฐ๋ฆฌ๋ ์ธํฐ๋ท ๊ธฐ์ฌ๋ฅผ ์ฝ๊ธฐ๋, ๋ค๋ฅธ ์ฐฝ์์ ์ ํ๋ธ๋ฅผ ๋ณด๊ธฐ๋ ํ๊ณ , ๋ ๋ค๋ฅธ ์ฐฝ์์ ๊ฒ์์ ํ๊ธฐ๋ ํ๋ฉฐ ์ฌ๋ฌ ์ผ์ ํ ์ ์์ต๋๋ค.
์ฆ, ํ๋์ ํ๋ก์ธ์ค ์์์ ์ฌ๋ฌ ์์ ๋ค์ด ๋์์ ์งํ๋๋๋ฐ ์ด ์์ ๋ค์ ์๋ก ๋ ๋ฆฝ์ ์ ๋๋ค.
ํ๋์ ํ๋ก์ธ์ค ์์ ์ฌ๋ฌ ์ค๋ ๋๋ค์ด ์๊ณ , ์ด๋ก ์ ์ผ๋ก๋ ์ค๋ ๋ ์๊ฐ ๋ง์ ์๋ก ๋์์ ํ ์ ์๋ ์์ ์ด ๋ง์์ง๋๋ค.
(์ค์ ๋ก๋ ๋ณ๋ ฌ๋ก ์ํ๋๋ ์ค๋ ๋ ์๋ CPI ์ฝ์ด ์์ ๋ฐ๋ผ ์ ํ๋ฉ๋๋ค.)
ํ๋ก์ธ์ค ๋ด์์ ์ค๋ ๋๋ก ๋์ ์์ ์ด ๊ฐ๋ฅํ ๊ฒ์ ์ค๋ ๋๋ผ๋ฆฌ ํ๋ก์ธ์ค์ ์์์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ค text, data, heap์ ๋ค๋ฅธ ์ค๋ ๋๋ค๋ผ๋ฆฌ ์๋ก ๊ณต์ ๋๊ณ
stack ์์ญ์ ์ค๋ ๋๋ง๋ค ์๋กญ๊ฒ ํ ๋น๋ฐ์ ๋ณ๋์ stack์ ๊ฐ์ง๋๋ค.
stack์ ํจ์ ํธ์ถ ์ ์ ๋ฌ๋๋ ์ธ์๋ ์ง์ญ ๋ณ์ ๋ฑ์ ์ ์ฅํ๋ ๊ณต๊ฐ์ผ๋ก ๋ ๋ฆฝ์ ์ธ ์คํ์ ๊ฐ์ง์ผ๋ก์จ ์ค๋ ๋๋ ๋ ๋ฆฝ์ ์ผ๋ก ํจ์๋ฅผ ํธ์ถํ ์ ์๊ณ , ๋ ๋ฆฝ์ ์ธ ์คํ ํ๋ฆ์ ๊ฐ์ง ์ ์๊ฒ ๋ฉ๋๋ค.
๋ณ๋์ stack์ ๊ฐ์ง๊ณ ์์ง๋ง heap ๋ฉ๋ชจ๋ฆฌ๋ ํ๋ก์ธ์ค์ heap ์์ญ์ ๋ชจ๋ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์
์๋ก ๋ค๋ฅธ ์ค๋ ๋์์ ๊ฐ์ ธ์ ์ฝ๊ณ ์ธ ์ ์์ต๋๋ค.
ํ๋ก์ธ์ค๋ผ๋ฆฌ๋ ์๋ก ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ฏ๋ก ์๋ก ์ํฅ์ ๋ผ์น์ง ์์ง๋ง
์ค๋ ๋๋ค์ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์, ํ๋์ ์ค๋ ๋๊ฐ ์๋ชป๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด๋ ์์ธ๋ฅผ ๋ฐ์์ํค๋ฉด ๋ค๋ฅธ ์ค๋ ๋์๋ ์ํฅ์ ์ฃผ์ด ์ ์ฒด ํ๋ก์ธ์ค๊ฐ ๋ถ์์ ํด์ง ์ ์์ต๋๋ค.
์ฐธ๊ณ ์๋ฃ
'โ๏ธ CS & ๊ธฐํ ๊ฐ๋ฐ ์๋ฃ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์บ์(Cache) ๊ฐ๋ ์ฝ๊ฒ ์ ๋ฆฌํ๊ธฐ (1) | 2025.06.03 |
---|---|
[OS] ๋ฉํฐ์ค๋ ๋์์ ๊ฒฝ์ ์ํ ํด๊ฒฐ: ์ํธ ๋ฐฐ์ (๋ฎคํ ์ค์ ์ธ๋งํฌ์ด) (2) | 2025.06.02 |
๋๋ฒ๊น ์ ์ค์์ฑ (0) | 2025.05.14 |
[๊นํ๋ธ] Codecov ์ ์ฉํ์ฌ PR์ ํ ์คํธ ์ปค๋ฒ๋ฆฌ ๋ฑ์ง ๋ฌ๊ธฐ (1) | 2025.04.25 |
CI/CD ๊ฐ๋ ์ดํดํ๊ธฐ (1) | 2025.04.15 |