Bibi's DevLog ๐Ÿค“๐ŸŽ

๋ฐ๋“œ๋ฝ์ด๋ž€? ๋ณธ๋ฌธ

๐Ÿ–ฅ BE ๋ฐฑ์—”๋“œ

๋ฐ๋“œ๋ฝ์ด๋ž€?

๋น„๋น„ bibi 2021. 3. 2. 23:44

๋ฐ๋“œ๋ฝ DeadLock

๋ฐ๋“œ๋ฝ (๊ต์ฐฉ ์ƒํƒœ) ์ด๋ž€?

: ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์–ป์ง€ ๋ชปํ•ด ๋‹ค์Œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ.

๋‘ ๊ฐœ ์ด์ƒ์˜ ์ž‘์—…์ด ์„œ๋กœ ์ƒ๋Œ€๋ฐฉ์˜ ์ž‘์—…์ด ๋๋‚˜๊ธฐ๋งŒ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์–ด ๊ฒฐ๊ณผ์ ์œผ๋กœ ์•„๋ฌด๊ฒƒ๋„ ์™„๋ฃŒ๋˜์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ๋ฅผ ๋งํ•จ.

๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ ์ƒํ™ฉ

๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ, ์‹œ์Šคํ…œ์ ์œผ๋กœ ํ•œ์ •๋œ ์ž์›์„ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค.

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

๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ ์กฐ๊ฑด

  • ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ์ผ์–ด๋‚˜๋ ค๋ฉด ๋‹ค์Œ์˜ ๋„ค ํ•„์š” ์กฐ๊ฑด์„ ์ถฉ์กฑ์‹œ์ผœ์•ผ ํ•œ๋‹ค.
    • ์ฆ‰, ์•„๋ž˜ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด ๊ต์ฐฉ ์ƒํƒœ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์•„๋ž˜ 4๊ฐ€์ง€ ์กฐ๊ฑด์€ ์„œ๋กœ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ธ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, 4.์ˆœํ™˜๋Œ€๊ธฐ๋Š” 2.์ ์œ ๋Œ€๊ธฐ์™€ 3.๋น„์„ ์  ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ์„ฑ๋ฆฝํ•˜๋Š” ์กฐ๊ฑด์ด๋‹ค.

1. ์ƒํ˜ธ ๋ฐฐ์ œ Mutual exclusion

ํ”„๋กœ์„ธ์Šค๋“ค์ด ํ•„์š”๋กœ ํ•˜๋Š” ์ž์›์— ๋Œ€ํ•ด ๋ฐฐํƒ€์ ์ธ ํ†ต์ œ๊ถŒ์„ ์š”๊ตฌํ•œ๋‹ค.

์ฆ‰, ์ž์›์„ ํ•œ ๋ฒˆ์— ํ•œ ํ”„๋กœ์„ธ์Šค๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ์ ์œ  ๋Œ€๊ธฐ Hold and Wait

ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋œ ์ž์›์„ ๊ฐ€์ง„ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.

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

3. ๋น„์„ ์  No Preemption

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

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

4. ์ˆœํ™˜ ๋Œ€๊ธฐ Circular Wait

๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์ˆœํ™˜์ ์œผ๋กœ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์š”๊ตฌํ•˜๋Š” ์ž์›์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ P1, P2, P3 ... Pn์—์„œ P1์€ P2๊ฐ€ ์ ์œ ํ•œ ์ž์›์„ ๋Œ€๊ธฐํ•˜๊ณ , P2๋Š” P3์ด ์ ์œ ํ•œ ์ž์›์„ ๋Œ€๊ธฐํ•˜๊ณ , ... Pn-1์€ Pn์ด ์ ์œ ํ•œ ์ž์›์„ ๋Œ€๊ธฐํ•˜๊ณ , Pn์€ P1์ด ์ ์œ ํ•œ ์ž์›์„ ์š”๊ตฌํ•ด์•ผ ํ•œ๋‹ค.

๋ฐ๋“œ๋ฝ ๊ด€๋ฆฌ

ํ˜„์žฌ ๋Œ€๋ถ€๋ถ„์˜ ์šด์˜ ์ฒด์ œ๋“ค์€ ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค.

๋Œ€์‹  ์ฃผ๋กœ ์œ„ 4๊ฐ€์ง€ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ง‰์Œ์œผ๋กœ์จ ๋ฐ๋“œ๋ฝ์„ ์˜ˆ๋ฐฉํ•œ๋‹ค.

๋ฐ๋“œ๋ฝ์˜ ์˜ˆ๋ฐฉ

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

๋ฐ๋“œ๋ฝ์˜ ํšŒํ”ผ

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

๋ฐ๋“œ๋ฝ์˜ ๋ฌด์‹œ

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

๋ฐ๋“œ๋ฝ์˜ ๋ฐœ๊ฒฌ

  • ๊ฐ์‹œ/๋ฐœ๊ฒฌ์„ ํ•˜๋Š” detection ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ์„ ์ฒดํฌํ•˜๋Š” ๋ฐฉ์‹.

  • ๋‹จ์  : ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค.

์ถœ์ฒ˜ : ์œ„ํ‚ค๋ฐฑ๊ณผ, [๋ธ”๋กœ๊ทธ](