Skip to content

Latest commit

Β 

History

History
178 lines (137 loc) Β· 10.6 KB

Deadlock.md

File metadata and controls

178 lines (137 loc) Β· 10.6 KB

DeadLock(λ°λ“œλ½)

일련의 ν”„λ‘œμ„ΈμŠ€λ“€μ΄ μ„œλ‘œκ°€ 가진 μžμ›μ„ 기닀리며 block 된 μƒνƒœ

μ •μ˜

  • ν˜„μž¬ μ„œλ‘œ μ›ν•˜λŠ” μžμ›μ΄ μƒλŒ€λ°©μ—κ²Œ ν• λ‹Ήλ˜μ–΄ μžˆμ–΄μ„œ, ν”„λ‘œμ„ΈμŠ€κ°€ λ¬΄ν•œμ • wait μƒνƒœμ— λΉ μ ΈμžˆλŠ” 것.
  • 주둜 multi-programming ν™˜κ²½μ—μ„œ ν•œμ •λœ μžμ›μ„ μ‚¬μš©ν•˜λ €κ³  μ„œλ‘œ κ²½μŸν•˜λŠ” μƒν™©μ—μ„œ λ°œμƒν•œλ‹€.
  • Deadlock == 'ꡐ착 μƒνƒœ'

cf. multi-programming

  • μ»΄ν“¨ν„°μ—μ„œ μ—¬λŸ¬ μž‘μ—…μ„ λ™μ‹œμ— μˆ˜ν–‰ν•˜λŠ” 것을 λœ»ν•œλ‹€.
  • Multiprogramming은 μ—¬λŸ¬ ν”„λ‘œκ·Έλž¨μ΄ λ©”λͺ¨λ¦¬μ— μ˜¬λΌκ°€ μžˆμŒμ„ κ°•μ‘°

Deadlock λ°œμƒμ˜ 4가지 쑰건

βœ… λ°λ“œλ½ λ°œμƒμ˜ ν•„μš”μ‘°κ±΄

  • μ•„λž˜ 4가지 쑰건이 λͺ¨λ‘ λ§Œμ‘±λ˜λŠ” 경우 λ°λ“œλ½μ΄ λ°œμƒν•  κ°€λŠ₯성이 μžˆλ‹€.
  • ν•˜λ‚˜λΌλ„ λ§Œμ‘±ν•˜μ§€ μ•ŠμœΌλ©΄ μ ˆλŒ€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.
  1. Mutual exclusion(μƒν˜Έ 배제)
    • 맀 μˆœκ°„ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λ§Œμ΄ μžμ›μ„ μ‚¬μš©ν•  수 μžˆλ‹€.
    • ν•˜λ‚˜μ˜ process만이 κ³΅μœ μžμ›(shared resource)에 μ ‘κ·Όν•  수 μžˆλ‹€.
  2. No preemption (비선점)
    • ν”„λ‘œμ„ΈμŠ€λŠ” μžμ›μ„ 슀슀둜 λ‚΄λ†“λŠ” 것이지 κ°•μ œλ‘œ λΉΌμ•—κΈ°λŠ” 것이 μ•„λ‹ˆλ‹€.
    • ν”„λ‘œμ„ΈμŠ€κ°€ taskλ₯Ό 마친 ν›„ λ¦¬μ†ŒμŠ€λ₯Ό 자발적으둜 λ°˜ν™˜ν•  λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦°λ‹€. (κ°•μ œλ‘œ 빼앗지 μ•ŠλŠ”λ‹€)
  3. Hold and wait (λ³΄μœ λŒ€κΈ°)
  • μžμ›μ„ 가진 ν”„λ‘œμ„ΈμŠ€κ°€ λ‹€λ₯Έ μžμ›μ„ 기닀릴 λ•Œ 보유 μžμ›μ„ 놓지 μ•Šκ³  계속 가지고 μžˆλ‹€.
  1. Circular wait (μˆœν™˜λŒ€κΈ°)
  • Hold and wait κ΄€κ³„μ˜ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ μ„œλ‘œλ₯Ό κΈ°λ‹€λ¦¬λŠ” μƒνƒœ
  • μžμ›μ„ κΈ°λ‹€λ¦¬λŠ” ν”„λ‘œμ„ΈμŠ€ 간에 사이클이 ν˜•μ„±λ˜μ–΄ μžˆλ‹€.
  • ν”„λ‘œμ„ΈμŠ€ p0, p1, p2, ... , pn 이 μžˆμ„ λ•Œ,
    p0은 p1이 가진 μžμ›μ„ 기닀리고,
    p1은 p2κ°€ 가진 μžμ›μ„ 기닀리고,
    Pn-1은 Pn이 가진 μžμ›μ„ 기닀리고,
    Pn은 P0이 가진 μžμ›μ„ κΈ°λ‹€λ¦°λ‹€.

Deadlock 처리 방법

  • 사전에 κ΅μ°©μƒνƒœκ°€ λ°œμƒν•˜μ§€ μ•Šλ„λ‘ μ‘°μΉ˜ν•˜κ±°λ‚˜, λ°œμƒν•œ 뒀에 κ³ μΉ˜λŠ” 방법이 μžˆλ‹€. λŒ€ν‘œμ μœΌλ‘œ μ•„λž˜ μ„Έκ°€μ§€λ‘œ λ‚˜λˆˆλ‹€.
  • 1.prevention, 방지
    • 사전에 κ΅μ°©μƒνƒœκ°€ λ°œμƒν•˜μ§€ μ•Šλ„λ‘ 쑰치
  • 2.avoidence, νšŒν”Ό
    • λ¦¬μ†ŒμŠ€ ν• λ‹Ήμ˜ μΈ‘λ©΄μ—μ„œ, κ΅μ°©μƒνƒœκ°€ λ°œμƒν•  κ°€λŠ₯성이 μžˆλŠ” μžμ› ν• λ‹Ή(unsafe allocation)을 ν•˜μ§€ μ•ŠλŠ”λ‹€.
      • λŒ€ν‘œμ μœΌλ‘œ 은행원 μ•Œκ³ λ¦¬μ¦˜, μžμ› ν• λ‹Ή κ·Έλž˜ν”„κ°€ μžˆλ‹€.
  • 3.Detection and Recovery, 탐지 및 회볡
    • κ΅μ°©μƒνƒœκ°€ λ°œμƒν•˜λ“  말든 냅두고 κ΅μ°©μƒνƒœκ°€ λ°œμƒ ν•  경우 μ°Ύμ•„λ‚΄μ–΄ κ³ μΉœλ‹€.

1. Deadlock Prevention (κ΅μ°©μƒνƒœ 예방)

  • μžμ› ν• λ‹Ή μ‹œ Deadlock의 4가지 ν•„μš” 쑰건 쀑에 μ–΄λŠ ν•˜λ‚˜κ°€ λ§Œμ‘±λ˜μ§€ μ•Šλ„λ‘ ν•˜λŠ” 것,
  • μ• μ΄ˆλΆ€ν„° Deadlock이 λ°œμƒν•˜μ§€ μ•Šλ„λ‘.

2. Deadlock Avoidance (κ΅μ°©μƒνƒœ νšŒν”Ό)

  • μžμ› μš”μ²­μ— λŒ€ν•œ 뢀가적인 정보(eg.μ΅œλŒ€ν•œ μ‚¬μš©ν•  MAX μžμ›)λ₯Ό μ΄μš©ν•΄μ„œ deadlock의 κ°€λŠ₯성이 μ—†λŠ” κ²½μš°μ—λ§Œ μžμ›μ„ ν• λ‹Ή

  • μ‹œμŠ€ν…œ state κ°€ μ›λž˜ state 둜 λŒμ•„ 올 수 μžˆλŠ” κ²½μš°μ—λ§Œ μžμ› ν• λ‹Ή (eg. cpu, memory)

  • μžμ› λ‹Ή μΈμŠ€ν„΄μŠ€κ°€ ν•˜λ‚˜μΌ λ•Œ -> Resource Allocation Graph algorithm

  • μžμ› λ‹Ή μ—¬λŸ¬ 개의 μΈμŠ€ν„΄μŠ€μΌ λ•Œ -> Banker's Algorithm

-> μœ„μ˜ 두 가지 prevention => Utilization μ €ν•˜, throughput κ°μ†Œ, starvation 문제
-> λ°λ“œλ½μ˜ λ°œμƒμ„ μ›μ²œμ μœΌλ‘œ 막을 순 μžˆμ§€λ§Œ, 자주 생기지도 μ•Šμ„ λ°λ“œλ½μ„ μƒκ°ν•΄μ„œ μ΄λ ‡κ²Œ μ œμ•½μ‘°κ±΄μ„ 많이 λ‹¬μ•„λ†“μœΌλ©΄ μƒλ‹Ήνžˆ λΉ„νš¨μœ¨μ .

3. Deadlock Detection and recovery (κ΅μ°©μƒνƒœ 탐지와 회볡)

  • Deadlock λ°œμƒμ€ ν—ˆμš©ν•˜λ˜ 그에 λŒ€ν•œ detection 루틴을 두어 deadlock 발견 μ‹œ recover
  • 빈번히 λ°œμƒν•˜λŠ” μ΄λ²€νŠΈκ°€ μ•„λ‹Œ λ°λ“œλ½μ„ 미연에 λ°©μ§€ν•˜κΈ° μœ„ν•΄μ„œ λΉ„νš¨μœ¨μ μΈ 방법을 μ“Έ λ°”μ—”,
    냅두닀가 κ°‘μžκΈ° μ‹œμŠ€ν…œμ΄ λŠλ €μ§€κ±°λ‚˜ 상황이 μ΄μƒν•˜λ‹€μ‹ΆμœΌλ©΄, κ·Έ λ•Œ Deadlock detection을 ν•˜κ³  recovery ν•˜λŠ” 방법

4. Deadlock Ignorance

  • Deadlock을 μ‹œμŠ€ν…œμ΄ μ±…μž„μ§€μ§€ μ•ŠμŒ
  • UNIXλ₯Ό ν¬ν•¨ν•œ λŒ€λΆ€λΆ„μ˜ OSκ°€ 채택

Deadlock Avoidance

ꡐ착 μƒνƒœ νšŒν”Ό

μžμ› μš”μ²­μ— λŒ€ν•œ 뢀가적인 정보λ₯Ό μ΄μš©ν•΄μ„œ μ–Έμ œλ‚˜ safe stateλ₯Ό μœ μ§€ν•˜λŠ” 것

safe state

μ‹œμŠ€ν…œ λ‚΄μ˜ ν”„λ‘œμ„ΈμŠ€λ“€μ— λŒ€ν•œ safe sequenceκ°€ μ‘΄μž¬ν•΄μ„œ, λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€κ°€ λκΉŒμ§€ μˆ˜ν–‰λ  수 μžˆλŠ” μƒνƒœ.

cf. unsafe state라고 ν•΄μ„œ deadlock은 μ•„λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ unsafe sateλ₯Ό λ§Œλ“€μ§€ μ•Šκ³  μ–Έμ œλ‚˜ safe stateλ₯Ό μœ μ§€ν•΄μ„œ λ°λ“œλ½μ„ λ§Œλ“€μ§€ μ•Šκ²Œ μ•ˆμ „ν•˜κ²Œ κ°€μžλŠ” 것이 Deadlock Avoidance이닀. (-> 미연에 λ°©μ§€ν•˜λŠ” 것)

  • μ‹œμŠ€ν…œμ΄ safe state에 있으면 => no deadlock
  • μ‹œμŠ€ν…œμ΄ unsafe state에 있으면 => possibility of deadlock
  • Deadlock Avoidance => μ‹œμŠ€ν…œμ΄ unsafe state에 듀어가지 μ•ŠλŠ” 것을 보μž₯

2가지 경우의 Avoidance μ•Œκ³ λ¦¬μ¦˜

  • Single instance per resource types
    • Resource Allocation Graph algorithm μ‚¬μš©
  • Multiple instance per resource types
    • Banker's algorithm μ‚¬μš©

Resource Allocation Graph algorithm

  • μžμ› per μΈμŠ€ν„΄μŠ€ ν•œ 개.
  • 점선은 μ§€κΈˆ μš”μ²­μ„ ν•œ κ²½μš°λŠ” μ•„λ‹ˆμ§€λ§Œ, 이 ν”„λ‘œμ„ΈμŠ€κ°€ 평생에 적어도 ν•œ λ²ˆμ€ μš”μ²­ν•  수 μžˆλ‹€λŠ” 의미
  • 3번째 그림은 λ°λ“œλ½μ΄ μ•„λ‹ˆλ‹€. 1번 ν”„λ‘œμ„ΈμŠ€κ°€ μš”μ²­ν•  μˆ˜λŠ” μžˆμ§€λ§Œ 이 μ‹œμ μ— μš”μ²­μ„ ν•œ 것은 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— μ‹€μ„ μœΌλ‘œ 그렀지면 λ°λ“œλ½μ΄ λ°œμƒν•œ κ²½μš°μ΄λ‹€. μ–Έμ  κ°€ 1번 ν”„λ‘œμ„ΈμŠ€κ°€ 2번 λ¦¬μ†ŒμŠ€λ₯Ό μ™„μ „νžˆ λ°˜λ‚©ν•˜λ©΄ 2번 ν”„λ‘œμ„ΈμŠ€μ—κ²Œ 내어쀄 수 μžˆμ„ 것이닀.

Banker's Algorithm

  • μžμ› per μ—¬λŸ¬ 개 μΈμŠ€ν„΄μŠ€.
  • 은행원 μ•Œκ³ λ¦¬μ¦˜ 이라고도 λΆ€λ₯Έλ‹€.
  • λ±…μ»€μŠ€ μ•Œκ³ λ¦¬μ¦˜μ€ 이 ν”„λ‘œμ„ΈμŠ€λ“€μ΄ μžμ›μ„ μš”μ²­ν–ˆμ„ λ•Œ, κ·Έ μš”μ²­μ„ 받아듀일 것인지 μ•Šμ„ κ²ƒμΈμ§€λ§Œ κ²°μ •ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€.
  • (κ°€μš©μžμ›μœΌλ‘œ μ΅œλŒ€ μš”μ²­μžμ›(Max)이 μΆ©μ‘±λ˜λŠ”μ§€μ˜ 여뢀에 λ”°λΌμ„œ, μ–Έμ  κ°€ κ°€μš©μžμ›μœΌλ‘œ 좩쑱될 λ•Œ κ·Έ ν”„λ‘œμ„ΈμŠ€μ˜ μš”μ²­μ„ λ“€μ–΄μ€€λ‹€.)

  • Allocation은 이미 ν• λ‹Ή 된 것
  • Available은 아무도 μ‚¬μš©ν•˜μ§€ μ•Šκ³  μžˆλŠ” κ°€μš© μžμ›
  • MaxλŠ” ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€κ°€ μ΅œλŒ€λ‘œ μžμ›μ„ μš”μ²­ν•  λ•Œμ˜ 개수
  • NeedλŠ” μ–Όλ§ˆλ‚˜ 더 μ΅œλŒ€λ‘œ μš”μ²­ν•  수 μžˆλŠ”μ§€ (Max-Allocation)

  • 은행원 μ•Œκ³ λ¦¬μ¦˜μ€ μ²˜μŒμ— μ΅œλŒ€λ‘œ μ–Όλ§ˆλ‚˜ μžμ›μ„ μ‚¬μš©ν• μ§€(max) declare ν•œλ‹€.
  • κ°€μš©μžμ›(Available)이 Allocation을 μΆ©μ‘±μ‹œν‚€μ§€ λͺ»ν•œλ‹€κ³  ν•΄μ„œ λ°λ“œλ½μ€ μ•„λ‹ˆλ‹€.
  • ν˜„μž¬ Allocation 받은 μžμ›μ„ λ‹€ μ“°κ³  λ°˜λ‚©ν•  μˆ˜λ„ 있고, 가지고 κ·ΈλŒ€λ‘œ 갈 μˆ˜λ„ 있기 λ•Œλ¬Έμ΄λ‹€.
  • κ·ΈλŸ¬λ‚˜ λ±…μ»€μŠ€ μ•Œκ³ λ¦¬μ¦˜μ€ ꡉμž₯히 보수적으둜, μ ˆλŒ€ λ°λ“œλ½μ„ λ°œμƒμ‹œν‚€μ§€ μ•ŠμœΌλ €λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. (늘 safe stateλ₯Ό μœ μ§€ν•˜λ €κ³  ν•˜λŠ”)
  • μ΅œλŒ€ μš”μ²­μ„ 받을 상황을 κ³ λ €ν•˜κ³ , κ·Έ μ΅œλŒ€ μš”μ²­μ΄ ν˜„μž¬ κ°€μš©μžμ›μœΌλ‘œ μΆ©μ‘±λ˜λŠ”κ°€λ₯Ό 늘 κ³ λ €ν•œλ‹€.
  • μ΅œλŒ€ μš”μ²­ν•  수 μžˆλŠ” μžμ›μ˜ κ°œμˆ˜λŠ” Needλ₯Ό λ²—μ–΄λ‚˜μ§„ μ•ŠλŠ”λ‹€.

  • κ°€μš©μžμ›κ³Ό ν”„λ‘œμ„ΈμŠ€μ—κ²Œ λ°˜λ‚©λ°›μ€ μžμ›μ„ 가지고 μ΅œλŒ€μš”μ²­ν•˜λŠ” μžμ›μ„ λ‹€ λ§Œμ‘±μ‹œν‚€λ©° ν”„λ‘œμ„ΈμŠ€λ₯Ό λκΉŒμ§€ μ‹€ν–‰μ‹œν‚¬ 수 μžˆλŠ” μˆœμ„œκ°€ μ‘΄μž¬ν•˜λ©΄, safe μƒνƒœλΌκ³  λ³Ό 수 μžˆλ‹€.
  • μœ„ 그림의 경우 sequence <P1, P3, P4, P2, P0> 이 μ‘΄μž¬ν•˜λ―€λ‘œ safe state.
  • λ±…μ»€μŠ€ μ•Œκ³ λ¦¬μ¦˜μ€ deadlock은 λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.
  • κ·ΈλŸ¬λ‚˜ 잘 λ°œμƒν•˜μ§€λ„ μ•ŠλŠ” λ°λ“œλ½μ„ 미연에 λ°©μ§€ν•˜κΈ° μœ„ν•΄μ„œ μ œκ³΅ν•  μžμ›μ΄ μžˆμŒμ—λ„ λΆˆκ΅¬ν•˜κ³  μ΅œλŒ€ μš”μ²­μžμ›μ„ 늘 κ³ λ €ν•΄μ„œ μ œκ³΅ν•˜μ§€ μ•ŠκΈ°μ— ꡉμž₯히 λΉ„νš¨μœ¨μ μ΄λ‹€.

Deadlock Detection and Recovery

μžμ› λ‹Ή μΈμŠ€ν„΄μŠ€κ°€ ν•˜λ‚˜μΌ 땐 κ·Έλž˜ν”„λ₯Ό, μ—¬λŸ¬ 개일 땐 ν…Œμ΄λΈ”μ„ μ‚¬μš©ν•œλ‹€. (κ·ΈλŸ¬λ‚˜ ν•˜λ‚˜μΌ λ•Œλ„ ν…Œμ΄λΈ” μ‚¬μš©κ°€λŠ₯ν•˜λ‹€.)

  • μ—¬κΈ°μ„œλŠ” μ΅œλŒ€ μš”μ²­μžμ›μ„ μ•Œ ν•„μš” μ—†λ‹€.
  • λ°λ“œλ½μΈμ§€ νŒλ³„ν•˜λ €λ©΄, μ•„κΉŒμ™€ λ‹€λ₯΄κ²Œ 상황을 λ‚™κ΄€μ μœΌλ‘œ 보면 λœλ‹€.
    • 0번 ν”„λ‘œμ„ΈμŠ€λŠ” μΆ”κ°€λ‘œ μš”μ²­ν•  수 도 μžˆμ§€λ§Œ B 1개λ₯Ό 가지고 있기 λ•Œλ¬Έμ— λ°˜λ‚©ν• κ±°λΌ κ³ λ €.
    • 2번 ν”„λ‘œμ„ΈμŠ€λ„ μΆ”κ°€λ‘œ μš”μ²­ν• κ²Œ μ—†μœΌλ‹ˆκΉŒ 일단 λ°˜λ‚©ν•œλ‹€κ³  κ°€μ •ν•˜κ³  그럼 3,1,3 κ°œκ°€ 생긴닀.
    • 그러면 1번 ν”„λ‘œμ„ΈμŠ€κ°€ κ°€μš©μžμ›μœΌλ‘œλΆ€ν„° λ°›μ•„μ„œ, μΆ”κ°€λ‘œ μš”μ²­ν•  μˆ˜λ„ μžˆμ§€λ§Œ 일단 μ“°κ³ λ‚˜μ„œ λ°˜λ‚©ν•˜λ‹€κ³  κ°€μ •.
    • 4λ²ˆλ„ λ§ˆμ°¬κ°€μ§€λ‘œ κ°€μš©μžμ›μ„ λ°›μ•„μ„œ μš”μ²­λœ 것듀을 μ „λΆ€ ν—ˆμš©μ„ ν•˜κ³  λ°˜λ‚©μ„ ν•΄μ„œ
    • μš”μ²­μ„ λ‹€ λ°›μ•„λ“€μ΄λŠ” μ‹œν€€μŠ€κ°€ μ‘΄μž¬ν•˜λ©΄ λ°λ“œλ½μ΄ μ—†λ‹€κ³  λ³Έλ‹€.

  • λ°λ“œλ½μΈμ§€ νŒλ³„ν•˜κΈ° μœ„ν•΄μ„œλŠ”, κ°€μš©μžμ›μ„ 보고 μ²˜λ¦¬ν•  수 μžˆλŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μžˆλŠ”μ§€λ₯Ό λ³Έλ‹€.
  • μš”μ²­ν•˜μ§€ μ•Šμ€ ν”„λ‘œμ„ΈμŠ€λ“€μ€(requestκ°€ μ—†λŠ”) κ°€μš©μžμ›μœΌλ‘œ 합쳐놓고, κ·Έκ±Έ 가지고 μ²˜λ¦¬κ°€λŠ₯ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ μžˆλ‹€λ©΄ μ²˜λ¦¬ν•˜κ³  λ°˜λ‚©λ°›μœΌλ©΄μ„œ λκΉŒμ§€ 갈 수 μžˆλŠ”μ§€λ₯Ό 체크해보면 λœλ‹€.
  • λ§Œμ•½μ— Deadlock이 λ°œμƒν•˜λ©΄, Recoveryλ₯Ό ν•œλ‹€.

λ°λ“œλ½μ΄ detectionλ˜μ„œ recoveryλ₯Ό ν•  μ μ—λŠ”,

  • Process termination: λ°λ“œλ½μ— μ—°λ£¨λœ λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‚¬μ‚΄ν•˜λŠ” 방식이 μžˆλ‹€.
  • Resource Preemption: λ°λ“œλ½μ— μ—°λ£¨λœ ν”„λ‘œμ„ΈμŠ€λ₯Ό ν•˜λ‚˜μ”© μ£½μ—¬λ³΄λŠ” 것. λ°λ“œλ½μ΄ μ—†μ–΄μ§ˆ λ•ŒκΉŒμ§€.

νŠΉμ •ν•œ ν”„λ‘œμ„ΈμŠ€λ₯Ό λΉ„μš© μž…μž₯μ—μ„œ κ³ λ €ν•΄μ„œ 계속 κ·Έ ν”„λ‘œμ„ΈμŠ€λ§Œ μžμ›μ„ λΊκ²¨μ•Όν•œλ‹€λ©΄ κ·Έ ν”„λ‘œμ„ΈμŠ€λ§Œ 계속 rollback λ˜μ•Όν•˜λ―€λ‘œ starvation λ¬Έμ œκ°€ λ°œμƒλ  수 있기 λ•Œλ¬Έμ— 횟수λ₯Ό κ³ λ €ν•œλ‹€.


Deadlock Ignorance

  • Deadlock이 μΌμ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€κ³  μƒκ°ν•˜κ³  μ•„λ¬΄λŸ° μ‘°μΉ˜λ„ μ·¨ν•˜μ§€ μ•ŠλŠ” 방식.
  • 맀우 λ“œλ¬Όκ²Œ λ°œμƒν•˜λŠ” Deadlock에 λŒ€ν•œ 쑰치 μžμ²΄κ°€ 더 큰 overhead일 수 있기 λ•Œλ¬Έμ΄λ‹€.
  • λ§Œμ•½ μ‹œμŠ€ν…œμ— deadlock이 λ°œμƒν•œ κ²½μš°μ—λŠ”, μ‹œμŠ€ν…œμ΄λ‚˜ osμ—μ„œ λŒ€μ²˜ν•˜λŠ” 것이 μ•„λ‹ˆλΌ μ‚¬λžŒμ΄ 비정상적인 μ‹œμŠ€ν…œμ„ λŠλ‚€ ν›„ 직접 processλ₯Ό μ£½μ΄λŠ” λ“±μ˜ λ°©λ²•μœΌλ‘œ λŒ€μ²˜ν•œλ‹€.
  • UNIX λ₯Ό ν¬ν•¨ν•œ λŒ€λΆ€λΆ„μ˜ λ²”μš© OSμ—μ„œ μ±„νƒν•œ 방식.

λ©΄μ ‘ λŒ€λΉ„

  1. κ΅μ°©μƒνƒœ(Deadlock)κ°€ λ¬΄μ—‡μž…λ‹ˆκΉŒ?
  2. λ°λ“œλ½μ˜ 4가지 ν•„μš”μ‘°κ±΄ 에 λŒ€ν•΄ μ„€λͺ…ν•˜μ„Έμš”.
  3. ꡐ착 μƒνƒœ ν•΄κ²° 방법을 μ„€λͺ…ν•˜μ„Έμš”.
  4. Banker's algorithm 은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?