Verschil tussen Linker en Loader

Schrijver: Laura McKinney
Datum Van Creatie: 3 April 2021
Updatedatum: 8 Kunnen 2024
Anonim
Ben jij een linkse rat of een rechtse zak? | VRT NLS #01
Video: Ben jij een linkse rat of een rechtse zak? | VRT NLS #01

Inhoud


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

  1. Vergelijkingstabel
  2. Definitie
  3. Belangrijkste verschillen
  4. Gevolgtrekking

Vergelijkingstabel

Basis voor vergelijkinglinkerlader
basis-Het genereert de uitvoerbare module van een bronprogramma.Het laadt de uitvoerbare module in het hoofdgeheugen.
InvoerHet neemt als invoer de objectcode die is gegenereerd door een assembler.Het duurt 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 / AanpakKoppelingseditor, dynamische linker.Absoluut laden, verplaatsbaar laden en dynamisch runtime laden.


Definitie van Linker

De assembler genereert de objectcode van een bronprogramma en draagt ​​deze over aan de linker. De linker neemt deze objectcode en genereert de uitvoerbare code voor het programma en overhandigen aan de Loader.

De taal op hoog niveau, programma's hebben een aantal ingebouwde bibliotheken en header bestanden. Het bronprogramma kan enkele bibliotheekfuncties bevatten waarvan de definitie is 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 geïnformeerd en genereert de compiler de fout.

Soms zijn de grote programma's onderverdeeld in de subprogramma's die worden opgeroepen modules. Wanneer deze modules worden gecompileerd en geassembleerd, 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.


Koppelingseditor: Het is een linker die de verplaatsbare, uitvoerbare module genereert.

Dynamic Linker: Hiermee wordt de koppeling van sommige externe modules uitgesteld / uitgesteld totdat de laadmodule / uitvoerbare module is gegenereerd. Hier wordt het koppelen gedaan tijdens laadtijd of uitvoeringstijd.

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 loader, een programma in een besturingssysteem, om het uitvoerbare bestand / module van een programma, gegenereerd door de linker, naar 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
  • Verplaatsbaar laden
  • Dynamische run-time laden

Absoluut laden: Deze benadering laadt het uitvoerbare bestand van een programma in een dezelfde hoofdgeheugenlocatie elke keer. Maar het heeft wat 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 gewijzigd met enige invoeging en verwijdering in het programma, moeten alle adressen van het programma worden gewijzigd.

Verplaatsbaar laden: In deze benadering doet de compiler of assembler dat geen daadwerkelijk hoofdgeheugenadres produceren. Het produceert de relatieve adressen.

Dynamische run-time laden: 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 worden geladen elke regio van het hoofdgeheugen. Het uitvoerende programma kan tussendoor worden onderbroken en kan deze keer op een ander hoofdgeheugenadres worden omgewisseld naar de schijf en terug naar het hoofdgeheugen.

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

Gevolgtrekking:

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