Skip to content

Anatomía del núcleo de Linux

14/junio/2007

tux_originalEl núcleo de Linux es la base de un sistema operativo grande y complejo, y a pesar de ser enorme, está bien organizado en términos de subsistemas y capas. Un artículo escrito por M. Tim Jones, nos permite explorar la estructura general del núcleo de Linux y conocer los principales subsistemas e interfaces del mismo. También nos ofrece enlaces a otros artículos de IBM que nos permiten profundizar más en el tema.

El artículo nos relata una breve historia del núcleo, las propiedades del núcleo Linux, los principales subsistemas del núcleo (llamadas al sistema (SCI), gestión de procesos (PM), gestión de memoria (MM), el sistema de archivos virtual (VFS), pilas de redes, controladores de dispositivos (DD) y el código dependiente de la arquitectura).

Un interesante artículo para quienes quieran interiorizarse aún más en el núcleo del sistema operativo del pingüino. Como el artículo se encuentra en inglés, ofrezco una pequeña porción del texto traducido al español. Tienen total libertad para enviar correcciones.

PRINCIPALES SUBSISTEMAS DEL NÚCLEO DE LINUX

Interfaz de la llamada del sistema

El SCI es una capa delgada que proporciona los medios para realizar llamadas de función desde el espacio de usuario dentrp del núcleo. Esta interfaz puede ser dependiente de la arquitectura, incluso dentro de la misma familia de procesadores. El SCI es actualmente una interesante función-llamada de servicio de multiplexación y demultiplexación. Puedes encontrar la implementación de SCI en /linux/kernel, así como porciones de código arquitectura-dependientes en /linux/arch.

Administrador de Procesos

El Administrador de Procesos se centra en la ejecución de procesos. En el núcleo, éstos son llamados los hilos y representan una virtualización individual del procesador (código de hilo, datos, pilas, y registros de la CPU). En espacio de usuario, el proceso term es típicamente utilizado, aunque la implementación de Linux no separa los dos conceptos (los procesos y los hilos). El núcleo proporciona un Application Program Interface (API) con el SCI para crear un nuevo proceso (bifurcación, exec, o las funciones Interfaz de sistema operativo portable [POSIX, Portable Operating System Interface]), detener un proceso (kill, exit), y comunicar y sincronizar entre ellos (signal, o mecanismos POSIX).

Administrador de Memoria

Otro recurso importante que es manejado por el núcleo es la memoria. Por eficiencia, dado la forma que el hardware administra la memoria virtual, la memoria es administrada en porciones que son llamadas “páginas” (4KB de tamaño para la mayoría de las arquitecturas). Linux incluye los medios para gestionar la memoria disponible, así como los mecanismos de hardware para los mapeos físicos y virtuales.

El Sistema de Archivos Virtual

El Sistema de Archivos Virtual (VFS) es otro aspecto interesante del núcleo de Linux porque proporciona una abstracción interfaz común para los distintos sistemas de archivos. El VFS proporciona una capa de conmutación entre el SCI y los sistemas de ficheros soportados por el núcleo.

figure4.jpg

Pilas de Red

Las Pilas de red (del verbo apilar), por diseño, siguen una arquitectura modelada en capas después de los protocolos. Por ejemplo el Internet Protocol (IP) es la base de la capa del protocolo de red situado debajo del Protocolo de Control de Transmisión o TCP (Transmission Control Protocol). Sobre TCP están las capas, que son invocadas con el SCI.

Controladores de dispositivos (Drivers)

La gran mayoría del código fuente en el núcleo de Linux existe en los controladores de dispositivo que hacen usable a un dispositivo de hardware en particular. El árbol de código fuente de Linux proporciona un subdirectory de controladores que es dividido por los diversos dispositivos que son soportados, por ejemplo Bluetooth, I2C, serial, etc. Puedes encontrar las fuentes de los controladores de dispositivos en /linux/drivers.

Código dependiente de la arquitectura

Mientras que gran parte de Linux es independiente de la arquitectura en la cual funciona, hay elementos que deben considerar la arquitectura (sobre la cual funcionan) para una operación normal y eficiente. El subdirectorio /linux/arch define la porción arquitectura-dependiente del código fuente del núcleo contenido en un número de subdirectories que son específicos a la arquitectura. Para la plataforma más común, se utiliza el directorio i386. Cada subdirectorio de la arquitectura contiene un número de otros subdirectorios que se centran en un aspecto particular del núcleo, tal como cargador, núcleo, gestión de memoria, y otros. Puedes encontrar el código arquitectura-dependiente en /linux/arch.

Puedes descargar el núcleo de Linux en The Linux Kernel Archives. Luego podrás examinarlo e incluso aportar con mejoras si te dan las ganas de programar.

Fuente: Slashdot, anatomy of the Linux kernel

Anuncios
4 comentarios
  1. MARCO FLORES permalink
    25/junio/2007 4:40 pm

    ¡Hola alex!

    No me canso de leer esta fabulosa página. Luego de leer este interesante artículo; me dieron ganas de comentar una situación que se me presento hace poco.

    En mi pc después de intentos frustrados de instalar varias distros; empecé a utilizar k/ubuntu junto con mandriva y debian que por cierto no me gusto; la verdad no me pareció tan compleja como decían.

    El asunto es que note que kubuntu iba demasiado lento de lo habitual, ya no sabía que hacer, me precipité instalando nuevamente y nada parecía funcionar.
    Después de ser más minucioso, fui darle un vistazo a la memoria y la swap estaba deshabilitada. ¡Con razón! El porque no lo sabía, durante la instalación me asegure de que todo estuviera perfecto. Revise el arhivo fstab y todo estaba correcto, investigue y utilicé el swapon, ya que cuando iniciaba en modo de restauración seguía igual.

    En fin Linux es maravilloso, pero, como decía alguien por ahí, a veces, si no estudia un poquito, solucionar un problema puede resultar toda una odisea para un novato o un usuario común y corriente.

    ¡Saludos Marco !

  2. 25/junio/2007 7:46 pm

    Son las cosas que debemos aprender para poder dominar a este pinguino 😀

    Saludos.

  3. mark permalink
    4/abril/2009 9:04 pm

    Revisa las traducciones o mejor no escribas, da lugar a confusión, por ejemplo:

    “Esta interfaz puede ser dependiente de la arquitectura, uniforme dentro de la misma familia de procesadores”

    “even within the same processor family” != “uniforme dentro de la misma familia de procesadores” ?????????????? uniforme ???????????????

    “even within the same processor family” = incluso dentro de la misma familia de procesadores

  4. alexsandovalm permalink*
    5/abril/2009 1:16 am

    @Gracias por la corrección. Con que hubieras dicho que cambiará la palabra “uniforme” por “incluso” hubiera sido suficiente.

    Creo que mucha gente agradece las traducciones, aunque a veces tengan estos pequeños errores. ¿De verdad quieres que no vuelva a escribir?…

Los comentarios están cerrados.

A %d blogueros les gusta esto: