๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ComputerScience ๐Ÿ“š/์šด์˜์ฒด์ œ

[OS] ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (Interprocess Communication, IPC)

by ์•ˆ์ฃผํ˜• 2022. 2. 10.

ํ•™์Šต์ค‘์ธ ๊ต์žฌ

 

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

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

 ํ”„๋กœ์„ธ์Šค ํ˜‘๋ ฅ์„ ํ—ˆ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

 ํ˜‘๋ ฅ์  ํ”„๋กœ์„ธ์Šค๋“ค์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋Š”, ์ฆ‰ ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (interprocess communication, IPC) ๊ธฐ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ(shared memory)์™€ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ(message passing)์˜ ๋‘ ๊ฐ€์ง€ ๋ชจ๋ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ์—์„œ๋Š” ํ˜‘๋ ฅ ํ”„๋กœ์„ธ์Šค๋“ค์— ์˜ํ•ด ๊ณต์œ ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์˜์—ญ์œผ๋กœ ๊ตฌ์ถ•๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋“ค์€ ๊ทธ ์˜์—ญ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๊ณ  ํ•จ์œผ๋กœ์จ ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ๋ชจ๋ธ์—์„œ๋Š” ํ†ต์‹ ์ด ํ˜‘๋ ฅ ํ”„๋กœ์„ธ์Šค๋“ค ์‚ฌ์ด์— ๊ตํ™˜๋˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•˜์—ฌ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์ด ๋‘ ๋ชจ๋ธ์ด ์•„๋ž˜์˜ ์ด๋ฏธ์ง€์— ๋Œ€๋น„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

(a): ๊ณต๋ฎค๋ฉ”๋ชจ๋ฆฌ, (B): ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ

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

 

 

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ์—์„œ์˜ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (IPC in Shared-Memory Systems)

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

 ํ˜‘๋ ฅํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ๋…์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„œ, ํ˜‘๋ ฅํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ฐ˜์ ์ธ ํŒจ๋Ÿฌ๋‹ค์ž„์ธ ์ƒ์‚ฐ์ž-์†Œ๋น„์ž ๋ฌธ์ œ๋ฅผ ์ƒ๊ฐํ•ด ๋ณด๊ธฐ๋กœ ํ•ฉ์‹œ๋‹ค. ์ƒ์‚ฐ์ž ํ”„๋กœ์„ธ์Šค๋Š” ์ •๋ณด๋ฅผ ์ƒ์‚ฐํ•˜๊ณ  ์†Œ๋น„์ž ํ”„๋กœ์„ธ์Šค๋Š” ์ •๋ณด๋ฅผ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ƒ์‚ฐํ•˜๊ณ , ์–ด์…ˆ๋ธ”๋Ÿฌ๋Š” ์ด๊ฒƒ์„ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค. ์–ด์…ˆ๋ธ”๋Ÿฌ๋Š” ์ด์–ด ๋ชฉ์  ๋ชจ๋“ˆ(object module)์„ ์ƒ์‚ฐํ•  ์ˆ˜ ์žˆ๊ณ , ์ ์žฌ๊ธฐ(loader)๋Š” ์ด๋“ค์„ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์‚ฐ์ž ์†Œ๋น„์ž ๋ฌธ์ œ๋Š” ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์œ„ํ•œ ์œ ์šฉํ•œ ์€์œ ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์„œ๋ฒ„๋ฅผ ์ƒ์‚ฐ์ž๋กœ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์†Œ๋น„์ž๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์›น ์„œ๋ฒ„๋Š” HTML ํŒŒ์ผ๊ณผ ์ด๋ฏธ์ง€์™€ ๊ฐ™์€ ์›น ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ์‚ฐํ•˜๊ณ (์ฆ‰, ์ œ๊ณตํ•˜๊ณ ) ์ด ์ž์›๋“ค์„ ์š”์ฒญํ•œ ํด๋ผ์ด์–ธํŠธ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์†Œ๋น„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.(์ฆ‰ ์ฝ๋Š”๋‹ค)

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

 ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ๋ฒ„ํผ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฌดํ•œ ๋ฒ„ํผ(unbounded buffer)์˜ ์ƒ์‚ฐ์ž ์†Œ๋น„์ž ๋ฌธ์ œ์—์„œ๋Š” ๋ฒ„ํผ์˜ ํฌ๊ธฐ์— ์‹ค์งˆ์ ์ธ ํ•œ๊ณ„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์†Œ๋น„์ž๋Š” ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์„ ๊ธฐ๋‹ค๋ ค์•ผ๋งŒ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ƒ์‚ฐ์ž๋Š” ํ•ญ์ƒ ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์„ ์ƒ์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ํ•œ ๋ฒ„ํผ(bounded buffer)๋Š” ๋ฒ„ํผ์˜ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฒ„ํผ๊ฐ€ ๋น„์–ด ์žˆ์œผ๋ฉด ์†Œ๋น„์ž๋Š” ๋ฐ˜๋“œ์‹œ ๋Œ€๊ธฐํ•ด์•ผ ํ•˜๋ฉฐ, ๋ชจ๋“  ๋ฒ„ํผ๊ฐ€ ์ฑ„์›Œ์ ธ ์žˆ์œผ๋ฉด ์ƒ์‚ฐ์ž๊ฐ€ ๋Œ€๊ธฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

#define BUFFER SIZE 10

typedef struct {
	...
} item;

item buffer[BUFFER SIZE];
int in = 0;
int out = 0;

๊ณต์œ  ๋ฒ„ํผ๋Š” ๋‘ ๊ฐœ์˜ ๋…ผ๋ฆฌ ํฌ์ธํ„ฐ in๊ณผ out์„ ๊ฐ–๋Š” ์›ํ˜• ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ in์€ ๋ฒ„ํผ ๋‚ด์—์„œ ๋‹ค์Œ์œผ๋กœ ๋น„์–ด ์žˆ๋Š” ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ, out์€ ๋ฒ„ํผ ๋‚ด์—์„œ ์ฒซ ๋ฒˆ์งธ๋กœ ์ฑ„์›Œ์ ธ ์žˆ๋Š” ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. in==out; ์ผ ๋•Œ ๋ฒ„ํผ๋Š” ๋น„์–ด ์žˆ๊ณ , ((in+1)% BUFFER_SIZE) == out)์ด๋ฉด ๋ฒ„ํผ๋Š” ๊ฐ€๋“ ์ฐจ ์žˆ์Šต๋‹ˆ๋‹ค.

 ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž์˜ ์ฝ”๋“œ๊ฐ€ ์•„๋ž˜์— ๋‚˜ํƒ€๋‚˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ์ƒ์‚ฐ์ž ํ”„๋กœ์„ธ์Šค

// ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ์ƒ์‚ฐ์ž ํ”„๋กœ์„ธ์Šค
item next produced;

while (true) {
	/* produce an item in next produced */
    
	while (((in + 1) % BUFFER SIZE) == out)
		; /* do nothing */
    
		buffer[in] = next produced;
		in = (in + 1) % BUFFER SIZE;
}

 

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ์†Œ๋น„์ž ํ”„๋กœ์„ธ์Šค

// ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ์†Œ๋น„์ž ํ”„๋กœ์„ธ์Šค
item next consumed;

while (true) {
	while (in == out)
    	; /* do nothing */
	next consumed = buffer[out];
    out = (out + 1) % BUFFER SIZE;
    
/* consume the item in next consumed */
}

์ƒ์‚ฐ์ž ํ”„๋กœ์„ธ์Šค๋Š” next_Produced๋ผ๋Š” ์ง€์—ญ ๋ณ€์ˆ˜์— ๋‹ค์Œ๋ฒˆ ์ƒ์ƒ๋˜๋Š” item์„ ์ €์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ๋น„์ž ์ฝ”๋“œ๋Š” next_Consumed๋ผ๋Š” ์ง€์—ญ ๋ณ€์ˆ˜์— ๋‹ค์Œ๋ฒˆ ์†Œ๋น„๋˜๋Š” item์„ ์ €์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 ์ด ๋ฐฉ๋ฒ•์€ ์ตœ๋Œ€ BUFFER_SIZE - 1 ๊นŒ์ง€๋งŒ์„ ๋ฒ„ํผ์— ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ์‹œ์Šคํ…œ์—์„œ์˜ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (IPC in Message-Passing Systems)

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

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

 ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ์‹œ์Šคํ…œ์€ ์ตœ์†Œํ•œ ๋‘ ๊ฐ€์ง€ ์—ฐ์‚ฐ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • send(message)
  • receive(message)

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

 ๋งŒ์•ฝ ํ”„๋กœ์„ธ์Šค P์™€ Q๊ฐ€ ํ†ต์‹ ์„ ์›ํ•˜๋ฉด, ๋ฐ˜๋“œ์‹œ ์„œ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค ์‚ฌ์ด์— ํ†ต์‹  ์—ฐ๊ฒฐ(communication link)์ด ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ฐ๊ฒฐ์€ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฐ๊ฒฐ์˜ ๋ฌผ๋ฆฌ์ ์ธ ๊ตฌํ˜„์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋…ผ๋ฆฌ์ ์ธ ๊ตฌํ˜„์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋งํฌ์™€ send() / receive() ์—ฐ์‚ฐ์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋‹ค์ˆ˜์˜ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ง์ ‘ ๋˜๋Š” ๊ฐ„์ ‘ ํ†ต์‹ 
  • ๋™๊ธฐ์‹ ๋˜๋Š” ๋น„๋™๊ธฐ์‹ ํ†ต์‹ 
  • ์ž๋™ ๋˜๋Š” ๋ช…์‹œ์  ๋ฒ„ํผ๋ง

๋‹ค์Œ์œผ๋กœ ์ด ํŠน์„ฑ๊ณผ ๊ด€๋ จ๋œ ์Ÿ์ ๋“ค์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

(1) ๋ช…๋ช…(Naming)

ํ†ต์‹ ์„ ์›ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์€ ์„œ๋กœ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค์€ ๊ฐ„์ ‘ ํ†ต์‹  ๋˜๋Š” ์ง์ ‘ ํ†ต์‹ ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 ์ง์ ‘ ํ†ต์‹ ํ•˜์—์„œ, ํ†ต์‹ ์„ ์›ํ•˜๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ํ†ต์‹ ์˜ ์ˆ˜์‹ ์ž ๋˜๋Š” ์†ก์‹ ์ž์˜ ์ด๋ฆ„์„ ๋ช…์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ฒ•์—์„œ send(), receive() ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

  • send(P, message) - ํ”„๋กœ์„ธ์Šค P์— ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  • receive(Q, message) - ํ”„๋กœ์„ธ์Šค Q๋กœ๋ถ€ํ„ฐ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋ฒ•์—์„œ ํ†ต์‹  ์—ฐ๊ฒฐ์€ ๋‹ค์Œ์˜ ํŠน์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

  • ํ†ต์‹ ์„ ์›ํ•˜๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์Œ๋“ค ์‚ฌ์ด์— ์—ฐ๊ฒฐ์ด ์ž๋™์œผ๋กœ ๊ตฌ์ถ•๋œ๋‹ค. ํ”„๋กœ์„ธ์Šค๋“ค์€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๋Œ€๋ฐฉ์˜ ์‹ ์›(identity)๋งŒ ์•Œ๋ฉด ๋œ๋‹ค.
  • ์—ฐ๊ฒฐ์€ ์ •ํ™•ํžˆ ๋‘ ํ”„๋กœ์„ธ์Šค ์‚ฌ์ด์—๋งŒ ์—ฐ๊ด€๋œ๋‹ค.
  • ํ†ต์‹ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ๊ฐ ์Œ ์‚ฌ์ด์—๋Š” ์ •ํ™•ํ•˜๊ฒŒ ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ์ด ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.

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

  • send(P, message) - ๋ฉ”์‹œ์ง€๋ฅผ ํ”„๋กœ์„ธ์Šค P์— ์ „์†กํ•œ๋‹ค.
  • receive(id, message) - ์ž„์˜์˜ ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•œ๋‹ค. ๋ณ€์ˆ˜ id๋Š” ํ†ต์‹ ์„ ๋ฐœ์ƒ์‹œํ‚จ ํ”„๋กœ์„ธ์Šค์˜ ์ด๋ฆ„์œผ๋กœ ์„ค์ •๋œ๋‹ค.

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

 ๊ฐ„์ ‘ ํ†ต์‹ ์—์„œ ๋ฉ”์‹œ์ง€๋“ค์€ ๋ฉ”์ผ๋ฐ•์Šค(mailbox) ๋˜๋Š” ํฌํŠธ(port)๋กœ ์†ก์‹ ๋˜๊ณ , ๊ทธ๊ฒƒ์œผ๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ๋ฉ๋‹ˆ๋‹ค. ๋ฉ”์ผ๋ฐ•์Šค๋Š” ์ถ”์ƒ์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋“ค์— ์˜ํ•ด ๋ฉ”์‹œ์ง€๋“ค์ด ๋„ฃ์–ด์ง€๊ณ , ๋ฉ”์‹œ์ง€๋“ค์ด ์ œ๊ฑฐ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๋ผ๊ณ ๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฉ”์ผ๋ฐ•์Šค๋Š” ๊ณ ์œ ์˜ id๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด POSIX ๋ฉ”์‹œ์ง€ ํ๋Š” ๋ฉ”์ผ๋ฐ•์Šค๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์ •์ˆ˜ ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ฒ•์—์„œ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์ˆ˜์˜ ์ƒ์ดํ•œ ๋ฉ”์ผ๋ฐ•์Šค๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค๊ณผ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๊ณต์œ  ๋ฉ”์ผ๋ฐ•์Šค๋ฅผ ๊ฐ€์งˆ ๋•Œ๋งŒ ์ด๋“ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. send()์™€ receive() ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • send(A, message) - ๋ฉ”์‹œ์ง€๋ฅผ ๋ฉ”์ผ๋ฐ•์Šค A๋กœ ์†ก์‹ ํ•œ๋‹ค.
  • receive(A, message) - ๋ฉ”์‹œ์ง€๋ฅผ ๋ฉ”์ผ๋ฐ•์Šค A๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ํ•œ๋‹ค.

์ด ๋ฐฉ๋ฒ•์—์„œ ํ†ต์‹  ์—ฐ๊ฒฐ์€ ๋‹ค์Œ์˜ ์„ฑ์งˆ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

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

 ํ”„๋กœ์„ธ์Šค P1, P2, P3๊ฐ€ ๋ชจ๋‘ ๋ฉ”์ผ๋ฐ•์Šค A๋ฅผ ๊ณต์œ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ํ”„๋กœ์„ธ์Šค P1์€ ๋ฉ”์‹œ์ง€๋ฅผ A์— ์†ก์‹ ํ•˜๊ณ , P2์™€ P3๋Š” ๊ฐ๊ฐ A๋กœ๋ถ€ํ„ฐ receive()๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋Š ํ”„๋กœ์„ธ์Šค๊ฐ€ P1์ด ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ• ๊นŒ์š”? ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‹ต์€ ์šฐ๋ฆฌ๊ฐ€ ์„ ํƒํ•  ๊ธฐ๋ฒ•์— ์ขŒ์šฐ๋ฉ๋‹ˆ๋‹ค.

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

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

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

  • ์ƒˆ๋กœ์šด ๋ฉ”์ผ๋ฐ•์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • ๋ฉ”์ผ๋ฐ•์Šค๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์†ก์‹ ํ•˜๊ณ  ์ˆ˜์‹ ํ•œ๋‹ค.
  • ๋ฉ”์ผ๋ฐ•์Šค๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

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

 

(2) ๋™๊ธฐํ™”(Synchronization)

ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹ ์€ send์™€ receive ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ์— ๋Œ€ํ•œ ํ˜ธ์ถœ์— ์˜ํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋กœ ๋‹ค๋ฅธ ์„ค๊ณ„ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ์€ ๋ด‰์‡„ํ˜•(blocking)์ด๊ฑฐ๋‚˜ ๋น„ ๋ด‰์‡„ํ˜•(nonblocking) ๋ฐฉ์‹์œผ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์ด ๋‘ ๋ฐฉ์‹์€ ๊ฐ๊ฐ ๋™๊ธฐ์‹, ๋น„๋™๊ธฐ์‹์ด๋ผ๊ณ ๋„ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ด‰์‡„ํ˜• ๋ณด๋‚ด๊ธฐ: ์†ก์‹ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ์ˆ˜์‹  ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ๋ฉ”์ผ๋ฐ•์Šค์— ์˜ํ•ด ์ˆ˜์‹ ๋  ๋•Œ๊นŒ์ง€ ๋ด‰์‡„๋œ๋‹ค.
  • ๋น„๋ด‰์‡„ํ˜• ๋ณด๋‚ด๊ธฐ: ์†ก์‹ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  ์ž‘์—…์„ ์žฌ์‹œ์ž‘ํ•œ๋‹ค.
  • ๋ด‰์‡„ํ˜• ๋ฐ›๊ธฐ: ๋ฉ”์‹œ์ง€๊ฐ€ ์ด์šฉ ๊ฐ€๋Šฅํ•  ๋•Œ๊นŒ์ง€ ์ˆ˜์‹  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ด‰์‡„๋œ๋‹ค.
  • ๋น„๋ด‰์‡„ํ˜• ๋ฐ›๊ธฐ: ์†ก์‹ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์œ ์š”ํ•œ ๋ฉ”์‹œ์ง€ ๋˜๋Š” ๋„(null)์„ ๋ฐ›๋Š”๋‹ค.

 send()์™€ reeive()์˜ ๋‹ค๋ฅธ ์กฐํ•ฉ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. send()์™€ receive()๊ฐ€ ๋ชจ๋‘ ๋ด‰์‡„ํ˜•์ผ ๋•Œ, ์šฐ๋ฆฌ๋Š” ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž ๊ฐ„์— ๋ž‘๋ฐ๋ถ€(rendezvous)๋ฅผ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ด‰์‡„ํ˜• send()์™€ receive()๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์‚ฌ์†Œํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ƒ์‚ฐ์ž๋Š” ๋‹จ์ˆœํžˆ ๋ด‰์‡„ํ˜• send()๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ์ˆ˜์‹ ์ž ๋˜๋Š” ๋ฉ”์ผ๋ฐ•์Šค์— ์ „๋‹ฌ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์œ ์‚ฌํ•˜๊ฒŒ ์†Œ๋น„์ž๊ฐ€ receive()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฉ”์‹œ์ง€๊ฐ€ ์ „๋‹ฌ๋  ๋•Œ๊นŒ์ง€ ๋ด‰์‡„๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ๋‘ ์ฝ”๋“œ๊ฐ€ ์ด ๋™์ž‘์„ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”์‹œ์ง€ ์ „๋‹ฌ์„ ์‚ฌ์šฉํ•˜๋Š” ์ƒ์‚ฐ์ž ํ”„๋กœ์„ธ์Šค

message next produced;

while (true) {
	/* produce an item in next produced */
	send(next produced);
}

 

๋ฉ”์‹œ์ง€ ์ „๋‹ฌ์„ ์‚ฌ์šฉํ•˜๋Š” ์†Œ๋น„์ž ํ”„๋กœ์„ธ์Šค

message next consumed;

while (true) {
	receive(next consumed);
    
	/* consume the item in next consumed */
}

 

(3) ๋ฒ„ํผ๋ง(Buffering)

ํ†ต์‹ ์ด ์ง์ ‘์ ์ด๋“  ๊ฐ„์ ‘์ ์ด๋“  ๊ฐ„์—, ํ†ต์‹ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์— ์˜ํ•ด ๊ตํ™˜๋˜๋Š” ๋ฉ”์‹œ์ง€๋Š” ์ž„์‹œ ํ์— ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์€ ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฌด์šฉ๋Ÿ‰(zero capacity): ํ์˜ ์ตœ๋Œ€ ๊ธธ์ด๊ฐ€ 0์ด๋‹ค. ์ฆ‰, ๋งํฌ๋Š” ์ž์ฒด ์•ˆ์— ๋Œ€๊ธฐํ•˜๋Š” ๋ฉ”์‹œ์ง€๋“ค์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค. ์ด ๊ฒฝ์šฐ์—, ์†ก์‹ ์ž๋Š” ์ˆ˜์‹ ์ž๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.
  • ์œ ํ•œ ์šฉ๋Ÿ‰(bounded capacity): ํ๋Š” ์œ ์ผํ•œ ๊ธธ์ด n์„ ๊ฐ€์ง„๋‹ค. ์ฆ‰ ์ตœ๋Œ€ n๊ฐœ์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๊ทธ ์•ˆ์— ๋“ค์–ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋  ๋•Œ ํ๊ฐ€ ๊ฝ‰ ์ฐจ์ง€ ์•Š์•˜๋‹ค๋ฉด, ๋ฉ”์‹œ์ง€๋Š” ํ์— ๋†“์ด๋ฉฐ(๋ฉ”์‹œ์ง€๊ฐ€ ๋ณต์‚ฌ๋˜๋“ ์ง€ ๋˜๋Š” ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๊ฐ€ ์œ ์ง€๋œ๋‹ค), ์†ก์‹ ์ž๋Š” ๋Œ€๊ธฐํ•˜์ง€ ์•Š๊ณ  ์‹คํ–‰์„ ๊ณ„์†ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ, ๋งํฌ๋Š” ์œ ํ•œํ•œ ์šฉ๋Ÿ‰์„ ๊ฐ€์ง„๋‹ค. ๋งํฌ๊ฐ€ ๊ฝ‰ ์ฐจ๋ฉด, ์†ก์‹ ์ž๋Š” ํ ์•ˆ์— ๊ณต๊ฐ„์ด ์ด์šฉ ๊ฐ€๋Šฅํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋“œ์‹œ ๋ด‰์‡„๋˜์–ด์•ผ ํ•œ๋‹ค.
  • ๋ฌดํ•œ ์šฉ๋Ÿ‰(unbounded capacity): ํ๋Š” ์ž ์žฌ์ ์œผ๋กœ ๋ฌดํ•œํ•œ ๊ธธ์ด๋ฅผ ๊ฐ€์ง„๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉ”์‹œ์ง€๋“ค์ด ์–ผ๋งˆ๋“ ์ง€ ํ ์•ˆ์—์„œ ๋Œ€๊ธฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์†ก์‹ฑ์ž๋Š” ์ ˆ๋Œ€ ๋ด‰์‡„๋˜์ง€ ์•Š๋Š”๋‹ค.

๋ฌด์šฉ๋Ÿ‰์˜ ๊ฒฝ์šฐ๋Š” ๋•Œ๋•Œ๋กœ ๋ฒ„ํผ๊ฐ€ ์—†๋Š” ๋ฉ”์‹œ์ง€ ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋“ค์€ ์ž๋™ ๋ฒ„ํผ๋ง์ด๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.

๋Œ“๊ธ€