κ΅μ°© μνλ λ€μ€ νλ‘μΈμ€λ μ€λ λ νκ²½μμ λ°μν μ μλ μ¬κ°ν λ¬Έμ μ€ νλμ λλ€. μ΄λ₯Ό μ€λͺ νκΈ° μν΄ μμ¬νλ μ² νμ λ¬Έμ λ₯Ό μ΄ν΄λ³΄λ©΄ κ΅μ°© μνμ λ³Έμ§μ λ μ μ΄ν΄ν μ μμ΅λλ€.
μμ¬νλ μ² νμ λ¬Έμ (The Dining Philosophers Problem)μ κ΅μ°© μν
μΈκ°μ μ² νμ 5λͺ μ΄ νμμ μμ μ² νμ μΈ λ¬Έμ λ₯Ό κ³ λ―Όνκ³ μμ΅λλ€. κ·Έλ€μ ν μ΄λΈμ λλ¬μΈκ³ μμΌλ©°, κ° μ² νμμ μμλ μ κ°λ½μ΄ μμ΅λλ€. μ² νμλ€μ μμ¬λ₯Ό μν΄ μ κ°λ½μ μ¬μ©ν΄μΌ νμ§λ§, μ κ°λ½μ λ κ°λ₯Ό λμμ μ§μ μ μκΈ° λλ¬Έμ μμ μλ μ² νμμ 곡μ ν΄μΌ ν©λλ€.
μ² νμλ€μ λ€μκ³Ό κ°μ νλμ ν©λλ€:
λ°°κ³ ν λ: μμͺ½ μ κ°λ½μ λμμ μ§μΌλ €κ³ μλν©λλ€.
μ κ°λ½μ μ»μμ λ: μμ¬λ₯Ό ν©λλ€.
μμ¬λ₯Ό λ§μ³€μ λ: μ κ°λ½μ λ΄λ €λκ³ μ² νμ μΈ λ¬Έμ μ μ§μ€ν©λλ€.
μ΄μμ μΌλ‘λ λͺ¨λ μ² νμκ° μμ¬λ₯Ό μνν ν μ μμ΄μΌ νμ§λ§, μ΄λ¬ν νλ λ°©μμΌλ‘λ κ΅μ°© μνκ° λ°μν μ μμ΅λλ€. λͺ¨λ μ² νμκ° λμμ μμͺ½ μ κ°λ½μ μ§μΌλ €κ³ ν λ, μμ(μ κ°λ½)μ 곡μ νλλ° μμ΄ λΆμΌμΉκ° λ°μνμ¬ λͺ¨λ μ² νμκ° κΈ°λ€λ¦¬λ©° μ무κ²λ νμ§ λͺ»νλ μν©μ΄ λ°μν μ μμ΅λλ€.
μ΄ λ¬Έμ λ μ»΄ν¨ν° μμ€ν
μμ λ°μνλ κ΅μ°© μνμ μ μ¬ν μν©μ μ€λͺ
νλλ° μ¬μ©λ©λλ€. νλ‘μΈμ€λ μ€λ λκ° μλ‘κ° νμν μμμ μμ ν μ±λ‘ μλ‘λ₯Ό κΈ°λ€λ¦¬λ μν©μ΄ λ°μνμ¬ λ μ΄μ μ§νλμ§ λͺ»νλ κ²μ 'κ΅μ°© μν'λΌκ³ ν©λλ€.
κ΅μ°© μνκ° λ°μνλ 4κ°μ§ 쑰건
κ΅μ°© μνκ° λ°μνκΈ° μν΄μλ λ€μ λ€ κ°μ§ 쑰건, μ¦ "κ΅μ°© μνμ νμ쑰건"μ΄ λμμ μΆ©μ‘±λμ΄μΌ ν©λλ€. μ΄λ¬ν 쑰건λ€μ λ€μκ³Ό κ°μ΅λλ€:
- μνΈ λ°°μ (Mutual Exclusion): μ΅μν νλμ μμμ΄ λ°°νμ μΌλ‘ μ¬μ©λμ΄μΌ ν©λλ€. μ¦, ν λ²μ μ¬λ¬ νλ‘μΈμ€λ μ€λ λκ° ν΄λΉ μμμ μ κ·Όνμ§ λͺ»νλλ‘ λ§μμΌ ν©λλ€.
- 보μ λ° λκΈ° (Hold and Wait): νλ‘μΈμ€λ μ€λ λκ° μ μ΄λ νλμ μμμ 보μ νκ³ μμΌλ©΄μ λ€λ₯Έ μμμ κΈ°λ€λ¦¬κ³ μμ΄μΌ ν©λλ€. μ¦, μ΄λ€ νλ‘μΈμ€κ° μμμ μ»κΈ° μν΄ λκΈ°νλ©΄μ λ€λ₯Έ μμμ μ΄λ―Έ 보μ νκ³ μμ΄μΌ ν©λλ€.
- λΉμ μ (No Preemption): λ€λ₯Έ νλ‘μΈμ€λ μ€λ λκ° μ΄λ―Έ 보μ ν μμμ κ°μ λ‘ λΉΌμμ μ μμ΄μΌ ν©λλ€. μ¦, μμμ ν΄λΉ νλ‘μΈμ€λ μ€λ λκ° μ€μ€λ‘ λ°λ©νκΈ° μ κΉμ§ κ·Έ μ¬μ©μ΄ 보μ₯λμ΄μΌ ν©λλ€.
- μν λκΈ° (Circular Wait): νλ‘μΈμ€λ μ€λ λ κ°μ μμμ λκΈ°νλ μν κ΅¬μ‘°κ° νμ±λμ΄μΌ ν©λλ€. μλ₯Ό λ€μ΄, νλ‘μΈμ€ Aκ° νλ‘μΈμ€ Bκ° λ³΄μ ν μμμ, Bκ° Cκ° λ³΄μ ν μμμ, Cκ° Aκ° λ³΄μ ν μμμ λκΈ°νκ³ μμ΄μΌ ν©λλ€.
μ΄λ¬ν λ€ κ°μ§ μ‘°κ±΄μ΄ λμμ μΆ©μ‘±λ λ κ΅μ°© μνκ° λ°μν μ μμ΅λλ€. κ΅μ°© μνλ₯Ό λ°©μ§νκΈ° μν΄μλ μ΄λ¬ν 쑰건 μ€ νλ μ΄μμ μ κ±°ν΄μΌ ν©λλ€. μλ₯Ό λ€μ΄, κ΅μ°© μνλ₯Ό λ°©μ§νλ €λ©΄ 보μ λ° λκΈ°, λΉμ μ , μν λκΈ° μ€ νλμ 쑰건μ κΉ¨λ¨λ €μΌ ν©λλ€. μ΄λ₯Ό μν΄ λ€μν λ°λλ½ λ°©μ§ μκ³ λ¦¬μ¦μ΄λ κ΅μ°© μν ν΄κ²° μ λ΅λ€μ΄ μ‘΄μ¬ν©λλ€.
κ΅μ°© μν ν΄κ²° λ°©λ²
κ΅μ°© μνλ₯Ό ν΄κ²°νκΈ° μν΄μλ λ€μν λ°©λ²κ³Ό μ λ΅λ€μ΄ μμ΅λλ€. μ΄λ¬ν λ°©λ²λ€μ κ΅μ°© μνμ λ°μ 쑰건 μ€ νλ μ΄μμ μ κ±°νκ±°λ κ΅μ°© μνκ° λ°μνμ λ ν¨κ³Όμ μΌλ‘ ν΄κ²°ν μ μλ λ°©λ²λ€μ
λλ€. λͺ κ°μ§ μΌλ°μ μΈ ν΄κ²° μ λ΅μ λ€μκ³Ό κ°μ΅λλ€:
1) μλ°©(Prevention): κ΅μ°© μνμ λ°μ 쑰건 μ€ νλλ₯Ό 미리 λ°©μ§νλ λ°©λ²μ
λλ€.
- μνΈ λ°°μ μλ°©: μμ 곡μ μ μνΈ λ°°μ λ₯Ό μ μ°νκ² μ²λ¦¬νλλ‘ μ€κ³ν©λλ€.
- 보μ λ° λκΈ° μλ°©: νλ‘μΈμ€κ° λͺ¨λ νμν μμμ ν λ²μ μμ²νλλ‘ κ°μ ν©λλ€.
- λΉμ μ μλ°©: μμ ν λΉ μ€μ λ€λ₯Έ νλ‘μΈμ€μκ² μμμ λΊμ μ μλλ‘ ν©λλ€.
- μν λκΈ° μλ°©: μμμ κ³ μ ν λ²νΈλ₯Ό λΆμ¬νκ³ , μν λκΈ°λ₯Ό λ°©μ§νλλ‘ μμλ₯Ό μ ν©λλ€.
2) κ°μ§ λ° ν볡(Detection and Recovery): κ΅μ°© μνκ° λ°μνμ λ μ΄λ₯Ό κ°μ§νκ³ , ν볡νλ λ°©λ²μ λλ€.
- κ΅μ°© μν κ°μ§: μ£ΌκΈ°μ μΌλ‘ μμ€ν μνλ₯Ό λͺ¨λν°λ§νμ¬ κ΅μ°© μνλ₯Ό κ°μ§ν©λλ€.
- κ΅μ°© μν ν볡: κ°μ§λ κ΅μ°© μνμ λν ν볡 μ λ΅μ λμμμΌ κ΅μ°© μνλ₯Ό ν΄κ²°ν©λλ€. μ΄λ νλ‘μΈμ€λ₯Ό μ€μ§νκ±°λ, μμμ νμνκ±°λ, νλ‘μΈμ€λ₯Ό μ’ λ£νλ λ±μ λ°©λ²μ ν¬ν¨ν μ μμ΅λλ€.
3) λ°λλ½ μλ°© μκ³ λ¦¬μ¦ μ¬μ©: λ°λλ½ μλ°© μκ³ λ¦¬μ¦μ μ¬μ©νμ¬ κ΅μ°© μνλ₯Ό λ°©μ§ν©λλ€. μλ₯Ό λ€μ΄, μνμ μκ³ λ¦¬μ¦(Banker's Algorithm)μ΄λ Wait-Die, Wound-Wait λ±μ νΈλμμ κ΄λ¦¬ κΈ°λ²μ μ¬μ©ν μ μμ΅λλ€.
4) μμ ν λΉ κ·Έλν μ΄μ©: μμ ν λΉ κ·Έλνλ₯Ό ν΅ν΄ κ΅μ°© μνλ₯Ό κ²μΆνκ³ , κ²μΆλ κ²½μ°μ λν ννΌλ ν볡 μ λ΅μ μνν©λλ€.
5) νλ‘μΈμ€ μ’ λ£ λ° μμ νμ: κ΅μ°© μνκ° κ°μ§λλ©΄ ν΄λΉ μνμμ μμΈμ΄ λλ νλ‘μΈμ€λ₯Ό μ’ λ£νκ³ ν΄λΉ νλ‘μΈμ€κ° 보μ ν μμμ νμνμ¬ κ΅μ°© μνλ₯Ό ν΄κ²°ν©λλ€.
6) κ΅μ°© μν ννΌ(Deadlock Avoidance)λ κ΅μ°© μνκ° λ°μνμ§ μλλ‘ μμ€ν μ΄ μμμ ν λΉνλ μ λ΅μ λλ€. μ΄ λ°©λ²μ μμμ μμ νκ² ν λΉνμ¬ μμ€ν μ΄ νμ μμ μνλ‘ μ μ§λλλ‘ νλ κ²μ΄ λͺ©νμ λλ€.
ex) μνμ μκ³ λ¦¬μ¦(Banker's Algorithm
- κ°μ© μμ(Available Resources): μμ€ν μ΄ νμ¬ μ¬μ© κ°λ₯ν μμμ μμ λνλ λλ€.
- μ΅λ μμ²(Maximum Request): κ° νλ‘μΈμ€λ νμλ‘ νλ μμμ μ΅λλμ 미리 μ μΈν©λλ€.
- ν λΉλ μμ(Allocated Resources): κ° νλ‘μΈμ€λ νμ¬κΉμ§ ν λΉλ°μ μμμ μμ λνλ λλ€.
- Need Matrix: κ° νλ‘μΈμ€κ° λ νμλ‘ νλ μμμ μμ λνλ΄λ νλ ¬μ λλ€.
μνμ μκ³ λ¦¬μ¦μ λ€μ κ·μΉμ λ°λ¦ λλ€:
- νλ‘μΈμ€κ° μμμ μμ²ν λ, μμ€ν μ ν΄λΉ μμμ ν λΉνμ λ μμ μνλ₯Ό μ μ§νλμ§ λ―Έλ¦¬ νμΈν©λλ€.
- μμ μνλ₯Ό μ μ§ν μ μλ€λ©΄ μμμ ν λΉνκ³ , κ·Έλ μ§ μμΌλ©΄ νλ‘μΈμ€λ λκΈ° μνλ‘ μ νλ©λλ€.
- μμ λ°λ©μ΄ μμ λλ§λ€ μμ€ν μ νμ¬μ μμ ν λΉ μνμ λν΄ λ€μ μμ μνμΈμ§λ₯Ό κ²μ¬ν©λλ€.
κ΅μ°© μνμ ν΄κ²°μ νΉμ μν©κ³Ό μμ€ν μꡬμ λ°λΌ λ€μν λ°©λ²μ μ‘°ν©νμ¬ μ¬μ©ν΄μΌ ν©λλ€. νΉν μλ°©μ΄λ ν볡과 κ°μ λ°©λ²λ€μ μμ€ν μ νΉμ±μ λ°λΌ μ μ ν λ°©λ²μ μ ννλ κ²μ΄ μ€μν©λλ€.
Dining Philosophers Problem
A classic synchronization problem in computer science where philosophers sitting around a dining table must use shared chopsticks to eat, illustrating challenges in resource sharing and deadlock avoidance.
Deadlock Definition
Deadlock is a state in a computer system where processes or threads are unable to proceed due to circular waiting for resources, stemming from conditions like mutual exclusion, hold and wait, no preemption, and circular wait. It can impact system performance and requires careful design to prevent or resolve.
'Computer Science > Operating System' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
12 Paging (νμ΄μ§) (1) | 2024.01.07 |
---|---|
11 Swapping (Feat. λ©λͺ¨λ¦¬ ν λΉ) (1) | 2024.01.07 |
9 Process Synchronization (νλ‘μΈμ€ λκΈ°ν) (0) | 2023.12.31 |
8 CPU Scheduling (0) | 2023.12.30 |
7 Thread in Software (0) | 2023.12.28 |
λκΈ