Srovnávací graf
Základ pro porovnání | Linker | Zavaděč |
---|---|---|
Základní | Generuje spustitelný modul zdrojového programu. | Načte spustitelný modul do hlavní paměti. |
Vstup | Je to jako vstup, objektový kód generovaný assemblerem. | Trvá spustitelný modul generovaný linkerem. |
Funkce | Kombinuje 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
- 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í .
- Linker zavádí objektový modul programu generovaného assemblerem. Zavaděč však zavádí spustitelný modul generovaný linkerem.
- 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.
- 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í.