5. κ΅μ°© μν
1. κ΅μ°© μν(Deadlock)μ κ°λ β
λ κ° μ΄μμ νλ‘μΈμ€κ° μλ‘ μμ ν λΉμ μν΄ λ€λ₯Έ νλ‘μΈμ€μ μμ μ΄ λλκΈ°λ§μ 무ννκ² κΈ°λ€λ¦¬κ³ μλ μνλ₯Ό μλ―Ένλ€.
- κΈ°μ μν (Starvation): νλ‘μΈμ€μ μΌλΆκ° μμ ν λΉμ λ°μ§ λͺ»ν΄ λκΈ°κ° μ§μμ μΌλ‘ μΌμ΄λλ νμ (μΈμ κ°λ ν΄μλ κ°λ₯μ±μ΄ μμ)
- κ΅μ°© μν (Deadlock): μλ‘κ° μλ‘μ μμμ μνμ¬ λͺ¨λ νλ‘μΈμ€μ μ§νμ΄ μμ ν λ©μΆ μν
κ΅μ°© μνμ λμ
2. κ΅μ°© μνμ νΉμ±β
κ΅μ°© μνμ νμ 쑰건 (4κ°μ§)β
κ΅μ°© μνκ° λ°μνκΈ° μν΄μλ λ€μ 4κ°μ§ μ‘°κ±΄μ΄ λͺ¨λ μΆ©μ‘±λμ΄μΌ νλ€. νλλΌλ μΆ©μ‘±λμ§ μμΌλ©΄ κ΅μ°© μνλ λ°μνμ§ μλλ€.
- μνΈ λ°°μ (Mutual Exclusion)
- μμμ λν λ°°νμ μΈ ν΅μ κΆμ μλ―Ένλ€. ν λ²μ νλμ νλ‘μΈμ€λ§ μμμ μ¬μ©ν μ μλ€.
- μ μ λκΈ° (Hold and Wait)
- μμμ μ΅μν νλ 보μ νκ³ (μ μ ), λ€λ₯Έ νλ‘μΈμ€κ° μ μ μ€μΈ μμμ μ»κΈ° μν΄ κΈ°λ€λ¦¬λ(λκΈ°) νλ‘μΈμ€κ° μμ΄μΌ νλ€.
- λΉμ μ (No Preemption)
- λ€λ₯Έ νλ‘μΈμ€κ° μ μ μ€μΈ μμμ κ°μ λ‘ λΉΌμμ μ μλ€. μμμ μ μ νκ³ μλ νλ‘μΈμ€κ° μλ°μ μΌλ‘ λ°νν λλ§ ν΄μ λλ€.
- νν λκΈ° (Circular Wait)
- λκΈ° νλ‘μΈμ€μ μ§ν©μ΄ μλ‘κ° κΌ¬λ¦¬λ₯Ό λ¬Όκ³ μν ννλ‘ μμμ λκΈ°ν΄μΌ νλ€. ()
μμ ν λΉ κ·Έλν (Resource Allocation Graph)β
κ΅μ°© μνλ₯Ό λͺ ννκ² μκ°ννκΈ° μν΄ μ¬μ©νλ μ ν₯ κ·Έλνμ΄λ€.
- μ μ (Vertex)
- P: νλ‘μΈμ€(Process)λ₯Ό μλ―Ένλ μ μ μ μ§ν©
- R: μμ(Resource)μ μλ―Ένλ μ μ μ μ§ν©
- κ°μ (Edge)
- μꡬ κ°μ (): νλ‘μΈμ€ κ° μμ λ₯Ό μμ²ν¨ (λκΈ°)
- ν λΉ κ°μ (): μμ κ° νλ‘μΈμ€ μ ν λΉλ¨ (μ μ )

κ΅μ°© μνλ₯Ό λνλΈ κ°μ κ·Έλνμ μ
3. κ΅μ°© μν μ²λ¦¬β
3-1. λ°©μ§ (Prevention)β
κ΅μ°© μν λ°μ νμ 쑰건 4κ°μ§ μ€ νλλ₯Ό λΆμ νμ¬ κ΅μ°© μνλ₯Ό μλ°©νλ λ°©λ²μ΄λ€.
- μνΈ λ°°μ 쑰건μ μ κ±°
- 곡μ κ°λ₯ν μμ(Read-only νμΌ λ±)μΌλ‘ λ§λ€λ©΄ λμ§λ§, κ·Όλ³Έμ μΌλ‘ 곡μ λΆκ°λ₯ν μμ(νλ¦°ν° λ±)μ΄ μ‘΄μ¬νλ―λ‘ μ¬μ€μ λΆκ°λ₯νλ€.
- μ μ λκΈ° 쑰건μ μ κ±°
- μμμ μμ²νλ μμ μ μ΄λ ν λ€λ₯Έ μμλ μ μ νκ³ μμ§ μμμΌ νλ€.
- λ°©λ² 1: μμ μ μμνλ μμ μ νμν λͺ¨λ μμμ νκΊΌλ²μ μμ²νμ¬ ν λΉλ°λλ€. (μμ ν¨μ¨μ± μ ν)
- λ°©λ² 2: μμμ΄ νμν λ 보μ μμμ λͺ¨λ λ΄λ €λκ³ λ€μ μμ²νλ€. (κΈ°μ μν μ λ° κ°λ₯)
- λΉμ μ 쑰건μ μ κ±°
- λ°©λ² 1: λ€λ₯Έ μμμ μμ²νμΌλ μ¦μ ν λΉλ°μ§ λͺ»νλ κ²½μ°, μ μ μ€μ΄λ λͺ¨λ μμμ λ°ννκ³ λκΈ°νλ€.
- λ°©λ² 2: μμ²ν μμμ΄ λ€λ₯Έ λκΈ° μ€μΈ νλ‘μΈμ€μ μν΄ μ μ λμ΄ μλ€λ©΄, κ·Έ μμμ μ μ (λΉΌμμ)νμ¬ κ°μ Έμ¨λ€.
- CPU λ μ§μ€ν°λ λ©λͺ¨λ¦¬μ²λΌ μν μ μ₯μ΄ μ¬μ΄ μμμλ§ μ μ© κ°λ₯νλ€.
- νν λκΈ° 쑰건μ μ κ±°
- λͺ¨λ μμ μ νμ μΌλ ¨λ²νΈλ₯Ό λΆμ¬νκ³ , μ€λ¦μ°¨μμΌλ‘λ§ μμμ μμ²νκ² νλ€.
- μ: 3λ² μμμ 보μ ν μνμμλ 1λ² μμμ μμ²ν μ μκ³ , λ°λμ 4λ² μ΄μμ μμλ§ μμ² κ°λ₯νλ€.
3-2. ννΌ (Avoidance)β
νλ‘μΈμ€μ μμ μ¬μ©μ λν μ¬μ μ 보λ₯Ό νμ©νμ¬, κ΅μ°© μνκ° λ°μν κ°λ₯μ±μ΄ μλ λΆμμ μνλ₯Ό νΌν΄ κ°λ λ°©λ²μ΄λ€.
- νμν μ¬μ μ 보: ν λΉλ μμ, κ°μ© μμ, νλ‘μΈμ€λ€μ μ΅λ μꡬλ(Max Need)
- μμ μν (Safe State): μμ€ν μ΄ κ΅μ°© μνλ₯Ό μΌμΌν€μ§ μμΌλ©΄μ κ° νλ‘μΈμ€κ° μꡬν μ΅λ μμκΉμ§ λͺ¨λ ν λΉν΄ μ€ μ μλ μμ μμμ΄μ΄ μ‘΄μ¬νλ μν.
μμ μμμ΄ (Safe Sequence)β
νλ‘μΈμ€ μ§ν© μ κ΄νμ¬, κ° μΆκ°λ‘ μꡬνλ μμμ΄ 'νμ¬ κ°μ© μμ' + 'λͺ¨λ κ° λ°λ©ν μμ'μΌλ‘ μΆ©μ‘± κ°λ₯νλ€λ©΄ μμ μμμ΄μ΄ μ‘΄μ¬νλ€κ³ νλ€.
μνμ μκ³ λ¦¬μ¦ (Banker's Algorithm)β
λ¨μ μμμ΄ μ¬λ¬ κ°μΌ λ μ¬μ©νλ κΈ°λ²μ΄λ€. μμ μμ²μ΄ λ€μ΄μ€λ©΄ "κ°μμΌλ‘ ν λΉν΄ λ³΄κ³ , κ·Έ νμλ μμ μνμΈμ§(μμ μμμ΄μ΄ μ‘΄μ¬νλμ§)" κ²μ¬νμ¬ μμ νλ€λ©΄ ν λΉ, μλλ©΄ λκΈ°νλ€.
λ°μ΄ν° ꡬ쑰:
Available: κ°μ© μμMax: νλ‘μΈμ€ λ³ μ΅λ μꡬλAllocation: νμ¬ ν λΉλ μμλNeed: μμΌλ‘ νμν μμλ (Max-Allocation)
μκ³ λ¦¬μ¦ λμ λ‘μ§ (μμ¬μ½λ):
1. μμ² κ²μ¬ (Request <= Need)
- νλ‘μΈμ€κ° μμ μ μ΅λ μꡬλμ μ΄κ³Όν΄μ μμ²νλμ§ νμΈ (μ΄κ³Ό μ μ€λ₯)
2. κ°μ© μμ κ²μ¬ (Request <= Available)
- νμ¬ μμ€ν
μ λ¨μ μμμΌλ‘ μ²λ¦¬ κ°λ₯νμ§ νμΈ (λΆμ‘±νλ©΄ λκΈ°)
3. κ°μ ν λΉ (Simulation)
Available = Available - Request
Allocation = Allocation + Request
Need = Need - Request
4. μμ μ± κ²μ¬ (Safety Check)
- λ³κ²½λ μνμμ λͺ¨λ νλ‘μΈμ€λ₯Ό λλΌ μ μλ 'μμ μμμ΄'μ΄ μ‘΄μ¬νλμ§ νμΈ
5. κ²°μ
- μμ νλ€λ©΄(Safe) -> μ€μ ν λΉ μν
- λΆμμ νλ€λ©΄(Unsafe) -> μνλ₯Ό μμ 볡ꡬνκ³ νλ‘μΈμ€ λκΈ°
κ° μ νμ λ¨μ μμμ΄ νλλ°μ μμ κ²½μ°β
μνμ μκ³ λ¦¬μ¦μ 볡μ‘λ()κ° λμΌλ―λ‘, λ¨μ μμμ΄ νλμΈ μμ€ν μμλ μμ ν λΉ κ·Έλνμμ **μ¬μ΄ν΄(Cycle)**μ΄ λ°μνλμ§λ₯Ό νμ§νμ¬ ννΌνλ€.
3-3. κ΅μ°© μνμ νμ§ λ° λ³΅κ΅¬ (Detection & Recovery)β
κ΅μ°© μν λ°©μ§λ ννΌλ λΉμ©μ΄ ν¬κΈ° λλ¬Έμ, μμ€ν μ μ£ΌκΈ°μ μΌλ‘ κ΅μ°© μν λ°μ μ¬λΆλ₯Ό νμ§νκ³ λ°μ μ 볡ꡬνλ λ°©λ²μ μ¬μ©νκΈ°λ νλ€.
볡ꡬ μ λ΅:
- νλ‘μΈμ€ μ’
λ£:
- κ΅μ°© μνμ λΉ μ§ λͺ¨λ νλ‘μΈμ€ μ’ λ£ (λΉμ© νΌ, λ°μ΄ν° μμ€ μν)
- μ¬μ΄ν΄μ΄ μ κ±°λ λκΉμ§ νλμ© νλ‘μΈμ€ μ’ λ£ (μ’ λ£ν λλ§λ€ νμ§ μκ³ λ¦¬μ¦ μ¬μν νμ)
- μμ μ μ :
- ν¬μμ(Victim)λ₯Ό μ ννμ¬ μμμ λΉΌμκ³ λ‘€λ°±μν¨λ€. (κΈ°μ μν λ°μ κ°λ₯μ± κ³ λ € νμ)
4. 볡ν©μ μ κ·Ό (Combined Approach)β
μ΄μ체μ λ ν¨μ¨μ±μ μν΄ λ°©μ§, ννΌ, νμ§ κΈ°λ²μ μμμ νΉμ±μ λ°λΌ 볡ν©μ μΌλ‘ μ¬μ©νλ€.
| μμ μ ν | κΆμ₯ μ²λ¦¬ κΈ°λ² | μ΄μ λ° μμΈ |
|---|---|---|
| λ΄λΆ μμ(PCB λ±) | λ°©μ§(μμ λΆμ¬) | μμ μμ² μμλ₯Ό μ νμ¬ νν λκΈ°λ₯Ό λ°©μ§νλ€. |
| λ©λͺ¨λ¦¬ / CPU | λ°©μ§(μ μ νμ©) | μμ 컨ν μ€νΈλ₯Ό μ μ₯νκ³ λ³΅κ΅¬νκΈ° μ¬μ°λ―λ‘ μ μ μ ν΅ν΄ ν΄κ²°νλ€. |
| μμ μ© μμ(ν μ΄ν, νλ¦°ν° λ±) | ννΌ | μμ μ μ΄ μΉ΄λ λ±μ ν΅ν΄ νμν μμ μ 보λ₯Ό 미리 μ μ μμΌλ―λ‘ ννΌ κΈ°λ²μ΄ μ μ νλ€. |
| κ΅μ²΄ κ°λ₯ 곡κ°(보쑰기μ΅μ₯μΉ) | ννΌ(μ¬μ ν λΉ) | κΈ°μ΅μ₯μΉμ μ΅λ μ¬μ©λμ 미리 μ μ μμΌλ―λ‘ λ―Έλ¦¬ ν λΉνλ λ°©μμ μ΄λ€. |
μ΄ μ리μ¦μ λͺ¨λ ν¬μ€ν μ μ§μ μμ κ³Ό κ΅μ¬λ₯Ό ν΅ν΄ νμ΅ν λ΄μ©μ ν λλ‘
μμΌλ‘ μ 리ν ν, AIλ₯Ό μ΄μ©ν΄ ꡬ쑰 μ 리μ λ§μΆ€λ²λ§ λ€λ¬μ μλ£μ λλ€.