Bästa svaret
På grund av formuleringen du använder verkar det som om du talar om programvara som kommer att köras på vissa typ av inbäddat system i motsats till programvara som kommer att distribueras som en stationär applikation eller annan variant.
Innan du kan köra ett program på en viss hårdvara, finns det flera steg som måste följas för att konvertera källkoden du skrev till något som faktiskt kan tolkas av en maskin.
Din källkod är skriven på ett språk som har viss syntax och semantik och som är läsbart för dig, medan en processor förväntar sig och förstår bara 1s och 0s.
När du arbetar med kompilerade språk finns det en serie verktyg som när de används i en specifik ordning och matas med rätt ingångar kommer att producera det som allmänt kallas en programvaruavbildning. Denna programvarubild är vad du slutligen laddar in i målet.
Beroende på din hårdvara och hur du bygger din verktygskedja, kommer verktygen för att producera programvarubilden att variera, men du kommer säkert att behöva en förprocessor, en kompilator och en länkare.
Källkoden skickas till förprocessorn som kommer att lösa vissa saker (makron, inkluderar, förbehandlingsdirektiv och andra), vid denna tidpunkt har du en mellanfil som fortfarande är läsbar för dig. Sedan skickas den förbehandlade filen till kompilatorn som genererar en objektfil. Du måste berätta för kompilatorn hur och vilka filer du ska ta för att producera rätt objektfiler.
Slutligen kombinerar länkaren de olika objektfilerna från föregående steg på det sätt du berättar för det och kommer att producera den binära bilden som ett resultat (länkaren hanterar länkning av bibliotek och andra saker som inte kunde lösas i sammanställningsfasen).
Att installera eller testa en programvarubild betyder att ladda den binära avbildningen du producerade i det sista steget i målhårdvaran. Lastningen görs normalt genom att kopiera bilden till ett icke-flyktigt minneslagring.
Detta är en bred beskrivning av processen och är inte tänkt att vara uttömmande.
Svar
Läser de två svaren framför mig och erkänner att jag inte är säkert vad du faktiskt frågar, det här är de saker du kanske hänvisar till.
I många fleranvändarsystem, eftersom det bara finns en uppsättning hårdvaruregister på maskinen som måste delas, brukar de ge varje användare en bit tid (säg 10 ms) och gå sedan till nästa och nästa. Tillståndet för varje användares data ändras inte eftersom det lagras på hårddisken eller i oanvänt minne. Registeruppsättningens tillstånd måste lagras som en ögonblicksbild av vad som händer just nu så att de kan återställas nästa gång användaren väljs.
En annan användning av termen är matematik och minneshantering som krävs för att hålla en bild i minnet, i motsats till att bara skanna en uppsättning rader med varierande värden.
Under de gamla dagarna av huvudramdatorer sammanställdes eller samlades källkoden i ”Core image” -bibliotek, maskin språk som ett block som ska laddas i minnet och sedan köras som det är. De flesta DLL-filer använder liknande teori om inte övning.
Tyvärr om allt jag gjorde var lerigt vattnet.