Estructura del sistema operativo

De Departamento de Informatica
Saltar a: navegación, buscar

Contenido

Introducción

Estructura básica de un SO

Un sistema operativo es el software encargado de ejercer el control y coordinar el uso del hardware entre diferentes programas de aplicación y los diferentes usuarios. El sistema operativo se encarga de crear el vínculo entre los recursos materiales, el usuario y las aplicaciones (procesador de texto, videojuegos, etcétera). Cuando un programa desea acceder a un recurso material, no necesita enviar información específica a los dispositivos periféricos, simplemente envía la información al sistema operativo, el cual la transmite a los periféricos correspondientes a través de su driver (controlador). Si no existe ningún driver, cada programa debe reconocer y tener presente la comunicación con cada tipo de periférico.

Internamente, los sistemas operatvos varían enormemente en su composición, ya que se organizan a lo largo de muchas líneas diferentes. Sin embargo, éstas tienen muchas características comunes.

En relación a la estructura de un sistema operativo, existen dos conceptos muy importantes: multiprogramación y tiempo compartido (o multitarea).


Multiprogramación

Multiprogramación es un término que significa que muchos programas que no están relacionados unos con otros pueden residir en la memoria de una computadora y tomar turnos usando la unidad central de procesamiento, cualquiera que haya usado Windows ®, Unix o Linux ha experimentado un entorno de multiprogramación porque estos sistemas pueden ejecutar un largo numero de programas de usuario aparentemente de manera simultanea en una sola unidad central de procesamiento.

La sección que permite la multiprogramación en un sistema operativo se denomina Kernel, éste software consiste en un numero de procedimientos que llevan a cabo funciones como crear tareas, decidir cual tarea correrá en un momento dado, proveyendo un mecanismo para cambiar al procesador de una tarea a otra y provee formas primitivas de acceso controlado a recursos compartidos.

Uno de los aspectos más importantes es la capacidad para multiprogramar. En general, un solo usuario no puede mantener la CPU o los dispositivos de E/S ocupados continuamente. La multiprogramación incrementa el uso de la CPU organizando los trabajos (códigos y datos) de modo que la CPU siempre tenga uno que ejecutar. Cuando un trabajo tiene que esperar, el sistema operativo conmuta a otro trabajo, y así sucesivamente.

Los sistemas multiprogramados proporcionan un entorno en el que se usan de forma eficaz los diversos recursos del sistema, como por ejemplo la CPU, la memoria y los periféricos, aunque no proporcionan la interacción del usuario con el sistema informático.

Se pueden seguir las clases del MIT a través de el siguiente link: Multiprogramacion


Timesharing

El tiempo compartido (o multitarea) es una extensión lógica de la multiprogramación. En los sistemas de tiempo compartido, la CPU ejecuta múltiples trabajos conmutando entre ellos, pero las conmutaciones se producen tan frecuentemente que los usuarios pueden interactuar con cada programa mientras éste está en ejecución.

Dado que usuario suministra directamente instrucciones al sistema operativo o a un programa, se requere que exista comunicación directa entre el usuario y el sistema, por ejemplo, al utilizar un dispositivo de entrada, como un teclado, el tiempo de respuesta debe ser pequeño (menor a 1 segundo). Este tipo de sistema operativo permite que muchos usuarios compartan simultáneamente la computadora. Dado que el tiempo de ejecución de cada acción tiende a ser pequeño, sólo es necesario un tiempo pequeño de CPU para cada usuario. Puesto que el sistema cambia rápidamente de un usuario al siguiente, cada usuario tiene la impresión de que el sistema completo está dedicado a él, incluso aunque esté siendo compartido por muchos usuarios.

Cada usuario tiene, al menos, un programa distinto en memoria. Un programa cargado en memoria y en ejecución se denomina proceso.

El sistema operativo debe asegurar un tiempo de respuesta razonable, lo que en ocaciones se hace a través de un mecanismo de intercambio, donde los procesos se intercambian entrando y saliendo de la memoria al disco. Un método más habitual de conseguir este objetivo es la memoria virtual, una técnica que permite la ejecución de un proceso que tiene suficiente memoria.


Algunos Ejemplos de Diseño de Estructuras de Sistema Operativo

Diseño Monolítico

Diseño Monolítico

Es la arquitectura más simple para un sistema operativo. Este sistema contiene todas las rutinas y funcionalidades disponibles (sistema de archivos, manejo de drivers, gestión de memoria y CPU, etc.) juntas dentro de un gran programa o núcleo. Su principal desventaja radica en que, debido a que todos los componentes del núcleo tienen acceso a todas las estructuras y rutinas internas, un error o un vulnerabilidad de seguridad puede expandirse y afectar a todo el núcleo.

El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede llamar a los demás cada vez que así lo requiera. Cuando se usa una técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados y cada uno de ellos es libre de llamar a cualquier otro tipo, si este proporciona cierto cálculo útil para el primero. Para construir el programa objeto del sistema mediante esta estructura, uno compila en forma individual los procedimientos o los archivos que contienen los procedimientos, y después los enlaza en un sólo archivo objeto con el ligador.

Los sistemas monolíticos se describen en 3 procesos principales: un programa principal que invoca el procedimiento de servicio solicitado, un conjunto de procedemientos de servicio que llevan a cabo las llamadas del sistema y un conjunto de procedimientos de utilería que ayudan a los procedimientos del servicio. En teoria un procedimiento dado puede invocar a ciertos servicios, los cuales, a su vez, se verán ayudados por programas de utilería, los cuales, extraerán información importante para éste.


Diseño por Capas

Diseño por Capas

Es una generalización del modelo de estructura simple para un sistema monolítico. En esta arquitectura, el sistema operativo se divide en una jerarquía de capas, donde cada capa solamente utiliza los servicios de la capa inferior y se enfoca en ofrecerle una interfaz clara y bien definida a la capa superior. En cada capa se encapsulan funciones específicas, así cada capa se encarga de una función individual del sistema operativo. Su principal ventaja redica en poseer un diseño mucho más modular, seguro y escalable que el monolítico.

El primer modelo creado con esta estructura fue denominado THE: Technische Hogeschool Eindhoven (Holanda - Dijkstra, 1968).


Diseño Cliente-Servidor

Diseño Cliente-Servidor

En este modelo, lo único que hace el núcleo es controlar la comunicación entre los clientes y los servidores. Al separar el sistema operativo en partes, cada una de ellas controla una parte del sistema, como el servicio a archivos, servicios a procesos, servicio a terminales o servicio a la memoria, y cada parte es pequeña y controlable. Además, como todos los servidores se ejecutan como procesos en modo usuario y no en modo núcleo, no tienen acceso directo al hardware. En consecuencia, si hay un error en el servidor de archivos, éste puede fallar, pero esto no afectará en general a toda la máquina.

Este modelo puede ser ejecutado en la mayoría de las computadoras, ya sean grandes o pequeñas. Este sistema sirve para toda clase de aplicaciones, por tanto, es de propósito general y cumple con las mismas actividades que los sistemas operativos convencionales. Los procesos pueden ser tanto servidores como clientes.


Diseño Máquinas Virtuales

Diseño Máquinas Virtuales

En este modelo, mediante software, se proporciona a los programas la emulación de un sistema el cual se quiere reproducir. El software emulador traduce las peticiones hechas a la máquina virtual en operaciones sobre la máquina real. Se pueden ejecutar varias máquinas virtuales al mismo tiempo, por ejemplo, mediante tiempo compartido. Los recursos reales se reparten entre las distintas máquinas virtuales.

Se separan totalmente las funciones de multiprogramación y de máquina virtual. Existe un elemento central llamado monitor de la máquina virtual que:

  • Ejecuta en el hardware.
  • Realiza la multiprogramación.
  • Proporciona varias máquinas virtuales a la capa superior.

Las máquinas virtuales instrumentan copias exactas del hardware, con su modo núcleo/usuario, E/S, interrupciones y todo lo demás que posee una máquina real. Pueden ejecutar cualquier sistema operativo que se ejecute en forma directa sobre el hardware.

Las distintas máquinas virtuales pueden ejecutar distintos sistemas operativos, y en general, así lo hacen. Soportan periféricos virtuales.


Trabajo de investigación

Artículo Principal: Comparación entre sistemas operativos multiusuarios y monousuarios


Véase también


Bibliografia

  • Galvin, Silberschatz, Gagne (2005). Fundamentos de sistemas operativos. McGraw-Hill.


Enlaces externos

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas