Empfohlen, 2024

Tipp Der Redaktion

Unterschied zwischen Linker und Loader

Linker und Loader sind die Hilfsprogramme, die bei der Ausführung eines Programms eine wichtige Rolle spielen. Der Quellcode eines Programms durchläuft vor der Ausführung Compiler, Assembler, Linker und Loader in der jeweiligen Reihenfolge. Einerseits nimmt der Linker die vom Assembler generierten Objektcodes auf und kombiniert sie, um das ausführbare Modul zu generieren. Auf der anderen Seite lädt der Loader dieses ausführbare Modul zur Ausführung in den Hauptspeicher. Lassen Sie uns den Unterschied zwischen Linker und Loader anhand einer Vergleichstabelle diskutieren.

Vergleichstabelle

VergleichsgrundlageLinkerLader
BasicEs generiert das ausführbare Modul eines Quellprogramms.Es lädt das ausführbare Modul in den Hauptspeicher.
EingangAls Eingabe wird der von einem Assembler generierte Objektcode verwendet.Es benötigt ein ausführbares Modul, das von einem Linker generiert wird.
FunktionEs kombiniert alle Objektmodule eines Quellcodes, um ein ausführbares Modul zu generieren.Es ordnet die Adressen einem ausführbaren Modul im Hauptspeicher zur Ausführung zu.
Typ / AnsatzLinkage Editor, Dynamischer Linker.Absolute Beladung, verlagerbare Beladung und dynamische Laufzeitbeladung.

Definition von Linker

Der Assembler generiert den Objektcode eines Quellprogramms und übergibt ihn dem Linker. Der Linker übernimmt diesen Objektcode, generiert den ausführbaren Code für das Programm und übergibt ihn dem Loader.

Die Hochsprache-Programme verfügen über einige integrierte Bibliotheken und Header-Dateien . Das Quellprogramm kann einige Bibliotheksfunktionen enthalten, deren Definition in den integrierten Bibliotheken gespeichert ist. Der Linker verknüpft diese Funktion mit den integrierten Bibliotheken. Falls die eingebauten Bibliotheken nicht gefunden werden, informieren sie den Compiler und der Compiler generiert dann den Fehler.

Manchmal sind die großen Programme in Unterprogramme unterteilt, die als Module bezeichnet werden . Wenn diese Module jetzt kompiliert und zusammengestellt werden, werden die Objektmodule des Quellprogramms generiert. Der Linker hat die Aufgabe, alle Objektmodule zu kombinieren / zu verknüpfen, um eine einzige ausführbare Datei des Quellprogramms zu erzeugen. Wir haben zwei Arten von Linkern.

Linkage Editor : Ein Linker, der das verschiebbare, ausführbare Modul generiert.

Dynamic Linker : Es verzögert / verschiebt die Verknüpfung einiger externer Module, bis das Lademodul / ausführbare Modul generiert wird. Hier erfolgt das Verknüpfen während der Ladezeit oder der Laufzeit.

Definition von Lader

Das aktuell auszuführende Programm muss sich im Hauptspeicher des Computers befinden. Der Loader, ein Programm in einem Betriebssystem, ist dafür verantwortlich, die ausführbare Datei / das aus einem Linker generierte Programm eines Programms zur Ausführung in den Hauptspeicher zu laden. Es ordnet den Speicherplatz dem ausführbaren Modul im Hauptspeicher zu.

Es gibt drei Arten des Ladens:

  • Absolutes Laden
  • Versetzbare Beladung
  • Dynamisches Laden der Laufzeit

Absolutes Laden : Bei diesem Ansatz wird die ausführbare Datei eines Programms jedes Mal in den gleichen Hauptspeicherort geladen . Es hat jedoch einige Nachteile, da ein Programmierer die Zuweisungsstrategie für das Laden der Module in den Hauptspeicher kennen muss. Falls das Programm durch Einfügen und Löschen im Programm geändert werden soll, müssen alle Programmadressen geändert werden.

Verschiebbares Laden: Bei diesem Ansatz erzeugt der Compiler oder Assembler keine tatsächliche Hauptspeicheradresse . Es erzeugt die relativen Adressen.

Dynamisches Laden der Laufzeit : Bei diesem Ansatz wird die absolute Adresse für ein Programm generiert, wenn eine Anweisung eines ausführbaren Moduls tatsächlich ausgeführt wird. Es ist sehr flexibel, das ladbare Modul / ausführbare Modul kann in jeden Bereich des Hauptspeichers geladen werden . Das ausführende Programm kann zwischendurch unterbrochen werden und kann diesmal unter einer anderen Hauptspeicheradresse auf die Festplatte und zurück in den Hauptspeicher ausgelagert werden.

Hauptunterschiede zwischen Linker und Loader

  1. Der Hauptunterschied zwischen Linker und Loader besteht darin, dass der Linker die ausführbare Datei eines Programms generiert, während der Loader die aus dem Linker abgerufene ausführbare Datei zur Ausführung in den Hauptspeicher lädt.
  2. Der Linker nimmt das Objektmodul eines vom Assembler erzeugten Programms auf. Der Loader nimmt jedoch das vom Linker generierte ausführbare Modul auf .
  3. Der Linker kombiniert alle Objektmodule eines Programms, um ausführbare Module zu generieren. Er verknüpft auch die Bibliotheksfunktion im Objektmodul mit integrierten Bibliotheken der übergeordneten Programmiersprache. Auf der anderen Seite weist der Loader einem ausführbaren Modul im Hauptspeicher Speicherplatz zu.
  4. Der Linker kann als Linkage-Editor und dynamischer Linker klassifiziert werden, während Loader als absoluter Loader, verlagerbarer Loader und dynamischer Laufzeit-Loader klassifiziert werden kann.

Fazit:

Der Linker entnimmt dem Assembler die Objektmodule eines Programms und verknüpft sie, um ein ausführbares Modul eines Programms zu erzeugen. Das ausführbare Modul wird dann vom Loader zur Ausführung in den Hauptspeicher geladen.

Top