Search
Duplicate

IPC (Inter-Process Communication)

ํƒœ๊ทธ
1 more property

IPC (Inter-Process Communication)

โ€ข
Process๋Š”ย ์™„์ „ํžˆย ๋…๋ฆฝ๋œย ์‹คํ–‰๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.ย ์„œ๋กœย ๋…๋ฆฝ๋˜์–ด ์žˆ๋‹ค๋Š”ย ๊ฒƒ์€ย ๋‹ค๋ฅธย ํ”„๋กœ์„ธ์Šค์˜ย ์˜ํ–ฅ์„ย ๋ฐ›์ง€ย ์•Š๋Š”๋‹ค๋Š”ย ์žฅ์ ์ดย ์žˆ์Šต๋‹ˆ๋‹ค.ย ๊ทธ๋Ÿฌ๋‚˜ย ๋…๋ฆฝ๋˜์–ดย ์žˆ๋Š”ย ๋งŒํผย ๋ณ„๋„์˜ย ์„ค๋น„๊ฐ€ย ์—†์ด๋Š”ย ์„œ๋กœ๊ฐ„์—ย ํ†ต์‹ ์ดย ์–ด๋ ต๋‹ค๋Š”ย ๋ฌธ์ œ๊ฐ€ย ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.ย 
โ€ข
์ด๋ฅผย ์œ„ํ•ด์„œย ์ปค๋„ย ์˜์—ญ์—์„œย IPC๋ผ๋Š”ย ๋‚ด๋ถ€ย ํ”„๋กœ์„ธ์Šค๊ฐ„ย ํ†ต์‹ ย - Inter Process Communication์„ย ์ œ๊ณตํ•˜๊ฒŒ ๋˜๊ณ ,ย ํ”„๋กœ์„ธ์Šค๋Š”ย ์ปค๋„์ดย ์ œ๊ณตํ•˜๋Š”ย IPC์„ค๋น„๋ฅผย ์ด์šฉํ•ด์„œ ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ ์„ย ํ• ย ์ˆ˜ย ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

IPC์˜ ์ข…๋ฅ˜

1) PIPE (์ต๋ช… ํŒŒ์ดํ”„)

โ€ข
ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ธฐ๋งŒ ํ•˜๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ธฐ๋งŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ
โ€ข
ํ•œ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•œ ํŒŒ์ดํ”„์˜ ํŠน์ง• ๋•Œ๋ฌธ์— Half-Duplex(๋ฐ˜์ด์ค‘) ํ†ต์‹ ์ด๋ผ๊ณ ๋„ ํ•จ
โ€ข
๋”ฐ๋ผ์„œ ์–‘์ชฝ์œผ๋กœ ๋ชจ๋‘ ์†ก/์ˆ˜์‹ ์„ ํ•˜๊ณ  ์‹ถ์œผ๋ฉด 2๊ฐœ์˜ ํŒŒ์ดํ”„๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

2) Named PIPE (FIFO)

โ€ข
์ต๋ช… ํŒŒ์ดํ”„๊ฐ€ ํ†ต์‹ ์„ ํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ช…ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด(๋ถ€๋ชจ - ์ž์‹ ๊ด€๊ณ„), Named PIPE๋Š” ์ „ํ˜€ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋“ค ์‚ฌ์ด์˜ ํ†ต์‹ ์— ์‚ฌ์šฉ๋œ๋‹ค.
โ€ข
์ฆ‰, ์ต๋ช… ํŒŒ์ดํ”„์˜ ํ™•์žฅ๋œ ์ƒํƒœ๋กœ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์™€ ๋ฌด๊ด€ํ•œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋„ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ (ํ†ต์‹ ์„ ์œ„ํ•ด ์ด๋ฆ„์žˆ๋Š” ํŒŒ์ผ์„ ์‚ฌ์šฉ)
โ€ข
ํ•˜์ง€๋งŒ, Named ํŒŒ์ดํ”„ ์—ญ์‹œ ์ฝ๊ธฐ/์“ฐ๊ธฐ ๋™์‹œ์— ๋ถˆ๊ฐ€๋Šฅํ•จ. ๋”ฐ๋ผ์„œ ์ „์ด์ค‘ ํ†ต์‹ ์„ ์œ„ํ•ด์„œ๋Š” ์ต๋ช… ํŒŒ์ดํ”„์ฒ˜๋Ÿผ 2๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ๊ฐ€๋Šฅ

3) ๋ฉ”์‹œ์ง€ ํ (Message Queue)

โ€ข
์ž…์ถœ๋ ฅ ๋ฐฉ์‹์€ Named PIPE์™€ ๋™์ผํ•˜์ง€๋งŒ, Named PIPE๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ๋ฉ”์‹œ์ง€ ํ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด๋ผ๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.
โ€ข
์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ์— ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ด๋ฉด์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.

4) ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ (Shared Memory)

โ€ข
ํŒŒ์ดํ”„, ๋ฉ”์‹œ์ง€ ํ๊ฐ€ ํ†ต์‹ ์„ ์ด์šฉํ•œ ์„ค๋น„๋ผ๋ฉด, ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ๊ณต์œ ํ•˜๋„๋ก ์ง€์›ํ•˜๋Š” ์„ค๋น„๋‹ค.
โ€ข
๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ด์ค€๋‹ค.
โ€ข
ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์ปค๋„์— ์š”์ฒญํ•˜๋ฉด, ์ปค๋„์€ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์— ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด์ฃผ๊ณ  ์ดํ›„ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
โ—ฆ
์ค‘๊ฐœ์ž ์—†์ด ๊ณง๋ฐ”๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์„œ IPC ์ค‘์— ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•จ

5) ๋ฉ”๋ชจ๋ฆฌ ๋งต (Memory Map, mMap)

โ€ข
๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•ด์ค€๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋งต์€ ์—ด๋ฆฐ ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋งตํ•‘์‹œ์ผœ์„œ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. (์ฆ‰ ๊ณต์œ  ๋งค๊ฐœ์ฒด๊ฐ€ ํŒŒ์ผ+๋ฉ”๋ชจ๋ฆฌ)
โ€ข
์ฃผ๋กœ ํŒŒ์ผ๋กœ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

6) ์†Œ์ผ“ (Socket)

โ€ข
๋„คํŠธ์›Œํฌ ์†Œ์ผ“ ํ†ต์‹ ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•œ๋‹ค.
โ€ข
ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์†Œ์ผ“์„ ํ†ตํ•ด์„œ ํ†ต์‹ ํ•˜๋Š” ๊ตฌ์กฐ๋กœ, ์›๊ฒฉ์—์„œ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
์ด๋Ÿฌํ•œ IPC ํ†ต์‹ ์—์„œ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋™๊ธฐํ™”ํ•˜๊ณ  ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ์„ธ๋งˆํฌ์–ด์™€ ๋ฎคํ…์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (๊ณต์œ ๋œ ์ž์›์— ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ ‘๊ทผ์‹œํ‚ฌ ๋•Œ)