Publicidad

viernes, 30 de mayo de 2008

Los Ejecutables.

Hola a todos.
Puesto que el tema de Legos y Python lo veo muy saturado, me ubicare en el ultimo tema de clase sobre generación de archivos ejecutables, se me ocurrió hacer mención de la estructura y generación de los mismo. A continuación un resumen sobre archivos ejecutables:

Un código o archivo ejecutable corresponde a las unidades de programas, donde la computadora puede realizar las instrucciones compiladas mediante el compilador y el enlazador de librerías.

Usualmente la generación de un archivo ejecutable se da a partir de uno o más archivos de código fuente y está dividida en 2 fases, la primera de compilación, en donde se genera el código máquina u objeto y luego la etapa de montaje o linkedition en donde se agrupan los archivos objeto y se resuelven las referencias entre módulos formando el ejecutable.
Además de las referencias entre módulos pueden existir referencias a otros módulos denominados bibliotecas. Una biblioteca es un conjunto de módulos referenciados entre sí.

Existen dos formas de referenciar a una biblioteca, una denominada estática, en donde al hacer la linkedition o montaje el código de la biblioteca pasa a formar parte del archivo ejecutable y una denominada dinámica en donde el montaje de la biblioteca se realiza en tiempo de ejecución.
En éste último caso, durante el montaje no se incluye el código de la biblioteca en el ejecutable sino que se referencia al nombre de la misma. De ésta forma se reduce el tamaño final del archivo ejecutable y también se hace mucho más simple su mantenimiento.

Un archivo ejecutable desde el punto de vista lógico esta estructurado en una cabecera (aveces dividida en partes) que tiene información de control y un conjunto de secciones, como se muestra a continuación:



1) Cabecera primaria. Contiene la siguiente información:

* El número mágico. Permite identificar al núcleo el tipo de archivo ejecutable.
* El número de secciones que hay en el archivo
* La dirección virtual de inicio, imprescindible para comenzar con la ejecución del proceso.

2) Cabeceras de las secciones. Describen cada una de las secciones del archivo. Especifican el tipo y el tamaño de la sección, además de la dirección virtual que se le debe asignar a la región cuando el proceso se ejecute en el sistema, y otras informaciones.

3) Secciones. Contienen los "datos", que son cargados inicialmente en el espacio de direcciones del proceso, típicamente, el código (también denominado texto), los datos inicializados (variables estáticas y externas del programa conocidas en el momento de la compilación) y los datos no inicializados (también denominado bss).

4) Otras informaciones. Tales como la tabla de símbolos y otros "datos".

Y bueno esto es todo, espero que les haya parecido interesante o si no que les sirva para distraerse un poco jejeje.
Saludos...
García Carrasco José Florentino

No hay comentarios: