Sistemas Operativos Clase 15: sistemas especializados. Sistemas distribuidos • Un sistema distribuido (SD) lo forman un conjunto de dispositivos físicamente distribuidos, conectados a través de una red y que se coordinan más allá de las fronteras de una solo dispositivo. • “Un sistema distribuido es aquél en el que no puedes trabajar con tu máquina por el fallo de otra máquina que ni siquiera sabías que existía”. Sistemas distribuidos Una característica muy importante en un sistema distribuido, es que el sistema coopera entre si para poder realizar una tarea. Algunas características de un SD son: • Compartir recursos: procesamiento, datos, hardware. • Escalabilidad: basta con conectar más computadoras a la red. • Fiabilidad y disponibilidad: el sistema siempre debe seguir ofreciendo funcionalidad. Sistemas distribuidos • El software es más complejo: debido a que hay procesos concurrentes en varios niveles. • Seguridad: al estar las computadoras conectadas en una red, hace que la información sea más susceptible de ser accedida por otros. Sistemas distribuidos Cuando se diseña un SD, hay que considerar muchos aspectos de diseño; algunos son: Heterogeneidad. Nombrado. Comunicación y sincronización. Capacidad de crecimiento. Estructura software. Reparto de la carga. Tratamiento de fallos. Consistencia. Calidad de servicio. Fiabilidad. Seguridad. Transparencia. Rendimiento. Sistemas distribuidos Heterogeneidad Un SD no tiene por que estar construido con la misma clase de dispositivos, por lo que esto resulta ser un problema importante; por ejemplo, dos computadoras conectadas al SD, no necesariamente tienen que tener el mismo SO. Algunas soluciones: • Construcción de interfaces. • Empleo de mecanismos homogéneos. de comunicación Sistemas distribuidos Nombrado Es la manera en que usuario debe llamar a un objeto dentro del SD; para el usuario podría ser www.google.com, pero para el sistema sería 64.78.23.12. Algunos puntos a considerar: • El espacio de nombres. • El servicio de nombres. Sistemas distribuidos Comunicación y sincronización Quizá otro gran problema en ambientes distribuidos, ya que incluye: • Sincronización de procesos (ordenación de eventos). • Exclusión mutua. Sistemas distribuidos Comunicación y sincronización Existen muchos algoritmos para asegurar la comunicación y sincronización en un ambiente distribuido; el más sencillo se conoce como paso de testigo. Sistemas distribuidos Tratamiento de fallos Dado que un SD debe ofrecer disponibilidad, debe entonces ejecutar las acciones necesarias para evitar o resolver los problemas que pueden surgir ante un fallo del sistema. Esto también se conoce como tolerancia a fallos, y es una de las características más complicadas de implementar en un SD. Sistemas distribuidos Estructura de software Se refiere a la manera en que el usuario dispone de los programas; la estructura clásica en un sistema centralizado es: Aplicaciones Lenguajes de programación Sistema operativo Hardware Sistemas distribuidos Estructura de software En un SD el software se estructura de manera diferente; existen tres posibilidades: • SO de red. • SO distribuidos. • Middlewares. Sistemas distribuidos Estructura de software: SO red Aplicaciones Aplicaciones Lenguajes de programación Lenguajes de programación Sistema operativo Sistema operativo Hardware Hardware Red de interconexión No hay transparencia, ya que se accede directamente al recurso. Las maquinas no son independientes. Sistemas distribuidos Estructura de software: SO distribuido Aplicaciones Lenguajes de programación Sistema operativo Hardware Hardware Red de interconexión Se comporta como un único sistema, como en un sistema centralizado. Hay transparencia, pero todas las maquina deben ejecutar en mismo SD. Sistemas distribuidos Estructura de software: middleware Aplicaciones Lenguajes de programación Middleware Sistema operativo Sistema operativo Hardware Hardware Red de interconexión Sistemas distribuidos Características de la estructura de software • Servicios y protocolos estandarizados. • Pueden ofrecer servicios no incluidos en el SO (servicios de archivos distribuidos, servicios de nombres). • Facilitar el desarrollo de aplicaciones distribuidas • Independientes del HW y del SO subyacente. Sistemas distribuidos Reparto de carga Es la manera en que el SD reparte los recursos en el sistema de manera que se haga un uso optimo de ellos; los recursos más importantes para repartir son el procesador y el almacenamiento. Una característica importante en el reparto de carga, es la migración. Sistemas distribuidos Consistencia El problema de la consistencia (coherencia), surge cuando varios procesos acceden y actualizan datos de forma concurrente. Podemos mencionar dos casos: • Coherencia de las actualizaciones • Coherencia de la replicación Sistemas distribuidos Tratamiento de fallos Dado que un SD debe ofrecer disponibilidad, debe entonces ejecutar las acciones necesarias para evitar o resolver los problemas que pueden surgir ante un fallo del sistema. Esto también se conoce como tolerancia a fallos, y es una de las características más complicadas de implementar en un SD. Sistemas distribuidos Calidad de servicio La calidad de servicio incluye dos importantes: fiabilidad y rendimiento. conceptos • Rendimiento: el tiempo de respuesta debe ser el adecuado. Generalmente, el rendimiento viene determinado por la red de comunicación; pero también por el tiempo de procesamiento del sistema. • Fiabilidad: disponibilidad, consistencia, seguridad y confidencialidad. Sistemas distribuidos Transparencia La transparencia la forman un conjunto características, entre las cuales tenemos: de • Acceso: acceso a recursos remotos y locales de igual manera. • Posición: acceso a los recursos sin necesidad de conocer su ubicación. • Replicación: Acceso a recursos replicados sin conocimiento de que lo son. Sistemas distribuidos Transparencia • Fallos: funcionamiento continuo del servicio, aun en presencia de problemas. • Migración: permite que los recursos y objetos se muevan sin afectar a la operación de los programas. Sistemas distribuidos Rendimiento En términos generales, el rendimiento no es una característica muy importante; un SD persigue la cooperación, no así el computo paralelo que si busca el rendimiento. En un SD se habla de calidad de servicio, el usuario espera que sus trabajos se hagan, y en el mejor tiempo posible. Sistemas distribuidos ¿Sistemas operativos distribuidos (SOD)? Sabemos que un SO se encarga de gestionar los recursos del sistema, pero en el caso de un SO distribuido, no solo gestiona las recursos del sistema de manera local, sino que también lo hace con los recursos remotos; además, debe hacer creer a los usuarios que están en un “gran sistema centralizado”. Sistemas distribuidos Sistema operativo distribuido En general es muy complicado disponer de un sistema operativo distribuido, ya que la gestión de los recursos de manera remota es muy complicada; es más común encontrar sistemas basados en middleware que sistemas basados en SOD. Sólo examinaremos la gestión de procesos en un ambiente distribuido. Sistemas distribuidos Sistema operativo distribuido: procesos De manera básica, existen tres manera de organizar los procesadores en un SD: • Estaciones de trabajo: en cada nodo se ejecutan los procesos de su respectivo usuario. Hay servicio de archivos distribuidos. Es posible que la carga en el sistema no sea equitativa. Sistemas distribuidos Sistema operativo distribuido: procesos • Pila de procesadores: los procesadores están compartidos por todos los usuarios, por lo que la ejecución de un programa va hacia el procesador del tope de la pila. • Hibrido: los procesos iterativos se ejecutan en la computadora de manera local (estación de trabajo), y los no iterativos van a la pila de procesadores. Sistemas distribuidos Sistema operativo distribuido: procesos La asignación de procesos al procesador en un SD no es un tarea sencilla, el objetivo es decidir qué procesador debería ejecutar determinado proceso, de tal manera que se equilibre la carga. Para saber que procesador esta inactivo, esto puede hacerse de dos maneras: • Centralizada. Un cliente informa a un servidor. • Distribuida. Los clientes se informan. Sistemas distribuidos Sistema operativo distribuido: procesos Una vez conocida la estación inactiva, una computadora muy cargada podría eventualmente hacer alguna de las siguientes acciones: • Migrar algún proceso: pero es muy complicado. • Bajar la prioridad a algunos procesos. • Desde luego, no hacer nada. Sistemas distribuidos Sistema operativo distribuido: procesos La migración de procesos es una acción muy complicada de llevar a cabo, requiere de la implementación de algoritmos de distribución de carga, los cuales consideran los siguientes aspectos: • Política de transferencia: la manera en que se determina cuando transferir un proceso. La política puede ser expulsiva y no expulsiva. Sistemas distribuidos Sistema operativo distribuido: procesos • Política de selección: determina qué proceso se debe transferir: los nuevos procesos, lo procesos con poca ejecución y mínimo uso de recursos (o con ciertos recursos), o los procesos cuyo tiempo de respuesta estimado es menor en un sistema remoto que en el local. Sistemas distribuidos Sistema operativo distribuido (SOD): procesos • Política de ubicación: la manera en que se decidirá a qué nodo debe ir el proceso. En este caso, es necesario conocer el estado de todo el SD, y para ello se puede hacer de dos maneras: • Bajo demanda: la información se obtiene cuando un nodo se convierte en receptor o transmisor de procesos. • Periódica: los nodos hacen intercambio de información cada determinados instantes de tiempo. Sistemas distribuidos Sistema operativo distribuido (SOD): memoria La gestión de memoria es otro punto importante en un ambiente distribuido; la manera de hacerlo es básicamente de dos maneras: • Paginadores externos: se emplea en memoria virtual, y la idea es hacer uso de los manejadores de archivos distribuidos; las páginas que deben ser bajadas a disco, son enviadas a un disco remoto. Sistemas distribuidos Sistema operativo distribuido (SOD): memoria • Memoria compartida distribuida: cada proceso en el entorno distribuido, “ve” a la memoria de cada nodo como una sola gran memoria. Los mensajes son el mecanismo por el cual se transfiere la información de una memoria a otra. Este esquema permite una programación sencilla, el modelo que se emplea es el de memoria compartida. Fin de clase 15