El programa es una secuencia de instrucciones escritas por el usuario que instruye a la computadora para que realice la tarea de resolver algún problema. Ahora aprenderemos más sobre los diversos pasos por los que pasa un programa antes de ejecutarse. El programa reside en el disco como un archivo ejecutable binario. Para ejecutar el programa, debe llevarse desde el disco a la memoria principal (ya que las únicas ubicaciones de almacenamiento a las que la CPU puede acceder directamente son la memoria principal y los registros, mientras que el registro se accede en un ciclo de CPU o menos). , la memoria principal puede tardar muchos ciclos). Ahora, háganos saber los pasos detallados por los que pasa el programa para que se cumpla la tarea anterior.
A medida que el programa a ejecutar se lleva del disco a la memoria principal, se coloca dentro del contexto de un proceso (que es básicamente un programa en ejecución) donde queda disponible para su ejecución en la CPU. Durante la ejecución, accede a datos e instrucciones de la memoria y, una vez que se completa la ejecución, el proceso finaliza y la memoria se recupera para que la use otro proceso.
Las direcciones en el código fuente son generalmente simbólicas (como la cuenta variable). El compilador une estas direcciones a direcciones reubicables y el enlazador o cargador las une a las direcciones absolutas (enlace: asignación de un espacio de direcciones a otro).
El enlace de instrucciones y datos a las direcciones de memoria se puede realizar en cualquiera de los siguientes pasos de ejecución del programa:
- Tiempo de compilación :
si inicialmente sabemos dónde reside el proceso en la memoria en el momento de la compilación, entonces se puede generar un código absoluto. Si la ubicación de inicio cambia, entonces el código debe volver a compilarse. - Tiempo de carga :
si la dirección de memoria donde reside el proceso no se conoce en el momento de la compilación, el compilador debe generar un código reubicable (no tiene una dirección de memoria estática para ejecutar). Si la dirección inicial cambia, entonces el programa debe recargarse para incorporar este valor. - Tiempo de ejecución :
si el proceso se puede mover de un segmento a otro durante su tiempo de ejecución, entonces el enlace debe retrasarse hasta el tiempo de ejecución. Se requiere hardware especial para este tipo de encuadernación (discutido a continuación).
Figura: procesamiento de varios pasos de un programa de usuario
Dirección lógica frente a física :
la dirección lógica es la dirección generada por la CPU, mientras que la dirección física es la que ve la unidad de memoria (es decir, la dirección cargada en el registro de dirección de memoria de la memoria). El programa de usuario trata con las direcciones lógicas y nunca se ven las direcciones físicas.
Las direcciones de vinculación en tiempo de compilación o de carga (como se mencionó anteriormente) generan direcciones lógicas y físicas idénticas, mientras que este no es el caso cuando las direcciones de vinculación se realizan en tiempo de ejecución. En este último caso, las direcciones físicas y lógicas generadas son diferentes. La dirección lógica se denomina dirección virtual en este caso. En el tiempo de ejecución, un dispositivo de hardware llamado Unidad de administración de memoria (MMU) realiza el mapeo de la dirección virtual a la dirección física.
La carga dinámica se utiliza para una utilización de la memoria más eficiente. La ventaja de la carga dinámica es que una rutina en particular se carga solo cuando se requiere. Las bibliotecas vinculadas dinámicamente (DLL) son las bibliotecas del sistema que están vinculadas al programa cuando se ejecutan los programas. Este es el breve resumen general del procesamiento de varios pasos de un programa de usuario, desde la etapa del código fuente hasta la ejecución. El diagrama adjunto muestra con precisión el procesamiento de varios pasos del programa.
Publicación traducida automáticamente
Artículo escrito por eshwitha_reddy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA