7. NUCLEOS DE SISTEMAS OPERATIVOS

                                                         Anterior Siguiente

Los núcleos (kernels) de los sistemas operativos se pueden ubicar en dos categorias: monolíticos o micronúcleos (microkernels). El primer tipo de núcleo es el más tradicionalmente usado, mientras que los micronúcleos forman parte delas tendencias modernas en el diseño de sistemas operativos.

Para comprender mejor qué diferencias existen entre ambas categorías, se necesita revisar algunos conceptos.

7.1 Trabajos, Procesos y Thread

EStos tres conceptos van definiendo el grado de granularidad en que el sistema operativo trata a las masas de operaciones que se tienen que realizar. Un trabajo se conceptualiza como un conjunto de uno o más procesos. Por ejemplo, si se tiene que hacer el trabajo de correr el inventario, tal vez se subdivida ese trabajo en varios procesos: obtener la lista de artículos, número en existencia, artículos vendidos, artículos extraviados, etc. Un proceso se define como la imagen de un programa en ejecución, es decir, en memoria y usando el CPU. A este nivel de granularidad, un proceso tiene un espacio de direcciones de memoria, una pila, sus registros y su 'program counter'. Un thread es un trozo o sección de un proceso que tiene sus propios registros, pila y 'program counter' y puede compartir la memoria con todos aquellos threads que forman parte del mismo proceso.

7.2 Objetos

Un objeto es una entidad que contiene dos partes principales: una colección de atributos y un conjunto de métodos (también llamados servicios). Generalmente los atributos del objeto no pueden ser cambiados por el usuario, sino solamente a través de los métodos. Los métodos sí son accesibles al usuario y de hecho es lo único que él observa: los métodos conforman lo que se llama la 'interfaz' del objeto. Por ejemplo, para el objeto 'archivo' los métodos son abrir, cerrar, escribir, borrar, etc. El cómo se abre, se cierra, se borra, etc; está escondido para el usuario, es decir, los atributos y el código están 'encapsulados'. La única forma de activar un método es a través del envío de mensajes entre los objetos, o hacia un objeto.

7.3 Cliente - Servidor

Un cliente es un proceso que necesita de algún valor o de alguna operación externa para poder trabajar. A la entidad que prove ese valor o realiza esa operación se le llama servidor. Por ejemplo, un servidor de archivos debe correr en el núcleo (kernel) o por medio de un proceso 'guardián' al servidor de archivos que escucha peticiones de apertura, lectura, escritura, etc; sobre los archivos. Un cliente es otro proceso guardián que escucha esas peticiones en las máquinas clientes y se comunica con el proceso servidor a través de la red, dando la apariencia de que se tienen los archivos en forma local en la máquina cliente.

7.4 Núcleo Monolítico

Los núcleos monolíticos generalmente están divididos en dos partes estructuradas: el núcleo dependiente del hardware y el núcleo independiente del hardware. El núcleo dependiente se encarga de manejar las interrupciones del hardware, hacer el manejo de bajo nivel de memoria y discos y trabajar con los manejadores de dispositivos de bajo nivel, principalmente. El núcleo independiente del hardware se encarga de ofrecer las llamadas al sistema, manejar los sistemas de archivos y la planificación de procesos. Para el usuario esta división generalmente pasa desapercibida. Para un mismo sistema operativo corriendo en diferentes plataformas, el núcleo independiente es exactamente el mismo, mientras que el dependiente debe re-escribirse.

7.5 Microkernel

Un núcleo con 'arquitectura' micronúcleo es aquél que contiene únicamente el manejo de procesos y threads, el de manejo bajo de memoria, da soporte a las comunicaciones y maneja las interrupciones y operaciones de bajo nivel de entrada-salida. [Tan92]. En los sistemas oprativos que cuentan con este tipo de núcleo se usan procesos 'servidores' que se encargan de ofrecer el resto de servicios (por ejemplo el de sistema de archivos) y que utilizan al núcleo a través del soporte de comunicaciones.

Este diseño permite que los servidores no estén atados a un fabricante en especial, incluso el usuario puede escoger o programar sus propios servidores. La mayoría de los sistemas operativos que usan este esquema manejan los recursos de la computadora como si fueran objetos: los servidores ofrecen una serie de 'llamadas' o 'métodos' utilizables con un comportamiento coherente y estructurado. Otra de las características importantes de los micronúcleos es el manejo de threads. Cuando un proceso está formado de un solo thread, éste es un proceso normal como en cualquier sistema operativo.

Los usos más comunes de los micronúcleos es en los sistemas operativos que intentan ser distribuídos, y en aquellos que sirven como base para instalar sobre ellos otros sistemas operativos. Por ejemplo, el sistema operativo AMOEBA intenta ser distribuído y el sistema operativo MACH sirve como base para instalar sobre él DOS, UNIX, etc.


Indice | Anterior | Siguiente