Melhor resposta
Devido ao texto que você está usando, parece-me que você está falando de um software que será executado em algum tipo de sistema embutido, em oposição ao software que será implantado como um aplicativo de desktop ou outra variante.
Antes de executar um programa em um hardware específico, há vários passos que devem ser seguidos para converter o código-fonte que você escreveu em algo que possa realmente ser interpretado por uma máquina.
Seu código-fonte é escrito em uma linguagem que tem certa sintaxe e semântica e que é legível para você, enquanto um processador espera e entende apenas 1s e 0s.
Ao trabalhar com linguagens compiladas, existem uma série de ferramentas que, quando usadas em uma ordem específica e alimentadas com as entradas corretas, produzirão o que é comumente conhecido como imagem de software. Essa imagem de software é o que você carregará no destino.
Dependendo do seu hardware e de como você constrói sua cadeia de ferramentas, as ferramentas para produzir a imagem do software variam, mas com certeza você vai precisar de um pré-processador, um compilador e um vinculador.
O código-fonte é passado para o pré-processador que irá resolver algumas coisas (macros, includes, diretivas do pré-processador e outros), neste ponto você tem um arquivo intermediário que ainda pode ser lido para você. Em seguida, o arquivo pré-processado é passado para o compilador que irá gerar um arquivo-objeto. Você tem que dizer ao compilador como e quais arquivos levar para produzir os arquivos-objeto corretos.
Finalmente, o vinculador combinará os vários arquivos-objeto da etapa anterior da maneira que você indicou e produzirá a imagem binária como resultado (o vinculador tratará da vinculação de bibliotecas e outras coisas que não ser resolvido na fase de compilação).
Instalar ou testar uma imagem de software significa carregar a imagem binária que você produziu na última etapa no hardware de destino. O carregamento normalmente é feito copiando a imagem em um armazenamento de memória não volátil.
Esta é uma descrição ampla do processo e não pretende ser exaustiva.
Resposta
Lendo as duas respostas diante de mim e confessando que não certo do que você está realmente perguntando, essas são as coisas que você pode estar se referindo.
Em muitos sistemas multiusuário, uma vez que há apenas um conjunto de registros de hardware na máquina que deve ser compartilhado, eles geralmente dê a cada usuário um intervalo de tempo (digamos, 10 ms) e depois vá para o próximo e para o próximo. O estado dos dados de cada usuário não muda porque estão armazenados no disco ou na memória não utilizada. O estado do conjunto de registros deve ser armazenado como um instantâneo do que está acontecendo neste instante para que possa ser restaurado na próxima vez que o usuário for selecionado.
Outro uso do termo é a matemática e o gerenciamento de memória necessários para manter uma imagem na memória, em vez de apenas escanear um conjunto de linhas de valores variados.
Nos velhos tempos dos computadores de quadro principal, o código-fonte era compilado ou montado em bibliotecas de imagens centrais, máquina idioma como um bloco a ser carregado na memória e executado como está. A maioria das DLLs usa teoria semelhante, senão prática.
Desculpe se tudo que fiz foi turvar a água.