Skip to content

Latest commit

ย 

History

History
300 lines (203 loc) ยท 13.1 KB

File metadata and controls

300 lines (203 loc) ยท 13.1 KB

๐Ÿ”’ Deadlock

๐Ÿ“š Table of Content

1.Deadlock

Resource

Resource-Allocation Graph

Deadlock ์˜ˆ์‹œ

2.Deadlock ๋ฐœ์ƒ ์กฐ๊ฑด

3.Deadlock ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

Deadlock Prevention

Deadlock Avoidance

Resource Alloc Algorithm, Banker's Algorithm

Deadlock Detection and Recovery

Deadlock Ignorance




๐Ÿ”’ 1. Deadlock

โ‡’ ์ผ๋ จ์˜ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์„œ๋กœ๊ฐ€ ๊ฐ€์ง„ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ block๋œ ์ƒํƒœ, ๊ต์ฐฉ์ƒํƒœ

Resource

  • ํ•˜๋“œ์›จ์–ด, ์†Œํ”„ํŠธ์›จ์–ด ๋“ฑ์„ ํฌํ•จํ•˜๋Š” ๊ฐœ๋…
    • IO device, CPU cycle, memory space, semaphore
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์‚ฌ์šฉํ•˜๋Š” ์ ˆ์ฐจ(์ผ๋ จ์˜ ๊ณผ์ •)
    • request -> allocate -> use -> release

Resource Allocation Graph

์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„๋Š” ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์œ ํ–ฅ ๊ทธ๋ž˜ํ”„

G = (V, E)
V : ์ •์ (vertex์˜ ์ง‘ํ•ฉ)
1. ํ”„๋กœ์„ธ์Šค ์ง‘ํ•ฉ P = {P1, P2, ..., Pn}
2. ์ž์› ํ˜•ํƒœ ์ง‘ํ•ฉ R = {R1, R2, ..., Rn}

E : ๊ฐ„์„ (edge)์˜ ์ง‘ํ•ฉ, Pi -> P, Rj -> R

์š”์ฒญ ์—์ง€ : Pi -> Rj
ํ• ๋‹น ์—์ง€ : Rj -> Pi

1. ์š”์ฒญ :์š”์ฒญ ์—์ง€๋ฅผ ์ƒ์„ฑ
2. ์‚ฌ์šฉ :์š”์ฒญ ์—์ง€๋ฅผ ํ• ๋‹น ์—์ง€๋กœ ๋ณ€ํ™˜
3. ํ•ด์ œ :ํ• ๋‹น ์—์ง€๋ฅผ ์‚ญ์ œ

resource

์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„๋ฅผ ํ†ตํ•œ ๊ต์ฐฉ ์ƒํƒœ ํŒ๋ณ„

  • ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„๊ฐ€ ์‚ฌ์ดํด์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฉด, ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์•„๋‹˜
  • ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„๊ฐ€ ์‚ฌ์ดํด์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด, ๊ต์ฐฉ ์ƒํƒœ์ผ ์ˆ˜๋„ ์•„๋‹ ์ˆ˜๋„ ์žˆ์Œ
  1. ๊ฐ ์ž์› ์œ ํ˜•์˜ ์ˆ˜๊ฐ€ ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ :ํ•„์š” ์ถฉ๋ถ„ ์กฐ๊ฑด (deadlock)
  2. ๊ฐ ์ž์› ์œ ํ˜•์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ :ํ•„์š” ์กฐ๊ฑดo, ์ถฉ๋ถ„ ์กฐ๊ฑดx (deadlock O, deadlock X)

์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„๋ฅผ ํ†ตํ•œ ๊ต์ฐฉ์ƒํƒœ ํŒ๋ณ„ ์˜ˆ์ œ

  1. ๊ต์ฐฉ ์ƒํƒœ์˜ ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„

dra

์‚ฌ์ดํด 2๊ฐœ ์กด์žฌ, ๊ต์ฐฉ ์ƒํƒœ์ž„
1. P1 -> R1 -> P2 -> R3 -> P3 -> R2 -> P1
2. P2 -> R3 -> P3 -> R2 -> P2
  1. ์‚ฌ์ดํด์ด ์žˆ์œผ๋‚˜ ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์•„๋‹Œ ์ž์›ํ• ๋‹น ๊ทธ๋ž˜ํ”„

ndra

์‚ฌ์ดํด 1๊ฐœ ์กด์žฌ, ๊ต์ฐฉ ์ƒํƒœ ์•„๋‹˜
- P4์— ํ• ๋‹น๋œ R2๊ฐ€ ํ•ด์ œ๋˜์–ด P2์— ํ• ๋‹น๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ
- P2, P4๊ฐ€ ์ž์›๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— deadlock ์•„๋‹˜

Deadlock ์˜ˆ์‹œ

์ž์›์„ ๋™์‹œ ์ถฉ์กฑํ•  ์ˆ˜ ์—†์„ ๋•Œ ๋ฒŒ์–ด์ง

  • deadlock first case
    • ์‹œ์Šคํ…œ์— 2๊ฐœ์˜ tape drive๊ฐ€ ์žˆ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค p1๊ณผ p2 ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ๋‹ค๋ฅธ tape drive๋ฅผ ๋ณด์œ ํ•œ ์ฑ„ ๋‹ค๋ฅธ ํ•˜๋‚˜๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค.
  • deadlock second case
    • ์ด์ง„ ์„ธ๋งˆํฌ์–ด A์™€ B๊ฐ€ ์žˆ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค P1์ด ์ž์›์„ ์–ป์€ ์ƒํƒœ์—์„œ context switch๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค P2์—๊ฒŒ cpu ์ œ์–ด๊ถŒ์ด ๋„˜์–ด๊ฐ”๊ณ , ํ”„๋กœ์„ธ์Šค p2๊ฐ€ B ์ž์›์„ ์–ป์—ˆ๋‹ค.
    • ๋‹ค์‹œ context switch๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค p1์—๊ฒŒ cpu ์ œ์–ด๊ถŒ์ด ๋„˜์–ด๊ฐ”๊ณ , ํ”„๋กœ์„ธ์Šค p1์ด b ์ž์›์„ ์–ป๊ณ  ์‹ถ์–ดํ•˜์ง€๋งŒ ์ด๋ฏธ ํ”„๋กœ์„ธ์Šค p2๊ฐ€ B์ž์›์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
    • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ”„๋กœ์„ธ์Šค P2๊ฐ€ A์ž์›์„ ์–ป๊ณ  ์‹ถ์–ดํ•˜์ง€๋งŒ ์ด๋ฏธ ํ”„๋กœ์„ธ์Šค P1์ด A์ž์›์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
    • ๋ฌดํ•œํžˆ ์„œ๋กœ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.




๐Ÿ”’ 2. Deadlock ๋ฐœ์ƒ์˜ 4๊ฐ€์ง€ ์กฐ๊ฑด

  • ์ƒํ˜ธ ๋ฐฐ์ œ, Mutual exclusion
    • ๋™์‹œ์— ๋‘ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋น„์„ ์ , No preemption
    • ํ”„๋กœ์„ธ์Šค๋Š” ์ž์›์„ ๋‚ด๋†“์„ ๋ฟ ๊ฐ•์ œ๋กœ ๋นผ์•—๊ธฐ์ง€ ์•Š์Œ
  • ์ ์œ  ๋Œ€๊ธฐ, Hold and wait
    • ์ž์›์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ์ž์›์„ ๊ธฐ๋‹ค๋ฆด ๋•Œ ๋ณด์œ  ์ž์›์„ ๋†“์ง€ ์•Š๊ณ  ๊ณ„์† ๊ฐ€์ง€๊ณ  ์žˆ์Œ
  • ์ˆœํ™˜ ๋Œ€๊ธฐ, Circular wait
    • ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ์‚ฌ์ดํด์ด ํ˜•์„ฑ๋˜์–ด์•ผ ํ•จ.
    • ํ”„๋กœ์„ธ์Šค {P0, P1, ... Pn}๊ฐ€ ์žˆ๋‹ค๋ฉด P0 โ†’ P1 โ†’ P2 โ†’ ..Pn โ†’ P0

์œ„ 4๊ฐ€์ง€ ์กฐ๊ฑด์ด ๋™์‹œ์— ์„ฑ๋ฆฝํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.



๐Ÿ”’ 3. ๊ต์ฐฉ ์ƒํƒœ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

  • Deadlock Prevention, ๊ต์ฐฉ ์ƒํƒœ ์˜ˆ๋ฐฉ
    • ์ž์› ํ• ๋‹น ์‹œ ๋ฐ๋“œ๋ฝ์˜ 4๊ฐ€์ง€ ํ•„์š” ์กฐ๊ฑด ์ค‘ ์–ด๋А ํ•˜๋‚˜๊ฐ€ ๋งŒ์กฑ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ
  • Deadlock Avoidance, ๊ต์ฐฉ ์ƒํƒœ ํšŒํ”ผ
    • ์ž์› ์š”์ฒญ์— ๋Œ€ํ•œ ๋ถ€๊ฐ€์ •์ธ ์ •๋ณด๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐ๋“œ๋ฝ์˜ ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ž์›์„ ํ• ๋‹น
    • ์‹œ์Šคํ…œ ์ƒํƒœ๊ฐ€ ์›๋ž˜ ์ƒํƒœ๋กœ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ž์› ํ• ๋‹น
  • Deadlock Detection and recovery, ๊ต์ฐฉ ์ƒํƒœ ํƒ์ง€
    • ๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ์€ ํ—ˆ์šฉํ•˜๋˜ ๊ทธ์— ๋Œ€ํ•œ ํƒ์ง€ ๋ฃจํ‹ด์„ ๋‘์–ด ๋ฐ๋“œ๋ฝ ๋ฐœ๊ฒฌ์‹œ ํšŒ๋ณต
  • Deadlock Ignorance, ๊ต์ฐฉ ์ƒํƒœ ๋ฌด์‹œ
    • ๋ฐ๋“œ๋ฝ์„ ์‹œ์Šคํ…œ์ด ์ฑ…์ž„์ง€์ง€ ์•Š์Œ
    • unix๋ฅผ ํฌํ•จํ•œ ๋Œ€๋ถ€๋ถ„์˜ os๊ฐ€ ์ฑ„ํƒ

โ‡’ ์˜ˆํšŒํƒํšŒ


3-1. Deadlock Prevention, ๊ต์ฐฉ ์ƒํƒœ ์˜ˆ๋ฐฉ

๊ต์ฐฉ ์ƒํƒœ ๋ฐœ์ƒ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ฅผ ์ œ๊ฑฐํ•จ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•. ์ž์›์˜ ๋‚ญ๋น„๊ฐ€ ์‹ฌํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.

  1. Mutual exclusion, ์ƒํ˜ธ ๋ฐฐ์ œ ๋ถ€์ • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•œ๋‹ค.
    • ๊ณต์œ ํ•ด์„œ๋Š” ์•ˆ๋˜๋Š” ์ž์›์˜ ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ ์„ฑ๋ฆฝํ•ด์•ผ ํ•จ.
  2. Hold and wait, ์ ์œ  ๋Œ€๊ธฐ ๋ถ€์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „ ํ•„์š”ํ•œ ๋ชจ๋“  ์ž์›์„ ํ• ๋‹นํ•œ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์š”์ฒญํ•  ๋•Œ ๋‹ค๋ฅธ ์–ด๋–ค ์ž์›๋„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์•„์•ผ ํ•จ.
      1. ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘ ์‹œ ๋ชจ๋“  ํ•„์š”ํ•œ ์ž์›์„ ํ• ๋‹น ๋ฐ›๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•
      2. ์ž์›์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ ๋ณด์œ  ์ž์›์„ ๋ชจ๋‘ ๋†“๊ณ  ๋‹ค์‹œ ์š”์ฒญ
  3. No preemption, ๋น„์„ ์  ๋ถ€์ • ์ž์› ์ ์œ  ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ์ž์›์„ ์š”๊ตฌํ•  ๋•Œ ์ ์œ  ์ค‘์ธ ์ž์›์„ ๋ฐ˜๋‚ฉํ•˜๊ณ  ์š”๊ตฌํ•œ ์ž์›์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•œ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ค ์ž์›์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฏธ ๋ณด์œ ํ•œ ์ž์›์ด ์„ ์ ๋จ
    • ๋ชจ๋“  ํ•„์š”ํ•œ ์ž์›์„ ์–ป์„ ์ˆ˜ ์žˆ์„ ๋•Œ ๊ทธ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์‹œ ์‹œ์ž‘๋จ
    • ์ƒํƒœ๋ฅผ ์‰ฝ๊ฒŒ ์ €์žฅํ•˜๊ณ  ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž์›์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ(CPU(context๋ฅผ ์ €์žฅํ•ด๋†“๊ธฐ ๋•Œ๋ฌธ์— ๋บ๊ธฐ ๊ฐ€๋Šฅ), memory๋Š” ๋นผ์•—์„ ์ˆ˜ ์žˆ์Œ)
  4. Circular wait, ์ˆœํ™˜ ๋Œ€๊ธฐ ๋ถ€์ • ์ž์›์— ๊ณ ์œ ํ•œ ๋ฒˆํ˜ธ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ์ž์›์„ ์š”๊ตฌํ•˜๋„๋ก ํ•œ๋‹ค.
    • ๋ชจ๋“  ์ž์› ์œ ํ˜•์— ํ• ๋‹น ์ˆœ์„œ๋ฅผ ์ •ํ•˜์—ฌ ์ •ํ•ด์ง„ ์ˆœ์„œ๋Œ€๋กœ๋งŒ ์ž์›์„ ํ• ๋‹น
      • ex) ์ˆœ์„œ๊ฐ€ 3์ธ ์ž์› Ri๋ฅผ ๋ณด์œ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆœ์„œ๊ฐ€ 1์ธ ์ž์› Rj๋ฅผ ํ• ๋‹น ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  Ri๋ฅผ ๋ฐ˜๋‚ฉํ•ด์•ผ ํ•จ

์˜ˆ๋ฐฉ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์  โ‡’ utilization ์ €ํ•˜(system ์ž…์žฅ), throughput ๊ฐ์†Œ(system ์ž…์žฅ), starvation ๋ฌธ์ œ(process ์ž…์žฅ)


3-2. Deadlock Avoidance, ๊ต์ฐฉ ์ƒํƒœ ํšŒํ”ผ

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

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

์ž์› ์œ ํ˜• 1๊ฐฑ ๋‹น 2๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค ์กด์žฌ โ†’ ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜, bankerโ€™s algorithm

๊ต์ฐฉ ์ƒํƒœ ํšŒํ”ผ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์•Œ์•„์•ผํ•˜๋Š” ์ถ”๊ฐ€์ ์ธ ์ •๋ณด

  • safe state, ์•ˆ์ „ ์ƒํƒœ
    • ์‹œ์Šคํ…œ ๋‚ด์˜ ํ”„๋กœ์„ธ์Šค๋“ค์— ๋Œ€ํ•œ safe sequence๊ฐ€ ์กด์žฌํ•˜๋Š” ์ƒํƒœ
  • safe sequence, ์•ˆ์ „ ์ˆœ์„œ์—ด
    • ํ”„๋กœ์„ธ์Šค sequence <P1, P2, P3, ..., Pn>์ด safe ํ•˜๋ ค๋ฉด Pi์˜ ์ž์› ์š”์ฒญ์ด ๊ฐ€์šฉ ์ž์› + ๋ชจ๋“  Pj(j < i)์˜ ๋ณด์œ  ์ž์› ์— ์˜ํ•ด ์ถฉ์กฑ๋˜์–ด์•ผ ํ•จ
    • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด ๋‹ค์Œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜ํ–‰ ๋ณด์žฅ
      • Pi์˜ ์ž์› ์š”์ฒญ์ด ์ฆ‰์‹ ์ถฉ์กฑ๋  ์ˆ˜ ์—†์œผ๋ฉด ๋ชจ๋“  Pj๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
      • Pi-1์ด ์ข…๋ฃŒ๋˜๋ฉด Pi์˜ ์ž์› ์š”์ฒญ์„ ๋งŒ์กฑ์‹œ์ผœ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๊ต์ฐฉ ์ƒํƒœ ํšŒํ”ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜

3-2-1. Resource Allocation Graph algorithm (single instance per resource types)

  • Claim edge Pi -> Rj
    • ํ”„๋กœ์„ธ์Šค Pi๊ฐ€ ์ž์› Rj๋ฅผ ๋ฏธ๋ž˜์— ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Œ์„ ๋œปํ•จ(์ ์„ )
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•ด๋‹น ์ž์› ์š”์ฒญ์‹œ request edge๋กœ ๋ฐ”๋€œ(์‹ค์„ )
    • Rj๊ฐ€ release๋˜๋ฉด assignment edge๋Š” ๋‹ค์‹œ claim edge๋กœ ๋ฐ”๋€๋‹ค.
  • request edge์˜ assignment edge ๋ณ€๊ฒฝ ์‹œ (์ ์„ ์„ ํฌํ•จํ•˜์—ฌ) cycle์ด ์ƒ๊ธฐ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋งŒ ์š”์ฒญ ์ž์›์„ ํ• ๋‹นํ•œ๋‹ค.
  • cycle ์ƒ์„ฑ ์—ฌ๋ถ€ ์กฐ์‚ฌ์‹œ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๊ฐ€ n์ผ ๋•Œ O(n^2) ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.

RAG

3-2-2. Banker's algorithm (multiple instance per resource types)

  • 5๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค, processes => P0, P1, P2, P3, P4
  • 3๊ฐœ์˜ ์ž์› ํ˜•ํƒœ, resource types => A(10), B(5), C(7) / 10 5 7

bankers

  • safety algorithm์— ์˜ํ•ด์„œ sequence <P1, P3, P4, P2, P0>๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ ์‹œ์Šคํ…œ์€ safe state
  • banker's๋„ ์ž์›์„ ์ค„ ์ˆ˜ ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ถˆ์•ˆ์ •์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ž์›์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค. ์ •๋ฆฌํ•˜๋ฉด ์ž์›์„ ์ตœ๋Œ€๋กœ ์š”์ฒญํ–ˆ์„ ๋•Œ ๊ทธ๊ฒƒ์„ ๊ฐ€์šฉ์ž์›์œผ๋กœ ์ถฉ์กฑํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ์•„์˜ˆ ์ž์›์„ ๋‚ด๋†“์ง€ ์•Š์Œ.
  • Need <= Available์ด๋ผ๋ฉด ์ž์›์„ ๋‚ด์คŒ

3-3. Deadlock detection and recovery, ๊ต์ฐฉ ์ƒํƒœ ํƒ์ง€ ๋ฐ ํšŒ๋ณต

๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ์€ ํ—ˆ์šฉํ•˜๋˜ ๊ทธ์— ๋Œ€ํ•œ ํƒ์ง€ ๋ฃจํ‹ด์„ ๋‘์–ด ๋ฐ๋“œ๋ฝ ๋ฐœ๊ฒฌ์‹œ ํšŒ๋ณต

ํƒ์ง€๋Š” ์œ„๋ฐฉ์‹๊ณผ ๋˜‘๊ฐ™์ด ํ•จ

3-3-1. Deadlock Detection

  • Resource type ๋‹น single instance์ธ ๊ฒฝ์šฐ
    • ์ž์›ํ• ๋‹น ๊ทธ๋ž˜ํ”„์—์„œ์˜ cycle์ด ๊ณง deadlock์„ ์˜๋ฏธ
  • Resource type ๋‹น multiple instance์ธ ๊ฒฝ์šฐ
    • banker's algorithm๊ณผ ์œ ์‚ฌํ•œ ๋ฐฉ๋ฒ• ํ™œ์šฉ

Wait-for graph Algorithm(Resource type ๋‹น single instance์ธ ๊ฒฝ์šฐ)

wait

  • Resource type ๋‹น single instance์ธ ๊ฒฝ์šฐ
  • Wait-for graph
    • ์ž์›ํ• ๋‹น ๊ทธ๋ž˜ํ”„์˜ ๋ณ€ํ˜• (์ž์›์„ ๋นผ๊ณ  ๊ทธ๋ฆฌ๋ฉด ๋จ!)
    • ํ”„๋กœ์„ธ์Šค๋งŒ์œผ๋กœ node ๊ตฌ์„ฑ
    • PJ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ž์›์„ Pk๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒฝ์šฐ Pk -> Pj
  • Algorithm
    • Wait for graph์— ์‚ฌ์ดํด์ด ์กด์žฌํ•˜๋Š”์ง€๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์กฐ์‚ฌ
    • O(n^2)

Banker's Algorithm(Resource type ๋‹น multiple instance์ธ ๊ฒฝ์šฐ)

  • 5 processes :P0, P1, P2, P3, P4
  • 3 resource types : A(7), B(2), C(6)

bd

  • No deadlock sequence <P0, P2, P3, P1, P4> ๋กœ ๋™์ž‘ ๊ฐ€๋Šฅ
  • request๋Š” ์ถ”๊ฐ€ ์š”์ฒญ๊ฐ€๋Šฅ๋Ÿ‰์ด ์•„๋‹ˆ๋ผ ํ˜„์žฌ ์‹ค์ œ๋กœ ์š”์ฒญํ•œ ์ž์›๋Ÿ‰์„ ๋‚˜ํƒ€๋ƒ„
  • bankers๋Š” ํ•ญ์ƒ ์ตœ๋Œ€ ์ž์› ์š”์ฒญ์„ ๋งŒ์กฑ์‹œํ‚ค๋Š” ๊ฒƒ์„ ์šฐ์„  ํ• ๋‹น์„ ํ•˜๊ณ  ๊ทธ๋…€์„์ด ์ข…๋ฃŒํ•˜๋ฉด ๊ฐ€์šฉ์ž์›์ด ์ฆ๊ฐ€ํ•˜๊ณ  ๋˜ ์ตœ๋Œ€ ์ž์› ์š”์ฒญ์„ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ๋Š” ์ˆœ์„œ๋ฅผ ์ฐพ์•„์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹, safeํ•˜๋Š” ๊ฒƒ์„ ๋ณด์žฅ! => deadlock ๋ฐœ์ƒ x

3-3-2. Deadlock recovery

  • Process termination
    • ๋ชจ๋“  ๊ต์ฐฉ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์„œ๋ฅผ ์ค‘๋‹จํ•œ๋‹ค.
    • ๋ฐ๋“œ๋ฝ ์‚ฌ์ดํด์ด ์—†์–ด์งˆ ๋•Œ๊นŒ์ง€ ํ•˜๋‚˜์”ฉ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จ
  • Resource Preemption
    • ๋น„์šฉ์„ ์ตœ์†Œํ™œํ•  victim ์„ ์ •
    • safe state๋กœ rollbackํ•˜์—ฌ process restart
    • Starvation ๋ฌธ์ œ
      • ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณ„์†ํ•ด์„œ victim์œผ๋กœ ์„ ์ •๋˜๋Š” ๊ฒฝ์šฐ
      • cost factor์— rollback ํšŸ์ˆ˜๋„ ๊ฐ™์ด ๊ณ ๋ ค, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋„ ๊ณ ๋ คํ•ด๋ณด์ž.

3-4. Deadlock Ignorance, ๊ต์ฐฉ ์ƒํƒœ ๋ฌด์‹œ

๋ฐ๋“œ๋ฝ์„ ์‹œ์Šคํ…œ์ด ์ฑ…์ž„์ง€์ง€ ์•Š์Œ

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




๐Ÿ“š ์ฐธ๊ณ 

deadlock

deadlock ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

R-Allocation Graph

๋ฐ˜๊ต์ˆ˜๋‹˜ ์šด์ฒด๊ฐ•์˜



โ‰๏ธ ๋ฉด์ ‘ ์˜ˆ์ƒ ์งˆ๋ฌธ

  1. Deadlock์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?
  1. deadlock ๋ฐœ์ƒ ์กฐ๊ฑด์ด ์žˆ๋‚˜์š”? ์žˆ๋‹ค๋ฉด ์กฐ๊ฑด์„ ๋งํ•ด์ฃผ์„ธ์š”
  1. deadlock ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์—๋Š” ๋ฌด์—‡์ด ์žˆ๋‚˜์š”?

3-1. deadlock prevention์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

3-2. deadlock avoidance๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

3-3. deadlock detection and recovery๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?