1.- Hacer un resumen detallado de cada Etapa. CodificaciónSe denomina programa máquina (o código) al conjunto de instrucciones máquina que tiene por objeto que la computadora realice una determinada función. Los programas escritos en cualquiera de los lenguajes de programación han de convertirse en programas máquina para poder ser ejecutados por la computadora
CompilaciónSe genera el código máquina correspondiente a cada módulo fuente de la aplicación asignando direcciones a los símbolos definidos en el módulo y resolviendo las referencias a los mismos. As, si a una variable se le asigna una determinada posición de memoria, todas las instrucciones que hagan referencia a esa variable deben especificar dicha dirección. Las referencias a símbolos que no están definidos en el módulo quedan pendientes de resolver hasta la fase de montaje. Como resultado de esta fase se genera modulo objeto por cada archivo fuente
Ligamento
Consiste en juntar en un mismo espacio de direcciones módulos que han sido compilados por aparte y resolver las referencias externas entre ellos.
El encadenamiento se puede realizar:
Al compilar: por ejemplo al utilizar las directivas de compilación #include en C, o uses en Pascal. En este caso el sistema operativo no se ve directamente involucrado en el proceso pues este es responsabilidad del compilador.
CargaLa carga consiste en colocar un programa en memoria para que pueda ser ejecutado. Existen diferentes tipos de cargadores:
Compile and go: (compile y execute). Son los utilizados por los compiladores tipo Turbo (Pascal, C, Prolog, etc.), que realizan todas las etapas enumeradas previamente, cuando la compilación se realiza directamente a la memoria. La idea central consiste en que a medida que se va compilando se va escribiendo directamente sobre la memoria el código ejecutable y una vez se termine el proceso, se le da el control al programa compilado para su ejecución.
RelocalizaciónConsiste en ajustar las direcciones de un programa al sitio donde fue cargado, para que este pueda ser ejecutado. Este proceso es indispensable para poder tener multiprogramación, puesto que un programa no siempre va a ocupar las mismas posiciones de memoria.
Ejecución.Como parte final del proceso de compilación y montaje, se genera un archivo ejecutable que contiene el código máquina del programa. Distintos fabricantes han usado diferentes formatos para este tipo de archivos. En el mundo UNIX, por ejemplo, uno de los formatos más utilizados actualmente denominado Executable and Linkable Format (ELF). A continuación, se presentará de simplificada cómo es el formato típico de un ejecutable.
2. -Hacer un bosquejo grafico del resumen.Administración de la memoria dentro de un programa para su ejecución en una computadora, todo programa debe pasar por ciertas etapas:
Codificación, compilación, encadenamiento, carga, en la mayoría de los casos la relocalización en la memoria, y ejecución. La forma y el tiempo de realizar estos procesos varían de una computadora a otra.
Muestra de estos procesos en un sistema tradicional.
Figura # 2.
El encadenamiento consiste en juntar en un mismo espacio de direcciones los distintos módulos o procedimientos que constituyen el programa y resolver las referencias externas, que son las que hace un modulo a
Supongamos que se tiene el siguiente trozo de programa escrito en lenguaje ensamblador:
Figura # 3.
Para su ejecución en la computadora el programa se debe traducir a lenguaje de máquina.
Por ejemplo si el programa fuera cargado en la posición 0, y suponiendo que la variable f y y están en las posiciones 100 y 104 respectivamente, con respecto al comienzo del programa, el programa generado en lenguaje ensamblador sería:
Figura # 4.
Sin embargo el programa fuera cargado en la posición 100, el código generado sería: Figura # 5.
Para resolver el problema anterior, y teniendo en cuenta que en un sistema de multiprogramación es inadmisible que se fije el sitio de carga desde la compilación (o ensamblaje) de un programa, se deben diseñar mecanismos de relocalización adecuados.