λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
CS/운영체제

17. μƒν˜Έ 배제 (Mutual Exclusion)

by 🐳 Laboon 2024. 6. 15.
μƒν˜Έλ°°μ œλž€?

 

μ•žμ„œ μŠ€λ ˆλ“œ λ™κΈ°ν™”μ—μ„œ μ–ΈκΈ‰λœ μž„κ³„κ΅¬μ—­κ³Ό μƒν˜Έλ°°μ œλŠ” μŠ€λ ˆλ“œ 동기화λ₯Ό μœ„ν•œ μ€‘μš”ν•œ κ°œλ…μ΄λ‹€.

λ¨Όμ €, μž„κ³„ ꡬ역(Critical Section)은 각 μŠ€λ ˆλ“œλ“€μ΄ λ™μ‹œμ— μ ‘κ·Όν•  수 μžˆλŠ” 곡유 데이터λ₯Ό κ΄€λ¦¬ν•˜λŠ” ꡬ역이닀.

μƒν˜Έ λ°°μ œλŠ” λ¨Όμ € μž„κ³„ ꡬ역에 μ ‘κ·Όν•œ μŠ€λ ˆλ“œκ°€ μž„κ³„ ꡬ역을 λ…μ μ μœΌλ‘œ μ‚¬μš©ν•˜μ—¬ μŠ€λ ˆλ“œ κ°„μ˜ μˆœμ„œλ₯Ό 보μž₯ν•  수 μžˆλŠ” κ°œλ…μ΄λ‹€. μž„κ³„ ꡬ역과 μƒν˜Έ λ°°μ œλ„ 쑰금 더 μ‰½κ²Œ μƒκ°ν•΄λ³΄μž.

 

μŠ€λ ˆλ“œ AλŠ” νšŸμ§‘, μŠ€λ ˆλ“œ BλŠ” λ§€μš΄νƒ• 집이닀. μŠ€λ ˆλ“œ A와 BλŠ” μˆ˜μ‚°λ„λ§€μ—μ„œ μ‹±μ‹±ν•œ 생선을 κ°€μ Έμ™€μ•Όν•œλ‹€. μŠ€λ ˆλ“œ A와 BλŠ” μ„œλ‘œ κ²½λ§€κ°€λ₯Ό λΆ€λ₯΄κ³  μžˆλŠ”λ° 도맀상이 "λ§ˆμ§€λ§‰μœΌλ‘œ ν˜„μž¬ κ²½λ§€κ°€ 보닀 높은 가격을 λ¨Όμ € μ œμ‹œν•œ μ‚¬λžŒμ—κ²Œ νŒλ§€ν•˜κ² μŠ΅λ‹ˆλ‹€."라고 ν–ˆλ‹€. μŠ€λ ˆλ“œ A와 BλŠ” λ™μ‹œμ— "100만 원!"을 μ™Έμ³€λ‹€. 이 λ•Œ, 도맀상은 λˆ„κ°€ λ¨Όμ € μ œμ‹œ ν–ˆλŠ”μ§€ λͺ°λΌμ„œ λ‚œκ°ν•œ 상황에 λΉ μ§„λ‹€.

 

λ§Œμ•½, μ•žμ— λΆ€μ €κ°€ μžˆμ—ˆκ³  λ¨Όμ € λΆ€μ €λ₯Ό λˆ„λ₯Έ μ‚¬λžŒμ΄ μžˆμ„ 경우 λ‹€λ₯Έ λΆ€μ €κ°€ λ™μž‘ν•˜μ§€ μ•ŠλŠ” μ‹œμŠ€ν…œμ΄ μžˆλ‹€λ©΄ μˆœμ„œλ₯Ό μ •ν™•νžˆ μ•Œ 수 μžˆλ‹€. μ—¬κΈ°μ„œ μˆ˜μ‚°λ„λ§€κ°€ μž„κ³„ ꡬ역, λΆ€μ €κ°€ μƒν˜Έ 배제둜 λ³Ό 수 μžˆλ‹€.

 

μƒν˜Έλ°°μ œ
  • 일반 μ½”λ“œ(non-critical code) : 각 μŠ€λ ˆλ“œμ—μ„œ μ²˜λ¦¬ν•˜λŠ” μ½”λ“œμ΄λ‹€.
  • μž„κ³„κ΅¬μ—­ μ§„μž… μ½”λ“œ(entry code) : μž„κ³„ ꡬ역에 λ‹€λ₯Έ μŠ€λ ˆλ“œκ°€ μžˆλŠ”μ§€ ν™•μΈν•œλ‹€. λ‹€λ₯Έ μŠ€λ ˆλ“œκ°€ μ—†λ‹€λ©΄ ν˜„μž¬ μŠ€λ ˆλ“œκ°€ μž„κ³„κ΅¬μ—­μ— μ§„μž…ν•˜κ²Œ 되고 λ‹€λ₯Έ μŠ€λ ˆλ“œκ°€ μ‘΄μž¬ν•œλ‹€λ©΄ λŒ€κΈ°ν•œλ‹€. μƒν˜Έλ°°μ œμ˜ μ‹œμž‘μ΄λ‹€.
  • μž„κ³„κ΅¬μ—­ μ½”λ“œ(critical code) : ν•œ μŠ€λ ˆλ“œκ°€ μˆœμ„œλ₯Ό 보μž₯λ°›κ³  곡유 μžμ›μ— μ‹€μ œμ μœΌλ‘œ μ ‘κ·Όν•˜λŠ” μ½”λ“œμ΄λ‹€.
  • μž„κ³„κ΅¬μ—­ μ§„μΆœ μ½”λ“œ(exit code) : μž„κ³„κ΅¬μ—­μ—μ„œμ˜ μ²˜λ¦¬κ°€ 끝났닀면 λ‹€λ₯Έ μŠ€λ ˆλ“œκ°€ μ§„μž…ν•  수 μžˆλ„λ‘ μƒν˜Έλ°°μ œλ₯Ό μ’…λ£Œν•˜λŠ” μ½”λ“œμ΄λ‹€.
μƒν˜Έλ°°μ œλ₯Ό κ΅¬ν˜„ν•˜λŠ” 방법

 

SW적, HW적으둜 κ΅¬ν˜„ν•˜λŠ” 방법이 μžˆλŠ”λ° μ˜€λŠ˜λ‚ μ—λŠ” 주둜 HW μ†”λ£¨μ…˜μ„ μ‚¬μš©ν•œλ‹€κ³  ν•œλ‹€.

μΈν„°λŸ½νŠΈ μ„œλΉ„μŠ€ κΈˆμ§€ 방법, μ›μž 기계 λͺ…λ Ή(atomic instruction) μ‚¬μš© 방법