1. 세마포어의 개념
정의 | 시스템 공유 자원의 race condition 상태 방지 위해 P(), V()연산기반의 OS 레벨에서 수행하는 상호배제 기법 |
특징 | – 정수 형태의 변수 : 통상 S로 변수 정의 – OS 수준의 상호 배제 기법 : P, V연산 수행 통한 임계 구역 통제 |
2. 세마포어의 동작 원리와 유형
1) 세마포어의 동작 원리
P연산 (Wait) | S값 1 → 0 으로 변경 | 임계영역 진입하며 S값 1개 차감 |
V연산 (Signal) | S값 0 → 1로 변경 | 임계영역에서 복귀하며 S값 1개 반환 |
2) 세마포어의 유형
유형 | 목적 | 내용 |
Binary Semaphore | – 상호배제, 프로세스 동기화 | 0 또는 1로 변수 구성 |
Count Semaphore | – 초기에 동시 진행 가능한 프로세스 개수 정의 | 정수 형태의 변수 |
3. 세마포어의 타이밍 오류와 모니터를 통한 해결방안
- P(), V() 연산의 순서가 뒤바뀌는 경우 오류 발생 가능
- Critical Section 종료 후 V() 연산 대신 P()연산 수행 시 오류 발생 가능
- 모니터 내 정의한 함수만이 모니터 내에 지역적으로 선언된 변수들과 형식 매개변수에 접근 가능케 함으로써 상호 배제 구현