KR_CS_Process_Thread - somaz94/DevOps-Engineer GitHub Wiki
์ง๋ฌธ: ํ๋ก๊ทธ๋จ, ํ๋ก์ธ์ค, ์ค๋ ๋์ ๊ฐ๋ ์ ์ค๋ช ํ๊ณ , ํ๋ก์ธ์ค์ ์ค๋ ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ ์ฐจ์ด๋ฅผ ์ค๋ช ํ์ธ์. ๋ํ IPC ๋ฐฉ๋ฒ๊ณผ ๋ฉํฐ์ค๋ ๋ฉ์ ๋์์ฑ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ์ธ์.
| ์ฉ์ด | ์ค๋ช |
|---|---|
| Program | ๋์คํฌ์ ์ ์ฅ๋ ์ ์ ์คํ ํ์ผ |
| Process | ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ ์ธ์คํด์ค (๋ ๋ฆฝ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ) |
| Thread | ํ๋ก์ธ์ค ๋ด์ ๊ฒฝ๋ ์คํ ๋จ์ (๊ณต์ ๋ฉ๋ชจ๋ฆฌ) |
| IPC | Inter-Process Communication โ ํ๋ก์ธ์ค ๊ฐ ํต์ ๋ฉ์ปค๋์ฆ |
| Context Switching | CPU๊ฐ ์คํ ์ค์ธ ํ๋ก์ธ์ค/์ค๋ ๋๋ฅผ ์ ํํ๋ ์์ |
| Race Condition | ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๊ณต์ ์์์ ๋์ ์ ๊ทผํ์ฌ ๊ฒฐ๊ณผ๊ฐ ๋ถํ์ ์ ์ธ ์ํ |
| Deadlock | ๋ ์ค๋ ๋๊ฐ ์๋ก์ ๋ฝ์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋ฌดํ ๋๊ธฐํ๋ ์ํ |
| Mutex | ์ํธ ๋ฐฐ์ ๋ฝ โ ํ ๋ฒ์ ํ๋์ ์ค๋ ๋๋ง Critical Section ์ง์ ํ์ฉ |
Program (์ ์ ํ์ผ)
โ ์คํ
Process (๋
๋ฆฝ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ, PID ๋ถ์ฌ)
โ ๋ด๋ถ ํฌํจ
Thread (๊ณต์ ๋ฉ๋ชจ๋ฆฌ, TID ๋ถ์ฌ)
ํ๋ก์ธ์ค (๋
๋ฆฝ): ์ค๋ ๋ (๊ณต์ ):
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Stack (A) โ โ Stack (B) โ โ Stack T1 โ Stack T2 โ ... โ โ ๋
๋ฆฝ
โโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Heap (A) โ โ Heap (B) โ โ Shared Heap โ โ ๊ณต์
โโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Data (A) โ โ Data (B) โ โ Shared Data Segment โ โ ๊ณต์
โโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Code (A) โ โ Code (B) โ โ Shared Code Segment โ โ ๊ณต์
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Process A Process B Single Process
| ํญ๋ชฉ | Process | Thread |
|---|---|---|
| ๋ฉ๋ชจ๋ฆฌ | ๋ ๋ฆฝ์ (๋ชจ๋ ๋ถ๋ฆฌ) | ๊ณต์ (Stack๋ง ๋ ๋ฆฝ) |
| ์์ฑ ๋น์ฉ | ๋์ (fork) | ๋ฎ์ (pthread_create) |
| ํต์ | IPC ํ์ | ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ก ์ง์ ํต์ |
| ๋ ๋ฆฝ์ฑ | ์์ ๋ ๋ฆฝ | ์์กด์ (Crash ์ ์ ์ฒด ์ข ๋ฃ) |
| Context Switching | ๋๋ฆผ | ๋น ๋ฆ |
| ํค์๋ | Isolation | Concurrency |
| ๋ฐฉ๋ฒ | ํน์ง | ์๋ | ์ฌ์ฉ ์ฌ๋ก |
|---|---|---|---|
| Pipe | ๋จ๋ฐฉํฅ, ๋ถ๋ชจ-์์ ๊ฐ | ๋น ๋ฆ | ๊ฐ๋จํ ๋ฐ์ดํฐ ์ ๋ฌ |
| Message Queue | ๋ฉ์์ง ๋จ์ ๋น๋๊ธฐ | ์ค๊ฐ | ํ๋ก์ธ์ค ๊ฐ ๋น๋๊ธฐ ๋ฉ์์ง |
| Shared Memory | ๋ฉ๋ชจ๋ฆฌ ์ง์ ๊ณต์ | ๋งค์ฐ ๋น ๋ฆ | ๋์ฉ๋ ๋ฐ์ดํฐ ๊ณต์ |
| Socket | ๋คํธ์ํฌ ํต์ ๊ฐ๋ฅ | ๋๋ฆผ | ๋ถ์ฐ ์์คํ ๊ฐ ํต์ |
์ฌ๋ฌ ์ค๋ ๋๊ฐ ๊ณต์ ๋ณ์์ ๋์ ์ ๊ทผ โ ๊ฒฐ๊ณผ๊ฐ์ด ์คํ ์์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง.
ํด๊ฒฐ: Mutex (Lock) Critical Section ์ง์ ์ ํ ๋ฒ์ ํ๋์ ์ค๋ ๋๋ก ์ ํ.
์ค๋ ๋ A๊ฐ Lock1์ ๋ณด์ ํ ์ฑ Lock2๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ , ์ค๋ ๋ B๋ Lock2๋ฅผ ๋ณด์ ํ ์ฑ Lock1์ ๊ธฐ๋ค๋ฆฌ๋ ์ํฉ.
ํด๊ฒฐ: Lock Ordering ๋ชจ๋ ์ค๋ ๋๊ฐ ๋์ผํ ์์๋ก ๋ฝ์ ํ๋ํ๋๋ก ๊ฐ์ .
| ๊ฐ๋ | ์ค๋ช |
|---|---|
| Concurrency (๋์์ฑ) | ์ฌ๋ฌ ์์ ์ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์ฒ๋ฆฌ (1 CPU์์๋ ๊ฐ๋ฅ) |
| Parallelism (๋ณ๋ ฌ์ฑ) | ์ฌ๋ฌ ์์ ์ ์ค์ ๋ก ๋์์ ์ฒ๋ฆฌ (๋ฉํฐ CPU ํ์) |