Comunicación entre procesos
De Wikipedia, la enciclopedia libre
La Comunicación entre procesos, en ingles IPC (Interprocess Communication) es una función básica de los Sistemas operativos. Los procesos pueden comunicarse entre si a través de compartir espacios de memoria, ya sean variables compartidas o buffers, y/o a través de las herramientas provistas por las rutinas de IPC. La IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse entre si. Normalmente a través de un sistema de mensajes.
Tabla de contenidos |
[editar] Conceptos Básicos
El sistema Operativo provee minimamente dos primitivas, enviar(mensaje) y recibir(mensaje), normalmente llamadas send y receive. Asimismo, debe implementarse un enlace de comunicación entre los procesos. Este enlace puede ser unidireccional o multidireccional según permita la comunicación en solo uno o en todos los sentidos.
[editar] Tipos de comunicación
La comunicación puede ser:
- Directa o Indirecta
- Simétrica o Asimética
- Con uso de buffers explícito o automático
- Envio por copia el mensaje o por referencia
- Mensajes de tamaño fijo o variable
[editar] Directa
Las primitivas enviar y recibir explicitan el nombre del proceso con el que se comunican. Ej:
enviar (mensaje, A) envía un mensaje al proceso A
Es decir se debe especificar cual va ha ser el proceso fuente y cual va ha ser el proceso Destino.
Las operaciones basicas Send y receive se definen de la siguiente manera: Send (P, mensaje); envia un mensaje al proceso P (P es el proceso destino). Receive (Q, mensaje); espera la recepcion de un mensaje por parte del proceso Q (Q es el proceso fuente).
Nota: Receive puede esperar de un proceso cualquiera, un mensaje, pero el Send sí debe especificar a quien va dirigido y cual es el mensaje.
[editar] Indirecta
La comunicación indirecta se implementa mediante puertos, en alguna bibliografía se lo denomina buzones. Para poder comunicarse los procesos deben compartir el puerto. Ej:
enviar (mensaje, P) envía un mensaje al puerto P
[editar] Simétrica
Todos los procesos pueden enviar o recibir. También llamada Bidireccional para el caso de dos procesos.
[editar] Asimétrica
Un proceso puede enviar, los demás procesos solo reciben.También llamada Unidireccional.
[editar] Uso de buffers explícito
Ver Named pipe
[editar] Uso de buffers automático
Ver Pipes
[editar] Tabla de métodos de IPC (no exaustiva)
Método | Provisto por (Sistema Operativo u otro ambiente ) |
---|---|
Archivo | Todos los Sistemas Operativos. |
Señal | La mayoría de los Sistemas Operativos; algunos , como Windows, solo implementan señales en las liberías de C run-time de C y actualmente no proveen soportes paro su uso como técnica de IPC. |
Socket | La mayoría de los Sistemas Operativos. |
Tubería / Pipes | Todos los sistemas POSIX . |
Named pipe | Todos los sistemas POSIX. |
Semáforo | Todos los sistemas POSIX. |
Memoria compartida | Todos los sistemas POSIX . |
Mensajes | Usado en el paradigma MPI, Java RMI, CORBA y otros. |
Mapa de Memoria | Todos los sistemas POSIX. Windows también soporta esta tecnica las APIs usadas son especificas de esta plataforma. |
Cola de Mensajes | La mayoría de los Sistemas Operativos. |
puertos | Algunos Sistemas Operativos. |
[editar] Referencias
Sistemas Operativos :ISBN 968-444-310-2 Autores: Siverschatz - Galvin
Sistemas Operativos :ISBN 84-205-4462-0 Autor: Stallings