Mejor respuesta
Debido a la redacción que está utilizando, me parece que está hablando de software que se ejecutará en algunos una especie de sistema integrado en lugar de software que se implementará como una aplicación de escritorio u otra variante.
Antes de poder ejecutar un programa en una pieza específica de hardware, hay varios pasos que deben seguirse para convertir el código fuente que escribió en algo que realmente pueda ser interpretado por una máquina.
Su código fuente está escrito en un lenguaje que tiene cierta sintaxis y semántica y que es legible para usted, mientras que un procesador espera y entiende solo 1 y 0.
Cuando se trabaja con lenguajes compilados, hay una serie de herramientas que cuando se usan en un orden específico y se alimentan con las entradas correctas producirán lo que comúnmente se conoce como una imagen de software. Esta imagen de software es lo que finalmente cargará en el objetivo.
Dependiendo de su hardware y cómo construya su cadena de herramientas, las herramientas para producir la imagen del software variarán, pero seguramente necesitará un preprocesador, un compilador y un enlazador.
El código fuente se pasa al preprocesador que resolverá algunas cosas (macros, inclusiones, directivas del preprocesador y otras), en este punto tiene un archivo intermedio que aún puede leer. Luego, el archivo preprocesado se pasa al compilador que generará un archivo objeto. Debe decirle al compilador cómo y qué archivos tomar para producir los archivos objeto correctos.
Finalmente, el enlazador combinará los diversos archivos de objeto del paso anterior de la manera que usted le indique y producirá la imagen binaria como resultado (el enlazador manejará el enlace de bibliotecas y otras cosas que no resolverse en la fase de compilación).
Instalar o probar una imagen de software significa cargar la imagen binaria que produjo en el último paso en el hardware de destino. La carga se realiza normalmente copiando la imagen en un almacenamiento de memoria no volátil.
Esta es una descripción amplia del proceso y no pretende ser exhaustiva.
Responder
Leer las dos respuestas ante mí y confesar que no soy seguro de lo que está preguntando, estas son las cosas a las que podría hacer referencia.
En muchos sistemas multiusuario, dado que solo hay un conjunto de registros de hardware en la máquina que deben compartirse, generalmente Dé a cada usuario un intervalo de tiempo (digamos, 10 ms) y luego pase al siguiente y al siguiente. El estado de los datos de cada usuario no cambia porque están almacenados en el disco o en la memoria no utilizada. El estado del conjunto de registros debe almacenarse como una instantánea de lo que está sucediendo en este instante para que se puedan restaurar la próxima vez que se seleccione al usuario.
Otro uso del término es la gestión de memoria y matemáticas requerida para mantener una imagen en la memoria, en lugar de simplemente escanear un conjunto de líneas de valores variables.
En los viejos tiempos de las computadoras de marco principal, el código fuente se compilaba o ensamblaba en bibliotecas de imágenes centrales, máquinas language como un bloque que se cargará en la memoria y luego se ejecutará tal cual. La mayoría de las DLL usan una teoría similar, si no la práctica.
Lo siento si todo lo que hice fue enturbiar el agua.