Comunicação entre Processos



Uma das características principais dos processos de um mesmo programa, é a sua independência, seguindo, cada um, um fluxo de código independente dos restantes. No entanto, é por vezes, necessário que comuniquem entre si, para que troquem informação, por exemplo, e, a não ser que se opte por recorrer à memória partilhada, a solução mais usual são os pipes. A Comunicação entre processos pode ser de 4 tipos:

mestre/escravo correio diálogo difusão





Mestre/Escravo

Dentro da comunicação entre processos, existe um caso em que a actividade de um processo (Escravo) depende exclusivamente da vontade de um outro (Mestre). Este último, quando quer enviar alguma mensagem para o Escravo, tem de esperar que este já tenha lido a mensagem anterior. Essa espera não necessita ser bloqueante, isto é, o Mestre, pode continuar a executar outras tarefas enquanto que o escravo não liberta o canal. Contudo, e porque o Escravo existe apenas para servir o seu Mestre, se o processo leitor não tiver, de momento, nada para ler, tem de ficar bloqueado à espera que algo lhe seja dado.

O canal que define esta ligação é fixo.




Correio

Enquanto que na comunicação Mestre/Escravo, existe um processo a comunicar com outro, aqui pode encontrar-se um processo a receber mensagens de vários outros. Estes processos, independentes entre si, vão produzindo mensagens e deixando-as no canal que os liga ao processo leitor, tendo apenas de suspender o envio das mensagens, quando o canal já se encontrar cheio. Nessa altura, podem prosseguir com a execução de outra sequência de código até que haja, novamente, espaço no pipe que deve ter espaço para guardar as mensagens desde a altura em que lá são colocadas, até que, do outro lado, o leitor as consiga ler.




Diálogo

O Diálogo é uma forma de comunicar que tenta obter a máxima eficácia na utilização do canal. Neste tipo de comunicação, é estabelecido um canal permanente entre dois processos, mas que, ao contrário dos outros tipos, é criado de forma dinâmica, durando apenas o tempo de transmissão das mensagens.




Difusão

Este mecanismo de comunicação permite que uma mensagem enviada por um processo seja recebida por um grupo de processos. O emissor não necessita de enviar várias cópias, uma para cada destino, dado que o sistema operativo se encarrega de o fazer.




Menu Enviar mail aos autores Pipes


HomePage Menu Mecanismos de Sincronização Signals Semáforos Comunicação entre Processos Pipes Memória Partilhada Problemas de Programação Concorrente Glossário Links