Comunicação entre processos - Inter-process communication
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
- Java 's Remote Method Invocation (RMI)
- ONC RPC
- XML-RPC ou SOAP
- JSON-RPC
- Message Bus (Mbus) (especificado em RFC 3259)
- .NET Remoting
- gRPC
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:
- KDE 's Desktop Protocol Communications (DCOP) - preterido por D-Bus
- D-Bus
- OpenWrt usa arquitetura ubus micro bus
- API MCAPI Multicore Communications
- SIMPL O Synchronous Interprocess Messaging Project for Linux (SIMPL)
- 9P (protocolo do sistema de arquivos do plano 9)
- Ambiente de computação distribuída (DCE)
- Thrift
- ZeroC 's Internet Communications Engine (ICE)
- ØMQ
- Enduro / X Middleware
- YAMI4
Pilha de comunicação do sistema operacional
A seguir estão APIs específicas de plataforma ou linguagem de programação:
- Comunicação transparente entre processos do Linux (TIPC)
- Apple Computer 's eventos Apple , anteriormente conhecido como inter-aplicações Communications (IAC)
- LINX da Enea para Linux (código aberto) e vários DSP e processadores de uso geral sob OSE
- As portas de Mach do kernel do Mach
- Microsoft 's ActiveX , Component Object modelo (COM), Microsoft Transaction Server ( COM + ), Distributed Component Object modelo (DCOM), Dynamic Data Exchange (DDE), Object Linking and Embedding (OLE), pipes anônimos , pipes nomeados , procedimento local Call , MailSlots , Message loop , MSRPC , .NET Remoting e Windows Communication Foundation (WCF)
- Novell 's SPX
- POSIX mmap , filas de mensagens , semáforos e memória compartilhada
- Mensagens do RISC OS
- Solaris Doors
- Filas de mensagens, semáforos e memória compartilhada do System V
- OpenBinder Open Binder
- Serviço PPS (Publicação / Assinatura Persistente) da QNX
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:
- Libt2n para C ++ apenas no Linux, lida com objetos complexos e exceções
- Sessões de PHP
- Ruby Distribuído
- Arquitetura Common Object Request Broker (CORBA)
- IPC assíncrono do Electron , compartilha objetos JSON entre um processo principal e um renderizador
Veja também
- Programação de rede de computador
- Processos de comunicação sequencial (paradigma CSP)
- Serviço de Distribuição de Dados
- Chamada de procedimento protegido
Referências
- Stevens, Richard . UNIX Network Programming, Volume 2, Second Edition: Interprocess Communications. Prentice Hall, 1999. ISBN 0-13-081081-9
- U. Ramachandran, M. Solomon, M. Vernon Hardware support for interprocess communication Proceedings of the 14th anual symposium on Computer architecture. Pittsburgh, Pensilvânia, Estados Unidos. Páginas: 178 - 188. Ano de publicação: 1987 ISBN 0-8186-0776-9
- Crovella, M. Bianchini, R. LeBlanc, T. Markatos, E. Wisniewski, R. Using communication-to-computation ratio in parallel program designand performance prediction 1-4 December 1992. pp. 238-245 ISBN 0-8186-3200 -3