๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ—ฃ๏ธ ์‹ ์ž… ์ธํ„ฐ๋ทฐ/์šด์˜์ฒด์ œ

์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ธํ„ฐ๋ทฐ : ๋™๊ธฐ ๋น„๋™๊ธฐ ๋ธ”๋ก ๋…ผ๋ธ”๋ก ๊ผฌ๊ผฌ๋ฌด ๐Ÿฎ

๐Ÿฑ ๋™๊ธฐ ๋น„๋™๊ธฐ ๋ธ”๋กœํ‚น ๋…ผ๋ธ”๋กœํ‚น์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

๋™๊ธฐ/๋น„๋™๊ธฐ = ํ˜ธ์ถœ๋‹นํ•œ ํ•จ์ˆ˜์˜ ์ข…๋ฃŒ๋ฅผ ๋ˆ„๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š๋ƒ
๋ธ”๋กœํ‚น/๋„Œ๋ธ”๋กœํ‚น = ์ œ์–ด๊ถŒ์ด ๋ˆ„๊ตฌ์—๊ฒŒ ๋Œ์•„๊ฐ€๋Š๋ƒ
  • ๋™๊ธฐ (Synchronous) ๋Š” ์ž‘์—…์˜ ์ˆœ์ฐจ์ ์ธ ์ง„ํ–‰์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ํŠธ๋žœ์žญ์…˜์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ•œ ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€ ๋‹ค์Œ ํŠธ๋žœ์žญ์…˜์€ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
    • ํƒ„์ƒ ๋ฐฐ๊ฒฝ: ์ดˆ๊ธฐ ์ปดํ“จํŒ… ์‹œ์Šคํ…œ์—์„œ๋Š” ์ž‘์—…๋“ค์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•œ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์–ด์•ผ ๋‹ค์Œ ์ž‘์—…์ด ์‹œ์ž‘๋  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉฐ, ์ด๋Ÿฌํ•œ ๋™๊ธฐ์  ์ฒ˜๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋‹จ์ˆœํ•˜๊ณ  ์ง๊ด€์ ์œผ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋น„๋™๊ธฐ (Asynchronous) ๋Š” ์ž‘์—…์˜ ์™„๋ฃŒ์— ๋Œ€ํ•œ ์ฝœ๋ฐฑ์ด๋‚˜ ์ด๋ฒคํŠธ๊ฐ™์€ ์•Œ๋ฆผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ: ์›น์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ์ž‘์—…์„ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ฒ˜๋ฆฌํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • ํƒ„์ƒ ๋ฐฐ๊ฒฝ: ๋™๊ธฐ์  ์ฒ˜๋ฆฌ์˜ ํ•œ๊ณ„, ํŠนํžˆ I/O ์ž‘์—…์ด๋‚˜ ๋„คํŠธ์›Œํฌ ์š”์ฒญ๊ณผ ๊ฐ™์€ ๊ธด ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ํ•„์š”ํ•œ ์ž‘์—…์—์„œ ํ”„๋กœ๊ทธ๋žจ์˜ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๋™์•ˆ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์„œ, ์ „์ฒด ์‹œ์Šคํ…œ์˜ ํšจ์œจ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.
  • ๋ธ”๋กœํ‚น์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  ๋™๊ธฐ์  ์ž‘์—…์€ ๋ธ”๋กœํ‚น์ผ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋™๊ธฐ์ ์ด์ง€๋งŒ ๋„Œ๋ธ”๋กœํ‚น์ธ ์ž‘์—…์˜ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ: ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ ์—์„œ ๋ธ”๋กœํ‚น ์†Œ์ผ“์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ๋„์ฐฉํ•  ๋•Œ๊นŒ์ง€ ์‹คํ–‰์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, recv() ํ•จ์ˆ˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์„ ์ •์ง€์‹œํ‚ค๊ณ  ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
    • ํƒ„์ƒ ๋ฐฐ๊ฒฝ: ์ดˆ๊ธฐ ์ปดํ“จํŒ…์—์„œ๋Š” ์ž‘์—… ์‹คํ–‰ ์‹œ ๋‹ค๋ฅธ ์ž‘์—…์ด ๋™์‹œ์— ์‹คํ–‰๋˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ง‰๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด์—ˆ๋Š”๋ฐ์š”, ์ด ๋ฐฉ์‹์€ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ด๊ณ , ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ˆ์ •์ ์ธ ์ ‘๊ทผ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋„Œ๋ธ”๋กœํ‚น์€ ์š”์ฒญํ•œ ์ž‘์—…์ด ์ฆ‰์‹œ ์™„๋ฃŒ๋˜์ง€ ์•Š๋”๋ผ๋„ ๊ทธ ์ƒํƒœ๋ฅผ ๋Œ€๊ธฐํ•˜์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ๋‹ค๋ฅธ ์ž‘์—…์œผ๋กœ ๋„˜์–ด๊ฐ€๋ฉฐ, ๋‚˜์ค‘์— ์ž‘์—…์˜ ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ: ์ฃผ๋กœ I/O ์ž‘์—…์—์„œ ๋น ๋ฅธ ์‘๋‹ต์„ฑ์ด ํ•„์š”ํ•  ๋•Œ. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋„Œ๋ธ”๋กœํ‚น ์†Œ์ผ“์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜์ง€ ์•Š๊ณ , ๊ทธ ์ƒํƒœ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ™•์ธ polling ํ•ฉ๋‹ˆ๋‹ค.
    • ํƒ„์ƒ ๋ฐฐ๊ฒฝ: ๋ธ”๋กœํ‚น ๋ฐฉ์‹์˜ ๋‹จ์ , ํŠนํžˆ ์‹œ์Šคํ…œ ์ž์›์ด๋‚˜ ์ž‘์—… ๋Œ€๊ธฐ ์‹œ๊ฐ„์œผ๋กœ ์ธํ•œ ํšจ์œจ์„ฑ ์ €ํ•˜๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋…ผ๋ธ”๋กœํ‚น ๋ฐฉ์‹์€ ์ž‘์—…์ด ์ฆ‰์‹œ ์™„๋ฃŒ๋˜์ง€ ์•Š๋”๋ผ๋„ ๋‹ค๋ฅธ ์ž‘์—…์œผ๋กœ ์ „ํ™˜ํ•ด์„œ CPU ์‹œ๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿฑ ์Šคํ•€๋ฝ์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

 

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


๐Ÿฑ ์Šคํ•€๋ฝ์˜ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 

์ด๋Ÿฌํ•œ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค๋ฅธ ๋ฝ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ๋Š” ๋ฎคํ…์Šค์™€ ์„ธ๋งˆํฌ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฎคํ…์Šค์™€ ์„ธ๋งˆํฌ์–ด๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ ํ•ฉํ•œ ๋™๊ธฐํ™” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

  1. ๋ฎคํ…์Šค(Mutex)
    • ๋ฎคํ…์Šค (mutex) ๋Š” ์ƒํ˜ธ ๋ฐฐ์ œ (mutual exclusive) ๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ์ž„๊ณ„ ์˜์—ญ (Critical Section) ์„ ๊ฐ€์ง„ ์Šค๋ ˆ๋“œ์˜ Running Time ์ด ์„œ๋กœ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ๊ฐ๊ฐ ๋‹จ๋…์œผ๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.  ์ฆ‰, ํ•œ ์‹œ์ ์— ๋‹จ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ์ด ์ž„๊ณ„ ์˜์—ญ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋ฝ์„ ํš๋“ํ•œ ์Šค๋ ˆ๋“œ๋งŒ์ด ๋ฝ์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฎคํ…์Šค์˜ ์†Œ์œ  ๊ฐœ๋…๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์ž„๊ณ„ ์˜์—ญ์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ๊ณต์œ ๋˜๋Š” ์ž์› (์˜ˆ: ๋ณ€์ˆ˜, ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ, ํŒŒ์ผ ๋“ฑ) ์— ์ ‘๊ทผํ•˜๋Š” ์ฝ”๋“œ ์˜์—ญ์ž…๋‹ˆ๋‹ค.
    • ๋ฎคํ…์Šค๋Š” ์Šคํ•€๋ฝ๊ณผ ๋‹ฌ๋ฆฌ ๋ฝ์„ ์–ป์„ ์ˆ˜ ์—†๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋Š” CPU ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๋ฎคํ…์Šค๋Š” ์ปค๋„์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋ฉฐ, ๋ฝ์„ ์–ป์œผ๋ ค๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ๋Œ€๊ธฐ ํ์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    • ๋‹จ์ : ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ (context switch) ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ๋น„์‹ผ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ  ๋ฎคํ…์Šค๋„ ๋ฐ๋“œ๋ฝ์„ ์™„์ „ํžˆ ๋ฐฉ์ง€ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋ฎคํ…์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ๋„, ์—ฌ๋Ÿฌ ๋ฎคํ…์Šค๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•  ๋•Œ ์ž˜๋ชป๋œ ์ˆœ์„œ๋กœ ๋ฝ์„ ํš๋“ํ•˜๊ฑฐ๋‚˜ ํ•ด์ œํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์„ธ๋งˆํฌ์–ด(Semaphore):
    • ์„ธ๋งˆํฌ์–ด๋Š” ๋ฎคํ…์Šค์™€ ๋น„์Šทํ•˜์ง€๋งŒ, ์ œํ•œ๋œ ์ˆ˜์˜ ๋™์‹œ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„ธ๋งˆํฌ์–ด๋Š” ์นด์šดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋ฆฌ์†Œ์Šค๋ฅผ ๋ช‡ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์„ธ๋งˆํฌ์–ด์—์„œ๋Š” ๋ฝ์„ ํš๋“ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฝ์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์„ธ๋งˆํฌ์–ด๋Š” ํŠน์ •ํ•œ ์ˆ˜์˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฎคํ…์Šค์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ๋ฎคํ…์Šค๋ณด๋‹ค ๋” ์ผ๋ฐ˜์ ์ธ ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค.
    • ๋‹จ์ : ์„ธ๋งˆํฌ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋” ๋ณต์žกํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ž˜๋ชป ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ๋“œ๋ฝ(deadlock) ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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


๐Ÿฑ ์„ธ๋งˆํฌ์–ด์˜ ์ข…๋ฅ˜๋Š” ๋ญ๊ฐ€ ์žˆ๋‚˜์š”?

 

์„ธ๋งˆํฌ์–ด(Semaphore)๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ,

์ด์ง„ ์„ธ๋งˆํฌ์–ด(Binary Semaphore)์™€ ์นด์šดํŒ… ์„ธ๋งˆํฌ์–ด(Counting Semaphore) ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด์ง„ ์„ธ๋งˆํฌ์–ด (Binary Semaphore)

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

์นด์šดํŒ… ์„ธ๋งˆํฌ์–ด (Counting Semaphore)

  • ๊ฐœ๋…: ์นด์šดํŒ… ์„ธ๋งˆํฌ์–ด๋Š” `0 ์ด์ƒ์˜ ์ •์ˆ˜ ๊ฐ’`์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฆฌ์†Œ์Šค์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์„ธ๋งˆํฌ์–ด์˜ ๊ฐ’์ด `3`์ด๋ผ๋ฉด, ์„ธ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ํ•ด๋‹น ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ์šฉ๋„: ์นด์šดํŒ… ์„ธ๋งˆํฌ์–ด๋Š” ์ œํ•œ๋œ ์ˆ˜์˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๋™์‹œ ์ ‘๊ทผ์„ ์ œ์–ดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ํ’€์—์„œ ์ตœ๋Œ€ ๋™์‹œ ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์ด์ง„ ์„ธ๋งˆํฌ์–ด๋Š” ๋ฎคํ…์Šค์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์„ธ๋งˆํฌ์–ด์˜ ์†Œ์œ ๊ถŒ ๋ฐ ํ•ด์ œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ด์ง„ ์„ธ๋งˆํฌ์–ด ์™ธ์—๋„, ์นด์šดํŒ… ์„ธ๋งˆํฌ์–ด๋Š” ๋” ๋งŽ์€ ์ˆ˜์˜ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฐจ์ด์ ์€ ์„ธ๋งˆํฌ์–ด๋ฅผ ์„ ํƒํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ค‘์š”ํ•œ ์š”์†Œ์ž…๋‹ˆ๋‹ค.


๐Ÿฑ ๋ฐ๋“œ๋ฝ์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

 

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

 

๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜๋ ค๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋„ค ๊ฐ€์ง€ ์กฐ๊ฑด์ด ๋ชจ๋‘ ์ถฉ์กฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ƒํ˜ธ ๋ฐฐ์ œ(Mutual Exclusion): ๋ฆฌ์†Œ์Šค๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ ์œ  ๋Œ€๊ธฐ(Hold and Wait): ํ”„๋กœ์„ธ์Šค๋Š” ์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉด์„œ ๋™์‹œ์— ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ณด์œ ํ•œ ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
  3. ๋น„์„ ์ (No Preemption): ๋ฆฌ์†Œ์Šค๋Š” ์ž๋ฐœ์ ์œผ๋กœ๋งŒ ํ•ด์ œ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ๊ฐ•์ œ๋กœ ๋บ๊ธธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  4. ์ˆœํ™˜ ๋Œ€๊ธฐ(Circular Wait): ๋Œ€๊ธฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค ์‚ฌ์ด์—๋Š” ์ˆœํ™˜ ํ˜•ํƒœ์˜ ๋Œ€๊ธฐ ์ฒด์ธ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์š”๊ตฌํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿฑ ๋ฐ๋“œ๋ฝ์„ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด?

 

๋ฐ๋“œ๋ฝ์„ ํ•ด๊ฒฐํ•˜๊ณ  ์˜ˆ๋ฐฉํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ค์„ฏ ๊ฐ€์ง€ ์ •๋„๋ฅผ ์„ค๋ช…๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ฒซ ๋ฒˆ์งธ๋กœ, '์ž์› ํ• ๋‹น ์ˆœ์„œ'๋ฅผ ์ •ํ•˜๋Š” ๊ฑด๋ฐ, ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์š”์ฒญํ•˜๊ฒŒ ํ•˜๋ฉด ์ˆœํ™˜ ๋Œ€๊ธฐ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ๋Š” '์ž์›์„ ํ•œ ๋ฒˆ์— ์š”์ฒญ'ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ ํ•„์š”ํ•œ ๋ชจ๋“  ์ž์›์„ ํ•œ๊บผ๋ฒˆ์— ์š”์ฒญํ•˜๋ฉด, ํ•„์š”ํ•œ ์ž์› ์ค‘ ์ผ๋ถ€๋งŒ ๊ฐ–๊ณ  ๋Œ€๊ธฐํ•˜๋Š” ์ƒํ™ฉ์„ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ธ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ '์‚ฌ์ „์— ์ž์›์„ ํ• ๋‹นํ•˜์ง€ ์•Š๋Š” ๊ฒƒ'์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์‚ฌ์šฉํ•  ๋•Œ๋งŒ ์š”์ฒญํ•˜๊ฒŒ ํ•ด์„œ ๋ถˆํ•„์š”ํ•œ ์ž์› ๋ณด์œ ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

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