Considere dois processos, produtor e consumidor, compartilhando um mesmo buffer de tamanho fixo N. No processo produtor, produz-se itens de dados e os coloca no buffer. No processo consumidor retira-se o item de dado do buffer. Uma situação de exceção surge quando o consumidor tenta retirar um item do buffer vazio, ou quando o produtor tenta inserir um item no buffer cheio. Um algoritmo para a solução deste problema, utilizando semáforos, é dado pelos procedimentos PRODUTOR e CONSUMIDOR, apresentados a seguir.
Nestes procedimentos, são utilizados três semáforos, mutex, empty e full, responsáveis conjuntamente por viabilizar o bloqueio e a liberação da execução do processo. As funções up e down, respectivamente, incrementam e decrementam os valores dos semáforos. Sob esta ótica, a opção que corresponde aos valores de inicialização dos semáforos é
mutex = 1; empty = N; full = N
mutex = 1; empty = N; full = 0
mutex = 1; empty = 0; full = N
mutex = 1; empty = 0; full = 0
mutex = 1; empty = 0; full = 0
{TITLE}
{CONTENT}
{TITLE}
Aguarde, enviando solicitação...