ํ๋ก์ธ์ค๋?
ํ๋๋์คํฌ(SSD/HHD)์ ์ ์ฅ๋ ์ ์ ํ๋ก๊ทธ๋จ ํ์ผ์ด ๋ฉ๋ชจ๋ฆฌ๋ก ๋ก๋ฉ๋๊ณ CPU์์ ์คํ๋๋ ๊ฒ. ์ฆ, ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋ปํ๋ค.
ํ๋๋์คํฌ์ ์๋ ํ๋ก๊ทธ๋จ ํ์ผ์ ์คํํ๋ฉด OS๊ฐ ๊ทธ ํ๋ก๊ทธ๋จ์ ์คํ์ ์ํด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ๊ณ , ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ผ๋ก ๋ฐ์ด๋๋ฆฌ ์ฝ๋๊ฐ ์ฌ๋ผ๊ฐ๊ฒ ๋๋ค.
CPU๊ฐ ๊ทธ ์ฝ๋๋ฅผ ์คํํ๋ฉฐ, ์ด ์๊ฐ๋ถํฐ ํ๋ก์ธ์ค๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
ํ๋ก๊ทธ๋จ์ด ๋จ์ํ ํ์ผ์ด๋ผ๋ฉด, ํ๋ก์ธ์ค๋ ๊ทธ ํ์ผ์ด ์ค์ ๋ก ์คํ ์ค์ธ ์ํ + OS๊ฐ ๊ด๋ฆฌํ๋ ์ ๋ณด์ ๊ฒฐํฉ์ด๋ค.
ํ๋์ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๋ฒ ์คํ์ํฌ ์ ์๊ณ , ์คํ์ํจ ์๋งํผ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ฌ ๊ฐ ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ทธ ํ๋ก๊ทธ๋จ์ ์ธ์คํด์ค๋ผ๊ณ ํ๋ค.
ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค๋ฉด ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
- ์ฝ๋ ์์ญ: ์คํ ํ์ผ์ ์์ค์ฝ๋๊ฐ ๋ก๋ฉ๋๋ ๋ถ๋ถ
- ๋ฐ์ดํฐ ์์ญ: ์ ์ญ๋ณ์, static ๋ณ์๊ฐ ํ ๋น๋์ด์๋ ๋ถ๋ถ
- ํ ์์ญ: ๋์ ํ ๋น์ ์ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ (malloc, new ๊ฐ์ ๋์ ๋ฉ๋ชจ๋ฆฌ)
- ์คํ ์์ญ: ์ง์ญ๋ณ์, ํจ์ ํธ์ถ ๋ฑ์ ์ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ
ํ๋ก์ธ์ค์๋ ํ๋ก์ธ์ค๊ฐ ์ฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ปค๋์ด ์ฐ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ค. ์ฌ์ฉ์ ๊ณต๊ฐ์ ์ผ๋ฐ ํ๋ก๊ทธ๋จ์ด ์ง์ ์ ๊ทผํ๋ ๊ณต๊ฐ์ผ๋ก ํ๋ก์ธ์ค์ ์ฝ๋/๋ฐ์ดํฐ/ํ/์คํ ์์ญ์ด ์ด์ ์ํ๋ค.
์ปค๋ ๊ณต๊ฐ์ ์ปค๋ ์ฝ๋์ ๋ฐ์ดํฐ๊ฐ ์๋ ์์ญ์ผ๋ก ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ง์ ์ ๊ทผ์ ๋ชปํ๊ณ , ์์คํ
์ฝ์ ํตํด์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
PCB, ํ๋ก์ธ์ค ์ค์ผ์ค๋ง ์ ๋ณด, ํ์ผ ๋์คํฌ๋ฆฝํฐ ํ
์ด๋ธ๊ณผ ๊ฐ์ ๊ฑด ๋ชจ๋ ์ปค๋ ๊ณต๊ฐ์ ์กด์ฌํ๋ค.
PCB (Process Control Block)
์ด์์ฒด์ ๋ ํ๋์จ์ด๊ฐ ํจ์จ์ ์ผ๋ก ๋์ํ ์ ์๋๋ก ๊ด๋ฆฌํด์ฃผ๋ ์ํํธ์จ์ด์ธ๋ฐ… ์ด ์ด์์ฒด์ ๋ผ๋ ํ๋ก๊ทธ๋จ์ด ํ๋ก์ธ์ค๋ฅผ ํ๋ ๋ง๋ค์ด์ ์คํํ๋ ค๋ฉด ๊ทธ ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์์ด์ผ ํจ. ํ๋ก์ธ์ค๊ฐ ๋ญ์ง์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ ๋ณด๋ค๋ ์ ์ฅ๋์ด ์์ด์ผ ํจ. ์ด๋ ๊ฒ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํด๋์ ๊ตฌ์กฐ์ฒด๊ฐ PCB์ด๋ค.
ํ๋ก์ธ์ค๋ฅผ ์ ์ดํ๊ธฐ ์ํด ํ๋ก์ธ์ค์ ๋ํ ๋ฉํ์ ๋ณด๋ฅผ ๋ฐ๋ก ์ ์ฅํด๋ฌ์ผ ํ๋ค. ํ๋ก์ธ์ค ์ํ ๊ด๋ฆฌ์ ๋ฌธ๋งฅ ๊ตํ์ ์ํด ํ์ํ๋ฉฐ, ์ฃผ๊ธฐ์ต์ฅ์น์ ์ ์ง๋๋ค.
๊ฐ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋ ๋๋ง๋ค ๊ณ ์ ํ PCB๊ฐ ์์ฑ๋๊ณ , ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋๋ฉด PCB๋ ์ ๊ฑฐ๋๋ค.
PCB์ ํฌํจ๋๋ ์ ๋ณด
- PID (ํ๋ก์ธ์ค ID)
- PPID (Parent PID)
- Process State
- UID/GID (์ฌ์ฉ์/๊ทธ๋ฃน ID)
- Program Counter: ๋ค์ Instruction์ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ์นด์ดํฐ. CPU๋ ์ด ๊ฐ์ ํตํด ํ๋ก์ธ์ค์ Instruction์ ์ํํ๋ค.
- Register
- CPU Scheduling Information: ์ฐ์ ์์, ์ต์ข ์คํ์๊ฐ, CPU ์ ์ ์๊ฐ ๋ฑ
- Memory Information: ํด๋น ํ๋ก์ธ์ค ์ฃผ์ ๊ณต๊ฐ ์ ๋ณด๋ฅผ ์ ์ฅ
- Process Information: ํ์ด์ง ํ ์ด๋ธ, ์ค์ผ์ค๋ง ํ ํฌ์ธํฐ ๋ฑ
- Device I/O Status: ํ๋ก์ธ์ค์ ํ ๋น๋ ์ ์ถ๋ ฅ ์ฅ์น ๋ชฉ๋ก
- Pointer: ๋ถ๋ชจ/์์ ํ๋ก์ธ์ค์ ๋ํ ํฌ์ธํฐ, ์์์ ๋ํ ํฌ์ธํฐ ๋ฑ
- Open File List: ํ๋ก์ธ์ค๋ฅผ ์ํด ์ด๋ ค์๋ ํ์ผ์ ๋ฆฌ์คํธ
๋ฑ..
/proc/<PID>/status๋ฅผ ์ด์ด๋ณด๋ฉด PCB์ ์ผ๋ถ๋ฅผ ํ์ธํ ์ ์๋ค.

ํ๋ก์ธ์ค ์ํ ์ ์ด
ํ๋ก์ธ์ค๋ ์คํ ์ค ๋ค์ํ ์ํ๋ฅผ ์ค๊ฐ๋ฉฐ ๋์ํ๋ค.
์ํ ์ข ๋ฅ
- New: ํ๋ก์ธ์ค๊ฐ ๋ง ์์ฑ๋ ์ํ. fork() ํธ์ถ ์งํ, PCB๋ฅผ ์์ฑํ๋ ๋จ๊ณ
- Ready: ํ๋ก์ธ์ค๊ฐ CPU์ ์คํ๋๊ธฐ ์ํด ๋๊ธฐํ๋ ์ํ. ์คํ ๊ฐ๋ฅํ ์ํ์ง๋ง CPU ์ค์ผ์ค๋ฌ๊ฐ ์์ง CPU๋ฅผ ๋ฐฐ์ ํด์ฃผ์ง ์์ ์ํ๋ก ์ค๋น ํ์ ๋ค์ด๊ฐ ์์
- Running: CPU ์ฝ์ด๊ฐ ์ค์ ๋ก ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ์๊ฐ. ํ ์ฝ์ด ๋น ํ ํ๋ก์ธ์ค๋ง ์คํ์ด ๊ฐ๋ฅํจ
- Waiting (=Blocked): ํ๋ก์ธ์ค๊ฐ ํน์ ์์์ด๋ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ (ex. ๋์คํฌ I/O ๊ธฐ๋ค๋ฆฌ๋์ค, ๋คํธ์ํฌ ์๋ต ๊ธฐ๋ค๋ฆฌ๋์ค, sleep() ํธ์ถ ๋ฑ..)
- Terminated: ํ๋ก์ธ์ค๊ฐ exit()๋ฅผ ํธ์ถํด ์ข ๋ฃ๋์์ง๋ง PCB๊ฐ ์์ง ๋ถ๋ชจ์ wait() ํธ์ถ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ. Zombie๋ผ๊ณ ๋ ๋ถ๋ฆ
์ํ ์ ์ด ๋์
- Dispatch (Ready → Running): ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๋ฅผ ์ ์ ํ์ฌ ๋ช ๋ น์ด๋ฅผ ์คํํจ
- Time runout (Runnig→ Ready): ํ ๋น๋ CPU time slice๋ฅผ ๋ค ์ผ์ ๋ ์ค์ผ์ค๋ฌ๊ฐ ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์์ผ ํ๋ก์ธ์ค ์ ์ด๊ถ์ ๋นผ์์
- Block (Running → Waiting): I/O ์์ฒญ ๋ฑ์ผ๋ก CPU ์ฌ์ฉ์ ์ค๋จํ๊ณ ๋๊ธฐ ์ํ๋ก ์ด๋ํจ
- Wake Up (Wait → Ready): ์์ ์ด ์๋ฃ๋์ด ํ๋ก์ธ์ค๊ฐ ๋๊ธฐ ์ํ์์ ์ค๋น ์ํ๋ก ์ ์ด๋๋ ๊ณผ์
fork()๋?
๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ์๊ธฐ ๋ณต์ฌ๋ณธ(์์ ํ๋ก์ธ์ค)์ ๋ง๋๋ ์์คํ
ํธ์ถ
fork()๋ฅผ ํตํด PCB ๋ฐ PID๊ฐ ์์ฑ๋๋ค.
ํ๋ก์ธ์ค๋ ๋จ์ํ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ด ์๋๋ค. ํ๋ก๊ทธ๋จ ์ฝ๋๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๊ณ , OS๊ฐ PCB๋ฅผ ํตํด ์ํ๋ฅผ ์ถ์ ํ๊ณ , ์ค์ผ์ค๋ฌ๊ฐ CPU๋ฅผ ๋ฐฐ์ ํ๋ฉฐ, ํ๋ก์ธ์ค๋ ์ํ ์ ์ด๋ฅผ ๋ฐ๋ณตํ๋ฉด์ ๋์ํ๋ค.
์ด์์ฒด์ ๋ ์๋ง์ ํ๋ก์ธ์ค๊ฐ ํจ์จ์ ์ผ๋ก ์คํ๋๋๋ก ๋ฉ๋ชจ๋ฆฌ, CPU, ํ์ผ, I/O ๋ฑ ๋ชจ๋ ์์์ ๊ด๋ฆฌํ๋ค.
'CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Docker (0) | 2025.04.29 |
|---|---|
| ์ปจํ ์ด๋ (Container) (0) | 2025.04.28 |
| ๊ฐ์ํ (Virtualization) (0) | 2025.04.28 |