Bibi's DevLog ๐ค๐
[TIL - Codesquad] ํ๋ก์ธ์ค์ ์ค๋ ๋ - ์ปดํจํฐ์ ๊ตฌ์กฐ, ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ๊ตฌ์กฐ, ํ๋ก์ธ์ค ์ค์ผ์ค๋ง ๋ณธ๋ฌธ
[TIL - Codesquad] ํ๋ก์ธ์ค์ ์ค๋ ๋ - ์ปดํจํฐ์ ๊ตฌ์กฐ, ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ๊ตฌ์กฐ, ํ๋ก์ธ์ค ์ค์ผ์ค๋ง
๋น๋น bibi 2021. 1. 22. 00:00[210121]
ํธ๋ ์ค์ ๋ฏธ์ ์ค๋ช
์ค๋ ๋ฏธ์
์ ํ๋ก์ธ์ค์ ์ค๋ ๋๊ฐ ๋ฌด์์ธ์ง ์ดํดํด ๋ณด๊ณ , ์ฌ์ฉํด ๋ณด๋ ๊ฒ์ด ๋ชฉํ์ด๋ค.
๋ฏธ์
์ํ์ ๋๋ฌด ์ง์ฐฉํ์ง ๋ง๊ณ ๊ณต๋ถํ๋ ๊ฒ์ ์ง์คํ์.
ํ์ต ํค์๋
- ํ๋ก์ธ์ค
- ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๋ ์๋ฃ๊ตฌ์กฐ
- ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ (์คํ, ํ, ๋ฐ์ดํฐ, ํ ์คํธ)
- ํ๋ก์ธ์ค์ ์ค๋ ๋์ ๊ด๊ณ ๋ฐ ์ฐจ์ด
- ํ๋ก์ธ์ค ์ค์ผ์ค๋ง
- ํ๋ก์ธ์ค ์ํ
- ์ค๋ ๋(์ฐ๋ ๋)
- ์ค๋ ๋ ์ค์ผ์ค๋ง / ๋ณ๋ ฌ ์ฒ๋ฆฌ
- ๋ค์ค ์ค๋ ๋
- ๋ฉํฐ ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ
- ์ด์์ฒด์ ์ ๋์์๋ฆฌ? (ํ๋ก์ธ์ค, ์ค๋ ๋ ์ค์ฌ)
TIL
ํ๋ก์ธ์ค Process
์ปดํจํฐ์ ๊ตฌ์กฐ ๋ฐ ํ๋ก์ธ์ค - ์ํ์ฝ๋ฉ
์ปดํจํฐ์ ๊ตฌ์กฐ
ํ๋์จ์ด
- Storage ์คํ ๋ฆฌ์ง, ์ ์ฅ์ฅ์น - SSD, HDD
- Memory ๋ฉ๋ชจ๋ฆฌ - RAM ๋จ
- Processor ํ๋ก์ธ์ - CPU
Storage์ Memory๋ ๋ ๋ค ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค๋ ๊ณตํต์ ์ด ์๋ค.
๊ทธ๋ ๋ค๋ฉด ๋์ ์ฐจ์ด๋?
Storage
: ๊ฐ๊ฒฉ์ด ์ธ๋ค. ์ ์ฅ์ฉ๋์ด ํฌ๋ค.
์ฒ๋ฆฌ(์ฝ๊ธฐ/์ฐ๊ธฐ) ์๋๊ฐ ๋๋ฆฌ๋ค.
์ ์์ด ๊บผ์ ธ๋ ๋ฐ์ดํฐ๊ฐ ๋จ์์๋ค.Memory
: ๊ฐ๊ฒฉ์ด ๋น์ธ๋ค. ์ ์ฅ์ฉ๋์ด ์๋ค.
์ฒ๋ฆฌ์๋๊ฐ ๋น ๋ฅด๋ค.
์ ์์ด ๊บผ์ง๋ฉด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ค.
Storage๋ง ์ฌ์ฉํ๊ธฐ์๋,
Storage์ ์ฒ๋ฆฌ์๋๋ก๋ CPU์ ์ฒ๋ฆฌ์๋(๋น ๋ฆ)๋ฅผ ๋ฐ๋ผ์ก์ ์ ์๋ ์ํฉ ๋ฐ์.๊ทธ๋์..
ํ๋ก๊ทธ๋จ์ '์ ์ฅ'ํ๋ ๊ณณ์ Storage๋ก ํ๊ณ ,
ํ๋ก๊ทธ๋จ์ '์คํ'์์๋ Storage์์ ํ๋ก๊ทธ๋จ์ ์ฝ์ด Memory์ ์ ์ฌํ๋ค.
( = ์คํ๋์ง ์๋ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค์ง ์๋๋ค)
CPU๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์๋ ํ๋ก๊ทธ๋จ์ ์ฝ์ด์ ์ฝ๋๋๋ก ๋ช ๋ น์ ์ฒ๋ฆฌํ๋ค.
๊ทธ๋์ ํ๋ก์ธ์ค๋ ๋ฌด์์ธ๊ฐ?
- ํ๋ก๊ทธ๋จ program
: ํ์ผ์ ํํ๋ก Storage์ ์ ์ฅ๋์ด ์๋ ๋ช ๋ น์ด์ ์งํฉ(์ฝ๋).- ํ๋ก๊ทธ๋จ ์์ฒด์๋ ์๋ช ์ด ์๋ค.
- ํ๋ก์ธ์ค process
: ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋ ์ํ๋ก CPU์ ์ํด ์ฒ๋ฆฌ๋๋ '์คํ ์ค์ธ ํ๋ก๊ทธ๋จ program in execution' - ํ๋ก์ธ์ processor
: ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ, ์ฆ CPU์ ๋ค๋ฅธ ๋ง.
- ํ๋ก๊ทธ๋จ program
์ด์์ฒด์ - ํ๋ก์ธ์ค
..
- ์ด๋ป๊ฒ ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋์์ ์คํ๋ ์ ์๋๊ฐ?
- ํ๋์ CPU(ํ๋ก์ธ์)๋ ๋งค ์๊ฐ ํ๋์ ํ๋ก์ธ์ค๋ง ์คํ ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ป๊ฒ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์คํ๋๋ ๊ฒ์ธ๊ฐ?- ์ด์์ฒด์ ๊ฐ ์์ฒญ๋๊ฒ ๋น ๋ฅธ ์๋๋ก CPU๊ฐ ์คํํ ํ๋ก์ธ์ค๋ฅผ ๊ต์ฒดํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ธ๊ฐ์ด '๋์์ ์คํ๋๋ค'๊ณ ๋๋ ์ ๋๋ก ๋น ๋ฅด๊ฒ ํ๋ก์ธ์ค๊ฐ ๊ต์ฒด๋๊ธฐ ๋๋ฌธ์, ๋์์ ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์คํ๋๊ณ ์๋ค๊ณ ''๋๋ผ๋'' ๊ฒ์ด๋ค. - ์ฆ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ด์์ฒด์ ์ ์ญํ ์ด๋ค.
- ์ด์์ฒด์ ๊ฐ ์์ฒญ๋๊ฒ ๋น ๋ฅธ ์๋๋ก CPU๊ฐ ์คํํ ํ๋ก์ธ์ค๋ฅผ ๊ต์ฒดํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- ํ๋์ CPU(ํ๋ก์ธ์)๋ ๋งค ์๊ฐ ํ๋์ ํ๋ก์ธ์ค๋ง ์คํ ๊ฐ๋ฅํ๋ค.
ํ๋ก์ธ์ค์ ๊ตฌ์ฑ
PCB (Process Control Block, ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก)
: ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๊ฐ ์ ์ฅ๋๋ ์๋ฃ๊ตฌ์กฐ.
์ด์์ฒด์ ๊ฐ ์์คํ ๋ด์ ํ๋ก์ธ์ค๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํด, ํ๋ก์ธ์ค๋ง๋ค ์ ์งํ๋ ์ ๋ณด๋ค์ ๋ด๋ ์ปค๋ ๋ด์ ์๋ฃ๊ตฌ์กฐ.ํฌ๊ฒ ์๋์ ๊ฐ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค.
- PID (Process IDentification)
: ์ด์์ฒด์ ๊ฐ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ์๋ณํ๊ธฐ ์ํด ๋ถ์ฌํ ํ๋ก์ธ์ค ์๋ณ๋ฒํธ. - ํ๋ก์ธ์ค ์ํ
: ์คํ ์ค / ๋๊ธฐ ์ค์ธ ํ๋ก์ธ์ค๋ค์ ๊ฐ ์ํ๋ฅผ ์ ์ฅํจ. - ํ๋ก๊ทธ๋จ ์นด์ดํฐ
: CPU๊ฐ ๋ค์์ผ๋ก ์คํํ ๋ช ๋ น์ด๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฐ.- CPU๋ ๊ธฐ๊ณ์ด๋ฅผ ํ ๋จ์์ฉ ์ฝ์ด์ ์ฒ๋ฆฌํ๋๋ฐ, ํ๋ก์ธ์ค ์คํ์ ์ํด ๋ค์์ผ๋ก ์คํํ ๊ธฐ๊ณ์ด๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฐ์ด 'ํ๋ก๊ทธ๋จ ์นด์ดํฐ'์ด๋ค.
- ์ค์ผ์ค๋ง ์ฐ์ ์์
- ์ค์ผ์ค๋ง : ์ด์์ฒด์ ๊ฐ CPU์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ค์ด ์คํ๋ ์์๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ.
์ค์ผ์ค๋ง์์ ์ฐ์ ์์๊ฐ ๋์ผ๋ฉด ๋จผ์ ์คํ๋๋ค.
- ์ค์ผ์ค๋ง : ์ด์์ฒด์ ๊ฐ CPU์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ค์ด ์คํ๋ ์์๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ.
- ๊ถํ
: ํ๋ก์ธ์ค๊ฐ ์ ๊ทผํ ์ ์๋ ์์์ ๊ฒฐ์ ํ๋ ์ ๋ณด. ๊ฐ ํ๋ก์ธ์ค๋ง๋ค ์ด๋๊น์ง ์ ๊ทผํ ์ ์๋์ง์ ๋ํ ๊ถํ์ด ํ์ํ๋ค. - ๋ถ๋ชจ ํ๋ก์ธ์ค์ ์์ ํ๋ก์ธ์ค
- ์ต์ด๋ก ์์ฑ๋๋ initํ๋ก์ธ์ค๋ฅผ ์ ์ธํ ๋ชจ๋ ํ๋ก์ธ์ค๋ ๋ถ๋ชจ ํ๋ก์ธ์ค๋ฅผ ๋ณต์ ํด ์์ฑ๋๋ฉฐ, ํธ๋ฆฌ ๋ชจ์์ ๊ณ์ธต๊ด๊ณ๋ฅผ ํ์ฑํ๋ค.
๊ฐ ํ๋ก์ธ์ค๋ ์์ ํ๋ก์ธ์ค์ ๋ถ๋ชจ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- ์ต์ด๋ก ์์ฑ๋๋ initํ๋ก์ธ์ค๋ฅผ ์ ์ธํ ๋ชจ๋ ํ๋ก์ธ์ค๋ ๋ถ๋ชจ ํ๋ก์ธ์ค๋ฅผ ๋ณต์ ํด ์์ฑ๋๋ฉฐ, ํธ๋ฆฌ ๋ชจ์์ ๊ณ์ธต๊ด๊ณ๋ฅผ ํ์ฑํ๋ค.
- ํฌ์ธํฐ
: ํ๋ก์ธ์ค๋..- ํ๋ก๊ทธ๋จ์ ๋ํ ์ ๋ณด๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ ๊ฐ์ ๊ฐ์ง๋ค.
- ํ๋ก์ธ์ค์ ํ ๋น๋ ์์๋ค์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ ๊ฐ์ ๊ฐ์ง๋ค.
- ์คํ๋ฌธ๋งฅ (์๋ ''ํ๋ก์ธ์ค ๋ฌธ๋งฅ'' ์ฐธ์กฐ)
: ํ๋ก์ธ์ค๊ฐ ์คํ์ํ์์ ๋ง์ง๋ง์ผ๋ก ์คํํ ํ๋ก์ธ์์ ๋ ์ง์คํฐ ๋ด์ฉ์ ๋ด๊ณ ์๋ค.- ์ด์์ฒด์ ์ ์ํด ๊ณ์ ๊ต์ฒด๋๋ CPU์ ํ๋ก์ธ์ค๊ฐ ๋ค์ ์คํ๋ ๋, ์ค๋จ๋ ์ ์์ด ์ฐ์์ ์ผ๋ก ์คํ๋ ๊ฒ ์ฒ๋ผ ์คํ๋๊ธฐ ์ํด ์ด ๋ ์ง์คํฐ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์๋ค.
- PID (Process IDentification)
ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ (ํ๋ก์ธ์ค๊ฐ ์ ๊ทผํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ)
PCB์ ๊ตฌ์ฑ์์ ์ค ํฌ์ธํฐ์ ๋ํ ์์ธํ ์ค๋ช ์ด๋ค.
ํฌ์ธํฐ
: ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ์ ๋ช ๋ น์ด๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
์ฌ๊ธฐ์ 'ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ์ ๋ช ๋ น์ด๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ' ์ ๊ตฌ์ฑ์ ์์๋ณธ๋ค.*ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ *
: ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ๋์ ๊ตฌ์กฐ.๋ฎ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ <- Text - Data - BSS - Heap - (๋น ๊ณต๊ฐ unused memory) - Stack -> ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ
- Text ์์ญ
: ํ๋ก์ธ์๊ฐ ์คํํ ๋ฐ์ด๋๋ฆฌ ์ฝ๋, ํจ์ ์ฝ๋, ์ ์ด๋ฌธ, ์์๋ฅผ ์ ์ฅํ๋ ์์ญ. - Data (GVAR) ์์ญ
: ์ด๊ธฐํ๋ ์ ์ญ๋ณ์, static๋ณ์๋ฅผ ์ ์ฅํ๋ ์์ญ. ์ฝ๊ณ ์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํจ. - BSS ์์ญ
: ์ด๊ธฐํ๋์ง ์์ ์ ์ญ๋ณ์, static๋ณ์๋ฅผ ์ ์ฅํ๋ ์์ญ. ์ฝ๊ณ ์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํจ. - Heap (ํ)์์ญ
: ํ๋ก๊ทธ๋จ ์คํ ์ค, ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ์ ์๋ ์์ ๋ก์ด ์์ญ. - unused memory (๋น ๊ณต๊ฐ)
- Stack์์ญ๊ณผ Heap์์ญ ์ฌ์ด์ ์์นํ๋ ๋น ๊ณต๊ฐ.
- ์ปดํ์ผ ํ์์ ์ง์ญ๋ณ์๋ฅผ ์ผ๋ง๋ ์ฌ์ฉํ ์ง ๋ฏธ๋ฆฌ ๊ณ์ฐํ ์ ์๊ธฐ ๋๋ฌธ์,
์คํ์์ญ์ ๋ฐํ์์ ์ง์ญ๋ณ์ ์ ์ธ ์์์ ๋ฐ๋ผ ์์ชฝ์ผ๋ก ์ฃผ์๊ฐ์ ๋งค๊ธด๋ค.
ํ ์์ญ์ ๋์ ํ ๋น๋ ๋ ์๋์ชฝ์ผ๋ก ์ฃผ์๊ฐ์ ๋งค๊ธด๋ค.
- Stack (์คํ)์์ญ
: ๋ฉ์๋๋ ํ๋ก์์ ๋ฅผ ํธ์ถํ๊ณ ๋ฆฌํดํ ๋, ๋ณต๊ท ์ฃผ์๋ ์ง์ญ๋ณ์ ๊ฐ์ ์ผ์์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ.
- Text ์์ญ
ํ๋ก์ธ์ค ์ค์ผ์ค๋ง
- ํ๋ก์ธ์ค ๊ด๋ฆฌ
- ์ด์์ฒด์ ๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ค์ ์คํ, ๊ต์ฒด, ์ฌ์์ ํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ๊ด๋ฆฌํ๋ค.
- ์ด๋ฅผ ์ํด ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ์คํ / ์ค๋น / ๋๊ธฐ ๋ผ๋ 3๊ฐ์ง ์ํ
(ํฌ๊ฒ๋ ์์ฑ / ์ค๋น / ์คํ / ๋๊ธฐ / ์ข ๋ฃ ๋ผ๋ 5๊ฐ์ง ์ํ)๋ก ๋ถ๋ฅํ๊ณ ,
์ํ์ ์ด(state transition)๋ฅผ ํตํด ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ๋ค.
- ํ๋ก์ธ์ค์ ์ํ
- ์์ฑ new
: ํ๋ก์ธ์ค๊ฐ ์์ฑ ์ค์ธ ์ผ์์ ์ํ.- ํ๋ก์ธ์ค๊ฐ ์์๋์ด ๊ทธ ํ๋ก์ธ์ค๋ฅผ ์ํ ๊ฐ์ข ์๋ฃ๊ตฌ์กฐ๊ฐ ์์ฑ๋์์ง๋ง, ์์ง ๋ฉ๋ชจ๋ฆฌ ํ๋์ ์น์ธ๋ฐ์ง ๋ชปํ ์ํ.
- ํ๋ก๊ทธ๋จ ์คํ ์ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๊ณ , ์ค๋น๋ฆฌ์คํธ์ ์ถ๊ฐ๋จ.
- ์ค๋น ready
: ํ๋ก์ธ์ค๊ฐ ๋น์ฅ ๋ช ๋ น์ ์คํํ ์ ์์ง๋ง CPU๋ฅผ ํ ๋น๋ฐ์ง ๋ชปํ ์ํ.- ์ค๋น๋ฆฌ์คํธ์ ์๋ ํ๋ก์ธ์ค๋ค์ ์์๋๋ก ์คํ์ํ๊ฐ ๋จ.
- ์คํ running
: ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๊ณ , ๋ช ๋ น์ ์คํ ์ค์ธ ์ํ.- CPU(ํ๋ก์ธ์)๊ฐ ์ฌ์ฉ๊ฐ๋ฅํด์ง๋ฉด ํด๋น ํ๋ก์ธ์ค์ ๋ํด CPU๋ฅผ ํ ๋น๋ฐ์.
ํ๋ก์ธ์ค๋ ์คํ์ํ์์ CPU๋ฅผ ์ด์ฉํด ์์ ํ ๋ค์ CPU๋ฅผ ๋ฐ๋ฉํจ.
์์ ์ด ๋๋์ง ์์์ผ๋ฉด ๋ค์ ์ค๋น์ํ๊ฐ ๋จ.
- CPU(ํ๋ก์ธ์)๊ฐ ์ฌ์ฉ๊ฐ๋ฅํด์ง๋ฉด ํด๋น ํ๋ก์ธ์ค์ ๋ํด CPU๋ฅผ ํ ๋น๋ฐ์.
- ๋๊ธฐ / ๋ธ๋ก / ๋ด์ wait / blocked / sleep
: ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น๋ฐ๋๋ผ๋ ๋น์ฅ ๋ช ๋ น์ ์คํํ ์ ์๋ ์ํ.
์ ์ถ๋ ฅ ๋ฑ ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ ํ๋ ์ํ์ ํด๋นํ๋ค.- ํ๋ก์ธ์ค๋ฅผ ๋ค์ ์ฌ์ฉํ๊ธฐ ์ ์ ์ ์ถ๋ ฅ์ด ์๋ฃ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํ๋ค๋ฉด, ์๋ฃ๋ ๋๊น์ง ๋๊ธฐ์ํ๊ฐ ๋๋ค.
- ์ ์ถ๋ ฅ์ด ์๋ฃ๋๋ฉด ์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๋๊ธฐ์ํ์์ ์ค๋น์ํ๋ก ์ ์ด์ํจ๋ค.
- ์ข
๋ฃ terminated
: ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ ์ค์ธ ์ผ์์ ์ํ.- ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์์ผ๋, ์ด์์ฒด์ ๊ฐ ๊ทธ ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์์ ํ ์ ๋ฆฌํ์ง ๋ชปํ ์ํ.
- ์์ฑ new
- ์ธํฐ๋ฝํ
ํด๋ก / ํ์ด๋จธ ์ธํฐ๋ฝํธ
- ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์๋ฐ์ ์ผ๋ก ๋ฐ๋ฉํ์ง ์๊ณ ๋
์ ํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด, ํ๋์จ์ด์ ์ผ๋ก ์ธํฐ๋ฝํ
ํด๋ก์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐ์์ํจ๋ค.
ํ๋ก์ธ์ค๊ฐ ๋ฐ๋์ ํน์ ์๊ฐ ๊ฐ๊ฒฉ๋์๋ง ์คํ๋๋๋ก ํ๋ค. - ์ธํฐ๋ฝํ ํด๋ก์ด ๋ฐ์ํ๋ฉด, ์คํ ์ค์ธ ํ๋ก์ธ์ค๋ CPU์ ์ด๊ถ์ ๊ฐ์ ๋ก ์ด์์ฒด์ ์๊ฒ ๋นผ์๊ธฐ๊ณ ์ค๋น์ํ๋ก ์ํ์ ์ด ๋๋ค.
- ์ด์์ฒด์ ๋ ์ํ ์ค์ด๋ ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ์ ์ ์ฅํ๊ณ , ์ค๋น์ํ์ ์๋ ๋ค์ ์์์ ํ๋ก์ธ์ค๋ฅผ ์คํ ์ํ๋ก ๋ง๋ ๋ค.
- ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์๋ฐ์ ์ผ๋ก ๋ฐ๋ฉํ์ง ์๊ณ ๋
์ ํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด, ํ๋์จ์ด์ ์ผ๋ก ์ธํฐ๋ฝํ
ํด๋ก์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐ์์ํจ๋ค.
- ํ๋ก์ธ์ค ๋ฌธ๋งฅ context
: ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ(์ฝ๋, ๋ฐ์ดํฐ, ์คํ ์ํ), ๋ ์ง์คํฐ ๊ฐ, ์ปค๋ ์ํ(์์คํ ์ฝ ๋ฑ) ๋ฑ์ ํฌํจํ๋ค.- ์ด์ ์ ์คํํ ์ ์๋ ํ๋ก์ธ์ค๋ฅผ ๋ค์ ์คํํ ๋, ์ด๋ ๋ถ๋ถ๊น์ง ๋ช
๋ น์ ์ํํ๋์ง ๊ทธ ์ํ๋ฅผ ์ฌํํด์ผ ํ๋ค. ์ด ๋ ํ์ํ ๊ฒ์ด ํ๋ก์ธ์ค ๋ฌธ๋งฅ์ด๋ค.
- ํ๋์จ์ด ๋ฌธ๋งฅ
: CPU์ ์ํ ์ํ๋ฅผ ๋ํ๋. ํ๋ก๊ทธ๋จ ์นด์ดํฐ๊ฐ, ๋ ์ง์คํฐ์ ์ ์ฅ๋ ๊ฐ ๋ค์ ์๋ฏธํจ. - ํ๋ก์ธ์ค ์ฃผ์ ๊ณต๊ฐ
: ๊ฐ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ง ๋ ์์ ์ธ ์ฃผ์ ๊ณต๊ฐ(์ฝ๋, ๋ฐ์ดํฐ, ์คํ)์ ์๋ฏธํจ. - ์ปค๋ ๋ฌธ๋งฅ
: ์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ ์งํ๋ ์๋ฃ๊ตฌ์กฐ (PCB, ์ปค๋์คํ)
- ํ๋์จ์ด ๋ฌธ๋งฅ
- ์ด์ ์ ์คํํ ์ ์๋ ํ๋ก์ธ์ค๋ฅผ ๋ค์ ์คํํ ๋, ์ด๋ ๋ถ๋ถ๊น์ง ๋ช
๋ น์ ์ํํ๋์ง ๊ทธ ์ํ๋ฅผ ์ฌํํด์ผ ํ๋ค. ์ด ๋ ํ์ํ ๊ฒ์ด ํ๋ก์ธ์ค ๋ฌธ๋งฅ์ด๋ค.
์ค๋ ๋ Thread
์ค๋ ๋๋?
- ํ๋ก์ธ์ค์ ์คํ๋จ์.
๊ฒฝ๋ ํ๋ก์ธ์ค (LWP - Light Weight Process) ๋ผ๊ณ ๋ ํ๋ค.
(ํ๋ก์ธ์ค์์ ์คํ ์ ์ด๋ง ๋ถ๋ฆฌํด์ ์ฒ๋ฆฌํ๋ ๋จ์) - ์ค๋ ๋๋ ํ๋ก์ธ์ค ์์ ํฌํจ๋ ๊ฐ๋ ์ด๋ค.
- (์๋ฐ) ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ์ ์ด๋ ํ๋์ JVM์ด ์์๋๋ค.
JVM์ด ์์๋๋ค = ์๋ฐ ํ๋ก์ธ์ค๊ฐ ์์ํ๋ค.
main()๋ฉ์๋๊ฐ ์ํ๋๋ค = ์ฐ๋ ๋๊ฐ ์์๋๋ค. - ํ๋์ ํ๋ก์ธ์ค ๋ด์์ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ์ํ๋๋ค.
์ด๋ค ํ๋ก์ธ์ค๋ ์ค๋ ๋๋ ํ๋ ์ด์ ์ํ๋๋ค. - ์ฐ๋ ๋๋ ๋ฉ์ธ ๋งค์๋์์ ์์ฑ, ์์๋๋ค.
์ค๋ ๋๋ ์ ๋ง๋ค์ด์ก๋๊ฐ?
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด.
- ํ๋ก์ธ์ค ํ๋๋ฅผ ์คํํ ๋๋ (์๋ฐ ๊ธฐ์ค) ์ฝ 32-64MB์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ ํ๋ค.
๋ฐ๋ฉด ์ค๋ ๋ ํ๋๋ฅผ ์ถ๊ฐํ ๋๋ 1MB์ด๋ด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ ํ๋ค. - ํ๋ก์ธ์ค๋ ์ด์์ฒด์ ๋ก๋ถํฐ Text/Data/Stack/Heap ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋น๋ฐ๋ ๋ฐ๋ฉด,
์ค๋ ๋๋ ํ๋ก์ธ์ค ๋ด์์ stack์์ญ์ ์ ์ธํ ๋๋จธ์ง ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ์ ํ๋ก์ธ์ค ๋ด ๋ค๋ฅธ ์ค๋ ๋์ ๊ณต์ ํ๋ค. - ๋ค๋ฅธ ์ค๋ ๋์ ์ ๋ณด๊ณต์ ๊ฐ ์ฝ๋ค.
- ํ๋ก์ธ์ค ํ๋๋ฅผ ์คํํ ๋๋ (์๋ฐ ๊ธฐ์ค) ์ฝ 32-64MB์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ ํ๋ค.
- ์์
์ ๋ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํด.
- ๋จ์ผ ์ค๋ ๋๋ก ์คํํ ๋ ๋ณด๋ค ๋ค์ค ์ค๋ ๋๋ก ์คํํ ๋ ๋ ๋นจ๋ฆฌ ์์ ์ ์ฒ๋ฆฌํ ์ ์๋ค.
1/21 ์ค๋์ ์๋จ์ด
synchronized (a) ๋๊ธฐํ๋
synchronize (v) ๋์์ ํ๋ค
modify (v) ์์ ํ๋ค/์กฐ์ ํ๋ค
๋ด์ผ ํ ์ผ
ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด
๋ณด๋ฉด์ ๊ณต๋ถํ๊ณ ์ ๋ฆฌํ๊ธฐ.