Doporučená, 2021

Redakce Choice

Rozdíl mezi linkerem a zavaděčem

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 kombinuje je, aby generoval spustitelný modul. Na druhé straně zavaděč načte tento spustitelný modul do hlavní paměti pro provedení. Srovnejte rozdíl mezi Linkerem a zavaděčem pomocí srovnávací tabulky.

Srovnávací graf

Základ pro porovnáníLinkerZavaděč
ZákladníGeneruje spustitelný modul zdrojového programu.Načte spustitelný modul do hlavní paměti.
VstupJe to jako vstup, objektový kód generovaný assemblerem.Trvá spustitelný modul generovaný linkerem.
FunkceKombinuje všechny objektové moduly zdrojového kódu pro generování spustitelného modulu.Přiděluje adresy spustitelnému modulu v hlavní paměti pro provedení.
Typ / přiblíženíEditor vazeb, dynamický linker.Absolutní zatížení, přemístitelné zatížení a dynamické zatížení při doběhu.

Definice linkeru

Assembler generuje kód objektu zdrojového programu a předá jej linkeru. Linker vezme tento objektový kód a vygeneruje spustitelný kód programu a předá jej Loaderu.

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

Velké programy se někdy dělí na podprogramy, které se nazývají moduly . Když jsou tyto moduly kompilovány a sestavovány, generují se moduly objektů zdrojového programu. Linker je zodpovědný za kombinování / propojení všech modulů objektů za účelem generování jednoho spustitelného souboru zdrojového programu. Máme dva typy linkerů.

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

Dynamický linker : Odmítá / odloží propojení některých externích modulů, dokud není vygenerován zaváděcí modul / spustitelný modul. Zde se provádí propojení během načítání nebo běhu.

Definice zavaděče

Vzhledem k tomu, že program, který má být právě proveden, musí být uložen v hlavní paměti počítače. Zavaděč, program v operačním systému, je odpovědný za 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řiblížení:

  • Absolutní zatížení
  • Přemístitelné zatížení
  • Dynamické zatížení při běhu

Absolutní načítání : Tento přístup pokaždé načte spustitelný soubor programu do stejného umístění hlavní paměti . Má však určité nevýhody, jako je třeba, aby si programátor uvědomoval strategii přiřazování modulů do hlavní paměti. V případě, že má být program změněn, což zahrnuje určité vložení a vymazání v programu, pak musí být změněny všechny adresy programu.

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

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

Klíčové rozdíly mezi linkerem a zavaděčem

  1. Klíčovým rozdílem mezi linkerem a zavaděčem je, že linker generuje spustitelný soubor programu, zatímco zavaděč načte spustitelný soubor získaný z linkeru do hlavní paměti pro provedení .
  2. Linker zavádí objektový modul programu generovaného assemblerem. Zavaděč však zavádí spustitelný modul generovaný linkerem.
  3. Linker kombinuje všechny objektové moduly programu pro generování spustitelných modulů a také propojuje knihovní funkci v objektovém modulu s vestavěnými knihovnami programovacího jazyka vysoké úrovně. Na druhé straně, zavaděč přiděluje prostor spustitelnému modulu v hlavní paměti.
  4. Linker lze klasifikovat jako editor propojení a dynamický linker, zatímco zavaděč lze klasifikovat jako absolutní zavaděč, přemístitelný zavaděč 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 načten zavaděč do hlavní paměti pro provedení.

Top