Kernel

Kernel
Información sobre la plantilla
Kernehffl.jpg
Concepto:El kernel ó núcleo se puede definir como el corazón del sistema operativo. Es el encargado de que el software y el hardware del ordenador puedan trabajar juntos.

El Kernel ó núcleo, es un software que constituye una parte fundamental del sistema operativo. Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora el es el encargado de gestionar recursos, a través de servicios de llamada al sistema, también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso al programador.

Funcinones del Kernel

  • Administración de la memoria para todos los programas y procesos en ejecución.
  • Administración del tiempo de procesador que los programas y procesos en ejecución utilizan.
  • La comunicación entre los programas que solicitan recursos y el hardware.
  • Gestión de los distintos programas informáticos (tareas) de una máquina.
  • Gestión del hardware (memoria,procesador,periférico, forma de almacenamiento, etc.)

Tipos de Kernel

No necesariamente se necesita un núcleo para usar una computadora. Los programas pueden cargarse y ejecutarse directamente en una computadora «vacía», siempre que sus autores quieran desarrollarlos sin usar ninguna abstracción del hardware ni ninguna ayuda del sistema operativo. Ésta era la forma normal de usar muchas de las primeras computadoras: para usar distintos programas se tenía que reiniciar y reconfigurar la computadora cada vez.

Con el tiempo, se empezó a dejar en memoria (aún entre distintas ejecuciones) pequeños programas auxiliares, como el cargador y el depurador, o se cargaban desde memoria de sólo lectura. A medida que se fueron desarrollando, se convirtieron en los fundamentos de lo que llegarían a ser los primeros núcleos de sistema operativo.

Hay cuatro grandes tipos de núcleos:

  • Los núcleos monolíticos facilitan abstracciones del hardware subyacente realmente potentes y variadas.
  • Los micronúcleos: proporcionan un pequeño conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor funcionalidad.
  • Los núcleos híbridos: son muy parecidos a los micronúcleos puros, excepto porque incluyen código adicional en el espacio de núcleo para que se ejecute más rápidamente.
  • Los exonúcleos: no facilitan ninguna abstracción, pero permiten el uso de bibliotecas que proporcionan mayor funcionalidad gracias al acceso directo o casi directo al hardware.

El kernel de Linux

En la carpeta / boot también habrá otros archivos muy importante llamado initrd.img-versión, la versión System.map, y config-version. El archivo initrd es utilizado como un disco RAM pequeño que extrae y ejecuta el archivo del kernel actual. El archivo System.map se utiliza para la gestión de la memoria antes de que el kernel totalmente se cargue, y el archivo de configuración le dice al núcleo qué opciones y módulos de carga ejecute al inicio.

Arquitectura del Kernel Linux

Debido a que el kernel de Linux es monolítico, tiene más complejidad que en los otros tipos de kernels. Esta fue una característica de diseño que estaba bajo un poco de debate en los primeros días de Linux y aún tiene algunos de los defectos de diseño que los núcleos monolíticos son inherentes a tener.

Una cosa que los desarrolladores del kernel de Linux hicieron para conseguir solucionar estas fallas es hacer módulos del kernel que pueden ser cargados y descargados en tiempo de ejecución, lo que significa que puede agregar o quitar características de su núcleo en el momento. Esto puede ir más allá de la adición de la funcionalidad de hardware para el núcleo, mediante la inclusión de módulos que ejecutan los procesos del servidor, como la vitalización de bajo nivel, pero también puede permitir que el núcleo pueda ser del todo reemplazado sin necesidad de reiniciar el equipo en algunos casos.

Modulos del Kernel

Los módulos del kernel, también conocido como un módulo del kernel cargables (LKM), son esenciales para mantener el funcionamiento del núcleo con todo el hardware sin consumir toda la memoria disponible.

Un módulo generalmente, aumenta la funcionalidad del núcleo de base para cosas como los dispositivos, sistemas de archivos y las llamadas al sistema. LKMs tienen la extensión .Ko y normalmente se almacenan en el directorio /lib/ modules. Debido a su carácter modular, usted puede personalizar fácilmente su núcleo mediante el establecimiento de módulos de carga, o no, durante el arranque con el comando menuconfig o editando el archivo /boot /config, o usted puede cargar y descargar los módulos sobre la marcha con el comando modprobe.

Los módulos de terceros y de codigo cerrado están disponibles en algunas distribuciones, como Ubuntu, y no puede ser instalado de forma predeterminada porque el código fuente de los módulos no está disponible.

Las empresas desarrolladoras de software (es decir, nVidia, ATI, entre otros) no proporcionan el código fuente, sino que construyen sus propios módulos y compilan sus archivos . Ko archivos para su distribución. Si bien estos módulos son libres como en la cerveza, no son libres como en el habla y por lo tanto no están incluidos en algunas distribuciones, ya los mantenedores sienten “contaminar” el núcleo por el suministro de software no-libre.

El Kernel de Windows

Windows es un Sistema Operativo serio, capaz de competir en el mercado con otros como Unix que ya tienen una posición privilegiada, en cuanto a resultados, debe tener una serie de características que le permitan ganarse ese lugar.

Modo Kernel: Capa de Abstracción de Hardware (HAL).Conocido por sus siglas en inglés HAL (Hardware AbstractionLayer) es una interfaz entre el hardware y el resto del Sistema Operativo, está implementada como una biblioteca de enlace dinámico (dll) y es responsable de proteger el resto del sistema de las especificaciones del hardware, tales como controladores de interrupción e interfaces de entrada/salida. Esta abstracción hace al sistema más portable ya que el resto del sistema no tiene que preocuparse sobre que plataforma está corriendo.

Cada plataforma en que el sistema corre necesita un HAL específico. El diseño intenta que cuando Windows sea portado a una nueva arquitectura de procesador, el HAL sea reescrito para el nuevo procesador, pero el resto del sistema simplemente debe ser recompilado.

MicroKernel: es el responsable de todas las acciones que se realizan sobre le sistema y casi todas las funciones del sistema pasan a través de él.El microkernel está situado en el corazón de Windows, trabaja muy estrechamente con el HAL (Nivel de Abstracción de Hardware), este planifica la ejecución de hilos y manipula las interrupciones y excepciones de procesos. El papel de este es mantener a los procesadores lo mas ocupado posible. En sentido general este se encarga de las funciones más básicas de todo el SO, como son:

  • Ejecución de subprocesos.
  • Sincronización multiprocesador.
  • Manejo de las interrupciones de hardware.

El Ejecutor de Windows se encarga de las tareas importantes, las que son de vital importancia para el sistema completo, ya que el microkernel está casi siempre demasiado ocupado para dirigirse directamente. El Administrador de Objetos.

El Administrador de Objetos (Object Manager) es usado para crear, modificar y eliminar objetos (tipos de datos abstractos que son usados para representar recursos del Sistema Operativo) usados por todos los sistemas que conforman el Ejecutor de Windows. Este también proporciona información sobre el estado de los objetos a todo el Sistema Operativo.

El Administrador de Procesos. El Administrador de Procesos (Process Manager) es el responsable de crear, quitar y modificar los estados de todos los procesos e hilos. Este también proporciona información sobre el estado de procesos e hilos al resto del sistema.El Administrador de Memoria Virtual.

El Administrador de Memoria Virtual (Virtual Memory Manager o VMM) proporciona la gestión de memoria virtual del sistema. La memoria virtual es un esquema que permite usar los recursos del disco en lugar de la memoria física del sistema moviendo las páginas al disco cuando estas no están siendo usadas y recuperándolas cuando se les necesitan. Este es un segmento integral de Windows el cual asigna espacios de direcciones de 32 bit a cada proceso sin preocuparse de la cantidad de memoria física del sistema.

Servicios de Llamadas a Procedimientos Locales. (Local ProcedureCallFacility o LPC) se integran al diseño cliente/servidor de Windows. Este es la interfaz entre todos los procesos clientes y servidores que corren localmente en el sistema. El Monitor de Seguridad. El Monitor de Seguridad (Security Reference Monitor o SRM) es el lecho de toda la seguridad dentro del sistema WINDOWS y es el responsable de hacer cumplir todas las políticas de seguridad en la computadora local.

El Administrador de Entrada-Salida: El Administrador de Entrada-Salida (I/O Manager) es responsable de gestionar la comunicación entre los distintos drivers de dispositivo, para lo cual implementa una interfaz bien definida que permite el tratamiento de todos los drivers de una manera homogénea, sin que intervenga el cómo funciona específicamente cada uno.

El Subsistema Win32: Este subsistema actúa como un servidor para todos los otros subsistemas de ambiente soportados en WINDOWS, los que actúan como clientes y traducen sus llamadas API hacia las API apropiadas de Win32. El subsistema Win32 es responsable de toda la entrada y salida. Este posee el control de la pantalla, el teclado, y el ratón. Cuando otros subsistemas, como OS/2 o POSIX, necesitan beneficiarse de estos dispositivos, ellos piden los servicios al subsistema de Win32.

Algunos de los objetivos que se trazaron para mantener la compatibilidad con las aplicaciones hechas en versiones anteriores fueron:

  • Permitir que los programas hechos sobre DOS pudieran correr sin modificación.
  • Suministrar la capacidad para ejecutar la mayoría de las aplicaciones Windows de 16 bits sin modificación.
  • Proteger al sistema y otras aplicaciones de 32 bits de la interferencia de las aplicaciones de 16 bits y DOS.
  • Permitir a las plataformas RISC (ReducedInstruction set Computer, microprocesador cuyo número de instrucciones es reducido para lograr una frecuencia más alta de trabajo) ejecutar aplicaciones Windows de 16 bits y DOS.

El Subsistema POSIX.Microsoft prestó mucha atención a los diferentes estándares de sistemas abiertos cuando Windows NT estaba en vía de desarrollo. Ellos reconocieron el valor de soportar sistemas abiertos como un método para ganar aceptación de su nuevo sistema operativo avanzado dentro del mercado.

Uno de los estándares más frecuentemente citados soportados por Windows es el POSIX (Interfaz de Sistema operativo Portable Basado en Unix), el cual representa la interfaz del Sistema Operativo portable y fue desarrollado por el IEEE (Instituto deIngenieros en Electricidad y Electrónica) como un método de proporcionar portabilidad a las aplicaciones hechas sobre plataformas UNIX.

No obstante, POSIX se ha integrado en muchos sistemas no UNIX. El Subsistema OS/2. El Subsistema OS/2 igual que el subsistema POSIX proporciona un entorno para aplicaciones UNIX, este subsistema da soporte a las aplicaciones OS/2. Proporciona la interfaz gráfica y las llamadas al sistema; las llamadas son servidas con ayuda del Ejecutor de Windows.

Un núcleo no es magia, pero es completamente esencial para cualquier equipo que ejecute correctamente. El kernel de Linux es diferente a OS X y Windows, ya que incluye los controladores nivel del núcleo y hace muchas cosas mas.

Fuente