Comunicação entre processos - Inter-process communication

Um sistema de computação em grade que conecta muitos computadores pessoais pela Internet por meio de comunicação de rede entre processos

Em ciência da computação , comunicação entre processos ou comunicação entre processos ( IPC ) refere-se especificamente aos mecanismos de um sistema operacional fornece para permitir que os processos para gerenciar dados compartilhados. Normalmente, os aplicativos podem usar IPC, categorizados como clientes e servidores , onde o cliente solicita dados e o servidor responde às solicitações do cliente. Muitos aplicativos são clientes e servidores, como comumente visto na computação distribuída .

O IPC é muito importante para o processo de design de microkernels e nanokernels , que reduzem o número de funcionalidades fornecidas pelo kernel. Essas funcionalidades são então obtidas através da comunicação com servidores via IPC, levando a um grande aumento na comunicação quando comparado a um kernel monolítico regular. As interfaces IPC geralmente abrangem estruturas de framework analítico variável. Esses processos garantem a compatibilidade entre os protocolos multivetoriais dos quais os modelos IPC dependem.

Um mecanismo IPC é síncrono ou assíncrono. As primitivas de sincronização podem ser usadas para ter um comportamento síncrono com um mecanismo IPC assíncrono.

Abordagens

Diferentes abordagens para IPC foram adaptadas para diferentes requisitos de software , como desempenho , modularidade e circunstâncias do sistema, como largura de banda de rede e latência .

Método Pequena descrição Fornecido por ( sistemas operacionais ou outros ambientes)
Arquivo Um registro armazenado em disco ou um registro sintetizado sob demanda por um servidor de arquivos, que pode ser acessado por vários processos. A maioria dos sistemas operacionais
Arquivo de comunicações A única forma de IPC no final da década de 1960 que mais se assemelha Plano 9 do protocolo 9P Dartmouth Time-Sharing System
Sinal ; também Asynchronous System Trap Uma mensagem do sistema enviada de um processo para outro, normalmente não usada para transferir dados, mas para comandar remotamente o processo parceiro. A maioria dos sistemas operacionais
Soquete Dados enviados por uma interface de rede, seja para um processo diferente no mesmo computador ou para outro computador na rede. Orientado a fluxo ( TCP ; dados gravados por meio de um soquete requerem formatação para preservar os limites da mensagem) ou, mais raramente, orientado a mensagem ( UDP , SCTP ). A maioria dos sistemas operacionais
Soquete de domínio Unix Semelhante a um soquete de Internet, mas toda a comunicação ocorre dentro do kernel. Os soquetes de domínio usam o sistema de arquivos como seu espaço de endereço. Os processos fazem referência a um soquete de domínio como um inode , e vários processos podem se comunicar com um soquete Todos os sistemas operacionais POSIX e Windows 10
Fila de mensagens Um fluxo de dados semelhante a um soquete, mas que geralmente preserva os limites da mensagem. Normalmente implementados pelo sistema operacional, eles permitem que vários processos leiam e gravem na fila de mensagens sem estarem diretamente conectados uns aos outros. A maioria dos sistemas operacionais
Cachimbo anônimo Um canal de dados unidirecional usando entrada e saída padrão . Os dados gravados na extremidade de gravação do canal são armazenados em buffer pelo sistema operacional até que sejam lidos na extremidade de leitura do canal. A comunicação bidirecional entre os processos pode ser alcançada usando dois tubos em "direções" opostas. Todos os sistemas POSIX , Windows
Pipe nomeado Um tubo que é tratado como um arquivo. Em vez de usar a entrada e a saída padrão como em um canal anônimo, os processos gravam e lêem de um canal nomeado, como se fosse um arquivo normal. Todos os sistemas POSIX, Windows, AmigaOS 2.0+
Memoria compartilhada Vários processos têm acesso ao mesmo bloco de memória , o que cria um buffer compartilhado para que os processos se comuniquem entre si. Todos os sistemas POSIX, Windows
Passagem de mensagem Permite que vários programas se comuniquem usando filas de mensagens e / ou canais não gerenciados pelo sistema operacional. Normalmente usado em modelos de simultaneidade. Usado nos paradigmas LPC , RPC , RMI e MPI , Java RMI , CORBA , COM , DDS , MSMQ , MailSlots , QNX , outros
Arquivo mapeado pela memória Um arquivo mapeado para RAM e pode ser modificado alterando os endereços de memória diretamente, em vez de enviá-lo para um fluxo. Isso compartilha os mesmos benefícios de um arquivo padrão . Todos os sistemas POSIX, Windows

Formulários

Interfaces de chamada de procedimento remoto

Pilha de comunicação da plataforma

A seguir estão mensagens e sistemas de informação que utilizam mecanismos de IPC, mas não implementam IPC por si próprios:

Pilha de comunicação do sistema operacional

A seguir estão APIs específicas de plataforma ou linguagem de programação:

Modelos de objetos distribuídos

A seguir estão APIs específicas de plataforma ou linguagem de programação que usam IPC, mas não as implementam:

Veja também

Referências

links externos