← Back to Blog

[Operating System] Semaphore

computer science > operating system

2026-07-041 min read

#computer-science #operating-system #thread #synchronization #semaphore

Semaphore는 여러 프로세스의 접근을 제어하는 동기화 기법이다.

정수 변수와 두 개의 연산을 사용한다.

wait()
signal()

wait(P)

S를 1 감소시키고, S < 0이면 사용할 자원이 없으므로 block한다.

S--;
if(S < 0)
    block();

signal(V)

S를 1 증가시키고, S <= 0이면 대기 중인 프로세스가 있으므로 wakeup한다.

S++;
if(S <= 0)
    wakeup();

Binary Semaphore

이름에서도 나오듯이 01만 사용해서 관리한다.

S = 1

Mutex와 유사하게 사용한다.


Counting Semaphore

S = N

동시에 N개 프로세스까지 허용한다.

예시는 다음과 같다.

Semaphore 종류 비교

종류값의 범위사용 목적
Binary Semaphore0 또는 1mutex처럼 한 번에 하나만 접근하게 제한한다.
Counting Semaphore0 이상 정수동시에 여러 개의 동일 자원을 제한된 수만큼 허용한다.