728x90
IPC(Inter Process Communication)
- ๋ ๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ๋ ํ๋ก์ธ์ค ๊ฐ์ ํต์ ๊ธฐ๋ฒ
- ํ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์์์ ์ฌ์ฉํ๊ธฐ ์ํด ๋์์ ์ ๊ทผ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ ์ฆ, ํ๋ก์ธ์ค๋ค์ด ๊ณต์ ํ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์
- ์ปค๋ ์์ญ์์ IPC๋ผ๋ ๋ด๋ถ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ค๋น๋ฅผ ์ ๊ณต
1. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ (Shared Memory)
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ(Shared Memory)๊ฐ ๋ฐ์ดํฐ ์์ฒด๋ฅผ ๊ณต์ ํ๋๋ก ์ค๋น
- ํ๋ก์ธ์ค๊ฐ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ปค๋์ ์์ฒญํ๋ฉด ์ปค๋์ ํด๋น ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋น
- ๋ชจ๋ ํ๋ก์ธ์ค๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์์
- Text์ Data ์์ญ ์ฌ์ด ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ํฌ์ธํ ๊ณต๊ฐ (๊ฐ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฒจ๋ถ๋๋ ๋ฐฉ์)
- ํ๋ก์ธ์ค ๊ฐ Read, Write๋ฅผ ๋ชจ๋ ํ์๋ก ํ ๋ ์ฌ์ฉ
- ์ค๊ฐ์ ์์ด ๊ณง๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ IPC ์ค ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์๋
- ๋๊ธฐํ์ ์ฃผ์
2. ํ์ดํ (Pipe)
- ํต์ ์ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ(๋ฒํผ)์ ์์ฑํ์ฌ ํ๋ก์ธ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ฒ๋ ํจ
- ๋จ๋ฐฉํฅ ํต์ ์ง์
2-1) ์ต๋ช ํ์ดํ (Anonymous PIPE)
- ์ต๋ช
์ PIPE๋ฅผ ํตํด ๋์ผํ ๋ถ๋ชจ-์์ or ํ์ ํ๋ก์ธ์ค ๊ฐ์ ๋จ๋ฐฉํฅ ํต์ ์ ์ง์
- ํต์ ํ ํ๋ก์ธ์ค๋ฅผ ๋ช ํํ ์ ์ ์์ด์ผ ํจ
- ์ธ๋ถ ํ๋ก์ธ์ค์์ ์ฌ์ฉํ ์ ์์
- ํ์ดํ๋ก ๋ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ์ฐ๊ฒฐํ๊ณ ํ๋์ ํ๋ก์ธ์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ธฐ๋ง, ๋ค๋ฅธ ํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ๋ง ํจ
- ํ์ชฝ ๋ฐฉํฅ์ผ๋ก๋ง ํต์ ์ด ๊ฐ๋ฅํ ํ์ดํ์ ํน์ฑ ๋๋ฌธ์ ๋ฐ์ด์ค(Half-Duplex) ํต์ ์ด๋ผ๊ณ ๋ ๋ถ๋ฆ
- ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์์ง๋ง ์ ์ด์ค ํต์ ์ผ๋ก ์ก/์์ ์ ๋ชจ๋ ํ๋ ค๋ฉด ๋ ๊ฐ์ ํ์ดํ๋ฅผ ๋ง๋ค์ด์ผ ํด์ ๊ตฌํ์ด ๋ณต์กํด์ง
- pipe ํจ์๋ก ์์ฑ
2-2) ๋ค์๋ ํ์ดํ (Named PIPE)
- ์ด๋ฆ์ด ์๋ ํ์ผ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ ํ๋ก์ธ์ค์ ๋ฌด๊ดํ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ผ๋ฆฌ๋ ํต์ ๊ฐ๋ฅ
- ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ด PIPE ์ด๋ฆ๋ง ์๋ฉด ํต์ ๊ฐ๋ฅ
- ์ธ๋ถ ํ๋ก์ธ์ค๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ์ต๋ช ํ์ดํ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐ์ด์ค ํต์ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ์ ์ด์ค ํต์ ์ ์ํด์๋ ๋ ๊ฐ์ ํ์ดํ๋ฅผ ๋ง๋ค์ด์ผํด ๊ตฌํ์ด ๋ณต์กํด์ง
- mkfifo๋ mknod ํจ์๋ก ์์ฑ
3. ์์ผ (Socket)
- ๋์ผํ ํธ์คํธ ์ด์ ์ฒด์ ์์ ์คํ๋๋ ํ๋ก์ธ์ค ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ธฐ ์ํ ๋ฐ์ดํฐ ํต์ ์๋ํฌ์ธํธ
- ๋คํธ์ํฌ ์์ผ ํต์ ์ ํตํด ๋ฐ์ดํฐ ๊ณต์
- ๋ฐ์ดํฐ ๊ตํ์ ์ํด ์์ชฝ PC์์ ๊ฐ๊ฐ ์์์ ํฌํธ๋ฅผ ์ ํ๊ณ ํด๋น ํฌํธ ๊ฐ์ ์ฐ๊ฒฐ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์
- ๊ฐ PC๊ฐ ํ PC ํฌํธ์ ์ฐ๊ฒฐ๋๋ฉด PIPE์ฒ๋ผ 1๋1๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์
- ๊ฐ์ ๋๋ฉ์ธ ๋ด ์๊ฒฉ์์ ํ๋ก์ธ์ค ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ๋ ์ฌ์ฉ
- ํด๋ผ์ด์ธํธ/์๋ฒ์ ํต์ ๊ตฌ์กฐ
- ์๋ฒ๋ bind, listen, accept ๊ณผ์ ์ ํตํด ์์ผ ์ฐ๊ฒฐ ์ค๋น
- ํด๋ผ์ด์ธํธ๋ connect๋ฅผ ์๋ฒ์ ์์ฒญ
- ์ฐ๊ฒฐ ์๋ฆฝ ํ socket์ ๋ฐ์ดํฐ send()
- ์ฐ๊ฒฐ ํด์ ์ socekt close()
- ์ ์ด์ค(Full Duplex)/์๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅ
4. ๋ฉ์์ง ํ (Message Queue)
- ์ ์ถ๋ ฅ ๋ฐฉ์์ Named PIPE๊ณผ ๋์ผํ์ง๋ง ๋ฐ์ดํฐ ํ๋ฆ์ด ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉํ PIPE์
- ๋ค์์ ํ๋ก์ธ์ค ๊ฐ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ ์ ์์
- ์ฌ์ฉํ ๋ฐ์ดํฐ์ ๋ฒํธ๋ฅผ ๋ถํ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์์
- ๋ฉ์์ง ์ ๊ทผ์ ์ํด key ํ์
5. ๋ฉ๋ชจ๋ฆฌ ๋งต (Memory Map)
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ฒ๋ผ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ณต์ ํ์ง๋ง ์ด๋ฆฐ ํ์ผ์ ๋ฉ๋ชจ๋ฆฌ์ ๋งคํ์์ผ ๊ณต์ ํ๋ ๋ฐฉ์
- ํ๋ก์ธ์ค์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ํ์ผ์ ๋งคํํ ๋ค ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ก ์ง์ ์ ๊ทผํ๋ ๊ฒ์ผ๋ก ํ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ๋ฅผ ๋์
- ์ฃผ๋ก ํ์ผ๋ก ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํด์ผํ ๋ ์ฌ์ฉ
- ํ์ด์ง ๊ธฐ๋ฒ์ ์ฌ์ฉํด ํ์ผ์ ๋ด์ฉ์ ๊ด๋ฆฌํ๋ฉฐ ํ์ด์ง ํฌ๊ธฐ์ ๋ฐ๋ผ ์ ์ ํ ํ์ผ์ ๋ด์ฉ์ ์ฝ๊ณ ์ธ ์ ์์
- ๋๋ถ๋ถ ์ด์์ฒด์ ์์๋ ํ๋ก์ธ์ค๋ฅผ ์คํํ ๋ ์คํ ํ์ผ์ ๊ฐ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ์ํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ๋งต ํ์ผ์ ์ด์ฉ
6. RPC (Remote Procedure Call)
- ๋ณ๋์ ์๊ฒฉ ์ ์ด๋ฅผ ์ํ ์ฝ๋ฉ ์์ด ๋ค๋ฅธ ์ฃผ์ ๊ณต๊ฐ์์ ํจ์๋ ํ๋ก์์ ๋ฅผ ์คํํ ์ ์๊ฒํ๋ ํ๋ก์ธ์ค ๊ฐ ํต์ ๊ธฐ์
- ์๊ฒฉ ํ๋ก์์ ํธ์ถ์ ํตํด ํ๋ก๊ทธ๋๋จธ๋ ํจ์๊ฐ ์คํ ํ๋ก๊ทธ๋จ์์ ๋ก์ปฌ ์์น์ ์๋ ์๊ฒฉ ์์น์ ์๋ ๋์ผํ ์ฝ๋๋ฅผ ์ด์ฉํ ์ ์์
- ๋ถ์ฐ ๋คํธ์ํฌ ๋ง์์ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ์
- ๋ถ๋ฆฌ๋ PC์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ง์น ๋ด PC์ ์กด์ฌํ๋ ๊ฒ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ๋ ํต์ ๋ฐฉ๋ฒ
- ์คํ (Stub)์ ํตํด ๋ง์น ๋ฐ์ดํฐ๊ฐ ์์ ์ ๋์คํฌ์ ์กด์ฌํ๋ ๊ฒ์ฒ๋ผ ์ฐฉ๊ฐ์ ์ผ์ผํด
IPC ์ ๋ฆฌ
IPC ์ข ๋ฅ | PIPE | Named PIPE | Message Queue | Shared Memory | Memory Map | Socket |
์ฉ๋ | ๋ถ๋ชจ ์์ ๊ฐ ๋จ๋ฐฉํฅ ํต์ |
๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋จ๋ฐฉํฅ ํต์ |
๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋จ๋ฐฉํฅ ํต์ |
๋ค๋ฅธ ํ๋ก์ธ์ค์ ์๋ฐฉํฅ ํต์ |
๋ค๋ฅธ ํ๋ก์ธ์ค์ ์๋ฐฉํฅ ํต์ |
๋ค๋ฅธ ์์คํ
๊ฐ ์๋ฐฉํฅ ํต์ |
๊ณต์ ๋งค๊ฐ์ฒด | ํ์ผ | ํ์ผ | ๋ฉ๋ชจ๋ฆฌ | ๋ฉ๋ชจ๋ฆฌ | ํ์ผ+๋ฉ๋ชจ๋ฆฌ | ์์ผ |
ํต์ ๋จ์ | stream | stream | ๊ตฌ์กฐ์ฒด | ๊ตฌ์กฐ์ฒด | ํ์ด์ง | stream |
ํต์ ๋ฐฉํฅ | ๋จ๋ฐฉํฅ | ๋จ๋ฐฉํฅ | ๋จ๋ฐฉํฅ | ์๋ฐฉํฅ | ์๋ฐฉํฅ | ์๋ฐฉํฅ |
ํต์ ๊ฐ๋ฅ ๋ฒ์ | ๋์ผ ์์คํ | ๋์ผ ์์คํ | ๋์ผ ์์คํ | ๋์ผ ์์คํ | ๋์ผ ์์คํ | ๋์ผ+์ธ๋ถ ์์คํ |
โญ๏ธ ์ฐธ๊ณ
728x90