Sie sind auf Seite 1von 5

Introduccin Sistemas Operativos Avanzados Utilizar una mquina al desnudo (slo interactuando con el hardware) resulta engorroso e ineficiente

debido a la gran cantidad de tareas que deben ser realizadas de manera manual, tales como: cargar programas y datos en memoria de manera apropiada; direccionar y activar de manera correcta los dispositivos de entrada salida, etc. Cuando una mquina es usada por muchos usuarios de forma simultanea, existen numerosas consideraciones que deben tomarse en cuenta como: la proteccin de los datos de usuario, la manera de compartir el tiempo y uso de los recursos compartidos, etc. Un sistema operativo libera al usuario de las tareas tediosas e incrementa la eficiencia encargndose del manejo de los recursos del sistema. Funciones de un Sistema Operativo Un sistema operativo es una capa de software sobre el hardware de la mquina que permite realizar dos funciones bsicas:

Administracin de Recursos. Un programa de usuario accede en numerosas ocasiones a recursos de hardware y software durante su ejecucin. Ejemplos de dichos recursos son: CPU, memoria principal, dispositivos de entrada/salida, y diferentes tipos de software (compiladores, enlazador/cargador, archivos, etc.). Es el sistema operativo el encargado de manejar los recursos y asignarlos a los programas de usuario de forma eficiente y justa. Las labores de administracin abarcan lo siguiente: Administracin del tiempo (Planificacin de CPU y Disco). Administracin del espacio (Almacenamiento Principal y Secundario). Manejo de sincronizacin de procesos y abrazo mortal (Deadlock). Manejo de estadsticas y estado del sistema. Interfaz amigable. Un sistema operativo esconde los detalles no placenteros de bajo nivel y la idiosincrasia de los componentes de hardware de la mquina con la finalidad de proveer una interfaz amigable hacia la mquina. Con dicha interfaz la carga, manipulacin, impresin, y ejecucin de programas se realiza mediante comandos de alto nivel sin la necesidad de preocuparse por los detalles de bajo nivel. La capa provista por el sistema operativo transforma el hardware crudo de la mquina, en una mquina virtual o abstracta con funcionalidades agregadas (como la administracin de recursos de forma automtica). Adems, los usuarios de la mquina tienen la ilusin de que son los nicos usuarios en el sistema, aun cuando la mquina podra operar en un ambiente multiusuarios. La interfaz amigable toma en consideracin los siguientes tareas: Ambiente de ejecucin (Administracin de procesos creacin, control y finalizacin, manipulacin de archivos, manejo de interrupciones, soporte de entrada/salida, etc.) Deteccin y manejo de errores. Proteccin y seguridad. Tolerancia a fallas y recuperacin de las mismas.

Acercamiento al diseo de sistemas operativos Un sistema operativo puede ser diseado de forma macro, como una gran coleccin de procesos sin ningn tipo de estructura. Cualquier proceso puede invocar a otro para solicitar un servicio de este; bajo este esquema la ejecucin de una instruccin de usuario suele involucrar la activacin de una serie de procesos y la comunicacin entre ellos. Un enfoque macro y centralizado como el anterior puede considerarse aceptable para un sistema operativo pequeo, pero no para un sistema operativo relativamente grande y complejo. Esto se debe a que la falta de estructura complica fuertemente el cdigo, las pruebas y la depuracin de un sistema operativo enorme o de propsito general. El diseo de sistemas operativos de propsito general ha madurado durante las ltimas dos dcadas y media, dando como resultado sistemas operativos enormes y complejos. Generalmente los sistemas operativos que poseen soporte de una ambiente multiprogramado poseen decenas de megabytes de longitud; adems de un diseo, implementacin y etapa de prueba a cargo de un gran equipo de desarrollo de software. A continuacin se discutirn algunas de las consideraciones que deben tomarse en cuenta para manejar la complejidad y tamao de los sistemas operativos actuales, realizando especial nfasis en entender la diferencia entre que cosas debo hacer y como debo hacerlas, dentro del contexto de diseo de un sistema

operativo. Separacin de Polticas y Mecanismos La poltica se refiere a que debo hacer, mientras que el mecanismo se refiere a como lo voy a hacer. Por ejemplo, en planificacin de CPU, el mecanismo provee los medios (maneras) de implementar varias disciplinas de planificacin, mientras la poltica decide la poltica de planificacin del CPU (FCFS, prioridad, etc.) a ser usada. Un sistema operativo bien diseado debe separar las polticas de los mecanismos. El hecho de que las polticas utilice los mecanismos y la separacin entre ellos contribuye a brindar flexibilidad, as las decisiones de que poltica aplicar pueden ser tomadas a alto nivel. Es evidente pensar que las polticas pueden cambiar con el tiempo, con las aplicaciones, o con los usuarios. Si los mecanismos son separados de las polticas, entonces un cambio en las polticas no requerira cambios en los mecanismos y viceversa. De otra manera, un cambio en las polticas podra requerir un rediseo completo. Consideraciones de modelos basados en capas Dijkstra propuso un enfoque de diseo basado en capas con la finalidad de reducir la complejidad de diseo e implementacin de un sistema operativo. El enfoque basado en capa consiste en dividir las funcionalidades del sistema operativo por capas. Las funciones del sistema operativo se dividen de forma equitativa en dichas capas, dando como resultado un sistema balanceado. Cada una de estas capas se encargara de definir funcionalidades especficas, as como tambin una interfaz de entrada/salida con las capas adyacentes. El diseo normal de una arquitectura en capa otorga a las capas inferiores la funcin de interactuar con el hardware de la mquina y servir de interfaz a las capas superiores, mientras que las capas superiores se encargan de la interfaz de usuario o interactan con los mismos. La idea detrs de este enfoque es similar a la utilizada en el modelo de interconexin de sistemas abiertos (OSI Open System Interconnection). Disear un sistema operativo basado en capas hace que el mismo sea modular (en un diseo modular, el sistema es dividido en varios mdulos y dichos mdulos se disean de manera independiente). As, cada capa puede ser diseada, codificada y probada de manera independiente. Como consecuencia de esto, un diseo orientado a capas ofrece simplicidad en su diseo, especificaciones e implementacin. Sin embargo, existen inconvenientes en cuanto a un enfoque orientado a capas, uno de ellos es la ubicacin de las funcionalidades por capa y la cantidad de funcionalidades en ellas. Si una capa posee muchas funcionalidades lo ms probable es que su desempeo sea lento y costoso; por otro lado se debe considerar que en el modelo en capas, una capa slo puede acceder a las funcionalidades de la capa superior por lo tanto la ubicacin de estas es de suma importancia. Un ejemplo clsico de un sistema operativo diseado por capas es THE el cual consiste en seis capas. La Figura 1 muestra las capas del sistema operativo y las funcionalidades asociadas.

Figura 1. Estructura del Sistema Operativo THE.

Otro ejemplo clsico de un enfoque en capas son los sistemas MULTICS, cuya arquitectura de diseo se basa en capas concntricas (anillos). Esta estructura en anillos no slo simplifica el diseo y verificacin del sistema, sino que tambin sirve de ayuda en el diseo e implementacin de proteccin. En MULTICS, los privilegiosdisminuyen de un anillo interno a uno externo, de esta manera la estructura en anillos define e implementa de forma sencilla la proteccin en el sistema. La Figura 2 muestra un sistema en anillos similar a MULTICS.

Figura 2. Sistema en anillos similar a MULTICS.

Un enfoque basndose en el ncleo (kernel) Otros enfoques de diseo han sido planteados como el basado en el ncleo, el cual propuso Brinch Hansen. El ncleo es una coleccin de primitivas que se utilizan para construir y ejecutar el sistema operativo. As, el ncleo provee un ambiente para construir sistemas operativos donde el diseador posee una gran flexibilidad ya que las polticas y consideraciones de optimizacin no se establecen a nivel del ncleo. Esto conlleva a establecer que el ncleo slo soporta los mecanismos, y las decisiones de que polticas implementar deben ser llevadas a cabo en las capas exteriores. Un enfoque como el anterior produce un sistema creciente de software el cual crece sobre el ncleo, donde en cada nivel se toman decisiones con respecto a planificacin de procesos, asignacin de recursos, ambientes de ejecucin, sistemas de archivos, proteccin de recursos, etc. De acuerdo con Brinch Hansen, el ncleo fundamentalmente establece las primitivas que permiten la creacin y control de procesos, as como la comunicacin entre ellos. As, el ncleo sugerido por Hansen slo posee la visin de procesos y no incluye el concepto de recursos. Sin embargo, para que un sistema operativo pueda madurar en funcionalidad y complejidad, se ha optado por incluir ms funcionalidad al ncleo. Un ncleo slo debe contener un conjunto de funcionalidades mnimo, con las cuales se pueda construir y ejecutar un sistema operativo con un grupo de objetivos especficos. Incluir muchas funcionalidades dentro del ncleo conlleva a poca flexibilidad a alto nivel, mientras que incluir pocas resulta en un bajo soporte para los niveles superiores. Un ejemplo de un sistema operativo diseo bajo este enfoque es HYDRA, es cual es un ncleo para C.mmp (sistema multiprocesador desarrollado en Carnegie- Mellon); este ncleo soporta nocin de recursos y procesos, y provee mecanismos para la creacin y representacin de nuevos tipos de recursos y acceso protegido a los mismos. Acercamiento a las Mquinas Virtuales Una mquina virtual es una capa de software sobre el hardware crudo que provee la ilusin de que todos los dispositivos de la mquina (procesador, memoria principal, almacenamiento secundario, etc.) se encuentran disponibles en su totalidad para cada usuario. Un usuario puede ejecutar en conjunto completo de instrucciones, incluyendo las instrucciones privilegiadas. El software de la maquina virtual crea dicha ilusin multiplexando de forma adecuada los recursos del sistema entre todos los usuarios presentes en la mquina. Un usuario puede correr un sistema operativo mono-usuario sobre un sistema operativo basado en maquina virtual. El soporte para un sistema mono-usuario es muy sencillo y eficiente, ya que las consideraciones de multiprogramacin y proteccin no se encuentran presentes. El concepto de mquinas virtuales ofrece alta flexibilidad, permitiendo que diferentes sistemas operativos puedan ejecutarse en diferentes mquinas virtuales. Adems el concepto de mquina virtual provee una poderosa herramienta de prueba para nuevos sistemas operativos, sin interferir con el resto de los usuarios de la mquina. Una implementacin eficiente de este enfoque es VM/370 de IBM, sin embargo, numerosos problemas en cuanto a dificultad y complejidad envuelven este sistema por su gran extensin. VM/370 provee una mquina virtual para cada usuario; cuando un usuario inicia en el sistema, se crea una copia exacta del hardware crudo (IBM 370), en donde se ejecuta por lo general un sistema operativo mono-

usuario interactivo. Por qu avanzan los Sistemas Operativos? En los aos de 1960 y 1970, los esfuerzos en cuanto al diseo de los sistemas operativos se encontraban centralizados en los llamados sistemas operativos tradicionales, esto es un computador standalone con un solo procesador. Los numerosos avances en los circuitos integrados y en las tecnologas de comunicacin entre computadores desde 1980 hasta la actualidad, ha permitido la proliferacin de diversas arquitecturas, sistemas de memoria compartida, sistemas de memoria distribuida, etc. Estas arquitecturas y sistemas requieren un conjunto de caractersticas que los sistemas operativos convencionales no pueden proveer, por ello los sistemas operativos han evolucionado para poder satisfacer los nuevos requerimientos de las arquitecturas emergentes. Los sistemas multi-procesador y sistemas distribuidos tienen muchas caractersticas que no se encuentran presentes en los sistemas mono-procesador tradicionales. Estas caractersticas hacen que el diseo de los sistemas operativos emergentes sea extremadamente complicado, y requieren que asuntos no triviales de diseo sean tratados. Debido a su novedad relativa y enorme complejidad de diseo, los sistemas operativos para arquitecturas de cmputo mltiples son llamados sistemas operativos avanzados o modernos. Un sistema operativo avanzado no slo aprovecha la potencia de una arquitectura mltiple cmputo, sino que tambin provee una vista coherente de alto nivel del sistema; un usuario ve a un sistema de las caractersticas mencionadas como una mquina monoltica muy poderosa. Tipos de Sistemas Operativos Avanzados La Figura 3 muestra una clasificacin de los sistemas operativos avanzados. El mpetu de los sistemas operativos avanzados ha tomado dos direcciones. La primera surge de los avances de la arquitectura. El diseo de hardware de estas arquitecturas ofrece un paralelismo de alta disponibilidad y sistemas distribuidos de alto cmputo; estas caractersticas introducen grandes cambios en las consideraciones de diseo de sistemas operativos. Bsicamente los sistemas operativos diseados para estas arquitecturas se conocen como sistemas operativos para multiprocesadores y sistemas operativos distribuidos. La segunda clase de sistemas operativos avanzados se orienta al manejo de aplicaciones. Algunas aplicaciones (Ejem: Base de Datos) requieren soporte especial del sistema operativo, como manejo intervalos de tiempo o manejo directo de estructuras de datos temporales. Los sistemas operativos convencionales o de propsito general ofrecen un desempeo pobre para los requerimientos ciertas aplicaciones, sobre todo se han centrado los estudios en los requerimientos de Base de Datos y Tiempo Real.

Figura 3. Clasificacin de los Sistemas Operativos Avanzados.

Sistemas Operativos Distribuidos Un sistema operativo distribuido es un sistema operativo que controla un conjunto de mquina autnomas, conectadas entre si mediante una red de comunicaciones. Un sistema operativo distribuido controla la forma de manejar los recursos de hardware y software distribuidos en todo el sistema, de manera tal que el usuario final se sienta en un sistema centralizado, es decir, el usuario ve al sistema como un poderoso computador monoltico. Los asuntos bsicos en el diseo de sistemas operativos distribuidos son esencialmente los mismos que en los sistemas operativos convencionales (sincronizacin de procesos, abrazo mortal, planificacin, sistema de archivo, comunicacin entre procesos, manejo de memoria y buffer, recuperacin de fallas, etc.). Sin embargo, otras consideraciones deben considerarse: nombramiento, memoria compartida, manejo de reloj, retardo en las comunicaciones, etc. Sistemas Operativos Multiprocesador Un sistema multiprocesador tpico consiste en un conjunto de procesadores los cuales comparten un bloque de memoria fsica y generalmente se encuentran comunicados con otros sistema va red. La tarea del sistema operativo es hacer ver a todo el sistema como un sistema poderoso de un nico procesador. Las consideraciones bsicas de diseo son las mismas de los sistemas operativos tradicionales, teniendo especial nfasis en la sincronizacin de procesos, planificacin de tareas, manejo de memoria, proteccin y seguridad. Sistemas Operativos de Base de Datos Los sistemas operativos de base de datos requieren manejar el concepto de transacciones, operaciones de almacenamiento, recuperacin y manipulacin de grandes volmenes de datos de forma eficiente. Para el manejo temporal de datos es necesario el manejo de buffer, as como un esquema de acceso a estos. Sistemas Operativos de Tiempo Real Un sistema de tiempo real se caracteriza por poseer tiempo lmites para las tareas que se deben ejecutar, en base a esto generalmente estos se clasifican en sistemas operativos de tiempo real suave y tiempo real duro. La consecuencia directa de estas caractersticas es realizar un diseo que permita cumplir con los tiempos de respuestas necesarios para las aplicaciones que se ejecutan sobre el sistema operativo de tiempo real.

Universidad Central de Venezuela Facultad de Ciencias Esc. Computacin Prof. David A. Prez A. david.perez@ciens.ucv.ve

Das könnte Ihnen auch gefallen