Anbefalet, 2024

Redaktørens Valg

Forskel mellem Linker og Loader

Linker og Loader er de anvendelsesprogrammer, der spiller en vigtig rolle i udførelsen af ​​et program. Kildekode for et program passerer gennem kompilator, assembler, linker, loader i den respektive rækkefølge, før udførelse. På den ene side, hvor linkeren indtager objektkoderne genereret af assembleren og kombinerer dem for at generere det eksekverbare modul. På den anden side læser læsseren dette eksekverbare modul til hovedhukommelsen til udførelse. Lad os diskutere forskellen mellem Linker og Loader ved hjælp af et sammenligningsdiagram.

Sammenligningstabel

Grundlag for sammenligninglinkerLoader
GrundlæggendeDet genererer det eksekverbare modul i et kildeprogram.Den indlæser det eksekverbare modul til hovedhukommelsen.
InputDet tager som input, objektkoden genereret af en assembler.Det kræver eksekverbart modul genereret af en linker.
FungereDet kombinerer alle objektmodulerne i en kildekode for at generere et eksekverbart modul.Det allokerer adresserne til et eksekverbart modul i hovedhukommelsen til udførelse.
Type / ApproachLinkage Editor, Dynamic linker.Absolut lastning, Relocatable loading og Dynamic Run-time loading.

Definition af Linker

Assembleren genererer objektkoden til et kildeprogram og overfører det til linkeren. Linkeren tager denne objektkode og genererer den eksekverbare kode for programmet og overleverer den til Loader.

Sprog på højt niveau, programmer har nogle indbyggede biblioteker og headerfiler . Kildeprogrammet kan indeholde nogle biblioteksfunktioner, hvis definition er gemt i de indbyggede biblioteker. Linkeren forbinder denne funktion med de indbyggede biblioteker. Hvis de indbyggede biblioteker ikke findes, informerer den kompilatoren, og kompilatoren genererer derefter fejlen.

Nogle gange er de store programmer opdelt i underprogrammerne, der kaldes moduler . Nu, når disse moduler kompileres og samles, genereres genstandsmodulerne i kildeprogrammet. Linkeren har ansvaret for at kombinere / forbinde alle objektmodulerne for at generere en enkelt eksekverbar fil i kildeprogrammet. Vi har to typer linkere.

Linkage Editor : Det er en linker, der genererer det flyttbare, eksekverbare modul.

Dynamisk Linker : Det forsvinder / udsætter forbindelsen mellem nogle eksterne moduler, indtil belastningsmodulet / eksekverbart modul er genereret. Her foretages linking under belastningstid eller kørselstid.

Definition af Loader

Da det program, der skal udføres, skal være i computerens hovedhukommelse. Det er ansvaret for loaderen, et program i et operativsystem, at indlæse den eksekverbare fil / modul i et program, der genereres af linkeren, til hovedhukommelsen til udførelse. Det tildeler hukommelsespladsen til det eksekverbare modul i hovedhukommelsen.

Der er tre slags indlæsningsmetoder:

  • Absolut indlæsning
  • Relocatable loading
  • Dynamisk driftstidsindlæsning

Absolut indlæsning : Denne fremgangsmåde indlæser den eksekverbare fil af et program hver gang til samme hovedhukommelsessted . Men det har nogle ulemper, som en programmør skal være opmærksom på opgavestrategien for at læse modulerne til hovedhukommelsen. I tilfælde af at programmet skal ændres, der involverer noget indsættelse og sletning i programmet, skal alle adresserne på programmet ændres.

Relocatable loading: I denne tilgang producerer kompilatoren eller assembleren ikke den egentlige hovedhukommelsesadresse . Det producerer de relative adresser.

Dynamic Run-Time loading : I denne tilgang genereres den absolutte adresse for et program, når en instruktion af et eksekverbart modul faktisk udføres. Det er meget fleksibelt, det ladbare modul / eksekverbare modul kan indlæses i en hvilken som helst region i hovedhukommelsen . Det eksekverende program kan afbrydes i mellem og kan skiftes ud til disken og tilbage til hovedhukommelsen denne gang på en anden hovedhukommelsesadresse.

Nøgleforskelle mellem Linker og Loader

  1. Nøgleforskellen mellem linker og loader er, at linkeren genererer den eksekverbare fil i et program, mens loaderen indlæser den eksekverbare fil, der er opnået fra linkeren, til hovedhukommelsen til udførelse .
  2. Linkeren indtager objektmodulet af et program genereret af montøren. Imidlertid indtager læsseren det eksekverbare modul genereret af linkeren.
  3. Linkeren kombinerer alle objektmoduler i et program for at generere eksekverbare moduler. Det forbinder også bibliotekets funktion i objektmodulet til indbyggede biblioteker i programmeringssproget på højt niveau. På den anden side tildeler loader plads til et eksekverbart modul i hovedhukommelsen.
  4. Linkeren kan klassificeres som linkredaktør og dynamisk linker, mens loader kan klassificeres som absolut loader, relocatable loader og dynamisk run-time loader .

Konklusion:

Linkeren tager objektmodulerne fra et program fra assembleren og forbinder dem sammen for at generere et eksekverbart modul i et program. Det eksekverbare modul lastes derefter af loaderen i hovedhukommelsen til udførelse.

Top