Post

๐Ÿ’ป[C#]IPC ํ†ต์‹ ํƒ๊ตฌ (Shared Memory, Named PIPE)-1

ํ‰๋ฒ”ํ•˜๊ฒŒ ํšŒ์‚ฌ ๋‹ค๋‹ˆ๋˜ ์–ด๋А ๋‚  Soultion์„ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š”๋ฐ ๊ทธ ๋ฐฉ์‹์„ IPC๋กœ ์ง„ํ–‰ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.(์ดˆ๊ธฐ ๊ตฌํ˜„) ๊ธฐ์ดˆ์ ์ธ ๊ฐœ๋…์€ ์•Œ๊ณ  ์žˆ์–ด์•ผ ๋  ๊ฒƒ ๊ฐ™์•„. ๊ณต๋ถ€๋„ ํ• ๊ฒธโ€ฆ ํฌ์ŠคํŒ…์„ ํ•ด๋ณด์ž!

๐Ÿ“˜ IPC๋ž€ ?

IPC(Inter Processs Communication) ๋ผ๊ณ  ํ•˜๋Š”๋ฐ ๋จผ์ € ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ํ•ด์„ํ•ด๋ณด๋ฉด Process ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ ? ๋‹จ์ˆœํžˆ ์ƒ๊ฐํ•ด ๋ณด๋ฉด ์•„~ Process ๊ฐ„์˜ ํ†ต์‹ ์„ ๋งํ•˜๋Š” ๊ฑฐ๊ตฌ๋‚˜ !!


๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ ์™œ IPC๋ฅผ ์จ์•ผ ํ•˜๋Š”๊ฐ€ ??


์—ฌ๊ธฐ์— ๋Œ€ํ•ด์„œ ์ง์ ‘ ๊ฒช๊ณ  ๋А๋‚€๊ฒŒ ์žˆ๋‹ค.


๐Ÿค”๊ทธ๋Ÿผ ์™œ IPC ์จ์•ผ ํ• ๊นŒ??

ํšŒ์‚ฌ์— ๋“ค์–ด์˜ค๊ณ  ๋‚˜์„œ ๊ธ‰ํ•˜๊ฒŒ ํˆฌ์ž…์ด ๋˜์–ด์„œ ํ•œ ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ ํ”„๋กœ๊ทธ๋žจ์—๋Š” ํ˜„์žฌ๊นŒ์ง€ ๊ณ„์† ์ง„ํ–‰ ์ค‘์ด๋ฉฐ ์ง€๊ธˆ์€ ํ•œ ์†”๋ฃจ์…˜ ํŒŒ์ผ์— ์ฝ”๋“œ ์ˆ˜๋ฅผ ๋ณด๋‹ˆ 12๋งŒ์ด ๋„˜์–ด๊ฐ”๋‹คโ€ฆ. ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ์œ ์ง€ ๋ณด์ˆ˜ ํ•˜๋Š”๋ฐ ์žˆ์–ด ์–ด๋ ค์›€์ด ์žˆ์—ˆ๋‹ค. ๋”๊ตฐ๋‹ค๋‚˜ Revit Addin ๊ฐœ๋ฐœ ์ด๋‹ค ๋ณด๋‹ˆ Debug์„ ํ• ๋ ค๋ฉด Reivit ํ”„๋กœ๊ทธ๋žจ์„ ์ผœ์•ผ ํ•˜๊ณ  ์ˆ˜์ •์‚ฌํ•ญ์ด ์žˆ์„๋•Œ ๋งˆ๋‹ค ๋ฐ”๋กœ ์ˆ˜์ •์ด ์•ˆ๋˜๋ฉด Revit ์„ ๋‹ค์‹œ ๊ป๋‹ค ์ผœ์•ผ ํ•˜๋Š” ์ผ์ด ๋ฐœ์ƒํ•œ๋‹ค. (๊ฒŒ์ž„์œผ๋กœ ๋ณด์ž๋ฉด ๋กœ๊ทธ ๋ผ์ดํŠธ ๋А๋‚Œ์ด๋ž„๊นŒ?โ€ฆ)

View


๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ๋ณธ ์ฝ”๋“œ์—์„œ ํฐ ํ‹€์—์„œ ๊ธฐ๋Šฅ๋ณ„๋กœ ์ชผ๊ฐœ๊ณ  ๊ฐ๊ธฐ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰ํ•ด ํ†ต์‹ ์„ ํ•œ๋‹ค๋ฉด Revit์„ ๋„์ง€ ์•Š๊ณ ๋„ ๊ณ„์† ์ˆ˜์ • ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์œ ์ง€๋ณด์ˆ˜ ํ•˜๋Š”๋ฐ์—๋„ ๋„์›€์ด ๋ ๊ฒƒ์ด๋‹ค !!

์š”์•ฝ

  1. ์—ฐ์‚ฐ ์†๋„ ํ–ฅ์ƒ
  2. ๋ชจ๋“ˆํ™” (๊ธฐ๋Šฅ ๋ถ„๋ฆฌ)
  3. ํŽธ๋ฆฌ์„ฑ(์œ ์ง€๋ณด์ˆ˜)

๐Ÿ“– IPC์˜ ์ข…๋ฅ˜

Shared Memory

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

Soket

  • ํ”„๋กœ์„ธ์Šค๋“ค ์‚ฌ์ด์˜ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.
  • ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š”๋ฐ ์šฉ์ด
  • ๋ฒ”์šฉ์ ์ธ IPC๋กœ ์–‘๋ฐฉํ–ฅ ํ†ต์‹  ๊ฐ€๋Šฅ

Message Queue

  • FIFO(First-In-First-Out)๋ฐฉ์‹์œผ๋กœ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋Š” ํ†ต์‹  ์„ค๋น„
  • ๋ฐ์ดํ„ฐ์— ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์—ฌ ๋‹ค์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ๋ฐ์ดํ„ฐ ๋‹ค๋ฃธ
  • ๋น„๋™๊ธฐ ๋ฐฉ์‹์ด๋ฉฐ ํ์— ๋„ฃ์–ด ํ›„์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

PIPE

  • ๋‘ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ธฐ๋งŒ, ๋‚˜๋จธ์ง„ ์ฝ๊ธฐ๋งŒ ํ•จ
  • ๋ถ€๋ชจ ์ž์‹ ๊ฐ„์— ๋‹จ ๋ฐ˜ํ–ฅ ํ†ต์‹ ์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉํ•จ
  • ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ์— ์ ํ•ฉ

Named PIPE

  • ๋‹จ ๋ฐ˜ํ–ฅ ํ†ต์‹  ๊ตฌ์กฐ์ด๋ฉฐ ํ•œ์ชฝ์—์„œ ์“ฐ๋ฉด ๋‹ค๋ฅธ ํ•œ์ชฝ์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์Œ
  • PIPE์™€ ์ฐจ์ด์ ์€ PIPE๋Š” ๋ถ€๋ชจ ์ž์‹ ๊ฐ„์— ์‚ฌ์šฉ Named PIPE๋Š” ์ „ํ˜€ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋“ค ์‚ฌ์ด์—์„œ ํ†ต์‹ ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ


์—ฌ๊ธฐ์„œ ์ง์ ‘ ํ•ด๋ณผ๊ฑด Shared Memory์™€ Named PIPE ๊ทธ ์ด์œ ๋Š” Shared Memory๋Š” ๊ฐ€์žฅ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๊ณ  ํ†ต์‹  ๋ฐฉ์‹์ด ์–‘๋ฐฉํ–ฅ์ด๋‹ค. ๊ทธ ๋‹ค์Œ Named PIPE๋Š” ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ Shared Memory์™€ ๋‹ค๋ฅด๊ฒŒ ์–ด๋–ค ์ฐจ์ด์ ์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ด ์กŒ๊ธฐ ๋–„๋ฌธ์ด๋‹ค.


๐Ÿ“‘ Shared Memory

View

  • ์ด๋Ÿฐ์‹์œผ๋กœ ์ผ๋ถ€ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•จ
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ปค๋„์— ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์š”์ฒญ์„ ํ•˜๋ฉด ์ปค๋„์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด์ฃผ๋ฉฐ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋“  ์ ‘๊ทผ ๊ฐ€๋Šฅ

ํ•œ Memory์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ Process๊ฐ€ ์ ‘๊ทผ ํ•˜๊ธฐ์— Cache Coherence(์ผ๊ด€์„ฑ)์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ ๊ฐ™์€ ์˜์—ญ์˜ ํ•œ ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์„ ์•…์šฉํ•ด Shared Memory ์˜์—ญ์„ ๋บด๋‚ด๋ฉด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ Memory ์ •๋ณด ๋˜ํ•œ ๊ฐ™๊ธฐ ๋–„๋ฌธ์— ๋™์‹œ์— ๋‘ ์‚ฌ์šฉ์ž ์ •๋ณด ๋บด์˜ฌ์ˆ˜ ์žˆ์Œ

๐Ÿ“‘ Named PIPE

View

  • ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ Writeํ• ๋• ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ Write ํ•˜์ง€ ๋ชปํ•˜๋ฉฐ read๋˜ํ•œ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.
  • read()์™€ write()๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ block mode๋กœ ์ž‘๋™๋˜๊ธฐ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ read ๋Œ€๊ธฐ์ค‘์ด๋ผ๋ฉด read๊ฐ€ ๋๋‚˜๊ธฐ์ „์—๋Š” write๋ฅผ ํ•  ์ˆ˜ ์—†๋‹ค

๋‹ค์Œ ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” Shared Memory์™€ NamePipe๋ฅผ ์‹ค์ œ C#์—์„œ ์‹ค์Šต์„ ํ•ด๋ด์•ผ๊ฒ ๋‹คโ€ฆ

์ถœ์ฒ˜

This post is licensed under CC BY 4.0 by the author.

ยฉ Gubeommo. Some rights reserved.

Using the Chirpy theme for Jekyll.