๐Ÿค๐Ÿป IPC, ํ”„๋กœ์„ธ์Šค ์‚ฌ์ด์˜ ํ†ต์‹ 

์ตœํ˜ธ๋นˆยท2024๋…„ 9์›” 13์ผ
1
post-thumbnail

โ“ย IPC๋ž€?

Inter-Process Communication(=ํ”„๋กœ์„ธ์Šค ์‚ฌ์ด์˜ ํ†ต์‹ ) ์ฆ‰, ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์„ ์˜๋ฏธํ•œ๋‹ค. ์ฃผ๋กœ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋žจ ๋“ฑ์—์„œ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ , ๋™๊ธฐํ™”, ์ž‘์—… ๋ถ„๋ฐฐ ๋“ฑ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.





๐Ÿค” IPC๋Š” ์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฑธ๊นŒ?

์ผ๋ฐ˜์ ์œผ๋กœ Process๋Š” ์šด์˜์ฒด์ œ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ธ์Šคํ„ด์Šค์ด๋‹ค. ์ฆ‰, ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๊ณ ์œ ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„, ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ, ํ”„๋กœ์„ธ์Šค ID ๋“ฑ์„ ๊ฐ€์ง„๋‹ค. ์ด๋ ‡๊ฒŒ ๋…๋ฆฝ๋˜์–ด ์žˆ๋‹ค๋Š” ํŠน์ง•์€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์•„ ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์˜ค๋ฅ˜๊ฐ€ ์ „์ฒด ์‹œ์Šคํ…œ์„ ๋งˆ๋น„์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋…๋ฆฝ์„ฑ์€ ๋™์‹œ์— ๊ณ ๋ฆฝ๋˜์–ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ์™€ ๊ฐ™๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ๋ณ„๋„์˜ ํ†ต์‹  ์ˆ˜๋‹จ ์—†์ด๋Š” ์„œ๋กœ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์—†๊ณ  ํ†ต์‹ ์ด ์–ด๋ ต๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, ์šด์˜์ฒด์ œ์˜ ์ปค๋„์ด IPC๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค! ํ”„๋กœ์„ธ์Šค๋Š” ์ปค๋„์ด ์ œ๊ณตํ•˜๋Š” IPC ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์„œ ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๊ณ , ํ•„์š”ํ•  ๋•Œ ์•ˆ์ „ํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•  ๋•Œ๋„ UI ํ”„๋กœ์„ธ์Šค โžก๏ธ IPC โžก๏ธ ๋‹ค์šด๋กœ๋“œ ๊ด€๋ฆฌ์ž ํ”„๋กœ์„ธ์Šค ์ด๋Ÿฐ์‹์œผ๋กœ ๋‹ค์šด๋กœ๋“œ ์š”์ฒญ์„ ํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ IPC๊ฐ€ ๋‘ ํ”„๋กœ์„ธ์Šค ์‚ฌ์ด์˜ ํ†ต์‹ ์„ ์ค‘์žฌํ•˜๋ฉฐ, ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค.



์ฆ‰, IPC๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์ด ํ•„์š”ํ•œ ์ด์œ ์™€ ๊ฐ™๋‹ค. ๋”ฐ๋ผ์„œ, IPC๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

1. ๋ฐ์ดํ„ฐ ๊ณต์œ 

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

2. ์„ฑ๋Šฅ ์ตœ์ ํ™”

๋ณต์žกํ•œ ์ž‘์—…์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ํ”„๋กœ์„ธ์Šค๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์ฒ˜๋ฆฌ ์†๋„์™€ ํšจ์œจ์„ฑ์ด ํ–ฅ์ƒ๋œ๋‹ค. (์™œ๋ƒํ•˜๋ฉด ๋ฉ”์ธ ์ž‘์—…๊ณผ ์„œ๋ธŒ ์ž‘์—…์ด ์„œ๋กœ ํ†ต์‹ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ IPC๊ฐ€ ํ†ต์‹ ์„ ๋„์™€์ค˜์•ผ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค!)

3. ๋ชจ๋“ˆ์„ฑ

๊ฐ ๊ธฐ๋Šฅ์„ ๋…๋ฆฝ์ ์ธ ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์Šค๋ ˆ๋“œ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ชจ๋“ˆ ๋ฐฉ์‹์œผ๋กœ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

(์ด๋•Œ๋„ ๋ชจ๋“ˆ๊ฐ„์˜ ํ†ต์‹ ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ IPC๊ฐ€ ํ•„์š”ํ•˜๋‹ค!)

4. ํŽธ์˜์„ฑ

์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๋‹ค์–‘ํ•˜๊ณ  ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น์ด ๊ฐ€๋Šฅํ•˜๋‹ค!

5. ์ž์›๊ด€๋ฆฌ์˜ ํšจ์œจ์„ฑ

ํ”„๋กœ์„ธ์Šค ๊ฐ„ ์ž์› ๊ณต์œ ์™€ ์กฐ์œจ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์—ฌ ์‹œ์Šคํ…œ ์ž์›์˜ ํšจ์œจ์ ์ธ ๋ถ„๋ฐฐ์™€ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.





๐Ÿค“ย IPC์˜ ๊ตฌํ˜„ ๋ฐฉ์‹

IPC์—๋Š” ์ „ํ†ต์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€ ๊ธฐ๋ฒ•์ด ์žˆ๋‹ค.

์ถœ์ฒ˜ : https://velog.io/@coastby/์šด์˜์ฒด์ œ-IPC-Inter-Process-Communication-ํ”„๋กœ์„ธ์Šค-๊ฐ„-ํ†ต์‹ 

a. ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฒ•, Shared memory

b. ๋ฉ”์„ธ์ง€ ์ „๋‹ฌ ๊ธฐ๋ฒ•, Message Passing


๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฒ•์€ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๊ณตํ†ต์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ณต์œ ํ•˜์—ฌ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

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

๋ฉ”์„ธ์ง€ ์ „๋‹ฌ ๊ธฐ๋ฒ•์€ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›์•„ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

ํ˜‘๋ ฅ์  ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ๋ฉ”์‹œ์ง€๋ฅผ ๊ตํ™˜ํ•œ๋‹ค. ์ฃผ๋กœ ์ ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜์— ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋ฐฉ์‹๊ณผ๋Š” ๋‹ฌ๋ฆฌ ํ†ต์‹  ์ฑ…์ž„ ๋ฐ ์ˆ˜๋‹จ์ด ์šด์˜์ฒด์ œ์— ์˜ํ•ด ์ œ๊ณต๋œ๋‹ค. OS๊ฐ€ ๋™๊ธฐํ™”๋ฅผ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ถฉ๋Œํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ์‹œ์Šคํ…œ ์ฝœ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋ฐฉ์‹์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ์†๋„๊ฐ€ ๋А๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

(b) ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ๊ฐ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ปค๋„์— ์žˆ๋Š” ๋ฉ”์„ธ์ง€ ํ ๊ณต๊ฐ„์œผ๋กœ ์ž์›์„ ์ „์†กํ•˜๋Š” ๊ฒƒ์ด ๋ณด์ธ๋‹ค. ์ฆ‰, ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ๋ฐฉ์‹์€ ์šด์˜์ฒด์ œ๊ฐ€ ๋Œ€์‹  ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ธ ๊ฒƒ์ด๋‹ค.

๋˜ํ•œ,ย ์ง์ ‘ ํ†ต์‹ (direct communication),ย ๊ฐ„์ ‘ ํ†ต์‹ (indirect communication)ย ๋ผ๋Š”๊ฒŒ ์žˆ๋Š”๋ฐ ๋‘˜์˜ ์ฐจ์ด๋Š” ์ปค๋„์˜ ๋ฉ”์‹œ์ง€ ํ์— ์ €์žฅ๋œ ์ž์›์„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ง์ ‘ ์ „๋‹ฌ์„ ํ•ด์ฃผ๋Š”์ง€(์ง์ ‘ ํ†ต์‹ ), ์ฐพ์œผ๋Ÿฌ ์˜ค๋ผ๊ณ  ํ•˜๋Š”์ง€(๊ฐ„์ ‘ ํ†ต์‹ )๋ผ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋‘์ž!


์ •๋ฆฌํ•˜์ž๋ฉด, ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋ฐฉ์‹์€ ๋น ๋ฅธ ํ†ต์‹ ์ด ํ•„์š”ํ•  ๋•Œ ์œ ์šฉํ•˜๊ณ , ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ๊ณผ ์•ˆ์ •์„ฑ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ์— ์ ํ•ฉํ•˜๋‹ค.

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋ฐฉ์‹์™€ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ๋ฐฉ์‹๊ณผ ๊ฐ™์€ IPC ๊ตฌํ˜„ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌ์ฒดํ™”ํ•œ ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ ์žˆ๋Š” ํŒŒ์ผ, ์‹ ํ˜ธ, ์†Œ์ผ“, ๋ฉ”์‹œ์ง€ ํ, ํŒŒ์ดํ”„ ๋“ฑ์ด๋‹ค. ์ด๋“ค์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž. ๐Ÿ”





๐Ÿ—„๏ธ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ(Shared Memory)

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

  1. ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ปค๋„์— ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ƒ์„ฑ์„ ์š”์ฒญ(์‹œ์Šคํ…œ ์ฝœ)ํ•˜๋ฉด
  2. ์ปค๋„์€ ์ด ์š”์ฒญ์„ ์Šน์ธํ•˜๊ณ  ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•œ๋‹ค.
  3. ๊ทธ๋Ÿผ ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” ์ด ๊ณต๊ฐ„์„ ์ฝ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

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


๐Ÿ“‚ย ํŒŒ์ผ(File)

ํŒŒ์ผ์€ ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์•Œ๊ณ  ์žˆ๋Š” ํŒŒ์ผ์ด๋ฉฐ, Shared Memory ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ™์€ ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋– ์˜ฌ๋ฆฌ๋ฉด Shared Memory ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์‰ฝ๊ฒŒ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.


๐Ÿชˆ ํŒŒ์ดํ”„(Pipes)

2๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค ์ž…์ถœ๋ ฅ์„ ์—ฐ๊ฒฐํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ณต์œ  ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ์‹์ด๋ฉฐ, Message Passing ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ๋Œ€์šฉ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์งง๊ณ  ๊ฐ„๋‹จํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ตํ™˜ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค. ๋ฉ”์‹œ์ง€ ํ, ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ ๋‹ค๋ฅธ IPC ๋ฐฉ์‹์— ๋น„ํ•ด ์‚ฌ์šฉ์ด ๊ฐ„ํŽธํ•˜์ง€๋งŒ, ๊ธฐ๋Šฅ์€ ์ œํ•œ์ ์ธ ๊ฒƒ์ด ํŠน์ง•์ด๋‹ค.

์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์ž๋ฉด,

ls | pr

์œ„ ๋ช…๋ น์–ด๋Š” ls ๋ช…๋ น์–ด์˜ ๊ฒฐ๊ณผ(ํ‘œ์ค€ ์ถœ๋ ฅ)๋ฅผ pr ๋ช…๋ น์–ด์˜ ์ž…๋ ฅ(ํ‘œ์ค€ ์ž…๋ ฅ)์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ | ๊ฐ€ ํŒŒ์ดํ”„์ด๋‹ค.

ํŒŒ์ดํ”„๋Š” ํฌ๊ฒŒ ์ด๋ฆ„ ์—†๋Š”/์žˆ๋Š” ํŒŒ์ดํ”„๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

  • ์ด๋ฆ„ ์—†๋Š” ํŒŒ์ดํ”„ (Anonymous Pipe)

    ์ƒํ˜ธ ๊ด€๋ จ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์— ์‚ฌ์šฉ๋˜๋Š”๋ฐ, ๋ถ€๋ชจ-์ž์‹ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹ ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์กฐ๊ธˆ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฐ™์€ PPID(๊ฐ™์€ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค)๋ฅผ ๊ฐ€์ง€๋Š” ํ”„๋กœ์„ธ์Šค๋“ค ์‚ฌ์ด์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ๋งŒ ์œ ์ง€๋˜๊ณ , ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ๋งŒ ์ง€์›ํ•œ๋‹ค. ์ฆ‰, ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค! (์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ์œ„ํ•ด์„œ๋Š” ๋‘ ๊ฐœ์˜ ํŒŒ์ดํ”„๊ฐ€ ํ•„์š”)

  • ์ด๋ฆ„ ์žˆ๋Š” ํŒŒ์ดํ”„ (Named Pipe)

    FIFO(First In, First Out)๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ, ์žฅ์น˜ ํŒŒ์ผ์„ ํ†ตํ•ด ์ƒํ˜ธ ๊ด€๋ จ ์—†๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ด๋ฆ„ ์žˆ๋Š” ํŒŒ์ดํ”„๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์ƒ์—์„œ ์กด์žฌํ•˜๋Š” ํŠน์ˆ˜ ํŒŒ์ผ์ด๋ฉฐ, ์ƒ์„ฑ๋œ ํ›„ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ๋™์ž‘ํ•˜๋ฏ€๋กœ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฒƒ๋„ ํ†ต์‹ ์„ ๋กœ๊ฐ€ ํŒŒ์ผ๋กœ ์กด์žฌํ•˜๋‹ˆ๊นŒ ํ•˜๋‚˜๋ฅผ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์—ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋ฅผ ์“ฐ๊ธฐ์ „์šฉ์œผ๋กœ ์—ฌ๋Š” ๊ฒƒ์ด๋ผ ํ•˜๋ฏ€๋กœ ๊ฒฐ๊ตญ์€ PIPE์™€ ๊ฐ™์ด ๋‘๊ฐœ์˜ FIFOํŒŒ์ผ์ด ํ•„์š”ํ•˜๋‹ค.


๐Ÿš€ ์†Œ์ผ“(Sockets)

๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•œ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์˜ ์ข…์ฐฉ์ ์„ ์˜๋ฏธํ•˜๋ฉฐ Message Passing ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ฃผ๋กœ ์›๊ฒฉ์—์„œ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๊ณ , ํŒŒ์ดํ”„ ๊ฐœ๋…์„ ๋„คํŠธ์›Œํฌ๋กœ ํ™•์žฅ์‹œํ‚จ ๊ฒƒ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์†Œ์ผ“ ํ†ต์‹ ์€ IP ์ฃผ์†Œ์™€ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋˜๋ฉฐ, TCP/IP์™€ UDP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ™์€ ์‹œ์Šคํ…œ ๋‚ด์˜ ํ”„๋กœ์„ธ์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„์—๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์†Œ์ผ“์€ ๋กœ์ปฌ ํ†ต์‹ (Ex) localhost:8080)๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์›๊ฒฉ ํ†ต์‹ ๋„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉฐ, ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ์˜ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

์†Œ์ผ“์€ ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ํ™˜๊ฒฝ ๊ตฌ์ถ•์ด ์šฉ์ดํ•˜๊ณ , ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์ด ์žฅ์ ์ด๋‹ค. ํŒŒ์ดํ”„ ๊ฐœ๋…์„ ๋„คํŠธ์›Œํฌ๋กœ ํ™•์žฅ์‹œํ‚จ ๊ฒƒ์ด ์†Œ์ผ“์ด๋ผ๊ณ  ํ–ˆ๋Š”๋ฐ, ํŒŒ์ดํ”„๋Š” ๊ฑฐ์˜ ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ๋งŒ ๊ฐ€๋Šฅํ–ˆ๋˜ ๊ฒƒ๊ณผ ์ฐจ์ด์ ์ด ์žˆ๋‹ค. ๐Ÿ‘€


๐Ÿ”’ ์„ธ๋งˆํฌ์–ด(Semaphores)

๊ณต์œ  ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ ์ œ์–ด or ํ†ต์ œ๋ฅผ ์œ„ํ•œ ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์˜๋ฏธํ•˜๋ฉฐ, Message Passing ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค.

์•„๊นŒ ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์„ค๋ช…ํ• ๋•Œ ๋งํ–ˆ๋“ฏ์ด ํ”„๋กœ์„ธ์Šค๋“ค์˜ ๊ณต์œ  ์ž์› ์ ‘๊ทผ์„ ์กฐ์ ˆํ•˜๋Š”, ์ฆ‰ ๊ณต์œ ์ž์›์— ๋Œ€ํ•œ "์ ‘๊ทผ ์ œ์–ด"๋ฅผ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ ์„ ์ง€์›ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. Semaphore๋ฅผ ๋ฒˆ์—ญ๊ธฐ๋กœ ๋Œ๋ ค๋ณด๋ฉด โ€œ์‹ ํ˜ธ๊ธฐโ€๋กœ ๋‚˜์˜จ๋‹ค. ๋งˆ์น˜ ๊ธฐ์ฐจ์—ญ์—์„œ ๊นƒ๋ฐœ๋กœ ๊ธฐ์ฐจ์˜ ํ†ตํ–‰์„ ์ œ์–ดํ•˜๋“ฏ์ด, ๊ณต์œ  ์ž์›์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๋“ค์˜ ๊ณต์œ  ์ž์› ์ ‘๊ทผ์„ ์กฐ์ ˆํ•œ๋‹ค.

์„ธ๋งˆํฌ์–ด๋Š” ๊ณต์œ  ์ž์›์˜ ์ถฉ๋Œ์„ ๋ง‰์•„์ค€๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๋ธ”๋ก๋  ์ˆ˜ ์žˆ์–ด CPU ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ๋„ ์žˆ๋‹ค. (์Šค์ผ€์ค„๋ง์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค!)


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


โšก๏ธ ์‹œ๊ทธ๋„(Signal)

ํ”„๋กœ์„ธ์Šค ID๋ฅผ ํ†ตํ•ด ํŠน์ • ํ”„๋กœ์„ธ์Šค์— ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ด๋ฉฐ, Message Passing ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ฃผ๋กœ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ”„๋กœ์„ธ์Šค์— ์ด๋ฒคํŠธ ๋ฐœ์ƒ์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

๊ฐ„๋‹จํžˆ ๋งํ•˜์ž๋ฉด, ํ”„๋กœ์„ธ์Šค์— ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ๋ฉ”์‹œ์ง€์ด๋‹ค!

์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ ์žˆ๋Š” kill -9 ๋Š” Signal ๊ด€์ ์—์„œ SIGKILL ์‹ ํ˜ธ๋ฅผ ํ”„๋กœ์„ธ์Šค์— ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค.

์„œ๋ฒ„๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ข…์ข… ์‚ฌ์šฉํ•˜๋Š” nohup๋ช…๋ น์–ด๋„ ์‹œ๊ทธ๋„๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค. nohup์€ ํ„ฐ๋ฏธ๋„ ์„ธ์…˜์ด ์ข…๋ฃŒ๋˜์–ด๋„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณ„์† ์‹คํ–‰๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” SIGHUP ์‹ ํ˜ธ๋ฅผ ๋ฌด์‹œํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

  • SIGHUP ์‹ ํ˜ธ๋ž€?
    ํ„ฐ๋ฏธ๋„ ์—ฐ๊ฒฐ์ด ๋Š์–ด์กŒ์„ ๋•Œ(์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์•„์›ƒํ•˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ๋Š์–ด์กŒ์„ ๋•Œ) ์šด์˜ ์ฒด์ œ๊ฐ€ ํ•ด๋‹น ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ ๋ณด๋‚ด๋Š” ์‹ ํ˜ธ์ด๋‹ค. ์ด ์‹ ํ˜ธ๋ฅผ ๋ฐ›์œผ๋ฉด ํ”„๋กœ์„ธ์Šค๋“ค์€ ์ข…๋ฃŒ๋œ๋‹ค.

๐Ÿ“ฎ ๋ฉ”์‹œ์ง€ ํ(Message Queues)

์ถœ์ฒ˜ : https://www.youtube.com/watch?v=7NZW0BEfpUU

ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ๋ฉ”์‹œ์ง€ ๊ธฐ๋ฐ˜ ํ†ต์‹ ์ด๋ฉฐ ๋ฉ”์‹œ์ง€ ํ ID๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•œ๋‹ค. Message Passing ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ณ ์ • ํฌ๊ธฐ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ, ์ด๋•Œ ๋ฉ”์‹œ์ง€๋Š” FIFO ์ˆœ์„œ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค! ๋ฉ”์‹œ์ง€์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค.


๐Ÿ˜ฏ ๋ฉ”์‹œ์ง€ ํ๋Š” ์™œ ํ•„์š”ํ•˜๋ฉฐ, ์–ด๋–ค ์ ์ด ์ข‹์„๊นŒ?

๋ฉ”์‹œ์ง€ ํ์™€ ๊ด€๋ จ๋œ ์ž๋ฃŒ๋ฅผ ์ฐพ๋‹ค๊ฐ€, ์ด ์˜์ƒ์„ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ฏ€๋กœ ๊ผญ ๋ณด๊ธธ ์ถ”์ฒœํ•œ๋‹ค!
์ด ์˜์ƒ์ด ๋„ˆ๋ฌด ์„ค๋ช…์ด ์ž˜๋˜์–ด์žˆ์–ด, ์ฐธ๊ณ ํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…์„ ํ•ด๋ณด๊ฒ ๋‹ค.

๊ณ ๊ฐ์ด ์ฃผ๋ฌธํ•  ๋•Œ๋งˆ๋‹ค ๊ฒฐ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•œ ๋‹ค์Œ ์žฌ๊ณ ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์˜จ๋ผ์ธ ์‡ผํ•‘๋ชฐ์ด ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์šฐ๋ฆฌ๊ฐ€ ๋ณดํ†ต ์˜จ๋ผ์ธ ์Šคํ† ์–ด์—์„œ ๊ฒฐ์ œ๋ฅผ ํ•˜๋ฉด ๊ฒฐ์ œ๊ฐ€ ์™„๋ฃŒ๋˜๊ณ , ๊ฒฐ์ œ ์ฃผ๋ฌธ ๋‚ด์—ญ์ด ์ด๋ฉ”์ผ๋กœ ๋‚ ๋ผ์˜จ๋‹ค. ์ด๋Ÿฐ ๊ฒƒ๋“ค์ด ๋ชจ๋‘ โ€œ์ด๋ฒคํŠธโ€์ธ ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ, ๊ฐ‘์ž๊ธฐ 90% ์„ธ์ผ์„ ํ•ด์„œ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์€ ์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ์ด ์Šคํ† ์–ด์— ์ ‘์†ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ์ด ๊ฒฝ์šฐ์—๋Š” ๊ฐ‘์ž๊ธฐ ๋งŽ์€ ์–‘์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ์‚ฌ์ดํŠธ๊ฐ€ ๋А๋ ค์ง€๋Š” ๊ฒฝํ—˜์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๋ฌผ๋ก  ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ๋Œ€๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ๋ฒ„๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์„œ๋ฒ„๋ฅผ ํ™•์žฅํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์‰ฌ์šด ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ถ€ํ„ฐ ๋ชจ๋‹ˆํ„ฐ๋ง, ๋ณด์•ˆ, ์„ฑ๋Šฅ ๋“ฑ๋“ฑ ,,, ๊ณ ๋ คํ•ด์•ผํ•  ์‚ฌํ•ญ์ด ๋„ˆ๋ฌด ๋งŽ๊ณ  ๋ฌด์—‡๋ณด๋‹ค๋„ ๋น„์šฉ์ด ๋“ ๋‹ค.


์—ฌ๊ธฐ์„œ ์ƒ๊ฐํ•ด๋ณด์ž. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฒคํŠธ๋ฅผ ํ•œ๋ฒˆ์— ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ์„๊นŒ? ์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ์— ์‹ ํ˜ธ๋ฅผ ์ฃผ๊ณ  ๋‚˜์ค‘์— ์ฒ˜๋ฆฌํ•ด๋„ ๋˜์ง€ ์•Š์„๊นŒ? ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ๋А๋ฆฌ๋”๋ผ๋„ ์ž์‹ ์ด ์ •์ƒ์ ์œผ๋กœ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ๋งŒ ํ™•์ธ๋ฐ›์œผ๋ฉด ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. (Ex) ํ‹ฐ์ผ“ํŒ…)

์ด๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๊ฒŒ, ๋ฐ”๋กœ ๋ฉ”์‹œ์ง€ ํ์ด๋‹ค!
๋ฉ”์‹œ์ง€ ํ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ์ง€์›ํ•˜๋Š” ๋‚ด๊ตฌ์„ฑ ์žˆ๋Š” ๊ตฌ์„ฑ ์š”์†Œ์ด๋‹ค. ์ฃผ๋กœ ๋ฐ์ดํ„ฐ์˜ ๋ฒ„ํผ ์—ญํ• ์„ ํ•˜๋ฉฐ, ์‹œ์Šคํ…œ ๊ฐ„์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค.


๋ณดํ†ต ๋ฉ”์‹œ์ง€ ํ์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ pub/subย ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ  ์ „๋‹ฌํ•˜๋Š” ๋ถ€๋ถ„์„ Producer ๋ผ๊ณ  ํ•˜๋ฉฐ, ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›์•„์„œ ์†Œ๋น„ํ•˜๋Š” ๋ถ€๋ถ„์„ Consumer ๋ผ๊ณ  ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฉ”์„ธ์ง€ ํ๋Š” Producer ์™€ Consumer ์˜ ๋ฉ”์„ธ์ง€ ์ „๋‹ฌ ์—ญํ• ์„ ํ•˜๋Š” ๋งค๊ฐœ์ฒด์ด๋‹ค. ์ด ๊ตฌ์กฐ๋Š” ์—ฌ๋Ÿฌ ์ƒ์‚ฐ์ž๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ  ๋ฐ˜๋Œ€ํŽธ์—๋Š” ์ด ๋Œ€๊ธฐ์—ด์—์„œ ์ฝ๋Š” ๋งŽ์€ ์†Œ๋น„์ž๋‚˜ ์„œ๋ฒ„๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

์ด ๋ฉ”์‹œ์ง€ ํ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์žฅ์ ์€ ์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค!
์ฆ‰, ์ด ๋ฉ”์‹œ์ง€ ๋Œ€๊ธฐ์—ด์„ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ๋ฅผ ๋น„๋™๊ธฐ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์†Œ๋น„์ž(์„œ๋ฒ„)๊ฐ€ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์†Œ๋น„์ž์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ์—ด์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.
๋˜ํ•œ, ์ƒ์‚ฐ์ž๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฒŒ์‹œํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋„ ์†Œ๋น„์ž๋Š” ์—ฌ์ „ํžˆ ๋Œ€๊ธฐ์—ด์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์€ ๋‹ค์Œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.


ํ•˜์ง€๋งŒ ์ƒ์‚ฐ์ž๋‚˜ ์†Œ๋น„์ž ๋Œ€์‹  ๋ฉ”์‹œ์ง€ ํ๊ฐ€ ์†์ƒ๋˜๋ฉด ๋ชจ๋“  ๊ธฐ๋ก์ด ๋‹ค ๋‚ ๋ผ๊ฐ€๋‚˜? (Ex) ๊ฒฐ์ œ ์š”์ฒญ ๋“ฑ๋“ฑ..)

์—ฌ๊ธฐ์„œ ์•Œ์•„์•ผํ•  ๊ฒƒ์€ ๋ฉ”์‹œ์ง€ ํ์˜ ์ฃผ์š” ํŠน์„ฑ ์ค‘์— ๋‚ด๊ตฌ์„ฑ(Durability)์ด๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋‹ค.
์ฆ‰, ํ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ RAM์ด ์•„๋‹Œ ๋””์Šคํฌ์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์Šคํ…œ ์ถฉ๋Œ์ด๋‚˜ ์ „์›์ด ๊บผ์ง€๋Š” ๋“ฑ์˜ ์ƒํ™ฉ์—์„œ๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋˜์ง€ ์•Š๋Š”๋‹ค.
๋”ฐ๋ผ์„œ ์†Œ๋น„์ž(๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๋Š” ํ”„๋กœ์„ธ์Šค or ์„œ๋ฒ„)๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋„์ค‘์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ฉ”์‹œ์ง€๋Š” ์•ˆ์ „ํ•˜๋‹ค! ์˜ˆ๋ฅผ ๋“ค์–ด, ์„œ๋ฒ„๊ฐ€ ๊ฐ‘์ž๊ธฐ ์ข…๋ฃŒ๋˜์–ด๋„ ๋ฉ”์‹œ์ง€๋Š” ํ์— ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ๋‹ค.

+) ์œ ๋ช…ํ•œ ๋ฉ”์‹œ์ง€ ํ ์‹œ์Šคํ…œ๋“ค์—๋Š” Apache Kafka, RabbitMQ, Redis ๋“ฑ์ด ์žˆ๋‹ค.





์ฐธ๊ณ  ์ž๋ฃŒ

IPC

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

Message Queues in System Design

IPC์˜ ์ข…๋ฅ˜์™€ ํŠน์ง•

05-2 ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹  (IPC)

์นดํ”„์นด, ๋ ˆ๋น—์— ํ, ๋ ˆ๋””์Šค ํ์˜ ํฐ ์ฐจ์ด์ ! ์ด๋ฒคํŠธ ๋ธŒ๋กœ์ปค์™€ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค.

[์„œ๋ฒ„] ๋ฉ”์„ธ์ง€ ํ(Message Queue) ์„ ์•Œ์•„๋ณด์ž

Message Queue

0๊ฐœ์˜ ๋Œ“๊ธ€