IPC(Interprocess Communication)

2023. 3. 19. 12:31ใ†CS/CS ์Šคํ„ฐ๋””

ํ”„๋กœ์„ธ์Šค๋“ค์ด ์„œ๋กœ์— ๋Œ€ํ•ด ์™„์ „ํžˆ ๋…๋ฆฝ๋œ ํ™˜๊ฒฝ์„ ๊ฐ–๋Š”๋‹ค๋Š” ๊ฒƒ์€ ์šด์˜์ฒด์ œ๋ฅผ ๊ณต๋ถ€ํ•ด ๋ณด์•˜๋‹ค๋ฉด ์ž๋ช…ํ•˜๋‹ค.

ํ•˜์ง€๋งŒ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์„ ํ—ˆ์šฉํ•˜๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด ๋กœ์ปฌ์—์„œ ๊ตฌ๋™ ์ค‘์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์—์„œ MySql DB์— ์ ‘๊ทผํ•˜๋Š” ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ด ๋ณด์ž.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„์ „ํžˆ ๋…๋ฆฝํ•˜๋‹ค๋Š” ๊ฐ€์ • ํ•˜์—๋Š”, ์„œ๋กœ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์„œ๋ฒ„์—์„œ DB๋กœ ์ ‘๊ทผ์ด ์ž˜ ์ด๋ฃจ์–ด์ง„๋‹ค.

์ด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ IPC์ด๋‹ค.

 

 

IPC์˜ ์ข…๋ฅ˜

IPC์˜ ์ข…๋ฅ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  1. Pipe
  2. Named Pipe
  3. Message Queue
  4. Shared Memory
  5. Socket Communication

 

Pipe

์ถœ์ฒ˜: https://code-lab1.tistory.com/42

ํŒŒ์ดํ”„๋Š” ๋‘ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์ด์šฉ๋œ๋‹ค. 

ํŒŒ์ดํ”„๋Š” ์ผ์ข…์˜ ํŒŒ์ผ๋กœ ๊ด€๋ฆฌ๋˜๋Š”๋ฐ, ์ด๋Š” ์ต๋ช…์œผ๋กœ ์ƒ์„ฑ๋˜์–ด ์„œ๋กœ ๊ด€๋ จ์ด ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค(ex. ๋ถ€๋ชจ - ์ž์‹)๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์ด์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.

ํŒŒ์ดํ”„๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ์†ก์‹  ์ธก์—์„œ, ํŒŒ์ดํ”„์— ๋Œ€ํ•ด ํ• ๋‹น๋œ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ(์“ฐ๊ธฐ ์ „์šฉ)์— ์“ฐ๊ธฐ ์ž‘์—…(write)์„ ์ˆ˜ํ–‰
  2. ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•œ ์ฑ„ ๋ฐ์ดํ„ฐ ์ „์†ก(ํŒŒ์ดํ”„๋Š” ์ „๋‹ฌ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅ)
  3. ์ˆ˜์‹  ์ธก์—์„œ, ํŒŒ์ดํ”„์— ๋Œ€ํ•ด ํ• ๋‹น๋œ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ(์ฝ๊ธฐ ์ „์šฉ)์— ์ฝ๊ธฐ ์ž‘์—…(read)์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 

ํŒŒ์ดํ”„๋Š” ์ „์†ก ๋ฐ์ดํ„ฐ ๊ฐ„ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์‚ฌ์šฉ์ด ์–ด๋ ต์ง€ ์•Š๋‹ค๋Š” ์ ๊ณผ,

์ƒ์„ฑํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ํ•จ๊ป˜ ์ข…๋ฃŒ๋˜๊ณ  ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹  ๋งŒ์„ ์ง€์›ํ•œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

ํŒŒ์ดํ”„๋Š” pipe() ์‹œ์Šคํ…œ ์ฝœ์„ ํ†ตํ•ด ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Named Pipe

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ํŒŒ์ดํ”„๋ฅผ ์ต๋ช… ํŒŒ์ดํ”„๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•˜๋Š”๋ฐ, ๊ทธ์™€๋Š” ๋‹ฌ๋ฆฌ ์ด๋ฆ„์ด ๋”ฐ๋กœ ์žˆ๋Š” ํŒŒ์ดํ”„๋„ ์กด์žฌํ•œ๋‹ค.

ํ•ด๋‹น ํŒŒ์ดํ”„๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์ƒ์—์„œ ํŠน์ • ์ด๋ฆ„์ด ๋ถ€์—ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์—,

์ต๋ช… ํŒŒ์ดํ”„์™€ ๋‹ฌ๋ฆฌ ์„œ๋กœ ๊ด€๋ จ์ด ์—†๋Š” ํ”„๋กœ์„ธ์Šค์ผ์ง€๋ผ๋„ ํŒŒ์ดํ”„์— ์ ‘๊ทผํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ

ํŒŒ์ดํ”„์˜ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ํŠน์ • ํ”„๋กœ์„ธ์Šค์— ์ข…์†๋˜์ง€๋„ ์•Š๋Š”๋‹ค.

๋”ฐ๋ผ์„œ ํ”„๋กœ์„ธ์Šค์™€ ๊ด€๋ จ ์—†์ด ํŒŒ์ดํ”„๊ฐ€ ์ง€์†์ ์œผ๋กœ ์กด์žฌํ•ด์•ผ ๋˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค.

Named ํŒŒ์ดํ”„๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” mkfifo() ์‹œ์Šคํ…œ ์ฝœ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ณ ,

์‹œ์Šคํ…œ ์ฝœ ์ด๋ฆ„์—์„œ๋„ ๋‚˜ํƒ€๋‚˜๋“ฏ Named ํŒŒ์ดํ”„๋ฅผ FIFO๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.

 

Message Queue

๋ฉ”์‹œ์ง€ ํ๋Š” ์•ž์„œ ์–ธ๊ธ‰ํ•œ ํŒŒ์ดํ”„์™€๋Š” ๋‹ฌ๋ฆฌ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์†ก์‹  ํ”„๋กœ์„ธ์Šค๋Š” ์‹œ์Šคํ…œ ์ฝœ์„ ํ†ตํ•ด ์ปค๋„์— ์กด์žฌํ•˜๋Š” ํ(Queue)์—๋‹ค๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋ฉด, 

์ˆ˜์‹  ์ธก์—์„œ๋Š” ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‹œ์Šคํ…œ ์ฝœ์„ ํ†ตํ•ด ํ์— ์กด์žฌํ•˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๊บผ๋‚ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

์ด ๋•Œ ํ์— ์ถ”๊ฐ€๋œ ๋ฉ”์‹œ์ง€๋“ค์€ ๋จผ์ € ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ๋น ์ ธ๋‚˜๊ฐ€๊ฒŒ ๋˜๋ฉฐ(FIFO) 

๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋˜๋Š” ํŒŒ์ดํ”„์™€ ๋‹ฌ๋ฆฌ

ํ•˜๋‚˜์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š” ์™„์ „ํ•œ ๊ตฌ์กฐ์ฒด ๋‹จ์œ„๋กœ(๋ฉ”์‹œ์ง€ ๋‹จ์œ„) ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค๊ฐ„๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

๋ฉ”์‹œ์ง€ ํ๋Š” ํŠน์ • ํ”„๋กœ์„ธ์Šค์— ์ข…์†์ ์œผ๋กœ ์กด์žฌํ•˜์ง€ ์•Š๊ณ , ์‚ญ์ œ๋ฅผ ์œ„ํ•ด์„œ๋Š” ํŠน์ • ๋ช…๋ น์–ด๋ฅผ ๋”ฐ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

 

Shared Memory

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋ฐฉ์‹์€ ๋ง ๊ทธ๋Œ€๋กœ ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ์„œ๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ถ”๊ฐ€๋กœ ํ• ๋‹นํ•˜๊ณ  ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐฉ์‹์ด๋‹ค.

์ด๋Š” ๋งˆ์น˜ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์Šค๋ ˆ๋“œ ๊ฐ„ ๊ณต์œ ๋˜๋Š” ์ž์›๋“ค๊ณผ ๋น„์Šทํ•˜๋‹ค. 

๋‹จ์ˆœํžˆ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ IPC ๋ฐฉ์‹๋“ค์— ๋น„ํ•ด ์†๋„๊ฐ€ ๋น ๋ฅด์ง€๋งŒ,

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋™์‹œ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€์ ์ธ ์กฐ์น˜(์„ธ๋งˆํฌ์–ด, ๋ฎคํ…์Šค ๋“ฑ์˜ ๋™์‹œ์„ฑ ์ด์Šˆ ๊ด€๋ฆฌ)๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๋ฉ”์‹œ์ง€ ํ ๋ฐฉ์‹๊ณผ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋ฐฉ์‹(์ถœ์ฒ˜: https://www.javatpoint.com/what-is-inter-process-communication)

 

Socket Communication

์†Œ์ผ“ ํ†ต์‹  ๋ฐฉ์‹์€ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์ต์ˆ™ํ•œ ๋ฐฉ์‹์ธ๋ฐ, 

์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๋ชจ๋ธ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

TCP/IP ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ๊ฐ๊ฐ ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•˜๊ฒŒ ๋œ๋‹ค.

ํ•ด๋‹น ๋ฐฉ์‹์€ ๋‹ค๋ฅธ IPC ๋ฐฉ์‹๋ณด๋‹ค ์กฐ๊ธˆ ๋Š๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ,

ํŠน์ • ํ˜ธ์ŠคํŠธ ๋‚ด์˜ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ๋ฟ ์•„๋‹ˆ๋ผ ์ผ๋ฐ˜์ ์ธ ๋„คํŠธ์›Œํฌ ๋‚ด ํ˜ธ์ŠคํŠธ ๊ฐ„ ํ†ต์‹ ์—๋„ ์ด์šฉ๋˜๋Š” ๋งŒํผ ๋ฒ”์šฉ์ ์œผ๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

'CS > CS ์Šคํ„ฐ๋””' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Mutex & Semaphore  (0) 2023.03.26
CPU ์Šค์ผ€์ค„๋ง  (0) 2023.03.25
ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก(PCB)  (1) 2023.03.18
System Call(์‹œ์Šคํ…œ ์ฝœ)  (0) 2023.03.11
์ธํ„ฐ๋ŸฝํŠธ(Interrupt)  (1) 2023.03.11