Está en la página 1de 6

¿Qué es el kernel de Linux y qué hace?

Con más de 13 millones de líneas de código, el kernel Linux es uno de los
mayores proyectos de código abierto en el mundo, pero lo que es un kernel y
para qué se utiliza?
Entonces, ¿qué es el núcleo?
Un kernel es el nivel más bajo de software fácilmente reemplazable que
interactúa con el hardware de su ordenador. Es responsable de la interconexión
de todas las aplicaciones que se ejecutan en modo "usuario" hasta el hardware
físico, y permitiendo que los procesos, conocidos como servidores, puedan
obtener información unos de otros mediante la comunicación entre procesos
(IPC).
Diferentes tipos de nucleos
Hay, por supuesto, diferentes maneras de construir un kernel y consideraciones
arquitectónicas en la construcción de una nueva. En general, la mayoría de los
nucleos son uno de tres tipos: monolítica, micronúcleo e híbridos. Linux es un
nucleo monolítico, mientras que OS X (XNU) y Windows 7 utilizan nucleos
híbridas. Vamos a dar un breve recorrido de las tres categorías para que
podamos entrar en más detalle más adelante.

Microkernel
un microkernel adopta el enfoque de la gestión de lo que sólo tiene que
gestionar: CPU, la memoria y el IPC. Casi todo lo demás en una computadora
puede ser visto como un accesorio y puede manejarse en modo de usuario.
Los Microkernels tienen la ventaja de la portabilidad, ya que no tienen que
preocuparse si se cambia la tarjeta de vídeo o incluso su sistema operativo,
siempre y cuando el sistema operativo sigue tratando de acceder al hardware
de la misma manera. Los Microkernels también tienen un tamaño muy
pequeño, para tanto la memoria e instalacion, y tienden a ser más seguro, ya
que sólo los procesos específicos ejecutan en modo de usuario que no tenga los
permisos elevados como el modo de supervisor.
Pros
 Portabilidad
 Pequeño impacto instalación
 Impacto pequeño en memoria
 Seguridad
Contras
 Hardware es más abstracta a través de controladores
 Hardware puede reaccionar más lentamente porque los drivers están en
modo de usuario
 Los procesos tienen que esperar en una cola para obtener información
 Los procesos no pueden tener acceso a otros procesos sin esperar
Kernel Monolitico
kernels monolíticos son lo contrario de micronúcleos porque abarcan no sólo la
CPU, la memoria, y el IPC, también incluyen otros como los controladores de
dispositivos, gestión de sistema de archivos, y las llamadas del servidor del
sistema. Kernels monolíticos tienden a ser mejores en el acceso al hardware y
la multitarea porque si un programa tiene que obtener información de la
memoria u otro proceso en ejecución tiene una línea más directa de acceder a
ella y no tener que esperar en una cola para cumplir su tarea. Sin embargo,
esto puede causar problemas, ya que mientras más cosas que se ejecutan en
modo supervisor, hay mas probabilidades de hacer caer el sistema si uno no se
comporta adecuadamente.
Pros
 Más acceso directo al hardware para los programas
 Facilita la comunicacion entre procesos
 Si se admite el dispositivo, que debería funcionar sin instalaciones
adicionales
 Procesos reaccionan más rápido porque no hay una cola para el tiempo de
procesador
Contras
 Alto impacto en tamaño de instalacion
 Alto impacto en memoria virtual
 Menos seguro, porque todo se ejecuta en modo supervisor

Núcleo híbrido
granos híbridos tienen la capacidad de escoger y elegir lo que quieren para
ejecutarse en modo de usuario y lo que quieren ejecutar en modo
supervisor. Muchas veces las cosas como controladores de dispositivos y
sistemas de archivos de E / S se ejecutan en modo de usuario, mientras que la
CIA y el servidor de llamadas se mantienen en el modo de supervisor. Esto da
lo mejor de ambos mundos, pero a menudo se requiere más trabajo de los
fabricantes de hardware ya que todos la responsabilidad del driver depende de
ellos.También puede tener algunos de los problemas de latencia que es
inherente con micronúcleos.
Pros
 El desarrollador puede escoger y elegir lo que se ejecuta en modo de
usuario y lo ejecuta en modo supervisor
 Más pequeña huella de instalación de núcleo monolítico
 Más flexible que otros modelos
Contras
 Puede sufrir de retardo del proceso mismo como microkernel
 Los controladores de dispositivos deben ser administrados por el usuario
(por lo general)
¿Dónde están los archivos del kernel de Linux?

El archivo del kernel en Ubuntu, se almacena en la carpeta / boot y se llama
vmlinuz- version .El nombre vmlinuz viene del mundo Unix donde solían llamar
a sus granos simplemente "unix" de nuevo en los años 60 para Linux empezó a
llamar a su núcleo "linux" en que se desarrolló por primera vez en los años 90.
Cuando la memoria virtual fue desarrollado para capacidades multitarea más
fáciles, "vm" se puso al frente de los autos que el kernel soporta memoria
virtual. Durante un tiempo el núcleo Linux se llama vmlinux, pero el kernel
creció demasiado grande para caber en la memoria de inicio disponible para la
imagen del núcleo se comprime y los que terminan x fue cambiado a az
demostrarlo se comprimió con compresión zlib. Esta misma compresión no
siempre se utiliza, a menudo se sustituye con LZMA o BZIP2, y algunos granos
se llama simplemente zImage.
La numeración de la versión estará en el formato ABCD donde AB
probablemente será 2,6, C será su versión, y D indica los parches o
correcciones.

En la carpeta / boot también habrá otros archivos muy importantes llamados
initrd.img-versión, System.map-versión y configuración de versiones. El archivo
initrd se utiliza como un pequeño disco RAM que extrae y ejecuta el archivo real
del núcleo. El fichero System.map se utiliza para la gestión de la memoria antes
de que cargue completamente el núcleo, y el archivo de configuración le dice al
núcleo qué opciones y módulos para cargar en la imagen del núcleo cuando el
que se está compilando.
Linux Kernel Architecture
Debido a que el núcleo de Linux es monolítico, que tiene la huella más grande y
el más complejidad en los otros tipos de núcleos. 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 mismos defectos de diseño que kernels monolíticos son
inherentes a tener.
Una de las cosas que los desarrolladores del kernel Linux hicieron para salvar
estas deficiencias era hacer los 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 sobre la marcha. Esto puede ir más allá de
limitarse a añadir la funcionalidad del hardware en el kernel, mediante la
inclusión de módulos que se ejecutan los procesos del servidor, como la
virtualización de bajo nivel, sino que también puede permitir a todo el núcleo
para ser sustituido sin necesidad de reiniciar el equipo en algunos casos.
Imagínese si usted podría actualizar a un service pack de Windows sin
necesidad de reiniciar ...
Módulos del kernel

Lo que si Windows tenía todo el controlador ya está instalado y que sólo tenía
que encender los controladores que necesita? Esto es esencialmente lo que
hacen para los módulos del núcleo Linux. Los módulos del kernel, también
conocido como un módulo del kernel cargables (LKM), son esenciales para
mantener el funcionamiento del kernel con todo el hardware sin consumir toda
la memoria disponible.
Un módulo normalmente aumenta la funcionalidad del kernel de base para
cosas como los dispositivos, sistemas de archivos y las llamadas al
sistema. LKMs tienen la extensión de archivo. Ko y normalmente se almacenan
en el directorio / lib / modules. Debido a su carácter modular, puede
fácilmente personalizar el kernel mediante el establecimiento de módulos para
cargar o no cargar, durante el arranque con el comando menuconfig o editando
el fichero / boot / config file, o puede cargar y descargar los módulos sobre la
marcha con el modprobe comando.
Tercer partido y módulos de código cerrado están disponibles en algunas
distribuciones, como Ubuntu, y no pueden ser instalados por defecto porque el
código fuente de los módulos no está disponible. El desarrollador del software
(es decir, nVidia, ATI, entre otros) no proporcionan el código fuente, sino que
construir sus propios módulos y compilar los archivos ko necesarios. Para su
distribución. Mientras que estos módulos son parcialmente libres y por lo tanto
no se incluyen en algunas distribuciones, ya los mantenedores sienten que
"contamina" el núcleo, proporcionando software no libre.
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 drivers en el nivel del núcleo y hace muchas cosas
compatibles "por fuera". Esperamos que pueda conocer un poco más sobre
cómo el software y el hardware trabajan juntos y qué archivos necesarios para
arrancar el ordenador.
Kernel.org