La Comunicación Puede Ser:
Síncrona: quien envía permanece bloqueado esperando a que llegue una respuesta del receptor antes de realizar cualquier otro ejercicio.
Asíncrona: quien envía continúa con su ejecución inmediatamente después de enviar el mensaje al receptor.
Persistente: el receptor no tiene que estar operativo al mismo tiempo que se realiza la comunicación, el mensaje se almacena tanto tiempo como sea necesario para poder ser entregado Ejemplo: E-mail.
Momentánea (Transient): el mensaje se descarta si el receptor no está operativo al tiempo que se realiza la comunicación, por lo tanto no será entregado.
Directa: los primitivos enviar y recibir explicitan el nombre del proceso con el que se comunican, es decir, se debe especificar cual va a ser el proceso fuente y cual va a ser el proceso Destino.
Las operaciones básicas Send y Receive
se definen de la siguiente manera:
Indirecta: es aquella donde la comunicación está basada en una herramienta o instrumento ya que el emisor y el receptor están a distancia.
Simétrica: todos los procesos pueden enviar o recibir, también llamada bidireccional para el caso de dos procesos.
Asimétrica: un proceso puede enviar, los demás procesos solo reciben, también llamada unidireccional; suele usarse para hospedar servidores en Internet.
Uso De Buffers Automático: el transmisor se bloquea hasta que el receptor recibe el mensaje (capacidad cero).
La comunicación entre procesos es una de las diferencias más grandes que hay entre sistemas distribuidos y centralizados. Existen 5 formas básicas de comunicación entre procesos en los sistemas distribuidos y son:
- Protocolos con Capas. Debido a la ausencia de memoria compartida, la comunicación de los SD se basa en la transferencia de mensajes. Para facilitar la comunicación la ISO ha desarrollado el modelo OSI para permitir la comunicación entre sistemas abiertos.
- Redes con Transferencia Asíncrona. Es un tipo de transferencia híbrida que permite tanto la transmisión de voz analógica como la transmisión de paquetes de datos, que proporciona un rendimiento razonable para ambos tipos de transmisión, se ha convertido en un estándar internacional y puede jugar un papel importante en los sistemas operativos distribuidos.
- Modelo Cliente-Servidor. Se basa en la idea de estructurar el sistema operativo como un grupo de procesos en cooperación, llamados servidores, que ofrecen servicios a usuarios, llamados clientes. Se basa en un protocolo solicitud/respuesta sencillo. El cliente envía un mensaje de solicitud al servidor para pedir cierto servicio. El servidor hace el trabajo y regresa los datos solicitados o un código de error para indicar la razón por la que falló.
- Llamada a Procedimientos Remotos (RPC). Es un modelo en el cual un proceso en una máquina A llama a un proceso en una máquina B, el proceso que realiza la llamada a A se supende y la ejecución del procedimiento se realiza en B. La información se puede transportar de un lado a otro mediante los parámetros y puede regresar en el resultado del procedimiento.
- Comunicación en Grupo. Un grupo es una colección de procesos que actúan juntos en cierto sistema o alguna forma determinada por el usuario. Cuando un mensaje se envía al grupo, todos los miembros de éste lo reciben. Es una forma de comunicación uno-muchos.
¿Qué formas de comunicación tienen los procesos en sistemas operativos distribuidos?
Sistema operativo distribuido es una capa que hace transparente a los usuarios la localización de los elementos que forman parte del sistema.
Los sistemas centralizados tienen un punto de fallo único (hay un único computador en el que se ejecutan todas las aplicaciones). En los sistemas distribuidos, los elementos que lo componen están dispersos y, por lo tanto, tienen probabilidades de fallo independientes.
La Comunicaciones:
Otras comunicaciones podrían ser:
Sistemas distribuidos y centralizados:
-Protocolos con Capas.
- Redes con Transferencia Asíncrona.
- Modelo Cliente-Servidor.
- Llamada a Procedimientos Remotos (RPC).
- Comunicación en Grupo.
Síncrona
Quien envía permanece bloqueado esperando a que llegue una respuesta del receptor antes de realizar cualquier otro ejercicio.
Asíncrona
Quien envía continúa con su ejecución inmediatamente después de enviar el mensaje al receptor.
Persistente
El receptor no tiene que estar operativo al mismo tiempo que se realiza la comunicación, el mensaje se almacena tanto tiempo como sea necesario para poder ser entregado (Ej.: e-Mail).
Momentánea (transient)
El mensaje se descarta si el receptor no está operativo al tiempo que se realiza la comunicación. Por lo tanto no será entregado.
Directa
Las primitivas enviar y recibir explicitan el nombre del proceso con el que se comunican. Ejemplo:
enviar (mensaje, A) envía un mensaje al proceso A
Es decir se debe especificar cual va a ser el proceso fuente y cual va a ser el proceso Destino.
Las operaciones básicas Send y Receive se definen de la siguiente manera: Send (P, mensaje); envía un mensaje al proceso P (P es el proceso destino). Receive (Q, mensaje); espera la recepción de un mensaje por parte del proceso Q (Q es el proceso fuente).
Indirecta
La comunicación Indirecta: Es aquella donde la comunicación está basada en una herramienta o instrumento ya que el emisor y el receptor están a distancia.
Simétrica
Todos los procesos pueden enviar o recibir. También llamada bidireccional para el caso de dos procesos.
Asimétrica
Un proceso puede enviar, los demás procesos solo reciben. También llamada unidireccional. Suele usarse para hospedar servidores en Internet.
Uso de buffers automático
El transmisor se bloquea hasta que el receptor recibe el mensaje (capacidad cero).
Comunicación
Para lograr la distribución de procesos se requiere de mecanismos que permitan coordinar y controlar la ejecución de procesos en ambientes no centralizados, ya sean de manera local y remota.
· Comunicación cliente-servidor (Sockets)
Los sockets son el mecanismo de sincronización distribuida más importante.
Se les denomina conectores por que pueden unir un proceso cliente y un proceso servidor, de manera semejante a como se puede unir un enchufe de un dispositivo eléctrico con su respectivo zócalo.
Los sockets trabajan sobre capa 4 (Transporte) del modelo OSI, aunque algunos autores la ubican en la capa 5 (Sesión).
· Comunicación con RPC
Las llamadas a procedimientos remotos (RPC) fue el primer intento por obtener un middleware para la construcción de sistemas distribuidos. Su funcionamiento se basa en la arquitectura cliente/servidor siendo totalmente transparente para el usuario.
El nivel de transparencia en RPC es muy alto ya que el usuario no tiene que ver con detalles de conexión.
· Comunicación en Grupo
Se define a un grupo como un conjunto de procesos que actúan entre ellos en cierto sistema. Son dinámicos, ya que pueden aceptar nuevos procesos o estos pueden dejar a su grupo.
Los grupos pueden ser abiertos o cerrados dependiendo de cómo es el paso de mensajes entre los elementos del grupo.
· Tolerancia a fallos
La tolerancia a fallas es considerada la principal característica que debe de tener un sistema distribuido para alcanzar el principio de transparencia. Para lograr la tolerancia a fallos se necesita de una buena comunicación entre procesos distribuidos y sobretodo de una correcta coordinación entre procesos.
Comunicación en los Sistemas Operativos Distribuidos.
Para lograr la distribución de procesos se requiere de mecanismos que permitan coordinar y controlar la ejecución de procesos en ambientes no centralizados, ya sean de manera local y remota. Los primeros protocolos para la distribución de procesos remotos fueron para máquinas homogéneas.
La comunicación entre procesos (IPC) es parte fundamental de las primitivas de sincronización de un sistema distribuido. Los mecanismos de comunicación entre procesos no sólo aplican a aplicaciones distribuidas sino a cualquier tipo.
Mecanismos de Comunicación
• Comunicación con cliente servidor (sockets). son el mecanismo de sincronización distribuida más importante. Se les denomina conectores por que pueden unir un proceso cliente y un proceso servidor, de manera semejante a como se puede unir un enchufe de un dispositivo eléctrico con su respectivo zócalo.
• Comunicación con RPC. Su funcionamiento se basa en la arquitectura cliente/servidor siendo totalmente transparente para el usuario.
• Comunicación en grupo. En base a su organización los grupos pueden ser de compañeros (cuando todos los procesos son iguales y para hacer elecciones hacen recuento de votos) o Jerárquico (donde existe un proceso coordinador y el resto son trabajadores). Cuando entran nuevos procesos o se salen del grupo, se debe garantizar que los mensajes lleguen a los procesos que actualmente conforman el grupo.
• Tolerancia a fallos. Para prevenir errores se utilizan los Detectores de Fallo, los cuales son procesos que nos indican la presencia de fallos en un sistema. Se utiliza la duplicidad de los datos para tener sistemas tolerantes a fallos, de más fácil acceso, entre otras ventajas.
Fuente: "Comunicación en los Sistemas Operativos Distribuidos" - M.C. Juan Carlos Olivares Rojas (itmolrelia)
Comunicación entre procesos
En sistemas distribuidos requieren dar soporte a la comunicación entre procesos.
• Permite que 2 procesos colaboren en una tarea comunicación entre procesos en una misma máquina.
• Ejemplos: pipes, memoria compartida, señales, semáforos, etc
Comunicación entre procesos en máquinas distintas.
• Mediante intercambio de mensajes entre emisor y receptor/es
◦ uno a uno (unicast)
◦ uno a muchos (multicast)
Esquema tipico: mecanismo peticion-respuesta
• Distintos niveles de abstracción
• Ejemplos: interfaz sockets, mecanismos RPC (llamada procedim. remoto)
Es una función básica de los sistemas operativos. Los procesos pueden comunicarse entre sí a través de compartir espacios de memoria, ya sean variables compartidas o buffers, 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 sí, normalmente a través de un sistema de bajo nivel de paso de mensajes que ofrece la red subyacente.
La comunicación se establece siguiendo una serie de reglas (protocolos de comunicación). Los protocolos desarrollados para internet son los mayormente usados: IP (capa de red), protocolo de control de transmisión(capa de transporte) y protocolo de transferencia de archivos , protocolo de transferencia de hipertexto (capa de aplicación).
Los procesos pueden estar ejecutándose en una o más computadoras conectadas a una red. Las técnicas de IPC están divididas dentro de métodos para: paso de mensajes, sincronización, memoria compartida y llamadas de procediemientos remotos (RPC). El método de IPC usado puede variar dependiendo del ancho de banda y latencia (el tiempo desde el pedido de información y el comienzo del envío de la misma) de la comunicación entre procesos, y del tipo de datos que están siendo comunicados.
Síncrona
Quien envía permanece bloqueado esperando a que llegue una respuesta del receptor antes de realizar cualquier otro ejercicio.
Asíncrona
Quien envía continúa con su ejecución inmediatamente después de enviar el mensaje al receptor.
Persistente
El receptor no tiene que estar operativo al mismo tiempo que se realiza la comunicación, el mensaje se almacena tanto tiempo como sea necesario para poder ser entregado (Ej.: e-Mail).
Momentánea (transient)
El mensaje se descarta si el receptor no está operativo al tiempo que se realiza la comunicación. Por lo tanto no será entregado.
Directa
Las primitivas enviar y recibir explicitan el nombre del proceso con el que se comunican. Ejemplo:
enviar (mensaje, A) envía un mensaje al proceso A
Es decir se debe especificar cual va a ser el proceso fuente y cual va a ser el proceso Destino.
Las operaciones básicas Send y Receive se definen de la siguiente manera: Send (P, mensaje); envía un mensaje al proceso P (P es el proceso destino). Receive (Q, mensaje); espera la recepción 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 quién va dirigido y cuál es el mensaje.
FORMAS DE COMUNICACIÓN QUE TIENEN LOS PROCESOS EN SISTEMAS OPERATIVOS DISTRIBUIDOS
La diferencia más importante entre un sistema distribuido y un sistema de un único procesador es la comunicación entre procesos.
En un sistema distribuido no existe la memoria compartida y por ello toda la naturaleza de la comunicación entre procesos debe replantearse.
FORMAS DE COMUNICACIÓN:
Formas de comunicación en los SOD:
Protocolos con Capas
Debido a la ausencia de memoria compartida, toda la comunicación en los sistemas distribuidos se basa en la transferencia de mensajes, cuando el proceso “A” quiere comunicarse con el proceso “B”. Construye un mensaje en su propio espacio de direcciones. Ejecuta una llamada al sistema para que el S. O. busque el mensaje y lo envíe a través de la red hacia “B”. Para evitar el caos, “A” y “B” deben coincidir en el significado de los bits que se envíen.
Comunicación cliente-servidor Sockets
Un socket es el mecanismo de sincronización distribuida más importante. Se les denomina conectores porque pueden unir un proceso cliente y un proceso servidor de manera semejante a como se puede unir un enchufe de un dispositivo eléctrico a su respectivo socket. Para la comunicación de procesos remotos se necesita conocer la dirección de la maquina destino y el puerto. Para hacer uso de los sockets necesitamos dos cosas, una familia de protocolos para comunicación y un tipo de conexión.
Para establecer una comunicación a través de sockets se necesitan 5 requerimientos:
· Dirección del servidor
· Puerto del servidor
· Dirección del cliente
· Puerto del cliente
· Canal de comunicación abierto
Comunicación con RPC
Consiste en una colección de procedimientos que un cliente puede solicitar por el envío de una petición RPC al servidor junto con los parámetros del procedimiento. El servidor invocará el procedimiento indicado en nombre del cliente, entregando el valor de retorno, si hay alguno. Para ser independiente de la máquina, todos los datos intercambiados entre el cliente y el servidor se convierten al formato Externar Data Representation (XDR) por el emisor, y son reconvertidos a la representación local por el receptor. RPC confía en sockets estándar UDP y TCP para transportar los datos en formato XDR hacia el host remoto. Son amablemente a puesto RPC en el dominio público; se describe en una serie de RFCs.
Comunicación en grupo
La propiedad fundamental de todos los grupos es que cuando un mensaje se envía al propio grupo, todos los miembros del grupo lo reciben. Se trata de una comunicación uno - muchos (un emisor, muchos receptores), que se distingue de la comunicación puntual o punto a punto (un emisor, un receptor).
Los grupos son dinámicos:
· Se pueden crear y destruir.
· Un proceso se puede unir a un grupo o dejar a otro
· Un proceso puede ser miembro de varios grupos a la vez.
COMUNICACIÓN CON CLIENTE SERVIDOR (SOCKETS)
-Los sockets son el mecanismo de sincronización distribuida más importante.
-Se les denomina conectores por que pueden unir un proceso cliente y un proceso servidor, de manera semejante a como se puede unir un enchufe de un dispositivo eléctrico con su respectivo zócalo.
-Para la comunicación de procesos remotos se necesita conocer la dirección de la máquina destino y el puerto donde se va a escuchar.
COMUNICACIÓN CON RPC
-Las llamadas a procedimientos remotos (RPC) fue el primer intento por obtener un middleware para la construcción de sistemas distribuidos.
-Su funcionamiento se basa en la arquitectura cliente/servidor siendo totalmente transparente para el usuario.
-El problema del manejo de procesos distribuidos con sockets radica en que se basa en el flujo de E/S, haciendo los programas más difíciles de estructurar.
COMUNICACIÓN EN GRUPO
-Se define a un grupo como un conjunto de procesos que actúan entre ellos en cierto sistema.
-Los grupos son dinámicos, ya que pueden aceptar nuevos procesos o estos pueden dejar a su grupo.
-Cuando entran nuevos procesos o se salen del grupo, se debe garantizar que los mensajes lleguen a los procesos que actualmente conforman el grupo.
TOLERANCIA A FALLOS
-La tolerancia a fallas es considerada la principal característica que debe de tener un sistema distribuido para alcanzar el principio de transparencia.
-Las fallas de partición son las fallas de comunicación más importantes ya que fragmentan la red en pequeñas áreas llamadas particiones haciendo imposible el manejo de la consistencia de los datos.
-Son difíciles de detectar ya que no son visibles para todos los nodos de la red.
R e d e s A T M
El modelo de referencia OSI fue discutido y consensuado por empresas públicas y privadas de telecomunicaciones en los años setenta y fue implementado en parte en los ochenta. Los años noventa han alumbrado nuevos desarrollos tecnológicos en los niveles inferiores de la pila de protocolos OSI. Uno de ellos es ATM o modo de transferencia asíncrono.
El modelo cliente-servidor
El modelo de referencia OSI es aparentemente una buena herramienta para construir sistemas operativos distribuidos, ya que sus protocolos garantizan que los bits que se envían por la red de comunicación llegan correctamente a su destino. Sin embargo, no es así. Por una parte, hay que considerar que la implantación de los protocolos OSI representa una sobrecarga muy importante en la tarea del transporte de los bits.
Llamada a procedimiento remoto
Comunicación de grupos
La comunicación RPC tiene dos partes, una, el cliente, dos, el servidor. Hay situaciones en que este modelo no es el idóneo en un sistema con un conjunto de servidores de ficheros replicados a fin de proporcionar tolerancia a fallos.
Los sistemas distribuidos se basan en el intercambio de mensajes y la sincronización entre procesos distribuidos autónomos Comunicación entre procesos (IPC)
· Variables compartidas
· Paso de mensajes
El paso de mensajes es a través de lenguajes de programación concurrentes
· Extensiones de lenguajes
· Llamadas de APIs
Programas concurrentes: colección de dos o más programas secuenciales que se ejecutan concurrentemente (al mismo tiempo)
Sincronización:
Procesos que se ejecutan simultáneamente en diferentes
· equipos a diferentes velocidades
· Paso de mensajes primitivos
Comunicación implica
Comunicación por parte de los interlocutores y Sincronización Síncrona: cada operación se completan cuando se completa el
Par envía () - recibe ()
Asíncrona: pueden completarse por separado.
Un servicio de mensajes es fiable si se garantiza la entrega unque se pierda cierto número de ellos, que habría que recuperar.
Si no se recuperan: no fiable
Integridad: si no se corrompen los mensajes y no se duplican el orden de entrega debe reproducir el orden de envió.
¿Qué formas de comunicación tienen los procesos en sistemas operativos distribuidos?
La comunicación puede ser:
síncrona: el que envía permanece bloqueado esperando a que llegue una respuesta antes de realizar otro ejercicio.
Asíncrona: el que envía continua con su ejecución inmediatamente después de enviar el mensaje.
Persistente: el receptor no tiene que estar operativo al mismo tiempo que se realiza la comunicación.
Momentánea: el mensaje se descarta si el receptor no esta operativo al mismo tiempo.
Directa: se debe de especificar cual es el proceso fuente y cual es su destino.
Indirecta: la comunicación esta basada en una herramienta o instrumento ya que el emisor y el receptor están a distancia.
Simétrica: todos los procesos pueden enviar o recibir. Bidireccional.
Asimétrica: un proceso puede enviar, los demás procesos solo reciben. Unidireccional.
Uso de buffers automático: el transmisor se bloquea hasta que el receptor recibe el mensaje
La comunicación pude darse por:
La comunicación se da generalmente por medio de sockets y puede ser síncrona cuando se completa el proceso enviar y recibir, o asíncrona cuando se completa con solo uno de los estados anteriores (aquí se dice que es tolerante a fallos).
Hay varias formas de realizar la comunicación, algunos modelos son: