Rozdíl mezi linkerem a Loaderem

Autor: Laura McKinney
Datum Vytvoření: 3 Duben 2021
Datum Aktualizace: 23 Duben 2024
Anonim
Rozdíl mezi linkerem a Loaderem - Technologie
Rozdíl mezi linkerem a Loaderem - Technologie

Obsah


Linker a Loader jsou obslužné programy, které hrají hlavní roli při provádění programu. Zdrojový kód programu prochází kompilátorem, assemblerem, linkerem, zavaděčem v příslušném pořadí, před provedením. Na jedné straně, kde linker zavádí kódy objektů generované assemblerem a kombinují je pro generování spustitelného modulu. Na druhé straně, zavaděč načte tento spustitelný modul do hlavní paměti pro provedení. Pojďme diskutovat o rozdílu mezi linkerem a zavaděčem pomocí srovnávací tabulky.

  1. Srovnávací tabulka
  2. Definice
  3. Klíčové rozdíly
  4. Závěr

Srovnávací tabulka

Základ pro srovnáníLinkerNakladač
ZákladníGeneruje spustitelný modul zdrojového programu.Načte spustitelný modul do hlavní paměti.
VstupVezme jako vstup kód objektu generovaný assemblerem.Trvá spustitelný modul generovaný linkerem.
FunkceKombinuje všechny objektové moduly zdrojového kódu a vytváří spustitelný modul.K provedení přiděluje adresy spustitelnému modulu v hlavní paměti.
Typ / přístupEditor odkazů, dynamický linker.Absolutní načítání, přemístitelné načítání a dynamické načítání za běhu.


Definice linkeru

Assembler generuje kód objektu zdrojového programu a předá jej linkeru. Linker vezme tento kód objektu a vygeneruje spustitelný kód pro program a předejte jej nakladači.

Některé jazyky mají programy na vysoké úrovni vestavěné knihovny a záhlaví soubory. Zdrojový program může obsahovat některé funkce knihovny, jejichž definice je uložena ve vestavěných knihovnách. Linker tyto funkce propojuje s vestavěnými knihovnami. Pokud nejsou vestavěné knihovny nalezeny, informuje o tom kompilátor a kompilátor poté vygeneruje chybu.

Velké programy se někdy dělí na podprogramy, které se nazývají moduly. Nyní, když jsou tyto moduly zkompilovány a sestaveny, jsou generovány objektové moduly zdrojového programu. Linker je zodpovědný za kombinaci / propojení všech objektových modulů za účelem vytvoření jediného spustitelného souboru zdrojového programu. Máme dva typy linkerů.


Editor odkazů: Jedná se o linker, který generuje přemístitelný spustitelný modul.

Dynamic Linker: Odráží / odkládá propojení některých externích modulů, dokud není vygenerován zátěžový modul / spustitelný modul. Zde se propojení provádí během doby načítání nebo běhu.

Definice nakladače

Protože program, který musí být aktuálně spuštěn, musí být umístěn v hlavní paměti počítače. Je to odpovědnost nakladač, program v operačním systému k načtení spustitelného souboru / modulu programu, generovaného linkerem, do hlavní paměti pro provedení. Přiděluje paměťový prostor spustitelnému modulu v hlavní paměti.

Existují tři druhy přístupů k načítání:

  • Absolutní zatížení
  • Přemístitelné zatížení
  • Dynamické načítání za běhu

Absolutní zatížení: Tento přístup načte spustitelný soubor programu do a stejné hlavní umístění paměti pokaždé. Ale má něco nevýhody jako programátor si musí být vědom strategie přiřazení pro načtení modulů do hlavní paměti. V případě, že má být program upraven tak, že do programu bude vloženo a vymazáno, musí být změněny všechny adresy programu.

Přemístitelné načítání: V tomto přístupu kompilátor nebo assembler ano nevytvoří skutečnou adresu hlavní paměti. Vytváří relativní adresy.

Dynamické načítání za běhu: V tomto přístupu je absolutní adresa programu generována, když je instrukce spustitelného modulu skutečně provedena. Je velmi flexibilní, do kterého lze zavést zaváděcí modul / spustitelný modul jakoukoli oblast hlavní paměti. Spouštěcí program může být přerušen mezi a může být zaměněn na disk a zpět do hlavní paměti tentokrát na jiné adrese hlavní paměti.

  1. Klíčový rozdíl mezi linkerem a zavaděčem je v tom, že linker generuje spustitelný soubor programu, zatímco zavaděč načte spustitelný soubor získaný z linkeru do hlavní paměť pro provedení.
  2. Linker nasává objektový modul programu generovaného assemblerem. Nakladač však nasává spustitelný modul generované linkerem.
  3. Linker kombinuje všechny objektové moduly programu pro generování spustitelné moduly to také spojuje funkce knihovny v modulu objektu na vestavěné knihovny programovacího jazyka na vysoké úrovni. Na druhou stranu, nakladač přiděluje místo spustitelnému souboru modul v hlavní paměti.
  4. Linker lze klasifikovat jako editor odkazů, a dynamický linker zatímco nakladač lze klasifikovat jako absolutní nakladač, přemístitelný nakladač a dynamický zavaděč.

Závěr:

Linker vezme objektové moduly programu z assembleru a spojí je dohromady, aby vytvořil spustitelný modul programu. Spustitelný modul je pak zavaděčem načten do hlavní paměti pro provedení.