Linker (Computerwissenschaft)

In der Informatik, einem linker oder dem Verbindungsredakteur ist ein Programm, das einen oder mehr Gegenstände nimmt, die durch einen Bearbeiter erzeugt sind, und sie in ein einzelnes rechtskräftiges Programm verbindet.

In Großrechner-Umgebungen von IBM wie OS/360 ist dieses Programm als ein Verbindungsredakteur bekannt.

Auf Unix Varianten wird der Begriff Lader häufig als ein Synonym für linker gebraucht. Andere Fachsprache war im Gebrauch auch. Zum Beispiel auf SINTRAN III wurde der Prozess, der durch einen linker durchgeführt ist (Gegenstand-Dateien in ein Programm sammelnd), genannt (als im Laden rechtskräftigen Codes auf eine Datei) ladend. Weil dieser Gebrauch die Unterscheidung zwischen dem Übersetzungszeit-Prozess und dem Laufzeitprozess verschmiert, wird dieser Artikel Verbindung für den ersteren und das Laden für die Letzteren verwenden. Jedoch in einigen Betriebssystemen behandelt dasselbe Programm sowohl die Jobs der Verbindung als auch das Laden eines Programms; sieh dynamische Verbindung.

Übersicht

Computerprogramme umfassen normalerweise mehrere Teile oder Module; alle diese Teile/Module brauchen innerhalb einer einzelnen Gegenstand-Datei nicht enthalten zu werden, und in solchem Fall beziehen sich auf einander mittels Symbole. Gewöhnlich kann eine Gegenstand-Datei drei Arten von Symbolen enthalten:

  • definierte Symbole, die ihm erlauben, durch andere Module, genannt zu werden
  • unbestimmte Symbole, die die anderen Module nennen, wo diese Symbole, und definiert werden
  • lokale Symbole, verwendet innerlich innerhalb der Gegenstand-Datei, um Wiederposition zu erleichtern.

Wenn ein Programm vielfache Gegenstand-Dateien umfasst, verbindet der linker diese Dateien in ein vereinigtes rechtskräftiges Programm, die Symbole auflösend, weil es vorwärts geht.

Linkers kann Gegenstände von einer Sammlung genannt eine Bibliothek nehmen. Einige linkers schließen die ganze Bibliothek in die Produktion nicht ein; sie schließen nur seine Symbole ein, in denen von anderen Gegenstand-Dateien oder Bibliotheken Verweise angebracht wird. Bibliotheken bestehen zu verschiedenen Zwecken, und eine oder mehr Systembibliotheken werden gewöhnlich in standardmäßig verbunden.

Der linker passt auch darauf auf, die Gegenstände in einem Adressraum eines Programms einzuordnen. Das kann umziehenden Code einschließen, der eine spezifische Grundadresse zu einer anderen Basis annimmt. Da ein Bearbeiter selten weiß, wo ein Gegenstand wohnen wird, nimmt es häufig eine feste Grundposition (zum Beispiel, Null) an. Das Verschieben des Maschinencodes kann mit dem Wiederzielen von absoluten Sprüngen, Lasten und Läden verbunden sein.

Die rechtskräftige Produktion durch den linker kann einen anderen Wiederpositionspass brauchen, wenn es schließlich ins Gedächtnis (kurz vor der Ausführung) geladen wird. Dieser Pass wird gewöhnlich auf der Hardware weggelassen, die virtuelles Gedächtnis anbietet - jedes Programm wird in seinen eigenen Adressraum gestellt, also gibt es keinen Konflikt, selbst wenn alle Programme an derselben Grundadresse laden.

Dieser Pass kann auch weggelassen werden, wenn das rechtskräftige eine Position unabhängig rechtskräftig ist.

Dynamische Verbindung

Viele Betriebssystemumgebungen erlauben dynamische Verbindung, die die Hinausschiebung der Auflösung von einigen unbestimmten Symbolen ist, bis ein Programm geführt wird. Das bedeutet, dass der rechtskräftige Code noch unbestimmte Symbole, plus eine Liste von Gegenständen oder Bibliotheken enthält, die Definitionen für diese zur Verfügung stellen werden. Das Laden des Programms wird diese Gegenstände/Bibliotheken ebenso laden, und eine Endverbindung durchführen.

Diese Annäherung bietet zwei Vorteile an:

  • Oft benutzte Bibliotheken (zum Beispiel die Standardsystembibliotheken) müssen in nur einer Position versorgt werden, die nicht in jeder einzelnen Dualzahl kopiert ist.
  • Wenn ein Fehler in einer Bibliotheksfunktion durch das Ersetzen der Bibliothek korrigiert wird, werden alle Programme damit dynamisch aus der Korrektur nach dem Wiederstarten von ihnen einen Nutzen ziehen. Programme, die diese Funktion durch die statische Verbindung eingeschlossen haben, würden zuerst wiederverbunden werden müssen.

Es gibt auch Nachteile:

  • Bekannt auf der Windows-Plattform als "DLL Hölle" wird ein unvereinbarer aktualisierter DLL executables brechen, der vom Verhalten des vorherigen DLL abgehangen hat.
  • Ein Programm, zusammen mit den Bibliotheken, die es verwendet, könnte (z.B betreffs der Genauigkeit, Dokumentationsvoraussetzungen oder Leistung) als ein Paket, aber nicht bescheinigt werden, wenn Bestandteile ersetzt werden können. (Das argumentiert auch gegen automatische OS-Aktualisierungen in kritischen Systemen; in beiden Fällen bilden der OS und die Bibliotheken einen Teil einer qualifizierten Umgebung.)

Entspannung

Da der Bearbeiter keine Information über das Lay-Out von Gegenständen in der Endproduktion hat, kann es nicht kürzer oder effizientere Instruktionen ausnutzen, die eine Voraussetzung an die Adresse eines anderen Gegenstands legen. Zum Beispiel kann eine Sprung-Instruktion in einer absoluten Adresse oder einem Ausgleich von der aktuellen Position Verweise anbringen, und der Ausgleich konnte mit verschiedenen Längen abhängig von der Entfernung zum Ziel ausgedrückt werden. Durch das Erzeugen der konservativsten Instruktion (gewöhnlich die größte relative oder absolute Variante, abhängig von der Plattform) und das Hinzufügen von Entspannungshinweisen, ist es möglich, kürzer oder effizientere Instruktionen während der Endverbindung zu vertreten. Dieser Schritt kann nur durchgeführt werden, nachdem alle Eingangsgegenstände gelesen worden sind und vorläufige Adressen zugeteilt haben; der Entspannungspass teilt nachher Adressen wiederzu, die der Reihe nach mehr Entspannungen erlauben können vorzukommen. Im Allgemeinen sind die eingesetzten Folgen kürzer, der diesem Prozess erlaubt, immer auf der besten Lösung gegeben eine feste Ordnung von Gegenständen zusammenzulaufen; wenn das nicht der Fall ist, können Entspannungen kollidieren, und der linker muss die Vorteile jeder Auswahl wiegen.

Siehe auch

  • kompilieren Sie und gehen Sie Lader
  • Dynamische Bibliothek
  • GNU linker
  • Bibliothek
  • Namendekoration
  • Gegenstand-Datei
  • Wiederposition
  • Wiederpositionstisch
  • Vorverbindung
  • Statische Bibliothek
Referenzen
  • David William Barron, Monteure und Lader. 1972, Elsevier.
  • C. W. Fraser und D. R. Hanson, Eine Maschine Unabhängiger Linker. Softwarepraxis und Erfahrung 12, 4 (April 1982).
  • IBM Corporation, System 360, Verbindungsredakteur, Programm-Logikhandbuch, 1967 http://www.bitsavers.org/pdf/ibm/360/Y28-6610_LinkEdit (E) _PLM.pdf Bedienend
  • Douglas W. Jones, Zusammenbau-Sprache als Gegenstand-Code. Softwarepraxis und Erfahrung 13, 8 (August 1983)
  • John R. Levine: Linkers und Loaders, Morgan-Kauffman, internationale Standardbuchnummer 1-55860-496-0. http://www.iecc.com/linker /
  • Leon Presser, John R. White: Linkers und Loaders. ACM Rechenüberblicke, Band 4, Nummer 3, September 1972, Seiten 149-167
http://www-inst.eecs.berkeley.edu/~cs162/sp06/hand-outs/p149-presser-linker-loader.pdf
  • Norman Ramsey, Maschineninstruktionen umsiedelnd, indem es mit Currysoße zubereitet wird. (1996)
http://citeseer.csail.mit.edu/58313.html
  • David Salomon, Monteure und Lader. 1993
http://www.davidsalomon.name/assem.advertis/asl.pdf

Links


Lois Lane / Symbol von Legendre
Impressum & Datenschutz