Comunicación
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 de un solo procesador la comunicación supone
implícitamente la existencia de la memoria compartida.
– En un sistema distribuido no existe la memoria compartida y por
ello toda la naturaleza de la comunicación entre procesos debe
replantearse.

Los procesos, para comunicarse, deben apegarse a reglas
conocidas como protocolos.
Para los sistemas distribuidos en un área amplia, estos
protocolos toman frecuentemente la forma de varias capas y
cada capa tiene sus propias metas y reglas.
21/09/16

Unidad 2 Comunicación en los
sistemas operativos distribuidos

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.
• Los primeros protocolos para la distribución de
procesos remotos fueron para máquinas homogéneas.

PROTOCOLOS CON CAPAS • Debido a la ausencia de memoria compartida. Entonces ejecuta una llamada al sistema para que el SO busque el mensaje y lo envié a través de la red hacia B. • Aunque esta idea básica suena muy sencilla. . para evitar el caos. construye primero un mensaje en su propio espacio de direcciones. Cuando el proceso A quiere comunicarse con el proceso B. A y B deben coincidir en el significado de los bits que se envíen. toda la comunicación en los SD se basa en la transferencia de mensajes.

la Organización Internacional de Estándares [International Standards Organization (ISO)] ha desarrollado un modelo de referencia que identifica en forma cara los distintos niveles. . les da nombres estandarizados y señala cuál nivel debe realizar cada trabajo. • Este modelo se llama el Modelo de Referencia para Interconexión de Sistemas –abiertos (modelo OSI).• Para facilitar el trabajo con los distinto niveles y aspectos correspondientes a la comunicación.

• Capa de transporte. Agrupa los bits en unidades. Divide un mensaje en pequeñas partes (paquetes). que a veces se llaman marcos.• Capa física. Se preocupa por la transmisión de los ceros y unos. • Capa de enlace de datos. Su tarea principal es la cuestión de la elección de la mejor ruta (ruteo). y revisar que cada marco se reciba en forma correcta. asigna a c/u un numero secuencial y después los envía. • Capa de red. .

con el fin de mantener un registro de la parte que está hablando en cierto momento y proporciona facilidades de sincronización. • Capa de aplicación. • Capa de presentación. la transferencia de archivos y la conexión entre terminales remotas a las computadoras . direcciones. Es una colección de varios protocolos para actividades comunes. como el correo electrónico.• Capa de sesión. y que el emisor notifique al receptor que un mensaje contiene un registro particular en cierto formato. Es posible definir registros que contengan campos como estos: nombres. Se preocupa por el significado de los bits. Proporciona el control del dialogo.

con la idea de estructurar el SO como un grupo de procesos en cooperación.SERVIDOR • El modelo OSI sólo se enfoca hacia un pequeño aspecto: llevar los bits del emisor hacia el receptor (y en los niveles superiores. Se necesita algo adicional. • Ese algo adicional es el modelo cliente – servidor. No dice nada acerca de la forma de estructurar al SD. llamados clientes. llamados servidores. . su significado).MODELO CLIENTE . que ofrezcan servicios a los usuarios.

. • El cliente envía un mensaje de solicitud al servidor para pedir cierto servicio. lo usual es que el modelo clienteservidor se base en un protocolo solicitud/respuesta sencillo y sin conexión.• Para evitar un gasto excesivo en los protocolos orientados hacia la conexión como OSI o TCP/IP. El servidor hace el trabajo y regresa los datos solicitados o un código de error para indizar la razón por la cual un trabajo no se pudo llevar a cabo.

. de manera semejante a como se puede unir un enchufe de un dispositivo eléctrico con su respectivo zócalo.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.

21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos . Esta característica de interconectividad entre máquinas hace que el concepto de socket nos sea de gran utilidad.Comunicación con cliente servidor (sockets) Los sockets no son más que puntos o mecanismos de comunicación entre procesos que permiten que un proceso hable (emita o reciba información) con otro proceso incluso estando estos procesos en distintas máquinas.

21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos . La forma de referenciar un socket por los procesos implicados es mediante un descriptor del mismo tipo que el utilizado para referenciar ficheros.Un socket es el sistema de comunicación entre ordenadores lo que un buzón o un teléfono es al sistema de comunicación entre personas: un punto de comunicación entre dos agentes (procesos o personas respectivamente) por el cual se puede emitir o recibir información.

permitiéndose una comunicación bidireccional. El proceso crea un socket sin nombre cuyo valor de vuelta es un descriptor sobre el que se leerá o escribirá. el cual podrá "hablar" con el proceso servidor a través de la conexión con dicho socket nombrado. 21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos . o canales de comunicación unidireccional entre procesos de una misma máquina.La comunicación entre procesos a través de sockets se basa en la filosofía Cliente-Servidor: un proceso en esta comunicación actuará de proceso servidor creando un socket cuyo nombre conocerá el proceso cliente. característica propia de los sockets y que los diferencia de los pipes.

. • 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.Sockets • Los sockets trabajan sobre la capa 4 (Transporte) del modelo OSI. aunque algunos autores la ubican en la capa 5 (Sesión).

Volver al punto 2 para esperar nuevas peticiones. 2. Abrir el canal de comunicación e informar a la red su dirección y su disposición para aceptar peticiones de servicio. . Esperar a que un cliente pida un servicio 3. Atender un cliente (servidor interactivo) a la vez o crear un proceso hijo (servidor concurrente) 4.Funciones de un servidor 1.

Enviar al servidor un mensaje de petición de servicio y esperar hasta recibir la respuesta.Funciones de un cliente 1. Cerrar el canal de comunicaciones y terminar la ejecución. Abrir el canal de comunicaciones y conectarse a la dirección del servidor. . 3. 2.

read(). close(). . write(). connect().Primitivas de sockets en el cliente • Las primitivas de sockets pueden ser bloqueantes y no bloqueantes socket().

Diagrama de Sockets Stream .

accept(). bind(). . listen().Primitivas de sockets en el servidor Las primitivas son para comunicación orientada a conexión (Stream) socket(). write(). read().

bind(). recvfrom(). sendto(). . socket().Primitivas de sockets en el servidor Las primitivas son para comunicación entre procesos no orientada a conexión (Datagramas).

Sockets • 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 .

Input Stream aux = skCliente. public Cliente( ) { try { Socket skCliente = new Socket( HOST .out.*.out.println( e.io.println( flujo. ).net.import java. import java. } } System. } } public static void main( String[] arg ) { new Cliente(). class Cliente { static final String HOST = “localhost”.getInputStream().getMessage() ).close().readUTF() . Data Input Stream? flujo = new Data Input Stream( aux ). static final int PUERTO=5000. Puerto ). skCliente. } catch( Exception e ) { System.*.

la información puede transportarse en los parámetros desde quien llama hasta el que el llamado. y puede regresar en el procedimiento resultante. y la ejecución del procedimiento llamado ocurre en B. . el proceso que llama desde A se suspende. • Lo que ellos sugirieron fue permitir que los programas llamaran a procedimientos ubicados en otras maquinas.RPC • En 1984 Birell y Nelson idearon el modelo de RPC a semejanza del llamado de procedimientos locales (LPC). • Cuando un proceso de la maquina A llama a un procedimiento de la maquina B.

.La Comunicación: RPC • La RPC no son mas que operaciones remotas disfrazadas de una interfaz procedural.

• Esta subrutina tiene la misma interfaz que la rutina de servicio del servidor. • Si las aplicaciones cliente y servidor formaran parte del mismo proceso. el cliente llamaría directamente a la rutina que ejecuta l servicio. . sin embargo aquí el cliente tiene que llamar a otra subrutina que se denomina stub del cliente.Estructura de las RPC • La aplicación cliente llama a una subrutina que se ejecuta en otra aplicación: la rutina de servicio en el servidor.

.RPC • El nivel de transparencia en RPC es muy alto ya que el usuario no tiene que ver con detalles de conexión. • La simplicidad de toda esta heterogeneidad en el llamado a un procedimiento remoto es realizado por los stubs (resguardos) tanto en el cliente como en el servidor.

. • Los stubs se comunican con los núcleos de cada proceso logrando una transparencia muy alta.RPC • Para la transferencia de datos entre los stubs. se necesita de un proceso de empacar desempacar los parámetros y resultados.

.RPC La secuencia de mensajes RPC es la siguiente: 1. El procedimiento cliente llama al stub del cliente de la manera usual. 3. 2.El núcleo envía el mensaje al núcleo remoto.El stub del cliente construye un mensaje y hace un señalamiento al núcleo.

El servidor realiza el trabajo y regresa el resultado al stub. 5. El núcleo remoto proporciona el mensaje al stub del servidor. 7.RPC 4. 6. El stub del servidor desempaca los parámetros y llama al servidor. . El stub del servidor empaca el resultado en un mensaje y hace un señalamiento al núcleo.

El stub desempaca el resultado y lo regresa al cliente. 9. 10. . El núcleo del cliente da el mensaje al stub del cliente.RPC 8. El núcleo remoto envía el mensaje al núcleo del cliente.

21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos .

El cliente falla después de enviar una solicitud. Se pierde el mensaje de solicitud del cliente al servidor 3. 2.RPC • La semántica de fallas de RPC es la siguiente: 1. 4. El servidor falla antes de recibir una solicitud. 5. El cliente no puede localizar al servidor. Se pierde el mensaje de respuestas del servidor al cliente. .

Comunicación en grupo
Una hipótesis subyacente e intrínseca de RPC es que la
comunicación solo es entre dos partes: el cliente y el servidor.
A veces existen circunstancias en las que la comunicación es entre
varios procesos y no solo dos:

Ej.: un grupo de servidores de archivo que cooperan para ofrecer
un único servicio de archivos tolerante a fallos:
– Sería recomendable que un cliente envíe el mensaje a todos
los servidores para garantizar la ejecución de la solicitud
aunque alguno falle.

RPC no puede controlar la comunicación de un servidor con
muchos receptores, a menos que realice RPC con cada uno en
forma individual.

21/09/16

Unidad 2 Comunicación en los
sistemas operativos distribuidos

21/09/16

Unidad 2 Comunicación en los
sistemas operativos distribuidos

34

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.
• Los grupos pueden ser abiertos o cerrados
dependiendo de cómo es el paso de mensajes entre
los elementos del grupo.

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.

Comunicación en grupo
• Una de las mayores problemáticas con respecto a la
comunicación en Sistemas Distribuidos es la forma en
como podemos comunicar varios procesos
distribuidos a la vez.
• La comunicación tradicional es del tipo puntual
(unicast) o bien hacia todos con el uso de la difusión
(broadcast).

Comunicación en Grupo • El problema radica en que al hacer un broadcast los mensajes llegan hacia todas las máquinas y no hay forma alguna de discriminar hacia un grupo determinado de procesos. . por este motivo suele utilizarse la técnica de multicast. • Por otra parte. el hacer broadcast está limitado en muchas redes como Internet donde no existe.

. En la práctica se utiliza muy poco y en lugar se usa comunicación con datagramas hacia un grupo de procesos donde la parte más importante es la coordinación entre procesos.Comunicación en Grupo • El problema del multicast es que se necesitan de direcciones IP especiales (Clase D) para poderse llevar acabo.

La réplica de archivos sería un requisito esencial. 21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos . software. Los tiempos de fallo aceptables por los usuarios serán cada vez menores. • Los sistemas tolerantes a fallos requerirán cada vez más una considerable redundancia en hardware. datos. • También debería contemplarse la posibilidad de que los sistemas funcionen aún con la carencia de parte de los datos. etc.Tolerancia a fallos • La difusión de los sistemas distribuidos incrementa la demanda de sistemas que esencialmente nunca fallen. comunicaciones.

En algunos casos. una falla podría provocar la falta de algunos productos en la tienda. la necesidad de soportar las fallas cada vez es mayor. 21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos .• Se dice que un sistema falla cuando no cumple su especificación. • En otros casos. una falla podría ser catastrófica. como en un sistema distribuido para el control de tráfico aéreo. Como las computadoras y los sistemas distribuidos se utilizan cada vez más en misiones donde la seguridad es crítica. como en un sistema de ordenamiento distribuido de productos en un supermercado.

• Un fallo es una condición física anormal. entradas imprevistas o el mal uso del sistema). Un error es una parte del estado del sistema la cual difiere de los valores esperados. Un estado erróneo en un sistema es un estado en el cual podría conducir a un fallo en el sistema. las causas de un fallo incluyen: errores de diseño (como errores en la especificación del sistema o en la implementación). 21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos . interferencia electromagnética. deterioro por el uso u otros problemas externos (como condiciones ambientales adversas.• Un desperfecto de un sistema ocurre cuando el sistema no desempeña estos servicios de la manera especificada. problemas de fabricación.

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.

• El primer factor a tomar en cuenta es que el canal de comunicación este libre de errores (canal confiable). – Síncrono: se suponen límites máximos para el retraso de mensajes.Tolerancia a fallos • Un Sistema Distribuido en base a la coordinación de sus procesos puede ser: – Asíncrono: no hay coordinación en el tiempo. .

se considera que los canales de comunicación son fiables y que cuando falla la comunicación es debido a la caída del proceso. – Debe haber redundancia de canales – La entrega de un paquete sea dentro de un tiempo límite especificado • En general.Tolerancia a Fallos • Para garantizar que el canal sea confiable se debe de realizar lo siguiente: – Retransmisión de mensajes. .

. • Son difíciles de detectar ya que no son visibles para todos los nodos de la red.Tolerancia a Fallos • 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.

• Esta idea atraído como consecuencia el uso de sistemas de archivos con soporte a desconexión. . los cuales son útiles en entornos de cómputo móvil.Tolerancia a Fallas • Las fallas de partición pueden ser muy comunes por lo que los sistemas de archivos deben tener un mecanismo que permita reintegrar los datos una vez eliminada la partición.

Tolerancia a Fallos .

Tolerancia a Fallos .

Tolerancia a Fallos • Para prevenir errores se utilizan los Detectores de Fallo. • Los detectores de fallos no son necesariamente exactos y la mayoría de ellos se consideran “Detectores de Fallo No Fiables” . los cuales son procesos que nos indican la presencia de fallos en un sistema.

. aunque no necesariamente han fallado. esto puede ocurrir debido a retrasos en la transmisión. los consideran sospechosos.Tolerancia a Fallos • Este tipo de detectores se basan en que si en un tiempo máximo predefinido no reciben mensajes de los nodos. • Un “Detector de Fallas Fiable” detecta los fallos en un sistema en forma exacta y normalmente requieren de hardware y software adicional.

Sincronización • Sincronización es la forma de forzar un orden parcial o total en cualquier conjunto de evento • Se utilizan algoritmos distribuidos para sincronizar el trabajo común entre los procesos- .

proceso a realizar y computadora que lo hizo). Diferencias de relojes internos en una red 8:06 8:05 8:12 8:13 .RELOJES FÍSICOS • El objetivo de la sincronización de relojes es ordenar los eventos en forma cronológica para saber cuándo se efectuó un evento (fecha. hora.

Los procesos pueden usar la marca física del tiempo provista o leída de un reloj central para expresar algún orden en el conjunto de acciones que inician.• La idea es proveer de un único bloque de tiempo para el sistema. aunque existen varios inconvenientes: el correcto registro del tiempo depende en la posibilidad de recibir correctamente y en todo momento. . • La principal ventaja de este mecanismo es la simplicidad. el tiempo actual desplegado por el reloj físico.

• Entre sí . • En ciertos sistemas es importante la hora real del reloj: – Se precisan relojes físicos externos (más de uno). el grado de exactitud depende de las constantes puestas en el sistema. • Los valores de tiempo asignados a los eventos no tienen porqué ser cercanos a los tiempos reales en los que ocurren. – Se deben sincronizar: • Con los relojes del mundo real.• Los errores de transmisión se convierten en un impedimento para el orden deseado.

• Interna: Se toman los relojes internos de las computadoras con cierto margen de atraso/adelanto de los mismos. .Sincronización de relojes • Hay 2 tipos de sincronización del reloj: • Externa: Cuando se toma el reloj de un dispositivo externo a la computadora.

• Aun considerando un tiempo uniforme existen problemas cuando se sincronizan cronómetros a través de la red: • No se puede calcular con exactitud el tiempo que tardará una respuesta en llegar .Sincronización del Tiempo • Se utiliza más el término cronómetro que reloj para medir el tiempo en sistemas distribuidos.

• En ciertos sistemas (ej.: sistemas de tiempo real ). • Entre sí. El algoritmo de Lamport proporciona un orden de eventos sin ambigüedades. pero: • Los valores de tiempo asignados a los eventos no tienen porqué ser cercanos a los tiempos reales en los que ocurren.Relojes físicos. Desde antiguo el tiempo se ha medido astronómicamente. 21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos . donde el tránsito del sol es el evento en que el sol alcanza su punto aparentemente más alto en el cielo. – Se deben sincronizar: • Con los relojes del mundo real. La medición del tiempo real con alta precisión no es sencilla. es importante la hora real del reloj: – Se precisan relojes físicos externos (más de uno). Se considera el día solar al intervalo entre dos tránsitos consecutivos del sol.

El segundo solar se define como 1 / 86. • Surge el tiempo coordenado universal (UTC). La Oficina Internacional de la Hora en París (BIH) recibe las indicaciones de cerca de 50 relojes atómicos en el mundo y calcula el tiempo atómico internacional (TAI).770 transiciones: Se tomó este número para que el segundo atómico coincida con el segundo solar promedio de 1958. Los físicos definieron al segundo como el tiempo que tarda el átomo de cesio 133 para hacer 9. – El movimiento aparente del sol. un día TAI es 3 mseg menor que un DSP: • La BIH introduce segundos de salto para hacer las correcciones necesarias para que permanezcan en fase: – El sistema de tiempo basado en los segundos TAI. se considera el segundo solar promedio de un gran número de días. Como el período de rotación de la tierra no es constante. 21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos 59 .400 de un día solar. Como consecuencia de que el día solar promedio (DSP) es cada vez mayor.192.631.

• Transmiten pulsos UTC con cierta regularidad establecida (cada segundo. y de otros países: • Operan estaciones de radio de onda corta o satélites de comunicaciones. – Si la señal se recibe por módem también se debe compensar por la ruta de la señal y la velocidad del módem. cada 0.).5 mseg. UU. etc. 21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos .El Instituto Nacional del Tiempo Estándar (NIST) de EE. – Se dificulta la obtención del tiempo con una precisión extremadamente alta. • Se deben conocer con precisión la posición relativa del emisor y del receptor: – Se debe compensar el retraso de propagación de la señal.

un cristal de cuarzo oscila con frecuencia bien definida. la forma en que se corte y la magnitud de la tensión.RELOJES LÓGICOS Casi todas las computadoras tienen un circuito para el registro del tiempo. En realidad no son relojes en sentido usual. Un cronómetro de computadora es por lo general un cristal de cuarzo trabajando con precisión. Cuando se mantiene sujeto a tensión. Cronómetro sería una mejor palabra. . que depende del tipo de cristal.

Cada oscilación del cristal disminuye en 1 al contador. . un contador y un registro mantenedor. se genera una interrupción y el contador se vuelve a cargar mediante el registro mantenedor.A cada cristal se le asocian dos registros. es posible programar un cronómetro de modo que genere una interrupción 60 veces por cada segundo o con cualquier frecuencia que se desee. De esta forma. Cuando el contador toma el valor 0. Cada interrupción recibe el nombre de marca de reloj.

cada una con su propio reloj.Tan pronto se comienza a trabajar con varias máquinas. es imposible garantizar que los cristales de computadoras distintas oscilen precisamente con la misma frecuencia. Aunque la frecuencia de un oscilador de cristal es muy estable. La diferencia entre los valores del tiempo se llama distorsión del reloj. . la situación es distinta.

Necesitamos una forma de medir el tiempo tal que a cada evento “a”. pero tampoco lo es “y –> x”: – Se dice que son eventos concurrentes. entonces “a –> c”. El algoritmo de Lamport asigna tiempos a los eventos. le podamos asociar un valor del tiempo “C(a)” en el que todos los procesos estén de acuerdo: Se debe cumplir que: – Si “a –> b” entonces “C(a) < C(b)”. • Si dos eventos “x” e “y” están en procesos diferentes que no intercambian mensajes. “C”. • “Ocurre antes de” es una relación transitiva: – Si “a –> b” y “b –> c”. siempre debe ir hacia adelante (creciente).Para sincronizar los relojes lógicos. – El tiempo del reloj. entonces “x –> y” no es verdadero. Lamport definió la relación ocurre antes de (happens-before): • Si “a” y “b” son eventos en el mismo proceso y “a” ocurre antes de “b”. entonces “a –> b” es verdadero. 21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos . y nunca hacia atrás (decreciente).

El mensaje “c” de “2” a “1” sale en “60” y llega en “56”. El mensaje “d” de “1” a “0” sale en “64” y llega en “54”. 21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos . El mensaje “b” de “1” a “2” tarda 16 marcas de reloj. Si el mensaje acarrea el tiempo de inicio “6”. – Cada mensaje acarrea el tiempo de envío. Lamport utiliza la relación “ocurre antes de”: – Si “c” sale en “60” debe llegar en “61” o en un tiempo posterior. – Cuando un mensaje llega y el reloj del receptor muestra un valor anterior al tiempo en que se envió el mensaje: • El receptor adelanta su reloj para que tenga una unidad más que el tiempo de envío. El proceso “1” recibe el mensaje “a” cuando su reloj marca “16”. de acuerdo con el reloj del emisor.Consideramos tres procesos que se ejecutan en diferentes máquinas. lo cual es imposible. cada una con su propio reloj y velocidad: • • • • • • • El proceso “0” envía el mensaje “a” al proceso “1” cuando el reloj de “0” marca “6”. el proceso “1” considerará que tardó 10 marcas de reloj en viajar. tardaría un tiempo negativo.

21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos .

“C(a) < C(b)”. • • Si “a” y “b” son el envío y recepción de un mensaje. 21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos . el reloj debe marcar al menos una vez. con las siguientes condiciones: Si “a” ocurre antes de “b” en el mismo proceso. Con este algoritmo se puede asignar un tiempo a todos los eventos en un sistema distribuido. “C(a) < C(b)”. si se hace el siguiente agregado: • • Entre dos eventos cualesquiera. “C(a)” es distinto de “C(b)”.Este algoritmo cumple nuestras necesidades para el tiempo global. Dos eventos no deben ocurrir exactamente al mismo tiempo. Para todos los eventos “a” y “b”.

Resumiremos dos de los ejemplos analizados por Liskov (1993) . es posible mantener millones de relojes sincronizados con UTC. Apenas comienzan a aparecer nuevos algoritmos que utilizan relojes sincronizados.Uso de la sincronización Se dispone del hardware y software necesarios para la sincronización de relojes a gran escala (es decir. Con esta nueva tecnología. en todo Internet). con precisión de unos cuantos milisegundos.

Entrega de mensajes a lo más uno • Nuestro primer ejemplo se refiere a la forma de reforzar la entrega de a lo más un mensaje a un servidor. • El problema con el algoritmo es que si un servidor falla y vuele a arrancar. de modo que pueda establecer diferencia entre los mensajes nuevos y las retrasmisiones. pierde su tabla con los números de mensajes. • El método tradicional es que cada mensaje tenga un número de mensaje. incluso en presencia de fallas. y que cada servidor guarde los números de los mensajes que ha visto. .

es deseable que los clientes puedan ocultar archivos de manera local. Por razones de desempeño. Sin embargo. . el ocultamiento introduce una potencia inconsistente si dos clientes modifican el mismo archivo al mismo tiempo.Consistencia del caché en base en el reloj • El segundo ejemplo se refiere a la consistencia del caché en un sistema distribuido de archivos.

incluso si la copia se realizó unas cuantas horas antes. el servidor tiene que solicitar al cliente de lectura que invalide su copia.• La solución usual consiste en distinguir entre ocultar un archivo para su lectura o para su escritura. • Este costo adicional se puede eliminar mediante los relojes sincronizados. • La desventaja de este esquema es que si un cliente tiene un archivo oculto para lectura. antes de que otro cliente pueda obtener una copia para escritura. .

• El ejemplo más conocido es la caché de los servidores Proxy Web. los cuales almacenan las páginas visitadas por los usuarios. Así cuando un cliente pide una página. .Manejo de cache • La caché es un área de memoria utilizada para agilizar los procesos de lecturaescritura. se revisa si está en la cache agilizando la navegación y reduciendo el ancho de banda.

• Cuando un proceso distribuido desea entrar a una región crítica debe de enviar la solicitud a todos los demás procesos recibiendo respuestas de todos. .Exclusión mutua • La exclusión mutua garantiza que sólo un proceso esté en una región crítica. • La exclusión mutua en sistemas distribuidos basa su funcionamiento en variantes de sistemas centralizados.

. TokenBus) teniendo un mensaje especial llamada token para poder entrar a la sección crítica. Existen varias formas de exclusión mutua Exclusión mutua en anillo: similar al manejo de redes con topología física y lógica en anillo (TokenRing.Si otro proceso hace la solicitud al “mismo tiempo” se tomará como criterio de desempate la marca de tiempo o prioridad.

Exclusión mutua en anillo .

monitores y similares. En sistemas distribuidos la cuestión es más compleja.Exclusión Mutua Cuando un proceso debe leer o actualizar ciertas estructuras de datos compartidas: • Primero ingresa a una región crítica para lograr la exclusión mutua y garantizar que ningún otro proceso utilizará las estructuras de datos al mismo tiempo. 21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos . En sistemas monoprocesadores las regiones críticas se protegen con semáforos.

21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos . Solicitando permiso de acceso.Un Algoritmo Centralizado • La forma más directa de lograr la exclusión mutua en un sistema distribuido es simular a la forma en que se lleva a cabo en un sistema monoprocesador. Se elige un proceso coordinador. Si ningún otro proceso está en ese momento en esa región crítica: – El coordinador envía una respuesta otorgando el permiso. Cuando un proceso desea ingresar a una región crítica: – – – – Envía un mensaje de solicitud al coordinador: Indicando la región crítica.

Unidad 2 Comunicación en los sistemas operativos distribuidos .Un Algoritmo Distribuido El objetivo es no tener un único punto de fallo (el coordinador central). es el algoritmo de Lamport mejorado por Ricart y Agrawala. su número de proceso y la hora actual. Si el receptor desea entrar a la región crítica pero aún no lo logró. al emisor. Cuando un proceso desea entrar a una región crítica: – – – Construye un mensaje con el nombre de la región crítica. Si el receptor ya está en la región crítica no responde y encola la solicitud. Se requiere un orden total de todos los eventos en el sistema para saber cuál ocurrió primero. Se supone que cada mensaje tiene un reconocimiento. • • • 21/09/16 Si el receptor no está en la región crítica y no desea entrar a ella. envía de regreso un mensaje o. Un ej. • La marca contenida en el mensaje que envió a cada uno. compara: • La marca de tiempo del mensaje recibido con.k. Envía el mensaje a todos los demás procesos y de manera conceptual a él mismo.

El reloj en software mantiene un registro del número de marcas (interrupciones) a partir de cierta fecha acordada antes. • Se debe mantener el tiempo de todas las máquinas tan cercano como sea posible. Se supone que cada máquina tiene un cronómetro que provoca una interrupción “h” veces por segundo. Cuando el cronómetro se detiene. todas las máquinas deben sincronizarse con ella. 21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos . el manejador de interrupciones añade “1” a un reloj en software. al valor de este reloj se lo llama “C”. Si ninguna máquina tiene un receptor de UTC: • Cada máquina lleva el registro de su propio tiempo.Comunicación en grupos (Algoritmos Para la Sincronización de Relojes) Si una máquina tiene un receptor de UTC.

Cada máquina envía un mensaje al servidor para solicitar el tiempo actual. Cuando el emisor obtiene la respuesta puede hacer que su tiempo sea “CUTC”.Algoritmo de Cristian • Es adecuado para sistemas en los que: una máquina tiene un receptor UTC. en un tiempo no mayor segundos. – El objetivo es sincronizar todas las máquinas con ella. El despachador del tiempo responde prontamente con un mensaje que contiene el tiempo actual “CUTC”. periódicamente. • Un gran problema es que el tiempo no puede correr hacia atrás: – • “CUTC” no puede ser menor que el tiempo actual “C” del emisor. • La atención del requerimiento en el servidor de tiempos requiere un tiempo del manejador de interrupciones. 21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos . • También se debe considerar el tiempo de transmisión. por lo que se la llama despachador del tiempo.

– Con las respuestas: • Calcula un tiempo promedio. 21/09/16 Unidad 2 Comunicación en los sistemas operativos distribuidos . – Realiza un muestreo periódico de todas las máquinas para preguntarles el tiempo.Algoritmo de Berkeley • En el algoritmo de Cristian el servidor de tiempo es pasivo. • Indica a las demás máquinas que avancen su reloj o disminuyan la velocidad del mismo hasta lograr la disminución requerida. • Es adecuado cuando no se dispone de un receptor UTC. En el algoritmo de Berkeley el servidor de tiempo: – Es activo.

• Existen varios algoritmos. Este algoritmo consiste en que un proceso envía la solicitud si nadie responde se convierte en coordinador. .Algoritmos de elección • Una forma más sencilla de llevar acabo la sincronización es a través de la elección de un coordinador encargado de centralizar la decisión de dar acceso a la región crítica. Entre ellos el del grandulón. si varios responden será coordinador aquel que tenga mayor prioridad.

Algoritmo del Grandulón .

Algoritmo de Elección en anillo • Los procesos se ordenan en forma jerárquica. envía un mensaje a los demás. • Cuando un proceso detecta un fallo. al regresar el token al nodo origen se determina quien ganó y se distribuye el mensaje . cada nodo empieza a destapar su candidatura.

.

• Las transacciones manejan 4 propiedades básicas: atómicas.Transacciones Atómicas • Un esquema para garantizar la adecuada sincronización de la información en sistemas centralizados como distribuidos son el uso de transacciones. consistentes. aisladas y durables (ACID por sus siglas en inglés). .

• Las primitivas de las transacciones son: • BEGIN_TRANSACTION (inicio de transacción) • END_TRANSACTION (fin de transacción) • ABORT_TRANSACTION (deshacer operación) • READ (leer datos de un archivo u objeto) • WRITE (escribir datos a un archivo u objeto) .

prevenir y eliminar interbloqueos. por lo cual ningún proceso puede avanzar. formado una cadenita que al final se cierra. • Se manejan variantes de algoritmos centralizados para tratar de detectar. .Interbloqueo • Surge cuando un proceso busca el recurso ocupado por otro proceso y a su vez este proceso busca otro recurso.

la información tiene que ser reintegrada en las demás réplicas.• Una forma de evitar interbloqueos es a través de la replicación de recursos. . El problema radica en si los recursos son modificados.

.• Se utilizan varias estrategias para el manejo de los bloqueos: 1. Detección (permitir que ocurran los bloqueos. detectarlos e intentar recuperarse de ellos). Prevención (lograr estáticamente que los bloqueos sean imposibles sean imposibles desde el punto de vista estructural). 3. 4. 2. Evitarlos (evitar los bloqueos mediante la asignación cuidadosa de los recursos). El algoritmo del avestruz (ignorar el problema).