Resumen progresivo de S.O.D Unidad 1: Introducción Introducción a los sistemas distribuidos Definición Características de los sistemas distribuidos Tipos de sistemas distribuidos Sistemas distribuidos de cómputo Sistemas distribuidos de información Sistemas embebidos Sistemas en tiempo real Sistemas colaborativos Arquitecturas y modelos Arquitecturas de software: Modelos de SW aplicables a S.D. Arquitecturas en capas Arquitectura basadas en objetos Unidad 2: Procesos Relación procesos - hilo: Intercambio de procesos en la CPU Hilos en Sistemas Hilos en Sistemas Distribuidos Procesos clientes Servidores multihilos Migración y virtualización Marco de trabajo proceso (framework) Según iniciativa de migración Resumen progresivo de S.O.D 1 Virtualización Unidad 3: Sincronización, estado Sincronización de relojes Relojes físicos Algoritmos de sincronización de relojes Algoritmos de resincronización de relojes Algoritmo de Berkeley Relojes lógicos Relojes lógicos de Lamport Relojes vectoriales Exclusión mutua Algoritmos centralizado para exclusión mutua distribuida Algoritmo distribuidos Algoritmo de Token Algoritmo de Elección (Coordinador o proceso especial) Algoritmo "Bully" abuson Algoritmo de anillo Elecciones en ambientes inalámbricos Unidad 4: Comunicación Tipos de comunicación Llamadas a procedimientos remotos RPC Asíncrona RPC síncrona diferida Comunicación transitoria Orientada a mensajes Sockets Berkeley (a nivel capa de transporte) Interfaz de paso de mensajes (MPI) Comunicación persistente orientada a mensajes Middleware orientado a mensajes MOM o sistemas de Colas de mensajes Direccionamiento de un sistema de colas de mensajes Organización con ruteadores de un sistema de colas de mensajes Comunicación en Grupo Comunicación en objetos distribuidos e invocación remota (RMI) Localizar objetos remotos: Aplicación distribuida: creación usando RMI Comunicación orientada a flujos Medio continuo Sincronización de flujos Comunicación por multitransmisión Parcial 1 Resumen progresivo de S.O.D 2 Unidad 5: Nombres (naming) Unidad 6: Consistencia y replicación Unidad 7: Archivos y memoria en S.D. Unidad 8: Seguridad en S.D Unidad 9: Transacción y control de concurrencia en S.D Unidad 1: Introducción 📚 Temas: 1. Introducción a los Sistemas Operativos Distribuidos, definición, objetivos, hardware, software. 2. Sistemas en tiempo real, embebidos, y colaborativos: definición y conceptos. 3. Tipos de Sistemas Distribuidos 4. Arquitecturas: modelos, arquitecturas. Introducción a los sistemas distribuidos Definición Un sistema distribuido es una colección de computadoras independientes que dan al usuario la impresión de construir un único sistema coherente. Estas computadoras colaboran entre sí. La colaboración es el factor clase de los Sistemas Distribuidos. Organizados a menudo como una capa de software entre las aplicaciones de usuario y el Sistema Operativo y soporte a las comunicaciones, De la siguiente forma: Resumen progresivo de S.O.D 3 Características de los sistemas distribuidos Facilidad de acceso a los recursos: esto se hace por razones económicas, colaborativas y de intercambio de información (groupware) Ocultar razonablemente el hecho que los recursos están dispersos: en esto se define el acceso a los datos, la ubicación del recurso, el número de copias (replicación del recurso), las condiciones de competencia, y los errores y recuperación de un recurso. Debe ser abierto: es decir que debe haber interoperatividad entre los sistemas, la portabilidad de aplicaciones, y la expansibilidad de componentes que conforman al S.D. Debe ser escalable: cumple 3 dimensiones. 1) el tamaño, agregado fácil de componentes. 2) geográficamente, usuarios y recursos distantes uno de los otros. 3) administrativamente, gestionable aún con muchas organizaciones. Tipos de sistemas distribuidos Sistemas distribuidos de cómputo Es una colección de computadoras separadas físicamente y conectadas entre sí por una red de comunicaciones distribuida. Cada máquina posee sus componentes de hardware y software que el usuario percibe como un sólo sistema. El usuario accede a los recursos remotos de la misma manera en que accede a recursos locales, o un grupo de computadores que usan un software para conseguir un objetivo en común. Tiene como objetivo el cómputo de alto rendimiento. Se divide en 2 categorías: 1. Cómputo en cluster: son conjuntos de computadoras construidas mediante la utilización de componentes de hardware comunes y que se comportan como si fuesen una única computadora. Están conectadas por una red de área local de alta velocidad. 2. Cómputo en malla (GRID): la computación en grid o en malla es un nuevo paradigma de computación distribuida en el cual todos los recursos de un número indeterminado de computadoras son englobadas para ser tratadas como un único super ordenador de manera transparente. ¿Cómo funciona? [ Todo S.D de cómputo: Recopilado de acá ] Sistemas distribuidos de información Resumen progresivo de S.O.D 4 Asociados a las Bases de Datos, donde se realizan peticiones al servidor. Ejecutan todas las peticiones o ninguna, utilizan primitivas especiales. <Completar> Sistemas embebidos Asociados al control de las funciones de dispositivos. Tiene operaciones restringidas, donde el dispositivo las ofrece como funciones que el usuario puede ejecutar. Funciona en computadoras que operan dispositivos pero que no aceptar software de usuario. Por lo general, brindan funciones relacionadas al dispositivos en cuestión, por ejemplo, robots, placas mecánicas, cosas con Arduino, etc. Un ejemplo de esto pueden ser redes caseras (con computadoras, televisores, consolas, etc), o sistemas electrónicos para el cuidado de la salud (como los de los estudios. O sistemas de monitoreo. Sistemas en tiempo real Garantizan la acción en un instante dado. El tiempo es el parámetro clave del sistema. Controla procesos y sondea y toma acciones en un determinado instante a los dispositivos. Si las acciones hay que tomarlas en un cierto tiempo sin excepción, el sistema es un sistema de tiempo real duro. Si se permite una franja de tiempo de fallo, se le considera un sistema de tiempo real suave. Sistemas colaborativos Son sistemas que intentan satisfacer la necesidad de realizar actividades que necesiten de colaboración. Para esto, existen dos tipos de software colaborativo, el groupware y el workflow. El primero es un tipo de software colaborativo que ayuda a grupos de trabajo a realizar sus actividades a través de una red. Este provee un ambiente de colaboración, en el que realmente se percibe que el trabajo en grupo se lleva a cabo. Mantiene la información en un único sitio común para todos los miembros. El workflow permite administrar y automatizar procesos de negocios. Responden a necesidades individuales, reducen tiempo, dinero y esfuerzo en la ejecución de un proceso de negocio. Arquitecturas y modelos Resumen progresivo de S.O.D 5 Arquitecturas de software: Modelos de SW aplicables a S.D. Arquitecturas en capas <xd> Arquitectura basadas en objetos <xd> Unidad 2: Procesos 📚 Temas: 1. Hebras de control, Asignación de procesadores, Planificación. 2. Agentes, clientes, servidores. 3. Migración de procesos, virtualización. Relación procesos - hilo: Para ejecutar un programa en S.O, se crea un cierto número virtual de procesadores, donde cada uno ejecuta un programa diferente. Existe una tabla de control de procesos (BCP) que da continuidad a la ejecución. Almacena las entradas correspondientes a registros, mapas de memoria, información, etc. El S.O asegura la ejecución normal y concurrente de todos los procesos que comparten la CPU. Esta asignación de hardware se hace en forma transparente. Intercambio de procesos en la CPU Conlleva: 1. Cambios de contexto 2. Modificaciones de los registros de la MMU 3. Invalidar caches de traducción de direcciones TLB 4. Intercambio de procesos entre memoria principal y el disco Resumen progresivo de S.O.D 6 Un proceso ejecuta una única actividad, NOI es adecuado en sistemas distribuidos porque plantea limitaciones en la concurrencia. Para que esto no pase, tienen que utilizarse hilos para ejecutar distintas actividades de manera concurrente. En S.O.D, los procesos forman un bloque de construcción y amplían la integración de aplicaciones proporcionadas por los S.O locales. Tener múltiples hilos de control por proceso nos da una facilidad para la construcción de aplicaciones y un mejor rendimiento. Hilos en Sistemas El problema de los hilos en los sistemas es que al tener un único hilo de control es que una llamada de sistema se bloquea como un todo. Entonces la manera para solucionarlo es una tecnología multihilos, y podemos adoptar una mirada más paralelista cuando ejecutamos el programa dentro de un sistema multiprocesador. En esencia, el hilo es igual a un proceso que posee su propio segmento de código, independientemente de los demás hilos. No hace ningún intento de lograr un alto grado de transparencia (si el rendimiento se ve afectado). Este sistema de hilos mantiene un mínimo de información para la CPU con varios hilos. En general, se ignora la información que no es estrictamente necesaria para manipular múltiples hilos. Una aplicación multihilos rara vez tiene un rendimiento peor que usar un hilo solo, también demanda un esfuerzo intelectual adicional para proteger a los hilos entre sí, tener en cuenta un diseño simple resulta de ayuda y la protección de datos recae en los desarrolladores. Al usar hilos la comunicación se afectúa mediante datos compartidos. Algunas aplicaciones son fáciles de estructurar como una colección de hilos cooperativos. Para esto, se puede implementar un paquete de hilos para crearlos y destruirlos, y para manejar la sincronización. Esto de hace por: 1. Biblioteca de hilos: crearla y destruirla es barato y toda la administración de los hilos se mantiene en el espacio de direcciones del usuario. Lo que cuesta es establecer una pila de hilos y liberarla. El intercambio de contexto de hilo se realiza mediante instrucciones cortas, no requiere modificar mapas de memoria, reinicio de TBL, etc. 2. Hilos a nivel kernel. <no entendi xd> Hilos en Sistemas Distribuidos Permiten llamadas al sistema sin bloquear todo el proceso en que se ejecuta el hilo. Permiten expresar la comunicación como conexiones lógicas concurrentes. En el caso de clientes Resumen progresivo de S.O.D 7 multihilos la transparencia de distribución involucra retardos en la propagación en redes de área amplia. Procesos clientes Están compuestos por dos interfaces: 1. La de usuario 2. La de red Para la interacción usuario-servidor_remoto. Depende de la aplicación parte del procesamiento y el nivel de datos se ejecutan del lado del cliente. Servidores multihilos El principal uso de multihilos en SD está del lado del servidor, porque simplifica el código del servidor, el paralelismo es más sencillo de implementar y hay mayor disponibilidad a la hora de aceptar peticiones y procesar trabajo. Arquitecturas alternativas de servidor basada en hilos: 1. Hilos por objeto 2. Hilos por conexión 3. Hilos por soilicitud Procesos servidores Servidores: proceso que implementa servicio específico para un conjunto de clientes. Hay dos que están dentro del PDF: 1. Servidor iterativo: manipula la petición y si es necesario devuelve respuesta 2. Servidor concurrente: no manipula peticiones, pasa la petición a un hilo separado u otro proceso. Migración y virtualización La migración es una técnica que permite transferir un proceso de un nodo a otro. Por supuesto esto tiene sus beneficios: 1. Equilibrio de carga, en un SD evita que ciertos nodos lleguen a un rendimiento casi nulo y otros se encuentren ociosos. Resumen progresivo de S.O.D 8 2. Aumenta la tolerancia de fallos 3. Mejoras en el rendimiento en general 4. Mejor uso de los recursos. Configurar sistemas distribuidos en forma dinámica es posible con la migración del código. Hay modelos para la migración de código, son los siguientes según el PDF: Marco de trabajo proceso (framework) Consta de 3 segmentos: 1. Código 2. Recursos 3. Ejecución Y tiene tipos como por ejemplo la movilidad débil que transfiere el segmento de código + algunos datos de sincronización, el programa transferido comienza desde unoi de los diversos puntos de inicio preferido. Y luego la movilidad fuerte que también transfiere el segmento de ejecución. Según iniciativa de migración Migración iniciada por remitente: Inicia en la máquina donde reside el código Requiere validar al cliente en el servidor receptor. En general, se hace cuando los programas se cargan al servidor de cómputo. Migración iniciada por destinatario: La máquina destino toma iniciativa para migrar el código Ocurre entre un cliente y un servidor Suele ser anónima y responde a mejoras de rendimiento en el cliente Virtualización La separación entre una sola CPU y ser capaz de pretender que existe más CPU de procesamiento para la virtualización de recursos. Las arquitecturas y sistemas bases cambian de Resumen progresivo de S.O.D 9 manera más rápida que el software de alto nivel. Esto permite simplificar la diversidad de plataformas y máquinas y ejecutar aplicaciones de forma virtual. Unidad 3: Sincronización, estado 📚 Temas: 1. Sincronización de relojes 2. Ordenamiento de eventos 3. Exclusión mutua 4. Elección de coordinador. Sincronización de relojes La cooperación entre procesos y su sincronización tienen mucha relación entre sí. En ambientes SD la sincronización es por mucho más difícil que en ambientes mono y multiprocesador. En ambientes distribuidos se crece de un tiempo global. Si cada máquina tiene su propio reloj, es factible que un evento anterior a otro tenga un tiempo superior. Relojes físicos Los relojes poseen cristales de cuarzo mecanizado con precisión. Oscilan a una frecuencia bien definida. Usan dos registros: 1. Un contador, donde cada oscilación disminuye el contador en 1, al llegar a 0 genera interrupción y el contador se reinicia a partir del mantenedor. 2. Y el mantenedor xd Esta pérdida de sincronía entre relojes es gradual, pero en tiempo real la hora es importante. Algoritmos de sincronización de relojes Hay una máquina sincronizada con una máquina que posea un receptor de tiempo. Cada máquina tiene un cronómetro que ocasiona una interrupción n veces por segundo. Al apagarse el cronómetro, el manipulador de interrupciones agrega 1 al reloj de software. El reloj de software mantiene el número de marcas a partir de algún momento acordado en el pasado. Resumen progresivo de S.O.D 10 Algoritmos de resincronización de relojes NTP protocolo de tiempo de red. El servidor de tiempo al cual se conectan los clientes da el tiempo exacto (posee un receptor WWV). Se estiman los retrasos ocasionados por los mensajes para contactar el servidor. Si el retraso de A a B es igual a B a A → T1 - T1 es mas o menos T4 - T3 El NTP se configura entre pared de servidores, es decir, que el sondeo será de A a B y también de B a A. Se almacenan ocho pares de valores de compensación X y la estimación de desvío Y, (X, Y) se usa ese valor mínimo Y y su asociado X como estimación más confiable para compensar. Algoritmo de Berkeley Es un servidor de tipo activo. Cada cierto tiempo pregunta a cada máquina sobre la hora registrada en ellas. Usa las respuestas para calcular el promedio. Indica a cada máquina que adelante o retrase su reloj, según la nueva hora. Este algoritmo es conveniente si ninguna máquina tiene un receptor WWV y se ajustan los tiempos manualmente por el operador del demonio del tiempo (servidor) ?????? se fumo algo Soto Resumen progresivo de S.O.D 11 Relojes lógicos No siempre la sincronización de los relojes está relacionada al tiempo real. Puede ser suficiente que se coincidan con el tiempo actual. Los relojes lógicos apuntan a ordenar los eventos de cada nodo. Según Lamport: "lo importante es que los procesos coincidan en como ocurren los eventos". Relojes lógicos de Lamport Se define la relación ocurrencia anterior a —> b "a ocurre antes que b". Si a y b son eventos del mismo proceso, a—>b es verdadero, y a ocurre antes que b. Si un proceso envía un mensaje a y b es el evento de recepción en otro proceso, a→ b es verdadero. Entonces un mensaje no puede recibirse al mismo tiempo o antes de ser enviado (se requiere valor distinto a 0 para envío). Los envíos son concurrentes si nada se puede decir sobre como ocurrieron los eventos. Resumen progresivo de S.O.D 12 En S.D: Relojes vectoriales Con Lamport no es posible determinar oden de dos eventos solo por comparar sus tiempos: si C(a) < C(b) entonces no implica que a→b Lamport no captura la causalidad, los relojes vectoriales sí. VC(a) reloj vectorial con evento a, tiene la propiedad de que sí. NO ENTIENDO ESTO. Exclusión mutua Los accesos concurrentes pueden corromper o hacer inconsistentes los recursos, se necesita acceso mutuamente exclusivo: Requisitos de las soluciones: No debe producir bloqueo indefinido No debe producir inanición La solución debe ser equilibrada. Medidas a considerar: Números de mensajes por solicitud Retraso de sincronización Resumen progresivo de S.O.D 13 Tiempo de respuesta. Planteamos el modelo de sistema como uno que contiene n procesos, cada uno con un procesador diferente y una sección crítica que precisa una exclusión mutua. Algoritmos centralizado para exclusión mutua distribuida Emula lo que se hace con un procesador. Elige uno de los procesos para coordinar la entrada en la sección crítica. Si un proceso que quiere entrar en su sección crítica envía un mensaje de solicitud (request) al coordinador. El esquema precisa de tres mensajes por entrada a SC: request, reply y release. Algoritmo distribuidos Es el algoritmo de Ricart y Agrawala (1981), que mejora el de Lamport (1978). Requiere un ordenamiento de eventos (Lamport). Tiene estas weas: 1. Para acceder a un recurso, el proceso elabora un mensaje 2. El mensaje contiene el nombre del recurso, un número del proceso, tiempo actual. 3. Envía los mensajes a los demás procesos (autoincluido). 4. Supone la no pérdida de mensajes. 5. Espera hasta tener todos los OK → ingresa, al salir envía OK a todos los encolados y se borra de la misma. Funcionamiento básico del Algoritmo distribuido. Al recibir petición de otro proceso, la acción depende del recurso mencionado: El destinatario no accede y no desea acceder envía OK. El destinatario ya cuenta con acceso, no responde y coloca en cola la petición. Resumen progresivo de S.O.D 14 Si el receptor, también quiere acceder, compara los registros de tiempos (mensaje enviado vs recibido) el mejor gana. ????. Caso contrario, no responde y coloca en cola de petición. Lo que pasa que si hay una falla de un nodo al no responder, se interpreta como negativa de permiso. Es n veces menos eficaz y requiere mayor tráfico de red. Esto se puede solucionar generando una respuesta por parte del destinatario cuando llega una petición, SOTO ESCRIBI BIEN POR FAVOR NO ENTIENDO Algoritmo de Token Es más o menos así esto: al iniciar el proceso 0, recibe un token. El token circula en el anillo. Al recibir el token, el proceso verifica si requiere acceder al recurso. Si accede retiene el token y libera al terminar. No se permite acceder dos veces al recurso con el mismo token. Solo un proceso tiene el token en un tiempo dado. Y obvio tiene inconvenientes. Si se pierde el token, se retrasa al usuario (obvio xd), si el proceso falla, se "soluciona" con un acuse de recibo. Todos deben conocer la configuración del anillo en cuestión donde "viajan" los procesos. Resumen progresivo de S.O.D 15 Algoritmo de Elección (Coordinador o proceso especial) Dentro de los SD existen procesos que deben coordinar, inicializar y desempeñar algún papel especial. En general, se busca al proceso con mayor número o identificador para designarlo como coordinador. En general, por consenso se selecciona un coordinador. Algoritmo "Bully" abuson Al advertir que el coordinador deja de responder. P(i) envía un mensaje ELECCIÓN a cada proceso con un número superior. Si no responde ningún proceso, Pi gana la elección. Si un proceso mayor Pj responde, Pi queda afuera. Pj inicia una nueva elección. Genera mensaje broadcast para dar aviso que es el nuevo coordinador. Algoritmo de anillo NO utiliza token, los procesos están lógica y físicamente ordenados. Cada proceso sabe quién es su sucesor. Al advertir que el coordinador no funciona, el proceso dispara un proceso de Resumen progresivo de S.O.D 16 elección. Genera un mensaje con su número de proceso y lo envía a su sucesor. Si se produce una falla en el sucesor, este lo salta y así, hasta localizar un proceso activo. Cada proceso receptor agrega un número para volverse candidato. En algún momento vuelve un mensaje a iniciador del proceso. Se cambia tiepo de mensaje a coordinador y se re-circula mensaje entre los nodos. También se informa los procesos que pertenecen al anillo. Al circula una vez el mensaje es destruido. Elecciones en ambientes inalámbricos En ambientes inalámbricos no es aplicables que: El paso de mensajes sea confiable, La topología de la red cambia Esto se acentúa en redes móviles de medida. Vasudevan (2004) propone un algoritmo que tolera falla de nodos y partición de la red. Se elije al mejor líder y no al azar. Mecanismo: Cualquier nodo (fuente) inicia la elección enviado un mensaje de ELECCIÓN, el mensaje enviado a los vecinos inmediatos. Cuando un proceso recibe un mensaje de ELECCIÓN por primera vez designa al remitente como su padre. El mensaje es enviado a los vecinos inmediatos del nodo, salvo al padre. Cuando un nodo recibe un mensaje de ELECCIÓN, de otro nodo que no sea su padre, acusa recibo. Resumen progresivo de S.O.D 17 Unidad 4: Comunicación 📚 Temas: 1. 2. 3. 4. 5. Pasaje de mensajes Modelo Cliente-Servidor. Procedimientos remotos. Objetos distribuidos. Eventos distruibidos. En SD la comunicación se basa en el paso de mensajes a bajo nivel (a través de la red subyacente). Los modelos más ampliamente utilizados para realizar la comunicación son el: RPC MOM Comunicación en grupo Flujos de datos Comunicación en objetos distribuidos. Tipos de comunicación Resumen progresivo de S.O.D 18 Comunicación persistente: middleware almacena comunicación hasta entregarla al destinatario. Comunicación transitoria: mientras el destinatario y remitente estén activos, los mensajes serán almacenados para ser entregados, sino se descartan. Comunicación asíncrona: el remitente CONTINUA inmediatamente de pasado su mensaje para su transmisión. Comunicación sincrónica: el remitente se bloquea hasta que la petición es aceptada. Se puede originar por: 1. El remitente hace espera ocupada que el middleware confirma gestión de la petición 2. Remitente se sincroniza hasta que la petición fue entregada al destinatario 3. El remitente se sincroniza hasta recibir una respuesta del destinatario. Llamadas a procedimientos remotos SEND Y RECIEVE: no ocultan la comunicación, falta transparencia. RPC (Remote Procedure Call): Permite a los programas invocar procedimientos de otras máquinas. Al invocar el procedimiento origen, se bloquea para que se procese el procedimiento destino invocado. La información se transporta en los parámetros desde el origen invocado. El resultado del procedimiento retorna la información al origen. El programador no ve el paso de mensajes. Es ampliamente aceptado en la intercomunicación de sistemas distribuidos. Resumen progresivo de S.O.D 19 Paso de parámetros por valor: En general, el modelo no representa problemas mientras las máquinas sean idénticas y los resultados y parámetros son del tipo escalar. En SOD, sí presentan muchos problemas. Paso de parámetros por referencia: Los apuntadores tienen sentido dentro un espacio de direcciones del proceso. Primera solución: prohibir los apuntadores y parámetros de referencia. Segunda solución: reemplazar la llamada por referencia por una de copia-restauración. RPC Asíncrona Con la RPC asíncrona al recibir una solicitud al servidor elabora una respuesta de inmediato al cliente y luego llama al procedimiento solicitado. Utilidad: Cuando el comportamiento escrito solicitud-respuesta NO es necesario. En general, cuando No hay resultado de devolución. Resumen progresivo de S.O.D 20 RPC síncrona diferida Con la RPC síncrona diferida permite que el cliente realice tareas mientras espera la respuesta del servidor . Comunicación transitoria Orientada a mensajes Sockets Berkeley (a nivel capa de transporte) En la capa de transporte existen protocolos con interfaces estandarizadas con un conjunto de primitivas. Las interfaces facilitan a las aplicaciones la comunicación con partes residentes Resumen progresivo de S.O.D 21 en máquinas diferentes. ¿Qué es un socket? Es el punto final de comunicación, en dicho punto, una aplicación puede escribir información. Dicha información se envía fuera de la red subyacente y desde la que se lee la información entrante. Socket primitivas: Socket() : Crea un punto final de comunicación Blind() : Asocia una dirección local a un socket Listen() : Anuncia la conveniencia de aceptar conexiones. Accept() : Bloquea a quien llama hasta que llega una petición de conexión Connect() : Activa conexión Send() : Envía datos por conexión Receive() : Recibe datos por conexión Close() : Libera la conexión Resumen progresivo de S.O.D 22 Interfaz de paso de mensajes (MPI) Orientado a alto rendimiento en multicomputadoras, sencillo para el desarrollo. Esto aporta: Manejo de buffer y de sincronización avanzados. Soporte para redes de interconexión de alta velocidad. Diseñada para aplicaciones paralelas. Explota directamente la red subyacente. Independencia de hardware y plataforma. Además: el manejo de fallas asume que existen fallas serias o fatales que no requieren de recuperación inmediata. La comunicación se da dentro de un grupo de procesos conocidos. Para esto se utiliza un identificador de grupo y uno para cada proceso. El par (Idgrupo, Idproceso) se utiliza en vez de la dirección al nivel de transporte. Primitivas: MPI_bsend() : Adjunta un mensaje de salida a un buffer local de envío y continúa MPI_send() : Envía un mensaje y espera hasta que es copiado en un buffer local o remoto. MPI_ssend() : Envía un mensaje hasta que comienza la recepción MPI_sendrecv() : Envía un mensaje y espera una respuesta MPI_isend() : Pasa una referencia a un mensaje de salida y continua MPI_issend() : Pasa una referencia a un mensaje de salida y espera hasta que inicia la recepción. MPI_recv() : Recibe mensaje; bloquea si no hay MPI_irecv() : Verifica existencia de mensaje de entrada, pero no bloquea Comunicación persistente orientada a mensajes Middleware orientado a mensajes MOM o sistemas de Colas de mensajes Soporte a la comunicación asíncrona persistente. Almacenamiento de término medio a los mensajes. Soporte a transferencias de larga duración. Resumen progresivo de S.O.D 23 MODELO DE COLA DE MENSAJES: La comunicación se realiza insertando mensajes en cols específicas. Los mensajes son reenviados a otros servidores de comunicación. En algún momento, se entregan a destinatario los mensajes. Cada aplicación posee una cola privada. En ella, otras aplicaciones pueden enviar mensajes. La cola sólo es leída por su aplicación asociada, la cola puede ser compartida por varias aplicaciones. Direccionamiento de un sistema de colas de mensajes El administrador de colas interactua en el envío y recepción de mensajes de la aplicación. Existen otros administradores que operan retransmitiendo o enrutando mensajes. Los retransmisores ayudan a escalar los sistemas de colas de mensajes. Conformando redes sobrepuestas. Resumen progresivo de S.O.D 24 Organización con ruteadores de un sistema de colas de mensajes Aplicar formato común de mensajes difícil abstracciones diferentes de las aplicaciones. Agente de mensajes: entre nivel de aplicación y sistema de colas de mensajes como puerta de enlace. Garantiza que la aplicación destino comprenda los mensajes, aplicando una conversión de formato a los mensajes. Comunicación en Grupo El destino de los mensajes es un grupo de procesos que requiere de: Multidifusión Replicar mensajes N veces. Un proceso determinado puede pertenecer a varios grupos. Existe una dirección de grupo. En general, tiene una estructura dinámica, se incorporan o retiran procesos de los grupos y la "membresía" requiere coordinación y comunicación entre los miembros. Ordenamiento de eventos o mensajes: Resumen progresivo de S.O.D 25 Comunicación en objetos distribuidos e invocación remota (RMI) Mediante RMI → Objetos de diferentes procesos se pueden comunicar. Esto extiende la invocación de métodos locales. El objeto de un proceso invoca los métodos de un objeto residente en otro proceso. Permite a los objetos recibir notificaciones de los eventos que ocurren en otros objetos. Solo reciben notificaciones en las que han notificado interés. Objetos distribuidos Extensión de objetos a otros procesos o computadoras. Debido a que lógicamente están fraccionados: el estado de un programa OO está asociado a partes separadas vinculadas a un objeto. El estado de un objeto consta de valores de sus variables de instancias. Algunos objetos de un proceso pueden recibir tanto invocaciones locales como remotas. Localizar objetos remotos: Las aplicaciones obtienen referencias a objetos remotos. Por ejemplo: Aplicación registrar sus objetos remotos con nomenclatura de RMI y el registro RMI. Alternativamente, una aplicación pasa y devuelve referencias a objetos remotos como parte de otras invocaciones remotas. Resumen progresivo de S.O.D 26 Aplicación distribuida: creación usando RMI 1. Diseño e implementación de los componentes de la aplicación distribuida. 2. Compilar fuentes 3. Haciendo red clases accesible 4. Inicio de la aplicación Implementación: Módulo de comunicación: Usa mensajes de petición-respuesta. Proporciona una semántica de invocación. La parte residente en el servidor selecciona el distribuidor para la clase invocada. Resumen progresivo de S.O.D 27 Módulo de referencia remota: Traduce referencias entre objetos locales y remotos. Crea referencias a objetos remotos. Mantiene una tabla de objetos remotos que tiene la entrada por cada uno y una entrada por proxy local. Software RMI (Proxy - Distribuidos - Esqueleto) El proxy implementa transparencia para el cliente. Oculta detalles de la referencia a obj. remoto, empaquetado de argumentos, y desempaquetado del resultado. Se incorpora como objeto local para el que invoca y dirige invocación al objeto remoto. El distribuidor existe en el servidor un distribuidor por clase que representa a un objeto remoto. Selecciona el método apropiado, usando el idmetodo que llega en el mensaje de petición derivado por el módulo de comunicación. Resumen progresivo de S.O.D 28 El esqueleto es parte de la clase de un objeto remoto. Implementa los métodos de la interfaz remota. Comunicación orientada a flujos Comunicación donde la sincronización es importante. Información dependiente del tiempo y tiene medios (continuo, discreto) y un flujo de datos (secciones de unidades de datos). Medio continuo Modo de transmisión asíncrona: NO relevante cuando se completa el flujo. Se transmiten elementos uno después del otro (discreto). Modo de transmisión síncrono: retraso máximo fin a fin para cada unidad de datos. Puede ser más rápido pero no debe ser más lento que el máximo. Modo de transmisión isócrono: retraso máximo y mínimo de fin a fin, requiere transferencia a tiempo (multimedia distribuida). Resumen progresivo de S.O.D 29 Sincronización de flujos En multimedia los de datos son complejos y de tipo diferentes, se dan dos alternativas: Flujo continuo - discreto (audio) Continuo (video y audio) La sincronización se aplica en las unidades de datos del flujo. Si la sincronización de la comunicación se efectúa en el remitente se puede enviar un solo tipo de unidad de datos. Comunicación por multitransmisión Seine el soporte de envío de datos a varios destinatarios. Existen soluciones a niveles de red y a nivel transporte En base a redes punto a punto y red sobrepuestas es posible configurare rutas de comunicación. Lo que permitió varias técnicas de multitransmisión a nivel de aplicación. Los nodos se organizan a través de una red sobrepuesta, la que disemina información a los miembros. Método de diseño red sobrepuesta: los nodos se auto-organizan en un árbol. Existe una única ruta entre un par de nodos. Los nodos se organizan en una red acoplada. Cada uno de los nodos tiene varios vecinos (varias rutas entre un par de nodos). Resumen progresivo de S.O.D 30 Parcial 1 Preguntas Pregunta Column Por qué 1. Todas las arquitecturas intentan obtener un grado razonable de transparencia, balanceado aspecto de rendimiento, tolerancia a fallas, facilidad de programación, etc. 2. La interacción entre cliente-servidor es también conocida como publicación- Verdadero Falso subscripción 3. En la arquitectura cliente-servidor la parte cliente implementa servicios Falso Relación cliente-servidor: comportamiento solicitud-respuesta Servidor: proceso que implementa un servicio específico Cliente: solicita un servicio a un servidor, enviando una petición y esperando la respuesta 4. Existe simetría en las funciones clienteservidor en el modelo peer to peer Verdadero 5. Las redes no estructuras punto a punto utilizan un procedimiento determinista para la construcción de la Red sobrepuesta Resumen progresivo de S.O.D Todos los procesos son iguales, existe una simetría entre cliente-servidor al mismo tiempo (proceso sirviente= Las redes no estructuradas no siguen un Falso procedimiento, son creadas al azar y para realizar una petición realizan una inundación 31 Pregunta Column Por qué 6. Las vistas parciales selectivas permiten generar redes estructuradas punto a punto en redes no estructuradas punto a punto 7. En la implementación de arquitecturas peer to peer en general un proceso sólo debe utilizar los canales disponibles para comunicarse con otro 8. En las arquitecturas basadas en eventos, la comunicación se logra mediante propagación de eventos y en forma opcional datos. 9. El software adaptativo aplicado a sistemas distribuidos le permiten al middleware adaptarse a los cambios de su entorno por las aplicaciones. A definir Verdadero Un proceso no puede comunicarse con cualquier proceso, debe hacerlo por los canales disponibles. Verdadero Es verdadera. De hecho, es esto lo que se conoce como sistema de publicaciónsubscipción Verdadero 10. La autoadministración de los sistemas distribuidos se logra mediante siclos de retroalimentación, donde se monitorea, analiza y se aplican mecanismos de modificación de comportamiento. Verdadero Sino no sería autoadministración Verdadero Permite flexibilidad y esas cosas Falso Es lo que ofrece Falso La migración de CODIGO permite esto 11. Virtualización permite a una aplicación e incluso a un ambiente ejecutarse de forma concurrente con las aplicaciones 12. La virtualización tiene las desventajas de dismunición de portabilidad y imposibilidad de aislar fallas. 13. La migración de procesos permite la escalabildad y configuración dinámica de clientes y servidores 14. Los múltiples hilos de control de por procesos permiten mayor facilidad para la construcción de aplicaciones y se obtiene un mejor rendimiento Resumen progresivo de S.O.D En S.O.D, los procesos forman un bloque de construcción y amplían la integración de Verdadero aplicaciones proporcionadas por los S.O locales. Tener múltiples hilos de control por proceso nos da una facilidad para la construcción de aplicaciones y un mejor rendimiento. 32 Pregunta 15. Para ejecutar un programa un SO crea un cierto número virtual de procesadores, Column Por qué Verdadero Lo dice el PDF Falso Lo dice el PDF. Es el SO que hace eso Verdadero Lo dice el PDF cada uno ejecuta un programa diferente 16. El middleware se asegura la ejecución concurrente y normal de todos los procesos que comporten la CPU 17. un hilo al igual que un proceso tiene su propio segmento de código, independiente de los otros hilos 18. Los hilos no permiten llamadas al sistema sin bloquear todo el proceso en que se ejecute el hilo Falso Si permite llamadas al sistema sin bloquear todo el proceso 19. Los hilos permiten expresar la comunicación como conexiones lógicas concurrentes 20. La transparencia de distribución involucra oculta retardos en la propagación A definir A definir en redes área amplia 21. Los multihilos del lado del servidor permiten simplificar el código, obtener un paralelismo más sencillo, aumentar la Verdadero Eso es lo que hace xd disponibilidad del cliente 22. La virtualización permite permite el copado dinámico de ambientes de software en servidores laterales 23. El proxy en objetos distribuidos implementa la transparencia de la invocación a objeto remoto para el cliente 24. La transparencia de replicación del lado cliente, se puede implementar mediante replicas de peticiones a los servidores y filtrado de una respuesta a la aplicación Resumen progresivo de S.O.D 33 Pregunta Column Por qué 25. La organización básica de un servidor consta de una espera por una petición entrante del servidor: procesado de la petición, realiza algo con la petición y una espera por la siguiente petición entrante. 26. La localización de un servidor sin asignación previa, se realiza solicitando el puerto a un demonio especial del servidor local, para luego contactar al servidor 27. La interrupción al servidor mediante la técnica de datos fuera de banda se puede implementar con un puerto adicional de control con mayor prioridad que el puerto de servicio del servidor 28. Un cluster consiste de máquinas conectadas a través de una red, organizadas en general en tres niveles: switch, servidor de procesamiento de aplicaciones y servidor procesamiento de datos Unidad 5: Nombres (naming) 📚 Temas: 1. Servicio de nombres. 2. Directorios y servicio de directorios Unidad 6: Consistencia y replicación 📚 Temas: 1. Arquitecturas 2. Modelos de consistencia Resumen progresivo de S.O.D 34 Unidad 7: Archivos y memoria en S.D. 📚 Temas: 1. Sistemas de archivos distribuidos: arquitectura, comunicaciones, sincronización, consistencia y replicación, tolerancia a fallas y seguridad. 2. Memoria en sistemas distribuidos: introducción, cuestiones de diseño e implementación. Consistencia. Unidad 8: Seguridad en S.D 📚 Temas: 1. Introducción a la seguridad 2. Canales desguros 3. Control de acceso 4. Administración de la seguridad Unidad 9: Transacción y control de concurrencia en S.D 📚 Temas: 1. Transacciones 2. Transacciones anidadas 3. Manejo de bloqueos 4. Control básico de concurrencia Resumen progresivo de S.O.D 35