Rozdiel medzi linkerom a Loaderom
Obsah
Linker a Loader sú pomocné programy, ktoré zohrávajú hlavnú úlohu pri vykonávaní programu. Zdrojový kód programu prechádza kompilátorom, zostavovačom, linkerom, zavádzačom v príslušnom poradí pred vykonaním. Na jednej strane, kde linker zavedie kódy objektov generované zostavovačom a skombinuje ich na vygenerovanie spustiteľného modulu. Na druhej strane loader načíta tento spustiteľný modul do hlavnej pamäte na vykonanie. Poďme diskutovať o rozdieloch medzi Linkerom a zavádzačom pomocou porovnávacej tabuľky.
- Porovnávacia tabuľka
- definícia
- Kľúčové rozdiely
- záver
Porovnávacia tabuľka
Základ pre porovnanie | spojovacie | loader |
---|---|---|
základné | Generuje spustiteľný modul zdrojového programu. | Načíta spustiteľný modul do hlavnej pamäte. |
vstup | Berie ako vstup kód objektu vygenerovaný zostavovateľom. | Trvá spustiteľný modul vygenerovaný linkerom. |
funkcie | Kombinuje všetky objektové moduly zdrojového kódu a vytvára spustiteľný modul. | Na vykonanie vykoná pridelenie adries spustiteľnému modulu v hlavnej pamäti. |
Typ / Approach | Editor odkazov, dynamický linker. | Absolútne zaťaženie, premiestniteľné načítanie a dynamické načítanie za behu. |
Definícia linkera
Assembler generuje kód objektu zdrojového programu a odovzdá ho linkerovi. Linker vezme tento kód objektu a vygeneruje spustiteľný kód pre program a odovzdajte ho nakladaču.
Niektoré jazyky majú programy vysokej úrovne vstavané knižnice a hlavičkové súbory, Zdrojový program môže obsahovať niektoré funkcie knižnice, ktorých definícia je uložená vo vstavaných knižniciach. Linker tieto funkcie spája so vstavanými knižnicami. Ak sa zabudované knižnice nenájdu, informujú o tom kompilátor a kompilátor potom vygeneruje chybu.
Veľké programy sa niekedy rozdelia na podprogramy, ktoré sa nazývajú moduly, Teraz, keď sa tieto moduly zostavia a zostavia, vygenerujú sa objektové moduly zdrojového programu. Linker je zodpovedný za kombinovanie / prepájanie všetkých objektových modulov na generovanie jedné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á prepojenie niektorých externých modulov, kým sa nevytvorí záťažový modul / spustiteľný modul. V tomto prípade sa prepojenie vykonáva počas doby načítania alebo spustenia.
Definícia nakladača
Pretože program, ktorý sa má vykonať, musí byť v hlavnej pamäti počítača. Je zodpovednosťou úradu loader, program v operačnom systéme na načítanie spustiteľného súboru / modulu programu generovaného linkerom do hlavnej pamäte na vykonanie. Pridelí pamäťový priestor spustiteľnému modulu v hlavnej pamäti.
Existujú tri druhy prístupov k načítaniu:
- Absolútne zaťaženie
- Premiestniteľné zaťaženie
- Dynamické načítanie za behu
Absolútne zaťaženie: Tento prístup načíta spustiteľný súbor programu do a rovnaké hlavné miesto v pamäti zakaždým. Ale má nejaké nevýhody ako programátor si musí byť vedomý stratégie priradenia pre načítanie modulov do hlavnej pamäte. V prípade, že je potrebné program modifikovať tak, že do programu bude vložené a vymazané, musia sa zmeniť všetky adresy programu.
Premiestniteľné zaťaženie: V tomto prístupe kompilátor alebo zostavovateľ áno nevytvára skutočnú adresu hlavnej pamäte, Vytvára relatívne adresy.
Dynamické načítanie za behu: Pri tomto prístupe sa absolútna adresa programu vygeneruje, keď sa skutočne vykoná inštrukcia spustiteľného modulu. Je veľmi flexibilný, do ktorého sa dá načítať modul / spustiteľný modul ľubovoľná oblasť hlavnej pamäte, Vykonávací program sa môže medzi nimi prerušiť a možno ho vymeniť na disk a späť do hlavnej pamäte na inú adresu hlavnej pamäte.
- Kľúčový rozdiel medzi linkerom a zavádzačom je v tom, že linker generuje spustiteľný súbor programu, zatiaľ čo zavádzač načíta spustiteľný súbor získaný z linkera hlavná pamäť na vykonanie.
- Linker nasáva objektový modul programu generovaného zostavovateľom. Nakladač však vstupuje do systému spustiteľný modul generované linkerom.
- Linker kombinuje všetky objektové moduly programu, ktorý sa má vygenerovať spustiteľné moduly tiež spája internetový obchod funkcia knižnice v objektovom module na vstavané knižnice programovacieho jazyka na vysokej úrovni. Na druhej strane nakladač alokuje priestor spustiteľnému súboru modul v hlavnej pamäti.
- Linker možno klasifikovať ako editor odkazov, a dynamický linker keďže nakladač možno klasifikovať ako absolútny nakladač, premiestniteľný nakladač a dynamický nakladač za behu.
záver:
Linker vezme objektové moduly programu z assemblera a spojí ich dohromady, aby vygeneroval spustiteľný modul programu. Spustiteľný modul je potom načítaný zavádzačom do hlavnej pamäte na vykonanie.