๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ŒCS/OS

[OS] ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ๋ฐฉ๋ฒ•(Inter Process Communication, IPC)

by dar0m! 2021. 5. 2.

๊ฐœ๋…

๋ฆฌ๋ˆ…์Šค ์ปค๋„ ๊ตฌ์กฐ (์ถœ์ฒ˜ : https://jwprogramming.tistory.com/54)

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

๋”ฐ๋ผ์„œ ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์—์„œ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•œ ํ†ต์‹ ์˜ ์ผ์ข…์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋˜๊ณ , ์ธํ„ฐ๋„ท ํ†ต์‹ ์„ IPC์˜ ํ™•์žฅ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. (ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ ์ด ์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ํ†ต์‹ ๊ณผ ์œ ์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ)

ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•ด 'ํŒŒ์ดํ”„'์™€ ๊ฐ™์€ ๊ฐœ๋…์ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

๐Ÿ’ก ์Šค๋ ˆ๋“œ ๊ฐ„ ํ†ต์‹ ๋ณด๋‹ค ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์ด ์–ด๋ ค์šด ์ด์œ 

ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ์˜ ์ฐจ์ด๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค. ์šฐ๋ฆฌ๋Š” fork์™€ ๊ฐ™์€ ํ•จ์ˆ˜๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ pthread_create์™€ ๊ฐ™์€ ํ•จ์ˆ˜๋กœ ์“ฐ๋ ˆ๋“œ๋ฅผ ๊ฐ๊ฐ ์ƒ์„ฑํ•ด์ฃผ๋Š”๋ฐ, ์ด ๊ณผ์ •์—์„œ ํฐ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค๋Š” ์ƒ์„ฑ๋˜๋ฉด์„œ PC๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๋“ฑ์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ณ„๋„์˜ ์ž์›์„ ํ• ๋‹นํ•˜์ง€๋งŒ, ์Šค๋ ˆ๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„๊ณผ ์ž์›์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋”ฐ๋ผ์„œ ํ”„๋กœ์„ธ์Šค๋Š” ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ†ต์‹ ์„ ์œ„ํ•œ ๋ณ„๋„์˜ ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šค๋ ˆ๋“œ ๊ฐ„ ํ†ต์‹ ๋ณด๋‹ค ์–ด๋ ต๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด์„œ ์ปค๋„ ์˜์—ญ์—์„œ IPC๋ผ๋Š” ๋‚ด๋ถ€ ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ (Inter Process Communication)์„ ์ œ๊ณตํ•˜๊ฒŒ ๋˜๊ณ , ํ”„๋กœ์„ธ์Šค๋Š” ์ปค๋„์ด ์ œ๊ณตํ•˜๋Š” IPC์„ค๋น„๋ฅผ ์ด์šฉํ•ด์„œ ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

์ข…๋ฅ˜

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

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

2. ํŒŒ์ดํ”„ (Pipe)

ํŒŒ์ดํ”„ (์ถœ์ฒ˜ : https://jwprogramming.tistory.com/54)

ํ†ต์‹ ์„ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„(๋ฒ„ํผ)์„ ์ƒ์„ฑํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ฒŒ๋” ํ•œ๋‹ค.

  1. ์ต๋ช… ํŒŒ์ดํ”„ (Anonymous PIPE)
    • ์ผ๋ฐ˜์ ์ธ ํŒŒ์ดํ”„
    • ํ†ต์‹ ํ•  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ.
      • ๋ถ€๋ชจ-์ž์‹ or ํ˜•์ œ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์— ์‚ฌ์šฉ
      • ์™ธ๋ถ€ ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
    • ํŒŒ์ดํ”„๋Š” ๋‘ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ , ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ธฐ๋งŒ, ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ธฐ๋งŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•œ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•œ ํŒŒ์ดํ”„์˜ ํŠน์ง•๋•Œ๋ฌธ์— ๋ฐ˜์ด์ค‘(Half-Duplex) ํ†ต์‹ ์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.
    • ์†ก/์ˆ˜์‹ ์„ ๋ชจ๋‘ ํ•˜๊ธฐ ์›ํ•œ๋‹ค๋ฉด ๋‘ ๊ฐœ์˜ ํŒŒ์ดํ”„๋ฅผ ๋งŒ๋“ค์–ด์•ผ ๊ฐ€๋Šฅ
    • ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • pipe ํ•จ์ˆ˜๋กœ ์ƒ์„ฑ
    • ๋‹จ์ 
      • ๋ฐ˜์ด์ค‘ ํ†ต์‹  → ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ํ†ต์‹ ์„ ๋ชจ๋‘ ํ•ด์•ผํ•œ๋‹ค๋ฉด, PIPE ๋‘ ๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋ฏ€๋กœ ๊ตฌํ˜„์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.
      • ์ „์ด์ค‘ ํ†ต์‹ ์„ ๊ณ ๋ คํ•ด์•ผ๋  ์ƒํ™ฉ์ด๋ผ๋ฉด ๋‚ญ๋น„๊ฐ€ ์‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์€ ์„ ํƒ์ด ์•„๋‹ˆ๋‹ค.
  2. ๋„ค์ž„๋“œ ํŒŒ์ดํ”„ (Named PIPE)
    • ์ „ํ˜€ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋“ค ์‚ฌ์ด์˜ ํ†ต์‹ ์— ์‚ฌ์šฉ
    • ์ต๋ช… ํŒŒ์ดํ”„์˜ ํ™•์žฅ๋œ ์ƒํƒœ๋กœ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์™€ ๋ฌด๊ด€ํ•œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋„ ํ†ต์‹  ๊ฐ€๋Šฅ
      • ํ”„๋กœ์„ธ์Šค ํ†ต์‹ ์„ ์œ„ํ•ด ์ด๋ฆ„์ด ์žˆ๋Š” ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜๋‹ค.
      • FIFO ๋ผ ๋ถˆ๋ฆฌ๋Š” ํŠน์ˆ˜ ํŒŒ์ผ์„ ์ด์šฉํ•ด ์„œ๋กœ ๊ด€๋ จ ์—†๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์— ์‚ฌ์šฉํ•œ๋‹ค.
      • = ์™ธ๋ถ€ ํ”„๋กœ์„ธ์Šค์™€ ํ†ต์‹  ๊ฐ€๋Šฅ
    • mkfifo or mknod ํ•จ์ˆ˜๋กœ ์ƒ์„ฑ
    • ๋‹จ์ 
      • ๋ฐ˜์ด์ค‘ ํ†ต์‹  → ์ „์ด์ค‘ ํ†ต์‹ ์„ ์œ„ํ•ด์„œ๋Š” ์ต๋ช… ํŒŒ์ดํ”„์ฒ˜๋Ÿผ 2๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ๊ฐ€๋Šฅํ•˜๋‹ค.

3. ์†Œ์ผ“ (Socket)

์†Œ์ผ“

  • Unix ๋„๋ฉ”์ธ ์†Œ์ผ“ ๋˜๋Š” IPC ์†Œ์ผ“์€ ๋™์ผํ•œ ํ˜ธ์ŠคํŠธ ์šด์˜ ์ฒด์ œ์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ํ†ต์‹  ์—”๋“œ ํฌ์ธํŠธ์ด๋‹ค.
  • ๋„คํŠธ์›Œํฌ ์†Œ์ผ“ ํ†ต์‹ ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•œ๋‹ค.
    • ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•ด ์–‘์ชฝ PC์—์„œ ๊ฐ๊ฐ ์ž„์˜์˜ ํฌํŠธ๋ฅผ ์ •ํ•˜๊ณ  ํ•ด๋‹น ํฌํŠธ ๊ฐ„์˜ ๋Œ€ํ™”๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐฉ์‹์ด๋‹ค.
    • ์ด ๋•Œ ๊ฐ๊ฐ PC์˜ PORT๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์†Œ์ผ“์€ ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์ด๋‹ค.
    • ์ฆ‰ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋Š” ์ž„์˜์˜ PORT๋ฅผ ๋งก์•„ ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์ˆ˜์‹  ํ•˜๋Š” ์—ญํ• ์„ ์ง„ํ–‰ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ธ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
    • ๊ฐ๊ฐ์˜ PC์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ํƒ€ PC PORT์— ์—ฐ๊ฒฐํ•˜๋ผ๋Š” ๋ช…๋ น์„ ๋ณด๋‚ด๊ฒŒ ๋˜๋ฉด ๋‘ ํ”„๋กœ์„ธ์Šค๋Š” ์„œ๋กœ ํ™•์ธ๊ณผ์ •์„ ๊ฑฐ์ณ ์—ฐ๊ฒฐ์„ ์ง„ํ–‰ํ•˜๊ณ  ์—ฐ๊ฒฐ ํ›„ ๋งˆ์น˜ PIPE์™€ ๊ฐ™์ด 1 ๋Œ€ 1๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์†Œ์ผ“์„ ํ†ตํ•ด์„œ ํ†ต์‹ ํ•˜๋Š” ๊ตฌ์กฐ๋กœ, ์›๊ฒฉ์—์„œ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ „์ด์ค‘(Full Duplex, ์–‘๋ฐฉํ–ฅ) ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š”๋ฐ ์šฉ์ดํ•˜๋‹ค.
  • ์„œ๋ฒ„(bind, listen, accept), ํด๋ผ์ด์–ธํŠธ(connect)
  • ์ค‘๋Œ€ํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

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

๋ฉ”์‹œ์ง€ ํ

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

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

๋ฉ”๋ชจ๋ฆฌ ๋งต(์ถœ์ฒ˜ : https://doitnow-man.tistory.com/110)

  • ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•ด์ค€๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๋งต์€ ์—ด๋ฆฐ ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋งตํ•‘์‹œ์ผœ์„œ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. (์ฆ‰ ๊ณต์œ  ๋งค๊ฐœ์ฒด๊ฐ€ ํŒŒ์ผ+๋ฉ”๋ชจ๋ฆฌ)
  • ์ฃผ๋กœ ํŒŒ์ผ๋กœ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • FILE IO ๊ฐ€ ๋Š๋ฆด ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค.
  • ๋Œ€๋ถ€๋ถ„ ์šด์˜ ์ฒด์ œ์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์‹คํ–‰ ํŒŒ์ผ์˜ ๊ฐ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์‚ฌ์ƒํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋งต ํŒŒ์ผ์„ ์ด์šฉํ•œ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๋งต ํŒŒ์ผ์€ ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜๋Š” ์—†์œผ๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ๋งต ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ด์ „, ๋˜๋Š” ์ดํ›„์—๋งŒ ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

6. RPC(Remote Procedure Call)

  • RPC ๋ฐฉ๋ฒ•์€ ๋ถ„์‚ฐ ๋„คํŠธ์›Œํฌ ๋ง์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ๋ณ„๋„์˜ ์›๊ฒฉ ์ œ์–ด๋ฅผ ์œ„ํ•œ ์ฝ”๋”ฉ ์—†์ด ๋‹ค๋ฅธ ์ฃผ์†Œ ๊ณต๊ฐ„์—์„œ ํ•จ์ˆ˜๋‚˜ ํ”„๋กœ์‹œ์ €๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ๊ธฐ์ˆ ์ด๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ์„ ์ด์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ์— ๋กœ์ปฌ ์œ„์น˜์— ์žˆ๋“  ์›๊ฒฉ ์œ„์น˜์— ์žˆ๋“  ๋™์ผํ•œ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•ด๋‹น ๋ฐฉ๋ฒ•์€ ๋ถ„๋ฆฌ๋œ PC์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋งˆ์น˜ ๋‚ด PC์— ์กด์žฌํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•˜๋Š” ํ†ต์‹ ๋ฐฉ๋ฒ•์ด๋‹ค.
    • ์Šคํ…(stub)์„ ํ†ตํ•ด์„œ ๋งˆ์น˜ ์ž์‹ ์˜ ๋””์Šคํฌ์— ์กด์žฌํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ์ฐฉ๊ฐ์„ ์ผ์œผ์ผœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
    • ์Šคํ… : ๋ฆฌ๋ˆ…์Šค์—์„œ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ผ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜
    • ํ”„๋กœ์‹œ์ € : ๋ฃจํ‹ด, ์„œ๋ธŒ๋ฃจํ‹ด, ํ•จ์ˆ˜์™€ ๊ฐ™์€ ๋œป์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ํ•˜๋‚˜์˜ ํ”„๋กœ์‹œ์ €๋Š” ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ถ€์ด๋‹ค. ๋˜๋Š” ์–ด๋–ค ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ จ์˜ ์ž‘์—… ์ˆœ์„œ๋ฅผ ๋งํ•œ๋‹ค.

 

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

์„ธ๋งˆํฌ์–ด(Semaphore)

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

์ •๋ฆฌ

IPC ์ข…๋ฅ˜  PIPE Named PIPE  Mesage Queue  Shared Memory  Memory Map  Socket 
์‚ฌ์šฉ
์‹œ๊ธฐ
 ๋ถ€๋ชจ ์ž์‹ ๊ฐ„
๋‹จ ๋ฐฉํ–ฅ ํ†ต์‹  ์‹œ
๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ 
๋‹จ ๋ฐฉํ–ฅ ํ†ต์‹  ์‹œ 
๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€
 ๋‹จ ๋ฐฉํ–ฅ ํ†ต์‹  ์‹œ  
๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€
์–‘ ๋ฐฉํ–ฅ ํ†ต์‹  ์‹œ 
๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ 
์–‘ ๋ฐฉํ–ฅ ํ†ต์‹  ์‹œ 
 ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๊ฐ„ 
์–‘ ๋ฐฉํ–ฅ ํ†ต์‹  ์‹œ
 ๊ณต์œ 
๋งค๊ฐœ์ฒด
ํŒŒ์ผ  ํŒŒ์ผ  ๋ฉ”๋ชจ๋ฆฌ  ๋ฉ”๋ชจ๋ฆฌ  ํŒŒ์ผ+๋ฉ”๋ชจ๋ฆฌ  ์†Œ์ผ“ 
ํ†ต์‹ 
๋‹จ์œ„
 Stream Stream ๊ตฌ์กฐ์ฒด ๊ตฌ์กฐ์ฒด  ํŽ˜์ด์ง€ Stream 
 ํ†ต์‹ 
 ๋ฐฉํ–ฅ
 ๋‹จ ๋ฐฉํ–ฅ ๋‹น ๋ฐฉํ–ฅ  ๋‹จ ๋ฐฉํ–ฅ  ์–‘ ๋ฐฉํ–ฅ  ์–‘ ๋ฐฉํ–ฅ  ์–‘ ๋ฐฉํ–ฅ 
ํ†ต์‹  
๊ฐ€๋Šฅ 
๋ฒ”์œ„
 ๋™์ผ ์‹œ์Šคํ…œ ๋™์ผ ์‹œ์Šคํ…œ ๋™์ผ ์‹œ์Šคํ…œ  ๋™์ผ ์‹œ์Šคํ…œ  ๋™์ผ ์‹œ์Šคํ…œ  ๋™์ผ + ์™ธ๋ถ€ 
์‹œ์Šคํ…œ 

 

์ฐธ๊ณ 

๋Œ“๊ธ€