OS) Deadlock
π Deadlock(κ΅μ°©μν)λ?
- μΌλ ¨μ νλ‘μΈμ€λ€μ΄ μλ‘κ° κ°μ§ μμμ κΈ°λ€λ¦¬λ©°
block
λ μν
Resource(μμ)
- νλμ¨μ΄, μννΈμ¨μ΄ λ±μ ν¬ν¨νλ κ°λ
- μ)
I/O device
,CPU cycle
,memory space
,semaphore
λ± - νλ‘μΈμ€κ° μμμ μ¬μ©νλ μ μ°¨
Request
->Allocate
->Use
->Release
λ°λλ½μ΄ λ°μνλ μ
- μμ€ν
μ 2κ°μ
tape drive
κ° μκ³ νλ‘μΈμ€P1
,P2
κ°κ°μ΄ νλμtape drive
λ₯Ό 보μ ν μ± λ€λ₯Έ νλλ₯Ό κΈ°λ€λ¦¬κ³ μλ κ²½μ°
P0 P1
P(A); P(B);
P(B); P(A);
- λ μΈλ§ν¬μ΄κ° νμν μμμ μλ‘ μμμ νλμ© κ°μ§ μνμμ μλκ° λ΄λκΈ°λ₯Ό κΈ°λ€λ¦¬λ κ²½μ°
λ°λλ½ λ°μμ 4κ°μ§ 쑰건
Mutual exclusion (μνΈ λ°°μ )
- 맀 μκ° νλμ νλ‘μΈμ€λ§μ΄ μμμ μ¬μ©ν μ μμ
No preemption (λΉμ μ )
- νλ‘μΈμ€λ μμμ μ€μ€λ‘ λ΄μ΄λμ λΏ κ°μ λ‘ λΉΌμκΈ°μ§ μμ
Hold and wait (보μ λκΈ°)
- μμμ κ°μ§ νλ‘μΈμ€κ° λ€λ₯Έ μμμ κΈ°λ€λ¦΄ λ 보μ μμμ λμ§ μκ³ κ³μ κ°μ§κ³ μμ
Circular wait (μν λκΈ°)
- μμμ κΈ°λ€λ¦¬λ νλ‘μΈμ€κ°μ μ¬μ΄ν΄μ΄ νμ±λμ΄μΌ ν¨
- νλ‘μΈμ€
1, 2, 3, 4
κ° μμ λ1
μ2
κ° κ°μ§ μμμ κΈ°λ€λ¦Ό2
λ3
μ΄ κ°μ§ μμμ κΈ°λ€λ¦Ό3
μ4
κ° κ°μ§ μμμ κΈ°λ€λ¦Ό4
λ1
μ΄ κ°μ§ μμμ κΈ°λ€λ¦Ό
λ°λλ½ μ²λ¦¬ λ°©λ²
Deadlock Prevention
- μμ ν λΉ μ
λ°λλ½
μ 4κ°μ§ νμ 쑰건 μ€ μ΄λ νλκ° λ§μ‘±λμ§ μλλ‘ νλ κ²
Deadlock Avoidance
- μμ μμ²μ λν λΆκ°μ μΈ μ 보λ₯Ό μ΄μ©ν΄μ
λ°λλ½
μ κ°λ₯μ±μ΄ μλ κ²½μ°μλ§ μμ ν λΉ - μμ€ν
state
κ° μλstate
λ‘ λμμ¬ μ μλ κ²½μ°μλ§ μμ ν λΉ
Deadlock Detection and recovery
λ°λλ½
λ°μμ νμ©νλ κ·Έμ λνdetection
루ν΄μ λμ΄λ°λλ½
λ°κ²¬μrecover
Deadlock Ingorance
λ°λλ½
μ μμ€ν μ΄ μ± μμ§μ§ μμUNIX
λ₯Ό ν¬ν¨ν λλΆλΆμOS
κ° μ±νλ°λλ½
μμ²΄κ° μμ£Ό λ°μνλ μΌμ΄ μλκΈ° λλ¬Έμλ°λλ½
μ λλΉνλ€κ³ μμ€ν μ μμ λΆλ°°λ₯Ό μ‘°μ νλ κ²μ λΉν¨μ¨μ μ΄κΈ° λλ¬Έμ μ¬μ©μκ° μμμ μ²λ¦¬νλλ‘ νλ€.
λ°λλ½ λ°©μ§
Mutual exclusion
- 곡μ ν΄μλ μ λλ μμμ κ²½μ° λ°λμ μ±λ¦½ν΄μΌ ν¨
- μ¦ μ΄ μ‘°κ±΄μ΄ λ°λμ μ±λ¦½νλ€λ©΄ λ°λλ½μ΄ λ°μν μ μλ€.
Hold and Wait
- νλ‘μΈμ€κ° μμμ μμ²ν λ λ€λ₯Έ μ΄λ€ μμλ κ°μ§κ³ μμ§ μμμΌ νλ€.
- λ°©λ² 1 : νλ‘μΈμ€ μμ μ λͺ¨λ νμν μμμ ν λΉλ°κ² νλ λ°©λ²
- λ°©λ² 2 : μμμ΄ νμν κ²½μ° λ³΄μ μμμ λͺ¨λ λκ³ λ€μ μμ²
No Preemption
- νλ‘μΈμ€κ° μμμ κΈ°λ€λ €μΌ νλ κ²½μ° μ΄λ―Έ 보μ ν μμμ΄ μ μ λ¨
- λͺ¨λ νμν μμμ μ»μ μ μμ λ κ·Έ νλ‘μΈμ€λ λ€μ μμλ¨
- μ¦ μμμ μ μ ν μ μκ² νλ κ²
state
λ₯Ό μ½κ²save
νκ³restore
ν μ μλ μμμμ μ£Όλ‘ μ¬μ© (μ:CPU
,memory
)
Circular Wait
- λͺ¨λ μμ μ νμ ν λΉ μμλ₯Ό μ νμ¬ μ ν΄μ§ μμλλ‘λ§ μμ ν λΉ
- μλ₯Ό λ€μ΄ μμκ° 3μΈ μμμ 보μ μ€μΈ νλ‘μΈμ€κ° μμκ° 1μΈ μμμ ν λΉλ°κΈ° μν΄μλ μ°μ μμ 3μ
release
ν΄μΌ νλ€. -
μμ μμ² μ¬μ΄ν΄μ΄ μμ±λμ§ μκ² νλ κ²
- νμ§λ§ μ κΈ°λ²λ€μ μ μ©νλ©΄
Utilization(μ΄μ©λ₯ )
μ ν,Throughput(μ±λ₯)
κ°μ,Starvation
λ¬Έμ κ° μ겨μ κ΅μ₯ν λΉν¨μ¨μ μ΄λ€.
Deadlock Avoidance
- μμ μμ²μ λν λΆκ°μ 보λ₯Ό μ΄μ©ν΄μ μμ ν λΉμ΄ λ°λλ½μΌλ‘λΆν° μμ νμ§ λμ μΌλ‘ μ‘°μ¬ν΄μ μμ ν κ²½μ°μλ§ ν λΉ
- κ°μ₯ λ¨μνκ³ μΌλ°μ μΈ λͺ¨λΈμ νλ‘μΈμ€λ€μ΄ νμλ‘ νλ κ° μμλ³ μ΅λ μ¬μ©λμ 미리 μ μΈνλλ‘ νλ λ°©λ²
Resource Allocation Graph algorithm
- μμλΉ νλμ μΈμ€ν΄μ€λ§ μμ λ μ¬μ©νλ λ°©λ²
- μμλ€κ³Ό νλ‘μΈμ€λ€ κ°μ μ€μ κ³Ό μ μ μΌλ‘ μλ κ·Έλνλ₯Ό κ·Έλ € ν λΉκ³Ό μμ²λ μμμ μ€μ μΌλ‘ νμνκ³ μ΄λ€ νλ‘μΈμ€κ° λ―Έλμ ν λ²μ μ¬μ©ν μ μλ μμμ μ μ μΌλ‘ νμνλ κ²μ΄λ€.
- μλ‘μ΄ μμ μμ²μ΄ λ€μ΄μ€λ©΄ μ€μ μ μ μ μΌλ‘ λ°κΏ¨μ λ μ¬μ΄ν΄μ΄ μκΈ°μ§ μμ λμλ§ μμ² μμμ ν λΉνλ€.
- μ¬μ΄ν΄ μμ± μ¬λΆ μ‘°μ¬μ νλ‘μΈμ€μ μκ°
n
μΌ λO(n^2)
μκ°μ΄ κ±Έλ¦°λ€.
Bankerβs Algorithm
- κ°μ
- λͺ¨λ νλ‘μΈμ€λ μμμ μ΅λ μ¬μ©λμ 미리 λͺ μ
- νλ‘μΈμ€κ° μμ² μμμ λͺ¨λ ν λΉλ°μ κ²½μ° μ ν μκ° μμ μ΄λ€ μμμ λ€μ λ°λ©νλ€.
- λ°©λ²
- κΈ°λ³Έ κ°λ
: μμ μμ² μ
safe
μνλ₯Ό μ μ§ν κ²½μ°μλ§ ν λΉ - μ΄ μμ² μμμ μκ° κ°μ© μμμ μλ³΄λ€ μ μ νλ‘μΈμ€λ₯Ό μ ν (κ·Έλ° νλ‘μΈμ€κ° μμΌλ©΄
unsafe
μν) - μμ κ²½μ°μ λΆν©νλ νλ‘μΈμ€κ° μμΌλ©΄ κ·Έ νλ‘μΈμ€μκ² μμ ν λΉ
- ν λΉλ°μ νλ‘μΈμ€κ° μ’ λ£λλ©΄ λͺ¨λ μμ λ°λ©
- λͺ¨λ νλ‘μΈμ€κ° μ’ λ£λ λκΉμ§ μ΄λ¬ν κ³Όμ λ°λ³΅
- κΈ°λ³Έ κ°λ
: μμ μμ² μ
Deadlock Detection and Recovery
Detection
Banker's Algorithm
κ³Ό μ μ¬ν λ°©λ²μΌλ‘ μ¬μ΄ν΄μ μ‘΄μ¬ μ¬λΆλ₯Ό μ£ΌκΈ°μ μΌλ‘ κ²μ¬νμ¬ μμμ ν λΉνλ λ°©λ²μ΄ μλ€.
Recovery
Process termination
- λ°λλ½ λ λͺ¨λ νλ‘μΈμ€ μ’ λ£
- λ°λλ½μ΄ ν΄κ²°λ λ κΉμ§ λ°λλ½μ κ°ν μλ νλ‘μΈμ€λ₯Ό νλμ© μ’ λ£
Resource preemption
- λΉμ©μ μ΅μν ν
victim
μ μ safe state
λ‘rollback
νμ¬ νλ‘μΈμ€ μ¬μμStarvation
λ¬Έμ - λμΌν νλ‘μΈμ€κ° κ³μν΄μ
victim
μΌλ‘ μ μ λλ κ²½μ° cost factor
μrollback
νμλ κ°μ΄ κ³ λ €
- λμΌν νλ‘μΈμ€κ° κ³μν΄μ
Deadlock Ignorance
- λ°λλ½μ΄ μΌμ΄λμ§ μλλ€κ³ μκ°νκ³ μλ¬΄λ° μ‘°μΉλ μ·¨νμ§ μμ
- λ°λλ½μ λ§€μ° λλ¬Όκ² λ°μνλ―λ‘ λ°λλ½μ λν μ‘°μΉ μμ²΄κ° λ ν° μ€λ²ν€λμΌ μ μλ€.
- λ§μ½, μμ€ν μ λ°λλ½μ΄ λ°μν κ²½μ° μμ€ν μ΄ λΉμ μμ μΌλ‘ μλνλ κ²μ μ¬λμ΄ λλ ν μ§μ νλ‘μΈμ€λ₯Ό μ£½μ΄λ λ±μ λ°©λ²μΌλ‘ λμ²
UNIX
,Windows
λ± λλΆλΆμ λ²μ©OS
κ° μ±ν