Synchronization
- multithreaded program에서 thread는 서로 협력함
- shared resource 접근 필연적
- 동시 접근 시 문제 발생
- race condition problem
- 해당 문제를 해결 하는 것이 synchronization goal
- Thread Synchronization이란 임계 영역의 상호 배제를 보장하여 race condition을 방지함을 보장하는 것
Race Condition
- thread에 의해 shared resoruce에 접근하는 결과
- non-deterministic
- non-reproducible
- 보통은 timer interrupt가 원인
- timer interrupt가 예상치 못한 시기에 thread를 넘기기 때문
- 예측 불가
- single processor이든 multi-processor이든 상관 없음
- multi-thread 사용 時 synchronization 필연적
Trouble with Threads
- atomic operation
- 중간에 끼어 들 수 없는 operation
- shared resource 관련 처리는 atomic operation 처럼 처리
- x++ 처럼 single operator도 multiple instructions임
- multi-word operation들이 atomic 하다는 보장은 없음
Critical Section & Mutual Exclusion
Critical Section
- Shared resource를 접근하는 code 영역
- 접근 패턴 중요!
- only read 時 동시 접근 가능
- write 時 절대적으로 동시 접근 불가
Mutual Exclusion
- 상호 배제
- critical section에 한번에 하나의 thread만 들어가게 보장하는 것
Critical Section Problem Conditions
- Mutual Exclusion
- 상호 배제
- fundamental requirement