ν‹°μŠ€ν† λ¦¬ λ·°

728x90
λ°˜μ‘ν˜•

 ν”„λ‘œμ„ΈμŠ€ 동기화가 적절히 μ„€κ³„λ˜μ§€ μ•Šμ•„, μ‹μ‚¬ν•˜λŠ” μ² ν•™μž 문제처럼 λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€κ°€ 더 이상 μž‘μ—…μ„ 진행할 수 μ—†λŠ” deadlock(κ΅μ°©μƒνƒœ)에 빠질 수 μžˆλ‹€. λ‹¨μˆœν•œ ν”„λ‘œκ·Έλž¨μ΄ μ•„λ‹Œ, μš΄μ˜μ²΄μ œμ—μ„œ κ΅μ°©μƒνƒœκ°€ λ°œμƒν•˜λŠ” 것은 λ‹€μ†Œ 치λͺ…적이닀.

 

κ΅μ°©μƒνƒœ ν•„μš” 쑰건

  • Mutual Exclusion : ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ μžμ›μ„ μ‚¬μš© 쀑이라면, λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λŠ” μ‚¬μš©ν•  수 μ—†λ‹€.

  • Hold and Wait : ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ νŠΉμ • μžμ›μ„ 가진 μƒνƒœμ—μ„œ λŒ€κΈ°μ— 빠진닀.

  • No Preemption : ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ 진행 쀑이라면, λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ 끼어듀 수 μ—†λ‹€.

  • Circular Wait : ν”„λ‘œμ„ΈμŠ€κ°€ μžμ› νšλ“μ„ μœ„ν•΄ μ›ν˜• λ°©ν–₯을 이룬닀. (μ‹μ‚¬ν•˜λŠ” μ² ν•™μž)

 κ΅μ°© μƒνƒœλŠ” μœ„μ˜ 4가지 쑰건이 μžˆμ„ 경우, λ°œμƒν•  κ°€λŠ₯성이 μ»€μ§€κ²Œ λœλ‹€.

(ν•„μš” 쑰건을 λ§Œμ‘±ν•œλ‹€κ³  ν•˜μ—¬ 무쑰건 λ°œμƒν•˜λŠ” 것은 μ•„λ‹ˆλ‹€.) 

 

κ΅μ°©μƒνƒœ 처리

κ΅μ°©μƒνƒœλ₯Ό λ°œμƒμ‹œν‚€μ§€ μ•ŠκΈ° μœ„ν•΄μ„œλŠ” 크게 2가지 λ°©λ²•μœΌλ‘œ ν•΄κ²°ν•  수 μžˆλ‹€. 첫 λ²ˆμ§ΈλŠ” κ΅μ°©μƒνƒœλ₯Ό λ°©μ§€ν•˜λŠ” 방법이며, 두 λ²ˆμ§ΈλŠ” κ΅μ°©μƒνƒœλ₯Ό νšŒν”Όν•˜λŠ” 방법이닀.

 

κ΅μ°©μƒνƒœ 방지

  • Mutual Exclusion : 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄μ„œλŠ” μžμ›μ„ κ³΅μœ κ°€λŠ₯ν•œ μƒνƒœλ‘œ λ§Œλ“€λ©΄ λ˜μ§€λ§Œ, λΆˆκ°€λŠ₯ν•œ κ²½μš°κ°€ μžˆλ‹€.

  • Hold and Wait : μ—¬λŸ¬ 개의 μžμ› νšλ“μ΄ ν•„μš”ν•˜λ‹€λ©΄, ν•„μš”ν•œ μžμ›μ„ λͺ¨λ‘ μ‚¬μš©κ°€λŠ₯ν•  κ²½μš°μ—λ§Œ μžμ›μ„ μš”μ²­ν•  수 μžˆλ„λ‘ ν•˜μ—¬ 방지할 수 μžˆλ‹€. ν•˜μ§€λ§Œ 이 같은 경우 μžμ› μ‚¬μš©λ₯ μ„ λ–¨μ–΄νŠΈλ¦¬λ©° μ΅œμ•…μ˜ 경우 starvation이 될 μˆ˜λ„ μžˆλ‹€.

  • No Preemption : Preemption으둜 λ³€κ²½ν•˜λ©΄ λ˜μ§€λ§Œ, μžμ›μ— 따라 λΆˆκ°€λŠ₯ν•œ κ²½μš°λ„ μžˆλ‹€.

  • Circular Wait : μžμ›μ— 고유 번호λ₯Ό μ§€μ •ν•˜μ—¬ μˆœμ„œμ— 따라 μžμ›μ„ μš”μ²­ν•˜λ©΄ ν•΄κ²° ν•  수 μžˆμ§€λ§Œ, 이 μ—­μ‹œ μžμ› μ‚¬μš©λ₯ μ„ λ–¨μ–΄νŠΈλ¦¬κ²Œ λœλ‹€.

 

κ΅μ°©μƒνƒœ νšŒν”Ό

 κ΅μ°©μƒνƒœ νšŒν”Όμ˜ 경우, μžμ› ν• λ‹Ή μƒνƒœμ— 따라 Safe Allocation, Unsafe Allocation으둜 κ΅¬λΆ„ν•œλ‹€. 예λ₯Ό λ“€μ–΄ μžμ› ν• λ‹Ή μƒνƒœμ— 따라 κ΅μ°©μƒνƒœλ₯Ό λ°œμƒμ‹œν‚€μ§€ μ•ŠμœΌλ©΄ Safe Allocation이며, 이와 λ°˜λŒ€μΌ 경우 Unsafe Allocation이닀. μ΄λŠ” Banker Algorithm을 톡해 κ²€μΆœν•˜λ©° 이 μ—­μ‹œ κ΅μ°©μƒνƒœ λ°œμƒ μ—¬λΆ€λ₯Ό νŒλ‹¨ν•˜μ—¬ μžμ›μ„ ν• λ‹Ήν•˜κ²Œ λ˜λ―€λ‘œ μžμ› ν™œμš©λ₯ μ„ λ–¨μ–΄νŠΈλ¦°λ‹€λŠ” 단점을 가지고 μžˆλ‹€.

 

κ΅μ°©μƒνƒœ κ²€μΆœ 및 볡ꡬ

 μ•žμ˜ 방법듀은 사전에 κ΅μ°©μƒνƒœκ°€ μΌμ–΄λ‚˜μ§€ μ•Šλ„λ‘ λ°©μ§€ν•˜κ±°λ‚˜, νšŒν”Όν•˜λŠ” λ°©μ‹μ΄μ—ˆλ‹€. 이와 달리 κ²€μΆœ 및 볡ꡬ 방법은 κ΅μ°©μƒνƒœλ₯Ό ν—ˆμš©ν•˜κ³  κ΅μ°©μƒνƒœλ₯Ό μ—¬λΆ€λ₯Ό νŒλ‹¨ν•˜μ—¬ 볡ꡬ가 κ°€λŠ₯ν•˜λ„λ‘ ν•˜λŠ” 방법이닀. 

 κ΅μ°©μƒνƒœλ₯Ό 볡ꡬ ν•˜κΈ° μœ„ν•΄μ„œλŠ” κ΅μ°©μƒνƒœ μ΄μ „μœΌλ‘œ 볡ꡬ ν•˜κ±°λ‚˜, κ΅μ°©μƒνƒœλ₯Ό λ°œμƒμ‹œν‚€λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°•μ œ μ’…λ£Œν•˜μ—¬ μžμ›μ„ 선점할 수 μžˆλ„λ‘ ν•˜λŠ” 방법이 μžˆλ‹€.

 κ΅μ°©μƒνƒœ κ²€μΆœ 및 볡ꡬλ₯Ό μœ„ν•΄ κ²€μΆœ μ£ΌκΈ°λ₯Ό μ„€μ •ν•˜λŠ” κ³Όμ •μ—μ„œ λ”œλ ˆλ§ˆμ— λΉ μ§€κ²Œ λœλ‹€. 첫 번째둜 κ²€μΆœ μ£ΌκΈ°λ₯Ό λΉˆλ²ˆν•˜κ²Œ μ§€μ •ν•œλ‹€λ©΄ λΉ λ₯Έ κ²€μΆœ 및 볡ꡬ가 κ°€λŠ₯ν•˜κ² μ§€λ§Œ ν•΄λ‹Ή 과정은 μ˜€λ²„ν—€λ“œκ°€ λ˜μ–΄ λ‹€λ₯Έ μž‘μ—…μ— 영ν–₯을 미치게 될 것이닀. 이와 λ°˜λŒ€μ˜ 경우, μ£ΌκΈ°κ°€ κΈΈμ–΄μ§€κ²Œ 되면 κ²€μΆœ 및 볡ꡬ가 μ§€μ—°λ˜μ–΄ μ •μƒμ μœΌλ‘œ λ³΅κ΅¬λ˜μ§€ λͺ»ν•˜λŠ” 상황이 λ°œμƒν•  수 μžˆλ‹€.

 

κ΅μ°©μƒνƒœ λ¬΄μ‹œ

 μ‹€μ œ μš΄μ˜μ²΄μ œμ—μ„œ κ΅μ°©μƒνƒœλŠ” λ“œλ¬Όλ©°, κ΅μ°©μƒνƒœλ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ 과정듀이 μ˜€λ²„ν—€λ“œκ°€ λ˜λŠ” ν™˜κ²½μ—μ„œλŠ” κ΅μ°©μƒνƒœμ— λŒ€ν•œ 처리λ₯Ό ν•˜μ§€ μ•Šκ³  λ¬΄μ‹œν•˜λŠ” κ²½μš°λ„ μžˆλ‹€.

 

728x90
λ°˜μ‘ν˜•
λŒ“κΈ€
κΈ€ 보관함
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€