๐MultiProcessing
- ํ๋์ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ๊ฐ์ process๋ก ๊ตฌ์ฑํ์ฌ ๊ฐ process๋ง๋ค ํ๋์ ์์ (task)์ฉ ์ฒ๋ฆฌํ๋๋ก ํ๋ ๊ฒ
์์)
ํฌ๋กฌ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๋ค๊ณ ํด๋ณด์.
ํฌ๋กฌ ์ฐฝ์ ์ฌ๋ฌ๊ฐ ๋์ด๋ค๊ณ ํ ๋, ์ฒซ ๋ฒ์งธ ํฌ๋กฌ์ฐฝ์ ์คํ์ํค๋ process, ๋๋ฒ์งธ ํฌ๋กฌ์ฐฝ์ ์คํ์ํค๋ process, ์ธ๋ฒ์งธ ํฌ๋กฌ์ฐฝ์ ์คํ์ํค๋ process ...
์ด๋ฐ์์ผ๋ก ํฌ๋กฌ์ด๋ผ๋ ํ๋์ ํ๋ก๊ทธ๋จ์์ ์ผ์ด๋๋ ์ฌ๋ฌ๊ฐ์ ์์ ์ process๋ฅผ ์ฌ๋ฌ๊ฐ ์์ฑํ์ฌ ํ๋์ฉ ์ฒ๋ฆฌํ๋๋ก ํด์ฃผ๋ ๊ฒ..!
์ฅ์
- ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ์ ํ ๋น๋ฐ๊ธฐ ๋๋ฌธ์ process๊ฐ ์๋ก์ ์์์ ์นจํฌํ ์ ์์ → ์์ ์ฑ์ด ๋์
๋จ์
- ์์
๋์ด ๋ง์์ง๋ฉด *context switching์์์ ์ค๋ฒํค๋ ๋ฐ์ ๊ฐ๋ฅ
(process๋ค์ด ๋น ๋ฅด๊ฒ ์๋ค ๊ฐ๋ค ํ๋ ๊ณผ์ ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์๊ฐ์ด ๋ง์ด ๋ฆ)
- process๊ฐ ์์ ๊ณต์ ๊ฐ ์ด๋ ต๋ค
*context switching : ํ๋์ process๊ฐ cpu๋ฅผ ์ฌ์ฉ์ค์ธ ์ํ์์ ๋ค๋ฅธ process๊ฐ cpu๋ฅผ ์ฌ์ฉํ๋๋กํ๊ธฐ ์ํด ์ด์ ์ process์ํ๋ฅผ ๋ณด๊ดํ๊ณ ์๋ก์ด process์ ์ํ๋ฅผ ์ ์ฌํ๋ ์์ (์ด process state์ ๋ณด๋ Process Control Block์ ์ ์ฅ๋๋ค)
๐Multithreading
- ํ๋์ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ๊ฐ์ thread๋ก ๊ตฌ์ฑํ์ฌ ๊ฐ thread๋ง๋ค ํ๋์ ์์ (task)์ฉ ์ฒ๋ฆฌํ๋๋ก ํ๋ ๊ฒ
์์)
1. ์น ๋ธ๋ผ์ฐ์
- ํ๋ฉด์ ์ถ๋ ฅํ๋ thread + ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ thread
2. ์๋ ํ๋ก์ธ์
- ํ๋ฉด์ ์ถ๋ ฅํ๋ thread + ํค๋ณด๋ ์ ๋ ฅ์ ๋ฐ๋ thread + ์ฒ ์/๋ฌธ๋ฒ์ ํ์ธํ๋ thread
์ฅ์
- thread๊ฐ code, data, heap์์ญ ๊ณต์ → context switching์ด ๋น ๋ฆ
- process๋ฅผ ์์ฑํด์ ์์์ ํ ๋นํ๋ ๊ฒ์ด ์๋๋ฏ๋ก ์์ฑ/์ข ๋ฃ ์๊ฐ๋ process๋ณด๋ค ๋น ๋ฆ
- process๊ฐ ํต์ ์ ๊น๋ค๋กญ์ง๋ง thread๋ค์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ํต์ ๋ฐฉ๋ฒ์ด ํจ์ฌ ๊ฐ๋จ (stack์์ญ ์ ์ธ)
๋จ์
- ์ค๊ณ๊ฐ ๊น๋ค๋กญ๋ค stack์์ญ๋ง ๋นผ๊ณ ๊ณต์ ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ์์๊ณต์ ์ ๋ฌธ์ ๊ฐ ์๊น(๋๊ธฐํ๋ฌธ์ )
์: heap์์ญ์ ์์์ A thread๊ฐ ์ ๊ทผํ๋ ค๊ณ ํ๋๋ฐ B๊ฐ ๊ฐ์๊ธฐ ์ ๊ทผํด์ ์์ ํ๋ ๊ฒฝ์ฐ
- ๋ ๋ฆฝ์ ์ด์ง ์๊ธฐ ๋๋ฌธ์ ํ๋์ thread๊ฐ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ์ ์ฒด thread๊ฐ ์ํฅ์ ๋ฐ์
๐iOS์์์ multiprocess & multithreading
- ios์์๋ multithread๋ฅผ ์ง์ํ๋ค!!!!
-> swift์์ thread๊ด๋ จ ์์
์ GCD๋ฅผ ํตํด์ ์ฒ๋ฆฌ๋จ
- UI ๊ด๋ จ ์์ ๋ค์ main thread์์ ๊ตฌํ๋์ด์ผ ํจ
process์ thread์ ์ฐจ์ด๋ฅผ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด??
๐๐๐
'Computer Science > ๊ฐ๋ฐ์๋ผ๋ฉด ์์์ผํ๋ ๊ธฐ๋ณธ์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] Process์ thread์ ์ฐจ์ด (program vs process vs thread) (0) | 2022.04.01 |
---|