
ํ๋ก์ธ์ค๋ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ค. ์ฆ, ๋ ๋ฆฝ์ ์ด๋ผ๋ ๊ฒ์ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ์ํฅ์ ๋ฐ์ง ์๋๋ค๋ ์๋ฏธ์ด๋ค. (์ค๋ ๋๋ ํ๋ก์ธ์ค ์์์ ์์์ ๊ณต์ ํ๋ฏ๋ก ์ํฅ์ ๋ฐ๋๋ค.)
์ด๋ฌํ ๋ ๋ฆฝ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค ๊ฐ์ ํต์ ์ด ํ์ํ ๋๊ฐ ์๋ค. ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก IPC ํต์ ์ด๋ค. ํ๋ก์ธ์ค๋ ์ปค๋์ด ์ ๊ณตํ๋ IPC ์ค๋น๋ฅผ ์ด์ฉํ์ฌ ์๋ก ํต์ ํ ์ ์๊ฒ ๋๋ค.
์ด์์ฒด์ ์ ํต์ฌ์ ์ธ ๋ถ๋ถ์ผ๋ก, ๋ค๋ฅธ ๋ชจ๋ ๋ถ๋ถ์ ์ฌ๋ฌ ๊ธฐ๋ณธ์ ์ธ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
IPC ์ค๋น์ ์ข ๋ฅ๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ผ๋ฉฐ, ํ์์ ๋ฐ๋ผ ์ ์ ํ IPC ์ค๋น๋ฅผ ์ ํํด์ ์ฌ์ฉํด์ผ ํ๋ค.
์ต๋ช PIPE
ํ์ดํ๋ ๋ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ํ๋์ ํ๋ก์ธ์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ธฐ๋ง ํ๊ณ ๋ค๋ฅธ ํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ๋ง ํ ์ ์๋ค.
ํ์ชฝ ๋ฐฉํฅ์ผ๋ก๋ง ํต์ ์ด ๊ฐ๋ฅํ ๋ฐ์ด์ค ํต์ ์ด๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
๋ฐ๋ผ์ ์์ชฝ์ผ๋ก ์ก์์ ์ ํ๊ณ ์ถ์ผ๋ฉด 2๊ฐ์ ํ์ดํ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
๋งค์ฐ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์๋ ์ฅ์ ์ด ์์ผ๋, ์ ์ด์ค ํต์ ์ ์ํด 2๊ฐ๋ฅผ ๋ง๋ค์ด์ผ ํ ๋๋ ๊ตฌํ์ด ๋ณต์กํด์ง๋ค.
Named PIPE (FIFO)
์ต๋ช ํ์ดํ๋ ํต์ ํ ํ๋ก์ธ์ค๋ฅผ ๋ช ํํ ์ ์ ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋๋ค. (๋ถ๋ชจ-์์ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ฒ๋ผ)
Named ํ์ดํ๋ ์ ํ ๋ชจ๋ฅด๋ ์ํ์ ํ๋ก์ธ์ค๋ค ์ฌ์ด์์ ํต์ ํ ๋ ์ฌ์ฉ๋๋ค.
์ฆ, ์ต๋ช ํ์ดํ์ ํ์ฅ๋ ํํ๋ก ๋ถ๋ชจ ํ๋ก์ธ์ค์ ๋ฌด๊ดํ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ํต์ ์ด ๊ฐ๋ฅํ ๊ฒ์ด๋ค. (ํต์ ์ ์ํด ์ด๋ฆ ์๋ ํ์ผ์ ์ฌ์ฉ)
๊ทธ๋ฌ๋ Named ํ์ดํ ์ญ์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋์์ ๋ถ๊ฐ๋ฅํ๋ฏ๋ก, ์ ์ด์ค ํต์ ์ ์ํด์๋ ์ต๋ช ํ์ดํ์ฒ๋ผ 2๊ฐ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
Message Queue
์ ์ถ๋ ฅ ๋ฐฉ์์ Named ํ์ดํ์ ๋์ผํ๋ค.
๋ค๋ฅธ ์ ์ ๋ฉ์์ง ํ๋ ํ์ดํ์ฒ๋ผ ๋ฐ์ดํฐ์ ํ๋ฆ์ด ์๋๋ผ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด๋ค.
์ฆ, ํ์ดํ๋ 1:1๋ก ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ณ ๋์์ ์ฝ์ด๋๋ฆฌ๋ ๋๊ธฐ์ ์ธ ๋ฐ์ดํฐ ํ๋ฆ ๊ตฌ์กฐ๋ผ๋ฉด, ํ๋ ์ ์ฌํด๋์๋ค๊ฐ ํ์ํ ๋ ๋น๋๊ธฐ์ ์ผ๋ก ๋นผ๋ด์ ์ฐ๋ ํ ํํ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด๋ค.
์ฌ์ฉํ ๋ฐ์ดํฐ์ ๋ฒํธ(์๋ณ๋ฒํธ)๋ฅผ ๋ถ์ด๋ฉด์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ๋ค๋ฅธ ์๋ณ๋ฒํธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์์ผ๋ฉฐ, ๊ฐ์ ์๋ณ๋ฒํธ์ ๋์ ์ ๊ทผ์ผ๋ก๋ถํฐ ๋ณดํธ๋๋ค.
๊ณต์ ๋ฉ๋ชจ๋ฆฌ
ํ์ดํ, ๋ฉ์์ง ํ๊ฐ ํต์ ์ ์ด์ฉํ ์ค๋น๋ผ๋ฉด, ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฐ์ดํฐ ์์ฒด๋ฅผ ๊ณต์ ํ๋๋ก ์ง์ํ๋ ์ค๋น์ด๋ค.
ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ง๋ฉฐ, ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ๋ฐ๋์ ๋ณดํธ๋์ด์ผ ํ๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ๋ ํ์ํ ์ ์๋ค.
ํ์ดํ๋ฅผ ์ด์ฉํด ํต์ ์ ํตํด ๋ฐ์ดํฐ ์ ๋ฌ์ด ๊ฐ๋ฅํ์ง๋ง, ์ค๋ ๋์ฒ๋ผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๋๋ก ํด์ค๋ค๋ฉด ๋์ฑ ํธ๋ฆฌํ๋ค.
๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ ํ๋ก์ธ์ค ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํด์ ์ฌ์ฉํ ์ ์๋๋ก ํ์ฉํ๋ค.
ํ๋ก์ธ์ค๊ฐ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ปค๋์ ์์ฒญํ๋ฉด, ์ปค๋์ ํด๋น ํ๋ก์ธ์ค์ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ(๋ณ๊ฐ์ ๊ณต๊ฐ)์ ํ ๋นํด์ฃผ๊ณ , ์ดํ ๋ชจ๋ ํ๋ก์ธ์ค๋ ํด๋น ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ๊ทผํ ์ ์๊ฒ ๋๋ค.
์ค๊ฐ์ ์์ด ๊ณง๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์์ด IPC ์ค ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์๋ํ๋ค.
๋ฉ๋ชจ๋ฆฌ ๋งต
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ผ์ ๋ค๋ฃจ๋ ๋ฐฉ์์์๋ ํ์ผ์ ๋ณต์ฌ๋ณธ์ ๋ฒํผ ๋ฑ์ ๋ถ๋ฌ์์ ํ์ผ์ ๋ณต์ฌ๋ณธ์ ๋ง์ง๊ณ ์ด๋ฅผ ๋ฐ์ํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ค.
๋ฉ๋ชจ๋ฆฌ ๋งต์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ฒ๋ผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํด์ค๋ค. ๋ฉ๋ชจ๋ฆฌ ๋งต์ ๊ณต์ ๋ฅผ ํ ๋น๋ฐ์์จ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ฆฐ ํ์ผ์ ๋งตํ์์ผ์ ๊ณต์ ํ๋ ๋ฐฉ์์ด๋ค. (์ฆ, ๊ณต์ ๋งค๊ฐ์ฒด๊ฐ ํ์ผ+๋ฉ๋ชจ๋ฆฌ)
ํ์ผ์ ๋งตํํ ๋, ์ฃผ์๊ฐ์ ๋งคํ์์ผ์ ํ์ผ์ ์ง์ ์ ๊ทผํ๋ ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
์ฃผ๋ก ํ์ผ๋ก ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํด์ผ ํ ๋ ์ฌ์ฉ๋๋ค.
์์ผ
ํด๋ผ์ด์ธํธ-์๋ฒ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ IPC์ ํ ํํ์ด๋ค.
์์ผ์ ๋คํธ์ํฌ ์์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ข ๋จ์ (endpoint)์ ๋ํ๋ด๋ ์ถ์ ๊ฐ๋ ์ด๋ค.
๋คํธ์ํฌ ์์ผ ํต์ ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ฉฐ, ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์์ผ์ ํตํด ํต์ ํ๋ ๊ตฌ์กฐ๋ก ์๊ฒฉ์์ ํ๋ก์ธ์ค ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ๋ ์ฌ์ฉ๋๋ค.
์๋ฒ ์ธก์์ ํต์ ์ ์ฌ์ฉํ ์์ผ์ ์์ฑํ๊ณ , ์์ฑ๋ ์์ผ์ ํน์ IP ์ฃผ์์ ํฌํธ ๋ฒํธ์ bindํ๋ค. ์ด๋ ๊ฒ ๋ฐ์ธ๋ฉ๋ ์์ผ์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ ์์ฒญ์ listen(๋๊ธฐ) ํ๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ ์์ฒญ์ ๋ณด๋ด๋ฉด, ์ด ์์ฒญ์ acceptํ์ฌ ํด๋ผ์ด์ธํธ์์ ํต์ ์ ์ํํ๋ค.
ํด๋ผ์ด์ธํธ ์ธก์์๋ ์์ผ์ ์์ฑํ๊ณ ์๋ฒ๊ฐ ๋ฐ์ธ๋ฉํ IP ์ฃผ์์ ํฌํธ ๋ฒํธ๋ก ์ฐ๊ฒฐ ์์ฒญ(connect)๋ฅผ ๋ณด๋ธ๋ค. ์๋ฒ๊ฐ ์ฐ๊ฒฐ ์์ฒญ์ ์๋ฝํ๋ฉด ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ๋๋ค.
์ด๋ฌํ IPC ํต์ ์์ ํ๋ก์ธ์ค ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํ๊ณ ๋ณดํธํ๊ธฐ ์ํด ์ธ๋งํฌ์ด์ ๋ฎคํ ์ค๋ฅผ ์ฌ์ฉํ๋ค. (๊ณต์ ๋ ์์์ ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์ ๊ทผํ ์ ์๋๋ก ํ ๋)
[1] GitHub - IPC(Inter Process Communication).md (https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Operating%20System/IPC(Inter%20Process%20Communication).md)
[2] velog - [์ด์์ฒด์ ] ํ๋ก์ธ์ค์ ์ค๋ ๋(feat.IPC) (https://velog.io/@tjdtn0219/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9Cfeat.IPC)
[3] ํฐ์คํ ๋ฆฌ - [IPC] Inter Process Communication - ๋ฏธ์คํฐ๋ฆฌ์ IT ๊ณต๋ถ ์ผ๊ธฐ (https://mysterlee.tistory.com/104)
[4] ๊ฐ๋ฐ์ ๋ฐฐ์จ - [์ด์์ฒด์ 8ํธ] IPC๋ ๋ฌด์์ธ๊ฐ - ๊ฐ๋ฐ์ ๋ฐฐ์จ - ํฐ์คํ ๋ฆฌ (https://baebalja.tistory.com/359)