I. 태스크 동기화의 필요성
- 공유 데이터 병행 접근 시 데이터 불일치를 초래하므로 데이터 일관성 유지 위해 태스크 동기화 필요
II. 태스크 동기화 방안
구분 | 방안 | 설명 |
---|---|---|
H/W 측면 | test and set | – “lock” 공유 Boolean 변수 |
compare and swap | – value==expected 경우 swap | |
Semaphore | – P(), V() 연산 기반 원자적 수행 | |
Bus-Locking | – ARMv6 이벤트 명령 대기 | |
Spin-Lock | – busy waiting 통해 lock 획득 | |
S/W 측면 | Peterson 알고리즘 | – turn, flag 변수 이용 |
Dekker 알고리즘 | – flag, turn 공유 변수 기반 | |
Bakery 알고리즘 | – 낮은 번호 순서로 실행 | |
Timestamp Ordering | – 타임스탬프 기반 순서 결정 | |
Monitor | – 고급 언어 수준 동기화 수단 |
- 위 동기화 방식 외 트랜잭션 메모리, OpenMP, 함수형 언어(얼랑, 스칼라) 등의 방식 존재
III. 태스크 동기화 시 문제점 및 해결방안
문제점 | 해결 방안 |
---|---|
교착상태(Deadlock) | – 예방 및 회피, 발견 시 회복 |
우선순위 역전 현상 | – 우선순위 상속 및 올림 기법 |
무한 대기 (Starvation) | – 프로세스 Aging 기법 적용 |