Ir para o conteúdo

CCT-UFCA/Ciência da Computação/Sistemas Distribuídos/Paradigmas de Comunicação entre Processos (IPC)

De Wikiversidade

Conceitos de IPC

[editar | editar código]

IPC refere-se aos mecanismos que permitem que processos independentes se comuniquem e sincronizem suas ações, seja no mesmo sistema ou em sistemas diferentes.

Esses mecanismos são usados para compartilhar dados, coordenar atividades e gerenciar recursos comuns.

  • Objetivos:
    • Eficiência: Minimizar o tempo de comunicação entre processos.
    • Segurança: Evitar conflitos e corrupção de dados.
    • Confiabilidade: Garantir que as mensagens sejam entregues de forma íntegra.
  • Desafios:
    • Gerenciar a concorrência e evitar deadlocks (processos bloqueados).
    • Minimizar latência em redes distribuídas.
Exemplo: Em um servidor web, o IPC pode ser usado para comunicação entre processos que atendem múltiplas requisições simultâneas.

Tipos de IPC

[editar | editar código]
  • Fila de Mensagens:
    • Permite que processos enviem e recebam mensagens organizadas em uma fila.
    • As mensagens são armazenadas até serem processadas pelo destinatário.
    • Características:
      • Armazenamento temporário (mensagens ficam na fila até serem lidas).
      • Adequado para sistemas assíncronos.
Exemplo: Mensageria baseada em filas, como RabbitMQ ou sistemas de mensagens no Linux (msgget, msgrcv, msgsnd).
  • Memória Compartilhada:
    • Dois ou mais processos podem acessar uma área de memória comum.
    • É o método mais rápido, pois não depende de troca explícita de mensagens.
    • Características:
      • Requer mecanismos de sincronização, como semáforos ou mutexes, para evitar condições de corrida (race conditions).
Exemplo: Comunicação entre processos em sistemas embarcados, onde o acesso rápido à memória é essencial.
  • Pipes:
    • Conexões unidirecionais ou bidirecionais que permitem que um processo envie dados a outro.
    • São geralmente usados para comunicação entre processos pai e filho.
    • Características:
      • Requer uma relação hierárquica entre os processos (pai e filho).
      • Simples de implementar, mas menos escalável.
Exemplo: No Linux, o comando | (pipe) conecta a saída de um programa à entrada de outro (ex.: ls | grep "texto").
  • Sockets:
    • Usados para comunicação entre processos em sistemas distribuídos ou em redes.
    • Permitem troca de dados entre processos que estão em diferentes computadores.
    • Características:
      • Suportam comunicação síncrona e assíncrona.
      • Adequados para ambientes de rede.
Exemplo: Sockets são a base de protocolos como TCP/IP para construir aplicações como navegadores ou servidores de e-mail.

Comparação entre Diferentes Métodos de IPC

[editar | editar código]
Método Vantagens Desvantagens Uso Comum
Fila de Mensagens Alta flexibilidade, desacopla processos Maior latência em sistemas de alta demanda Sistemas de mensageria (RabbitMQ)
Memória Compartilhada Rápida (diretamente na memória) Complexidade na sincronização Sistemas embarcados
Pipes Simples e eficiente para conexões diretas Comunicação limitada entre pai e filho Shell scripts e automação local
Sockets Funciona em redes distribuídas Configuração mais complexa Aplicações baseadas na internet

Comunicação Síncrona e Assíncrona

[editar | editar código]
  • Comunicação Síncrona:
    • O processo remetente espera até que o processo destinatário confirme o recebimento.
    • Vantagens:
      • Garantia imediata de entrega e processamento.
    • Desvantagens:
      • Pode causar atraso ou bloqueio se o destinatário não estiver disponível.
Exemplo: Comunicação usando chamadas remotas síncronas (RPC - Remote Procedure Calls).
  • Comunicação Assíncrona:
    • O remetente não precisa aguardar; envia a mensagem e continua executando.
    • Vantagens:
      • Maior eficiência em sistemas com alta carga.
    • Desvantagens:
      • Requer mecanismos adicionais para garantir que a mensagem foi processada.
Exemplo: Mensagens em filas como no Amazon SQS ou RabbitMQ.

Referências

[editar | editar código]
  1. https://www.guru99.com/pt/inter-process-communication-ipc.html
  2. https://developer.ibm.com/articles/l-ipc/
  3. https://www.inf.ufes.br/~zegonc/material/Sistemas_Operacionais/IPC%20-%20Inter%20Process%20Communication%281%29.pdf
  4. https://www.zendesk.com.br/blog/comunicacao-sincrona-assincrona/