IPC (Inter Process Communication)
ํ๋ก์ธ์ค ๊ฐ ํต์ (Inter-Process Communication, IPC)์ด๋, ํ๋ก์ธ์ค๋ค ์ฌ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํ์ ๋๋ ๊ทธ์ ๋ํ ๋ฐฉ๋ฒ์ด๋ ๊ฒฝ๋ก๋ฅผ ๋ปํ๋ค.
ํ๋ก์ธ์ค(Process)๋ ๋
๋ฆฝ์ ์ผ๋ก ์คํ๋๋ ๊ฐ์ฒด์ง๋ง, ์ ๋ณด ๊ณต์ , ๊ณ์ฐ ์๋ ํฅ์, ๋ชจ๋์ฑ, ํธ์์ฑ ๋ฑ์ ์ํด ํต์ ์ ํ์๋ก ํ ์ ์์ผ๋ฉฐ,
๋
๋ฆฝ์ ์ธ ํ๋ก์ธ์ค ๊ฐ์ ํต์ ์ ์ํด์๋ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๋ IPC ๋งค์ปค๋์ฆ ์ด ํ์ํ๋ค.
ย IPC Model
IPC์ ๋ ๊ฐ์ง ๊ธฐ๋ณธ ๋ชจ๋ธ์๋ ๋ฉ์์ง ํจ์ฑ ๊ณผ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ ์๋ค.
1. ๋ฉ์์ง ํจ์ฑ ๋ชจ๋ธ (Message-passing Model)
โข
๋ฉ์์ง ํจ์ฑ ๋ชจ๋ธ์ ํ๋ ฅ ํ๋ก์ธ์ค ๊ฐ์ ๊ตํ๋๋ ๋ฉ์์ง๋ฅผ ํตํด ํต์ ์ด ๋ฐ์ํ๋ค.
โข
๋ฉ์์ง ํ๋ฅผ ์ฌ์ฉํ์ฌ, ํ๋ก์ธ์ค ๊ฐ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๊ฒ ๋๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ์ปค๋์ ์์คํ
์ฝ์ ์ฌ์ฉํ์ฌ ๊ตฌํ๋๋ค.
โข
์ปค๋์ ๊ฐ์
์ผ๋ก ๋๊ธฐํ ๋ฌธ์ ๋ก๋ถํฐ ์์ ํ๋ค๋ ์ฅ์ ์ด ์๋ค.
โข
์ปค๋์ด ๊ฐ์
ํ๋ฏ๋ก ๋น๊ต์ ๋ง์ ์๊ฐ์ด ์์๋๋ค๋ ๋จ์ ์ด ์๋ค.
๋ฉ์์ง ํจ์ฑ ๋ชจ๋ธ์ IPC๋ ์ธ๊ฐ์ง ์์๊ฐ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋ ์ ์๋ค.
1.
Direct Communication๊ณผ Indirect Communication
โข
Direct Communication : ํ๋ก์ธ์ค๊ฐ ์ปค๋์ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ฉด, ์ปค๋์ด ์๋ ํ๋ก์ธ์ค์ ๋ฉ์์ง๋ฅผ ์ง์ ์ ๋ฌํ๋ค.
โข
Indirect Communication : ํ๋ก์ธ์ค๊ฐ ์ปค๋์ ๋ฉ์์ง๋ฅผ ๋ฃ์ด๋๊ณ , ์๋ ํ๋ก์ธ์ค๊ฐ ์ปค๋์์ ํด๋น ๋ฉ์์ง๋ฅผ ์ฝ์ด์จ๋ค.
2.
Synchronous
โข
Blocking : ๋ ํ๋ก์ธ์ค๋ ๋ฉ์์ง๊ฐ ์์ ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค.
โข
Non-Blocking : ์ก์ ์ธก์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ์์ ์ ํ ์ผ์ ํ๋ค. ์์ ์ธก๋ ์์ ๋ฌธ์ ์คํํ๊ณ ๋ ๊ณ์ ์์
์ ์ด์ด๊ฐ๋ค.
3.
Buffering
โข
Zero Capcity : ์ก์ ์ธก์ ๋ฌด์กฐ๊ฑด ์์ ์๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค.
โข
Bounded Capacity : ์ก์ ์ธก์ link๊ฐ ๊ฝ์ฐจ๋ฉด ๊ธฐ๋ค๋ฆฐ๋ค.
โข
Unbounded Capacity : ์ก์ ์ธก์ ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค.
2. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ (Shared-memory Model)
โข
๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ์ ํ๋ก์ธ์ค ๊ฐ์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ค์ ํ ๋ค์, ๊ณต์ ์์ญ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ๋ฐฉ์์ผ๋ก ์ ๋ณด๋ฅผ ๊ตํํ๋ค.
โข
์์คํ
์ฝ์ด ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ค์ ํ ๋์๋ง ํ์ํ๋ฏ๋ก, ์ปค๋์ ๊ฐ์
์ด ์ ์ด, ๋ฉ์์ง ํจ์ฑ ๋ชจ๋ธ๋ณด๋ค ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋ค.
โข
๋๊ธฐํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ค๋ ๋จ์ ์ด ์๋ค.
ย IPC ์ค๋น
โข
๋ฉ์์ง ํจ์ฑ ๋ชจ๋ธ : PIPE, FIFO, Message Queue , Socket , Semaphore
โข
๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ : Shared Memory, Memory Map
โข
Traditional Unix IPCs : Signal , Pipe , Socket
โข
System V IPCs : message queue , semaphore , shared memory
ย PIPE
ํ์ดํ(PIPE)๋ ๋ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ์ฐ๊ฒฐํ๋ฉฐ, ํ๋์ ํ๋ก์ธ์ค๋ ์ฐ๊ธฐ๋ง ๊ฐ๋ฅํ๊ณ , ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ ํํ์ด๋ค.
์ด๋ฌํ ํน์ฑ์ผ๋ก ๋ฐ์ด์ฆ (Half-Duplex) ํต์ ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ง์ผ ๋ ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ ์ฝ๊ธฐ์ ์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํ๋๋ก ํ๊ณ ์ถ๋ค๋ฉด, ํ์ดํ๋ฅผ ๋ ๊ฐ ๋ง๋ค์ด ์ฌ์ฉํด์ผ ํ๋ค.
ํ์ง๋ง ์ด๋ ๊ตฌํ์ด ๋ณต์กํ๋ค. ๋ฐ๋ผ์ ์ ์ด์ค ํต์ ์ด ํ์ํ ์ํฉ์์๋ ๋ถ์ ํฉ ํ ์ ์๋ค.