Tipos de Kernel de los sistemas operativos

¿Que es el Kernel o Núcleo del Sistema Operativo?

El kernel representa la pieza de software principal del los sistemas operativos, es el encargado de manejar las peticiones de entrada y salida de los aplicativos pues se encarga de traducir las instrucciones o comandos que solicitan a la CPU y otros dispositivos.

El Kernel se encarga de administrar los procesos, la memoria, los dispositivos y todas las llamadas al propio sistema, siendo el responsable de ejecutar los programas y decidir cuando van a ser procesados, asignarles los espacios en memoria que requieren (aunque también debe decir cuando no haya suficiente).

Fuente: http://en.wikipedia.org/wiki/File:Kernel_Layout.svg

También está dentro de las competencias del Kernel recibir y atender las peticiones que los dispositivos envíen, como es el caso del teclado o el mouse y por de igual manera si un programa especifico requiere el acceso a un determinado dispositivo, por ejemplo la impresora.

Algunos ejemplos

A continuación se se expondrán 6 tipos de kernels de sistemas Operativos y los exponentes más conocidos de cada uno de ellos.


Sistemas monolíticos

Dentro de este modelo se puede encontrar al popular Linux. Consiste en escribir una serie de procedimientos enlazados entre si, lo cual crea un único programa de gran tamaño que se ejecuta completamente en modo kernel. 

Para construir este tipo de Kernel se procede a compilar cada procedimiento de forma inividual y luego se vinculan entre si, todo esto lo que permite es que todos los procedimientos sean visibles lo cual hace que sea un diseño rápido en ejecución pero en términos de ocultamiento de información, no hay nada. 

Sin embargo, apesar de que todos los procedimientos están mesclados y visibles entre sí, aun se maneja un cierto orden o estructura. PAra realizar las llamadas al sistema se colocan en un sitio claramente definido para tal uso (como la pila).

En forma básica la estructura puede ser la siguiente :
  1. Un programa principal que invoca el procedimiento de servicio solicitado. 
  2. Un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema. 
  3. Un conjunto de procedimientos utilitarios que ayudan a los procedimientos de servicio.

Un modelo de estructuración simple para un sistema monolítico
Imagen del libro: Sistemas Operativos Modernos 3ra Edición de ANDREW S. TANENBAUM.

  Sistemas de capas

Un ejemplo de este tipo de sistema es MULTICS un proyecto del MIT que sirvió de influencia en avances posteriores. Este modelo ya presenta un diseño más jerárquico que el anterior, se basa en ir creando capas de procedimientos donde cada capa inferior tiene mayores privilegios que las siguientes. El primer sistema operativo de este tipo fue construido por el reconocido investigador W. Dijkstra y sus estudiantes. 

El sistema consistía de 6 capas, cada una de las cuales cumplía una funcionalidad especifica de tal manera que las capas superiores no se tuvieran que preocupar por las funcionalidades de las capas inferiores, por ejemplo la capa de nivel cero se encarga de la asignación del procesador, cambiar entre procesos cuando ocurrían interrupciones, de esta manera las capas superiores ya no se preocupan por la programación de varios tareas ya que simplemente relegaban esa tarea a la capa cero. 

La capa uno era la encargada de administrar la memoria, de forma que las capas superiores simplemente hacían solicitud de la misma sin importar en donde se ubicaba esta tanto física como lógicamente. La capa dos se encargaba de la comunicación entre procesos, la capa tres de administrar los dispositivos de entrada y salida del sistema, lo cual permitía a las capas superiores trabajar con dispositivos abstractos y con propiedades claramente definidas. 

En la capa cuatro se ubicaban los programas de usuario y en la quita el proceso del operador.

Microkernels

Un ejemplo de este tipo de kernel es MINIX, el cual es un sistema operativo que ha llevado el concepto de microkernel a los límites de tener solo 3200 líneas en C. 

Es similar a modelo de capas, pero a diferencia de que en el modelo anterior donde todas las capas iban en el kernel, en el modelo de microkernel solo algunas partes indispensables van en el kernel, esto permite evitar que en caso de fallos se pueda paralizar todo el sistema, adicionalmente al ejecutar las demás partes en modo usuario un error no sería tan fatal. 

La idea de este diseño de sistema es tener una gran confiabilidad y estabilidad al dividir el S.O. en módulos pequeños y por ende más manejables.
 

 Sistemas cliente-servidor

Un ejemplo de Sistema Operativo que usa este diseño de Kernel es el reconocido Windows

Es en cierta forma y un modelo similar a microkernel donde existe una serie de componentes encargados cada uno de funciones específicas responsables de ejecutarlas y proveer una funcionalidad a otros procesos en forma de servicios, es decir que un proceso solo puede acceder a su espacio de memoria y se comunica con los demás procesos por medio de paso d mensajes como un servicio. En este sentido es indiferente si la petición se ejecuta localmente o en otra máquina siendo ideal para la implementación de sistemas distribuidos.

Máquinas virtuales

En la actualidad se encuentran varios sistemas de reconocida trayectoria: vmware, vitual box, virtual server.

Con el aumento de la capacidad de cálculo, memoria y almacenamiento este tipo de diseño se ha venido popularizando al punto que se ha trasladado su uso incluso para equipos domésticos.

En construcción..

Exokernels

En construcción..




1 comentario:

Programación Orientada a Objetos (POO - en inglés OOP)

Image courtesy of digitalart - FreeDigitalPhotos.net La programación orientada a objetos es un paradigma o un modelo de programación qu...