Ciência da Computação Aspecto Gerais Algoritmos

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 é

  • A.

    mutex = 1; empty = N; full = N

  • B.

    mutex = 1; empty = N; full = 0

  • C.

    mutex = 1; empty = 0; full = N

  • D.

    mutex = 1; empty = 0; full = 0

  • E.

    mutex = 1; empty = 0; full = 0