Story Transcript
Sistemas Operativos Sistema Operativo Software básico que controla una computadora. El sistema operativo tiene tres grandes funciones: coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el mouse; organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnéticas, y gestiona los errores de hardware y la pérdida de datos. Cómo funciona un Sistema Operativo Los sistemas operativos controlan diferentes procesos de la computadora. Un proceso importante es la interpretación de los comandos que permiten al usuario comunicarse con el ordenador. Algunos intérpretes de instrucciones están basados en texto y exigen que las instrucciones sean tecleadas. Otros están basados en gráficos, y permiten al usuario comunicarse señalando y haciendo clic en un icono. Por lo general, los intérpretes basados en gráficos son más sencillos, pero muchos usuarios expertos prefieren los intérpretes de instrucciones basados en texto porque son más potentes. Los sistemas operativos pueden ser de tarea única o multitarea. Los sistemas operativos de tarea única, más primitivos, sólo pueden manejar un proceso en cada momento. Por ejemplo, cuando la computadora está imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresión. Todos los sistemas operativos modernos son multitarea y pueden ejecutar varios procesos simultáneamente. En la mayoría de los ordenadores sólo hay una UCP; un sistema operativo multitarea crea la ilusión de que varios procesos se ejecutan simultáneamente en la UCP. El mecanismo que se emplea más a menudo para lograr esta ilusión es la multitarea por segmentación de tiempos, en la que cada proceso se ejecuta individualmente durante un periodo de tiempo determinado. Sistemas Operativos por la Forma de Ofrecer sus Servicios Esta clasificación también se refiere a una visión externa, que en este caso se refiere a la del usuario, el cómo aceza los servicios. Bajo esta clasificación se pueden detectar dos tipos principales: sistemas operativos de red y sistemas operativos distribuidos. • Sistemas Operativos de Red Los sistemas operativos de red se definen como aquellos que tiene la capacidad de interactuar con sistemas operativos en otras computadoras por medio de un medio de transmisión con el objeto de intercambiar in1formación, transferir archivos, ejecutar comandos remotos y un sin fin de otras actividades. El punto crucial de estos sistemas es que el usuario debe saber la sintaxis de un conjunto de comandos o llamadas al sistema para ejecutar estas operaciones, además de la ubicación de los recursos que desee acezar. Por ejemplo, si un usuario en la computadora hidalgo necesita el archivo matriz.pas que se localiza en el directorio /software/código en la computadora modelos bajo el sistema operativo UNIX, dicho usuario podría copiarlo a través de la red con los comandos siguientes: hidalgo % hidalgo % rcp modelos:/software/código/matriz.pas . hidalgo% En este caso, el comando rcp que significa "remote copy" trae el archivo indicado de la computadora modelos y lo coloca en el directorio donde se ejecutó el mencionado comando. Lo importante es hacer ver que el 1
usuario puede acezar y compartir muchos recursos. Existen dos tipos básicos de redes: Las redes locales(LAN) y las redes de área ancha(WAN).La principal diferencia entre ambas es su distribución geográfica. Las redes locales están compuestas por procesadores distribuidos en un área geográfica pequeña, como un edificio o varios edificios adyacentes; en cambio las redes de área ancha, están formadas por varios procesadores autónomos distribuidos en un área geográfica extensa(como todo un país).Estas diferencias radican en la velocidad y confiabilidad de la red de comunicaciones y se ven reflejadas en el diseño del sistema operativo. Redes Locales Las redes locales(LAN) surgieron a principios de los años setenta como sustituto de los grandes sistemas de computación central. En ese momento muchas empresas consideraron que era más económico tener varias computadoras pequeñas, cada una con sus aplicaciones que un solo sistema de gran tamaño. Como las redes locales están diseñadas para abarcar una pequeña área geográfica, las instalaciones están a poca distancia entre si, los enlaces de comunicación tienen mayor velocidad y menor tasa de errores que los de área ancha.Los enlaces más comunes son el par trenzado, el cable coaxial y la fibra óptica. Una típica red local puede consistir en varias máquinas diferentes, dispositivos periféricos compartidos(como impresoras láser) estaciones de trabajo etc.Para construir éstas redes debemos emplear un esquema Ethernet, donde el medio de comunicación es un cable coaxial multiacceso con un esquema de detección de colisiones.
Redes de Area Ancha Estas redes(WAN) surgieron a finales de los años setenta como un proyecto académico de investigación para ofrecer una comunicación eficiente entre instalaciones, permitiendo compartir de manera eficiente y económica el hardware y el software entre una extensa red de usuarios. La primera red que se diseño y desarrolló fue Arpanet. Los trabajos de Arpanet comenzaron en 1968 y ha crecido notablemente, de una red de 4 máquinas a una red mundial de redes como lo es Internet que hoy comprende miles de máquinas conectadas entre si. Debido a que las instalaciones en una red de área ancha están distribuidas físicamente en una extensa área geográfica, los enlaces de comunicación son normalmente lentos y poco confiables. Los enlaces típicos son líneas telefónicas, enlaces por microondas y canales de satélite y se controlan mediante procesadores de comunicación especiales responsables de definir la interfaz por medio del cual las instalaciones se comunican en la red. Si tomamos una red de área ancha como internet, el sistema permite que se comuniquen entre si las instalaciones separadas llamadas anfitriones; las máquinas anfitriones generalmente se diferencian del resto en cuanto a su tipo, velocidad, sistema operativo etc. • Sistemas Operativos Distribuidos Los sistemas operativos distribuidos abarcan los servicios de los de red, logrando integrar recursos ( impresoras, unidades de respaldo, memoria, procesos, unidades centrales de proceso ) en una sola máquina virtual que el usuario aceza en forma transparente. Es decir, ahora el usuario ya no necesita saber la ubicación de los recursos, sino que los conoce por nombre y simplemente los usa como si todos ellos fuesen locales a su lugar de trabajo habitual. 2
Todo lo anterior es el marco teórico de lo que se desearía tener como sistema operativo distribuido, pero en la realidad no se ha conseguido crear uno del todo, por la complejidad que suponen: distribuir los procesos en las varias unidades de procesamiento, reintegrar sub−resultados, resolver problemas de concurrencia y paralelismo, recuperarse de fallas de algunos recursos distribuidos y consolidar la protección y seguridad entre los diferentes componentes del sistema y los usuarios. Los avances tecnológicos en las redes de área local y la creación de microprocesadores de 32 y 64 bits lograron que computadoras mas o menos baratas tuvieran el suficiente poder en forma autónoma para desafiar en cierto grado a los mainframes, y a la vez se dio la posibilidad de intercomunicarlas, sugiriendo la oportunidad de partir procesos muy pesados en cálculo en unidades más pequeñas y distribuirlas en los varios microprocesadores para luego reunir los sub−resultados, creando así una máquina virtual en la red que exceda en poder a un mainframe. El sistema integrador de los microprocesadores que hacer ver a las varias memorias, procesadores, y todos los demás recursos como una sola entidad en forma transparente se le llama sistema operativo distribuido. Las razones para crear o adoptar sistemas distribuidos se dan por dos razones principales: por necesidad ( debido a que los problemas a resolver son inherentemente distribuidos ) o porque se desea tener más confiabilidad y disponibilidad de recursos. En el primer caso tenemos, por ejemplo, el control de los cajeros automáticos en diferentes estados de la república. Ahí no es posible ni eficiente mantener un control centralizado, es más, no existe capacidad de cómputo y de entrada/salida para dar servicio a los millones de operaciones por minuto. En el segundo caso, supóngase que se tienen en una gran empresa varios grupos de trabajo, cada uno necesita almacenar grandes cantidades de información en disco duro con una alta confiabilidad y disponibilidad. La solución puede ser que para cada grupo de trabajo se asigne una partición de disco duro en servidores diferentes, de manera que si uno de los servidores falla, no se deje dar el servicio a todos, sino sólo a unos cuantos y, más aún, se podría tener un sistema con discos en espejo ( mirror ) a través de la red, de manera que si un servidor se cae, el servidor en espejo continúa trabajando y el usuario ni cuenta se da de estas fallas, es decir, obtiene acceso a recursos en forma transparente. Diferencias entre Sistemas La diferencia fundamental entre un sistema en red y uno distribuido se puede explicar a través del análisis de la localización del módulo de comunicaciones entre procesos. Un sistema en red típico es una colección de sistemas operativos locales, acompañado de servidores de impresión y de archivos, conectados por medio de una red. Los usuarios están enterados de la multiplicidad de máquinas y para el acceso a los recursos necesitan conectarse a la máquina remota o transferir datos de la máquina remota a la propia. Podemos decir que todos los sistemas en red se ejecutan como funciones locales autónomas a la administración de dispositivos, de procesos, de entradas y salidas, de archivos y recursos en general. Estas funciones deben interactuar, pero tomando decisiones locales sin tener en cuenta procesos y recursos remotos. Las decisiones y el control orientado a operaciones remotas, son tomadas solo a nivel de la comunicación de la red. Por otro lado podemos decir que un sistema distribuido es solo un sistema expandido en toda la red, pero visto como un solo sistema para todos los elementos que existen en la red.Los usuarios no necesitan saber de la multiplicidad de máquinas y pueden acceder a los recursos remotos de la misma manera que lo hacen para los recursos locales.La tolerancia a fallas es más alta, pero también podemos decir que el control y las 3
decisiones son tomadas globalmente, los recursos conectados a la red son administrados de una forma global usando mecanismos distribuidos en lugar de mecanismos locales.
Base Histórica El comienzo potencial de la utilización de sistemas distribuidos es a principios de los 70. Tras el emergimiento de los minicomputadores; la utilización de estos como estaciones de trabajo gráficas uniusuario fue una gran éxito, sobre todo en el desarrollo de SW. Este éxito condujo a pensar en la posibilidad de conseguir los mismos resultados desde un punto de vista multiusuario. Problema: la tecnología necesaria para transformar aquel sistema uniusuario en otro coopoerativo no existía en aquellos momentos. Uno de los primeros éxitos en desarrollo fue gracias al Xerox Palo Alto Research Center (Xerox PARC), en 1971−1980: • Servidores de impresión y de ficheros. • Primera red local de alta velocidad (Ethernet). • Sistemas distribuidos experimentales. • Primera estación de trabajo: Alto: • monitor monocromo de alta resolución. • 128 Kb de memoria principal. • Disco duro de 2.5 Mb. • CPU microprogramada a la velocidad de 1 instrucción/2−6 microsegundos. • Xerox DFS (Distributed File System). • En primera época, también: • UNIX • ARPANet (padre de la Internet actual). • SmallTalk (primer concepto de programación orientada a objetos). • Después: • Berkeley UNIX. • Ethernet (ya comentada) • Sun NFS • AFS (Andrew File System) • Mach • Amoeba • Chorus Modelos de Sistema Distribuído Estaciones y servidores Es el más común en la actualidad. A cada usuario se le asigna una estación. Las estaciones: ejecutan las aplicaciones. Dan soporte a la interfaz de usuario (GUI). Acceden a los servicios compartidos, mediante SW de comunicaciones. Los servidores dan acceso a: Información compartida (servicio de ficheros) dispositivos HW compartidos (impresoras, scanners, ...) funciones del Sistema Operativo (autentificación, ...) Ejemplos: • XDS y Cedar, del Xerox PARC. • V−system de la Universidad de Stanford. • Argus, del MIT. 4
Banco de procesadores Los procesadores del pool tienen un CPU, suficiente memoria, pero no tienen ni discos ni terminales. Los usuarios acceden al sistema desde terminales−X. Gestor de recursos: controla el acceso a los procesadores del pool (PP). El usuario especifica sus requerimientos (CPU, memoria, programa). El Gestor de Recursos le asigna un procesador como ordenador personal. Ventajas con respecto a Estaciones y Servidores: mejor utilización de recursos: muchos puntos de entrada con pocas CPUs. mayor flexibilidad: se pueden dedicar procesadores para expandir servicios. compatibilidad con el SW preexistente. utilización de procesadores heterogeneos. Incoveniente: mala respuesta interactiva: terminales conectados a una linea serie. Ejemplo: CDCS, basado en el anillo de Cambridge. Miniordenadores Integrados Basado en máquinas multiusuario. El usuario se conecta a una máquina específica. Enfoques históricos: acceso remoto mediante copias: de esta forma no se mezclan los espacios de nombramiento locales, pero no es distribuido. sistemas de ficheros contiguos: • superdirectorio virtual: "/../", esquema de nombramiento global. • no es distribuido: el nombre de los ficheros depende de su ubicación (máquina A, B, C????) • ejemplo: NETIX, Newcastle Connection. • Locus (UCLA): Cada ordenador mantiene su autonomía (conjunto completo de SW estándar, aplicaciones y servicios propios). Esquema de nombramiento global: acceso independiente de la ubicación, posibilidad de migración de ficheros entre máquinas. Modelos híbridos AMOEBA, de la Universidad Libre de Amsterdam. Consiste en: sistema de estaciones y servidores más un pool de procesadores. Funcionalidad mixta: estaciones para las aplicaciones interactivas. procesadores variados. servidores especializados. Características: • Kernel pequeño: planificación y paso de mensajes. • el SO corre como procesos de usuario. • servicio de gateway a WAN. • gestión del pool mediante un servidor de carga y otro de procesos. • Ventajas: • recursos de procesamiento ajustados a las necesidades del usuario. • ejecución concurrente. • acceso a través de terminales (precio). Requisitos y características de un SOD. Características Compartición de recursos (resource sharing) Definición de recurso: rango de "cosas" que pueden ser compartidas en un sistema distribuido, de forma útil. Desde componentes HW (disqueteras, impresoras) a entidades SW (ficheros, ventanas, bases de datos). 5
• Dispositivos HW: se comparten para reducir costes. • SW: compartición de herramientas de desarrollo, ficheros, facilidad de actualización. • Groupware. Gestor de recursos: módulo SW que gestiona un conjunto de recursos de un tipo particular. Para cada conjunto de recursos existe un número de políticas diferentes, pero tambien características comunes. Modelos de gestión de recursos: • Modelo Cliente/Servidor • UNIX. • Necesidad de centralización de gestión. • Necesidad de diferenciar entre servidor y servicio. • Inconveniente: algunas aplicaciones pueden requerir una cooperación más directa entre clientes. • Modelo orientado a objetos • Cada recurso es visto como un objeto, unívocamente identificado, y móvil. • Ventajas: simplicidad, flexibilidad. Los objetos pueden actuar como usuarios de recursos y como gestores de recursos. • Se necesita un gestor de objetos: colección de procedimientos y datos que caracterizan una clase de objetos. • Ejemplos: Argus, Amoeba, Mach. Apertura (openness) Definición: permite a un SOD expandirse en múltiples direcciones. Un sistema puede ser abierto o cerrado con respecto a HW o SW: La apertura se consigue especificando y documentando las interfaces fundamentales del sistema y poniéndolos disponibles a los desarrolladores, para, finalmente, estandarizar esas interfaces: • UNIX: los recursos del SO se acceden mediante System Calls, totalmente documentadas y disponibles a los desarrolladores. La apertura de UNIX está inherentemente asociada a sus System Calls. Concurrencia (concurrency) Varios procesos existen al mismo tiempo en una máquina: ejecución concurrente. Con un solo procesador, esto implica planificación de CPU. • Escalabilidad (scalability) Definición: capacidad de un sistema de operar de manera efectiva independientemente de su tamaño. La existencia de crecimientos en el sistema no implican modificaciones de la arquitectura básica del mismo. Distribución de cargas. Se trata de evitar las siguientes centralizaciones: • componentes centralizados. • tablas centralizadas. • algoritmos centralizados. Características: • ninguna máquina tiene información completa del estado del sistema. • las máquinas toman decisiones basadas en información local. • el fallo de una máquina no implica la terminación en fallo del algoritmo. • no se asume la existencia de un reloj global. Técnicas empleadas: 6
• replicación de datos. • caching. • duplicación o complemento de tareas entre servidores. Tolerancia a Fallos (fault tolerance) Un fallo HW o SW puede producir inconsistencias o pérdidas de servicio. Dos ideas: redundancia del HW, programas de recuperación de fallos. Redundancia: arquitecturas de servidores en HOT STANDBY: muy caro (cada vez menos). Redireccionamiento de servidores (yahoo). • Roll−back: transacciones atómicas. • Sistemas de Alta disponibilidad (HA). Transparencia (transparency) Definición: abstracción que permite al usuario o al desarrollador desconocer los diferentes componentes del sistema distribuido. La separación de componentes en inherente en un sistema distribuido => acceso a recursos es un problema. • Tipos de transparencia (ANSA Reference Manual, ISO's Reference Model for Open Distributed Processing, [ISO RM ODP]: • t. de acceso: acceso a objetos locales o remotos de la misma manera. • t. de lugar: acceso a objetos sin conocer dónde están. • t. de concurrencia: varios procesos pueden operar concurrentemente usando objetos de información compartidos sin estorbarse. • t. de replicación: diferentes réplicas de un mismo objeto de información sin enterarse a cuál se accede, ni diferencias entre ellos. • t. de fallo: aislamiento de fallos, de forma que las aplicaciones puedan completar sus tareas. • t. de migración: permite mover los objetos de información sin afectar a las aplicaciones. • t. de rendimiento: redistribución de cargas en el sistema sin modificación en las aplicaciones. • t. de escalabilidad: permite asumir cambios de tamaño del sistema y aplicaciones sin modificar la estructura del sistema ni los algoritmos de los programas. ♦ Las más importantes: t. de acceso y de lugar: TRANSPARENCIA DE RED. Requisitos de diseño Los componentes y arquitecturas del sistema utilizadas para cumplir con las características mencionadas arriba necesitan a su vez cumplir con unos requisitos: Metas en el Diseño: • Prestaciones • Fiabilidad • Escalabilidad • Consistencia • Seguridad Requisitos básicos de diseño: • Nombrado: los nombres asignados a recursos u objetos han de tener un significado global e independiente de la localización. Además, ha de existir un sistema de interpretación que pueda trasladar nombres a recursos (ejemplo: internet(host + port)). • Comunicación: doble optimización: HW y SW (protocolos, algoritmos). Sincronización en la 7
comunicación. • Estructura del SW: en sistemas centralizados, el diseño de SW es monolítico. En SSDD, los programas pueden acceder a diferentes servicios, cada uno de los cuales provee su propio interfaz de operación. ♦ Capas en un sistema centralizado. ♦ En un SD, los servicios deben ser fácilmente añadidos y escalables, por lo que el Kernel será la única parte rígida, restringiéndose a: ♦ alojamiento y protección de memoria. ♦ creación de procesos y planificador. ♦ comunicación entre procesos (IPC). ♦ manejo de dispositivos periféricos. ◊ Categorías principales de SW en un SD. De aquí se distinguen tres categorías: ◊ Kernel (OS Kernel Services). Ya comentado anteriormente. Se ha llegado al desarrollo de microkernels: el conjunto mínimo de servicios y recursos a partir de los cuales el resto de servicios se pueden construir. De esta forma se consigue el máximo nivel de APERTURA. ◊ Servicios abiertos (Open Services): facilidades añadidas. Generalmente se ofrece el conjunto de servicios típicos de un sistema UNIX (servicio de ficheros, correo electrónico...). ◊ Soporte para programación distribuida (distributed programming support): por ejemplo, RPC. ♦ Alojamiento de la carga de trabajo: ♦ Modelo de pool de procesadores. ♦ Aprovechamiento de "idle workstations". ♦ Multiprocesadores de memoria compartida. Cada procesador ejecuta lo que va pudiendo. • Mantenimiento de la consistencia: • c. de actualización: problema que aparece cuando varios procesos acceden y actualizan datos constantemente. Es necesaria la atomicidad de operaciones, mediante mecanismos de exclusión mutua. • c. de replicación: la réplica de datos ha de efectuarse óptimamente. • c. de caché. • c. de fallos: en un sistema centralizado, si falla, todo falla. En uno distribuido, existirán diferentes MODOS DE FALLOS (failure modes), donde si el sistema en conjunto falla, en cada máquina su proceso se encontrará en un estado determinado: transacciones atómicas. • c. de reloj: debido al ancho de banda de las redes, la sincronización entre máquinas no es obvia. Afortunadamente, este requerimiento en SSDD no suele ser absoluto, sino relativo a orden. • c. de interfaz de usuario. Requerimientos del Usuario: • Funcionalidad: qué debería hacer el sistema por los usuarios. ♦ Requerimiento mínimo: la funcionalidad provista por un sistema distribuído no debería de ser menos que el obtenido por un sistema aislado. ♦ Requerimiento máximo: mejora sobre los servicios provistos por cualquier ordenador personal por sí sólo, a través de: ♦ compartición a través de la red, y especialización de recursos (p.e. servidor de impresión). ♦ aplicación de las ventajas de la distribución al nivel de APIs (application programming interface), para que puedan ser implementadas. ◊ Opciones de migración de computación centralizada multiusuario a computación distribuida: ◊ Adaptar Sistemas Operativos ya existentes: adición de servicios, tipo NFS. ◊ Migrar a un SO totalmente nuevo: el SW anterior es inútil. 8
◊ Emulación: migrar a un SO nuevo, pero con características de emulación de uno o más SSOO ya existentes. Ejemplos: Mach, Chorus. Problema: prestaciones. ⋅ Reconfiguración: necesidad del sistema para adaptación a cambios sin causar discapacidad a la provisión de servicio existente. ⋅ Diseño de un sistema distribuido en relación a la escala temporal: ◊ Cambios a corto plazo: ⋅ una máquina, red, componente... estropeada se reemplaza por otra. ⋅ la carga de trabajo se ha de reequilibrar, pasándo procesos a máquinas libres. ⋅ la comunicación de red se minimiza. ⋅ Cambios a medio y largo plazo: • Asignación de nuevos roles a máquinas. • Adición de nuevas máquinas, o nuevos tipos. Calidad de servicio: temas de prestaciones, confianza y seguridad. Ventajas De Los Sistemas Distribuidos • Compartir Recursos Si varias computadoras están conectadas entre sí, entonces un usuario puede utilizar en una computadora los recursos disponibles en otra.Por ejemplo,en la computadora 1 se puede utilizar una impresora láser solo disponible en la máquina 2,al mismo tiempo en la 2 es posible tener acceso a un archivo que reside en la 1.En general el compartimiento de recursos en un sistema distribuido ofrece los mecanismos para compartir archivos en instalaciones remotas, procesar información ,imprimir archivos y utilizar diferentes dispositivos remotos de hardware.
• Aceleracion De Cálculos Sin un cálculo determinado puede dividirse en varios subcálculos para que se ejecuten concurrentemente, un sistema operativo distribuido permitirá distribuir los cálculos entre las distintas computadoras y también ejecutarlos concurrentemente. Además si una computadora está sobrecargada de trabajos, algunos de ellos pueden pasarse a otra máquina.
• Confiabilidad Si falla una computadora en un sistema distribuido, las restantes pueden continuar trabajando. Si el sistema se compone de computadoras de gran tamaño la falla de una no debería afectar a las demás; si son computadoras pequeñas las que forman el sistema donde cada una es responsable de alguna función, entonces un solo error puede detener el funcionamiento de todo el sistema. En general si hay suficiente hardware y software en el sistema éste puede continuar su trabajo normalmente. El sistema debe detectar la falla de una computadora y tomar las medidas necesarias. El sistema no debe utilizar los servicios de esa máquina; además otra máquina puede hacerse cargo de la función que falló. Por último decimos que cuando la máquina que falló se repara deben llevarse a cabo mecanismos para reintegrarla de nuevo al sistema. 9
• Comunicación Si varias máquinas están interconectadas por medio de una red, los usuarios tienen la posibilidad de intercambiar in formación. A través de el pasaje de mensajes la funcionalidad en una máquina independiente se puede ampliar a un sistema distribuido. Algunos de los beneficios que podemos obtener son la transferencia de archivos y el uso del correo. La ventaja de un sistema operativo distribuido es que muchas de las funciones mencionadas pueden efectuarse a grandes distancias. Dos personas en diferentes zonas geográficas pueden trabajar en un mismo proyecto. Con la transferencia de archivos se pueden transferir programas e intercambiar correspondencia para coordinar el trabajo. Otras ventajas que podemos mencionar de los sistemas distribuidos es la que tienen con respecto a los sistemas centralizados y son: 1.−) Economía: Es mucho más barato instalar un sistema distribuido(o sea varias computadoras conectadas entre si) y no un gran mainframe ya sea por el costo que este tiene o por la imposibilidad de compartir los datos entre varios usuarios. 2.−) Velocidad: Al instalar un sistema distribuido, obtenemos más velocidad que en un mainframe ya que podemos realizar las distintas tareas entre los procesadores del sistema. 3.−) Distribución Inherente: Se refiere a la posibilidad de descomponer las tareas del sistema entre varios procesadores y no recargar a uno solo con agoviantes instrucciones, en consecuencia obtenemos mayor aceleración de cálculos. 4.−) Seguridad: Significa que si una máquina falla el sistema no se cae y continúa trabajando normalmente. 5.−) Crecimiento por Incrementos: Sería algo así como la escalabilidad, es decir podemos agregar componentes al sistema como más procesadores, multimedia etc. sin necesidad de tener que cambiar todo el hardware cuando queremos hacer una actualización. Desventajas De Los Sistemas Distribuidos En todos los sistemas de computadoras existen múltiples fallas solo que en un sistema distribuido resultan más visibles, dado que existen más componentes y por lo tanto mayor interferencia e interconexiones, como así también fallas parciales(en cada máquina)estos problemas causados por interconexión se denominan problemas del sistema. veamos algunos de estos problemas: • Estos problemas de sistema, se presentan cuando se interconectan entre si diferentes componentes que por lo general trabajan independientemente. Este tipo de falla resulta más fácil de apreciar cuando utilizamos correo electrónico o sistemas de archivos. 10
• Otro problema se presenta cuando tenemos dos componentes en un sistema(cada uno por separado) y presentan características funcionales, pero al combinarlos se comportan de una manera no esperada. • También podemos encontrarnos con fallas de propagación, es decir que la falla que sufra un nodo puede echar abajo toda la red. Por lo general este tipo de falla resulta de algún error de diseño. • Podemos tener problemas en una red de comunicación, debido a que esta puede perder mensajes, entonces es necesario contar con un software especial para controlar los mensajes. Un detalle a tener en cuenta es que las redes sufren saturación por el gran número de mensajes que se transmiten por ella. • Por último diremos que los sistemas distribuidos sufren de una gran vulnerabilidad es decir la información esta disponible para todos los usuarios y puede carecer de privacidad. Sistema de Archivo Distribuido Sistema de Archivo Distribuido Un sistema de archivos distribuido (SAD) es una implantación distribuida del clásico modelo de sistema de archivos de tiempo compartido, donde varios usuarios comparten archivos y recursos de almacenamiento. El propósito de un SAD es apoyar el mismo tipo de comparación cuando los archivos están dispersos físicamente en varias instalaciones de un sistema distribuido. En este capitulo analizaremos distintas maneras de diseñar e implantar un sistema de archivos distribuido. Primero analizamos los conceptos comunes en que se apoyan los sistemas de archivos distribuidos; luego ilustramos nuestros conceptos examinando los sistemas de archivos distribuidos UNIX United, NFS, Andrew, Sprite y Locus. En la presentación utilizamos esta estrategia debido a que los sistemas distribuidos siguen siendo un Area de investigación y aún se estudian muchas de las consideraciones de diseño que presentamos. Al explorar estos ejemplos de sistemas, esperamos ofrecer un esbozo de los factores por considerar en el diseño de un sistema operativo e indicar las Areas en las que se encuentran actualmente las investigaciones sobre sistemas operativos. Antecedentes Un Sistema Distribuido es un conjunto de maquinas débilmente acopladas, interconectadas por una red de comunicaciones. Utilizamos el término máquina para representar un computador central o una estación de trabajo. Desde el punto de vista de una máquina especifica en un sistema distribuido, las demás máquinas y sus recursos son remotos, mientras que los recursos propios de la máquina son locales. Para explicar la estructura de Un SAD, necesitamos definir los términos servicio, servidor y cliente. Un servicio es una entidad de software que se ejecuta en una o mas maquinas y un cliente es un proceso que puede invocar una servicio por medio de un conjunto de operaciones que forman su interfaz con el cliente. En algunas ocasiones, se define una interfaz de bajo nivel para la interacción de las máquinas; cuando sea necesario, nos referiremos a esta 11
interfaz como la interfaz entre máquinas. Usando esta terminología, decimos que un sistema de archivos ofrece servicios de archivos a clientes. Una interfaz con el cliente para el servicio de archivo se forma con un Conjunto de Operaciones de archivo primitivas, como crear, eliminar, leer o escribir un archivo. El principal componente del hardware controlado por el servidor de archivos es un Conjunto de dispositivos de almacenamiento secundario (es decir, discos magnéticos), en los cuales se almacenan los archivos y de donde necesidades de los clientes. Se recuperan según las un SAD es un sistema de archivos cuyos clientes, servidores y dispo-sitivos de almacenamiento están dispersos en las máquinas de un sistema distribuido; por tanto, las actividades de servicio tienen que efectuarse a lo largo de la red, y en vez de un sólo depósito de datos centralizado, existen multiples dispositivos independientes de almacenamiento. Como se verá más adelante, la configuración y la implantación de un SAD pueden variar. En algunas configuraciones, los servidores se ejecutan en máquinas dedicadas; en otras, una maquina puede ser un servidor o un cliente. El SAD puede implantarse como parte de un sistema operativo distribuido, bien como una capa de software cuya tarea es administrar la comunicación entre los sistemas operativos y los sistemas de archivos convencionales. Las características distintivas de un SAD son Ia multiplicidad y autonomía de los clientes y servidores en el sistema. Nominación y Transparencia La nominación es una correspondencia entre objetos de datos lógicos y físicos. Por ejemplo, los usuarios tratan con objetos de datos lógicos representados por nombre de archivos, mientras que el sistema manipula bloques de datos físicos almacenados en las pistas de los discos. Generalmente un usuario se refiere a un archivo utilizando un nombre , el cual se transforma en un identificador numérico de bajo nivel, que a su vez se corresponde con bloques en disco. Esta correspondencia multinivel ofrece a los usuarios la abstracción de un archivo, que oculta los detalles de cómo y donde se almacena el archivo en disco. En un SAD transparente se agrega una nueva dimensión de abstracción ..: la ocultación de la ubicación de los archivos de la red. En un sistema de archivos convencionales la función de nominación produce como resultado un intervalo de direcciones en disco, en un SAD este intervalo crece para incluir la máquina especifica en cuyo disco se almacena el archivo. Si se extiende un poco mas el tratamiento de los archivos como abstracciones, llegamos a la posibilidad de replicas de archivos. Dado un nombre de archivo, la correspondencia devuelve un conjunto de posiciones de las replicas de este archivo. En esta abstracción se ocultan tanto la experiencia de copias como su ubicación. • Estructuras de Nominación ..: 12
Existen dos conceptos que hay que distinguir en relación con al correspondencia de nombres en un SAD. Transparencia de Nominación, El nombre de archivo no revela ningún indicio sobre de la ubicación del almacenamiento físico del archivo. Independencia de Ubicación, No es necesario modificar el nombre de un archivo cuando cambia su ubicación en el almacenamiento físico. • Esquema de Nominación ..: Hay tres enfoques principales para los esquemas de nominación en un SAD. En el enfoque mas sencillo, los archivos se nombran con una combinación del nombre de su anfitrión y su nombre local , lo que garantiza un nombre único dentro de todo el sistema. Por ejemplo, en Ibis, un archivo se identifica de manera única con el Nombre Anfitrión Local, donde nombre local es una ruta semejante a las de UNIX. El segundo enfoque popularizado por el sistema de archivos de red (NFS, Network File System) de sun, ofrece una forma de unir directorios remotos a directorios locales, lo que da la apariencia a un árbol de directorios coherentes. El tercer enfoque es la estructura mas compleja y difícil de mantener en la NFS, ya que cualquier directorio se puede unir a cualquier árbol de direcciones locales y la jerarquía resultante puede estar poco estructurada. • Técnicas de Implantación ..: Para implantar una nominación transparente se requiere un mecanismo para correspondencia entre un nombre de archivo y la ubicación asociada. Para que esta correspondencia sea manejable, hay que agrupar conjuntos de archivos en unidades componentes y proporcionar la correspondencia según las unidades componentes, no por archivos. Esta agrupación también tiene fines administrativos. Los sistemas semejantes a UNIX utilizan el árbol jerárquico de directorios para proporcionar una transformación de nombres y para agrupar repulsivamente los archivos en directorios. Servicios Remotos Consideremos un usuario que solicita el acceso a un archivo remoto. Suponiendo que se localizó al servidor que contiene al archivo mediante el esquema de nominación apropiada, debe efectuarse la transferencia de datos para satisfacer la solicitud de acceso remoto del usuario. Una manera de lograr esta transferencia es a través del método de servicio remoto, con el cual se entregan al servidor las solicitudes de acceso, la maquina servidora lleva a cabo dichos accesos y los usuarios se devuelven al usuario Existe una coherencia directa entre los accesos y el trafico que va y viene del servidor. De notar que se presenta una analogía directa entre los métodos de acceso a disco en los sistemas de archivos convencionales y el método de servicio remoto en un SAD. El método de servicio análogo efectúa un acceso 13
al disco para cada solicitud de acceso. Una de las formas más comunes de servicio remoto es el paradigma de llamada a procedimiento remoto, RPC fue diseñado como una forma de abstraer el mecanismo de llamadas a procedimientos para usarse entre sistemas con conexiones de red. Memoria Caché Para asegurar un rendimiento razonable del esquema de servicio remoto presentado en la sección anterior utilizamos una forma de memoria caché. En los sistemas de archivos convencionales, el fundamento para la memoria caché es la reducción de la E/S de disco (lo que aumenta el rendimiento), en un SAD el objetivo es reducir el tráfico en la red. Esquema Básico, el concepto de memoria caché es sencillo, si los datos necesarios para satisfacer la solicitud de acceso no se encuentran en la memoria cache, se trae una copia de servicio al usuario y los accesos se llevan a cabo con la copia de memoria caché. La idea es conservar allí los bloques de disco de acceso mas reciente, para así manejar localmente los accesos repetidos a la misma información y no aunmentar el trafico de la red. Se utiliza una política de remplazo (por ejemplo, la de utilización menos reciente) para limitar el tamaño de la memoria caché. Políticas de Actualización, la política empleada para escribir los bloques de datos modificados en la copia maestra del servidor tiene un efecto decisivo sobre la confiabilidad y el rendimiento del sistema. La política mas sencilla consiste en escribir los datos directamente en el disco tan pronto se coloquen en una memoria caché. La ventaja de la escritura directa es su confiabilidad, ya que se pierde poca información si un sistema cliente falla. Sin embargo, esta política requiere que cada acceso de escritura espere hasta que se envíe la información al servidor, por lo que representa una escritura de escaso rendimiento. La memoria caché con escritura directa equivale a usar el servicio remoto para accesos de escritura y explotar la memoria cache únicamente para accesos de lectura. NFS proporciona el acceso de escritura directa. Consistencia, una maquina cliente se enfrenta al problema de decidir si una copia de datos en memoria caché local es consistente con la copia maestra ( y por tanto, puede usarse). Si la maquina cliente determina que sus datos en memoria caché están desfasados, ya no pueden servir para los accesos y hay que colocar en la memoria caché una copia actualizada de los datos. Existen dos enfoques para verificar la validez de los datos en memoria caché ..: • Enfoque iniciado por el cliente, el cliente inicia una comprobación de validez, en la cual se pone en contacto con el servidor y comprueban si los datos locales son consistentes con la copia maestra. • Enfoque iniciado por el servidor, el servidor anota, para cada 14
cliente, las partes de los archivos que coloca en memoria cache, y cuando detecta una inconsistencia, debe reaccionar. Una posible fuente inconsistencia ocurre cuando dos clientes, que trabajan en modos conflictivos, colocan en memoria caché un archivo. Replicación de Archivo La replicación de archivos en maquinas diferentes es una redundancia útil para mejorar la disponibilidad. La replicación en varias maquinas puede beneficiar el rendimiento, ya que, al seleccionar una replica cercana para atender una solicitud de acceso, el tiempo de servicio es menor. El requisito fundamental de un sistema de replicación es que las replicas de un archivo residan en maquinas independientes de las fallas; es decir, que la disponibilidad de una replica no se vea afectada por la disponibilidad de las demás. Este requisito obvio quiere decir que la administración de replicas es una actividad en la cual la ubicación es decisiva, pues deben existir mecanismos para colocar la replica en una maquina concreta. Ejemplos de Sistema En esta sección ilustramos los conceptos comunes sobre los que se basan los sistemas de archivos distribuidos, examinado cinco sistemas interesantes y diferentes : UNIX United, NFS, Andrew, Sprite y Locus. UNIX United El proyecto de UNIX United de la University of Newcastle Tyne, Inglaterra, es uno de los primero intentos por ampliar el sistema de archivo UNIX para que sea distribuido, sin modificar el nucleo de UNIX. En UNIX United se añade un sub−sistema de software a cada conjunto de sistema UNIX interconectados (conocidos como sistemas componentes o constituyentes), para asi construir un sistema distribuido funcionalmente indistinguible de un sistema UNIX centralizado convencional. El sistema se presenta con dos niveles de detalles : Primero, se encuentran los aspectos generales de UNIX United; luego se examina su implantación, la planta de conexión Newcastle, y se analizan algunos temas relacionados con el trabajo entre redes. Aspectos Generales, Es posible unir cualquier numero de sistemas UNIX enlasados para formar un sistema de UNIX United. Sus estructuras de nominación (de archivos, dispositivos, directorios y mandatos) se unen para formar una estructura de nominación unica en la cual cada componente es, a todos los efectos, un directorio. Ignorado por el momento todas las preguntas respecto a la acreditación y al control de acceso, el sistema que se obtiene es uno donde cada usuario puede leer o escribir un archivo, utilizar cualquier dispositivo, ejecutar cualquier mandato o inspeccionar cualesquiera de los directorios, sin importar el sistema al que pertenesca. La Conexión Newcastle, es una capa de software ( a un nivel de usuario) 15
que se incorpora a cada uno de los sistemas componentes y que separa el núcleo UNIX de los programas a nivel de usuario. Intercepta todas las llamadas al sistema que tiene ue ver con archivos y filtra aquellas que se deben desviar a sistemas remotos. Además, la capa de conexión acepta las llamadas enviadas por otros sistemas. Las capas remotas se comunican por medio de un protocolo RPC. Cada conexión conserva e mismo interfaz de llamadas al sistema que el nucleo de UNIX, a pesar de la extensa actividad remota que lleva a cabo el sistema. Aspectos de la Operación en Red, UNIX United es adecuado para distintas topologías que van desde redes locales ( LAN ) y enlaces directos, hasta redes de area ancha ( WAN ). Es necesario efectuar una correspondencia correcta entre el espacio de nombre lógicos y la información de encaminamiento. Un principio de diseño importante es que no se requiere que la jeralquia de nombre tenga relación con la topología. El Protocolo NFS El protocolo NFS proporciona un conjunto de llamadas a procedimiento remoto para las operaciones con archivos remotos. Estos procedimientos apoyan las siguientes operaciones..: • Buscar un archivo en un directorio • Leer un conjunto de registros de directorio • Manipular enlaces y directorios • Acceder a los atributos de archivos • Leer y escribir archivos Solo es posible invocar este procedimiento despues de haber establecido un identificativo de archivo para el diretorio montado remotamente. La omisión de las operaciones de apertura y cierre es intensional. Una de las caracteristicas prominentes de los servidores NFS es que operan sin estado y no conservan información acerca de sus clientes de un acceso a otro. Arquitectura de NFS Consiste en tres capas principales. La primera capa es el interfaz de sistema de archivo UNIX, basado en la llamadas de apertura, lectura, escritura y cierre, y los descriptores de archivos. La segunda capa se denomina sistema virtual de archivos ( VFS, Virtual File System ), y ofrece dos funciones de importancia ..: • Separa las operaciones genericas sobre el sistema de archivos de su implantación al definir un interfaz VFS limpio. Varias implantaciones del interfaz VFS pueden coexistir en la misma maquina lo que permite el acceso transparente a distintos tipos de sistemas de archivos montados localmente. • El VFS esta basado en una estructura de representación de archivos llamados Nodo−v, que contiene un identificador numerico para un archivo, unico en toda la red. 16