
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
- POSIXmmap, message queues, semaphores,[7] and shared memory
- RISC OS's messages
- SolarisDoors
- System V's message queues, semaphores, and shared memory
- Linux Transparent Inter Process Communication (TIPC)
- OpenBinder Open binder
- QNX's PPS (Persistent Publish/Subscribe) service
Distributed object models
The following are platform or programming language specific-APIs that use IPC, but do not themselves implement it:
- PHP's sessions
- Distributed Ruby
- Common Object Request Broker Architecture (CORBA)
- Electron's asynchronous IPC, shares JSON objects between a main and a renderer process[8]
See also
References
- Stevens, Richard (1999). UNIX Network Programming. Interprocess Communications. Vol. 2 (Second ed.). Prentice Hall. ISBN 0-13-081081-9.
- Ramachandran, U.; Solomon, M.; Vernon, M. (1987). "Hardware support for interprocess communication". Proceedings of the 14th annual international symposium on Computer architecture. Pittsburgh, Pennsylvania, United States. 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 December 1992). Using communication-to-computation ratio in parallel program designand performance prediction. pp. 238–245. ISBN 0-8186-3200-3.
- 12"Interprocess Communications". Microsoft.
- ↑Camurati, P (1993). "Inter-process communications for system-level design". International Workshop on Hardware/Software Codesign.
- ↑Operating System Concepts. ISBN 978-0470128725.
- ↑Computer Organization and Design MIPS Edition: The Hardware/Software Interface (The Morgan Kaufmann Series in Computer Architecture and Design). Morgan Kaufmann. ISBN 978-0124077263.
- ↑Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers. Pearson. ISBN 978-0131405639.
- ↑"Windows/WSL Interop with AF_UNIX". Microsoft. 7 February 2018. Retrieved 25 May 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
- Comunicación entre procesos 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