Beste antwoord
Vanwege de bewoordingen die u gebruikt, lijkt het mij dat u het hebt over software die op sommige soort ingebed systeem in tegenstelling tot software die zal worden ingezet als een desktoptoepassing of een andere variant.
Voordat u een programma op een specifiek stuk hardware kunt draaien, zijn er verschillende stappen die moeten worden gevolgd om de broncode die u hebt geschreven om te zetten in iets dat daadwerkelijk door een machine kan worden geïnterpreteerd.
Uw broncode is geschreven in een taal die een bepaalde syntaxis en semantiek heeft en die voor u leesbaar is, terwijl een processor alleen enen en 0s verwacht en begrijpt.
Bij het werken met gecompileerde talen zijn er een reeks tools die, wanneer ze in een specifieke volgorde worden gebruikt en met de juiste invoer worden ingevoerd, een zogenaamd software-image produceren. Deze software-afbeelding is wat u uiteindelijk in het doel zult laden.
Afhankelijk van je hardware en hoe je je gereedschapsketen bouwt, zullen de tools om de software-image te produceren variëren, maar je hebt zeker een preprocessor, een compiler en een linker nodig.
De broncode wordt doorgegeven aan de preprocessor die sommige dingen zal oplossen (macros, include, preprocessor-instructies en andere), op dit punt heb je een tussenbestand dat nog steeds voor je leesbaar is. Vervolgens wordt het voorverwerkte bestand doorgegeven aan de compiler die een objectbestand zal genereren. U moet de compiler vertellen hoe en welke bestanden hij moet nemen om de juiste objectbestanden te produceren.
Ten slotte zal de linker de verschillende objectbestanden van de vorige stap combineren op de manier waarop u het vertelt en als resultaat het binaire beeld produceren (de linker zal de koppeling van bibliotheken en andere dingen die niet worden opgelost in de compilatiefase).
Het installeren of testen van een software-image betekent het laden van de binaire afbeelding die u in de laatste stap hebt gemaakt in de doelhardware. Het laden wordt normaal gesproken gedaan door de afbeelding naar een niet-vluchtige geheugenopslag te kopiëren.
Dit is een brede beschrijving van het proces en is niet bedoeld als uitputtend.
Antwoord
De twee antwoorden die voor mij liggen lezen en bekennen dat ik dat niet ben zeker wat je eigenlijk vraagt, dit zijn de dingen waarnaar je misschien verwijst.
In veel multi-user systemen, aangezien er maar één set hardware registers op de machine is die gedeeld moeten worden, zijn ze meestal geef elke gebruiker een stukje tijd (zeg 10 ms) en ga dan naar de volgende en de volgende. De status van de gegevens van elke gebruiker verandert niet, omdat deze zijn opgeslagen op schijf of in ongebruikt geheugen. De status van de registerset moet worden opgeslagen als een momentopname van wat er op dit moment gebeurt, zodat ze kunnen worden hersteld de volgende keer dat de gebruiker wordt geselecteerd.
Een ander gebruik van de term is het vereiste wiskunde- en geheugenbeheer om een afbeelding in het geheugen vast te houden, in plaats van alleen een reeks regels met verschillende waarden te scannen.
In de oude dagen van mainframe-computers werd broncode gecompileerd of geassembleerd in Core image-bibliotheken, machine taal als een blok dat in het geheugen moet worden geladen en vervolgens wordt uitgevoerd zoals het is. De meeste DLLs gebruiken een vergelijkbare theorie, zo niet de praktijk.
Sorry als ik alleen het water modderig deed.