[Computer Science][Operating System] ๐Ÿš€ IPC(Inter Process Communication)

๊น€์ƒ์šฑยท2024๋…„ 8์›” 11์ผ
post-thumbnail

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

์ด๋Ÿฌํ•œ ๋…๋ฆฝ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹ ์ด ํ•„์š”ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ IPC ํ†ต์‹ ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ์ปค๋„์ด ์ œ๊ณตํ•˜๋Š” IPC ์„ค๋น„๋ฅผ ์ด์šฉํ•˜์—ฌ ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์ปค๋„์ด๋ž€? ๐Ÿ› ๏ธ

์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„์œผ๋กœ, ๋‹ค๋ฅธ ๋ชจ๋“  ๋ถ€๋ถ„์— ์—ฌ๋Ÿฌ ๊ธฐ๋ณธ์ ์ธ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

IPC ์„ค๋น„์˜ ์ข…๋ฅ˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ ์ ์ ˆํ•œ IPC ์„ค๋น„๋ฅผ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

IPC ์ข…๋ฅ˜ ๐ŸŒŸ

  1. ์ต๋ช… PIPE

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

  2. Named PIPE (FIFO)

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

  3. Message Queue

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

  4. ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ

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

  5. ๋ฉ”๋ชจ๋ฆฌ ๋งต

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

  6. ์†Œ์ผ“

    ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” IPC์˜ ํ•œ ํ˜•ํƒœ์ด๋‹ค.
    ์†Œ์ผ“์€ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์ข…๋‹จ์ (endpoint)์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ถ”์ƒ ๊ฐœ๋…์ด๋‹ค.
    ๋„คํŠธ์›Œํฌ ์†Œ์ผ“ ํ†ต์‹ ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์†Œ์ผ“์„ ํ†ตํ•ด ํ†ต์‹ ํ•˜๋Š” ๊ตฌ์กฐ๋กœ ์›๊ฒฉ์—์„œ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.
    ์„œ๋ฒ„ ์ธก์—์„œ ํ†ต์‹ ์— ์‚ฌ์šฉํ•  ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜๊ณ , ์ƒ์„ฑ๋œ ์†Œ์ผ“์„ ํŠน์ • IP ์ฃผ์†Œ์™€ ํฌํŠธ ๋ฒˆํ˜ธ์— bindํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฐ”์ธ๋”ฉ๋œ ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ ์š”์ฒญ์„ listen(๋Œ€๊ธฐ) ํ•œ๋‹ค.
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด, ์ด ์š”์ฒญ์„ acceptํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์™€์˜ ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ๋Š” ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜๊ณ  ์„œ๋ฒ„๊ฐ€ ๋ฐ”์ธ๋”ฉํ•œ IP ์ฃผ์†Œ์™€ ํฌํŠธ ๋ฒˆํ˜ธ๋กœ ์—ฐ๊ฒฐ ์š”์ฒญ(connect)๋ฅผ ๋ณด๋‚ธ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ์ˆ˜๋ฝํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

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


[1] GitHub - IPC(Inter Process Communication).md (https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Operating%20System/IPC(Inter%20Process%20Communication).md)
[2] velog - [์šด์˜์ฒด์ œ] ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ(feat.IPC) (https://velog.io/@tjdtn0219/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9Cfeat.IPC)
[3] ํ‹ฐ์Šคํ† ๋ฆฌ - [IPC] Inter Process Communication - ๋ฏธ์Šคํ„ฐ๋ฆฌ์˜ IT ๊ณต๋ถ€ ์ผ๊ธฐ (https://mysterlee.tistory.com/104)
[4] ๊ฐœ๋ฐœ์ž ๋ฐฐ์”จ - [์šด์˜์ฒด์ œ 8ํŽธ] IPC๋ž€ ๋ฌด์—‡์ธ๊ฐ€ - ๊ฐœ๋ฐœ์ž ๋ฐฐ์”จ - ํ‹ฐ์Šคํ† ๋ฆฌ (https://baebalja.tistory.com/359)

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