Search
Duplicate

λ°λ“œλ½

β€’
일뢀 μžμ›μ„ 가지고 μžˆμœΌλ©΄μ„œ λ‚΄κ°€ λͺ»κ°€μ§„ μžμ›μ„ μš”κ΅¬ν•˜λŠ” 것

Deadlock

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

4가지 쑰건

β€’
mutual exclusion(μƒν˜Έ 배제)
β—¦
맀 μˆœκ°„ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λ§Œ λ…μ μ μœΌλ‘œ μžμ›μ„ μ‚¬μš©
β€’
no preemption(비선점)
β—¦
ν”„λ‘œμ„ΈμŠ€λŠ” μžμ›μ„ 슀슀둜 내어놓고, κ°•μ œλ‘œ λΉΌμ•—κΈ°μ§€λŠ” μ•ŠμŒ
β€’
hold and wait(보유 λŒ€κΈ°)
β—¦
μžμ›μ„ 가진 ν”„λ‘œμ„ΈμŠ€κ°€ λ‹€λ₯Έ μžμ›μ„ 기닀릴 λ•Œ 보유 μžμ›μ„ 놓지 μ•Šκ³  계속 가지고 있음
β€’
circular wait(μˆœν™˜ λŒ€κΈ°)
β—¦
μžμ›μ„ κΈ°λ‹€λ¦¬λŠ” ν”„λ‘œμ„ΈμŠ€κ°„μ— 사이클이 ν˜•μ„±λ¨

Resources

β€’
ν•˜λ“œμ›¨μ–΄, μ†Œν”„νŠΈμ›¨μ–΄ 등을 ν¬ν•¨ν•˜λŠ” κ°œλ…
β—¦
IO device, CPU cycle, memory space, semaphore λ“±
β€’
ν”„λ‘œμ„ΈμŠ€κ°€ μžμ›μ„ μ‚¬μš©ν•˜λŠ” 절차
β—¦
request, allocate, use, release

Resource Allocation Graph

β€’
Vertex
β—¦
Process P
β—¦
resource R
β€’
Edge
β—¦
request edge P β†’ R
β—¦
assignment edge R β†’ P
β€’
κ·Έλž˜ν”„μ— cycle 이 μ—†μœΌλ©΄ deadlockdl μ•„λ‹ˆλ‹€.
β€’
κ·Έλž˜ν”„μ— cycle 이 있으면
β—¦
μžμ›λ‹Ή μΈμŠ€ν„΄μŠ€κ°€ ν•˜λ‚˜λ°–μ— μ—†μœΌλ©΄ deadlock
β—¦
μžμ›λ‹Ή μ—¬λŸ¬ μΈμŠ€ν„΄μŠ€κ°€ 있으면 deadlock κ°€λŠ₯μ„±
β€’
μ™Όμͺ½ κ·Έλ¦Όμ—μ„œλŠ” 2개의 사이클
β—¦
R2 β†’ P1 β†’ R1 β†’ P2 β†’ R3 β†’ P3 β†’ R2
β—¦
R2 β†’ P2 β†’ R3 β†’ P3 β†’ R2
β—¦
R2 κ°€ 2개의 μΈμŠ€ν„΄μŠ€κ°€ μžˆλ”λΌλ„ R2 의 μΈμŠ€ν„΄μŠ€ λͺ¨λ‘ 사이클에 λ¬Όλ €μžˆκΈ°λ•Œλ¬Έμ— λ°λ“œλ½ μƒνƒœ
β€’
였λ₯Έμͺ½ 그림은 1개의 사이클
β—¦
R1, R2 μΈμŠ€ν„΄μŠ€κ°€ 각각 2개이고 κ·Έ 쀑 ν•˜λ‚˜μ˜ μžμ›μ€ μ—΄λ €μžˆκΈ°λ•Œλ¬Έμ— λ°λ“œλ½ X

Deadlock 처리 방법

β€’
deadlock prevention
β—¦
미연에 방지
β—¦
μžμ› ν• λ‹Ή μ‹œ deadlock 의 쑰건 쀑 μ–΄λŠ ν•˜λ‚˜κ°€ λ§Œμ‘±λ˜μ§€ μ•Šλ„λ‘ ν•˜λŠ” 것
β—¦
hold and wait
β–ͺ
방법1: ν”„λ‘œμ„ΈμŠ€ μ‹œμž‘ μ‹œ λͺ¨λ“  ν•„μš”ν•œ μžμ›μ„ ν• λ‹Ήλ°›κ²Œ ν•˜λŠ” 방법
β–ͺ
방법2: μžμ›μ΄ ν•„μš”ν•  경우 보유 μžμ›μ„ λͺ¨λ‘ 놓고 λ‹€μ‹œ μš”μ²­
β—¦
no preemption
β–ͺ
ν”„λ‘œμ„ΈμŠ€κ°€ μ–΄λ–€ μžμ›μ„ κΈ°λ‹€λ €μ•Ό ν•˜λŠ” 경우 이미 λ³΄μœ ν•œ μžμ›μ΄ 선점됨
β–ͺ
CPU, memory λ“± state λ₯Ό μ‰½κ²Œ save ν•˜κ³  restore ν•  수 μžˆλŠ” μžμ›μ—μ„œ 주둜 μ‚¬μš©
β—¦
circular wait
β–ͺ
μžμ›μ˜ ν• λ‹Ή μˆœμ„œλ₯Ό 정함
β—¦
utilization μ €ν•˜, throughput κ°μ†Œ, starvation 문제
β€’
deadlock avoidance
β—¦
미연에 방지
β—¦
μžμ› μš”μ²­μ— λŒ€ν•œ 뢀가적인 정보λ₯Ό μ΄μš©ν•˜μ—¬ deadlock 의 κ°€λŠ₯성이 μ—†λŠ” 경우만 μžμ› ν• λ‹Ή
β—¦
μ‹œμŠ€ν…œ state κ°€ μ›λž˜ state 둜 λŒμ•„μ˜¬ 수 μžˆλŠ” κ²½μš°μ—λ§Œ μžμ› ν• λ‹Ή
β—¦
ν”„λ‘œμ„ΈμŠ€κ°€ μ“Έ μžμ›μ˜ 양을 μ•Œκ³  μžˆλ‹€κ³  κ°€μ •ν•˜κ³  λΆ„μ„ν•˜μ—¬ λ°λ“œλ½ νšŒν”Ό
β—¦
resource allocation graph algorithm
β—¦
banker’s algorithm
β€’
deadlock detection and recovery
β—¦
deadlock λ°œμƒμ€ ν—ˆμš©ν•˜λ˜ 그에 λŒ€ν•œ detection 루틴을 둬 deadlock λ°œκ²¬μ‹œ recover
β—¦
μžμ›μ„ λΉΌκ³  더 κ°„λ‹¨ν•˜κ²Œ κ·Έλ¦°λ‹€.
β—¦
N^2 의 μ‹œκ°„λ³΅μž‘λ„ β†’ dfs λΌμ„œ
β—¦
recovery
β–ͺ
λͺ¨λ“  λ°λ“œλ½λœ ν”„λ‘œμ„ΈμŠ€λ₯Ό abort
β–ͺ
λ°λ“œλ½μ— μ—°λ£¨λœ ν”„λ‘œμ„ΈμŠ€λ₯Ό ν•˜λ‚˜μ”© abort
β–ͺ
μžμ›μ„ λΉΌμ•—κ³  process restart
β€’
deadlock ignorance
β—¦
μ±…μž„ X
β—¦
λŒ€λΆ€λΆ„μ˜ OS κ°€ 채택
β†’ deadlock 은 λ“œλ¬Όκ²Œ λ°œμƒν•œλ‹€κ³  보고 이에 λŒ€ν•œ λŒ€λΉ„λ₯Ό ν•˜λŠ” 것은 μ˜€λ²„ν—€λ“œλ₯Ό λ†’μ΄κΈ°λ•Œλ¬Έμ— ignorance