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

16. μŠ€λ ˆλ“œ 동기화 (Thread Synchronization)

by 🐳 Laboon 2024. 6. 15.
μŠ€λ ˆλ“œ λ™κΈ°ν™”λž€ 뭘까?

 

μŠ€λ ˆλ“œ λ™κΈ°ν™”λž€ λ‹€μˆ˜μ˜ μŠ€λ ˆλ“œκ°€ ν•˜λ‚˜μ˜ μžμ›μ— λ™μ‹œμ— μ ‘κ·Όν•  λ•Œ λ°œμƒν•  수 μžˆλŠ” λ¬Έμ œμ μ„ ν•΄κ²°ν•  수 μžˆλŠ” 방법이닀.

λ‹€μˆ˜μ˜ μŠ€λ ˆλ“œκ°€ ν•˜λ‚˜μ˜ μžμ›μ— λ™μ‹œμ— μ ‘κ·Όν•œλ‹€λŠ”κ²Œ 무슨 말일까?

μŠ€λ ˆλ“œ 동기화 μ΄ν•΄ν•˜κΈ° 

 

λ¨Όμ €, μ»΄ν“¨ν„°μ˜ ꡬ쑰λ₯Ό 잘 μ•Œκ³  μžˆμ–΄μ•Όν•œλ‹€.

λ…Όλ¦¬νšŒλ‘œ, 컴퓨터 ꡬ쑰, 운영체제 μ•ž 단원을 μ—΄μ‹¬νžˆ κ³΅λΆ€ν–ˆλ‹€λ©΄ μ‰½κ²Œ 이해할 수 μžˆλŠ” 뢀뢄이닀.

 

이해λ₯Ό ν•΄λ³΄μž.

μ»΄ν“¨ν„°λŠ” 클럭 λ‹¨μœ„λ‘œ λ™μž‘ν•œλ‹€.

클럭 λ‹¨μœ„λ‘œ λ™μž‘ν•œλ‹€λŠ” 것은 ν•˜λ‚˜μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•Œ, 일정 μ‹œκ°„μ΄ μ†Œμš”λœλ‹€λŠ” μ˜λ―Έμ΄λ‹€. 

TEMP = 10 이 μžˆμ„ λ•Œ, ν•˜λ‚˜μ˜ 클럭이 μ†Œμš”λ˜λŠ”λ° 0.001초라고 ν•΄λ³΄μž. 

 

μŠ€λ ˆλ“œ A와 Bκ°€ TEMP에 μž…λ ₯ν•œ 값을 λ”ν•˜λ €κ³  ν•œλ‹€. 

1. 0μ΄ˆμ— μŠ€λ ˆλ“œ AλŠ” TEMP의 값을 ν™•μΈν•œλ‹€. 값은 10이닀. 5λ₯Ό λ”ν•œλ‹€. λ”ν•˜κΈ° μž‘μ—…μ€ 2클럭이 μ†Œμš”λœλ‹€.

-> λ”ν•˜κΈ° μž‘μ—…μœΌλ‘œ μΈν•œ μ‹œμŠ€ν…œ 콜 λ°œμƒ

2. 0.001μ΄ˆμ— μŠ€λ ˆλ“œ BλŠ” TEMP의 값을 ν™•μΈν•œλ‹€. 아직 μŠ€λ ˆλ“œ A의 μž‘μ—…μ΄ λλ‚˜μ§€ μ•Šμ•„μ„œ TEMPλŠ” μ—¬μ „νžˆ 10이닀. λ§ˆμ°¬κ°€μ§€λ‘œ μŠ€λ ˆλ“œ B도 5λ₯Ό λ”ν•˜λŠ” 연산을 μˆ˜ν–‰ν•œλ‹€.

-> λ”ν•˜κΈ° μž‘μ—…μœΌλ‘œ μΈν•œ μ‹œμŠ€ν…œ 콜 λ°œμƒ

3. 0.002μ΄ˆμ— μŠ€λ ˆλ“œ A의 μž‘μ—…μ΄ λλ‚˜κ³  TEMPμ—λŠ” 15κ°€ μ €μž₯λœλ‹€.

4. 0.003μ΄ˆμ— μŠ€λ ˆλ“œ B의 μž‘μ—…μ΄ λλ‚˜κ³  TEMPμ—λŠ” 15κ°€ μ €μž₯λœλ‹€.

μ΅œμ’…μ μœΌλ‘œ μ—°μ‚°λœ TEMP의 κ²°κ³ΌλŠ” 15κ°€ λ˜λŠ” λ¬Έμ œκ°€ λ°œμƒν•œλ‹€.

μΈν„°λŸ½νŠΈ 외에도 νƒ€μž„μŠ¬λΌμ΄μŠ€(TimeSlice) λ“±μ˜ 문제둜 μŠ€μΌ€μ€„λ§μ΄ λ°”λ€” λ•Œλ„ 이런 λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆλ‹€.

 

A와 Bκ°€ μ‹€μ œλ‘œ λ™μ‹œμ— μž‘μ—…μ„ ν•œ 것은 μ•„λ‹ˆμ§€λ§Œ, 컴퓨터 ꡬ쑰 상 μΈκ°„μ˜ λˆˆμ—λŠ” λ™μ‹œμ— μž‘μ—…μ„ μˆ˜ν–‰ν•œ 것 처럼 보인닀.

이런 문제λ₯Ό λ™μ‹œ μ ‘κ·Ό 문제라고 ν•˜κ³  ν•΄κ²°ν•˜κΈ° μœ„ν•œ 방법이 μŠ€λ ˆλ“œ 동기화이닀.

μŠ€λ ˆλ“œλΏλ§Œ μ•„λ‹ˆλΌ ν”„λ‘œμ„ΈμŠ€λ„ ν•΄λ‹Ή 문제λ₯Ό κ°€μ§€κ³  μžˆλ‹€. μ™œλƒν•˜λ©΄ 각 μŠ€λ ˆλ“œμ™€ 각 ν”„λ‘œμ„ΈμŠ€λŠ” 독립적이기 λ•Œλ¬Έμ΄λ‹€.

μ„œλ‘œ ν•  일만 ν•œλ‹€λŠ” 것이닀!


이런 λ¬Έμ œμ μ€ 닀쀑 μ½”μ–΄λ‚˜ 컀널 μ½”λ“œμ—μ„œ 맀우 많이 λ°œμƒν•œλ‹€.

전문가듀은 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œ Thread Synchronization 이 ν•„μš”ν–ˆκ³  이에 λŒ€ν•œ μ€‘μš”ν•œ 두 κ°œλ…μ΄ λ‚˜μ™”λ‹€.

 

μž„κ³„κ΅¬μ—­(Critical Section)κ³Ό μƒν˜Έλ°°μ œ(mutual exclusion)이닀.

'CS > 운영체제' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

18. μƒν˜Έλ°°μ œ κ΅¬ν˜„ 방법  (0) 2024.06.16
17. μƒν˜Έ 배제 (Mutual Exclusion)  (0) 2024.06.15
15. CPU Scheduling Algorithm  (1) 2024.04.22
14. CPU Scheduling  (0) 2024.04.22
13. λ©€ν‹°μŠ€λ ˆλ“œ κ΅¬ν˜„  (0) 2024.04.22