| Entendiendo el Mecanismo de Inicio (Initcall) del Kernel de Linux: Creando funciones Dinámicas de apuntadores de Llamadas a Tablas | ||
|---|---|---|
| <<< Anterior | Siguiente >>> | |
Antes de que comienze a explicar lo que encontre, creo que seria de gran ayuda comenzar con un pequeño repaso acerca del formato ELF (Formato Enlazable y Ejecutable) y como se ejecutan las cosas en Linux.
El producto de la compilación de una programa C es algo llamado lenguaje de maquina. Pero este es lenguje burdo el cual no es suficiente para permitirle al SO correr tu código. El SO querra saber acerca de muchas partes de meta-información con atención de tu programa antes de cargarlo y ejecutarlo; tal como:
información necesaria para perimitir enlace dinamico
información acerca del tamañ:o de tu ejecutable
cuanto código ejecutable y cuanto espacio de los datos estan siendo usados por tu aplicación
como poner la aplicació:n en memoria
informaci&on de depuración
...y muchas otras cosas.
Una forma de resolver este problema es usar un formato de archivo; un formato de archivo que contenga no solo el código burdo de lenguaje de maquina, sino también toda la informacion requerida. Han habido muchos muchos formatos de archivos a través de los años. Me son familiares los formatos que incluyo :
Un formato simple que consiste de un encabezado (el cual contiene toda la meta-información) ademas del código por si mismo. Muy similar a la mayoria de formatos de archivos de graficos de mapa de bits.
Un "formato de archivo" que sin embargo no contiente meta-información. Este "formato" es literalmante un burdo volcado del lenguaje de maquina. Toda esa meta-informacion se guarda en assumptions, el SO hace assumptions para alguna informacion si se necesita, y el programador debe seguir estos assumptions. Por lo tanto, in a sense, it does "contain" meta-information, it's just that this information isn't contained anywhere in the file itself.
A fairly basic file format based on the notion of sections. Unfortunately, it was created before shared libraries became main-stream and couldn't specify the dynamic linking information easily. It also does not allow for an arbitrary number of sections.
A nicer format that expands on the ideas of the a.out format and adds additional features.
| <<< Anterior | Inicio | Siguiente >>> |
| Motivación | Enlazador |