즉시 통과
남은 슬롯이 있으므로 wait은 값을 1 줄이고 바로 진행한다.
큐 기반 세마포어에서는 카운터가 0 아래로 내려가는 순간부터 대기 큐의 길이까지 함께 표현한다.
남은 슬롯이 있으므로 wait은 값을 1 줄이고 바로 진행한다.
마지막 슬롯이 사용 중이며 다음 wait부터 잠들 준비를 한다.
절대값이 잠든 스레드 수를 나타내며 signal이 하나씩 깨운다.
먼저 value를 감소시킨다. 결과가 음수이면 현재 스레드를 wait queue에 넣고 블로킹한다.
value를 증가시킨다. 증가 후에도 0 이하라면 큐에서 하나를 꺼내 Ready 상태로 보낸다.
value 변경과 큐 조작은 세마포어 내부의 아주 짧은 임계 영역이므로 커널은 인터럽트 비활성화나 스핀락으로 이 구간만 보호한다.