next up previous contents index
Next: Programando el kernel Up: El kernel y sus Previous: Drivers   Índice General   Índice de Materias

Módulos

Por lo que hemos visto hasta ahora, cuando instalamos un driver, el kernel queda modificado permanentemente, pues ahora contiene además de lo que contenía antes, la información específica de nuestro nuevo hardware. Incluso si no usamos habitualmente la impresora, su driver sigue estando allí, ocupando memoria reservada para el kernel, y desaprovechando por tanto un importante recurso de nuestro sistema.

Es por eso que el kernel de Linux es modular, esto quiere decir, que está construido de tal forma que podemos añadirle ``trozos'' de kernel durante la marcha, y si ciertas partes del mismo no se están usando, podemos eliminarlas tranquilamente.

Por ejemplo, en Linux, el driver de la tarjeta de red puede ser instalado como módulo, durante el normal funcionamiento del kernel, el módulo no está cargado, pero si en algún momento vamos a necesitar usar la tarjeta de red, este se puede cargar, luego, cuando dejemos de usar la tarjeta de red, podemos eliminar el módulo para aprovechar mejor nuestra memoria.

El concepto de módulo no tiene por que estar únicamente ligado a los drivers, mucha de la funcionalidad del kernel que no tenga que ver específicamente con un determinado hardware puede ser programada en forma de módulo, en especial si no esperamos hacer un uso frecuente de la misma.

Podemos entonces decir que un módulo es una pieza de código objeto que está especialmente preparado para integrarse dinámicamente con el resto del kernel.

Las implicaciones de esta definición son enormes, pues programar un módulo es programar una porción del kernel; ya no estamos haciendo aplicaciones en espacio de usuario, estamos creando parte del kernel en si mismo, implementando llamadas al sistema y manejando el hardware a bajo nivel.

Afortunadamente en esta asignatura no vamos a tocar el tema del hardware, crearemos módulos para Linux con todo lo que tiene que tener un módulo, pero el único hardware que manejaremos será la memoria, que es lo más simple de utilizar. Esto nos dará una visión adecuada de como se hacen módulos, pero sin la engorrosa y complicada tarea de andar moviendo cabezas lectoras de discos duros, ni calculando cabeceras para los paquetes que mandemos por nuestra tarjeta de red.


next up previous contents index
Next: Programando el kernel Up: El kernel y sus Previous: Drivers   Índice General   Índice de Materias
Alberto Cortés 2001-03-26