Linking

Verknüpfung ist der Prozess der Integration der verschiedenen Module in dem ein Programm Bezug nimmt, um eine ausführbare Einheit. Der Linker ein Programm, das die Verbindung zwischen der Programmobjekt macht, also die Übersetzung des Quellcodes in Maschinensprache und Bibliotheken der für die Ausführung des Programms erforderlichen Sprache.

In der IBM-Mainframe als OS / 360 dieses Programm heißt Binder.

In den Unix-Varianten ist es oft synonym mit dem Begriff loader Linker verwendet.
Aufgrund dieser Begriffsverwirrung zwischen dem Prozess zur Compile-Zeit und der Laufzeit, wird der Linker diese Stimme für die erste und für die zweite Lade verwenden.

Betrieb

Die Objektcodes sind Programmteile sowohl Maschinencode enthalten, dass die Informationen an den Linker. Diese Informationen sind hauptsächlich in der Form von Symboldefinitionen, die von zwei Typen sind:

  • Die definierten Symbol oder exportiert sind Symbole, die die Funktionen oder jene Variablen, die in dem Modul vorhanden sind, und die Betreiber sind für die Verwendung durch andere Module zur Verfügung gestellt.
  • Die Symbole sind nicht definiert oder importiert werden Funktionen aufgerufen, oder Variablen, auf die verwiesen werden, zu diesem Thema, und doch sind intern nicht definiert, sondern werden in anderen Modulen definiert.

Die Aufgabe des Linkers ist es, Verbindungen zu undefinierten Symbole zu beheben, zu finden, was andere Modul, das sie definiert; und dann in Ersetzen jedes Platzhalter durch den tatsächlichen Adresse des Symbols.

Eine Reihe von Software-Module bereit, die von anderen Programmen verwendet werden kann, wird als "Bibliothek". Eine Bibliothek ist dann ein Satz von Modulen in einem einzigen Container-Datei zusammengefügt. Der Linker kann die in den Bibliotheken enthaltenen Softwaremodule zu verwenden. Einige Linker umfasst nicht die gesamte Bibliothek in den Programmausgang, sondern nur die Teile, die notwendig sind, weil von einem anderen Objekt-Code oder andere Bibliotheken verwiesen. Es gibt Bibliotheken für verschiedene Zwecke; Typischerweise sind die am häufigsten verwendeten Bibliotheken automatisch implizit verwendet, während die stärker spezialisierten explizit vom Programmierer angegeben werden.

Der Linker außerdem für die Verteilung von Software in den Adressraum des Programms. Dies kann erfordern, Bewegen Code von einem bestimmten Basisadresse in ein anderes; Dies ist eine wichtige Aufgabe, weil ein Codesegment bewegen sich von einer Adresse zur anderen benötigt, um neu zu berechnen und alle Adressen, die mit diesem Code weisen zu ändern. Da in der Regel der Compiler nicht weiß, wo er in den Code für ein bestimmtes Modul befinden, nimmt der Compiler eine feste Adresse, an die dann geändert werden, wenn alle Module in einer einzigen ausführbaren Codes kombiniert werden. Verschieben eines Codesegment von einer Adresse in eine andere wird als "Umsiedlung" und kann Neuberechnung der in den absoluten Sprunganweisungen oder den Anweisungen verwendet Adressen benötigen zum Laden oder Speichern von Daten im Speicher.

Das ausführbare Programm vom Linker erzeugt werden, können weitere Verlagerung erforderlich, wenn das Programm in den Speicher geladen. Dieser Schritt wird auf Computern, die eine virtuelle Speichersystem erforderlich ist; in diesem Computer jedes Programm zur Verfügung, um seinen eigenen privaten Adressraum. In Systemen mit virtuellem Speicher alle Programme die gleiche Basisadresse, ohne dass es zu einem Konflikt zwischen verschiedenen Programmen

Dynamic Link

Moderne Betriebssysteme bieten die dynamische Verknüpfung, dh die Auflösung der undefinierte Symbole verschoben, bis das Programm nicht läuft. Dies bedeutet, dass die ausführbare Datei enthält undefinierte Symbole und eine Liste von Objekten oder Bibliotheken, die die Definition zur Verfügung stellen kann. Ausführen des Programms zu laufen geladen diese Objekte / Bibliotheken und siedelten die endgültige Verbindung.
Dieser Ausführungsmodus bietet zwei Vorteile:

  • Bibliotheken weit verbreitet in einer Stelle gespeichert werden, und nicht jede Anfrage zu duplizieren;
  • Wenn es aktualisiert und ersetzt eine Bibliothek von Funktionen, alle Programme, die dynamisch verwenden zu aktualisieren, sobald sie abgespielt empfangen. Umgekehrt muss Programme, die diese Funktionen mit statischen Verweis auch eine neue Pass Binder / loader zu unterziehen.
  0   0
Vorherige Artikel Weihnachts Froglia
Nächster Artikel Shitfun

Kommentare - 0

Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha