Search
Duplicate
โš™๏ธ

IPC (Inter Process Communication)

์ƒ์„ฑ์ผ
2023/03/12 01:43
ํƒœ๊ทธ
OS

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) ํ†ต์‹  ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
๋งŒ์ผ ๋‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ชจ๋‘ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ํŒŒ์ดํ”„๋ฅผ ๋‘ ๊ฐœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
ํ•˜์ง€๋งŒ ์ด๋Š” ๊ตฌํ˜„์ด ๋ณต์žกํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ์ „์ด์ค‘ ํ†ต์‹ ์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์—์„œ๋Š” ๋ถ€์ ํ•ฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

ref)