태스크(프로세스) 동기화 방안

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 기법 적용

 

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^