Computer Science/๐Ÿ”’ Operating System

[์šด์˜์ฒด์ œ] IPC(Inter Process Communication) - ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ 

J1Yun 2023. 2. 27. 15:47
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