Odporúčaná, 2019

Redakcia Choice

Rozdiel medzi spojkou a nakladačom

Linker a Loader sú pomôcky, ktoré zohrávajú dôležitú úlohu pri vykonávaní programu. Zdrojový kód programu prechádza cez kompilátor, assembler, linker, loader v príslušnom poradí pred vykonaním. Na jednej strane, kde linker prijíma kódy objektov generované assemblerom a kombinuje ich na generovanie spustiteľného modulu. Na druhej strane nakladač načíta tento spustiteľný modul do hlavnej pamäte na vykonanie. Prediskutujeme rozdiel medzi Linkerom a nakladačom pomocou porovnávacieho grafu.

Porovnávacia tabuľka

Základ pre porovnaniespojovacieloader
základnéGeneruje spustiteľný modul zdrojového programu.Spúšťa spustiteľný modul do hlavnej pamäte.
vstupZaberá ako vstup, kód objektu generovaný assemblerom.Vyžaduje spustiteľný modul generovaný linkerom.
funkcieKombinuje všetky objektové moduly zdrojového kódu a generuje spustiteľný modul.Prideľuje adresy spustiteľnému modulu v hlavnej pamäti na vykonanie.
Typ / ApproachLink editor, dynamický linker.Absolútne zaťaženie, Relokovateľné zaťaženie a Dynamické zaťaženie.

Definícia odkazu

Assembler generuje objektový kód zdrojového programu a odovzdá ho linkeru. Linker prevezme tento objektový kód a vygeneruje spustiteľný kód pre program a odovzdá ho nakladačovi.

Jazykové programy na vysokej úrovni obsahujú niektoré zabudované knižnice a hlavičkové súbory . Zdrojový program môže obsahovať niektoré funkcie knižnice, ktorých definícia je uložená v zabudovaných knižniciach. Linker spája tieto funkcie s vstavanými knižnicami. V prípade, že vstavané knižnice nie sú nájdené, oznámi to kompilátorovi a kompilátor potom vygeneruje chybu.

Niekedy sú veľké programy rozdelené na podprogramy, ktoré sa nazývajú moduly . Teraz, keď sú tieto moduly zostavené a zostavené, generujú sa objektové moduly zdrojového programu. Linker je zodpovedný za spojenie / prepojenie všetkých objektových modulov na vytvorenie jediného spustiteľného súboru zdrojového programu. Máme dva typy linkerov.

Editor odkazov : Je to linker, ktorý generuje premiestniteľný spustiteľný modul.

Dynamic Linker : Odstraňuje / odkladá spojenie niektorých externých modulov, kým sa nevygeneruje modul na načítanie / spustiteľný modul. Tu sa prepojenie vykonáva počas zaťaženia alebo času spustenia.

Definícia nakladača

Keďže program, ktorý sa má vykonať v súčasnosti, musí byť umiestnený v hlavnej pamäti počítača. Je povinnosťou načítača, programu v operačnom systéme, načítať spustiteľný súbor / modul programu, generovaného linkerom, do hlavnej pamäte na vykonanie. Prideľuje pamäťový priestor spustiteľnému modulu v hlavnej pamäti.

Existujú tri druhy nakladacích prístupov:

  • Absolútne zaťaženie
  • Relokovateľné zaťaženie
  • Dynamické načítanie po spustení

Absolútne načítanie : Tento prístup zaťažuje spustiteľný súbor programu vždy na rovnakú pozíciu hlavnej pamäte . Má však určité nevýhody, ako je to, že programátor si musí byť vedomý stratégie priradenia modulov do hlavnej pamäte. V prípade, že program má byť upravený s určitým vložením a odstránením do programu, všetky adresy programu musia byť zmenené.

Relokovateľné zaťaženie: V tomto prístupe kompilátor alebo assembler nevytvára skutočnú adresu hlavnej pamäte . Vytvára relatívne adresy.

Dynamické načítanie : Pri tomto prístupe sa generuje absolútna adresa pre program, keď sa skutočne vykoná inštrukcia spustiteľného modulu. Je veľmi flexibilný, načítateľný modul / spustiteľný modul je možné načítať do ľubovoľnej oblasti hlavnej pamäte . Vykonávací program možno medzičasom prerušiť a môže byť vymenený na disk a späť do hlavnej pamäte tentoraz na inej adrese hlavnej pamäte.

Kľúčové rozdiely medzi linkerom a nakladačom

  1. Kľúčovým rozdielom medzi linkerom a načítačom je to, že linker generuje spustiteľný súbor programu, zatiaľ čo načítač spustiaci súbor, ktorý získal z linkera, načíta do hlavnej pamäte na vykonanie .
  2. Spojovací prvok prijíma objektový modul programu generovaného assemblerom. Nakladač však prijme spustiteľný modul generovaný linkerom.
  3. Spojovací článok spája celý objektový modul programu a generuje spustiteľné moduly, ktoré tiež spája funkciu knižnice v objektovom module s vstavanými knižnicami programovacieho jazyka na vysokej úrovni. Na druhej strane nakladač alokuje priestor do spustiteľného modulu v hlavnej pamäti.
  4. Linker môže byť klasifikovaný ako editor prepojenia a dynamický linker, zatiaľ čo nakladač môže byť klasifikovaný ako absolútny nakladač, premiestniteľný nakladač a dynamický run-time loader .

záver:

Linker prevezme objektové moduly programu z assembleru a spojí ich na vytvorenie spustiteľného modulu programu. Spustitelný modul je potom načítaný nakladačom do hlavnej pamäte na vykonanie.

Top