
En informática , la comunicación entre procesos ( IPC ) es el intercambio de datos entre procesos en ejecución en un sistema informático, o entre varios sistemas de este tipo. Los mecanismos para la IPC pueden ser proporcionados por un sistema operativo . Las aplicaciones que utilizan IPC suelen clasificarse 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 observa comúnmente en la computación distribuida .
La comunicación entre procesos (IPC) es fundamental para el diseño de microkernels y nanokernels , ya que reduce la cantidad de funcionalidades que ofrece el kernel. Estas funcionalidades se obtienen mediante la comunicación con servidores a través de IPC, lo que conlleva un aumento considerable en la comunicación en comparación con un kernel monolítico convencional. Las interfaces IPC generalmente incluyen estructuras de marcos analíticos variables. Estos procesos garantizan la compatibilidad entre los protocolos multivectoriales en los que se basan los modelos IPC. [ 2 ]
Un mecanismo IPC puede ser síncrono o asíncrono. Se pueden usar primitivas de sincronización para lograr un comportamiento síncrono con un mecanismo IPC asíncrono.
Desventajas
La fusión de datos de dos procesos a menudo puede generar costos significativamente más altos en comparación con el procesamiento de los mismos datos en un solo hilo, potencialmente en dos o más órdenes de magnitud debido a gastos generales como la comunicación y la sincronización entre procesos. [ 3 ] [ 4 ] [ 5 ]
Aproches
Se han adaptado diferentes enfoques de IPC a diferentes requisitos de software , como rendimiento , modularidad y circunstancias del sistema como ancho de banda de red y latencia . [ 1 ]
Aplicaciones
Interfaces de llamadas a procedimientos remotos
- Invocación remota de métodos (RMI) de Java
- ONC RPC
- XML-RPC o SOAP
- JSON-RPC
- Bus de mensajes (Mbus) (especificado en RFC 3259) (no confundir con M-Bus )
- Remoting de .NET
- gRPC
pila de comunicación de la plataforma
Los siguientes son sistemas de mensajería e información que utilizan mecanismos de comunicación entre procesos (IPC) pero no implementan IPC por sí mismos:
- Protocolo de comunicaciones de escritorio (DCOP) de KDE : obsoleto en favor de D-Bus.
- D-Bus
- OpenWrt utiliza la arquitectura de microbus ubus.
- API de comunicaciones multinúcleo MCAPI
- SIMPL El proyecto de mensajería síncrona entre procesos para Linux (SIMPL)
- 9P (Protocolo de sistema de archivos Plan 9)
- Entorno de Computación Distribuida (DCE)
- Ahorro
- Motor de comunicaciones por Internet (ICE) de ZeroC
- ØMQ
- YAMI4
- Enlightenment_(software) E16 utiliza eesh como IPC
pila de comunicación del sistema operativo
Las siguientes son API específicas de la plataforma o del lenguaje de programación:
- Los eventos de Apple Computer , anteriormente conocidos como Interapplication Communications (IAC),
- Puertos ARexx
- LINX de Enea para Linux (código abierto) y varios procesadores DSP y de propósito general bajo OSE
- Los puertos Mach del núcleo Mach
- ActiveX de Microsoft , Modelo de objetos componentes (COM), Servidor de transacciones de Microsoft ( COM+ ), Modelo de objetos componentes distribuidos (DCOM), Intercambio dinámico de datos (DDE), Vinculación e incrustación de objetos (OLE), tuberías anónimas , tuberías con nombre , Llamada a procedimiento local , MailSlots , Bucle de mensajes , MSRPC , .NET Remoting y Windows Communication Foundation (WCF)
- SPX de Novell
- POSIX mmap , colas de mensajes , semáforos , [ 7 ] y memoria compartida
- Mensajes de RISC OS
- Puertas Solaris
- Colas de mensajes, semáforos y memoria compartida del Sistema V
- Comunicación transparente entre procesos (TIPC) de Linux
- OpenBinder Carpeta abierta
- 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 ellas mismas:
- Sesiones de PHP
- Ruby distribuido
- Arquitectura de agente de solicitudes de objetos comunes (CORBA)
- La IPC asíncrona de Electron comparte objetos JSON entre un proceso principal y un proceso de renderizado [ 8 ].
Véase también
Referencias
- Stevens, Richard (1999). Programación de redes UNIX . Comunicaciones entre procesos. Vol. 2 (Segunda edición). Prentice Hall. ISBN 0-13-081081-9.
- Ramachandran, U.; Solomon, M.; Vernon, M. (1987). «Soporte de hardware para la comunicación entre procesos». Actas del 14.º simposio internacional anual sobre arquitectura de computadoras . Pittsburgh, Pensilvania, Estados Unidos. pp. 178–188 . ISBN 0-8186-0776-9.
{{cite book}}: CS1 mantenimiento: falta el editor de ubicación ( enlace ) - Crovella, M.; Bianchini, R.; LeBlanc, T.; Markatos, E.; Wisniewski, R. (1–4 de diciembre de 1992). Uso de la relación comunicación-computación en el diseño de programas paralelos y predicción del rendimiento . pp. 238–245 . ISBN 0-8186-3200-3.
- 1 2 "Comunicaciones entre procesos" . Microsoft.
- ↑ Camurati, P (1993). "Comunicaciones entre procesos para el diseño a nivel de sistema". Taller internacional sobre codiseño de hardware/software .
- ↑ Conceptos de sistemas operativos . ISBN 978-0470128725.
- ↑ Organización y diseño de computadoras, edición MIPS: La interfaz hardware/software (Serie Morgan Kaufmann de arquitectura y diseño de computadoras) . Morgan Kaufmann. ISBN 978-0124077263.
- ↑ Programación paralela: técnicas y aplicaciones con estaciones de trabajo en red y ordenadores paralelos . Pearson. ISBN 978-0131405639.
- ↑ "Interoperabilidad de Windows/WSL con AF_UNIX" . Microsoft. 7 de febrero de 2018. Consultado el 25 de mayo de 2018 .
- ↑ " Programación concurrente: comunicación entre procesos "
- ↑ "IpcMain | Electron" .
Enlaces externos
- Página de manual de Linux ipc(5) que describe el IPC de System V
- Windows IPC
- IPC disponible mediante Qt
- Programación de redes Unix (Vol. 2: Comunicaciones entre procesos) por W. Richard Stevens
- Comunicación entre procesos y tuberías en C
- DIPC, Sistema Distribuido V IPC
- Comunicación entre procesos