λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Computer Science/Operating System

10 Deadlock (ꡐ착 μƒνƒœ)

by Dowon Kang 2024. 1. 6.

ꡐ착 μƒνƒœλŠ” λ‹€μ€‘ ν”„λ‘œμ„ΈμŠ€λ‚˜ μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œ λ°œμƒν•  μˆ˜ μžˆλŠ” μ‹¬κ°ν•œ λ¬Έμ œ μ€‘ ν•˜λ‚˜μž…λ‹ˆλ‹€. μ΄λ₯Ό μ„€λͺ…ν•˜κΈ° μœ„ν•΄ μ‹μ‚¬ν•˜λŠ” μ² ν•™μž λ¬Έμ œλ₯Ό μ‚΄νŽ΄λ³΄λ©΄ κ΅μ°© μƒνƒœμ˜ λ³Έμ§ˆμ„ λ” μž˜ μ΄ν•΄ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

 

 μ‹μ‚¬ν•˜λŠ” μ² ν•™μž 문제(The Dining Philosophers Problem)와 ꡐ착 μƒνƒœ 

μΈκ°„μ˜ μ² ν•™μž 5λͺ…이 νƒμžμ— μ•‰μ•„ μ² ν•™μ μΈ λ¬Έμ œλ₯Ό κ³ λ―Όν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ·Έλ“€μ€ ν…Œμ΄λΈ”을 λ‘˜λŸ¬μ‹Έκ³  μžˆμœΌλ©°, κ° μ² ν•™μžμ˜ μ•žμ—λŠ” μ “가락이 μžˆμŠ΅λ‹ˆλ‹€. μ² ν•™μžλ“€μ€ μ‹μ‚¬λ₯Ό μœ„ν•΄ μ “가락을 μ‚¬μš©ν•΄μ•Ό ν•˜μ§€λ§Œ, μ “가락은 λ‘ κ°œλ₯Ό λ™μ‹œμ— μ§‘을 μˆ˜ μ—†κΈ° λ•Œλ¬Έμ— μ˜†μ— μžˆλŠ” μ² ν•™μžμ™€ κ³΅μœ ν•΄μ•Ό ν•©λ‹ˆλ‹€.

 


μ² ν•™μžλ“€μ€ λ‹€μŒκ³Ό 같은 행동을 ν•©λ‹ˆλ‹€:
λ°°κ³ ν”Œ λ•Œ: μ–‘μͺ½ μ “가락을 λ™μ‹œμ— μ§‘μœΌλ €κ³  μ‹œλ„ν•©λ‹ˆλ‹€.
젓가락을 μ–»μ—ˆμ„ λ•Œ: μ‹μ‚¬λ₯Ό ν•©λ‹ˆλ‹€.
식사λ₯Ό λ§ˆμ³€μ„ λ•Œ: μ “가락을 λ‚΄λ €λ†“κ³  μ² ν•™μ μΈ λ¬Έμ œμ— μ§‘μ€‘ν•©λ‹ˆλ‹€.


μ΄μƒμ μœΌλ‘œλŠ” λͺ¨λ“  μ² ν•™μžκ°€ μ‹μ‚¬λ₯Ό μ›ν™œνžˆ ν•  μˆ˜ μžˆμ–΄μ•Ό ν•˜μ§€λ§Œ, μ΄λŸ¬ν•œ ν–‰λ™ λ°©μ‹μœΌλ‘œλŠ” κ΅μ°© μƒνƒœκ°€ λ°œμƒν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“  μ² ν•™μžκ°€ λ™μ‹œμ— μ–‘μͺ½ μ “가락을 μ§‘μœΌλ €κ³  ν•  λ•Œ, μžμ›(젓가락)을 κ³΅μœ ν•˜λŠ”데 μžˆμ–΄ λΆˆμΌμΉ˜κ°€ λ°œμƒν•˜μ—¬ λͺ¨λ“  μ² ν•™μžκ°€ κΈ°λ‹€λ¦¬λ©° μ•„무것도 ν•˜μ§€ λͺ»ν•˜λŠ” μƒν™©μ΄ λ°œμƒν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

 


이 λ¬Έμ œλŠ” μ»΄ν“¨ν„° μ‹œμŠ€ν…œμ—μ„œ λ°œμƒν•˜λŠ” κ΅μ°© μƒνƒœμ™€ μœ μ‚¬ν•œ μƒν™©μ„ μ„€λͺ…ν•˜λŠ”λ° μ‚¬μš©λ©λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€λ‚˜ μŠ€λ ˆλ“œκ°€ μ„œλ‘œκ°€ ν•„μš”ν•œ μžμ›μ„ μ†Œμœ ν•œ μ±„λ‘œ μ„œλ‘œλ₯Ό κΈ°λ‹€λ¦¬λŠ” μƒν™©μ΄ λ°œμƒν•˜μ—¬ λ” μ΄μƒ μ§„ν–‰λ˜μ§€ λͺ»ν•˜λŠ” κ²ƒμ„ 'ꡐ착 μƒνƒœ'라고 ν•©λ‹ˆλ‹€.

 

 


ꡐ착 μƒνƒœκ°€ λ°œμƒν•˜λŠ” 4가지 쑰건 

ꡐ착 μƒνƒœκ°€ λ°œμƒν•˜κΈ° μœ„ν•΄μ„œλŠ” λ‹€μŒ λ„€ κ°€μ§€ μ‘°κ±΄, μ¦‰ "ꡐ착 μƒνƒœμ˜ ν•„μš”μ‘°κ±΄"이 λ™μ‹œμ— μΆ©μ‘±λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ‘°κ±΄λ“€μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  1. μƒν˜Έ λ°°μ œ (Mutual Exclusion): μ΅œμ†Œν•œ ν•˜λ‚˜μ˜ μžμ›μ΄ λ°°νƒ€μ μœΌλ‘œ μ‚¬μš©λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. μ¦‰, ν•œ λ²ˆμ— μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ‚˜ μŠ€λ ˆλ“œκ°€ ν•΄λ‹Ή μžμ›μ— μ ‘κ·Όν•˜μ§€ λͺ»ν•˜λ„둝 λ§‰μ•„μ•Ό ν•©λ‹ˆλ‹€.
  2. 보유 및 λŒ€κΈ° (Hold and Wait): ν”„λ‘œμ„ΈμŠ€λ‚˜ μŠ€λ ˆλ“œκ°€ 적어도 ν•˜λ‚˜μ˜ μžμ›μ„ λ³΄μœ ν•˜κ³  μžˆμœΌλ©΄μ„œ λ‹€λ₯Έ μžμ›μ„ 기닀리고 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. 즉, μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€κ°€ μžμ›μ„ μ–»κΈ° μœ„ν•΄ λŒ€κΈ°ν•˜λ©΄μ„œ λ‹€λ₯Έ μžμ›μ„ 이미 λ³΄μœ ν•˜κ³  μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  3. 비선점 (No Preemption): λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ‚˜ μŠ€λ ˆλ“œκ°€ 이미 λ³΄μœ ν•œ μžμ›μ„ κ°•μ œλ‘œ 빼앗을 수 μ—†μ–΄μ•Ό ν•©λ‹ˆλ‹€. 즉, μžμ›μ€ ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€λ‚˜ μŠ€λ ˆλ“œκ°€ 슀슀둜 λ°˜λ‚©ν•˜κΈ° μ „κΉŒμ§€ κ·Έ μ‚¬μš©μ΄ 보μž₯λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
  4. μˆœν™˜ λŒ€κΈ° (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: 각 ν”„λ‘œμ„ΈμŠ€κ°€ 더 ν•„μš”λ‘œ ν•˜λŠ” μžμ›μ˜ 양을 λ‚˜νƒ€λ‚΄λŠ” ν–‰λ ¬μž…λ‹ˆλ‹€.

은행원 μ•Œκ³ λ¦¬μ¦˜μ€ λ‹€μŒ κ·œμΉ™μ„ λ”°λ¦…λ‹ˆλ‹€:

  1. ν”„λ‘œμ„ΈμŠ€κ°€ μžμ›μ„ μš”μ²­ν•  λ•Œ, μ‹œμŠ€ν…œμ€ ν•΄λ‹Ή μžμ›μ„ ν• λ‹Ήν–ˆμ„ λ•Œ μ•ˆμ „ μƒνƒœλ₯Ό μœ μ§€ν•˜λŠ”지 λ―Έλ¦¬ ν™•μΈν•©λ‹ˆλ‹€.
  2. μ•ˆμ „ μƒνƒœλ₯Ό μœ μ§€ν•  μˆ˜ μžˆλ‹€λ©΄ μžμ›μ„ ν• λ‹Ήν•˜κ³ , κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ ν”„λ‘œμ„ΈμŠ€λŠ” λŒ€κΈ° μƒνƒœλ‘œ μ „ν™˜λ©λ‹ˆλ‹€.
  3. μžμ› λ°˜λ‚©μ΄ μžˆμ„ λ•Œλ§ˆλ‹€ μ‹œμŠ€ν…œμ€ ν˜„μž¬μ˜ μžμ› ν• λ‹Ή μƒνƒœμ— λŒ€ν•΄ λ‹€μ‹œ μ•ˆμ „ μƒνƒœμΈμ§€λ₯Ό κ²€μ‚¬ν•©λ‹ˆλ‹€.

 

ꡐ착 μƒνƒœμ˜ ν•΄κ²°μ€ νŠΉμ • μƒν™©κ³Ό μ‹œμŠ€ν…œ μš”ꡬ에 λ”°λΌ λ‹€μ–‘ν•œ λ°©λ²•μ„ μ‘°ν•©ν•˜μ—¬ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. νŠΉνžˆ μ˜ˆλ°©μ΄λ‚˜ νšŒλ³΅κ³Ό κ°™μ€ λ°©λ²•λ“€μ€ μ‹œμŠ€ν…œμ˜ νŠΉμ„±μ— λ”°λΌ μ μ ˆν•œ λ°©λ²•μ„ μ„ νƒν•˜λŠ” κ²ƒμ΄ μ€‘μš”ν•©λ‹ˆλ‹€.

 

 


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

λŒ“κΈ€