Unterschied zwischen Linker und Loader

Autor: Laura McKinney
Erstelldatum: 3 April 2021
Aktualisierungsdatum: 8 Kann 2024
Anonim
Various stages of program execution | Assembler, Linker & Loader | Log2Base2
Video: Various stages of program execution | Assembler, Linker & Loader | Log2Base2

Inhalt


Linker und Loader sind die Dienstprogramme, die bei der Ausführung eines Programms eine wichtige Rolle spielen. Der Quellcode eines Programms durchläuft vor der Ausführung den Compiler, Assembler, Linker und Loader in der jeweiligen Reihenfolge. Auf der einen Seite, wo die Linker nimmt die vom Assembler generierten Objektcodes auf und kombiniert sie, um das ausführbare Modul zu generieren. Auf der anderen Seite die Lader Lädt dieses ausführbare Modul zur Ausführung in den Hauptspeicher. Erörtern wir den Unterschied zwischen Linker und Loader anhand einer Vergleichstabelle.

  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Fazit

Vergleichstabelle

Grundlage für den VergleichLinkerLader
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 werden ausführbare Module benötigt, die von einem Linker generiert wurden.
FunktionEs kombiniert alle Objektmodule eines Quellcodes, um ein ausführbares Modul zu generieren.Es weist die Adressen einem ausführbaren Modul im Hauptspeicher zur Ausführung zu.
Typ / AnsatzVerknüpfungseditor, dynamischer Linker.Absolutes Laden, verlagerbares Laden und dynamisches Laden zur Laufzeit.


Definition von Linker

Der Assembler generiert den Objektcode eines Quellprogramms und übergibt ihn an den Linker. Der Linker nimmt diesen Objektcode und generiert den ausführbarer Code für das Programm, und übergeben Sie es an den Loader.

Die Hochsprachenprogramme haben einige eingebaute Bibliotheken und Header-Dateien. Das Quellprogramm enthält möglicherweise einige Bibliotheksfunktionen, deren Definition in den integrierten Bibliotheken gespeichert ist. Der Linker verknüpft diese Funktion mit den eingebauten Bibliotheken. Falls die eingebauten Bibliotheken nicht gefunden werden, informiert es den Compiler und der Compiler generiert dann den Fehler.

Manchmal werden die großen Programme in die aufgerufenen Unterprogramme aufgeteilt Module. Wenn diese Module kompiliert und zusammengestellt werden, werden die Objektmodule des Quellprogramms generiert. Der Linker ist dafür verantwortlich, alle Objektmodule zu kombinieren / zu verknüpfen, um eine einzige ausführbare Datei des Quellprogramms zu generieren. Wir haben zwei Arten von Linkern.


Verknüpfungseditor: Es ist ein Linker, der das verschiebbare, ausführbare Modul generiert.

Dynamischer Linker: Es verschiebt / verschiebt die Verknüpfung einiger externer Module, bis das Lademodul / ausführbare Modul generiert wird. Hier erfolgt die Verknüpfung während der Lade- oder Laufzeit.

Definition von Lader

Da das aktuell auszuführende Programm im Hauptspeicher des Rechners liegen muss. Es liegt in der Verantwortung der Lader, ein Programm in einem Betriebssystem, um die vom Linker erzeugte ausführbare Datei / das ausführbare Modul 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 von Ladungsansätzen:

  • Absolutes Laden
  • Umsetzbare Verladung
  • Dynamisches Laden zur Laufzeit

Absolutes Laden: Dieser Ansatz lädt die ausführbare Datei eines Programms in ein gleicher Hauptspeicherplatz jedes Mal. Aber es hat einige nachteile Wie ein Programmierer muss er die Zuweisungsstrategie zum Laden der Module in den Hauptspeicher kennen. Wenn das Programm geändert werden soll, indem etwas in das Programm eingefügt und daraus gelöscht wird, müssen alle Adressen des Programms geändert werden.

Umsetzbare Beladung: Bei diesem Ansatz ist dies der Compiler oder Assembler keine tatsächliche Hauptspeicheradresse erzeugen. Es erzeugt die relativen Adressen.

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

  1. Der Hauptunterschied zwischen Linker und Loader besteht darin, dass der Linker die generiert ausführbar Datei eines Programms, wohingegen der Loader die ausführbare Datei lädt, die er vom Linker erhalten hat Hauptspeicher für die Ausführung.
  2. Der Linker nimmt die Objektmodul eines vom Assembler erzeugten Programms. Der Lader nimmt jedoch die ausführbares Modul vom Linker generiert.
  3. Der Linker kombiniert alle zu generierenden Objektmodule eines Programms ausführbare Module es verbindet auch die Bibliotheksfunktion im Objektmodul zu eingebaute Bibliotheken der höheren Programmiersprache. Auf der anderen Seite Lader Weist einer ausführbaren Datei Speicherplatz zu Modul im Hauptspeicher.
  4. Der Linker kann als klassifiziert werden Verknüpfungseditor, und dynamischer Linker Lader kann klassifiziert werden als Absolutlader, verlagerbarer Lader und dynamischer Runtime Loader.

Fazit:

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