๐ฆ Process vs Thread ์ ๋ฆฌ ๐ฆ
Process
์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ์ธ์คํด์ค
- ํ๋ก๊ทธ๋จ ์คํ ์ ํ๋ก์ธ์ค ์์ฑ, ํ๋ก๊ทธ๋จ์ด ์คํ
- ์ด์์ฒด์ ์์์ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ
- ํ๋ก๊ทธ๋จ์ด ๋์๊ฐ๊ณ ์๋ ์ํ
์๋ฐ๋ก ๋น์ ํ์๋ฉด ํด๋์ค = ํ๋ก๊ทธ๋จ, ์ธ์คํด์ค = ํ๋ก์ธ์ค
๋ฉ๋ชจ๋ฆฌ ๊ตฌ์ฑ
์ฝ๋ ์์ญ
์คํํ ํ๋ก๊ทธ๋จ์ ์ฝ๋๊ฐ ์ ์ฅ๋๋ ๋ถ๋ถ
- Thread๋ค์ด ๊ฐ์ ์ฝ๋ ์์ญ์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์ฝ๊ธฐ ์ ์ฉ
- Thread ๊ฐ ์ด ์์ญ์ ๋ํ ๋๊ธฐํ๊ฐ ํ์ํ์ง ์์
๋ฐ์ดํฐ ์์ญ
์ ์ญ ๋ณ์ ๋ฐ ์ ์ ๋ณ์๊ฐ ์ ์ฅ๋๋ ๋ถ๋ถ
- Thread๋ค์ด ๊ฐ์ Data ์์ญ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์ฝ๊ธฐ ์ ์ฉ
- Thread ๊ฐ ์ด ์์ญ์ ๋ํ ๋๊ธฐํ๊ฐ ํ์ํ์ง ์์
- ์ฌ๋ฌ Thread๊ฐ ๋์์ ์ฐ๋ ๊ฒฝ์ฐ ๋๊ธฐํ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ์ฑ ์กด์ฌ
Heap ์์ญ
๋์ ์ผ๋ก ํ ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- Thread ๊ฐ ๊ฐ์ Heap ์์ญ ๊ณต์
- ์ฌ๋ฌ Thread๊ฐ ๋์์ ์ฐ๋ ๊ฒฝ์ฐ ๋๊ธฐํ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ์ฑ ์กด์ฌ
-> ์ ์ ํ ๋๊ธฐํ ๊ธฐ๋ฒ ์ฌ์ฉํด์ผ ํจ
Stack ์์ญ
๋ฉ์๋ ํธ์ถ ์ ์ง์ญ ๋ณ์์ ๋ฐํ ์ฃผ์๊ฐ ์ ์ฅ๋๋ ์์ญ
- ํจ์ ํธ์ถ ์ ์์๋ก ์ ์ฅ
- ํจ์ ํธ์ถ์ด ๋๋๋ฉด ํด๋น ์์ญ์ ๋ฉ๋ชจ๋ฆฌ์์ ํด์
- Thread ๋ง๋ค ๋
๋ฆฝ์ ์ผ๋ก ์กด์ฌ
- Thread ๊ฐ ๊ณต์ X
- ๋๊ธฐํ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ์ฑ ์์
Multi Process
์ด์์ฒด์ ์์ ํ๋์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํด ๋์์ ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ์คํํ ์ ์๊ฒ ํ๋ ๊ธฐ์
- ๋ณดํต ํ๋์ ํ๋ก๊ทธ๋จ ์คํ์ ๋ํด ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋์ง๋ง, ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ํด ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค ์์ฑ
- ํ๋์ ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ฌ ๊ฐ์ ์์ ํ๋ก์ธ์ค๋ฅผ ์์ฑํจ์ผ๋ก์ ๋ค์ค ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ๋ ๊ตฌ์กฐ
- ํ ํ๋ก์ธ์ค(๋ถ๋ชจ ํ๋ก์ธ์ค)์ ์คํ ๋์ค ํ๋ก์ธ์ค ์์ฑ ์์คํ
์ฝ์ ํตํด ์๋ก์ด ํ๋ก์ธ์ค ์์ฑ(์์ ํ๋ก์ธ์ค)
- ๊ฐ ํ๋ก์ธ์ค๋ ๊ณ ์ ํ PID๋ฅผ ๊ฐ์ง
- ๋ถ๋ชจ ํ๋ก์ธ์ค๋ ์์ ํ๋ก์ธ์ค์ PID๋ฅผ ํตํด ์์ ํ๋ก์ธ์ค ์ ์ด
-> ๋ถ๋ชจ ํ๋ก์ธ์ค์ ํต์
- ๋ถ๋ชจ/์์ ํ๋ก์ธ์ค๋ ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋
๋ฆฝ์ ์ผ๋ก ์คํ, ๋
๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ ธ ์๋ก ๋ค๋ฅธ ์์
์คํ
ex) ์ธํฐ๋ท Tab ์ฐฝ
Tab ๋ง๋ค ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ํ๋์ Tab ์ฐฝ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํด๋ ๋ค๋ฅธ Tab์์๋ ์ ์์ ์ผ๋ก ๋ธ๋ผ์ฐ์ง ๊ฐ๋ฅ
์ฐธ๊ณ -๋ฉํฐ ํ๋ก์ธ์ค
Program
์ฝ๋ ๋ฉ์ด๋ฆฌ
- ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์ด์์ฒด์ ๊ฐ ์คํ๋๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํด์ค์ผ ์คํ ๊ฐ๋ฅ
- ํ๋ก๊ทธ๋จ ์คํํ๋ ์๊ฐ ํ์ผ์ ์ปดํจํฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๊ฒ ๋๊ณ , ์ด์์ฒด์ ๋ก๋ถํฐ ์์คํ
์์์ ํ ๋น๋ฐ์ ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ์คํ์ํด
Instance
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์ด๋ค ํด๋์ค์ ์ํ๋ ๊ฐ ๊ฐ์ฒด
ex) ๋ถ์ด๋นต ํฅ๋ถ์ด๋นต = new ๋ถ์ด๋นต();
=> ํฅ๋ถ์ด๋นต์ ๋ถ์ด๋นต์ด๋ผ๋ ํด๋์ค์ ์ํ๋ ๊ฐ์ฒด, ์ฆ ์ธ์คํด์ค
์ฐธ๊ณ -์ธ์คํด์ค
Thread
ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ์์
์ ๋จ์
- ํ๋ก์ธ์ค๋ ํ๋ ์ด์์ ์ค๋ ๋๋ฅผ ๋ฐ๋์ ํฌํจ
- ํ ํ๋ก์ธ์ค ๋ด์์ ์ฌ๋ฌ ์ค๋ ๋ ์กด์ฌํ ์ ์์ผ๋ฉฐ, ํ๋ก์ธ์ค๊ฐ ์ ๊ณตํ๋ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๊ณต์
- ํ๋ก์ธ์ค๋ณด๋ค ๋จ์ํด ์์ฑ ๋ฐ ๊ด๋ฆฌ๊ฐ ๋จ์, ๊ฐ๋ฒผ์
Java์์ Thread๋ Multi-Thread๋ฅผ ์ง์
-> ํ๋์ ํ๋ก์ธ์ค ์์ ํ ๊ฐ ์ด์์ Thread๋ฅผ ์ง์ํ๋ ๊ตฌ์กฐ
=> ๋น๋๊ธฐ์ ๋ฐ ๋ณ๋ ฌ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ ๊ฐ๋ฅ
๋ฉ๋ชจ๋ฆฌ ๊ตฌ์ฑ
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ : ๊ฐ์ ํ๋ก์ธ์ค์ ์ฝ๋ ์์ญ, ๋ฐ์ดํฐ ์์ญ, Heap ์์ญ์ ํ๋ก์ธ์ค ์์ ๋ชจ๋ ์ค๋ ๋๊ฐ ๊ณต์
- ๊ฐ๋ณ Stack : ๊ฐ Thread๋ ์์ ์ Stack์ ๊ฐ์ง
Single Thread
ํ๋์ ํ๋ก์ธ์ค ๋ด์์ ํ๋์ ์ค๋ ๋๋ง ์คํ๋๋ ๊ฒ
- ์์ฐจ ์คํ : ๊ฐ ์ค๋ ๋๊ฐ ์์๋๋ก ์คํ
- ํ๋ก๊ทธ๋จ์ด ํ๋์ ์์
๋ง ์ฒ๋ฆฌ
- ๋ค๋ฅธ ์์
์ด ์คํ๋๊ธฐ ์ ํ์ฌ ์์
์ด ์๋ฃ๋์ด์ผ ํจ
- ์ฒ๋ฆฌ๋์ด ๋ฎ์์ง
Multi Thread
ํ๋์ ํ๋ก์ธ์ค ๋ด์์ ๋์์ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ์คํ๋๋ ๊ฒ
- ๋ณํ ์คํ : ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ๋์์ ์คํ
- ์ค๋ ๋๊ฐ ๋์์ ์ฌ๋ฌ ์์
์ ์ฒ๋ฆฌํด ์์คํ
์ฑ๋ฅ ํฅ์
- ์ค๋ ๋ ๊ฐ ๊ฒฝ์์ผ๋ก ์ธํด ์์ ๊ณต์ ๋ฐ ๋๊ธฐํ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ
์ฐธ๊ณ -์ค๋ ๋
์ฐธ๊ณ -์ค๋ ๋vsํ๋ก์ธ์ค
Process vs Thread
| ๋ด์ฉ | Process | Thread |
|---|
| ์ ์ | ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ์ธ์คํด์ค | ํ๋ก์ธ์ค ๋ด ์คํ ์์
์ ๋จ์ |
| ๋ฉ๋ชจ๋ฆฌ | ์ฝ๋ ์์ญ, ๋ฐ์ดํฐ ์์ญ, Heap ์์ญ, Stack ์์ญ | Process์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ (์ฝ๋, ๋ฐ์ดํฐ, Heap)ํ๊ฑฐ๋ ๋ณต์ฌ(Stack) |
| ์คํ | ํ๋ก๊ทธ๋จ ์คํ์ผ๋ก ์คํ๋จ | ํ๋์ ํ๋ก์ธ์ค ๋ด์์ ๋
๋ฆฝ์ ์ผ๋ก ์คํ |