๐Program
- ์ฝ๋๋ก ๋ง๋ค์ด์ง ์งํฉ์ฒด
- ์์) ํฌ๋กฌ ์ดํ๋ฆฌ์ผ์ด์ ์ ํ๋์ ํ๋ก๊ทธ๋จ์ด๋ผ ํ ์ ์์
๐Process
- ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋ฉด ๊ทธ๊ฒ process๊ฐ ๋จ!! (์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ด๊ธฐ ๋๋ฌธ์ job, task๋ผ๊ณ ๋ ๋ถ๋ฆผ)
- OS๋ก๋ถํฐ ์์คํ ์์์ ํ ๋น๋ฐ๋ ์์ ์ ๋จ์ (process๋ ๋ ๋ฆฝ๋ memory์์ญ์ ๊ฐ์ ํ ๋น๋ฐ์)
์์คํ ์์์ ํ ๋น๋ฐ๋๋ค๋ผ...
์์คํ ์์์ด ๋ญ๊น?
memory์์ญ์?
์ฐ์ ๊ทธ๋ฆผ์ผ๋ก process๊ฐ ์ด๋ป๊ฒ ์๊ฒผ๋์ง ๋ณด์.
process์์ code, data, stack, heap์ด ๋ค์ด์๋ค.
์๋ค๊ฐ ๋ฐ๋ก memory ์์ญ..!
๐Memory ๊ตฌ์กฐ
1. code
์ฝ๋ ์์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
2. data
๋ฐ์ดํฐ๋ *์ ์ญ๋ณ์, ์ ์ ๋ณ์(static), ๋ฐฐ์ด, ๊ตฌ์กฐ์ฒด ๋ฑ์ด ์ ์ฅ๋๋ ์์ญ
3. stack
*์ง์ญ๋ณ์, ๋งค๊ฐ๋ณ์, return๊ฐ ๋ฑ ์ ์ ์ฌ์ฉ๋์๋ค๊ฐ ์ฌ๋ผ์ง๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์์ญ
4. heap
memory๋ฅผ ๋์ ํ ๋นํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ ์์ญ. ๋์ ๋ฐ์ดํฐ ์์ญ
*์ง์ญ๋ณ์ : ํจ์ ๋ด๋ถ์์ ์ ์ธ
*์ ์ญ๋ณ์ : ํจ์ ์ธ๋ถ์์ ์ ์ธ
๋ค์ ์ ๋ฆฌํด๋ณด๋ฉด, program์ ์คํ์ํค๋ฉด process๊ฐ ์์ฑ๋๊ณ , process๋ ๊ทธ ์์ memory๊ตฌ์กฐ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ง๊ธฐ ๋๋ฌธ์ process๊ฐ ์์ฑ๋ ๋ OS๋ ํด๋น memory์์ญ, ์ฆ ์์คํ ์์์ ํ ๋นํด์ค๋ค!
์ถ๊ฐ๋ก process๋ ๋ ๋ฆฝ๋ memory์์ญ์ ๊ฐ์ ํ ๋น๋ฐ๊ธฐ ๋๋ฌธ์
→ process๋ผ๋ฆฌ๋ ์๋ก์ ๋ณ์๋ ์๋ฃ๊ตฌ์กฐ์ ๋ํด ์ ๋ ์ ๊ทผํ ์ X !! ๋ง์ฝ A process๊ฐ B process ์์์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด, IPC(ํ๋ก์ธ์ค๊ฐ ํต์ ) (ex : socket, pipe ๋ฑ) ์ ์ด์ฉํด์ผํจ
๐Thread
- process๋ด์์ ์คํ๋๋ ํ๋ฆ์ ๋จ์
- ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด process๊ฐ ๋๊ณ , ๊ทธ process์์ ์ด๋ค ํ๋ฆ์ด ์คํ๋๋ฉด ๊ทธ๊ฒ thread!
๋ฐ๋ก ์์์ ๋งํ์ง๋ง, thread๋ process๋ด์์ ๋์๋๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ memory์์ญ์ ๋ ๋ฆฝ์ ์ผ๋ก ํ ๋น๋ฐ์ง ๋ชปํ๋ค!!
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ผ์ชฝ ๊ทธ๋ฆผ์ฒ๋ผ code, data, heap์์ญ์ ๊ณต์ ํ๊ณ stack์์ญ๋ง ๋ ๋ฆฝ์ ์ผ๋ก ํ ๋น๋ฐ์ ์ ์๋ค.
⇒ ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ thread๋ผ๋ฆฌ๋ heap์์ญ์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์์์ ์ ๊ทผํ ์ ์์ but, stack์์ญ์ ์ ๊ทผ ๋ถ๊ฐ
๊ทผ๋ฐ ์ stack๋ง ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ง๋ ๊ฑธ๊น..??
๋ฐ์ํ
โ ์ stack๋ง ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ง๋๊ฐ
- LIFO๋ผ๋ stack์ ํน์ฑ ๋๋ฌธ.
- ๋ง์ฝ stack์ ๊ณต์ ํ๊ฒ ๋๋ค๋ฉด.. stack์ ์์ด๋ฉด ์์์๋ถํฐ ์ฌ๋ฌ process๊ฐ ์์ธ์ฑ๋ก ์์๋๋ก ๋์ค๊ฒ ๋๋ฏ๋ก(?) ๋ ๋ณต์กํด์ง๊ธฐ ๋๋ฌธ์ thread ์ฌ์ด์ ๋ณดํธ๋ฅผ ์ํด stack์ ๊ตฌ๋ถ
(๊ฐ ์ค๋ ๋๋ ๊ฐ๊ฐ์ ์คํ ์ํ์ค/์ฝ๋๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฏ๋ก ํจ์๊ฐ ํธ์ถ๋๊ณ ๋ฐํ๋ ๋ ๊ฐ๊ฐ์ *PC๋ฅผ push / pop ํด์ผ ํจ)
*PC : Program counter
- stack๋ ํจ์ ํธ์ถ ์ ์ ๋ฌ๋๋ ์ธ์, ๋๋์๊ฐ ์ฃผ์ ๊ฐ ๋ฐ ํจ์๋ด์์ ์ ์ธํ๋ ๋ณ์ ๋ฑ์ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ณต๊ฐ.
๋ฐ๋ผ์, stack ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ ๋ฆฝ์ ์ด๋ผ๋ ๊ฒ์ ๋ ๋ฆฝ์ ์ธ ํจ์ ํธ์ถ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์๋ฏธํ๊ณ , ์ด๋ ๋ ๋ฆฝ์ ์ธ ์คํ ํ๋ฆ์ด ์ถ๊ฐ๋ ์ ์๋ค๋ ์๋ฏธ์ด๋ค.
๐Program Counter (PC)
- CPU ๋ ์ง์คํฐ ์ข ๋ฅ ์ค ํ๋
- ๋ค์์ ์คํํ ๋ช ๋ น์ด์ ์ฃผ์๋ฅผ ์ ์ฅ
- thread์ ๋ ๋ฆฝ์ ์ผ๋ก PC๊ฐ ํ ๋น๋จ → ์ฌ๋ฌ thread๊ฐ ์ํ๋ ๋ ๊ฐ thread์ PC๋ ๋ช ๋ น์ด์ ์ด๋๊น์ง ์ํ๋์๋์ง๋ฅผ ์ ์ฅํจ!
์ด์ program, process, thread์ ์ฐจ์ด์ ๋ํด ์์๋ณด์๋ค.
๋ค์์ multiprocessing๊ณผ multithreading์ ์ฐจ์ด์ ๋ํด ์์๋ณด์!!
๐๐๐
์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ ๋ํด์๋ ์์ธํ๊ฒ ์ด ๊ธ์ด ์๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ ๋ํด ๋ ์๊ณ ์ถ์ ๋ถ๋ค์ ํ์ธํด๋ณด์ธ์..! ๐๐๐
'Computer Science > ๊ฐ๋ฐ์๋ผ๋ฉด ์์์ผํ๋ ๊ธฐ๋ณธ์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] Multiprocessing๊ณผ Multithreading์ ์ฐจ์ดโผ๏ธ (0) | 2022.04.01 |
---|