1. Resumen detallado de cada etapa para la ejecución de un programa
Codificación
Traduce los resultados obtenidos a un determinado lenguaje de programación, teniendo en cuenta las especificaciones obtenidas en el cuaderno de carga. Se deben de realizar las pruebas necesarias para comprobar la calidad y estabilidad del programa.
Compilación
Se 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 un módulo objeto por cada archivo fuente.
Ligamento y Carga
Se incluye en el ejecutable un módulo de montaje dinámico que encargará de realizar en tiempo de ejecución la carga y el montaje de la biblioteca cuando se haga referencia por primera vez a algún símbolo definido en la misma. En el código ejecutable original del programa, las referencias a los símbolos de la biblioteca, que evidentemente todavía están pendientes de resolver, se hacen corresponder con símbolos en el módulo de montaje dinámico de esta forma, la primera referencia a uno de estos símbolos produce la activación del módulo que realizará en ese momento la carga de la biblioteca y el proceso de montaje necesario. Como parte del mismo, se resolverá la referencia a ese símbolo de manera que apunte al objeto real de biblioteca y que, por tanto, los posteriores accesos al mismo no afecten al módulo de montaje dinámico. Observe que este proceso de resolución de referencias afecta al programa que hace uso
de la biblioteca dinámica ya que implica modificar en tiempo de ejecución algunas de sus instrucciones para que apunten a la dirección real del símbolo.
Relocalización
Reubicar las referencias presentes en el código de la biblioteca durante la carga de la misma de manera que se ajusten a las direcciones que le han correspondido dentro del mapa de memoria del proceso que la usa. Esta opción permite cargar la biblioteca en cualquier zona libre del mapa del proceso. Sin embargo, impide el poder compartir su código (o, al menos, la totalidad de su código) al estar adaptado a la zona de memoria donde le ha tocado vivir.
Ejecución.
Se genera un archivo ejecutable que contiene el código máquina del programa. Un ejecutable está estructurado como una cabecera y un conjunto de secciones. La cabecera contiene información de control que permite interpretar el contenido del ejecutable.
Por ejemplo, si la ejecución de una instrucción puede generar seis fallos de página y el sistema operativo asigna cinco marcos de página a un proceso que incluya esta instrucción, el proceso podría no terminar de ejecutar esta instrucción. Por tanto, el número mínimo de marcos de página para una determinada arquitectura quedará fijado por la instrucción que pueda generar el máximo número de fallos de página.
2. Bosquejo gráfico del resumen de las etapas
Un programa que sirva para realizar la suma de dos números enteros cualesquiera (por ejemplo, del 3 y el 5), puede representarse, gráficamente, de la siguiente manera:
Suponiendo que en el disco duro de un PC esté guardado el programa Sumar, si alguien quiere realizar una suma con dicho programa, deberá seguir, como mínimo, los siguientes cinco pasos:
1. Encender el ordenador. Enseguida algunos programas del sistema operativo instalado en la máquina se cargarán en la memoria principal y tomarán el control de la computadora, la cual quedará a la espera de que el usuario "diga" que quiere hacer.
2. Seleccionar el programa Sumar para ejecutarlo. Si el sistema operativo ofrece una interfaz gráfica, el usuario podrá seleccionar el programa haciendo doble clic con el puntero del ratón sobre su nombre (Sumar). Pero, en el supuesto de que la interfaz sea modo texto, también llamado modo línea de comandos, entonces el usuario deberá escribir su nombre y pulsar la tecla Enter. En cualquiera de los dos casos, el sistema operativo buscará dicho programa en el disco duro y, si lo encuentra, lo cargará en la memoria, es decir, en ella escribirá una copia de todas las instrucciones del programa Sumar.
Inmediatamente después, la unidad de control se encargará de leer e interpretar dichas instrucciones, una a una, para así ejecutarlas. Dos de las primeras instrucciones solicitarán al usuario los números que éste desea sumar. De manera que, la ejecución del programa se detendrá, en ambas ocasiones, a la espera de que el usuario teclee dichos números.
3. Introducir los datos de entrada. El usuario debe teclear un número (por ejemplo, el 3) y pulsar Enter, y realizar la misma operación para el segundo número (por ejemplo, el 5). A continuación, la unidad aritmético/lógica calculará la suma, que en este caso resultará ser 8. Los tres datos también se guardarán en la memoria.
Posteriormente, el resultado de calcular la suma de los dos números de entrada se mostrará por la pantalla del monitor, en donde el usuario podrá ver algo parecido a:
En el transcurso de la ejecución de este programa, el usuario interviene dos veces, ambas para escribir los números que quiere sumar. En cierta manera, se ha producido un diálogo entre el usuario y la máquina, o dicho de otra forma, para que este programa se ejecute de principio a fin, es necesario que el usuario participe en algún momento dado. A este tipo de programas se les denomina interactivos.
4. Finalizar el programa. Llegados a este punto, el programa Sumar finalizará después de que el usuario pulse cualquier tecla. En consecuencia, el sistema operativo liberará el espacio de memoria ocupado por las instrucciones del programa y por todos los datos utilizados en su ejecución.
5. Apagar el ordenador. Si ahora el usuario decide apagar el ordenador, también se liberará el espacio de memoria ocupado por los programas del sistema operativo y todo volverá a estar como al principio.