Aanbevolen, 2024

Editor'S Choice

Verschil tussen Linker en Loader

Linker en Loader zijn de hulpprogramma's die een belangrijke rol spelen bij de uitvoering van een programma. De broncode van een programma loopt door compiler, assembler, linker, loader in de respectieve volgorde, vóór uitvoering. Enerzijds, waar de linker de door de assembler gegenereerde objectcodes inneemt en combineert om de uitvoerbare module te genereren. Aan de andere kant laadt de lader deze uitvoerbare module in het hoofdgeheugen voor uitvoering. Laten we het verschil tussen Linker en loader bespreken met behulp van een vergelijkingsgrafiek.

Vergelijkingstabel

Basis voor vergelijkinglinkerlader
basis-Het genereert de uitvoerbare module van een bronprogramma.Het laadt de uitvoerbare module naar het hoofdgeheugen.
InvoerHet neemt als invoer de objectcode die door een assembler is gegenereerd.Het vereist een uitvoerbare module gegenereerd door een linker.
FunctieHet combineert alle objectmodules van een broncode om een ​​uitvoerbare module te genereren.Het wijst de adressen toe aan een uitvoerbare module in het hoofdgeheugen voor uitvoering.
Type / AanpakLinkage Editor, Dynamic linker.Absoluut laden, verplaatsbaar laden en dynamisch laden van runtime.

Definitie van Linker

De Assembler genereert de objectcode van een bronprogramma en geeft deze over aan de linker. De linker neemt deze objectcode en genereert de uitvoerbare code voor het programma en geeft deze over aan de lader.

De taal op hoog niveau, programma's hebben enkele ingebouwde bibliotheken en header-bestanden . Het bronprogramma kan enkele bibliotheekfuncties bevatten waarvan de definitie wordt opgeslagen in de ingebouwde bibliotheken. De linker koppelt deze functie aan de ingebouwde bibliotheken. Als de ingebouwde bibliotheken niet worden gevonden, wordt dit aan de compiler doorgegeven en de compiler genereert vervolgens de fout.

Soms zijn de grote programma's onderverdeeld in de subprogramma's die modules worden genoemd. Wanneer deze modules worden gecompileerd en samengesteld, worden de objectmodules van het bronprogramma gegenereerd. De linker heeft de verantwoordelijkheid om alle objectmodules te combineren / koppelen om een ​​enkel uitvoerbaar bestand van het bronprogramma te genereren. We hebben twee soorten linkers.

Linkage Editor : het is een linker die de verplaatsbare, uitvoerbare module genereert.

Dynamic Linker : het verlengt / vertraagt ​​de koppeling van een aantal externe modules totdat de laadmodule / uitvoerbare module is gegenereerd. Hier wordt linken uitgevoerd tijdens laadtijd of runtime.

Definitie van Loader

Omdat het programma dat momenteel moet worden uitgevoerd, zich in het hoofdgeheugen van de computer moet bevinden. Het is de verantwoordelijkheid van de lader, een programma in een besturingssysteem, om het uitvoerbare bestand / de module van een programma, gegenereerd door de linker, in het hoofdgeheugen te laden voor uitvoering. Het wijst de geheugenruimte toe aan de uitvoerbare module in het hoofdgeheugen.

Er zijn drie soorten laadbenaderingen:

  • Absoluut laden
  • Verplaatsbare laden
  • Dynamische runtime-belasting

Absolute laden : met deze benadering wordt het uitvoerbare bestand van een programma elke keer naar dezelfde locatie met het hoofdgeheugen geladen. Maar het heeft een aantal nadelen, zoals een programmeur zich bewust moet zijn van de toewijzingsstrategie voor het laden van de modules in het hoofdgeheugen. In het geval dat het programma moet worden aangepast met enige invoeging en verwijdering in het programma, dan moeten alle adressen van het programma worden gewijzigd.

Verplaatsbare belasting: in deze benadering produceert de compiler of assembler geen echt hoofdgeheugenadres . Het produceert de relatieve adressen.

Dynamische runtime-belading : in deze benadering wordt het absolute adres voor een programma gegenereerd wanneer een instructie van een uitvoerbare module daadwerkelijk wordt uitgevoerd. Het is zeer flexibel, de laadbare module / uitvoerbare module kan in elk gebied van het hoofdgeheugen worden geladen. Het uitvoeringsprogramma kan tussentijds worden onderbroken en kan worden omgewisseld naar de schijf en terug naar het hoofdgeheugen, dit keer op een ander adres van het hoofdgeheugen.

Belangrijkste verschillen tussen Linker en Loader

  1. Het belangrijkste verschil tussen linker en lader is dat de linker het uitvoerbare bestand van een programma genereert, terwijl de lader het uitvoerbare bestand laadt dat is verkregen van de linker in het hoofdgeheugen voor uitvoering .
  2. De linker neemt de objectmodule van een door de assembler gegenereerd programma op. De lader neemt echter de uitvoerbare module op die is gegenereerd door de linker.
  3. De linker combineert alle objectmodule van een programma om uitvoerbare modules te genereren en koppelt ook de bibliotheekfunctie in de objectmodule aan ingebouwde bibliotheken van de programmeertaal op hoog niveau. Aan de andere kant wijst lader ruimte toe aan een uitvoerbare module in het hoofdgeheugen.
  4. De linker kan worden geclassificeerd als koppelingseditor en dynamische linker terwijl loader kan worden geclassificeerd als absolute loader, verplaatsbare loader en dynamische run-time loader .

Conclusie:

De linker neemt de objectmodules van een programma van de assembler en verbindt ze samen om een ​​uitvoerbare module van een programma te genereren. De uitvoerbare module wordt vervolgens door de lader in het hoofdgeheugen geladen voor uitvoering.

Top