Migliore risposta
A causa della formulazione che stai usando, mi sembra che tu stia parlando di software che verrà eseguito su alcuni una sorta di sistema integrato rispetto al software che verrà distribuito come applicazione desktop o altra variante.
Prima di poter eseguire un programma su un pezzo specifico di hardware, ci sono diversi passaggi che devono essere seguiti per convertire il codice sorgente che hai scritto in qualcosa che possa effettivamente essere interpretato da una macchina.
Il tuo codice sorgente è scritto in un linguaggio che ha una certa sintassi e semantica e che è leggibile per te, mentre un processore si aspetta e comprende solo 1 e 0.
Quando si lavora con linguaggi compilati ci sono una serie di strumenti che, se utilizzati in un ordine specifico e alimentati con gli input giusti, produrranno quella che è comunemente nota come immagine software. Questa immagine software è ciò che alla fine caricherai nel target.
A seconda del tuo hardware e di come costruisci la tua catena di strumenti, gli strumenti per produrre limmagine del software varieranno, ma sicuramente avrai bisogno di un preprocessore, un compilatore e un linker.
Il codice sorgente viene passato al preprocessore che risolverà alcune cose (macro, include, direttive del preprocessore e altri), a questo punto hai un file intermedio che è ancora leggibile. Quindi, il file preelaborato viene passato al compilatore che genererà un file oggetto. Devi dire al compilatore come e quali file prendere per produrre i file oggetto corretti.
Infine il linker combinerà i vari file oggetto del passaggio precedente nel modo in cui glielo dici e come risultato produrrà limmagine binaria (il linker gestirà il collegamento di librerie e altre cose che non potrebbero essere risolto in fase di compilazione).
Installare o testare unimmagine software significa caricare limmagine binaria prodotta nellultimo passaggio nellhardware di destinazione. Il caricamento viene normalmente effettuato copiando limmagine in un archivio di memoria non volatile.
Questa è unampia descrizione del processo e non vuole essere esaustiva.
Risposta
Leggendo le due risposte prima di me e confessando che non lo sono certo di ciò che stai effettivamente chiedendo, queste sono le cose a cui potresti fare riferimento.
In molti sistemi multiutente, poiché cè solo un set di registri hardware sulla macchina che deve essere condiviso, di solito concedi a ciascun utente una porzione di tempo (diciamo, 10 ms) e poi vai al successivo e al successivo. Lo stato dei dati di ogni utente non cambia perché sono archiviati su disco o nella memoria inutilizzata. Lo stato del set di registri deve essere memorizzato come unistantanea di ciò che sta accadendo in questo istante in modo che possano essere ripristinati la prossima volta che lutente viene selezionato.
Un altro uso del termine è la matematica e la gestione della memoria richiesta per conservare unimmagine in memoria, invece di scansionare solo un insieme di righe di valori variabili.
Ai vecchi tempi dei computer con frame principale, il codice sorgente era compilato o assemblato in librerie di immagini “Core”, macchina linguaggio come un blocco da caricare in memoria e quindi eseguire così comè. La maggior parte delle DLL usa una teoria simile, se non una pratica.
Scusa se tutto quello che ho fatto è stato infangare lacqua.