상호 배타적인 공유 자원의 접근을 위한 0이상의 정수형 변수 '세마포어'를 설정한다. 임계 구역에 접근할 시에, 세마포어가 1이상일 경우 1을 감소시키고 임계 영역에 접근한다.만일 세마포어가 0이라면 더 이상 접근할 수 없으므로 waiting한다. 임계 영역을 나올 시에, 세마포어를 1 증가시키고 waiting 중인 쓰레드에게 알려준다. 각 action은 atomic하게 이루어져야 한다.