Comunicação Inter-Processos com Filas e Memória Compartilhada
Por: Raphael Brandao • 23/7/2021 • Pesquisas Acadêmicas • 441 Palavras (2 Páginas) • 98 Visualizações
UTFPR-ENGENHARIA ELETRÔNICA Raphael Henrique Bravo Brandão
Comunicação inter-processos com filas e memória compartilhada
[pic 1]
mqueue-send.c
[pic 2]
mqueue-recv.c
O código acima (mqueue-recv.c) cria , utilizando o mq_open, uma fila que vai aguardar o recebimento de mensagens, que será feita pelo mqueue-send.c, a mensagem são números inteiros, tendo capacidade máxima para 10 na fila, caso esse código seja rodado antes de enviar as mensagens com o mqueue-sem.c, a tela não mostrará nenhuma mensagem recebida, ira ficar em branco em um loop infinito. Caso as mensagens tenham sido enviadas pelo mqueue-send.c, irá printar a confirmação do recebimento e o seu valor.
O mqueue-send.c não cria filas, somente as abre, o numero que será enviado é randomizado entre 0 e 99 e se for enviado com sucesso será printado o número. O tamanho da fila é de dez , então o send ira continuar a mandar mensagens até que a fila esteja cheia, o recv irá retornar (fila vazia quando recebe os 10 elementos) e só então o send continuará a enviar.
[pic 3]
[pic 4]
[pic 5]
shared-mem.c
No código acima (shared-mem.c) vemos como funciona a criação de um local de memória no qual vários processos leem e escrevem ao mesmo tempo, utilizando system calls, podemos criar locais para o compartilhamento entre os processos, sendo vantajoso para grandes volumes de dados.
Tendo a vantagem da simultaneidade de comunicação neste sistema temos a desvantagem do “caos”, não temos um sistema que coordene os envios e recebimentos, então quanto mais processos escreverem nesta memoria compartilhada, maior a desordem, pois os dados podem ser lidos antes de serem atualizados.
[pic 6]
...