Összehasonlító táblázat
Az összehasonlítás alapja | linker | loader |
---|---|---|
Alapvető | Ez generálja a forrásprogram futtatható modulját. | Ez betölti a futtatható modult a fő memóriába. |
Bemenet | Bevitelként az összeszerelő által létrehozott objektumkódot veszi figyelembe. | A linker által generált végrehajtható modult vesz igénybe. |
Funkció | A forráskód összes objektummodulját egyesíti egy végrehajtható modul létrehozásához. | A címeket a futtatható modulhoz egy futtatható modulhoz rendeli. |
Típus / Megközelítés | Kapcsolatszerkesztő, dinamikus linker. | Abszolút betöltés, áthelyezhető betöltés és dinamikus futtatási idő. |
A linker meghatározása
Az összeszerelő létrehoz egy forrásprogram objektumkódját, és átadja a linkernek. A linker ezt az objektumkódot veszi fel, és létrehozza a program futtatható kódját, és átadja a Loadernek.
A magas szintű nyelv, a programok tartalmazhatnak beépített könyvtárakat és fejlécfájlokat . A forrásprogram tartalmazhat néhány könyvtárfunkciót, amelyek meghatározása a beépített könyvtárakban tárolódik. A linker ezeket a funkciókat a beépített könyvtárakhoz kapcsolja. Abban az esetben, ha a beépített könyvtárak nem találhatók meg, akkor erről tájékoztatja a fordítót, majd a fordító generálja a hibát.
Néha a nagy programokat az alprogramokra osztják, amelyeket moduloknak neveznek. Most, amikor ezeket a modulokat összeállítják és összeszerelik, a forrásprogram objektummoduljai jönnek létre. A linker feladata az összes objektummodul egyesítése / összekapcsolása a forrásprogram egyetlen végrehajtható fájljának létrehozásához. Kétféle linkerünk van.
Linkage Editor : Ez egy linker, amely létrehozza az áthelyezhető, végrehajtható modult.
Dinamikus hivatkozás : Megakadályozza / elhalasztja egyes külső modulok összeköttetését, amíg a terhelési modul / futtatható modul létrejön. Itt a linkelés a betöltési idő vagy a futási idő alatt történik.
A Loader meghatározása
Mivel a végrehajtandó programnak jelenleg a számítógép fő memóriájában kell lennie. A rakodó felelőssége, egy operációs rendszerben lévő program feladata a linker által generált program futtatható fájljának / moduljának betöltése a fő memóriába végrehajtásra. A memóriaterületet a fő memóriában lévő végrehajtható modulra osztja.
Háromféle betöltési módszer létezik:
- Abszolút betöltés
- Áthelyezhető betöltés
- Dinamikus futásidő betöltés
Abszolút betöltés : Ez a megközelítés minden alkalommal betölti a program futtatható fájlját ugyanazon fő memóriahelyre . De van néhány hátránya, mint például, hogy a programozónak tisztában kell lennie a moduloknak a fő memóriába való betöltéséhez szükséges hozzárendelési stratégiával. Abban az esetben, ha a programot módosítani kell a programba történő beillesztéssel és törléssel, akkor a program minden címét módosítani kell.
Áthelyezhető betöltés: Ebben a megközelítésben a fordító vagy az összeszerelő nem hoz létre tényleges fő memóriacímet . A relatív címeket hozza létre.
Dinamikus futási idő betöltése : Ebben a megközelítésben a program abszolút címét generálják, amikor egy végrehajtható modul utasítását ténylegesen végrehajtják. Nagyon rugalmas, a betölthető modul / futtatható modul betölthető a fő memóriába . A végrehajtó program megszakítható, és ezúttal másik fő memória-címre cserélhető ki a lemezre és vissza a fő memóriára.
A Linker és a Loader közötti különbségek
- A linker és a loader közötti különbség az, hogy a linker egy program futtatható fájlját generálja, míg a betöltő betölti a linkerből kapott futtatható fájlt a fő memóriába végrehajtás céljából .
- A linker befogadja az összeszerelő által létrehozott program objektummodulját . Azonban a rakodó befogadja a linker által létrehozott végrehajtható modult .
- A linker egyesíti a program összes objektummodulját a végrehajtható modulok létrehozásához, és az objektummodul könyvtárfunkcióját is összekapcsolja a beépített könyvtárakkal a magas szintű programozási nyelvhez. Másrészt a betöltő helyet foglal el egy futtatható modulhoz a fő memóriában.
- A linker összekapcsolható szerkesztőként és dinamikus linkerként, míg a rakodót abszolút betöltőnek, áthelyezhető rakodónak és dinamikus futásidő- betöltőnek lehet osztályozni.
Következtetés:
A linker egy program objektummodulját veszi az összeszerelőtől, és összekapcsolja őket egy program végrehajtható moduljának létrehozásához. A futtatható modult ezután betölti a betöltő a fő memóriába a végrehajtáshoz.