ํ๋ก์ธ์ค๋ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ค. ์ฆ, ๋ ๋ฆฝ ๋์ด์๋ค๋ ๊ฒ์ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ์ํฅ์ ๋ฐ์ง ์๋๋ค๊ณ ๋งํ ์ ์๋ค. (์ค๋ ๋๋ ํ๋ก์ธ์ค ์์์ ์์์ ๊ณต์ ํ๋ฏ๋ก ์ํฅ์ ๋ฐ๋๋ค)
์ด๋ฐ ๋ ๋ฆฝ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค ๊ฐ์ ํต์ ์ ํด์ผ ํ๋ ์ํฉ์ด ์์ ๊ฒ์ด๋ค. ์ด๋ฅผ ๊ฐ๋ฅํ๋๋ก ํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก IPC ํต์ ์ด๋ค.
ํ๋ก์ธ์ค๋ ์ปค๋์ด ์ ๊ณตํ๋ IPC ์ค๋น๋ฅผ ์ด์ฉํด ํ๋ก์ธ์ค๊ฐ ํต์ ์ ํ ์ ์๊ฒ ๋๋ค.
์ด์์ฒด์ ์ ํต์ฌ์ ์ธ ๋ถ๋ถ์ผ๋ก, ๋ค๋ฅธ ๋ชจ๋ ๋ถ๋ถ์ ์ฌ๋ฌ ๊ธฐ๋ณธ์ ์ธ ์๋น์ค๋ฅผ ์ ๊ณตํด์ค
IPC ์ค๋น ์ข ๋ฅ๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋ค. ํ์์ ๋ฐ๋ผ IPC ์ค๋น๋ฅผ ์ ํํด์ ์ฌ์ฉํด์ผ ํ๋ค.
IPC๋
IPC (Inter-Process Communication) - ํ๋ก์ธ์ค ๊ฐ ํต์ : ์ด๋ ๋์ผํ ์์คํ ์์ ์คํ ์ค์ธ ๋ ํ๋ก์ธ์ค ๋๋ ์ค๋ ๋ ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐฉ๋ฒ์ ๋งํฉ๋๋ค. ์ด๋ ๋ค์ํ ํํ๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ,ํ์ดํ, ์์ผ, ๋ฉ์์ง ํ, ๊ณต์ ๋ฉ๋ชจ๋ฆฌ
๋ฑ์ด ํฌํจ๋ฉ๋๋ค.
์ต๋ช PIPE
ํ์ดํ๋ ๋ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ์ฐ๊ฒฐํ๋๋ฐ ํ๋์ ํ๋ก์ธ์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ธฐ๋ง ํ๊ณ , ๋ค๋ฅธ ํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ๋ง ํ ์ ์๋ค.
ํ์ชฝ ๋ฐฉํฅ์ผ๋ก๋ง ํต์ ์ด ๊ฐ๋ฅํ ๋ฐ์ด์ค ํต์ ์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
๋ฐ๋ผ์ ์์ชฝ์ผ๋ก ๋ชจ๋ ์ก/์์ ์ ํ๊ณ ์ถ์ผ๋ฉด 2๊ฐ์ ํ์ดํ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
๋งค์ฐ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์๋ ์ฅ์ ์ด ์๊ณ , ๋จ์ํ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ์ง ๋ ํ์ดํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค. ๋จ์ ์ผ๋ก๋ ์ ์ด์ค ํต์ ์ ์ํด 2๊ฐ๋ฅผ ๋ง๋ค์ด์ผ ํ ๋๋ ๊ตฌํ์ด ๋ณต์กํด์ง๊ฒ ๋๋ค.
๋ฐ์ด์ค ํต์ (Half-Duplex Communication)์ ๋ ๊ธฐ๊ธฐ ๊ฐ์ ์๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅํ์ง๋ง, ํ ๋ฒ์ ํ ๋ฐฉํฅ์ผ๋ก๋ง ํต์ ์ด ๊ฐ๋ฅํ ๋ฐฉ์์ ์๋ฏธํฉ๋๋ค. ์ฆ, ํ ๊ธฐ๊ธฐ๋ ํ ์์ ์ ์ ์กํ๊ฑฐ๋ ์์ ์ค ํ๋๋ง ํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด์, ์ ์ก๊ณผ ์์ ์ด ๋์์ ์ด๋ฃจ์ด์ง๋ ํต์ ์ ์ ์ด์ค ํต์ (Full-Duplex Communication)์ด๋ผ๊ณ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ํคํ ํค๋ ๋ํ์ ์ธ ๋ฐ์ด์ค ํต์ ๊ธฐ๊ธฐ์ ๋๋ค. ํ ์ฌ๋์ด ๋งํ๊ณ ์์ผ๋ฉด ๋ค๋ฅธ ์ฌ๋์ ๋ฃ๊ธฐ๋ง ํ ์ ์๊ณ , ๋งํ๊ธฐ ์ํด์๋ ์๋๋ฐฉ์ด ๋งํ๋ ๊ฒ์ ๋ฉ์ถ์ด์ผ ํฉ๋๋ค. ๋ฐ๋ฉด์, ์ผ๋ฐ์ ์ธ ์ ํ ํตํ๋ ์ ์ด์ค ํต์ ์ผ๋ก, ๋ ์ฌ๋์ด ๋์์ ๋งํ๊ณ ๋ค์ ์ ์์ต๋๋ค.
๋ฐ์ด์ค ํต์ ์ ํ๋์จ์ด ์ค๊ณ๊ฐ ๊ฐ๋จํ๊ณ ๋น์ฉ์ด ๋ ๋ค์ง๋ง, ์ ์ด์ค ํต์ ์ ๋นํด ํต์ ํจ์จ์ด ๋ฎ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ์์ฉ ๋ถ์ผ์์ ๋์ ์๋ฐฉํฅ ํต์ ์ด ํ์ํ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์, ํน์ ์ํฉ์์๋ ๋ฐ์ด์ค ํต์ ์ด ๋ ์ ํฉํ ์ ์์ต๋๋ค.
Named PIPE(FIFO)
์ต๋ช ํ์ดํ๋ ํต์ ํ ํ๋ก์ธ์ค๋ฅผ ๋ช ํํ ์ ์ ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค. (๋ถ๋ชจ-์์ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ฒ๋ผ)
Named ํ์ดํ๋ ์ ํ ๋ชจ๋ฅด๋ ์ํ์ ํ๋ก์ธ์ค๋ค ์ฌ์ด ํต์ ์ ์ฌ์ฉํ๋ค.
์ฆ, ์ต๋ช ํ์ดํ์ ํ์ฅ๋ ์ํ๋ก ๋ถ๋ชจ ํ๋ก์ธ์ค์ ๋ฌด๊ดํ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ํต์ ์ด ๊ฐ๋ฅํ ๊ฒ (ํต์ ์ ์ํด ์ด๋ฆ์๋ ํ์ผ์ ์ฌ์ฉ)
ํ์ง๋ง, Named ํ์ดํ ์ญ์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋์์ ๋ถ๊ฐ๋ฅํจ. ๋ฐ๋ผ์ ์ ์ด์ค ํต์ ์ ์ํด์๋ ์ต๋ช ํ์ดํ์ฒ๋ผ 2๊ฐ๋ฅผ ๋ง๋ค์ด์ผ ๊ฐ๋ฅ
Message Queue
์ ์ถ๋ ฅ ๋ฐฉ์์ Named ํ์ดํ์ ๋์ผํจ
๋ค๋ฅธ์ ์ ๋ฉ์์ง ํ๋ ํ์ดํ์ฒ๋ผ ๋ฐ์ดํฐ์ ํ๋ฆ์ด ์๋๋ผ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด๋ค.
์ฌ์ฉํ ๋ฐ์ดํฐ์ ๋ฒํธ๋ฅผ ๋ถ์ด๋ฉด์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๋ค.
๊ณต์ ๋ฉ๋ชจ๋ฆฌ
ํ์ดํ, ๋ฉ์์ง ํ๊ฐ ํต์ ์ ์ด์ฉํ ์ค๋น๋ผ๋ฉด, ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฐ์ดํฐ ์์ฒด๋ฅผ ๊ณต์ ํ๋๋ก ์ง์ํ๋ ์ค๋น๋ค.
ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ง๋ฉฐ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ๋ฐ๋์ ๋ณดํธ๋ผ์ผํ๋ค. ํ์ง๋ง ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋๋ก ํด์ผํ๋ ์ํฉ๋ ํ์ํ ๊ฒ์ด๋ค. ํ์ดํ๋ฅผ ์ด์ฉํด ํต์ ์ ํตํด ๋ฐ์ดํฐ ์ ๋ฌ๋ ๊ฐ๋ฅํ์ง๋ง, ์ค๋ ๋์ฒ๋ผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๋๋ก ํด์ค๋ค๋ฉด ๋์ฑ ํธํ ๊ฒ์ด๋ค.
๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํด์ ์ฌ์ฉํ ์ ์๋๋ก ํ์ฉํด์ค๋ค.
ํ๋ก์ธ์ค๊ฐ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ปค๋์ ์์ฒญํ๋ฉด, ์ปค๋์ ํด๋น ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํด์ฃผ๊ณ ์ดํ ๋ชจ๋ ํ๋ก์ธ์ค๋ ํด๋น ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ๊ทผํ ์ ์๊ฒ ๋๋ค.
- ์ค๊ฐ์ ์์ด ๊ณง๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์์ด์ IPC ์ค์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์๋ํจ
๋ฉ๋ชจ๋ฆฌ ๋งต
๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ฒ๋ผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํด์ค๋ค. ๋ฉ๋ชจ๋ฆฌ ๋งต์ ์ด๋ฆฐ ํ์ผ์ ๋ฉ๋ชจ๋ฆฌ์ ๋งตํ์์ผ์ ๊ณต์ ํ๋ ๋ฐฉ์์ด๋ค. (์ฆ ๊ณต์ ๋งค๊ฐ์ฒด๊ฐ ํ์ผ+๋ฉ๋ชจ๋ฆฌ)
์ฃผ๋ก ํ์ผ๋ก ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํด์ผ ํ ๋ ์ฌ์ฉํ๋ค.
๋ฉ๋ชจ๋ฆฌ ๋งต ํ์ผ(memory-mapped file)์ ํ์ผ์ ๋ด์ฉ์ ๋ฉ๋ชจ๋ฆฌ์ ๋งคํํ์ฌ ํ์ผ์ ์ผ๋ถ ๋๋ ์ ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์์ ๋๋ ๊ธฐ์ ์ ๋๋ค. ์ด๋ ํ์ผ ์ ์ถ๋ ฅ์ ๋ ํจ์จ์ ์ผ๋ก ๋ง๋ค๋ฉฐ, ํนํ ๋์ฉ๋ ๋ฐ์ดํฐ์ ๋ํ ์์ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
๋ํ, ๋ฉ๋ชจ๋ฆฌ ๋งต ํ์ผ์ ํ๋ก์ธ์ค ๊ฐ์ ํต์ (IPC, Inter-Process Communication)์์๋ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๋์ผํ ํ์ผ์ ๋ฉ๋ชจ๋ฆฌ์ ๋งตํํ๋ฉด, ์ด๋ค์ ๋งตํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก์จ, ํ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋ฐ์ดํฐ๋ฅผ ์ง์ ์ ๋ฌํ ์ ์์ผ๋ฉฐ, ์ด๋ ๋์คํฌ์ ํ์ผ์ ์ฝ๊ณ ์ฐ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ฒ ์๋ํฉ๋๋ค.
๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ ๋งต ํ์ผ์ ํ์ผ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ๊ณต์ ์ ๊ณ ์ ๋ฐ์ดํฐ ์ก์ธ์ค๋ฅผ ๋์์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ์ผ ์์คํ , ํ ์คํธ ๊ฒ์, ๊ทธ๋ํฝ ๋ฑ ๋ค์ํ ์์ฉ ๋ถ์ผ์์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ค๋ง ์ฃผ์ํด์ผ ํ ์ ์, ๋ฉ๋ชจ๋ฆฌ ๋งต ํ์ผ์ ์ฌ์ฉํ ๋๋ ๋๊ธฐํ์ ๊ด๋ จ๋ ๋ฌธ์ ์ ์ ๊ฒฝ์ ์จ์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๋์์ ๋ฉ๋ชจ๋ฆฌ ๋งต ํ์ผ์ ์์ ํ๋ ค๊ณ ํ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ ์ ํ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์์ผ
๋คํธ์ํฌ ์์ผ ํต์ ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ค.
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์์ผ์ ํตํด์ ํต์ ํ๋ ๊ตฌ์กฐ๋ก, ์๊ฒฉ์์ ํ๋ก์ธ์ค ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ๋ ์ฌ์ฉํ๋ค.
์๋ฒ(bind, listen, accept), ํด๋ผ์ด์ธํธ(connect)
์์ผ(Socket)์ ๋คํธ์ํฌ์์ ์๋ํ๋ ํ๋ก๊ทธ๋จ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๋ ๋์ (endpoint)์ ์๋ฏธํฉ๋๋ค. ๋คํธ์ํฌ ์ดํ๋ฆฌ์ผ์ด์ ์ ์์ผ์ ํตํด ๋คํธ์ํฌ ํ๋กํ ์ฝ ์คํ๊ณผ ์ํธ ์์ฉํ๋ฉฐ, ์ด๋ฅผ ํตํด ์๊ฒฉ ์์คํ ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์ต๋๋ค.
์์ผ ํ๋ก๊ทธ๋๋ฐ์ ์ธํฐ๋ท์ ํตํ ํด๋ผ์ด์ธํธ-์๋ฒ ํต์ ์์ ํต์ฌ์ ์ธ ๊ฐ๋ ์ ๋๋ค. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ์์ผ์ ์์ฑํ๊ณ , ์๋ฒ ์ญ์ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ์๋ฝํ๊ธฐ ์ํด ์์ผ์ ์ฌ์ฉํฉ๋๋ค. ์ฐ๊ฒฐ์ด ์๋ฆฝ๋๋ฉด, ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ์๋ก์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์ต๋๋ค.
์์ผ์ ์ฃผ๋ก ๋ ๊ฐ์ง ์ ํ์ด ์์ต๋๋ค:
1. TCP ์์ผ: TCP (Transmission Control Protocol)๋ ์ฐ๊ฒฐ ์งํฅ์ ์ธ ํ๋กํ ์ฝ๋ก, ๋ฐ์ดํฐ์ ์์์ ์ ๋ฌ์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํฉ๋๋ค. ์ด๋ ์น ๋ธ๋ผ์ฐ์ง, ์ด๋ฉ์ผ ์ ์ก, ํ์ผ ์ ์ก ๋ฑ์ ์ฌ์ฉ๋ฉ๋๋ค.
- UDP ์์ผ: UDP (User Datagram Protocol)๋ ๋น์ฐ๊ฒฐํ ํ๋กํ ์ฝ๋ก, TCP๋ณด๋ค ๋น ๋ฅด์ง๋ง ์์๋ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ์ง ์์ต๋๋ค. ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ, ์จ๋ผ์ธ ๊ฒ์ ๋ฑ์์ ์ฌ์ฉ๋ฉ๋๋ค.
ํ์ด์ฌ์์๋ socket
๋ชจ๋์ ํตํด ์์ผ ํ๋ก๊ทธ๋๋ฐ์ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ-์๋ฒ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌํํ ์ ์์ต๋๋ค.
์ด๋ฌํ IPC ํต์ ์์ ํ๋ก์ธ์ค ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํ๊ณ ๋ณดํธํ๊ธฐ ์ํด ์ธ๋งํฌ์ด์ ๋ฎคํ ์ค๋ฅผ ์ฌ์ฉํ๋ค. (๊ณต์ ๋ ์์์ ํ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์ ๊ทผ์ํฌ ๋)