
Inter-Process Communication(=ํ๋ก์ธ์ค ์ฌ์ด์ ํต์ ) ์ฆ, ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ์๋ฏธํ๋ค. ์ฃผ๋ก ํด๋ผ์ด์ธํธ-์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ , ๋ฉํฐ์ค๋ ๋ ํ๋ก๊ทธ๋จ ๋ฑ์์ ํ๋ก์ธ์ค ๊ฐ ๋ฐ์ดํฐ ๊ณต์ , ๋๊ธฐํ, ์์ ๋ถ๋ฐฐ ๋ฑ์ ์ํด ์ฌ์ฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก Process๋ ์ด์์ฒด์ ์์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ ํ๋ก๊ทธ๋จ์ ์ธ์คํด์ค์ด๋ค. ์ฆ, ๊ฐ ํ๋ก์ธ์ค๋ ๊ณ ์ ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ, ํ์ผ ๋์คํฌ๋ฆฝํฐ, ํ๋ก์ธ์ค ID ๋ฑ์ ๊ฐ์ง๋ค. ์ด๋ ๊ฒ ๋ ๋ฆฝ๋์ด ์๋ค๋ ํน์ง์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํฅ์ ๋ฐ์ง ์์ ํ ํ๋ก์ธ์ค์ ์ค๋ฅ๊ฐ ์ ์ฒด ์์คํ ์ ๋ง๋น์ํค๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
ํ์ง๋ง ์ด๋ฌํ ๋ ๋ฆฝ์ฑ์ ๋์์ ๊ณ ๋ฆฝ๋์ด ์๋ค๋ ์๋ฏธ์ ๊ฐ๋ค. ํ๋ก์ธ์ค๋ ๋ณ๋์ ํต์ ์๋จ ์์ด๋ ์๋ก ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ณ ํต์ ์ด ์ด๋ ต๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ์ด์์ฒด์ ์ ์ปค๋์ด IPC๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด๋ค! ํ๋ก์ธ์ค๋ ์ปค๋์ด ์ ๊ณตํ๋ IPC ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ ํ๋ก์ธ์ค๊ฐ ํต์ ์ ํ ์ ์๊ณ , ํ์ํ ๋ ์์ ํ๊ณ ํจ์จ์ ์ผ๋ก ์ ๋ณด๋ฅผ ๊ตํํ ์ ์๊ฒ ๋๋ค.
์๋ฅผ ๋ค์ด, ์น ๋ธ๋ผ์ฐ์ ์์ ํ์ผ์ ๋ค์ด๋ก๋ํ ๋๋ UI ํ๋ก์ธ์ค โก๏ธ IPC โก๏ธ ๋ค์ด๋ก๋ ๊ด๋ฆฌ์ ํ๋ก์ธ์ค ์ด๋ฐ์์ผ๋ก ๋ค์ด๋ก๋ ์์ฒญ์ ํ๋ค. ์ด ๊ณผ์ ์์ IPC๊ฐ ๋ ํ๋ก์ธ์ค ์ฌ์ด์ ํต์ ์ ์ค์ฌํ๋ฉฐ, ๊ฐ ํ๋ก์ธ์ค๋ ๋
๋ฆฝ์ ์ผ๋ก ์คํํ๋ค.
์ฆ, IPC๊ฐ ํ์ํ ์ด์ ๋ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ด ํ์ํ ์ด์ ์ ๊ฐ๋ค. ๋ฐ๋ผ์, IPC๊ฐ ํ์ํ ์ด์ ๋ ์๋์ ๊ฐ๋ค.
1. ๋ฐ์ดํฐ ๊ณต์
์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์ผํ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ณ ์์ ํ ์ ์๊ฒ ํ๋ค. ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์ผํ ์ ๋ณด์ ์์ธ์ค ํ ์ ์์ด ์ค์๊ฐ ํ์ ๊ณผ ์ ๋ณด ๋๊ธฐํ๊ฐ ๊ฐ๋ฅํด์ง๋ค.
2. ์ฑ๋ฅ ์ต์ ํ
๋ณต์กํ ์์ ์ ์ฌ๋ฌ ๊ฐ์ ์์ ํ๋ก์ธ์ค๋ก ๋ถํ ํ์ฌ ๋ณ๋ ฌ ์ฒ๋ฆฌํ ์ ์์ด ์ ์ฒด ์์คํ ์ ์ฒ๋ฆฌ ์๋์ ํจ์จ์ฑ์ด ํฅ์๋๋ค. (์๋ํ๋ฉด ๋ฉ์ธ ์์ ๊ณผ ์๋ธ ์์ ์ด ์๋ก ํต์ ํด์ผ ํ๋ฏ๋ก IPC๊ฐ ํต์ ์ ๋์์ค์ผ์ง ๊ฐ๋ฅํ๋ค!)
3. ๋ชจ๋์ฑ
๊ฐ ๊ธฐ๋ฅ์ ๋ ๋ฆฝ์ ์ธ ํ๋ก์ธ์ค ๋๋ ์ค๋ ๋ ๋จ์๋ก ๋ถ๋ฆฌํ์ฌ ๋ชจ๋ ๋ฐฉ์์ผ๋ก ์์คํ ์ ๊ตฌ์ฑํ ์ ์๋ค.
(์ด๋๋ ๋ชจ๋๊ฐ์ ํต์ ์ด ํ์ํ๋ฏ๋ก IPC๊ฐ ํ์ํ๋ค!)
4. ํธ์์ฑ
์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ๋ค์ํ๊ณ ๋ง์ ์์ ์ ์ํํ ์ ์๋ค. ์ฆ, ๋ฉํฐํ์คํน์ด ๊ฐ๋ฅํ๋ค!
5. ์์๊ด๋ฆฌ์ ํจ์จ์ฑ
ํ๋ก์ธ์ค ๊ฐ ์์ ๊ณต์ ์ ์กฐ์จ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ์์คํ ์์์ ํจ์จ์ ์ธ ๋ถ๋ฐฐ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ง๋ค.
IPC์๋ ์ ํต์ ์ผ๋ก ๋ ๊ฐ์ง ๊ธฐ๋ฒ์ด ์๋ค.

์ถ์ฒ : https://velog.io/@coastby/์ด์์ฒด์ -IPC-Inter-Process-Communication-ํ๋ก์ธ์ค-๊ฐ-ํต์
a. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฒ, Shared memory
b. ๋ฉ์ธ์ง ์ ๋ฌ ๊ธฐ๋ฒ, Message Passing
๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฒ์ ํ๋ก์ธ์ค๋ค์ด ๊ณตํต์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํ์ฌ ํต์ ํ๋ ๋ฐฉ์์ด๋ค.
ํ๋ ฅ์ ํ๋ก์ธ์ค๋ค์ด ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ณ , ์ฃผ๋ก ์ ์ญ ๋ณ์, ๊ณต์ ๋ณ์, ๊ณต์ ํ์ผ์ ํตํด ํต์ ์ด ์ด๋ฃจ์ด์ง๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ ๋น ๋ฅด๊ณ ์ปค๋์ ๋์์ด ๊ฑฐ์ ํ์ ์๋ค. ๊ณ ์ ํต์ ์ด ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์์ง๋ง ํต์ ์ฑ ์(Ex) ํ๋ก์ธ์ค๊ฐ์ ๋๊ธฐํ ๋ฌธ์ )์ด ์์ฉ ํ๋ก์ธ์ค์๊ฒ ์๊ณ ์ด์์ฒด์ ๋ ๋จ์ง ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ง ์ ๊ณตํ๋ค.
๋ฉ์ธ์ง ์ ๋ฌ ๊ธฐ๋ฒ์ ํ๋ก์ธ์ค๋ค์ด ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ํต์ ํ๋ ๋ฐฉ์์ด๋ค.
ํ๋ ฅ์ ํ๋ก์ธ์ค ๊ฐ์ ๋ฉ์์ง๋ฅผ ๊ตํํ๋ค. ์ฃผ๋ก ์ ์ ์์ ๋ฐ์ดํฐ ๊ตํ์ ์ฌ์ฉ๋๋ค๊ณ ํ๋ค. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ฐฉ์๊ณผ๋ ๋ฌ๋ฆฌ ํต์ ์ฑ ์ ๋ฐ ์๋จ์ด ์ด์์ฒด์ ์ ์ํด ์ ๊ณต๋๋ค. OS๊ฐ ๋๊ธฐํ๋ฅผ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ถฉ๋ํ์ง ์๋๋ค๋ ์ฅ์ ์ด ์์ง๋ง ์์คํ ์ฝ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ฐฉ์์ ๋นํด ์๋์ ์ผ๋ก ์๋๊ฐ ๋๋ฆด ์ ์๋ค๋ ๋จ์ ์ด ์๋ค.
(b) ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๊ฐ ํ๋ก์ธ์ค๋ค์ด ์ปค๋์ ์๋ ๋ฉ์ธ์ง ํ ๊ณต๊ฐ์ผ๋ก ์์์ ์ ์กํ๋ ๊ฒ์ด ๋ณด์ธ๋ค. ์ฆ, ๋ฉ์์ง ์ ๋ฌ ๋ฐฉ์์ ์ด์์ฒด์ ๊ฐ ๋์ ์ ๋ฌํ๋ ๋ฐฉ์์ธ ๊ฒ์ด๋ค.
๋ํ,ย ์ง์ ํต์ (direct communication),ย ๊ฐ์ ํต์ (indirect communication)ย ๋ผ๋๊ฒ ์๋๋ฐ ๋์ ์ฐจ์ด๋ ์ปค๋์ ๋ฉ์์ง ํ์ ์ ์ฅ๋ ์์์ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ์ง์ ์ ๋ฌ์ ํด์ฃผ๋์ง(์ง์ ํต์ ), ์ฐพ์ผ๋ฌ ์ค๋ผ๊ณ ํ๋์ง(๊ฐ์ ํต์ )๋ผ๊ณ ๊ฐ๋จํ๊ฒ ์์๋์!
์ ๋ฆฌํ์๋ฉด, ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ฐฉ์์
๋น ๋ฅธ ํต์ ์ด ํ์ํ ๋์ ์ฉํ๊ณ , ๋ฉ์์ง ์ ๋ฌ ๋ฐฉ์์๋ฐ์ดํฐ ์ผ๊ด์ฑ๊ณผ ์์ ์ฑ์ด ์ค์ํ ๊ฒฝ์ฐ์ ์ ํฉํ๋ค.
๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ฐฉ์์ ๋ฉ์์ง ์ ๋ฌ ๋ฐฉ์๊ณผ ๊ฐ์ IPC ๊ตฌํ ๋ฉ์ปค๋์ฆ์ ๊ตฌ์ฒดํํ ๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ํ์ผ, ์ ํธ, ์์ผ, ๋ฉ์์ง ํ, ํ์ดํ ๋ฑ์ด๋ค. ์ด๋ค์ ๋ํด ์์ธํ ์์๋ณด์. ๐
๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ ์ด๋ฆ ๊ทธ๋๋ก ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํด์ ์ฌ์ฉํ ์ ์๋๋ก ํด์ค๋ค. ๊ฐ ํ๋ก์ธ์ค๋ ๋ณดํต ์์ ๋ง์ ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ง๋ค. ํ์ง๋ง ๋๋ก๋ ํ๋ก์ธ์ค๋ค์ด ์ ๋ณด๋ฅผ ํจ์จ์ ์ผ๋ก ๊ณต์ ํด์ผ ํ ํ์๊ฐ ์๋ค. ์ด๋, ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ๊ทผํ ์ ์๊ฒ ํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ด๋ค.
์ด๋ ๊ฒ ๊ถํ๋ง ์์ผ๋ฉด ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฏ๋ก ์ค๊ฐ์๊ฐ ์์ด ๊ณง๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ IPC๋ค ์ค์์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์๋ํ ์ ์๋ค. ๊ทธ๋ฌ๋ ๋์์ฑ ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค. ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋์์ ์์ ํ๋ ค ํ ๋ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ด ๊นจ์ง ์ ์๊ธฐ ๋๋ฌธ์, (๋ค์ ๋์ฌ)์ธ๋งํฌ์ด๋ ๋ฎคํ ์ค ๊ฐ์ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ ํจ๊ป ์ฌ์ฉํด์ผ ํ๋ค.
ํ์ผ์ ์ฐ๋ฆฌ๊ฐ ํํ ์๊ณ ์๋ ํ์ผ์ด๋ฉฐ, Shared Memory ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค. ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ํ์ผ์ ์ ๊ทผํ๋ ๊ฒ์ ๋ ์ฌ๋ฆฌ๋ฉด Shared Memory ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์ฝ๊ฒ ๋ ์ฌ๋ฆด ์ ์์ ๊ฒ์ด๋ค.
2๊ฐ์ ํ๋ก์ธ์ค ์ ์ถ๋ ฅ์ ์ฐ๊ฒฐํ์ฌ ํ๋์ ๊ณต์ ํ์ด์ง๋ฅผ ์ ๊ณตํ๋ ๋ฐฉ์์ด๋ฉฐ, Message Passing ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค. ํ๋ก์ธ์ค ๊ฐ์ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ๋ณด๋ค๋ ์งง๊ณ ๊ฐ๋จํ ๋ฉ์์ง๋ฅผ ๊ตํํ ๋ ์ ์ฉํ๋ค. ๋ฉ์์ง ํ, ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ฑ ๋ค๋ฅธ IPC ๋ฐฉ์์ ๋นํด ์ฌ์ฉ์ด ๊ฐํธํ์ง๋ง, ๊ธฐ๋ฅ์ ์ ํ์ ์ธ ๊ฒ์ด ํน์ง์ด๋ค.
์์๋ฅผ ๋ค์ด๋ณด์๋ฉด,
ls | pr
์ ๋ช
๋ น์ด๋ ls ๋ช
๋ น์ด์ ๊ฒฐ๊ณผ(ํ์ค ์ถ๋ ฅ)๋ฅผ pr ๋ช
๋ น์ด์ ์
๋ ฅ(ํ์ค ์
๋ ฅ)์ผ๋ก ์ ๋ฌํ๋ค. ์ฌ๊ธฐ์ | ๊ฐ ํ์ดํ์ด๋ค.
ํ์ดํ๋ ํฌ๊ฒ ์ด๋ฆ ์๋/์๋ ํ์ดํ๋ก ๋๋ ์ ์๋ค.
์ด๋ฆ ์๋ ํ์ดํ (Anonymous Pipe)
์ํธ ๊ด๋ จ ์๋ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ์ฌ์ฉ๋๋๋ฐ, ๋ถ๋ชจ-์์ ํ๋ก์ธ์ค ๊ฐ์ ํต์ ์์๋ง ์ฌ์ฉํ ์ ์๋ค. ์กฐ๊ธ ํท๊ฐ๋ฆด ์ ์๋๋ฐ, ๊ฐ์ PPID(๊ฐ์ ๋ถ๋ชจ ํ๋ก์ธ์ค)๋ฅผ ๊ฐ์ง๋ ํ๋ก์ธ์ค๋ค ์ฌ์ด์์๋ง ๊ฐ๋ฅํ๋ค๋ ์๋ฏธ์ด๋ค. ํ์ผ ์์คํ ์ ์กด์ฌํ์ง ์๊ณ ๋ฉ๋ชจ๋ฆฌ ์์์๋ง ์ ์ง๋๊ณ , ๋จ๋ฐฉํฅ ํต์ ๋ง ์ง์ํ๋ค. ์ฆ, ํ ๋ฐฉํฅ์ผ๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ค๋ ๊ฒ์ด๋ค! (์๋ฐฉํฅ ํต์ ์ ์ํด์๋ ๋ ๊ฐ์ ํ์ดํ๊ฐ ํ์)
์ด๋ฆ ์๋ ํ์ดํ (Named Pipe)
FIFO(First In, First Out)๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ, ์ฅ์น ํ์ผ์ ํตํด ์ํธ ๊ด๋ จ ์๋ ํ๋ก์ธ์ค ๊ฐ์ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋๋ฐ ์ฌ์ฉ๋๋ค. ์ด๋ฆ ์๋ ํ์ดํ๋ ํ์ผ ์์คํ
์์์ ์กด์ฌํ๋ ํน์ ํ์ผ์ด๋ฉฐ, ์์ฑ๋ ํ ๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค. ์๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅํ์ง๋ง, ๊ธฐ๋ณธ์ ์ผ๋ก๋ ๋จ๋ฐฉํฅ์ผ๋ก ๋์ํ๋ฏ๋ก ํ์ํ ๊ฒฝ์ฐ ์๋ฐฉํฅ์ผ๋ก ์ค์ ํด์ผ ํ๋ค. ํ์ง๋ง ์ด๊ฒ๋ ํต์ ์ ๋ก๊ฐ ํ์ผ๋ก ์กด์ฌํ๋๊น ํ๋๋ฅผ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ด๊ณ ๋ค๋ฅธ ํ๋๋ฅผ ์ฐ๊ธฐ์ ์ฉ์ผ๋ก ์ฌ๋ ๊ฒ์ด๋ผ ํ๋ฏ๋ก ๊ฒฐ๊ตญ์ PIPE์ ๊ฐ์ด ๋๊ฐ์ FIFOํ์ผ์ด ํ์ํ๋ค.
๋คํธ์ํฌ๋ฅผ ํตํ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ์ข ์ฐฉ์ ์ ์๋ฏธํ๋ฉฐ Message Passing ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค. ์ฃผ๋ก ์๊ฒฉ์์ ํ๋ก์ธ์ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ๋ ์ฌ์ฉ๋๊ณ , ํ์ดํ ๊ฐ๋ ์ ๋คํธ์ํฌ๋ก ํ์ฅ์ํจ ๊ฒ์ผ๋ก ๋ณผ ์ ์๋ค.
์์ผ ํต์ ์ IP ์ฃผ์์ ํฌํธ ๋ฒํธ๋ฅผ ํตํด ์ฐ๊ฒฐ๋๋ฉฐ, TCP/IP์ UDP ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ ์์คํ
๋ด์ ํ๋ก์ธ์ค๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ์์คํ
์ ์๋ ํ๋ก์ธ์ค ๊ฐ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค. ์์ผ์ ๋ก์ปฌ ํต์ (Ex) localhost:8080)๋ฟ๋ง ์๋๋ผ ์๊ฒฉ ํต์ ๋ ๊ฐ๋ฅํ๊ฒ ํ๋ฉฐ, ๋คํธ์ํฌ ์์์์ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
์์ผ์ ์๋ฒ/ํด๋ผ์ด์ธํธ ํ๊ฒฝ ๊ตฌ์ถ์ด ์ฉ์ดํ๊ณ , ์๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅํ๋ค๋ ์ ์ด ์ฅ์ ์ด๋ค. ํ์ดํ ๊ฐ๋ ์ ๋คํธ์ํฌ๋ก ํ์ฅ์ํจ ๊ฒ์ด ์์ผ์ด๋ผ๊ณ ํ๋๋ฐ, ํ์ดํ๋ ๊ฑฐ์ ๋จ๋ฐฉํฅ ํต์ ๋ง ๊ฐ๋ฅํ๋ ๊ฒ๊ณผ ์ฐจ์ด์ ์ด ์๋ค. ๐
๊ณต์ ๋ฆฌ์์ค ์ ๊ทผ ์ ์ด or ํต์ ๋ฅผ ์ํ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ ์๋ฏธํ๋ฉฐ, Message Passing ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค.
์๊น ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ค๋ช ํ ๋ ๋งํ๋ฏ์ด ํ๋ก์ธ์ค๋ค์ ๊ณต์ ์์ ์ ๊ทผ์ ์กฐ์ ํ๋, ์ฆ ๊ณต์ ์์์ ๋ํ "์ ๊ทผ ์ ์ด"๋ฅผ ํตํด ํ๋ก์ธ์ค๊ฐ ํต์ ์ ์ง์ํ๋ ๋ฐฉ์์ด๋ค. Semaphore๋ฅผ ๋ฒ์ญ๊ธฐ๋ก ๋๋ ค๋ณด๋ฉด โ์ ํธ๊ธฐโ๋ก ๋์จ๋ค. ๋ง์น ๊ธฐ์ฐจ์ญ์์ ๊น๋ฐ๋ก ๊ธฐ์ฐจ์ ํตํ์ ์ ์ดํ๋ฏ์ด, ๊ณต์ ์์์ ์๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ธ์ค๋ค์ ๊ณต์ ์์ ์ ๊ทผ์ ์กฐ์ ํ๋ค.
์ธ๋งํฌ์ด๋ ๊ณต์ ์์์ ์ถฉ๋์ ๋ง์์ค๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ํ๋ก์ธ์ค๋ค์ด ์์์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋ธ๋ก๋ ์ ์์ด CPU ๋๊ธฐ ์๊ฐ์ด ๋ฐ์ํ ์ ์๋ค๋ ๋จ์ ๋ ์๋ค. (์ค์ผ์ค๋ง์ ๋ฐ๋ผ ๋ค๋ฅด๋ค!)
+) ์ธ๋งํฌ์ด์ ๋ฎคํ
์ค
์ธ๋งํฌ์ด๋ ๋ฎคํ
์ค์ ์ ์ฌํ์ง๋ง, ์ธ๋งํฌ์ด๊ฐ ๋ ๋์ ๋ฒ์์ ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ๋ค๋ฃฐ ์ ์๋ค. ๋ฎคํ
์ค๋ ์ฃผ๋ก ์ค๋ ๋ ๊ฐ์ ์ํธ ๋ฐฐ์ ๋ฅผ ์ํด ์ฌ์ฉ๋๊ณ , ์ธ๋งํฌ์ด๋ ์ฌ๋ฌ ํ๋ก์ธ์ค ๊ฐ์ ๋๊ธฐํ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
ํ๋ก์ธ์ค ID๋ฅผ ํตํด ํน์ ํ๋ก์ธ์ค์ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ์์ด๋ฉฐ, Message Passing ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค. ์ฃผ๋ก ์ค์๊ฐ์ผ๋ก ํ๋ก์ธ์ค์ ์ด๋ฒคํธ ๋ฐ์์ ์๋ฆฌ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
๊ฐ๋จํ ๋งํ์๋ฉด, ํ๋ก์ธ์ค์ ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์์ ์๋ฆฌ๋ ๋ฉ์์ง์ด๋ค!
์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ kill -9 ๋ Signal ๊ด์ ์์ SIGKILL ์ ํธ๋ฅผ ํ๋ก์ธ์ค์ ๋ณด๋ด๋ ๊ฒ์ด๋ค.
์๋ฒ๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํํ๊ธฐ ์ํด ์ข
์ข
์ฌ์ฉํ๋ nohup๋ช
๋ น์ด๋ ์๊ทธ๋๊ณผ ๊ด๋ จ์ด ์๋ค. nohup์ ํฐ๋ฏธ๋ ์ธ์
์ด ์ข
๋ฃ๋์ด๋ ํ๋ก์ธ์ค๊ฐ ๊ณ์ ์คํ๋๋๋ก ํ ์ ์๋๋ฐ, ์ด๋ SIGHUP ์ ํธ๋ฅผ ๋ฌด์ํ๊ฒ ๋ง๋๋ ๊ฒ์ด๋ค.

์ถ์ฒ : https://www.youtube.com/watch?v=7NZW0BEfpUU
ํ๋ก์ธ์ค ๊ฐ์ ๋ฉ์์ง ๊ธฐ๋ฐ ํต์ ์ด๋ฉฐ ๋ฉ์์ง ํ ID๋ฅผ ํตํด ํต์ ํ๋ค. Message Passing ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค.
๋ฉ์์ง๊ฐ ๋ฐ์ํ๋ฉด ๊ณ ์ ํฌ๊ธฐ์ ๋ฉ์์ง๋ฅผ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ํตํด ํ๋ก์ธ์ค ๊ฐ ํต์ ์ํํ๋๋ฐ, ์ด๋ ๋ฉ์์ง๋ FIFO ์์๋ก ์ฒ๋ฆฌ๋๋ค! ๋ฉ์์ง์ ์ฐ์ ์์๋ฅผ ์ค์ ํ ์ ๋ ์๋ค.
๋ฉ์์ง ํ์ ๊ด๋ จ๋ ์๋ฃ๋ฅผ ์ฐพ๋ค๊ฐ, ์ด ์์์ ๋ณด๊ฒ ๋์๋ค. ์ฝ๊ณ ๊ฐ๋จํ๊ฒ ์ค๋ช
ํ๋ฏ๋ก ๊ผญ ๋ณด๊ธธ ์ถ์ฒํ๋ค!
์ด ์์์ด ๋๋ฌด ์ค๋ช
์ด ์๋์ด์์ด, ์ฐธ๊ณ ํ์ฌ ๊ฐ๋จํ๊ฒ ์ค๋ช
์ ํด๋ณด๊ฒ ๋ค.

๊ณ ๊ฐ์ด ์ฃผ๋ฌธํ ๋๋ง๋ค ๊ฒฐ์ ๋ฅผ ์ฒ๋ฆฌํ ๋ค์ ์ฌ๊ณ ๋ฅผ ์ ๋ฐ์ดํธํ๋ ์จ๋ผ์ธ ์ผํ๋ชฐ์ด ์๋ค๊ณ ํด๋ณด์. ์ฐ๋ฆฌ๊ฐ ๋ณดํต ์จ๋ผ์ธ ์คํ ์ด์์ ๊ฒฐ์ ๋ฅผ ํ๋ฉด ๊ฒฐ์ ๊ฐ ์๋ฃ๋๊ณ , ๊ฒฐ์ ์ฃผ๋ฌธ ๋ด์ญ์ด ์ด๋ฉ์ผ๋ก ๋ ๋ผ์จ๋ค. ์ด๋ฐ ๊ฒ๋ค์ด ๋ชจ๋ โ์ด๋ฒคํธโ์ธ ๊ฒ์ด๋ค.
๊ทธ๋ฐ๋ฐ, ๊ฐ์๊ธฐ 90% ์ธ์ผ์ ํด์ ์์ฒญ๋๊ฒ ๋ง์ ์์ ์ฌ์ฉ์๊ฐ ๋์์ ์ด ์คํ ์ด์ ์ ์ํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น? ์ด ๊ฒฝ์ฐ์๋ ๊ฐ์๊ธฐ ๋ง์ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ณ , ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ํ ๋ฒ์ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์ ์ฅ์์๋ ์ฌ์ดํธ๊ฐ ๋๋ ค์ง๋ ๊ฒฝํ์ ํ ์ ์๋ค.
์ด๋ฐ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์๊น? ๋ฌผ๋ก ์ด๋ฌํ ๊ฒฝ์ฐ ๋๋ ํธ๋ํฝ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ์๋ฒ๋ฅผ ํ์ฅํ ์ ์๋ค. ํ์ง๋ง ์๋ฒ๋ฅผ ํ์ฅํ๋ค๋ ๊ฒ์ ์ฌ์ด ๊ฒ์ด ์๋๋ค. ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ถํฐ ๋ชจ๋ํฐ๋ง, ๋ณด์, ์ฑ๋ฅ ๋ฑ๋ฑ ,,, ๊ณ ๋ คํด์ผํ ์ฌํญ์ด ๋๋ฌด ๋ง๊ณ ๋ฌด์๋ณด๋ค๋ ๋น์ฉ์ด ๋ ๋ค.

์ฌ๊ธฐ์ ์๊ฐํด๋ณด์. ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฒคํธ๋ฅผ ํ๋ฒ์ ๋ชจ๋ ์ฒ๋ฆฌํ ํ์๊ฐ ์์๊น? ์ด๋ฌํ ์ด๋ฒคํธ์ ์ ํธ๋ฅผ ์ฃผ๊ณ ๋์ค์ ์ฒ๋ฆฌํด๋ ๋์ง ์์๊น? ์ฌ์ฉ์ ์ ์ฅ์์๋ ๋๋ฆฌ๋๋ผ๋ ์์ ์ด ์ ์์ ์ผ๋ก ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ค๋ ๊ฒ๋ง ํ์ธ๋ฐ์ผ๋ฉด ๊ธฐ๋ค๋ฆด ์ ์์ ๊ฒ์ด๋ค. (Ex) ํฐ์ผํ )
์ด๋ ์ฌ์ฉํ ์ ์๋๊ฒ, ๋ฐ๋ก ๋ฉ์์ง ํ์ด๋ค!
๋ฉ์์ง ํ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด ์์ผ๋ฉฐ, ๋น๋๊ธฐ ํต์ ์ ์ง์ํ๋ ๋ด๊ตฌ์ฑ ์๋ ๊ตฌ์ฑ ์์์ด๋ค. ์ฃผ๋ก ๋ฐ์ดํฐ์ ๋ฒํผ ์ญํ ์ ํ๋ฉฐ, ์์คํ
๊ฐ์ ์ปค๋ฎค๋์ผ์ด์
์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ค.
๋ณดํต ๋ฉ์์ง ํ์์๋ ์๋์ ๊ฐ์ pub/subย ๋ฐฉ์์ ์ฌ์ฉํ๋ค.

์ฌ๊ธฐ์ ๋ฉ์ธ์ง๋ฅผ ๋ฐํํ๊ณ ์ ๋ฌํ๋ ๋ถ๋ถ์ Producer ๋ผ๊ณ ํ๋ฉฐ, ๋ฉ์ธ์ง๋ฅผ ๋ฐ์์ ์๋นํ๋ ๋ถ๋ถ์ Consumer ๋ผ๊ณ ํ๋ค. ์ฌ๊ธฐ์ ๋ฉ์ธ์ง ํ๋ Producer ์ Consumer ์ ๋ฉ์ธ์ง ์ ๋ฌ ์ญํ ์ ํ๋ ๋งค๊ฐ์ฒด์ด๋ค. ์ด ๊ตฌ์กฐ๋ ์ฌ๋ฌ ์์ฐ์๋ฅผ ๊ฐ์ง ์ ์๊ณ ๋ฐ๋ํธ์๋ ์ด ๋๊ธฐ์ด์์ ์ฝ๋ ๋ง์ ์๋น์๋ ์๋ฒ๊ฐ ์์ ์ ์๋ค.
์ด ๋ฉ์์ง ํ๊ฐ ์ ๊ณตํ๋ ์ฅ์ ์ ์ด๋ฌํ ์ด๋ฒคํธ๋ฅผ ๋ถ๋ฆฌํ๋ค๋ ๊ฒ์ด๋ค!
์ฆ, ์ด ๋ฉ์์ง ๋๊ธฐ์ด์ ํตํด ์ด๋ฌํ ์ด๋ฒคํธ๋ฅผ ๋น๋๊ธฐ์์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ ์๋น์(์๋ฒ)๊ฐ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ ์๋น์์์ ์ฒ๋ฆฌํ ์ ์์ ๋๊น์ง ๋๊ธฐ์ด์ ๋ฃ์ ์ ์๋ค.
๋ํ, ์์ฐ์๊ฐ ๋ฉ์์ง๋ฅผ ๊ฒ์ํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์๋น์๋ ์ฌ์ ํ ๋๊ธฐ์ด์์ ๋ฉ์์ง๋ฅผ ์ฝ์ ๋ค์ ์ฒ๋ฆฌํ ์ ์๋ค.
ํ์ง๋ง ์์ฐ์๋ ์๋น์ ๋์ ๋ฉ์์ง ํ๊ฐ ์์๋๋ฉด ๋ชจ๋ ๊ธฐ๋ก์ด ๋ค ๋ ๋ผ๊ฐ๋? (Ex) ๊ฒฐ์ ์์ฒญ ๋ฑ๋ฑ..)
์ฌ๊ธฐ์ ์์์ผํ ๊ฒ์ ๋ฉ์์ง ํ์ ์ฃผ์ ํน์ฑ ์ค์ ๋ด๊ตฌ์ฑ(Durability)์ด๋ผ๋ ๊ฒ์ด ์๋ค.
์ฆ, ํ๊ฐ ๋ฐ์ดํฐ๋ฅผ RAM์ด ์๋ ๋์คํฌ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์์คํ
์ถฉ๋์ด๋ ์ ์์ด ๊บผ์ง๋ ๋ฑ์ ์ํฉ์์๋ ๋ฐ์ดํฐ๊ฐ ์์ค๋์ง ์๋๋ค.
๋ฐ๋ผ์ ์๋น์(๋ฉ์์ง๋ฅผ ๋ฐ๋ ํ๋ก์ธ์ค or ์๋ฒ)๊ฐ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋ ๋์ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋ฉ์์ง๋ ์์ ํ๋ค! ์๋ฅผ ๋ค์ด, ์๋ฒ๊ฐ ๊ฐ์๊ธฐ ์ข
๋ฃ๋์ด๋ ๋ฉ์์ง๋ ํ์ ๊ทธ๋๋ก ๋จ์์๋ค.
+) ์ ๋ช ํ ๋ฉ์์ง ํ ์์คํ ๋ค์๋ Apache Kafka, RabbitMQ, Redis ๋ฑ์ด ์๋ค.
[์ด์์ฒด์ ] IPC (Inter Process Communication), ํ๋ก์ธ์ค ๊ฐ ํต์
Message Queues in System Design
05-2 ํ๋ก์ธ์ค๊ฐ ํต์ (IPC)