semaphore

P는 기다리고, V는 깨운다

세마포어는 정수값과 대기 큐로 임계구역 진입 순서를 조절합니다. 생산자 소비자 문제는 empty, full, mutex 세 값을 함께 봅니다.

세마포어 의미
empty 버퍼의 빈 칸 수를 나타내며 생산자가 먼저 확인
full 채워진 칸 수를 나타내며 소비자가 먼저 확인
mutex 버퍼 조작 임계구역을 한 번에 하나로 제한
구분 포인트

카운팅과 이진 세마포어

empty와 full은 개수를 세는 카운팅 세마포어이고, mutex는 임계구역 출입을 잠그는 이진 세마포어로 읽으면 됩니다.

P1

생산자

P(empty), P(mutex) 뒤 버퍼에 넣습니다.

V1

생산 완료

V(mutex), V(full)로 소비자를 깨울 수 있게 합니다.

P2

소비자

P(full), P(mutex) 뒤 버퍼에서 꺼냅니다.

V2

소비 완료

V(mutex), V(empty)로 생산자가 넣을 칸을 돌려줍니다.