์ถ์ฒ: https://www.youtube.com/watch?v=1grtWKqTn50

์ถ์ฒ: https://lilys.ai/digest/7296769/7862479/
๐ ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
| ํญ๋ชฉ | ํ๋ก์ธ์ค | ์ค๋ ๋ |
|---|
| ๊ฐ๋
| ++ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋ฌด์ธ๊ฐ๋ก, ๋
๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ง++ | ++ํ ํ๋ก์ธ์ค ๋ด์์ ๋๋์ด์ง ํ๋ ์ด์์ ์คํ ๋จ์๋ก, ์์์ ๊ณต์ ํจ++ |
| ์์ ๊ณต์ | ๋
๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ (์ฝ๋, ๋ฐ์ดํฐ, ํ, ์คํ ๋ชจ๋ ๊ฐ๋ณ) | ์ฝ๋, ๋ฐ์ดํฐ, ํ ๊ณต์ ; ์คํ๋ง ๊ฐ๋ณ |
| ํต์ | IPC (Inter-Process Communication) ํ์ | ๊ณต์ ์์์ ํตํด ์ง์ ํต์ ๊ฐ๋ฅ |
| ์ปจํ
์คํธ ์ค์์นญ | ๋น์ฉ์ด ํฌ๊ณ ๋ฌด๊ฑฐ์ | ๋น์ฉ์ด ์ ๊ณ ํจ์จ์ ์ |
| ๋
๋ฆฝ์ฑ | ๋์ (ํ๋์ ๋ฌธ์ ๊ฐ ์ ์ฒด์ ์ํฅ ์ ์) | ๋ฎ์ (ํ๋์ ๋ฌธ์ ๊ฐ ์ ์ฒด ํ๋ก์ธ์ค์ ์ํฅ ์ค ์ ์์) |
๋ชฉ์ฐจ
1. ํ๋ก์ธ์ค์ ์ค๋ ๋ ๊ฐ๋
์ ๋ฆฝ ๋ฐ ์ฉ์ด ์ ๋ฆฌ

- ๋ฉด์ ์ํฉ ๊ฐ์ ๋ฐ ์ฃผ์ ์ฌํญ ์ ์
- ํ๋ก์ธ์ค์ ์ค๋ ๋ ๋น๊ต๋ ๋ฉด์ ๋จ๊ณจ ์ง๋ฌธ์ด๋ฉฐ, ๋ต๋ณ ์ ์ฉ์ด ํผ๋์ ๋น ์ง๊ธฐ ์ฝ๋ค
- ์ฃผ์ํด์ผ ํ ์ํฉ์ ์ฉ์ด์ ๋น ์ง์ง ์๊ณ ๋จ์ด๋ค์ ํผ๋ํด์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด๋ค
- ํ๋ก์ธ์ค ์ค๋ช
์ ๋ฉํฐ, ์ด๋ธ, ํ๋ก์ธ์ค, ์ค๋ ๋, ์ฝ์ด ๋ฑ ๋น์ทํ ์๋ฏธ๋ฅผ ๊ฐ์ง ๋จ์ด๋ค์ด ๋ง์ด ๋ฑ์ฅํ๋ค
- '๋์์'๋ผ๋ ๊ฐ๋
์ด ํ์ ์ดํดํ๋ ๊ฒ์ฒ๋ผ ํ์๊ฐ์ ์ฌ๋ฌ ๊ฐ์ง ์ผ์ด ์ผ์ด๋๋ ๊ฒ์ด ์๋๋ผ๋ ์ ๋ ํผ๋์ค๋ฌ์์ ๊ฐ์ค์ํจ๋ค
- ๋ฐํ๋ฅผ ์ํ ํต์ฌ ์ฉ์ด ์ ์
- ์คํ ๋จ์: ํ๋ก์ธ์ค์ ์ค๋ ๋๋ฅผ ๋ชจ๋ ํฌํจํ๋ ๊ฐ๋
์ผ๋ก, 1 CPU ์ฝ์ด์ ํ ์๊ฐ์ ํ ๊ฐ์ฉ ์ ์ฌ๋๋ ๊ฒ์ ์๋ฏธํ๋ค
- ํ๋ก์ธ์ค (๋ถ์ฐ ์ค๋ช
์์ ์): ๋จ ํ๋์ ์ค๋ ๋๋ง ๊ฐ์ง๊ณ ์๋ ๋จ์ผ ์ค๋ ๋ํ๋ก์ธ์ค๋ฅผ ์๋ฏธํ๋ฉฐ, ํ๋ก์ธ์ค์ ์ค๋ ๋๊ฐ ์์ ํ ๋ค๋ฅธ ๋ฌด์ธ๊ฐ๊ฐ ์๋์ ๊ฐ์กฐํ๋ค
- ๋์์/๋์์ฑ: ํ ์๊ฐ์ ์ฌ๋ฌ ๊ฐ์ง ์ผ์ด ์ฒ๋ฆฌ๋๋ ๊ฒ์ด ์๋๋ผ, ์ฌ๋ฌ ๊ฐ์ง๊ฐ ๋น ๋ฅด๊ฒ ์ ํ๋๋ฉด์ ๋์์ ์ผ์ด๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ํ์์ ์๋ฏธํ๋ค
2. ํ๋ก๊ทธ๋จ์ด ํ๋ก์ธ์ค๊ฐ ๋๋ ๊ณผ์ ๋ฐ ์คํ ์๋ฆฌ

- ํ๋ก๊ทธ๋จ๊ณผ ํ๋ก์ธ์ค์ ์ ์
- ํ๋ก๊ทธ๋จ์ ํผ์ ๋ ์ํผ๊ฐ ์ ํ ์ข
์ด์ ๊ฐ์ผ๋ฉฐ, ์คํ์ํค๊ธฐ ์ ์๋ ์ฝ๋๊ฐ ๊ตฌํ๋ ํ์ผ์ผ ๋ฟ์ด๋ค
- ํ๋ก์ธ์ค๋ ์ข
์ด ๋ ์ํผ๊ฐ ๋จน์ ์ ์๋ ํผ์๊ฐ ๋๋ ๊ฒ์ฒ๋ผ, ํ๋ก๊ทธ๋จ์ด ์คํ๋์ด ์ฌ์ฉํ ์ ์๋ ๋ฌด์ธ๊ฐ๊ฐ ๋ ์ํ๋ฅผ ์๋ฏธํ๋ค
- ํ๋ก์ธ์ค ์์ฑ ์ ๋ฐ์ํ๋ ์ผ (๋ฉ๋ชจ๋ฆฌ ํ๋ณด ๋ฐ PCB ์์ฑ)
- ํ๋ก์ธ์ค๊ฐ ํ์๋ก ํ๋ ์ฌ๋ฃ๋ค์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ค
- ์คํ ๋ช
๋ น์ ํฌํจํ ์ฝ๋ ์์ญ
- ์คํํฑ์ด๋ ๊ธ๋ก๋ฒ ๋ณ์๋ฅผ ๋ด๋ ๋ฐ์ดํฐ ์์ญ
- ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ํ ํ ์์ญ
- ์ง์ญ ๋ณ์, ๋งค๊ฐ ๋ณ์ ๋ฑ์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ์คํ ์์ญ์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ณดํ๋ค
- ํด๋น ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๋ PCB(Process Control Block) ๋ธ๋ก์ด ํจ๊ป ๋ง๋ค์ด์ง๋ค
- PCB์๋ ํ๋ก์ธ์ค์ ์ํ(์ค๋น/๋๊ธฐ ์ํ), ํ ๊ตฌํ์ ์ํ ํฌ์ธํฐ, ํ์ฌ ํ๋ก์ธ์ค ์ํ(Process State), ๊ณ ์ ๋ฒํธ(PID), ๋ค์ ๋ช
๋ น์ด๋ฅผ ๊ฐ๋ฆฌํค๋ ํ๋ก๊ทธ๋จ ์นด์ดํฐ ๋ฑ ๋ง์ ์ ๋ณด๊ฐ ๋ค์ด ์๋ค
- ๋ค์ ํ๋ก์ธ์ค์ ๋์ ์คํ ์๋ฆฌ (์๋ถํ ๋ฐ ์ปจํ
์คํธ ์ค์์นญ)
- ๋๋ถ๋ถ์ ์ฌ๋๋ค์ ์ฌ๋ฌ ๊ฐ์ง ํ๋ก์ธ์ค๋ฅผ ๋์์ ์ฌ์ฉํ๊ณ ์ถ์ด ํ๋ค (์: ์ ํ๋ธ, ์ธํ
๋ฆฌJ, ์ฌ๋, ํฌ๋กฌ, ์นด์นด์คํก ๋์ ์ฌ์ฉ)
- ์๋๋ ํ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๊ณ ์์ผ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์คํ ์ํ์ ์์ ์ ์๋ค
- ๋ค์์ ํ๋ก์ธ์ค๋ฅผ ๋์์ ์คํํ๊ธฐ ์ํด, ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ์๋ถํ (์งง์ ํ
)๋ก ๋ฐ๋ณตํ๋ฉด์ ์ ํ ์คํ์ํจ๋ค
- ์ปจํ
์คํธ ์ค์์นญ(Context Switching) ๊ณผ์ :
- ํ๋ก์ธ์ค 1์ด ์คํ ์ํ์์ ์ค๋น ์ํ๋ก ๋ด๋ ค๊ฐ๋ค
- ํ๋ก์ธ์ค 2๊ฐ CPU์ ์ ์ฌ๋์ด ์คํ ์ํ๊ฐ ๋๋ค
- ํ๋ก์ธ์ค 2๊ฐ ๋ค์ ์ค๋น ์ํ๋ก ๋ค์ด๊ฐ๊ณ , ํ๋ก์ธ์ค 1์ด CPU์ ์ฌ๋ผ์ ์คํ๋๋ค
- ์ปจํ
์คํธ ์ค์์นญ์ ๋จ 2๊ฐ์ ํ๋ก์ธ์ค๋ง์ผ๋ก๋ ๊ต์ฅํ ํผ๊ณคํ๊ณ ํ๋ ์์
์ด๋ค
3. ์ค๋ ๋์ ๋ฑ์ฅ๊ณผ ์ปจํ
์คํธ ์ค์์นญ ๋น์ฉ ์ ๊ฐ

- ์ค๋ ๋์ ์ ์ ๋ฐ ๊ฒฝ๋ํ๋ ํ๋ก์ธ์ค
- ์ค๋ ๋๋ ์ปจํ
์คํธ ์ค์์นญ์ ๋ถ๋ด์ ์ค์ด๊ธฐ ์ํด ๋ฑ์ฅํ ๊ฒฝ๋ํ๋ ํ๋ก์ธ์ค์ ๋ฒ์ ์ด๋ค
- ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ๊ฐ์ง ๋, ์ค๋ ๋๋ค์ ์ฝ๋, ๋ฐ์ดํฐ, ํ ์์ญ์ ๊ณตํต๋ ์์์ผ๋ก ๊ณต์ ํ๋ค
- ๊ฐ ์ค๋ ๋๋ ์คํ ์์ญ๋ง ๋ฐ๋ก ๊ฐ์ง๊ณ ์๋ค
- ์ค๋ ๋์ ํจ์จ์ฑ ๋ฐ ์ปจํ
์คํธ ์ค์์นญ ๋น์ฉ ์ ๊ฐ
- ์์์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ํจ์จ์ ์ด๋ค
- ์ปจํ
์คํธ ์ค์์นญ์ด ์ผ์ด๋ ๋ ์บ์ฑ ์ ์ค๋ฅ ์ด ์ฌ๋ผ๊ฐ๋ค (๋ชจ์กฐ๋ฆฌ ๋ค ๋นผ๊ณ ๋ค์ ๋ฃ์ ํ์๊ฐ ์๋ค)
- ํ๋ก์ธ์ค ์ปจํ
์คํธ ์ค์์น๋ ๊ณต์ฉ ์์(TV, ์คํผ์ปค, ๋ฆฌ๋ชจ์ปจ)๊น์ง ๋ชจ์กฐ๋ฆฌ ์ฑ๊ฒจ ๋๊ฐ๋ค๊ฐ ๋ค์ ํ์ด ๋ค์ ์ฑ๊ฒจ ๋ค์ด์์ผ ํ๋ ๊ฒ๊ณผ ๊ฐ๋ค
- ์ค๋ ๋ ์ปจํ
์คํธ ์ค์์น๋ ๊ณต์ฉ์ผ๋ก ์ฌ์ฉํ ๊ฒ๋ค์ ๋๊ณ ๊ฐ์ธ ๋
ธํธ๋ถ๋ง ๊ฐ์ง๊ณ ์์ ์ฐ๊ฒฐํ๋ฉด ๋๋ ๊ฒ๊ณผ ๊ฐ์ ํจ์ฌ ๊ฐ๋จํ๊ณ ๋ถ๋ด์ด ์ ๋ค
4. ๋ฉํฐ ํ๋ก์ธ์ค์ ๋ฉํฐ ์ค๋ ๋์ ๋น๊ต ๋ฐ ์ฐจ์ด์

- ๋ฉํฐ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ ์
- ๋ฉํฐ ํ๋ก์ธ์ค์ ๋ฉํฐ ์ค๋ ๋๋ ๋ชจ๋ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ผ์ข
์ด๋ฉฐ, ํ๋์ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ํ ์ฒ๋ฆฌ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํด์ผ ํ๋ค
- ๋จ์ํ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ ์ผ ๋์ ๊ฒ์ ๋ฉํฐ ํ๋ก์ธ์ค๋ผ๊ณ ์ ์ํ๋ฉด ๋ฉํฐ ์ค๋ ๋์ ๋น๊ตํ๊ธฐ ์ด๋ ต๋ค
- ๋ฉํฐ ํ๋ก์ธ์ค ์ฒ๋ฆฌ ๋ฐฉ์
- ํ ํ๋ก์ธ์ค๋ ๋งค๋ฒ ํ๋์ ๋ก๊ทธ์ธ์ ์ฒ๋ฆฌํ ์ ์์ด ๋์ ์ฒ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค (์: ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ์์ฒญํ๋ ์ํฉ)
- ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ํฌํฌ(fork)๋ฅผ ํด์ ์์ ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋ค์ด์ ์ผ์ ์ฒ๋ฆฌํ๋๋ก ํ๋ค
- ์ด๋ ์์ ํ๋ก์ธ์ค๋ ๋ถ๋ชจ์ ๋ณ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ๋ณดํ๊ฒ ๋๋ค
- ๋ฉํฐ ์ค๋ ๋ ์ฒ๋ฆฌ ๋ฐฉ์
- ์ค๋ ๋๋ ํ ํ๋ก์ธ์ค ๋ด์์ ๊ตฌ๋ถ์ด ์ง์ด์ง ์คํ ๋จ์์ด๋ค
- ๋ง์ฝ ํ๋ก์ธ์ค๊ฐ ๋จ์ผ ์ค๋ ๋๋ก ๊ตฌ๋ถ๋์ด ์์ง ์์ผ๋ฉด, ํด๋น ํ๋ก์ธ์ค์ ํ๋๋ฐ์ ์๋ ์ค๋ ๋๊ฐ ์คํ ๋จ์๊ฐ ๋๋ค
- ํ๋ก์ธ์ค ๋ด์์ ๋ถ๋ฆฌํ์ฌ ์ฌ๋ฌ ์ค๋ ๋๋ก ๋๋์ด ์คํ ๋จ์๊ฐ ๋ง์์ง๋ฉด ๊ทธ๊ฒ์ด ๋ฉํฐ ์ค๋ ๋๊ฐ ๋๋ค
- ํ๋์ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ํ ์์
๋จ์๊ฐ ๋๋์ด์ง ๋ (์: ์ฝ๋ ์์ , ์ถ์ฒ ์ฝ๋ ํ์, ํ
์คํธ ์คํ, ์ค์ฟผ๋ ์ ์ก), ๊ฐ๊ฐ์ ์ค๋ ๋๊ฐ ๊ทธ ์์
๋ค์ ๋ด๋นํ๋ค
- ๋ฉํฐ ํ๋ก์ธ์ค์ ๋ฉํฐ ์ค๋ ๋์ ์ฅ๋จ์ ๋น๊ต
- ๋ฉํฐ ํ๋ก์ธ์ค:
- ๋
๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ IPC(Inter-Process Communication)๋ฅผ ํตํด์๋ง ํต์ ํด์ผ ํ๋ค (๋ ๋ช
์ด ๋ค๋ฅธ ํ์์ค์์ ๋
ผ์ํ ์ผ์ด ์๊ธฐ๋ฉด ๋ฐ์ผ๋ก ๋์ ์ด์ผ๊ธฐํด์ผ ํจ)
- ์์์ด ์๋ชจ์ ์ด๊ณ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ์ฐจ์งํ๋ค
- ์ปจํ
์คํธ ์ค์์นญ ๋น์ฉ์ด ํฌ๋ค
- ๋
๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ๋๊ธฐํ ์์
์ ์ ๊ฒฝ์ ๋ ์จ๋ ๋๋ค
- ๋ฉํฐ ์ค๋ ๋:
- ๊ณต์ ์์์ด ๋ง์ผ๋ฏ๋ก ๊ธด๋ฐํ๊ฒ ์ฐ๊ฒฐ๋์ด ์๋ค
- ๋๊ธฐํ์ ์ ๊ฒฝ ์จ์ผ ํ๋ค
- ๊ณต์ ์์์ผ๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ๊ฐ ํจ์จ์ ์ด๊ณ ํต์ ๋ณ๋ชฉ์ด ์ ๊ฐ๋๋ค (๋ ๋ช
์ด ํ ํ์์ค์ ์์ ๋ง๋ง ๊ฑธ๋ฉด ๋จ)
- ์ปจํ
์คํธ ์ค์์น ๋น์ฉ์ด ์ ๋ค
- ์ค์ ์ ์ฉ ์ฌ๋ก (์ต์คํ๋ก๋ฌ vs ํฌ๋กฌ)
- ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ (๋ฉํฐ ์ค๋ ๋): ๊ธด๋ฐํ๊ฒ ์ฐ๊ฒฐ๋์ด ์์ด ํ ์ค๋ ๋(1 ํญ)์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ์ ์ฒด ํ๋ก์ธ์ค์ ์ํฅ์ด ๊ฐ๋ค (์ค๋ฅ ํ๋ฉด ๋ฐ์ ์ ์ฐฝ ์ ์ฒด๊ฐ ๊ฑฐ๋ ๋ ์ ์์)
- ๊ตฌ๊ธ ํฌ๋กฌ (๋ฉํฐ ํ๋ก์ธ์ค): ๋ค์ ๋นํจ์จ์ ์ผ ์ ์์ง๋ง, ๋ฉํฐ ํ๋ก์ธ์๋ฅผ ์ด์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฉํฐ ํญ ๊ฐ์ ์ํฅ์ ๋ ๋ฐ๋๋ค
4-1. ๋ฉํฐ ํ๋ก์ธ์ค์ ํต์ ๋ฐฉ์: IPC (Inter-Process Communication)
์๋ฃ์์๋ ๋ฉํฐ ํ๋ก์ธ์ค(Multi-process)๊ฐ ์๋ก ๋
๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ํต์ ์ ์ํด ipc๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๊ณ ์ธ๊ธํฉ๋๋ค. ipc๋ ๋
๋ฆฝ๋ ํ๋ก์ธ์ค๋ค์ด ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณ ํ๋ ฅํ ์ ์๋๋ก ๋๋ ์ด์์ฒด์ ์ ํต์ฌ ๋ฉ์ปค๋์ฆ์
๋๋ค.
- IPC์ ์ ์์ ํ์์ฑ:
- IPC๋ Inter-Process Communication์ ์ฝ์๋ก, ์๋ก ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์ ์คํ๋๋ ๋
๋ฆฝ์ ์ธ ํ๋ก์ธ์ค๋ค์ด ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ฑฐ๋ ์์
์ ๋๊ธฐํํ ์ ์๋๋ก ํ๋ ํต์ ๊ธฐ์ ์
๋๋ค.
- ํ๋ก์ธ์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋
๋ฆฝ๋ ๊ณต๊ฐ(๋ฉ๋ชจ๋ฆฌ)์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ๋ง์น ์๋ก ๋ค๋ฅธ ํ์์ค์ ์๋ ํ์๋ค์ฒ๋ผ ์ง์ ๋ํํ ์ ์์ด ๋ณ๋์ ํต์ ์๋จ์ด ํ์ํฉ๋๋ค.
- ์ฃผ์ IPC ํต์ ๋ฐฉ์ (๋น์ ๋ฅผ ํตํด ์ดํดํ๊ธฐ):
- IPC๋ ํฌ๊ฒ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ฐฉ์๊ณผ ๋ฉ์์ง ์ ๋ฌ ๋ฐฉ์์ผ๋ก ๋๋ฉ๋๋ค.
| IPC ๋ฐฉ์ | ์ค๋ช
| ์ํ ์ ๋น์ |
|---|
| ๊ณต์ ๋ฉ๋ชจ๋ฆฌ (Shared Memory) | ํ๋ก์ธ์ค๋ค์ด ํน์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํ์ฌ ์ง์ ์ฝ๊ณ ์ฐ๋ ๋ฐฉ์. ๊ฐ์ฅ ๋น ๋ฆ. | ๊ณต๋์ผ๋ก ์ฌ์ฉํ๋ ํ์ดํธ๋ณด๋์ ๋ฉ๋ชจ๋ฅผ ๋จ๊ธฐ๋ ๊ฒ. |
| ๋ฉ์์ง ์ ๋ฌ (Message Passing) | ์ด์์ฒด์ ์ ์ปค๋์ ํตํด ๋ฉ์์ง(๋ฐ์ดํฐ)๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์. | ์ฐ์ฒดํต(๋ฉ์์ง ํ)์ด๋ ์ ํ(์์ผ)๋ฅผ ํตํด ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ. |
- IPC์ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ ๋ฐฉ๋ฒ:
- ํ์ดํ(Pipe): ํ์ชฝ์ผ๋ก๋ง ๋ฐ์ดํฐ๊ฐ ํ๋ฅด๋ ๋จ๋ฐฉํฅ ํต์ ์ฑ๋ (์: ์ต๋ช
ํ์ดํ, ์ด๋ฆ ์๋ ํ์ดํ/FIFO).
- ์์ผ(Socket): ๋คํธ์ํฌ๋ฅผ ํตํด ํต์ ํ๋ ๋ฐฉ์์ผ๋ก, ๊ฐ์ ์ปดํจํฐ๋ฟ ์๋๋ผ ๋ค๋ฅธ ์ปดํจํฐ ๊ฐ์ ํต์ ์๋ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ฉ์์ง ํ(Message Queue): ๋ฉ์์ง๋ฅผ ์ ์ฅํด๋๋ ๊ณต๊ฐ์ ๋ง๋ค์ด, ํ๋ก์ธ์ค๊ฐ ์ํ๋ ์์ ์ ๋ฉ์์ง๋ฅผ ๊บผ๋ด ์ฝ์ ์ ์๊ฒ ํฉ๋๋ค.

5. ๋ฉํฐ ์ฝ์ด์ ๋์์ฑ/๋ณ๋ ฌ์ฑ์ ์ฐจ์ด

- ๋ฉํฐ ์ฝ์ด์ ๊ด์ (ํ๋์จ์ด)
- ๋ฉํฐ ์ฝ์ด๋ ๋ฉํฐ ํ๋ก์ธ์ค/๋ฉํฐ ์ค๋ ๋์ ํท๊ฐ๋ฆฌ๊ธฐ ์ฌ์ฐ๋ฉฐ, ์ด๋ฆ๋ ๋น์ทํ๊ณ ๋ฌด์ธ๊ฐ๋ฅผ ๋์์ ์ฒ๋ฆฌํด์ค ์ ์๋ ๋๋์ด ๋ ๋ค
- ๋ฉํฐ ํ๋ก์ธ์ค/๋ฉํฐ ์ค๋ ๋๊ฐ ์ํํธ์จ์ด ๋ถ์ผ์ ์ฒ๋ฆฌ ๋ฐฉ์์ด๋ผ๋ฉด, ๋ฉํฐ ์ฝ์ด๋ ํ๋์จ์ด ์ธก๋ฉด์ ๊ฐ๊น๋ค
- ๋์์ฑ(Concurrency)์ ๊ฐ๋
- ์ฑ๊ธ ์ฝ์ด๋ฅผ ๊ฐ์ง CPU๊ฐ ์ฌ๋ฌ ์คํ ๋จ์๋ฅผ ์ฒ๋ฆฌํ ๋, ๋น ๋ฅธ ํ
์ผ๋ก ์ ํ๋๋ฉด์ ์คํ๋๋ ๊ฐ๋
์ด ๋์์ฑ์ด๋ค
- ์ฌ๋ฌ ์คํ ๋จ์๋ฅผ ๋ฒ๊ฐ์ ์คํํ๋ฉด์ ๋์์ ์ผ์ด๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ ๊ฒ์ด๋ค
- ๋์์ฑ์ ์งง์ ์๊ฐ์ CPU ์๊ฐ์ ๋ถํ ํด์ ๋์์ ํ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ค
- ๋ณ๋ ฌ์ฑ(Parallelism)์ ๊ฐ๋
- ๋ฉํฐ ์ฝ์ด๋ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค
- ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฌ๋ฌ ์ฝ์ด๋ฅผ ์ฌ์ฉํด์ ๋ค์์ ์คํ ๋จ์๋ฅผ ํ ์๊ฐ์ ๋์์ ์ฒ๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ๊ฒ์ด๋ค
- ํ๊บผ๋ฒ์ ๋ ๊ฐ์ ์ฝ์ด์์ ๊ฐ๊ฐ ์คํ ๋จ์๊ฐ ๊ฐ์ด ์งํ๋ ์ ์๋ค
- ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ ๋ค์์ ํ๋ก์ธ์๋ก ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ๊ฐ์ด ์งํํ๋ ๊ฒ์ด๋ค
6. ๋ฆฌ๋
์ค ์ปค๋์์์ ํ๋ก์ธ์ค์ ์ค๋ ๋ ์ฒ๋ฆฌ ๋ฐฉ์ (๋ฒ์ธ)

- ๋ฆฌ๋
์ค์ปค๋์ ๊ด์
- "๋ฆฌ๋
์ค์์๋ ํ๋ก์ธ์ค์ ์ค๋ ๋๋ฅผ ๋์ผํ๊ฒ ๋ด
๋๋ค"๋ผ๋ ํํ์ ์ดํดํ๊ธฐ ์ด๋ ค์ด ํํ์ด๋ค
- ์ด ๋ฌธ์ฅ์ "๋ฆฌ๋
์ค์ปค๋์์๋ ํ๋ก์ธ์ค์ ์ค๋ ๋๋ฅผ ๋์ผํ๊ฒ ๋ด
๋๋ค"๋ก ๊ณ ์ณ์ ์ดํดํด์ผ ํ๋ค
- ์ค๋ ๋ ๋ชจ๋ธ๊ณผ ๋ผ์ดํธ์จ์ดํธ ํ๋ก์ธ์ค
- ์ค๋ ๋๋ ์ฌ์ฉ์ ์ค๋ ๋์ ์ปค๋ ์ค๋ ๋๋ก ๋๋๋ค (๊ฐ๊ฐ ์ฌ์ฉ์ ๋ ๋ฒจ๊ณผ ์ปค๋ ๋ ๋ฒจ์์ ๋ด๋น)
- ์ฌ์ฉ์ ์ค๋ ๋์ ์ปค๋ ์ค๋ ๋ ๊ฐ์๋ ์ฐ๊ด ๊ด๊ณ๊ฐ ์กด์ฌํ๋ฉฐ, ์ฌ๋ฌ ๊ฐ์ง ๋ชจ๋ธ(1๋1, ๋ค๋1, ๋ค๋๋ค)์ด ์๋ค
- ๋ฆฌ๋
์ค๋ 1๋1 ๋ชจ๋ธ์ ์ฑํํ๋ฉฐ, ํ๋์ ์ฌ์ฉ์ ์ค๋ ๋๋น ์ปค๋ ์ค๋ ๋๊ฐ ํ๋ ๋งค์นญ๋๋ค
- ๋ฆฌ๋
์ค์ปค๋ ์
์ฅ์์๋ ๊ฐ๊ฐ์ ์ค๋ ๋๊ฐ ํ๋์ ํ๋ก์ธ์ค์ฒ๋ผ ํํ๋๋ค
- ์ด ํ๋ก์ธ์ค๋ค์ ์ด์ ์ ์๊ฐ๋ ํ๋ก์ธ์ค์ ๋ฌ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๋ฉฐ, ์ด๋ฅผ ๋ผ์ดํธ์จ์ดํธ ํ๋ก์ธ์ค(Lightweight Process, LWP)๋ผ๊ณ ๊ตฌ๋ถํ์ฌ ๋ถ๋ฅธ๋ค
- ID์ ๊ด์ ์ฐจ์ด (PID, TGID, TID)
- ๋ฆฌ๋
์ค์์ ์์ฑ๋ ์ค๋ ๋๋ ๋ชจ๋ ๊ฐ์ PID(ํ๋ก์ธ์ค ๊ณ ์ ๋ฒํธ)๋ฅผ ๊ฐ์ง๊ณ ์๋ค
- ๋ ์์ธํ ๋ค์ฌ๋ค๋ณด๋ฉด TGID(์ค๋ ๋ ๊ทธ๋ฃน ID)์ TID(์ค๋ ๋ ID)๊ฐ ์กด์ฌํ๋ค
- ์ฌ์ฉ์ ๋ ๋ฒจ์์๋ TGID๊ฐ PID๋ก ๋ณด์ฌ์ง๋ค
- ์ปค๋ ๋ ๋ฒจ์์๋ TID๊ฐ PID๋ก ์ธ์๋๋ค
- ๊ด์ ์ ๋ค๋ฅด๊ฒ ํด์ ์ดํดํด์ผ ํ๋ฉฐ, ์ปค๋ ์
์ฅ์์๋ ๊ฐ๊ฐ์ด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋ณด์ด๊ฒ ๋๋ ๊ฒ์ด๋ค
6-1. ๋ฆฌ๋
์ค์ ํน๋ณํ ์ค๋ ๋ ๊ตฌํ: ๊ฒฝ๋ ํ๋ก์ธ์ค (LWP)
์๋ฃ์ ํ๋ฐ๋ถ์์๋ "๋ฆฌ๋
์ค์ปค๋์์๋ ํ๋ก์ธ์ค์ ์ค๋ ๋๋ฅผ ๋์ผํ๊ฒ ๋ด
๋๋ค."๋ผ๋ ๋ค์ ํผ๋์ค๋ฌ์ด ๋ฌธ์ฅ์ ์ค๋ช
ํ๋ฉฐ ๊ฒฝ๋ ํ๋ก์ธ์ค(Light-weight Process, LWP) ๊ฐ๋
์ ์๊ฐํฉ๋๋ค.
- LWP์ ์ ์:
- LWP๋ Light-weight Process์ ์ฝ์๋ก, ์ปค๋(์ด์์ฒด์ ์ ํต์ฌ)์ด ์ค์ผ์ค๋งํ๋ ์คํ ๋จ์๋ฅผ ์๋ฏธํฉ๋๋ค.
- ์ ํต์ ์ธ ์ ๋์ค ์์คํ
(Solaris ๋ฑ)์์๋ ์ฌ์ฉ์ ๋ ๋ฒจ ์ค๋ ๋์ ์ปค๋ ์ค๋ ๋ ์ฌ์ด์ LWP๋ผ๋ ์ค๊ฐ ๊ณ์ธต์ด ์กด์ฌํ์ง๋ง, ๋ฆฌ๋
์ค์์๋ ์ด ๊ฐ๋
์ด ์กฐ๊ธ ๋ค๋ฅด๊ฒ ์ ์ฉ๋ฉ๋๋ค.
- ๋ฆฌ๋
์ค์ปค๋์ ๊ด์ :
- ๋ฆฌ๋
์ค์ปค๋์ ํ๋ก์ธ์ค์ ์ค๋ ๋๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ , ๋ชจ๋ 'ํ์คํฌ(Task)'๋ผ๋ ๋์ผํ ๊ตฌ์กฐ์ฒด๋ก ๊ด๋ฆฌํฉ๋๋ค.
- ์ด๋, ์ค๋ ๋๋ ๋ถ๋ชจ ํ๋ก์ธ์ค์ ์์(๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ, ํ์ผ ๋์คํฌ๋ฆฝํฐ ๋ฑ)์ ๊ณต์ ํ๋๋ก ํน๋ณํ ์ค์ ๋ ํ๋ก์ธ์ค๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก LWP์
๋๋ค.
- ์ฆ, ๋ฆฌ๋
์ค์ปค๋ ์
์ฅ์์ ๋ณด๋ฉด, ์ผ๋ฐ ํ๋ก์ธ์ค๋ ์ค๋ ๋๋ ๋ชจ๋ ์ค์ผ์ค๋ง ๋์์ธ LWP๋ก ๋ณด์ด๋ ๊ฒ์
๋๋ค.
- LWP์ ์ค๋ ๋์ ๊ด๊ณ (1:1 ๋ชจ๋ธ):
- ๋ฆฌ๋
์ค๋ 1:1 ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ํ๋์ ์ฌ์ฉ์ ์ค๋ ๋(User Thread) ๋น ํ๋์ ์ปค๋ ์ค๋ ๋(LWP)๊ฐ ์ ํํ ๋งค์นญ๋๋ค๋ ์๋ฏธ์
๋๋ค.
- ์ฌ์ฉ์ ๋ ๋ฒจ์์ ์ค๋ ๋๋ฅผ ์์ฑํ๋ฉด, ์ปค๋์ ์ด์ ๋์ํ๋ LWP๋ฅผ ์์ฑํ๊ณ , ์ด LWP๊ฐ CPU์์ ์คํ๋๋ ๋จ์๊ฐ ๋ฉ๋๋ค.
- ์ด LWP๋ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์, ์ผ๋ฐ์ ์ธ ๋
๋ฆฝ ํ๋ก์ธ์ค(๊ฐ์ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง)์ ๊ตฌ๋ถํ๊ธฐ ์ํด ๊ฒฝ๋ ํ๋ก์ธ์ค๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์
๋๋ค.

์ด๋ฌํ ๋ฐฐ๊ฒฝ์ง์์ ํตํด, ์๋ฃ์์ ์ธ๊ธ๋ ipc์ ํ์์ฑ(๋ฉํฐ ํ๋ก์ธ์ค)๊ณผ LWP๋ฅผ ํตํ ๋ฆฌ๋
์ค์ปค๋์ ์ค๋ ๋ ์ฒ๋ฆฌ ๋ฐฉ์(๋ฉํฐ ์ค๋ ๋)์ ๋์ฑ ๋ช
ํํ๊ฒ ์ดํดํ ์ ์์ต๋๋ค.
7. ์ต์ข
์์ฝ

1. ํต์ฌ ์ค์ ํต์ฌ: ํ๋ก์ธ์ค vs. ์ค๋ ๋ (๋
๋ฆฝ์ฑ vs. ๊ณต์ )
๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ ๊ฐ๋
์ด ์์์ ์ด๋ป๊ฒ ๋ค๋ฃจ๋์ง์ ๋ํ ์ฐจ์ด์ ์ ์ดํดํ๋ ๊ฒ์
๋๋ค. ์ด ์ฐจ์ด๊ฐ ๋ฉํฐ ํ๋ก์ธ์ค์ ๋ฉํฐ ์ค๋ ๋์ ์ฅ๋จ์ ์ ๊ฒฐ์ ํฉ๋๋ค.
| ๊ตฌ๋ถ | ํ๋ก์ธ์ค (Process) | ์ค๋ ๋ (Thread) |
|---|
| ์ ์ | ์คํ๋๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋ ํ๋ก๊ทธ๋จ | ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ๊ฒฝ๋ํ๋ ์คํ ๋จ์ |
| ๋ฉ๋ชจ๋ฆฌ ๋
๋ฆฝ์ฑ | ๋
๋ฆฝ์ (๊ฐ์ ๊ณ ์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํ๋ณด) | ๊ณต์ (ํ๋ก์ธ์ค ๋ด ์์ ๊ณต์ ) |
| ๊ณต์ ์์ | ์์ (IPC๋ฅผ ํตํด ํต์ ) | ์ฝ๋, ๋ฐ์ดํฐ, ํ ์์ญ์ ๊ณต์ |
| ๊ฐ๋ณ ์์ | ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ๊ฐ๋ณ์ | ์คํ(Stack) ์์ญ๋ง ๊ฐ๋ณ์ ์ผ๋ก ๊ฐ์ง |
| ์ฅ์ | ๋
๋ฆฝ์ ์ด๋ฏ๋ก ํ๋๊ฐ ์ฃฝ์ด๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํฅ์ด ์ ์ (์: ํฌ๋กฌ) | ์์ ๊ณต์ ๋ก ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ , ํต์ ๋น์ฉ ์ ๊ฐ |
| ๋จ์ | ์์ ์๋ชจ์ , ํต์ ์ ์ํด IPC ๋น์ฉ ๋ฐ์ | ์์ ๊ณต์ ๋ก ์ธํด ๋๊ธฐํ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ (์: ์ต์คํ๋ก๋ฌ) |
์ค๋ ๋๋ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ '๊ณต์ 'ํจ์ผ๋ก์จ ํ๋ก์ธ์ค๋ณด๋ค ํจ์ฌ ํจ์จ์ ์ด๊ณ ๋น ๋ฅด๊ฒ ๋์ํ ์ ์๊ฒ ๋ฉ๋๋ค.
2. ๋์์ฑ์ ๋น๋ฐ: ์ปจํ
์คํธ ์ค์์นญ (Context Switching)
์ฐ๋ฆฌ๊ฐ ์ปดํจํฐ๋ก ์ฌ๋ฌ ์์
์ ๋์์ ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ์ด์ , ์ฆ ๋์์ฑ(Concurrency)์ ๊ฐ๋ฅํ๊ฒ ํ๋ ํต์ฌ ๋ฉ์ปค๋์ฆ์ด ๋ฐ๋ก ์ปจํ
์คํธ ์ค์์นญ์
๋๋ค.
- ์ปจํ
์คํธ ์ค์์นญ์ด๋?
- CPU๊ฐ ํ ์๊ฐ์ ํ๋์ ์คํ ๋จ์(ํ๋ก์ธ์ค ๋๋ ์ค๋ ๋)๋ง ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์, ์ฌ๋ฌ ์์
์ ๋์์ ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ ค๊ณ ์งง์ ํ
์ ๋ฐ๋ณตํ๋ฉฐ ์คํ ๋จ์๋ฅผ ๋น ๋ฅด๊ฒ ์ ํํ๋ ์์
์
๋๋ค.
- ์๋ ๋ฐฉ์:
- ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค/์ค๋ ๋์ ์ํ(Context, PCB ๋ธ๋ก ๋ฑ)๋ฅผ ์ ์ฅํ๊ณ , ๋ค์์ ์คํํ ํ๋ก์ธ์ค/์ค๋ ๋์ ์ํ๋ฅผ ๋ถ๋ฌ์ CPU์ ์ ์ฌํ๋ ๊ณผ์ ์
๋๋ค.
- ๋น์ฉ ์ฐจ์ด:
- ํ๋ก์ธ์ค ์ค์์นญ์ ๋
๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ ์ฒด๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฌ์์ผ ํ๋ฏ๋ก ๋น์ฉ์ด ํฌ๊ณ ๋ฌด๊ฒ์ต๋๋ค.
- ์ค๋ ๋ ์ค์์นญ์ ์ฝ๋, ๋ฐ์ดํฐ, ํ ์์ญ์ ๊ณต์ ํ๊ณ ์คํ๋ง ๋ฐ๊พธ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋น์ฉ์ด ํจ์ฌ ์ ๊ณ ๊ฒฝ๋ํ๋์ด ์์ต๋๋ค.
3. ํ๋์จ์ด์ ์ญํ : ๋์์ฑ vs. ๋ณ๋ ฌ ์ฒ๋ฆฌ
์ด ๋ ๊ฐ๋
์ '๋์์'๋ผ๋ ๋จ์ด ๋๋ฌธ์ ๊ฐ์ฅ ํท๊ฐ๋ฆฌ๊ธฐ ์ฝ์ง๋ง, ํ๋์จ์ด(CPU ์ฝ์ด)์ ์ ๋ฌด์ ๋ฐ๋ผ ์์ ํ ๋ค๋ฆ
๋๋ค.
| ๊ตฌ๋ถ | ๋์์ฑ (Concurrency) | ๋ณ๋ ฌ ์ฒ๋ฆฌ (Parallelism) |
|---|
| ์ ์ | ์ฌ๋ฌ ์คํ ๋จ์๋ฅผ ๋ฒ๊ฐ์ ์คํํ๋ฉฐ ๋์์ ์ผ์ด๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ ๊ฒ | ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฌ๋ฌ ์ฝ์ด๋ฅผ ์ฌ์ฉํด์ ๋ค์์ ์คํ ๋จ์๋ฅผ ํ ์๊ฐ์ ๋์์ ์ฒ๋ฆฌํ๋ ๊ฒ |
| ํ์ ์กฐ๊ฑด | ์ฑ๊ธ ์ฝ์ด CPU์์๋ ๊ฐ๋ฅ (์ปจํ
์คํธ ์ค์์นญ ์ฌ์ฉ) | ๋ฉํฐ ์ฝ์ด CPU๊ฐ ํ์ |
| ๊ด์ | ์ํํธ์จ์ด์ ์ฒ๋ฆฌ ๋ฐฉ์ (๋ฉํฐ ํ๋ก์ธ์ค, ๋ฉํฐ ์ค๋ ๋) | ํ๋์จ์ด์ ์ธก๋ฉด (๋ฉํฐ ์ฝ์ด) |
๋ฉํฐ ์ฝ์ด(ํ๋์จ์ด)๊ฐ ์์ด์ผ ๋น๋ก์ ๋ณ๋ ฌ ์ฒ๋ฆฌ(์ง์ง ๋์์ ์คํ)๊ฐ ๊ฐ๋ฅํด์ง๋ฉฐ, ๋ฉํฐ ํ๋ก์ธ์ค๋ ๋ฉํฐ ์ค๋ ๋ ๊ฐ์ ์ฒ๋ฆฌ ๋ฐฉ์(์ํํธ์จ์ด)์ ๋์์ฑ์ ๋์ด๋ ๋ฐ ๊ธฐ์ฌํฉ๋๋ค.