Rozdíl mezi linkerem a Loaderem
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.
- Srovnávací tabulka
- Definice
- Klíčové rozdíly
- Závěr
Srovnávací tabulka
Základ pro srovnání | Linker | Nakladač |
---|---|---|
Základní | Generuje spustitelný modul zdrojového programu. | Načte spustitelný modul do hlavní paměti. |
Vstup | Vezme jako vstup kód objektu generovaný assemblerem. | Trvá spustitelný modul generovaný linkerem. |
Funkce | Kombinuje 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řístup | Editor 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.
- 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í.
- Linker nasává objektový modul programu generovaného assemblerem. Nakladač však nasává spustitelný modul generované linkerem.
- 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.
- 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í.