Comunicación entre procesos
En informática, comunicación entre procesos o comunicación entre procesos (IPC) se refiere específicamente a los mecanismos que proporciona un sistema operativo para permitir la procesos para gestionar los datos compartidos. Por lo general, las aplicaciones pueden usar IPC, categorizadas como clientes y servidores, donde el cliente solicita datos y el servidor responde a las solicitudes del cliente. 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 micronúcleos y nanonúcleos, que reducen la cantidad de funcionalidades proporcionadas por el núcleo. Esas funcionalidades luego se obtienen al comunicarse con los servidores a través de IPC, lo que lleva a un gran aumento en la comunicación en comparación con un núcleo monolítico normal. Las interfaces de IPC generalmente abarcan estructuras de marcos analíticos variables. Estos procesos aseguran la compatibilidad entre los protocolos multivectoriales en los que se basan los modelos IPC.
Un mecanismo IPC es síncrono o asíncrono. Las primitivas de sincronización pueden utilizarse 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 de la red y la latencia.
Método | Descripción corta | Proporcionado por (sistemas operativos u otros entornos) |
---|---|---|
Archivo | Un registro almacenado en disco, o un registro sintetizado a pedido por un servidor de archivos, que puede ser accedido por múltiples procesos. | La mayoría de los sistemas operativos |
Archivo de comunicaciones | Una forma única de PCI a finales de los años 60 que más se parece al protocolo 9P del Plan 9 | Dartmouth Time-Sharing System |
Signal; también asincrónico Trampa de sistema | Un mensaje de sistema enviado de un proceso a otro, no generalmente utilizado para transferir datos sino usado para mando a distancia el proceso asociado. | La mayoría de los sistemas operativos |
Socket | Data sent over a network interface, either to a different process on the same computer or to another computer on the network. Orientación a la corriente (TCP; los datos escritos a través de una toma requieren formato para preservar los límites del mensaje) o más raramente orientados al mensaje (UDP, SCTP). | La mayoría de los sistemas operativos |
Enchufe de dominio Unix | Similar a una toma de Internet, pero toda la comunicación ocurre dentro del núcleo. Las tomas de dominio utilizan el sistema de archivos como su espacio de dirección. Procesos hacen referencia a una toma de dominio como un inodo, y múltiples procesos pueden comunicarse con una toma | Todos los sistemas operativos POSIX y Windows 10 |
Lugar del mensaje | Un flujo de datos similar a un socket, pero que generalmente preserva los límites del mensaje. Típicamente implementados por el sistema operativo, permiten que múltiples procesos lean y escriban a la cola del mensaje sin estar directamente conectados entre sí. | La mayoría de los sistemas operativos |
Tubo anónimo | Un canal de datos unidireccional utilizando entrada y salida estándar. Los datos escritos al final de la tubería son amortiguados por el sistema operativo hasta que se lee desde el extremo de la tubería. La comunicación bidireccional entre procesos se puede lograr utilizando dos tuberías en direcciones opuestas. | Todos los sistemas POSIX, Windows |
Tubo nombre | Una tubería que se trata como un archivo. En lugar de utilizar entrada y salida estándar como con una tubería anónima, los procesos escriben y leen desde una tubería llamada, como si fuera un archivo regular. | Todos los sistemas POSIX, Windows, AmigaOS 2.0+ |
Memoria compartida | Múltiples procesos tienen acceso al mismo bloque de memoria, que crea un búfer compartido para los procesos para comunicarse entre sí. | Todos los sistemas POSIX, Windows |
Mensaje que pasa | Permite que varios programas se comuniquen usando colas de mensajes y/o canales no gestionados por el SOS. Comúnmente utilizado en modelos de concurrencia. | Utilizado en paradigmas LPC, RPC, RMI y MPI, Java RMI, CORBA, COM, DDS, MSMQ, MailSlots, QNX, otros |
Archivo de memoria | Un archivo mapeado a RAM y puede ser modificado cambiando direcciones de memoria directamente en lugar de salida a un flujo. Esto comparte los mismos beneficios que un archivo estándar. | Todos los sistemas POSIX, Windows |
Aplicaciones
Interfaces de llamadas a procedimientos remotos
- Invocación de método remoto de Java (RMI)
- ONC RPC
- XML-RPC o SOAP
- JSON-RPC
- Bus de Mensaje (Mbus) (definido en RFC 3259) (para no confundirse con M-Bus)
- . NET Remoción
- gRPC
Pila de comunicación de la plataforma
Los siguientes son sistemas de mensajería e información que utilizan mecanismos de IPC pero no implementan IPC por sí mismos:
- Protocolo de Comunicaciones por Escritorio de KDE (DCOP) – deprecatado por D-Bus
- D-Bus
- OpenWrt utiliza arquitectura de micro bus ubus
- MCAPI Multicore Communications API
- SIMPL El proyecto de mensajería de interproceso sincronizado para Linux (SIMPL)
- 9P (Plan 9 Filesystem Protocol)
- Distributed Computing Environment (DCE)
- Thrift
- Motor de Comunicaciones de Internet de ZeroC (ICE)
- ØMQ
- Enduro/X Middleware
- YAMI4
- Iluminación_(software) E16 utiliza eesh como un IPC
Pila de comunicación del sistema operativo
Las siguientes son API específicas de plataforma o lenguaje de programación:
- Eventos Apple de Apple Computer, anteriormente conocido como Interapplication Communications (IAC)
- Puertos ARexx
- LINX de Enea para Linux (fuente abierta) y varios procesadores DSP y de uso general bajo OSE
- Los puertos Mach del kernel Mach
- ActiveX de Microsoft, Modelo de Objetos de Componente (COM), Microsoft Transaction Server (COM+), Modelo de Objetos de Componente Distribuido (DCOM), Intercambio Dinámico de Datos (DDE), Enlace de Objetos y Embedding (OLE), tuberías anónimas, llamadas tuberías, Llamada de Procedimiento Local, MailSlots, bucle de Mensaje, MSRPC,.NET Remoción y Windows Communication Foundation (WCF)
- El SPX de Novell
- POSIX mmap, colas de mensajes, semáforos y memoria compartida
- RISC Mensajes de OS
- Puertas solaris
- Mensaje del sistema V colas, semaforas y memoria compartida
- Linux Transparent Inter Process Communication (TIPC)
- OpenBinder Binder abierto
- Servicio PPS de QNX (Persistent Publish/Subscribe)
Modelos de objetos distribuidos
Las siguientes son API específicas de plataforma o lenguaje de programación que usan IPC, pero no lo implementan ellas mismas:
- Libt2n para C++ bajo Linux solamente, maneja objetos complejos y excepciones
- Sesiones de PHP
- Distribuido Ruby
- Common Object Request Broker Architecture (CORBA)
- IPC asincrónico de Electron, comparte objetos JSON entre un proceso principal y un renderizador
Contenido relacionado
El estilo wiki
Charla
Adobe RoboAyuda