Ajánlott, 2024

Szerkesztő Választása

A Linker és a Loader közötti különbség

A Linker és a Loader azok a segédprogramok, amelyek fontos szerepet játszanak a program végrehajtásában. A program forráskódja a fordítón, az összeszerelőn, a linkeren, a rakodógépen halad át a megfelelő sorrendben, a végrehajtás előtt. Egyrészt, ahol a linker befogadja az összeszerelő által generált objektumkódokat és egyesíti azokat a végrehajtható modul létrehozásához. Másrészről a rakodó betölti ezt a futtatható modult a fő memóriába végrehajtás céljából. Beszéljük meg a különbséget a Linker és a loader között egy összehasonlító táblázat segítségével.

Összehasonlító táblázat

Az összehasonlítás alapjalinkerloader
AlapvetőEz generálja a forrásprogram futtatható modulját.Ez betölti a futtatható modult a fő memóriába.
BemenetBevitelké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ésKapcsolatszerkesztő, 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

  1. 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 .
  2. A linker befogadja az összeszerelő által létrehozott program objektummodulját . Azonban a rakodó befogadja a linker által létrehozott végrehajtható modult .
  3. 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.
  4. 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.

Top