En informática , la comunicación entre procesos o comunicación entre procesos ( IPC ) se refiere específicamente a los mecanismos que proporciona un sistema operativo para permitir que los procesos gestionen los datos compartidos. Normalmente, las aplicaciones pueden utilizar IPC, categorizado como clientes y servidores , donde el cliente solicita datos y el servidor responde a las solicitudes del cliente. [1] Muchas aplicaciones son tanto clientes como servidores, como se ve comúnmente en la computación distribuida .
IPC es muy importante para el proceso de diseño de microkernels y nanokernels , que reducen el número de funcionalidades proporcionadas por el kernel. Luego, esas funcionalidades se obtienen comunicándose con los servidores a través de IPC, lo que lleva a un gran aumento en la comunicación en comparación con un kernel monolítico regular. Las interfaces de IPC generalmente abarcan estructuras de marco analítico variable. Estos procesos garantizan la compatibilidad entre los protocolos multivectoriales en los que se basan los modelos IPC. [2]
Un mecanismo de IPC es sincrónico o asincrónico. Pueden utilizarse primitivas de sincronización para tener un comportamiento síncrono con un mecanismo IPC asíncrono.
Enfoques
Se han adaptado diferentes enfoques de IPC a diferentes requisitos de software , como el rendimiento , la modularidad y las circunstancias del sistema, como el ancho de banda y la latencia de la red . [1]
Método | Breve descripción | Proporcionado por ( sistemas operativos u otros entornos) |
---|---|---|
Archivo | Un registro almacenado en disco o un registro sintetizado a pedido por un servidor de archivos, al que se puede acceder mediante múltiples procesos. | La mayoría de los sistemas operativos |
Archivo de comunicaciones | Una forma única de IPC a finales de la década de 1960 que más se parezca Plan 9 's protocolo 9P | Sistema de tiempo compartido de Dartmouth |
Señal ; también Trampa del sistema asíncrono | Un mensaje del sistema enviado de un proceso a otro, que normalmente no se utiliza para transferir datos, sino que se utiliza para controlar de forma remota el proceso asociado. | La mayoría de los sistemas operativos |
Enchufe | Datos enviados a través de una interfaz de red, ya sea a un proceso diferente en la misma computadora oa otra computadora en la red. Orientado a la transmisión ( TCP ; los datos escritos a través de un conector requieren formato para preservar los límites del mensaje) o, más raramente, orientado a los mensajes ( UDP , SCTP ). | La mayoría de los sistemas operativos |
Socket de dominio Unix | Similar a un conector de Internet, pero toda la comunicación ocurre dentro del kernel. Los sockets de dominio utilizan el sistema de archivos como su espacio de direcciones. Los procesos hacen referencia a un socket de dominio como un inodo , y varios procesos pueden comunicarse con un socket | Todos los sistemas operativos POSIX y Windows 10 [3] |
Cola de mensajes | Un flujo de datos similar a un socket, pero que generalmente conserva los límites de los mensajes. Normalmente implementados por el sistema operativo, permiten que varios procesos lean y escriban en la cola de mensajes sin estar conectados directamente entre sí. | La mayoría de los sistemas operativos |
Tubería anónima | Un canal de datos unidireccional que utiliza entrada y salida estándar . Los datos escritos en el extremo de escritura de la tubería son almacenados en búfer por el sistema operativo hasta que se leen desde el extremo de lectura de la tubería. La comunicación bidireccional entre procesos se puede lograr utilizando dos conductos en "direcciones" opuestas. | Todos los sistemas POSIX , Windows |
Pipa con nombre | Una pipa que se trata como una lima. En lugar de utilizar la entrada y salida estándar como con una canalización anónima, los procesos escriben y leen desde una canalización con nombre, como si fuera un archivo normal. | Todos los sistemas POSIX, Windows, AmigaOS 2.0+ |
Memoria compartida | A varios procesos se les da acceso al mismo bloque de memoria , lo que crea un búfer compartido para que los procesos se comuniquen entre sí. | Todos los sistemas POSIX, Windows |
Paso de mensajes | Permite que varios programas se comuniquen mediante colas de mensajes y / o canales no administrados por el sistema operativo. De uso común en modelos de concurrencia. | Utilizado en paradigmas LPC , RPC , RMI y MPI , Java RMI , CORBA , COM , DDS , MSMQ , MailSlots , QNX , otros |
Archivo mapeado en memoria | Un archivo mapeado a la RAM y se puede modificar cambiando las direcciones de memoria directamente en lugar de enviarlo a una secuencia. Esto comparte los mismos beneficios que un archivo estándar . | Todos los sistemas POSIX, Windows |
Aplicaciones
Interfaces de llamada a procedimiento remoto
- Java 's Remote Method Invocation (RMI)
- ONC RPC
- XML-RPC o SOAP
- JSON-RPC
- Bus de mensajes (Mbus) (especificado en RFC 3259)
- .NET Remoting
- gRPC
Pila de comunicación de plataforma
Los siguientes son sistemas de mensajería e información que utilizan mecanismos de IPC pero que no implementan IPC en sí mismos:
- KDE 's Protocolo de escritorio Comunicaciones (DCOP) - desaprobado por D-Bus
- D-Bus
- OpenWrt utiliza la arquitectura de microbus ubus
- API de comunicaciones multinúcleo MCAPI
- SIMPL El proyecto de mensajería entre procesos síncronos para Linux (SIMPL)
- 9P (Protocolo de sistema de archivos Plan 9)
- Entorno de computación distribuida (DCE)
- Ahorro
- ZeroC 's motor de comunicaciones de Internet (ICE)
- ØMQ
- Middleware de Enduro / X
- YAMI4
Pila de comunicación del sistema operativo
Las siguientes son API específicas de la plataforma o del lenguaje de programación:
- Comunicación transparente entre procesos de Linux (TIPC)
- Apple Computer 's eventos de Apple , conocido anteriormente como entre aplicaciones de Comunicaciones (IAC)
- LINX de Enea para Linux (código abierto) y varios DSP y procesadores de propósito general bajo OSE
- Los puertos Mach del kernel de Mach
- Microsoft 's ActiveX , Component Object Model (COM), Microsoft Transaction Server ( COM + ), Distributed Component Object Model (DCOM), intercambio dinámico de datos (DDE), Object Linking and Embedding (OLE), tuberías anónimos , canalizaciones con nombre , procedimiento local Llamada , MailSlots , Bucle de mensajes , MSRPC , .NET Remoting y Windows Communication Foundation (WCF)
- Novell 's SPX
- POSIX mmap , colas de mensajes , semáforos , [4] y memoria compartida
- Mensajes de RISC OS
- Puertas Solaris
- Colas de mensajes, semáforos y memoria compartida de System V
- Carpeta abierta OpenBinder
- Servicio PPS (publicación / suscripción persistente) de QNX
Modelos de objetos distribuidos
Las siguientes son API específicas de la plataforma o del lenguaje de programación que utilizan IPC, pero que no lo implementan por sí mismas:
- Libt2n para C ++ solo en Linux, maneja excepciones y objetos complejos
- Sesiones de PHP
- Ruby distribuido
- Arquitectura de agente de solicitud de objeto común (CORBA)
Ver también
- Programación de redes informáticas
- Comunicación de procesos secuenciales (paradigma CSP)
- Servicio de distribución de datos
- Llamada a procedimiento protegido
Referencias
- ^ a b "Comunicaciones entre procesos" . Microsoft.
- ^ Camurati, P (1993). "Comunicaciones entre procesos para el diseño a nivel de sistema". Taller Internacional de Codificación Hardware / Software .
- ^ "Interoperabilidad de Windows / WSL con AF_UNIX" . Microsoft . Consultado el 25 de mayo de 2018 .
- ^ " Programación concurrente - comunicación entre procesos "
- Stevens, Richard . Programación de red UNIX, Volumen 2, Segunda edición: Comunicaciones entre procesos. Prentice Hall, 1999. ISBN 0-13-081081-9
- U. Ramachandran, M. Solomon, M. Vernon Soporte de hardware para la comunicación entre procesos Actas del 14º simposio internacional anual sobre arquitectura de computadoras. Pittsburgh, Pensilvania, Estados Unidos. Páginas: 178 - 188. Año de publicación: 1987 ISBN 0-8186-0776-9
- Crovella, M. Bianchini, R. LeBlanc, T. Markatos, E. Wisniewski, R. Uso de la relación comunicación / cálculo en el diseño de programas paralelos y la predicción del rendimiento 1–4 de diciembre de 1992. págs. 238–245 ISBN 0-8186-3200-3
enlaces externos
- IPC de Linux con latencias de menos de microsegundos
- Página de manual de Linux ipc (5) que describe System V IPC
- IPC de Windows
- IPC disponible usando Qt
- Programación de red Unix (Vol 2: Comunicaciones entre procesos) por W. Richard Stevens
- Comunicación entre procesos y tuberías en C
- DIPC, sistema distribuido V IPC