1.5 Estructura

Introducción

Qué aspecto tienen los sistemas operativos por fuera (es decir, la interfaz con el programador), ha llegado el momento de dar una mirada al interior. En las siguientes secciones examinaremos cuatro estructuras distintas que se han probado, a fin de tener una idea de la variedad de posibilidades. Éstas no son de ninguna manera las únicas estructuras posibles, pero nos darán una idea de algunos diseños que se han llevado a la práctica. Los cuatro diseños son los sistemas monolíticos, los sistemas por capas,los sistemas de Micronúcleo y los sistemas cliente-servidor.


Arquitectura más comunes
Definir una arquitectura para el Sistema Operativo; esta estará influida en alguna medida por el hardware que manejará. Sin embargo es posible identificar algunos componentes comunes como el núcleo y las llamadas al sistema. El núcleo contiene, básicamente, todo el código e información necesaria para la gestión de procesos y memoria y en la mayoría de los sistemas operativos también se incluye buena parte de la gestión de entrada/salida. Según la arquitectura que tengamos así es como el usuario se comunica con el sistema operativo y el sistema operativo o el núcleo con los componentes del hardware, por tanto cada sistema operativo tiene una arquitectura específica en dependencia de las necesidades de este.
Sistemas monolíticos

En los sistemas monolíticos, todos los componentes de gestión y programas del sistema están escritos en un solo código o espacio lógico. Pueden decirse que el núcleo es el Sistema Operativo. La división más evidente que puede hacerse es entre procesos de aplicación o usuario y procesos del sistema.
En la imagen se muestra la representación monolítico


Los sistemas monolíticos son los más comunes puesto que su implementación y diseño son los menos complejos. La desventaja es que como todo el sistema se ejecuta en el mismo nivel de privilegio que el núcleo (el Sistema Operativo es el núcleo) es muy probable que haya problemas (el sistema se apague, se bloquee o se cuelguen procesos, por ejemplo) si ocurre algún fallo del hardware o existe algún error sin depurara en el código del sistema. GNU/Linux es monolítico, aunque con éste se introdujo una variante interesante. A pesar de ser monolítico, es modular, lo que significa que es posible quitar o añadir componentes al núcleo incluso en caliente (o sea, en pleno funcionamiento). Así, si un módulo tiene problemas se puede reemplazar, arreglar o eliminar sin afectar al resto de funcionalidades. Otra ventaja interesante de los sistemas monolíticos es su velocidad. Ya que todos los componentes del Sistema Operativo comparten los privilegios y direcciones y la separación funcional solo se hace entre procesos del sistema y los de aplicación, la demora para ejecutar las llamadas al sistema es mínima.
Sistemas por capas o niveles de privilegio

En la medida que el hardware se desarrolló para incorporar mecanismos de protección para la gestión de procesos, memoria y entrada/salida, los Sistemas Operativos se adaptaron a este diseño. El objetivo de la arquitectura por capas o niveles de privilegio, es separar la acción del código de los procesos del sistema, del núcleo y de los procesos de usuario. Idealmente se separa en el nivel de máximo privilegios o protección, al código base del núcleo.
En la imagen se muestra la representación de una arquitectura por capas.


En el siguiente nivel de privilegios se ubica a los procesos del sistema para la gestión de procesos y memoria; en otro nivel a los procesos de gestión de entrada salida incluyendo los drivers y en el nivel de menos privilegio, se ejecutan el resto de los procesos de aplicación. Esto por supuesto, no siempre es así y pueden existir muchísimas variantes en la implementación. Una práctica común es ubicar los procesos y componentes de entrada/salida en los dos primeros niveles, para acelerar su ejecución. Lo relevante en esta arquitectura es que se necesitan realizar restricciones en cuanto a las llamadas al sistema que puedan ejecutar los procesos de determinados niveles. Por ejemplo, se ha de evitar que un proceso pueda efectuar una llamada al sistema que requiera la atención de un componente de menor privilegio o tal vez evitar que los programas de aplicación hagan llamadas directamente sobre el núcleo. Así puede obligarse a utilizar como mediadores a otros niveles.
Sistemas de Micronúcleo

La posibilidad de separar funcionalmente los programas del sistema de los programas de aplicación y asegurar protección adicional con el hardware, origina otra arquitectura, la de micronúcleo. En esta, se trata de combinar el rendimiento y sencillez de la arquitectura monolítica con la protección y organización de la arquitectura por capas. La idea fundamental es obtener un núcleo lo más pequeño y rápido posible y tratar el resto de las funciones y componentes como procesos de aplicación. En esta nueva concepción, es usual que el núcleo solo contenga lo necesario para la gestión de memoria y procesos.
En la imagen se muestra la representación de una arquitectura micronúcleo.

Comentarios

Entradas más populares de este blog

1.6 Núcleo

5.5 Mecanismos de acceso a los archivos

2.6 Técnicas de administración del planificador