BDES · semaphore

세마포어 P/V와 생산자-소비자

세마포어 count와 대기 큐를 통해 빈 버퍼, 찬 버퍼, 임계구역 접근을 순서대로 제어합니다.

P/V 연산 역할

sync

empty

생산자가 쓸 수 있는 빈 칸 수를 나타냅니다.

full

소비자가 가져갈 수 있는 항목 수입니다.

mutex

버퍼에 한 번에 하나만 접근하게 합니다.

producer P/V

empty를 기다리고 full을 알립니다.

consumer P/V

full을 기다리고 empty를 돌려줍니다.

P(empty/full) P(mutex) buffer op V(mutex) V(full/empty)

세마포어 P/V와 생산자-소비자 정리

세마포어 동기화는 잠금 하나가 아니라 자원 개수와 임계구역 보호를 서로 다른 세마포어로 분리해야 명확해집니다.