I. 태스크 동기화의 필요성 공유 데이터 병행 접근 시 데이터 불일치를 초래하므로 데이터 일관성 유지 위해 태스크 동기화 필요 II. 태스크 동기화 방안 구분 방안 설명 H/W 측면 test and set – “lock” 공유 Boolean 변수 compare and swap – value==expected 경우 swap Semaphore – P(), V() 연산 기반 원자적 수행 Bus-Locking – ARMv6
I. 동시 수행의 위험, 자원 경합의 의미 가. 자원 경합의 정의 공유 자원에 대해 여러 개의 프로세스가 동시에 접근을 시도하여 일관성 보장이 어려운 상태 나. 자원 경합의 특징 특징 설명 예측 불가 – 발생 현상, 빈도 등 예측이 전혀 불가능 비 균등 – 성능 변화가 불균등하여 일관성이 없음 분석 난해 – 연관 요인에 의해 원인분석
I. 동기화 기법, 스핀락의 개념 가. 스핀락의 개념 프로세스가 사용하려는 lock을 타 프로세스 사용 시 명령어 루프를 실행하며 대기하는 locking 매커니즘 나. 스핀락의 특징 SMP 시스템 – SMP 시스템 위한 락으로 단일 프로세스에서는 사용 안함 Busy Waiting – 바쁜 대기의 한 종류의 동기화 기법 Spinning – 공유 자원에 대해 두 개 이상의 프로세스가 권한 획득