시스템 안에서 각 프로세스/스레드가 함께 접근할 수 있는 모니터, 프린터, 메모리, 파일, 데이터 등의 자원이나 변수
Race condition
- 공유 자원을 두 개 이상의 프로세스가 동시에 읽거나 쓰는 상황
여러 프로세스가 자원을 공유할 때 각 프로세스에서 공유 자원을 접근하는 코드 영역
임계 영역에 동시에 접근하면 잘못된 결과가 생길 수 있기 때문에 한 프로세스가 임계 구역에서 작업을 수행할 때에는 다른 프로세스가 접근하지 못하도록 해야 함
- 한 프로세스에 의해 소유될 수 있는 key 기반으로 상호 배제 달성
- 공유 자원을 사용하기 전에 lock을 통해 잠금 설정하고 사용한 후에 unlock을 통해 잠금 해제
- 하나의 상태 (잠금 or 잠금 해제)만 가짐
- 공유 자원에 접근할 수 있는 프로세스의 수를 나타내는 값으로 상호 배제 달성
- 간단한 정수 값과 두 가지 함수 wait (P 함수) 및 signal (V 함수)로 공유 자원에 대한 접근 처리
- wait - 자신의 차례가 올 때 까지 기다리는 함수
- signal - 다음 프로세스로 순서를 넘겨주는 함수
- 프로세스가 공유 자원에 접근 → wait → 프로세스가 공유 자원 해제 → signal
- 프로세스가 세마포어 값 수정 시 다른 프로세스는 동시에 세마포어 값 수정 불가