Multithread and Multiprocess
Multithreading
Multithreading์ ์ฅ์
Process๋ฅผ ์ด์ฉํ์ฌ ๋์์ ์ฒ๋ฆฌํ๋ ์ผ์ thread๋ก ๊ตฌํํ ๊ฒฝ์ฐ, memory ๊ณต๊ฐ๊ณผ system ์์ ์๋ชจ๊ฐ ์ค์ด๋ค๊ฒ ๋๋ค
Thread ๊ฐ์ ํต์ ์ด ํ์ํ ๊ฒฝ์ฐ์๋ ๋ณ๋์ ์์์ ์ด์ฉํ๋ ๊ฒ์ด ์๋๋ผ, ์ ์ญ ๋ณ์์ ๊ณต๊ฐ ๋๋ ๋์ ์ผ๋ก ํ ๋น๋ ๊ณต๊ฐ์ธ
Heap ์์ญ
์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค๊ทธ๋ ๊ธฐ ๋๋ฌธ์ process ๊ฐ ํต์ ๋ฐฉ๋ฒ์ ๋นํด thread๊ฐ ํต์ ๋ฐฉ๋ฒ์ด ํจ์ฌ ๊ฐ๋จํ๋ค
Thread์
context switch
๋ process์context switch
์๋ ๋ฌ๋ฆฌ ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋น์ธ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ ๋น ๋ฅด๋ค๋ฐ๋ผ์ ์์คํ ์ throughput (์ฒ๋ฆฌ๋)์ด ํฅ์๋๊ณ ,
์์ ์๋ชจ๊ฐ ์ค์ด๋ค๋ฉฐ,
์์ฐ์ค๋ฝ๊ฒ ํ๋ก๊ทธ๋จ์ ์๋ต์๊ฐ์ด ๋จ์ถ๋๋ค
์ด๋ฌํ ์ฅ์ ๋๋ฌธ์ ์์ ๋ค์ ํ๋์ process์์ thread๋ก ๋๋ ์ํํ๋ค
Multithreading์ ๋ฌธ์ ์
Multi-process
๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ ํ ๋๋ process ๊ฐ์ ๊ณต์ ํ๋ ์์์ด ์๊ธฐ ๋๋ฌธ์ ๋์ผํ ์์์ ๋์์ ์ ๊ทผํ ์ผ์ด ์์ง๋ง,multi-threading
์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ์ ํ ๋๋ ์ด ๋ถ๋ถ์ ์ ๊ฒฝ์จ์ค์ผ ํ๋ค์๋ก ๋ค๋ฅธ thread๊ฐ data์ heap ์์ญ์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ค thread๊ฐ ๋ค๋ฅธ thread์์ ์ฌ์ฉ์ค์ธ ๋ณ์๋ ์๋ฃ๊ตฌ์กฐ์ ์ ๊ทผํ์ฌ ์๋ฑํ ๊ฐ์ ์ฝ์ด์ค๊ฑฐ๋ ์์ ํ ์ ์๋ค
๊ทธ๋์
multi-threading
ํ๊ฒฝ์์๋๋๊ธฐํ ์์
์ด ํ์ํ๋ค๋๊ธฐํ๋ฅผ ํตํด ์์ ์ฒ๋ฆฌ ์์๋ฅผ ์ปจํธ๋กคํ๊ณ , ๊ณต์ ์์์ ๋ํ ์ ๊ทผ์ ์ปจํธ๋กคํ๋ ๊ฒ์ด๋ค.
but, ์ด๋ก ์ธํด
๋ณ๋ชฉ ํ์
์ด ๋ฐ์ํ์ฌ ์ฑ๋ฅ์ด ์ ํ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๊ทธ๋ฌ๋ฏ๋ก ๊ณผ๋ํ
๋ฝ
์ผ๋ก ์ธํ ๋ณ๋ชฉ ํ์์ ์ค์ฌ์ผ ํ๋ค
multi-thread
ํ๊ฒฝ์์ ์ฌ๋ฌ thread๊ฐ ํ๋์ ์์์ ๊ณต์ ํ๋ ค๊ณ ํ ๋Deadlock
๊ณผ ๊ฐ์ ๋ฌธ์ ์ํฉ์ด ๋ฐ์ํ ์ ์๋ค
Multithread vs Multiprocess
Multi-thread
์ฅ์
๋ฉํฐ ์ค๋ ๋๋ ๋ฉํฐ ํ๋ก์ธ์ค๋ณด๋ค ์ ์ ๊ณต๊ฐ์ ์ฐจ์งํ๊ณ context switching์ด ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์์ง๋ง,
๋จ์
์ค๋ฅ๋ก ์ธํด ํ๋์ ์ค๋ ๋๊ฐ ์ข ๋ฃ๋๋ฉด ์ ์ฒด ์ค๋ ๋๊ฐ ์ข ๋ฃ๋ ์ ์๋ค๋ ์ ๊ณผ
๋๊ธฐํ ๋ฌธ์
๋ฅผ ๊ฐ๊ณ ์๋ค
Multi-process
์ฅ์
๋ฉํฐ ํ๋ก์ธ์ค ๋ฐฉ์์ ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ฃฝ๋๋ผ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์๋ ์ํฅ์๋ผ์น์ง ์๊ณ ์ ์์ ์ผ๋ก ์ํ๋๋ค๋ ์ฅ์ ์ด ์์ง๋ง,
๋จ์
๋ฉํฐ ์ค๋ ๋๋ณด๋ค ๋ง์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๊ณผ CPU ์๊ฐ์ ์ฐจ์งํ๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค
์ ๋ฆฌ
Multi-thread์ multi-process๋ ๋์์ ์ฌ๋ฌ ์์ ์ ์ํํ๋ค๋ ์ ์์ ๊ฐ์ง๋ง,
์ ์ฉํด์ผํ๋ ์์คํ ์ ๋ฐ๋ผ ์ ํฉ/๋ถ์ ํฉ์ด ๊ตฌ๋ถ๋๋ค
๋ฐ๋ผ์ ๋์ ์์คํ ์ ํน์ง์ ๋ฐ๋ผ ์ ํฉํ ๋์ ๋ฐฉ์์ ์ ํํ๊ณ ์ ์ฉํด์ผํ๋ค
Last updated