viernes, 3 de octubre de 2014

Kernel



Definición


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 .

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:



  1. Los núcleos monolíticos facilitan abstracciones del hardware subyacente realmente potentes y variadas.              
  2. Los micronúcleos: proporcionan un pequeño conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor funcionalidad.                                                                                
  3. 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.                                                                                  
  4. 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.

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.

Kernel panic

Un kernel panic es un acción tomada por un sistema operativo al detectar un error fatal interno del que no puede recuperarse.

El término es empleado especialmente en sistemas Unix; para Windows su equivalente coloquial es pantalla azul de la muerte. 


El kernel panic también aparece en los sistemas Mac OS X.



Las rutinas de kernel que controlan los kernel panics son generalmente diseñadas para lanzar un mensaje de error en la consola, volcar la imagen del kernel desde la memoria al disco duro(para luego poder depurarlo) y esperar a que el sistema se reinicie (manual o automáticamente).

La información en el mensaje de error es altamente técnica, pudiendo ser solo interpretada por entendidos en la materia.

En ocasiones, el sistema operativo puede seguir operando, pero probablemente se encuentra en un estado inestable.

El kernel panic fue introducido en las primeras versiones de Unix.

Causantes del kernel panic


* Los intentos del sistema operativo por leer una dirección de memoria inválida o no permita, es una fuente común de kernel panics.

* Puede ocurrir en caso de un fallo en el hardware.

* Los bugs (errores) en el sistema operativo también son causantes de los kernel panics.



Como solucionar un kernel panic


Una de las soluciones que hay a día de hoy  es re establecer el sistema a un punto anterior a nuestro sistema operativo que sepamos que se encuentra en pleno funcionamiento.
Sino, como método extremo, crear una copia de seguridad de nuestros archivos y re instalar nuestro sistema operativo.

El siguiente vídeo, te enseña a como restaurar tu sistema, tanto en Windows como en Mac:




A continuación la forma de restaurar un sistema en Linux (Ubuntu)




Webgrafia

http://www.taringa.net/posts/linux/7676622/Que-es-el-kernel-de-Linux-y-cual-es-su-tarea.html



No hay comentarios:

Publicar un comentario