Mensagem passando entre remetente e destinatário [fechado]

0

Na transmissão de mensagens (produtor-consumidor), um envio bloqueado acontece quando o processo de envio é bloqueado até que a mensagem seja recebida pelo processo de recebimento ou pela caixa postal.

Uma recepção bloqueada é quando o receptor bloqueia até que uma mensagem esteja disponível.

A solução para o problema produtor-consumidor se torna trivial quando usamos instruções de bloqueio send () e receive ().

Por que isso se torna trivial?

    
por Qwerto 16.02.2018 / 19:31

2 respostas

1

O livro ("Operating System Concepts" - Silberschatz, Galvin, Gagne) que você parece estar citando tem a dizer sobre o assunto:

Different combinations of send() and receive() are possible. When both send() and receive() are blocking, we have a rendezvous between the sender and the receiver. The solution to the producer-consumer problem becomes trivial when we use blocking send() and receive() statements. The producer merely invokes the blocking send() call and waits until the message is delivered to either the receiver or the mailbox. Likewise, when the consumer invokes receive(), it blocks until a message is available.

Parece bem claro para mim.

    
por 16.02.2018 / 22:20
0

A resposta à sua pergunta é: por favor, tente implementar uma solução para o problema do consumidor-produtor, em que a leitura e a escrita são não-bloqueantes.

Se você fizer isso, se pensar em como resolver o problema com operações de leitura / gravação sem bloqueio, descobrirá rapidamente que precisa fazer o gerenciamento de buffer. Então você descobrirá que em uma situação concorrente você tem que lidar com a justiça do leitor / escritor etc. O problema é multifacetado muito rapidamente, com alguns dos sub-problemas (justiça) não tendo solução óbvia.

    
por 16.02.2018 / 22:13

Tags