Skip to content

Latest commit

ย 

History

History
63 lines (48 loc) ยท 3.54 KB

DeadLock.md

File metadata and controls

63 lines (48 loc) ยท 3.54 KB

๊ต์ฐฉ ์ƒํƒœ(Dead Lock)

๋‘ ์Šค๋ ˆ๋“œ๊ฐ€ ์„œ๋กœ ์ƒ๋Œ€๋ฐฉ์ด ์ฅ๊ณ  ์žˆ๋Š” ์ž๋ฌผ์‡ ๊ฐ€ ํ’€๋ฆฌ๊ธฐ๋งŒ์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ ์„œ๋กœ ๊ฐ€๋กœ๋ง‰๊ณ  ์žˆ๋Š” ์ƒํ™ฉ.


  • ๋‘๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ์„œ๋กœ ์ƒ๋Œ€๋ฐฉ์ด ํ•„์š”๋กœ ํ•˜๋Š” ์ž์›์— ๋Œ€ํ•œ ๋ฝ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ์— ๋ฐœ์ƒ
  • ๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ ํ•œ์ •๋œ ์ž์›์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ๊ฒฝ์Ÿํ•˜๋Š” ์ƒํ™ฉ(Race Condition)์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์š”์ฒญํ–ˆ์„ ๋•Œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋Œ€๊ธฐ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.
  • ๋Œ€๊ธฐ ์ƒํƒœ์—์„œ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์‹คํ–‰ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ์ผ์ปซ๋Š”๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค๋ฉด Process1๊ณผ Process2๊ฐ€ ๊ฐ๊ฐ Resource A, B๋ฅผ ์–ป์–ด์•ผ ํ•œ๋‹ค๋ฉด, P1์ด A๋ฅผ ์„ ์ ํ•˜๊ณ  P2๊ฐ€ B๋ฅผ ์„ ์ ํ•œ๋‹ค๋ฉด ๋‘ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฌดํ•œ์ • ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋œ๋‹ค.

  • ๋ณดํ†ต ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ํ•œ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ ์‹œํ‚ค๋Š”๊ฒƒ
  • ๊ฐ€์žฅ ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์€ ๋ฐ๋“œ๋ฝ์ด ์ผ์–ด๋‚  ์ƒํ™ฉ์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

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

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

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

์˜ˆ๋ฐฉ(Prevention)

: ๊ต์ฐฉ ์ƒํƒœ ๋ฐœ์ƒ ์กฐ๊ฑด์„ ์ œ๊ฑฐํ•ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•.

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

ํšŒํ”ผ(Avoidance)

: ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•.

  • ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜(Banker's Algorithm) : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์š”๊ตฌํ•  ๋•Œ ์‹œ์Šคํ…œ์€ ์ž์›์„ ํ• ๋‹นํ•œ ํ›„์—๋„ ์•ˆ์ • ์ƒํƒœ์ธ์ง€ ์‚ฌ์ „์— ๊ฒ€์‚ฌํ•œ๋‹ค. : ์•ˆ์ •์ƒํƒœ์— ์žˆ๋Š” ๊ฒฝ์šฐ ์ž์›์„ ํ• ๋‹นํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ž์›์„ ํ•ด์ง€ํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.

ํƒ์ง€(Detection)

: ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„๋ฅผ ํ†ตํ•ด ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ํƒ์ง€ํ•œ๋‹ค.

  • ์ž์› ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ํƒ์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

ํšŒ๋ณต(Recovery)

: ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ์ผ์œผํ‚จ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜๊ฑฐ๋‚˜, ํ• ๋‹น๋œ ์ž์›์„ ํ•ด์ œํ•ด ํšŒ๋ณตํ•˜๋Š” ๋ฐฉ๋ฒ•.

  • ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ
    • ๊ต์ฐฉ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ชจ๋‘ ์ค‘์ง€ํ•œ๋‹ค.
    • ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์ œ๊ฑฐ๋  ๋•Œ๊นŒ์ง€ ํ•œ ํ”„๋กœ์„ธ์Šค์”ฉ ์ค‘์ง€ํ•œ๋‹ค.
  • ์ž์› ์„ ์ 
    • ๊ต์ฐฉ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ž์›์„ ์„ ์ ํ•ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—์„ธ ํ• ๋‹นํ•ด ํ•ด๋‹น ํ”„๋กœ๋ ˆ์Šค๋ฅผ ์ผ์‹œ ์ •์ง€ ์‹œํ‚จ๋‹ค.
    • ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค, ์ˆ˜ํ–‰๋œ ํšŸ์ˆ˜๊ฐ€ ์ ์€ ํ”„๋กœ์„ธ์Šค ๋“ฑ์„ ์œ„์ฃผ๋กœ ํ”„๋กœ์„ธ์Šค ์ž์›์„ ์„ ์ ํ•œ๋‹ค.