λ°λλ½(DeadLock) λλ κ΅μ°©μνλ λ©ν° νλ‘μΈμ€μ λ©ν° μ€λ λ λ λ€ λ°μν μ μμ΅λλ€.
μ΄λ² κΈμμλ νΈμμ λ©ν° νλ‘μΈμ€λ‘ μΌκ΄ν΄μ μ€λͺ νκ² μ΅λλ€.
λ°λλ½(DeadLock)μ κ΅μ°©μνλ‘λ μΈκΈλλ©°,
μ΄λ² μ€λͺ μμλ μ£Όλ‘ λ°λλ½(DeadLock)μ΄λΌλ μ©μ΄λ₯Ό μ¬μ©νκ² μ΅λλ€.
λ°λλ½ DeadLock(κ΅μ°©μν) μ΄λ?
λ°λλ½(DeadLock) λλ κ΅μ°©μνλ λ κ° μ΄μμ νλ‘μΈμ€κ° μλ‘μ μμ μ΄ λλκΈ°λ₯Ό κΈ°λ€λ¦¬λ '무ν λκΈ° μν'μ λλ€.
κ° νλ‘μΈμ€λ λ€λ₯Έ νλ‘μΈμ€κ° 보μ νκ³ μλ μμμ κΈ°λ€λ¦¬λ λμμ κ·Έ μμμ λ€λ₯Έ νλ‘μΈμ€μκ² μ 곡νκΈ°λ₯Ό κΈ°λ€λ¦¬λ μν©μ λ°μν©λλ€.
λ°λλ½ 4κ°μ§ νμ 쑰건
λ°λλ½μ λ€μν ννμ μμμ λν κ²½μμμ λ°μν μ μμ΅λλ€.
μμμ μ£Όλ‘ CPU μκ°, λ©λͺ¨λ¦¬, νμΌ, μ₯μΉ λ±μ ν¬ν¨ν©λλ€.
λ°λλ½μ λ€μ λ€κ°μ§ νμ μ‘°κ±΄μ΄ λμμ μ±λ¦½ν λ λ°μν©λλ€.
μνΈλ°°μ (Mutual Exclusion)
μμμ ν λ²μ νλμ νλ‘μΈμ€λ μ€λ λλ§μ΄ μ¬μ©ν μ μμ΄μΌ ν©λλ€.
λ€λ₯Έ νλ‘μΈμ€λ μ€λ λκ° μ¬μ© μ€μΈ μμμ λν μ κ·Όμ νμ©λμ§ μμ΅λλ€.
μ μ λκΈ° (Hold and Wait)
νλ‘μΈμ€κ° μ΄λ―Έ μ΄λ€ μμμ 보μ ν μνμμ λ€λ₯Έ μμμ μμ²νκ³ , ν΄λΉ μμμ μ»κΈ° μν΄ λκΈ°νκ³ μλ μνμ λλ€.
λΉμ μ (No Preemption)
μ΄λ―Έ 보μ ν μμμ κ°μ λ‘ λΉΌμμ μ μμ΄μΌ ν©λλ€.
λ€λ₯Έ νλ‘μΈμ€λ μ€λ λκ° μ΄λ―Έ μ¬μ© μ€μΈ μμμ κ°μ λ‘ ν΄μ ν μ μμ΅λλ€.
μνλκΈ° (Circular Wait)
νλ‘μΈμ€ μ§ν© {P0, P1, ..., Pn}μμ P0λ P1μ΄ μ μ ν μμμ λκΈ°νκ³ , P1μ P2κ° μ μ ν μμμ λκΈ°νλ©°, Pnμ P0μ΄ μ μ ν μμμ λκΈ°ν΄μΌ ν©λλ€.
μ΄λ, nμ 1λ³΄λ€ ν¬κ±°λ κ°μ΅λλ€.
λ°λλ½μ΄ λ°μνλ©΄ κ°κ°μ νλ‘μΈμ€λ μνλ μμμ μ»μ§ λͺ»ν΄ 무νν λκΈ°νλ©°, μ 체 μμ€ν μ΄ μ 체λκ² λ©λλ€.
λ°λλ½μ ν΄κ²°νκ±°λ λ°©μ§νκΈ° μν΄μλ νμ쑰건 μ€ νλ μ΄μμ μ κ±°νκ±°λ, λ°λλ½μ΄ λ°μνλ©΄ μ΄λ₯Ό νμ§νκ³ λ³΅κ΅¬ν μ μλ λ°©λ²μ μ¬μ©ν΄μΌ ν©λλ€.
λνμ μΈ λ°©λ²μΌλ‘λ λ°λλ½μ 쑰건 μ€ νλ μ΄μμ κΉ¨νΈλ¦¬λ λ°©λ², νμ§ λ° ννΌ μκ³ λ¦¬μ¦ λ±μ΄ μμ΅λλ€.
λ°λλ½ ν΄κ²°λ°©λ²
λ°λλ½μ ν΄κ²°νκΈ° μν΄μλ λ€μν λ°©λ²μ΄ μ¬μ©λ©λλ€.
μ£Όμ λ°λλ½ ν΄κ²° λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
μλ°© (Prevention)
λ°λλ½μ΄ λ°μνμ§ μλλ‘ νμ 쑰건μ μ κ±°νλ λ°©λ²μ λλ€.
νμ 쑰건 μ€ νλ μ΄μμ λ°©μ§ν¨μΌλ‘μ¨ λ°λλ½μ΄ λ°μνμ§ μλ κ²μ΄ λͺ©νμ λλ€.
μνΈ λ°°μ , μ μ λκΈ°, λΉμ μ , μνλκΈ° μ€ νλλΌλ λ§μ‘±λμ§ μμΌλ©΄ λ°λλ½μ μλ°©ν μ μμ΅λλ€.
ννΌ (Avoidance)
λ°λλ½μ΄ λ°μν κ°λ₯μ±μ΄ μλ κ²½μ°, μμ€ν μ΄ νΉμ μμμ ν λΉν μ§ λ§μ§λ₯Ό κ²°μ νλ λμ μΈ λ°©λ²μ λλ€.
리μμ€ ν λΉ κ·Έλν λ±μ μ¬μ©νμ¬ λ°λλ½ λ°μ μ¬λΆλ₯Ό 미리 μμΈ‘νκ³ , λ°λλ½μ΄ λ°μνμ§ μλλ‘ ν λΉμ μ‘°μ ν©λλ€.
μ΄λ λ³΄λ€ μ κ·Ήμ μΈ κ΄λ¦¬λ₯Ό ν΅ν΄ λ°λλ½μ ννΌνλ λ°©λ²μ λλ€.
κ²μΆ λ° ν볡 (Detection and Recovery)
λ°λλ½μ΄ λ°μνλ©΄ μ΄λ₯Ό κ²μΆνμ¬ ν볡νλ λ°©λ²μ λλ€.
μ£ΌκΈ°μ μΌλ‘ μμ€ν μνλ₯Ό λͺ¨λν°λ§νκ³ , λ°λλ½μ΄ λ°μνλμ§ μ¬λΆλ₯Ό κ°μ§ν©λλ€.
λ°λλ½μ΄ κ°μ§λλ©΄, ν볡μ μν μ‘°μΉλ₯Ό μ·¨νμ¬ λ°λλ½μ ν΄κ²°ν©λλ€.
ν볡 λ°©λ²μΌλ‘λ λ°λλ½μ λ°μμν¨ νλ‘μΈμ€λ₯Ό μ€μ§μν€κ±°λ, μμμ μ μ νμ¬ ν볡νλ λ°©λ² λ±μ΄ μμ΅λλ€.
μ μ μ ν΅ν ν볡
κ΅μ°© μνκ° ν΄κ²°λ λκΉμ§ λ€λ₯Έ νλ‘μΈμ€λΆν° μμμ κ°μ λ‘ λΉΌμμ ν νλ‘μΈμ€μ© μμμ λͺ°μμ£Όμ΄ (μ μ ) ν΄κ²°νλ λ°©λ²μ΄ μμ΅λλ€.
νλ‘μΈμ€ κ°μ μ’ λ£λ₯Ό ν΅ν ν볡
κ°μ₯ λ¨μνλ©΄μ νμ€ν λ°©λ²μΌλ‘λ κ΅μ°© μνκ° μμ΄μ§ λκΉμ§ κ΅μ°© μνμ λμΈ λͺ¨λ νλ‘μΈμ€ μ 체 λλ νλμ© κ°μ λ‘ μ’ λ£νλ λ°©λ²μ λλ€.
λ¨, μ 체λ₯Ό μ’ λ£ν κ²½μ°μ λ§μ μμ λ΄μμ μλλ€λ λ¨μ μ΄ μμ΅λλ€.
νλμ© μ’ λ£ν κ²½μ°μ κ΅μ°© μνκ° μμ΄μ‘λμ§ νμΈνλ κ³Όμ μμ μ€λ²ν€λλ₯Ό μΌκΈ°νλ€λ λ¨μ μ΄ μμ΅λλ€.
νμ‘° μκ³ λ¦¬μ¦
κ΅μ°© μνλ₯Ό μμ ν 무μνλ λ°©λ²μΌλ‘ νμ‘° μκ³ λ¦¬μ¦(orstrich algorithm)μ΄ μμ΅λλ€.
λ¬Έμ μ λ°μ λΉλλ μ¬κ°μ±μ λ°λΌ μ΅λ ν¨μ¨μ μΆκ΅¬νλ μμ§λμ΄ μ μ₯μμλ μ΄ λ°©λ²μ΄ μ ν©ν λλ λ§μ΅λλ€.