Para EJECUTAR un programa debe seguir los siguientes Etapas:
Resumen detallado de cada Etapa
CODIFICACIÓN
Es el algoritmo traspasado a la computadora a través de un lenguaje de programación, debe ser escrito de acuerdo a las reglas gramaticales o sintaxis del mismo.
Generamos un algoritmo el cual se denomina código, y al pasarlo a un lenguaje de programación se le llama código fuente.
COMPILACIÓN
Compilación, el lenguaje de programación seleccionado revisa que ya no halla errores en el código fuente. Los compiladores y ensambladores suelen traducir un procedimiento a la vez y guardan en memoria secundaria el resultado de esta traducción. Antes de que pueda ejecutarse el programa, todos los procedimientos traducidos deben recuperarse y ligarse correctamente. Si no se dispone de memoria virtual, el programa enlazado debe cargarse explícitamente en memoria.
LIGAMIENTO
Es un programa que enlaza todos los programas o módulos obteniendo lo que denominamos programa binario ejecutable. Enlaza distintos módulos o programas que poseen subprogramas. Además incorporan las denominadas rutinas de librerías en caso de solicitarlas el propio programa. Las referencias externas son resueltas así como las llamadas a funciones de biblioteca del sistema.
CARGA
Durante este proceso se carga en memoria el programa ejecutable. Este proceso se realiza cuando se ejecuta el programa. Este carga puede permitir la compartición de código ejecutable entre diferentes procesos. Si en la compilación no se conoce donde residirá el programa en memoria, entonces el compilador deberá cargar el código relocalizable. Un cargador es un programa que realiza la función de carga, pero muchos cargadores también incluyen relocalización y ligado.
RELOCALIZACION
Cuando se compiló el programa se definieron o resolvieron las direcciones de memoria de acuerdo a la sección de ese momento, pero si el programa se carga en otro día en una sección diferente, las direcciones reales ya no coinciden. En este caso, el manejador de memoria puede solucionar el problema de dos maneras: de manera `estática' o de manera `dinámica'.
La solución `estática' consiste en que todas las direcciones del programa se vuelvan a recalcular al momento en que el programa se carga a memoria, esto es, prácticamente se vuelve a recompilar el programa.
La solución `dinámica' consiste en tener un registro que guarde la dirección base de la sección que va a contener al programa. Cada vez que el programa haga una referencia a una dirección de memoria, se le suma el registro base para encontrar la dirección real.
EJECUCIÓN
Durante la ejecución el proceso se moverá de un lugar a otro de la memoria, el enlace final se deberá postergar hasta el momento de la ejecución o run-time. Para que este esquema funcione, se debe tener hardware especial.