Generalidades sobre los Sistemas Operativos Introducción a los sistemas operativos Un sistema operativo actúa como un intermediario entre el usuario de una computadora y el hardware de la misma. El propósito de un sistema operativo es proporcionar un entorno en que el usuario pueda ejecutar programas de una manera fácil y eficiente.
Que es un Sistema Operativo No existe una definición aceptada a nivel internacional como tal sin embargo la más generalizada puede ser la siguiente “Un sistema operativo es un programa que administra el hardware de la computadora. También proporciona las bases para los programas de aplicación y actúa como el intermediario entre el usuario y el hardware de la computadora”.
Qué hace un sistema operativo Antes de explicar qué hace un sistema operativo, se debe hacer hincapié en un sistema informático global. Un sistema de estos se divide a grandes rasgos en Hardware, Sistema operativo, Programas de aplicación y usuarios
El hardware, CPU (central proccessing unit), la memoria y los dispositivos de entrada y salida, proporcionan los recursos básicos de cómputo al sistema.
Los programas de aplicación (como procesadores de texto, exploradores web, etc), definen la forma en la que el hardware se emplea para poder funcionar correctamente
El sistema operativo controla y coordina el uso del hardware entre los diversos programas de aplicación por parte de los usuarios.
Un sistema operativo proporciona un entorno en el que otros programas pueden llevar a cabo un trabajo útil. Se considera un asignador de recursos.
Reseña Histórica Para que un sistema operativo evolucione, no requiere de nuevo hardware, lo puede hacer a partir de un sistema operativo. No obstante, al parecer un nuevo hardware, es muy probable que surjan nuevos sistemas operativos o mejoras de los que existen. Tablero de conexiones: Las primeras computadoras se programaban usando conexiones físicas en un tablero, y se supervisaba observando el comportamiento de unas luces de control. Consola: Un programador a la vez, usaba la computadora durante un periodo de tiempo asignado con anterioridad. Este sistema era muy ineficiente y costoso, porque se podía perder tiempo en el aparato, si se terminaba antes del tiempo asignado, o quedaba suspendida la labor si no se concluía.
Separación operadores / programadores: Para ayudar a solucionar el problema del desperdicio en el sistema de consola, el programador deja de tener acceso directo a la computadora. Esto se logra contratando operarios especializados en el manejo de la misma. El operador organiza (por trabajos similares), procesa en la computadora todos los programas entregados a él y luego entrega los resultados a los programadores. Secuenciador automático de trabajos: Se crea un pequeño programa que transfiriera automáticamente el control de un trabajo a otro, aumentado la eficiencia. Se denomino “Monitor residente” y se podría considerar el primer sistema operativo. Usaba un lenguaje de control de trabajos llamado JCL, que se programaba con instrucciones que se pasaban a la computadora usando tarjetas perforadas. Operaciones fuera de línea (Off- Line): Se dividió el proceso en tres etapas:
La primera consistía en convertir los programas en tarjetas perforadas a cintas magnéticas. Luego la cinta era puesta en una computadora que procesaba la información que contenía y almacenaba los resultados en otra cinta. Se llevaba la cinta de resultados a otra computadora especializada, que se usaba como impresora.
Buffering: Debido a que había que esperar a que la cinta se llenara antes de pasarla a la siguiente etapa, demorando muchas veces el tiempo total de procesamiento, es que se creó esta técnica que consiste en asignar un bloque de memoria predeterminado llamado Buffer, que se
llena con datos enviados por dispositivos de entrada o salida. Al mismo tiempo, la computadora lee de este buffer y comienza colocando los resultados en otro buffer. Esta técnica es mejor que las anteriores labores porque estas ahora son automatizadas. Spooling: Esta técnica se creó gracias a la aparición de los discos magnéticos. Básicamente es pensar en un buffer para un disco. Así se descongestionaba la memoria. Multiprogramación: Consiste en conmutar a otro programa, aún si el actual no ha terminado. Esta conmutación puede darse si llega un programa de mayor prioridad, si se termina el tiempo asignado para un programa, entre otras. En estos sistemas pueden presentarse simultáneamente dos técnicas llamadas Batch (procesamiento por lotes) y Time Sharing (Tiempo compartido); la diferencia entre ellas, está en la intervención del usuario, en la primera no existe interactividad, en la segunda si. Tiempo real: Es una modalidad especial de los sistemas de multiprogramación, en la cual el tiempo de respuesta es vital para cualquier petición. Procesamiento distribuido: Son sistemas en donde varias computadoras cooperan para resolver un problema. Se empleas redes de alta velocidad para interconectarlas. Se conocen como sistemas débilmente acoplados. Multiprocesamiento: Sistemas donde una sola computadora posee varios procesadores (sistemas fuertemente acoplados). Los problemas muy grandes se dividen en problemas más sencillos que son atacados por cada procesador, los
resultados parciales conforman la solución al problema inicial.
Funcionamiento de los Sistemas de Cómputo
Sistemas Monousuario: Al reducirse el costo de los componentes hardware, aparecen maquinas de uso domestico diseñadas para un solo usuario, conocidas como computadores personales.
Una computadora de propósito general, consta de 1 o más procesadores y de una serie de controladores de dispositivos conectadas a través de un bus común que proporciona acceso a la memoria compartida.
Estructura Cómputo
Para iniciar una computadora requiere un programa de arranque, almacenado en la memoria ROM. Al ejecutarse se inicializan los registros de la CPU, los controladores de dispositivos y los contenidos de memoria. La tarea más importante es cargar en memoria el Kernel o núcleo del sistema operativo. La ocurrencia de un suceso o inicio de proceso se denomina Interrupción. Una interrupción Software se activa ejecutando una Llamada al sistema.
de
los
Sistemas
de
Estructuras de Diseño Según la forma en que se encuentre construido, un sistema operativo se puede clasificar en: Estructura monolítica: Consiste en crear procedimientos separados que podían llamar unos a otros. Solo realizaban una tarea a la vez. Estructura jerárquica: El sistema está dividido en niveles. Cada nivel presta una serie de servicios al nivel superior. En esta estructura se basan los sitema operativos actuales. Maquinas Virtuales: Hay un sistema operativo central que proporciona a cada uno de los sistemas operativos, la ilusión de que trabajan solos controlando cada uno su propia maquina. Cliente/Servidor: El núcleo del sistema operativo se encarga únicamente de establecer las comunicaciones entre los distintos clientes y servidores, manejando la multiprogramación. Tanto el cliente como el servidor son aplicaciones que se ejecutan en el sistema. La diferencia radica en que el servidor provee una serie de servicios que son solicitados por los clientes para realizar su labor.
Al interrumpirse a la CPU, deja el proceso que está realizando, y trasfiere esta ejecución a una posición de memoria establecida. La rutina de servicio de la interrupción se ejecuta, e inmediatamente se reanuda la operación que estaba haciendo.
Estructura de Almacenamiento Los programas de la computadora se deben cargar en la memoria principal o Memoria de Acceso Aleatorio (RAM) para ser ejecutados. Solo a este espacio el procesador puede acceder directamente. El procesador lee constantemente instrucciones y datos de la memoria para poder ejecutar los programas y por tanto, la velocidad de la memoria influye directamente en la velocidad de procesamiento.
El funcionamiento se lleva a cabo a través de una secuencia de carga (Load) o almacenamiento (Store) de instrucciones de direcciones de memoria. La instrucción load mueve una palabra desde la memoria principal a un registro interno de la CPU, mientras que la instrucción store mueve el contenido de un registro a la memoria principal. Aparte de las cargas y almacenamiento, la CPU caga automáticamente instrucciones desde la memoria principal para su ejecución.
bit disminuye, mientras que el tiempo de acceso aumenta.
Idealmente, los programas y los datos deben residir en la memoria principal de forma permanente. Esta situación no es posible debido a: 1. La Memoria principal es demasiado pequeña. 2. La memoria principal es un dispositivo de almacenamiento no volátil que pierde su contenido cuando se quita la alimentación. Por lo tanto, los sistemas informáticos proporcionan almacenamiento secundario como extensión de la memoria principal. El dispositivo más común es el Disco Magnético, que proporciona un sistema de almacenamiento permanente tanto de programas como de datos
Jerarquías de Almacenamiento Cada sistema de almacenamiento proporciona las funciones básicas para guardar datos y mantenerlos hasta que sean recuperados. Las principales diferencias entre estos sistemas están relacionadas con la velocidad, el coste, el tamaño y la volatilidad. En la siguiente jerarquía se muestran la variedad de sistemas de almacenamiento, según su velocidad y coste. Los niveles superiores son caros y rápidos. A medida que desciende por la jerarquía, el coste por
Jerarquía de dispositivos de almacenamiento
Estructura de Entrada y Salida Una de las funciones más importantes del sistema operativo es gestionar las solicitudes de los dispositivos de entrada y salida. Una computadora consta de múltiples controladoras de dispositivo que se conectan a través de un bus común. Estas mantienen algunos búferes locales y un conjunto de registros de propósito especial. Las controladoras de dispositivo son responsables de transferir los datos entre los dispositivos periféricos que controla y el búfer local. El software controlador de dispositivo, es capaz de entenderse con la controladora hardware y presenta al sistema operativo una interfaz para comunicarse con el dispositivo. Al iniciar una operación de E/S, el controlador del dispositivo carga los registros apropiados de la controladora hardware. Esta analiza el contenido de los registros para determinar la acción a realizar. Se inicia la transferencia de datos desde el dispositivo a su búfer local; una vez completada la transferencia, la
controladora hardware informa al controlador de dispositivo, a través de una interrupción, que ha terminado la operación. El controlador devuelve el control al sistema operativo. Cuando se requieren movimientos masivos de datos como el acceso a disco, el Acceso directo a memoria DMA (direct memory access), permite que después de configurar búferes, punteros y contadores para el dispositivo de E/S, la controladora hardware transfiera un bloque entero de datos entre su propio búfer y la memoria sin que intervenga la CPU, quedando está disponible para llevar a cabo otros trabajos.
Arquitectura General de los sistemas Un sistema informático se puede clasificar de acuerdo al número de procesadores de propósito general utilizados. Sistemas de un solo procesador: Hay una CPU principal capaz de ejecutar un conjunto de instrucciones de propósito general, incluyendo instrucciones de los procesos de usuarios. Casi todos los sistemas disponen de otros procesadores de propósito especial de dispositivos, como un disco o controladora grafica. Estos ejecutan un conjunto limitado de instrucciones y no ejecutan procesos de usuario. Sistemas Multiprocesador: También conocidos como sistemas paralelos o fuertemente acoplados,. Disponen de dos o más procesadores que se comunican entre si compartiendo el bus de la computadora y en ocasiones la memoria y dispositivos periféricos. Sus ventajas son:
Mayor rendimiento: Mayor velocidad al aumentar el número de procesadores. Sin embargo, cuando múltiples procesadores cooperan en una tarea, cierta carga del trabajo se emplea en conseguir que todas las partes funcionen correctamente, esto reduce la velocidad esperada. Economía de escala: Estos sistemas pueden resultar más baratos que su equivalente con múltiples sistemas de un solo procesador, ya que comparten periféricos, almacenamiento masivo y fuentes de alimentación. Mayor Fiabilidad: Al distribuir las funciones de forma apropiada entre varios procesadores, un fallo de un procesador no hará que el sistema deje de funcionar, solo lo relentizará. Los sistemas multiprocesador utilizados son de dos tipos: Multiprocesamiento asimétrico: Cada procesador se asigna a una tarea específica. Un procesador maestro controla el sistema y el resto esperan que el maestro de instrucciones o tienen asignadas tareas predefinidas. Multiprocesamiento simétrico (SMP): Cada procesador realiza todas las tareas correspondientes al sistema operativo. La ventaja es que pueden ejecutar simultáneamente muchos procesos sin que se produzca un deterioro significativo del rendimiento. Es necesario controlar la E/S para asegurar que los datos lleguen al procesador adecuado. Estos sistemas multiprocesador, permiten que los procesos y los recursos sean compartidos dinámicamente entre los distintos
procesadores, disminuyendo la varianza entre la carga de trabajo de los procesadores. Sistemas en Cluster: Utilizan múltiples CPU. Estos se diferencian de los sistemas de multiprocesamiento en que están formados por dos o más sistemas acoplados, compartiendo almacenamiento y conectadas a través de una red de área local (LAN, Local area network). El clúster se puede estructurar de forma: Asimétrica: una maquina esta en modo de espera en caliente, mientras que la otra está ejecutando las aplicaciones. La maquina en modo de espera solo monitorea al servidor activo, por si falla pasar a reemplazarlo. Simétrica: Dos o más host ejecutan aplicaciones y se monitorizan entre si Este modo es más eficiente, al utilizar todo el hardware disponible.
ejecución de un proceso que no está completamente en memoria.
Estructuras del Sistema Operativo
Componentes del Sistema Gestión de procesos: Un programa en ejecución es un proceso, que necesita de recursos como tiempo en la CPU, memoria, archivos y dispositivos de E/S, para llevar a cabo su tarea. Cada sistema consta de una colección de procesos, que pueden ejecutarse de forma concurrente El sistema operativo es responsable de las siguientes actividades en la gestión de procesos:
Los sistemas multiprogramados proporcionan un entorno en que se usan de forma eficaz los recursos del sistema. El tiempo compartido (o multitarea) es una extensión lógica de la multiprogramación, en donde la CPU ejecuta múltiples trabajos conmutando entre ellos, de una forma tan frecuente que los usuarios pueden interactuar con cada programa mientras esté en ejecución. Un sistema de tiempo compartido, permite que muchos usuarios compartan simultáneamente la computadora. El sistema operativo debe asegurar un tiempo de respuesta razonable, a través del mecanismo de intercambio, donde los procesos se intercambian entrando y saliendo de la memoria al disco. Un método utilizado es la memoria virtual, una técnica que permite la
Crear y borrar los procesos de usuario y del sistema Suspender y reanudar procesos Proporcionar mecanismos para la sincronización de procesos Proporcionar mecanismos para la comunicación de procesos Proporcionar mecanismos para el tratamiento de los interbloqueos
Gestión de Memoria: Para mejorar tanto la utilización de la CPU como la velocidad de respuesta de la computadora frente a los usuarios, se pueden mantener varios programas en memoria, lo que crea la necesidad de mecanismos de gestión de memoria, en donde el sistema operativo es responsable de las siguientes actividades:
Controlar que partes de la memoria están actualmente en uso y por parte de quien. Decidir qué datos y procesos (o partes de proceso) añadir o extraer de la memoria.
Asignar y liberar la asignación de espacios de memoria según sea necesario.
Gestión de almacenamiento: El sistema operativo proporciona una vista lógica del sistema de almacenamiento de la información, definiendo una unidad de almacenamiento: el archivo. Gestión del sistema de archivos: Las computadoras pueden almacenar la información en diferentes tipos de medios físicos. Un archivo es una colección de información relacionada, que representan comúnmente programas y datos. El sistema operativo gestiona los medios de almacenamiento masivos y los dispositivos que los controlan, organiza los archivos en directorios y cuando varios usuarios tienen acceso al archivo, se controla quien y en qué forma accede a estos. El sistema operativo es responsable de las siguientes actividades en la gestión de archivos:
Creación y borrado de archivos. Creación y borrado de directorios para organizar los archivos Soporte de primitivas para manipular archivos y directorios Asignación de archivos a los dispositivos de almacenamiento secundario Copia de seguridad de los archivos en medios de almacenamiento estables (no volátiles)
Gestión de almacenamiento masivo: La mayoría de los sistemas informáticos usan discos como principal medio de almacenamiento tanto para los programas como para los datos. El sistema operativo
es responsable de las siguientes actividades en la gestión de disco:
Gestión del espacio libre Asignación del espacio de almacenamiento Planificación del disco
Almacenamiento en cache: La información se mantiene en algún sistema de almacenamiento, como por ejemplo la memoria principal. Cuando se utiliza, esa información se copia en forma temporal en un sistema de almacenamiento más rápido, denominado Cache. La gestión de la cache, por su tamaño limitado, constituye un problema de diseño. La selección cuidadosa del tamaño de la cache y de una adecuada política de reemplazamiento puede dar como resultado un incremento en el rendimiento. Sistemas de E/S: Uno de los propósitos de un sistema operativo es ocultar al usuario las peculiaridades de los dispositivos hardware específicos, a través del subsistema de E/S, que consta de varios componentes: Un componente de gestión de memoria que incluye almacenamiento en búfer, gestión de cache y gestión de colas. Una interfaz general para controladores de dispositivo Controladores para dispositivos hardware específicos
Protección y seguridad Un sistema operativo debe regular el acceso a los datos, al tener múltiples usuarios y ejecutar concurrentemente múltiples procesos.
Protección es cualquier mecanismo que controle el acceso de procesos y usuarios a los recursos definidos por un sistema informático. Estos mecanismos mejoran la fiabilidad, permitiendo detectar errores latentes en las interfaces entre los subsistemas componentes. Es responsabilidad de los mecanismos de seguridad defender el sistema frente a ataques internos y externos. Estos ataques incluyen los virus y gusanos, los ataques de denegación de servicio, robo de identidad y robo de servicio.
Sistemas Distribuidos Un sistema distribuido es una colección de computadoras físicamente separadas y posiblemente heterogéneas que están conectadas en red para proporcionar a los usuarios acceso a los diversos recursos que el sistema mantiene. Acceder a un recurso compartido incrementa la velocidad de cálculo, la funcionalidad, la disponibilidad de los datos y la fiabilidad. Algunos sistemas operativos generalizan el acceso a la red como una forma de acceso a archivo, mientras que otros invocan específicamente una serie de funciones de red. Un sistema operativo de red, es un sistema operativo que proporciona funcionalidades como la compartición de archivos a través de la red y que incluye un esquema de comunicación que permite a diferentes procesos, en diferentes computadoras intercambiar mensajes. Un sistema operativo distribuido proporciona un entorno menos autónomo, los diferentes sistemas se comunican se modo que se crea la ilusión de que un único sistema operativo controla la red.
Servicios del Sistema Operativo El sistema operativo presta servicios a los programas y a los usuarios de dichos programas. Un conjunto de servicios que son útiles al usuario son: Interfaz de usuario: casi todos los sistemas disponen de una interfaz de usuario. Normalmente se utiliza la Interfaz gráfica de usuario (GUI, graphical user interface), un sistema de ventanas con un dispositivo señalador para dirigir la E/S, elegir opciones de los menús y otras selecciones. Ejecución de programas: El sistema debe poder cargar un programa en memoria y ejecutarlo. Operaciones de E/S: Un programa en ejecución puede necesitar llevar a cabo operaciones de E/S. Por esto el sistema operativo debe proporcionar medios para realizar la E/S, ya que el usuario no controla directamente los dispositivos. Manipulación del sistema de archivos: El sistema de archivos es de gran importancia, ya que los programas necesitan leer y escribir, crearlos, borrarlos, realizar búsquedas y conceder permisos a estos. Comunicaciones: Hay muchas circunstancias en las que un proceso necesita intercambiar información con otro. El sistema operativo transfiere paquetes de información entre unos procesos y otros, utilizando el procedimiento de paso de mensajes. Detección de errores: Para cada tipo de error el sistema operativo debe llevar a cabo la acción apropiada para asegurar un funcionamiento correcto y coherente. Los errores se pueden producir en el hardware del procesador y de memoria, en un
dispositivo de E/S o en programas de usuario. Existe un conjunto de funciones que están diseñadas para garantizar la eficiencia del sistema: Asignación de recursos: Cuando hay varios usuarios o varios trabajos ejecutándose al mismo tiempo, el sistema operativo de asignar a cada uno de ellos los recursos necesarios, a partir de código especial que gestione la asignación. Responsabilidad: Conviene hacer seguimiento de que usuarios emplean que clase de recursos de la computadora y en qué cantidad. Estas estadísticas son valiosas para mejorar los servicios informados. Protección y seguridad: La protección implica asegurar que todos los accesos a los recursos del sistema estén controlados. También es importante controlar la seguridad del sistema frente a posibles intrusos, comenzando por requerir que cada usuario se autentique ante el sistema, para obtener acceso a recursos del mismo.
Llamadas al Sistema Las llamadas al sistema proporcionan una interfaz con la cual poder invocar los servicios que el sistema operativo ofrece y que se encuentran disponibles en el Kernel. Los desarrolladores de aplicaciones diseñan sus programas utilizando una API (application programming intereface). Algunas de las API disponibles son: Win32 para Windows, Posix para versiones Unix, Linux, Mac OS Y Java, para ejecutar sobre la maquina virtual de Java. Las funciones que conformas una
API invocan a las llamadas al sistema. Para un programador es preferible usar una API que invocar las propias llamadas del sistema debido a: la portabilidad, el programa se puede compilar y ejecutar en cualquier sistema que soporte la misma API, además es más difícil trabajar con las propias llamadas al sistema, al exigir mayor nivel de detalle. Los lenguajes de programación proporcionan la interfaz de llamadas al sistema que sirve como enlace con las llamadas al sistema disponibles en el sistema operativo. Esta interfaz intercepta las llamadas a función dentro de las API e invoca la llamada al sistema necesaria. Cada llamada al sistema tiene asociado un numero y la interfaz de llamadas al sistema mantiene una tabla indexada, que al utilizarse, permite invocar la llamada necesaria del kernel del sistema operativo y devuelve el estado de la ejecución de la llamada al sistema y los posibles valores de retorno. La API oculta al programador la mayor parte de los detalles de la interfaz del sistema operativo, los cuales son gestionados por la biblioteca de soporte en tiempo de ejecución. Las llamadas al sistema se llevan a cabo de diferentes formas, dependiendo del computador que se utilice. El tipo exacto y la cantidad de información necesaria varían según el sistema operativo y la llamada concreta que se efectué. Tipos de llamadas al sistema Las llamadas al sistema se pueden agrupar en cinco categorías principales: Control de procesos. Terminar, abortar Cargar, ejecutar
Crear procesos, terminar procesos Obtener atributos del proceso, definir atributos del proceso Esperar para obtener tiempo Esperar suceso, señalizar suceso Asignar y liberar memoria
Administración de archivos: Crear archivos, borrar archivos Abrir, cerrar Leer, escribir, reposicionar Obtener atributos de archivo, definir atributos de archivo Administración de dispositivos Solicitar dispositivos, liberar dispositivo Leer, escribir, reposicionar Obtener atributos de dispositivos, definir atributos de dispositivo Conectar y desconectar dispositivos lógicamente Mantenimiento de información Obtener la hora o la fecha, definir la hora o la fecha Obtener datos del sistema, establecer datos del sistema Obtener los atributos de procesos, archivos o dispositivo Establecer los atributos de procesos, archivos o dispositivos Comunicaciones Crear, eliminar conexiones de comunicación Enviar, recibir mensajes Transferir información de estado Conectar y desconectar dispositivos remotos
Programas del Sistema Los programas del sistema proporcionan un cómodo entorno para desarrollar y
ejecutar programas. Se pueden dividir en las siguientes categorías: Administración de archivos: Estos programas crean, borran, cambian el nombre, es decir manipulan archivos y directorios. Información de estado: Algunos programas solicitan al sistema la fecha, cantidad de memoria o espacio en disco es disponible. Otros proporcionan información detallada sobre el rendimiento, los inicios de sesión y los mecanismos de depuración. Modificación de archivos: Puede disponer de editores de texto para crear y modificar el contenido de los archivos almacenados en el disco o en otros dispositivos de almacenamiento. Soporte de lenguaje de programación: Con el sistema operativo, se proporcionan al usuario compiladores, ensambladores e intérpretes para los lenguajes de programación. Carga y ejecución de programas: Una vez que el programa se ha compilado, el sistema debe cargarlo en memoria para poder ejecutarlo. El sistema proporciona cargadores absolutos, reubicables, editores de montaje. Comunicación: Estos programas proporcionan mecanismos para crear conexiones virtuales entre procesos, usuarios y computadoras.
Estructura del Sistema Los componentes de un sistema operativo se interconectan para formar el Kernel.
Estructura simple: Muchos sistemas comerciales no tienen una estructura bien definida. Inician siendo sistemas pequeños, simples y limitados, y luego crecen mas allá de su ámbito original. MS-DOS: Fue escrito para proporcionar la máxima funcionalidad en el menor espacio posible. Sus interfaces y niveles de funcionalidad no están separados, esto lo hace vulnerable a programas erróneos o maliciosos. Unix: inicialmente estaba limitado por el Hardware. Consta de dos partes separadas: el kernel y los programas del sistema. El kernel proporciona el sistema de archivos, los mecanismos de planificación de la CPU, la funcionalidad de gestión de memoria, a través de llamadas al sistema. Es decir una gran cantidad de funciones en un solo nivel. Estructura en niveles: Con el soporte Hardware apropiado, los sistemas operativos pueden dividirse en partes más pequeñas, que permitan mantener un control mayor sobre la computadora y las aplicaciones. Un sistema operativo puede hacerse modular mediante la estructura por niveles, en el que el sistema operativo se divide en una serie de capas. El nivel inferior (nivel 0) es el hardware, el nivel superior (nivel N) es la interfaz de usuario. Un nivel de un sistema operativo es una implementación de un objeto abstracto formado por una serie de datos y por operaciones que permite manipularlos. Este nivel consta de estructuras de datos y de un conjunto de rutinas que los niveles superiores pueden invocar. La principal ventaja del método de niveles es la simplicidad de construcción, depuración y verificación del sistema. El primer nivel puede depurarse sin afectar el resto del sistema. Si se encuentra un error
en un determinado nivel, el error tendrá que ser localizado en dicho nivel, dado que los niveles inferiores a él ya han sido depurados. Microkernels: Su función principal es proporcionar un mecanismo de comunicaciones entre el programa cliente y los distintos servicios que se ejecutan también en el espacio de usuario. La comunicación se proporciona mediante el paso de mensajes. Una ventaja de este método es la facilidad para ampliar el sistema operativo. Todos los servicios nuevos se añaden al espacio de usuario y en consecuencia, no requiere que se modifique el kernel. También proporciona mas seguridad y fiabilidad, dado que la mayor parte de los servicios se ejecutan como procesos de usuario. Si un servicio falla, el resto del sistema operativo no se ve afectado. Módulos: Una metodología actual para diseñar sistema operativos es la que usa técnicas de programación orientada a objetos para crear un Kernel modular. Es este caso, el kernel dispone de un conjunto de componentes fundamentales y enlaza dinámicamente los servicios adicionales, durante el arranque o en tiempo de ejecución. Esta estrategia es habitual en implementaciones modernas de UNIX, como Solaris, Linux y Mac OS , donde la estructura se organiza alrededor de un kernel con siete módulos cargables: 1. 2. 3. 4. 5. 6. 7.
Clases de planificación Sistemas de archivos Llamadas al sistema cargables Formatos ejecutables Módulos STREAMS Módulos Misceláneos Controladores de bus y dispositivos
Maquinas Virtuales La idea fundamental de una Maquina virtual, es la de abstraer el hardware de la computadora (la CPU, la memoria, las unidades de disco, las tarjetas de interfaz de res), formando varios entornos de ejecución diferentes, creando la ilusión de que cada entorno de ejecución está operando en su propia computadora. Con los mecanismos de planificación de la CPU y las técnicas de memoria virtual, un sistema operativo puede crear la ilusión de que un proceso tiene su propio procesador con su propia memoria (virtual). Implementación: Es preciso realizar un duro trabajo para proporcionar un duplicado exacto de la maquina subyacente. Esta tiene dos modos, modo usuario y modo kernel. El software de la maquina virtual puede ejecutarse en modo Kernel, dado que es el sistema operativo; la maquina virtual en si puede ejecutarse solo en modo usuario. La transferencia del modo usuario virtual, al modo kernel virtual se realiza de la siguiente manera: Cuando se hace una llamada al sistema por parte de un programas que se está ejecutando en una maquina virtual, en modo usuario virtual, se produce una transferencia al monitor de la maquina virtual en la maquina real. Cuando el monitor de maquina virtual obtiene el control, puede cambiar el contenido de los registros y del contador del programa para que la maquina virtual simule el efecto de la llamada al sistema. A continuación, se puede reiniciar la maquina virtual, que ahora se encontrará en modo kernel virtual. Beneficios: En este tipo de entornos existe una protección completa de los diversos
recursos del sistema. Cada máquina virtual se encuentra aislada de las demás, lo que impide que se compartan recursos. Para realizar la compartición, existen dos métodos: es posible compartir en minidisco, disco físico compartido por software, y así compartir archivos. Otra forma es definir una red de maquinas virtuales, que permita enviar información a través de una red de comunicaciones virtual, implementada por software. Ejemplos VMware: aplicación que abstrae el hardware 80x86 de Intel, creando una serie de maquinas virtuales aisladas. Se ejecuta sobre un sistema operativo host, y permite al sistema host ejecutar de forma concurrente varios sistema operativos huésped diferentes como maquinas virtuales independientes. Maquina virtual de Java: Java es un popular lenguaje de programación orientado a objetos introducido por Sun Micro Systems. Proporciona una especificación para una maquina virtual Java, JVM (Java Virtual Machine). La JVM es una especificación de una computadora abstracta. Consta de un cargador de clases y de un intérprete de Java que ejecuta el código intermedio. Esta máquina virtual puede implementarse por software encima de un sistema operativo host, o puede implementarse como parte de un explorador Web.
Bibliografía 1.Sistemas Operativos – 7ª Silberschatz Galvin -
Edición,
Prentice Hall
Pearson. Capitulos 1, 2 y 3. Páginas 3 – 96
2.Teoría general de Sistemas Operativos, 1 Edición, Julián Esteban Gutiérrez Posada, Carlos Eduardo Gómez Montoya, Colombia 2001, ISBN: 9583320684 págs:7 -13
-