πŸ’»/CS

[운영체제] Synchronization - 1

핒이 2022. 12. 16. 00:39

ν•˜λ‚˜μ˜ address space에 μ„œλ‘œ λ‹€λ₯Έ μŠ€λ ˆλ“œλ“€μ΄ λ™μ‹œμ— μ ‘κ·Όν•˜λ©΄ λ¬Έμ œκ°€ λ°œμƒν•œλ‹€.

 

Race Condition

  • 두 개 이상 ν”„λ‘œμ„ΈμŠ€/μŠ€λ ˆλ“œκ°€ shared resource에 λ™μ‹œμ— concurrentν•˜κ²Œ μ ‘κ·Όν•¨μœΌλ‘œμ¨ κ²°κ³Ό 값이 ν™•μ • λ˜μ§€κ°€ μ•Šκ³ , κ·Έλ•Œ κ·Έλ•Œ μ‹€ν–‰ν•  λ•Œλ§ˆλ‹€ μ‘°κΈˆμ”© λ°”λ€ŒλŠ” ν˜„μƒ
  • 두 개 μ΄μƒμ˜ concurrent ν•œ ν”„λ‘œμ„ΈμŠ€, μŠ€λ ˆλ“œλ“€μ΄ 곡유 μžμ›μ— μ ‘κ·Ό ν•  λ•Œ 동기화 ν•΄κ²° 과정없이 μˆ˜ν–‰ν•˜λŠ” 상황

race condition을 λ°©μ§€ν•˜κΈ° μœ„ν•œ 기법 → synchronization

 

Critical Section

  • μ½”λ“œμ—μ„œ λ‘κ°œ μ΄μƒμ˜ ν”„λ‘œμ„ΈμŠ€κ°€ λ™μ‹œμ— λ¦¬μ†ŒμŠ€λ₯Ό μ—…λ°μ΄νŠΈ ν•  수 μžˆλŠ” ꡬ간.
  • 각 ν”„λ‘œμ„ΈμŠ€μ—μ„œ 곡유 데이터에 μ ‘κ·Όν•˜λŠ” ν”„λ‘œκ·Έλž¨ μ½”λ“œ λΆ€λΆ„.
  • μ—¬λŸ¬ 개의 μŠ€λ ˆλ“œκ°€ μˆ˜ν–‰λ˜λŠ” ν”„λ‘œκ·Έλž¨μ—μ„œ 각 ν”„λ‘œμ„ΈμŠ€/μŠ€λ ˆλ“œλ“€μ΄ κ³΅μœ ν•˜λŠ” 데이터 등을 λ³€κ²½ν•˜λŠ” μ½”λ“œ μ˜μ—­

critical section을 λ³΄ν˜Έν•˜κΈ° μœ„ν•΄ λ°˜λ“œμ‹œ μ§€μΌœμ Έμ•Ό ν•˜λŠ” 3κ°€μ§€

  • Mutual exclusion
    • critical section에 였직 ν•œλ²ˆμ— ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λ§Œ λ“€μ–΄κ°ˆ 수 있음.
    • ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ μˆ˜ν–‰ 쀑인 μƒνƒœμ—μ„œλŠ” λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ μ ˆλŒ€ μˆ˜ν–‰ 쀑인 critical section에 μ ‘κ·Όν•  수 μ—†μŒ.
  • Progress
    • lock에 λŒ€ν•΄μ„œ μ—¬λŸ¬κ°œκ°€ μš”μ²­ν–ˆμ„ λ•Œ, lock을 작고 μžˆλŠ” μ‚¬λžŒμ΄ 아무도 μ—†λŠ” κ²½μš°μ—λŠ” μš”μ²­ν•œ μ—¬λŸ¬ 개 쀑에 ν•˜λ‚˜λŠ” λ°˜λ“œμ‹œ lock을 μž‘μ„ 수 μžˆμ–΄μ•Ό 함. critical section에 λ“€μ–΄κ°ˆ 수 μžˆμ–΄μ•Ό 함.
  • Bounded waiting
    • lock을 작으렀고 ν•˜λŠ”λ° ν•œλͺ…이 계속 lock을 λͺ» μž‘λŠ” 상황 λ°œμƒν•˜λ©΄ μ•ˆλ¨. starvaiton ν˜„μƒ μ˜ˆλ°©ν•  수 μžˆμ–΄μ•Όν•¨.
    • critical section에 λ“€μ–΄κ°€κ³ μž ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λŠ” μ–Έμ  κ°€λŠ” κΌ­ μ§„μž…ν•  수 μžˆμ–΄μ•Ό 함.