7. NUCLEOS DE SISTEMAS OPERATIVOS

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