miércoles, 2 de diciembre de 2015

Kernel definición y tipos de kernel.

¿que es un kernel?


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).

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 de kernel.

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.

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. 

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. 

 Sistemas cliente-servidor

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

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 boxvirtual 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.

No hay comentarios:

Publicar un comentario