[OS] ํ๋ก์ธ์ค Process (2) - ํ๋ก์ธ์ค ๊ฐ ์์ ๊ณต์ (IPC)
IPC (Inter-Process Communication)
์ด์ ํฌ์คํธ์์ ํ๋ก์ธ์ค๋ค์ ์๋ก ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํ๋ค๊ณ ํ๋ค.
์ด์ ๋น๊ตํด์ ์ค๋ ๋๋ ํ ํ๋ก์ธ์ค ๋ด์์ ์คํ ์ธ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ค์ ๊ณต์ ํ๋ค๊ณ ํ๋ค. ๊ทธ๋ ๊ธฐ์ ์์๊ณต์ ๊ฐ ์ฝ๋ค.
ํ์ง๋ง ํ๋ก์ธ์ค๋ค์ ๋ณ๋์ ์ฃผ์ ๊ณต๊ฐ์์ ์คํ๋๊ธฐ ๋๋ฌธ์ ์๋ก์ ์์(๋ณ์, ์๋ฃ๊ตฌ์กฐ ๋ฑ)์ ์ง์ ์ ์ผ๋ก ์ ๊ทผํ ์๊ฐ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ํ๋ก์ธ์ค๋ค์ ์๋ก ์์ํ ์์์ ๊ณต์ ํ ์ ์๋ ๊ฒ์ผ๊น? ๋ถ๋ช ์๋ ๊ฒ์ด๋ค. ์ค๋์ ํ๋ก์ธ์ค ๊ฐ ์์ ๊ณต์ ๊ฐ ์ด๋ป๊ฒ ์ผ์ด๋๋์ง ์์๋ณด๋๋ก ํ๊ฒ ๋ค.
ํ๋ก์ธ์ค๋ฅผ ์์ ๊ณต์ ์ธก๋ฉด์์ ๊ตฌ๋ถํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋๊ฐ์ง๋ก ๋๋ ์ ์๋ค.
- Independant : ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต์ ๋ฅผ ์์ ํ์ง ์๋ ํ๋ก์ธ์ค
- Cooperating : ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์๋ก ์ํฅ์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ํ๋ก์ธ์ค. (์์ ๊ณต์ ํฌํจ)
์ฐ๋ฆฌ๊ฐ ๊ถ๊ธํ ๊ฒ์ Cooperatingํ ํ๋ก์ธ์ค๋ค์ด ์ด๋ป๊ฒ ์์์ ๊ณต์ ํ๋๋์ด๋ค. ์ด๋ฅผ IPC(Inter Process Communication)์ด๋ผ๊ณ ํ๋ค.
Message Passing(๋ฉ์์ง ๊ตํ) vs Shared Memory (๋ฐ์ดํฐ ๊ณต์ )
IPC์์๋ ์์์ ๊ณต์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก Message Passing(๋ฉ์์ง ๊ตํ)๊ณผ Shared Memory(๋ฐ์ดํฐ ๊ณต์ )๊ฐ ์๋ค.
์ด ๋๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์ค๋ช ํ๋๋ก ํ๊ฒ ๋ค.
(a) Message Passing์ ์ ๊ทธ๋ฆผ ์ฒ๋ผ ํ๋ก์ธ์ค A์์ ์ปค๋์ชฝ์ผ๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ , ์ปค๋์์ ๋ค์ ๋ฉ์์ง๋ฅผ ํ๋ก์ธ์ค B ์ชฝ์ผ๋ก ๋ณด๋ด๋ ๋ฐฉ์์ด๋ค.
(b) Shared Memory๋ ํ๋ก์ธ์ค A์ B๊ฐ ์์ ๊ณต์ ๋ฅผ ์ํด ๋ฉ๋ชจ๋ฆฌ ์ผ๋ถ๋ฅผ ๊ณต์ ํด์ ๊ฑฐ๊ธฐ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ์์ด๋ค. ํํธ ๋๊ธฐํ ๋ฌธ์ ๊ฐ ์ผ์ด๋ ์ ์์ผ๋ ์กฐ์ฌํด์ผํ๋ค.
Message Passing
์ด ๊ธฐ๋ฒ์ ์์ ๊ณต์ ๋ฅผ ์ํด ์ด์์ฒด์ ๊ฐ ์ง์ ๋์์ค๋ค. ์ปค๋์ด ๊ฐ์ ํ๋ ๊ฒ์ด๋ค.
ํต์ ํ๊ธฐ๋ฅผ ์ํ๋ ๋ ํ๋ก์ธ์ค๋ ์ปค๋ฎค๋์ผ์ด์ ๋งํฌ (comunication link)๋ฅผ ์์ฑํ ํ send()์ receive() ์์คํ ์ฝ์ ์ด์ฉํ์ฌ ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๊ฒ ๋๋ค
Direct Communication
- ํต์ ํ๋ ค๋ ํ๋ก์ธ์ค์ ์ด๋ฆ์ ๋ช ์์ ์ผ๋ก ํ์!
1. A๊ฐ ์ปค๋์ M(๋ฉ์์ง)๋ฅผ ๋ณด๋
2. ์ปค๋์ด B์๊ฒ M์ ๋ณด๋
(์ปค๋์ด ์ง์ ์ ์ผ๋ก ๋ฉ์์ง๋ฅผ ์ ๋ฌํจ)
์ฐธ๊ณ ๋ก ์ฌ๊ธฐ์ ์ปค๋ฎค๋์ผ์ด์ ๋งํฌ๋ ์๋์ ์ผ๋ก ์์ฑ๋๋ฉฐ ํ๋์ ๋งํฌ๋ ์ ํํ ํ ์์ ํ๋ก์ธ์ค์๋ง ํ ๋น๋๋ค
Indirect Communication
- mailbox(or port)๋ฅผ ํตํด ๋ฉ์์ง๋ฅผ ๊ฐ์ ์ ์ผ๋ก ์ ๋ฌ
1. A๊ฐ ์ปค๋์ ์ด๋ ๊ณต๊ฐ(Mailbox)์ ๋ฉ์์ง๋ฅผ ๋ฃ์
2. B๊ฐ ์ปค๋์ Mailbox์์ ๋ฉ์์ง๋ฅผ ๊บผ๋ด๊ฐ
(์ปค๋์ด ๊ฐ์ ์ ์ผ๋ก ๋ฉ์์ง๋ฅผ ์ ๋ฌํจ)
๋ ๋ฐฉ์ ๋ชจ๋ ์ปค๋์ด ๊ฐ์ ํ์ง๋ง, ์ปค๋์ด ์ง์ ๋ฉ์์ง๋ฅผ ๊ฑด๋ด์ฃผ๋๋ ๋ง๋๋์ ๋ฐ๋ฅธ ์ฐจ์ด๊ฐ ์๋ค.
์ด ๋ฉ์ผ๋ฐ์ค๋ผ๋ ๊ฒ์ ์ปค๋์ ์กด์ฌํ๋ฉฐ ๊ณ ์ ์ id๊ฐ ์์ด์ ๋ฉ์ผ๋ฐ์ค๋ฅผ ๊ณต์ ํ๋ ํ๋ก์ธ์ค๋ผ๋ฆฌ๋ง ์๋ก ํต์ ์ ํ ์ ์๋ค.
๋ง์ฝ indirect communication์์ p1, p2, p3์ด ๋ฉ์ผ๋ฐ์ค๋ฅผ ๊ณต์ ํ๋ ๊ฒฝ์ฐ p1์ด ๋ฉ์์ง๋ฅผ ๋ณด๋๋ค๋ฉด p2์ p3 ์ค ๋๊ฐ ๊ทธ ๋ฉ์์ง๋ฅผ ๋ฐ๊ฒ ๋๋๊ฐ? p2์ p3์๊ฐ ๊ฐ๊ฐ ๋ฐ๋ก ๋งํฌ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ๊ณผ, ๋งํฌ์ ๋ํ receive์ฐ์ฐ์ ๋งค ์์ ํ๋์ ํ๋ก์ธ์ค๋ง ์ํํ ์ ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์์คํ ์ ๋ฉ์์ง ์์ ์๋ฅผ ์์๋ก ๊ฒฐ์ ํ์ฌ ๋๊ฐ ๋ฉ์์ง๋ฅผ ๋ฐ์๋์ง ์ก์ ์์๊ฒ ํต์ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ด ์ฌ์ฉ๋ ์๋ ์๋ค. (๋งํฌ ์ฐธ์กฐ)
ํํธ ์ ๊ทธ๋ฆผ๋ค์ ๋ณด๋ฉด ์ข ๋ณต์กํด๋ณด์ธ๋ค. ์ค๊ฐ์ ์ปค๋์ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ Message Passing ๊ธฐ๋ฒ์ Overhead๊ฐ ํฌ๋ค.
Shared Memory
์ด๋ ํ๋ก์ธ์ค A์ B๊ฐ ๋ชจ๋ ์ฝ๊ณ ์ธ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง๋ค์ด ์ด ๋ฉ๋ชจ๋ฆฌ ์์์ ์๋ก ์์์ ๊ณต์ ํ๋๋ก ํ๋ ๊ฒ์ด๋ค.
์ด ๋ฐฉ๋ฒ์ ํตํด์๋ ๋ฐ๋ก ์ค๊ฐ ๊ณผ์ ์ ๊ฑฐ์น์ง ์์ผ๋ Message-Passing๋ณด๋ค overhead๊ฐ ์ ๋ค. (๋ฌผ๋ก ์ด๋ ๊ฒ shared memory๋ฅผ ์ด์ฉํด๋, ์ฒ์์๋ ์ปค๋ํํ ์ฐ๋ฆฌ shared memory ์ด์ฉํ ๊ฒ~ ์ด๋ ๊ฒ ์๋ ค์ค์ผ ๋๋ค๊ณ ํ๋ค!)
ํ์ง๋ง ๋๊ธฐํ ๋ฌธ์ ๊ฐ ์ผ์ด๋ ์ ์๋ค.
์๋ฅผ ๋ค์ด ํ๋ก์ธ์ค A๊ฐ ์ ๋ณด๋ฅผ ์์ ํ๋ ๋์์ ํ๋ก์ธ์ค๊ฐ ํด๋น ์ ๋ณด๋ฅผ ์ฝ๋๋ค๋ฉด? ์ด์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๋๊ธฐํ ๋ฌธ์ ๋ผ๊ณ ํ๋ค. ์ด์ ๋ํด์๋ ๋ค๋ฅธ ํฌ์คํธ์์ ๋ค๋ฃจ๊ฒ ๋ค.