Please enable JavaScript.
Coggle requires JavaScript to display documents.
Cap 9 : Mecanismos de comunicação - Coggle Diagram
Cap 9 : Mecanismos de comunicação
Pipes
Canal de comunicação unidirecional entre dois processos
Na linha de comando UNIX o pipe é usado para conectar a saída padrão de um processo à entrada padrão de outro
Canal de comunicação local (1:1), unidirecional, síncrono, orientado a fluxo, confiável e com capacidade finita
O pipe é visto pelos processos como um arquivo, o envio e recepção de dados são feitos por chamadas de sistema read e write
O uso na linha de comando é trivial, mas na construção de programas é mais complexo
Pipes padrão possuem vida curta: só existem durante a execução da linha de comando ou do processo
Pipes nomeados(FIFOs): permanecem desde sua criação até serem explicitamente destruídos . Esses pipes são independentes e processos
Fila de mensagens
Implementação do conceito de mailbox
Mecanismos de comunicação entre vários processos (N:M ou N:1), confiáveis, orientadas a mensagens e com capacidade finita.
As operações de envio e recepção podem ser síncronas ou assíncronas
Principais chamadas POSIX
mq_open: abre uma fila já existente ou cria uma nova fila;
• mq_setattr e mq_getattr: permitem ajustar ou obter atributos (parâmetros) da fila
mq_send: envia uma mensagem para a fila ; caso a fila esteja cheia o emissor fica bloqueado
mq_timedsend: permite definir um prazo máximo de espera: caso o envio não ocorra nesse prazo, a chamada retorna com erro;
mq_receive: recebe uma mensagem da fila ; caso a fila esteja vazia o receptor é bloqueado
mq_timedreceive: permite definir um prazo máximo de espera;
mq_close: fecha o descritor da fila criado por mq_open
mq_unlink: remove a fila do sistema, destruindo seu conteúdo
Os produtores de mensagens devem ser lançados
após um consumidor, pois é este último quem cria a fila
Não cria nenhum arquivo no sistema, as mensagens transitam por memória do núcleo
Memória Compartilhada
Área de memória comum que pode ser acessada direta e rapidamente pelos processos, sem o custo da intermediação do núcleo
As áreas de memória compartilhadas e os processos que as acessam são gerenciados pelo núcleo
Útil quando o fluxo de mensagens é elevado
Passos para criar uma área de memória compartilhada
1: Um processo Pa solicita ao núcleo a criação de uma área de memória compartilhada, definindo permissões
2: O núcleo aloca essa área e a registra em uma lista
3: O núcleo devolve ao processo Pa o ID da área
4: Pa solicita ao núcleo que a área seja anexada ao seu espaço de endereçamento
5: O núcleo modifica a memória de Pa para incluir a nova área
6: O núcleo devolve a Pa um ponteiro para a área alocada
7: O processo Pb executa os passos 4-6 e também recebe um ponteiro para a área alocada se as permissões forem respeitadas
8: Os processos Pa e Pb se comunicam através da escrita e leitura de valores na área compartilhada
Não existe coordenação ou sincronização no acesso à área compartilhada, por isso podem haver inconsistências. Mecanismos de coordenação adicionais podem ser necessários