[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

DE69427174T2 - Dynamische Hochleistungsprogrammverknüpfung durch Cachespeicherung - Google Patents

Dynamische Hochleistungsprogrammverknüpfung durch Cachespeicherung

Info

Publication number
DE69427174T2
DE69427174T2 DE69427174T DE69427174T DE69427174T2 DE 69427174 T2 DE69427174 T2 DE 69427174T2 DE 69427174 T DE69427174 T DE 69427174T DE 69427174 T DE69427174 T DE 69427174T DE 69427174 T2 DE69427174 T2 DE 69427174T2
Authority
DE
Germany
Prior art keywords
library
program
programs
symbol
image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69427174T
Other languages
English (en)
Other versions
DE69427174D1 (de
Inventor
Graham Hamilton
Michael N. Nelson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE69427174D1 publication Critical patent/DE69427174D1/de
Application granted granted Critical
Publication of DE69427174T2 publication Critical patent/DE69427174T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

    HINTERGRUND DER ERFINDUNG Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf die Gebiete der verteilten Rechnersysteme, der Client-Server-Datenverarbeitung und der objekt-orientierten Programmierung.
  • HINTERGRUND
  • Ein Computerprogrammierer schreibt ein Programm, das Quellprogramm, in einer problemorientierten Sprache oder Sprache höheren Niveaus, welche üblicherweise Symbole für Adressen und spezielle Zeichen oder Akronyme für Operationscodes verwendet. Dieser Quellcode umfaßt einen Befehlssatz für den Computer und Daten, mit welchen oder an welchen die Befehle operieren sollen. Diese Befehle und Daten müssen in einen Speicher eines Computers an bestimmten Adressen geladen werden, damit der Computer den Programmprozeß ausführen kann. Damit dies geschehen kann, wird der Quellcode von einem Compiler verarbeitet, welcher binären Objektcode erzeugt, den ein Computer ausführen kann. Bevor der Computer dieses neu geschriebene Programm ausführen kann, muß das Programm durch verschiedene zusätzliche Schritte laufen, während welcher die Adressen in dem Programm auf verschiedene Weise dargestellt werden können. Der Compiler verbindet typischerweise die symbolischen Adressen des Quellcodes mit verschieblichen Adressen (wie beispielsweise 16 Bytes nach der Anfangsadresse des Programmes). Ein Verknüpfungseditor oder Lader verbindet wiederum diese verschieblichen Adressen mit absoluten Adressen (wie beispielsweise dem Speicherplatz 64216). Jede Verbindung oder Verknüpfung ist eine Abbildung aus einem Adreßraum in einen anderen. Diese Verbindung (binding) der Befehle und Daten mit Speicheradressen kann entweder zur Kompilationszeit, zur Ladezeit oder zur Programmausführungszeit ausgeführt werden.
  • Es wird auf Fig. 1 Bezug genommen, in der die verschiedenen oben beschriebenen Schritte veranschaulicht sind. Das Quellprogramm 1 wird von einem Compiler 2 verarbeitet, der ein Objektcodemodul 3 erzeugt. Dieses Objektcodemodul 3 wird, grundsätzlich zusammen mit weiteren zuvor kompilierten Objektmodulen 4, durch einen Verknüpfungseditor 5 verarbeitet, um ein Lademodul 6 zu erzeugen. Das Lademodul 6 und irgendwelche erforderlichen Systembibliotheken 7 werden von einem Lader 8 verarbeitet, der ein im Speicher befindliches binäres Abbild 10 des ursprünglichen Programms und seiner zugehörigen Module und Bibliotheken erzeugt. Dieses binäre Im-Speicher-Abbild 10 kann jetzt von dem Computer ausgeführt werden.
  • Es wird weiter auf Fig. 1 Bezug genommen; wenn es zur Kompilierzeit 12 bekannt ist, wo das Programm sich im Speicher aufhalten wird, werden diese Programme mit einem absoluten Code für die Adressen kompiliert. In den meisten Fällen ist es jedoch zur Kompilierzeit nicht bekannt, wo sich das Programm im Speicher aufhalten wird, und der Compiler muß einen verschieblichen Code für die Speicheradressen erzeugen. In diesem Fall werden die endgültigen Bindungen oder Verknüpfungen der Speicherplätze mit den Adressen entweder bis zur Ladezeit 13 oder bis zur Ausführungszeit 14 verzögert. Einige moderne Systeme verzögern diese Adreßverknüpfung bis zur Ausführungszeit 14, wenn das Programmabbild während seiner Ausführung aus einem Speichersegment zu einem anderen bewegt werden kann oder wenn die Programmstartkosten nicht sehr hoch sind, weil die Programmabbilder wenige verschiebliche Adressen enthalten, wie beispielsweise bei positionsunabhängigen Code (PIC; Position Independent Code). PIC ist ein von einigen Compilern erzeugter Code, welcher irgendwo im Speicher angeordnet werden kann, da sämtliche Speicherbezugnahmen relativ zu dem Befehlszähler gemacht werden.
  • Moderne Computerbetriebssysteme sind so ausgebildet, daß sie die Verwendung des Speicherraums optimieren und die Benutzerwartezeit minimieren. Bei dem Adreßverknüpfungs/Programmladeprozeß wird dies durch ein dynamisches Laden der Programmobjektmodule nur dann, wenn sie tatsächlich von einem anderen Modul aufgerufen werden, und durch dynamisches Verknüpfen eines Objektmoduls mit seinen Systembibliotheksroutinen nur dann, wenn sie erforderlich sind, ausgeführt. Bei diesen Fällen wird das Hauptprogramm in den Speicher geladen und ausgeführt, und unterstützende Objektmodule oder Systembibliotheken werden nicht geladen, bis sie von dem Hauptprogramm aufgerufen werden, wodurch Speicherraum und Ladezeit auf Kosten einer Programmstartzeit eingespart werden. Auch Systembibliotheken, welche sich voraussichtlich bereits im Speicher aufhalten, können dynamisch mit dem ausführenden Hauptprogramm verknüpft werden, wenn sie aufgerufen werden, wodurch es nicht erforderlich ist, daß eine Kopie der Systembibliotheken mit jedem Hauptprogramm zur Ladezeit verknüpft und geladen wird, was wiederum Speicherraum spart, allerdings auf Kosten einiger Programmstartzeit und einiger Ausführungszeit. Beim dynamischen Verknüpfen ist ein Stumpf (stub) in dem Abbild für jede Bibliotheksroutinenreferenz enthalten. Dieser Stumpf ist ein kleiner Teil des Codes, der anzeigt, wie die richtige speicherresidente Bibliotheksroutine lokalisiert werden soll. Wenn der Stumpf ausgeführt wird, ersetzt er sich selbst durch die Adresse der Routine und führt die Routine aus. Bei diesem Schema verwenden sämtliche Programme, die eine Bibliotheksroutine benutzen, die gleiche Kopie des Bibliothekscodes.
  • Um einen maximalen Vorteil aus der dynamischen Verknüpfung und dem dynamischen Laden zu ziehen, müssen Programmcompiler so ausgebildet sein, daß sie die erforderlichen verschieblichen Adreßreferenzen, den Subroutinenstumpfcode und effizienten PIC-Code erzeugen. Unglücklicherweise können vorhandene Compiler für objekt orientierte Programmmodule einen solchen Code nicht effizient erzeugen. Beispielsweise erzeugen der cfront 3.0-preprocessor und der G++-Compiler virtuelle Funktionstabellen als initialisierte Datenstrukturen, welche voll von Bezugnahmen (Referenzen) auf verschiebliche Symbole sind. So ist die Anzahl der verschieblichen Symbole bei objekt-orientierten Programmmodulen viel höher als bei herkömmlicheren Programmmodulen, und die zum dynamischen Verknüpfen dieser Module erforderliche Programmstartverzögerung kann auf ein nicht akzeptables Niveau infolge der Anzahl der Verschiebungen ansteigen. Folglich ist ein System erforderlich, das eine effiziente dynamische Verknüpfung von Programmmodulen bei einer großen Anzahl verschieblicher Symbole zur Verfügung stellt.
  • Außerdem offenbart das IBM Journal of Research and Development, Band 34, No. 1, 1. Januar 1990, Seiten 98-103, eine mögliche Programmbibliothek in einem Artikel mit dem Titel "Managing Programs and Library's in AIX Version 3 for RISC System/6000 Processors" von M. A. Auslander.
  • Die vorliegende Erfindung, wie sie in den anhängigen Ansprüchen definiert ist, schafft eine elegante Lösung für dieses Problem, indem verknüpfte Programmabbilder und darüber hinaus partiell verknüpfte Bibliotheksprogramme cachegespeichert werden.
  • ZUSAMMENFASSENDE DARSTELLUNG DER ERFINDUNG
  • Die vorliegende Erfindung füllt dieses Erfordernis einer Minimierung der von der Verknüpfung neuer objektorientierter Programme verursachten Systemverzögerung aus, indem sie ein elegantes und effizientes System der Cache-Speicherung vollständig verbundener Programmabbilder zusammen mit ihren Systembibliotheksmodulen einrichtet und indem sie eine zweite Ebene von Caches zum Cache-Speichern verschieblicher Systembibliotheksprogramme, deren Adressen provisorisch fixiert (zum Teil verknüpft) werden, einrichtet und indem sie diese Cache-Speicher verwendet, um vollständig verknüpfte oder partiell verknüpfte Module zu liefern, wenn ein Aufruf zu einem anderen Programm/einer anderen Routine gemacht wird. Somit überprüft das System, wenn eine neue Anwendung verknüpft werden soll, zunächst den Abbild-Cache um nachzusehen, ob das Programm vorher verknüpft worden ist, und, sofern dies der Fall ist, wird die verknüpfte Version des Programms zusammen mit seinen verknüpften Bibliotheksprogrammen ohne zusätzlichen Verarbeitungsmehraufwand verwendet. Sofern die neue Anwendung nicht in dem Abbild-Cache aufgefunden wird, so wird dann ein Versuch unternommen, den Mehraufwand zu minimieren, indem nachgesehen wird, ob einige oder sämtliche der zugehörigen Bibliotheksprogramme bereits provisorisch fixiert (teilweise verknüpft) worden sind, indem ein Bibliotheksprogramm-Cache überprüft wird. Nur dann, wenn ein Bibliotheksprogramm nicht in dem Bibliotheksprogramm-Cache aufgefunden wird, braucht das Verknüpfersystem eine vollständige Programmlade- und -verknüpfungsoperation auszuführen, womit der Verknüpfungsmehraufwand minimiert wird.
  • Es wird ein Verfahren offenbart für ein Verfahren zum dynamischen Verknüpfen eines neuen Programmabbilds und zugehöriger Bibliotheksprogramme zu einem ausführbaren Anwenderprogrammabbild. Das Verfahren sorgt für die Erzeugung einer verknüpften Liste der erforderlichen Programme, indem dem Verknüpfer ein Argument gegeben wird, daß das ausersehene Programmabbild repräsentiert und einen Benennungskontext, welcher Daten über die zugeordneten Bibliotheksprogramme, welche miteinander verknüpft werden sollen, enthält. Der Verknüpfer findet sämtliche erforderlichen Programme und verknüpft sie miteinander. Das Elternteil bildet die Programmabbilder in die vorgesehenen Adressen ab, wodurch die Verknüpfung des ausführbaren Anwendungsprogramms abgeschlossen wird. Beim Auffinden der erforderlichen Programme überprüft der Verknüpfer zunächst den Abbild-Cache, um nachzusehen, ob das neue Programm und seine zugehörigen Bibliotheksprogramme bereits verknüpft und cache-gespeichert sind, weil sie vorher ausgeführt worden sind. Wenn das neue Programm nicht in dem Abbild-Cache aufgefunden wird, überprüft dann das Verknüpfer-Objekt den Bibliotheksprogramm-Cache, um nachzusehen, ob die Bibliotheksprogramme in partiell verknüpfter Form cache-gespeichert sind, und verwendet von ihnen soviele, wie es auffinden kann. Bei irgendwelchen Bibliotheksprogrammen, die noch lokalisiert werden müssen, liest der Verknüpfer sie aus einem Datenspeicher und fährt dann damit fort, sämtliche Bibliotheksprogramme und das neue Programmabbild miteinander zu verknüpfen, um ein ausführbares Ganzes zu bilden. Dieser Prozeß des Cache-Speicherns neuer Programmabbilder mit ihren Bibliotheksprogrammen und des Cache-Speicherns partiell verknüpfter Bibliotheksprogramme garantiert individuell eine Prozedur, welche die Zeitverzögerung beim Programmstart minimiert, wenn ein neues Programm ausgeführt wird.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • Die Aufgaben, Merkmale und Vorteile des erfindungsgemäßen Systems werden aus der folgenden Beschreibung deutlich, in Welcher:
  • Fig. 1 die typischen Schritte beim Kompilieren und Laden eines neuen Programms veranschaulicht (Stand der Technik).
  • Fig. 2 das SPRING-Betriebssystemkonzept eines Objekts veranschaulicht.
  • Fig. 3 ein Ablaufdiagramm der Erfindung auf einer höheren Ebene veranschaulicht.
  • Fig. 4 ein detailliertes Ablaufdiagramm der Erfindung veranschaulicht.
  • Fig. 5 ein nicht fixiertes Programm veranschaulicht.
  • Fig. 6 eine fixierte Version des in Fig. 5 veranschaulichten Programms veranschaulicht.
  • Fig. 7 ein Beispiel einer dynamischen SPRING-Verknüpfungsumgebung veranschaulicht
  • BEZEICHNUNGEN UND TERMINOLOGIE
  • Die folgenden detaillierten Beschreibungen können anhand von Programmprozeduren, die auf einem Computer oder einem Netzwerk von Computern ausgeführt werden, präsentiert werden. Diese prozeduralen Beschreibungen und Darstellungen sind diejenigen Mittel, die von Fachleuten verwendet werden, um das Wesen ihrer Arbeit anderen Fachleuten auf effektivste Weise zu übermitteln.
  • Unter einer Prozedur wird hier und im allgemeinen eine in sich konsistente Sequenz von Schritten verstanden, die zu einem gewünschten Ergebnis führt. Diese Schritte sind solche, die physikalische Bearbeitungen physikalischer Größen erfordern. Üblicherweise, jedoch nicht notwendigerweise, nehmen diese Größen die Form elektrischer oder magnetischer Signale an, die gespeichert, übertragen, kombiniert, verglichen und auf andere Weise manipuliert werden können. Gelegentlich hat es sich, hauptsächlich aus Gründen der allgemeinen Verwendung, als geeignet erwiesen, auf diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen Bezug zu nehmen. Es sei jedoch angemerkt, daß all diese und ähnliche Bezeichnungen den richtigen physikalischen Größen zugeordnet sein sollen und bloß auf diese Größen angewendete geeignete Etiketten sind.
  • Darüber hinaus werden die ausgeführten Bearbeitungen oftmals mit Begriffen, wie beispielsweise Addieren und Vergleichen, bezeichnet, welche üblicherweise den von einem menschlichen Bediener ausgeführten geistigen Operationen zugeordnet werden. Keine derartige Fähigkeit eines menschlichen Bedieners ist bei irgendeiner der hier beschriebenen Operationen, welche Teil der vorliegenden Erfindung bilden, erforderlich und sie ist in den meisten Fällen auch nicht erwünscht; die Operationen sind Maschinenoperationen. Nützliche Maschinen zum Durchführen der Operationen gemäß der vorliegenden Erfindung umfassen digitale Mehrzweckcomputer oder ähnliche Geräte.
  • Die vorliegende Erfindung bezieht sich darüber hinaus auf eine Einrichtung zum Durchführen dieser Operationen. Diese Einrichtung kann für die erforderlichen Zwecke speziell konstruiert sein oder kann einen Mehrzweckcomputer umfassen, der selektiv von einem in dem Computer gespeicherten Computerprogramm aktiviert oder umkonfiguriert worden ist. Die hier angegebenen Prozeduren beziehen sich nicht zwangsläufig auf einen speziellen Computer oder eine andere spezielle Einrichtung. Verschiedene Mehrzweckmaschinen können mit gemäß den hier gegebenen Lehren geschriebenen Programmen verwendet werden oder es kann sich als geeigneter herausstellen, spezialisiertere Einrichtungen zu konstruieren, um die erforderlichen Verfahrensschritte auszuführen. Die erforderliche Struktur für eine Vielzahl dieser Maschinen wird aus der angegebenen Beschreibung deutlich.
  • BESCHREIBUNG DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS
  • In der folgenden Beschreibung werden aus Gründen der Erläuterung spezielle Daten und Konfigurationen angegeben, um ein besseres Verständnis der vorliegenden Erfindung zu erreichen. Das hier beschriebene bevorzugte Ausführungsbeispiel wird als Teil des von Sun Microsystems®, Inc. (Sun Microsystems ist eine eingetragene Marke der Sun Microsystems, Inc.) geschaffenen objekt-orientierten SPRING- Betriebssystems implementiert. Für einen Fachmann ist es jedoch klar, daß die vorliegende Erfindung auch ohne die speziellen Details ausgeführt werden kann und in verschiedenen Computersystemen und bei verschiedenen Konfigurationen oder Typen oder Modellen eng gekoppelter Prozessoren oder bei verschiedenen Konfigurationen lose gekoppelter Mehr-Prozessor-Systeme implementiert werden. Darüber hinaus ist es Fachleuten klar, daß die vorliegende Erfindung in einem nicht-objekt-orientierten Rechnersystem implementiert sein kann.
  • Eine SPRING-Domäne ist ein Adreßraum mit einer Sammlung von Threads. Eine gegebene Domäne kann als Server einiger Objekte und als Client anderer Objekte dienen. Der Implementierer oder Objektmanager und der Client können in derselben Domäne oder in verschiedenen Domänen sein.
  • Das Spring-Objektmodell
  • SPRING weist gegenüber anderen verteilten objektorientierten Systemen eine geringfügig abweichende Art der Betrachtung von Objekten auf, und es ist erforderlich, dies klarzustellen, bevor die Details der vorliegenden Erfindung erörtert werden.
  • Die meisten verteilten Systeme präsentieren ein Modell, bei dem sich die Objekte bei Server-Maschinen aufhalten und bei dem Client-Maschinen Objekt-Handles (Zugriffsmöglichkeiten) besitzen, die auf das Objekt beim Server verweisen (siehe Fig. 2a). Clients befassen sich (pass around) mit Objekt-Handles anstelle von Objekten.
  • SPRING präsentiert ein Modell, bei dem Clients direkt an Objekten und nicht an Objekt-Handles arbeiten (siehe Fig. 2b). Bei einigen dieser Objekte kann es passieren, daß ihre sämtlichen interessierenden Zustände an irgendeiner fernen Stelle gehalten werden, so daß ihr lokaler Zustand bloß aus einem Handle auf diesen fernen Zustand besteht. Ein Objekt kann nur jeweils an einem Ort existieren, so daß dann, wenn ein Objekt irgendwohin gesendet wird, der Sender des Objekts das Objekt nicht mehr besitzt. Jedoch kann das Objekt kopiert werden, bevor es gesendet wird, was so implementiert werden könnte, daß es jetzt zwei verschiedene Objekte gibt, die auf denselben fernen Zustand zeigen.
  • Während man somit bei Systemen, wie beispielsweise MACH, davon sprechen könnte, daß verschiedene Clients Objekt-Handles aufweisen, die auf irgendein fernes Objekt verweisen, würde man bei SPRING davon sprechen, daß verschiedene Clients Objekte aufweisen, die auf denselben fernen Zustand verweisen.
  • Dynamische Verknüpfung von Prozeßabbildern bei SPRING
  • Es wird jetzt auf Fig. 3 Bezug genommen, in der die Grundschritte der vorliegenden Erfindung kurz beschrieben sind. Wenn eine Client-Domäne in SPRING es wünscht, ein Programm zu starten, führt die Client-Domäne ein "Link(ImageMemoryObject, NamingContextObject)"-Kommando 20 an einem Verknüpferobjekt aus. Das Verknüpferobjekt überprüft zunächst seinen Abbild-Cache 22, indem es das Abbildspeicherobjekt nachschlägt, um nachzusehen, ob es eine vollständig verknüpfte Version des durch das Abbildspeicherobjekt repräsentierten Programms enthält und ob diese cachegespeicherte Version unter Verwendung der Bibliotheksprogramme in dem Benennungskontextobjekt verknüpft wurde. Wenn eine Übereinstimmung gefunden wird, 28, ist das Verknüpferobjekt im Grunde genommen mit seiner Arbeit am Ende und gibt bloß die cache-gespeicherte Liste der Speicherobjekte und zugehörigen Adressen aus, 38, welche dem gefundenen Abbildspeicherobjekt zugeordnet sind. Sofern die Überprüfung des Abbild-Cache keine Übereinstimmung erzeugt, 24, so findet dann das Verknüpferobjekt eine Liste von Namen von Bibliotheksprogrammen, die für das Abbildspeicherobjekt erforderlich sind, und gewinnt unter Verwendung des Benennungskontextobjekts für jedes Bibliotheksprogramm ein ihm zugeordnetes Speicherobjekt und fährt damit fort, den Bibliotheksprogramm-Cache hinsichtlich einer Übereinstimmung für jedes Bibliotheksprogramm zu überprüfen, 26. Wenn eine Übereinstimmung für ein Bibliotheksprogrammspeicherobjekt gefunden wird, 36, gewinnt das Verknüpferobjekt das Speicherobjekt, das die provisorisch fixierte Kopie des gefundenen Bibliotheksprogramms repräsentiert und die zugeordnete Adresse, bei welcher dieses Programm abgebildet werden soll. Sofern keine Übereinstimmung gefunden wird, 30, entscheidet das Verknüpferobjekt über eine Adresse, bei welcher das fragliche Bibliotheksprogramm abgebildet werden soll, erzeugt ein Speicherobjekt, das eine Kopiere-beim-Schreiben-Kopie des fraglichen Bibliotheksprogramms ist, und bildet dieses Speicherobjekt bei der Adresse ab, die es für es ausgewählt hat. Das Verknüpferobjekt fixiert ferner provisorisch diese neue Kopie des Programms und speichert das Speicherobjekt des Bibliotheksprogramms und die zugehörige Adresse in dem Bibliotheksprogramm-Cache, 32. Nach dem Auffinden eines Speicherobjekts für jedes erforderliche Bibliotheksprogramm, ob es nun in dem Bibliotheksprogramm-Cache gefunden wurde oder neue Kopien erzeugt wurden, löst das Verknüpferobjekt jetzt sämtliche nicht aufgelösten Symbolreferenzen in dem neuen Programmabbild und in sämtlichen dieser Bibliotheksprogramme auf und schreibt eine Kopie dieser vollständig verknüpften Version in den Abbild-Cache, 34. Schließlich gibt das Verknüpferobjekt an die Client-Domäne eine Liste der Speicherobjekte und zugehörigen Adressen für dieses vollständig verknüpfte neue Programmabbild und seine zugeordneten Bibliotheksprogramme zurück.
  • Die obige Beschreibung ist eine zusammengefaßte Beschreibung der vorliegenden Erfindung, welche unten detaillierter in dem in Fig. 4 gezeigten Ablaufdiagramm erläutert und bei Beispielen des Prozesses beschrieben wird. Fachleute erkennen, daß die Verwendung von Namen, wie beispielsweise Verknüpferobjekt, Client-Domäne, etc., zu Zwecken der Veranschaulichung dient und daß die Erfindung durch Programme ausgeführt werden kann, welche eine beliebige Namensart haben können.
  • Bevor damit fortgefahren wird, die Erfindung detaillierter zu erläutern, ist es nützlich, ein Beispiel eines "nicht fixierten Programms" zu beschreiben und zu beschreiben, was geschieht, wenn die Verschiebungen auftreten, um es zu einem "fixierten" oder ausführbaren Programmabbild zu machen. Es wird jetzt auf Fig. 5 Bezug genommen, in der ein nicht fixiertes Programm gezeigt ist. Die Datei "F" 40 enthält ein Programmabbild. Diese Datei hat vier Teile: einen Kopfteil (Header) 42, der die Adresse 44 zum Beginnen der Ausführung des Programms und die Liste der zu verwendenden geteilten Bibliotheksprogramme 46 enthält; den Code für das Programm 52; eine Symboltabelle 48, die sämtliche externen Symbole, die in dem Programm definiert sind, enthält; und eine Verschiebungstabelle 50, die eine Liste der zu verschiebenden Symbole enthält. Bei diesem Beispiel besagt der Programmkopfteil 42, daß das Programm die gemeinsame oder geteilte Bibliothek SL benötigt, 46. Die Verschiebungstabelle 50 zeigt, daß der Programmcode 52 einen Befehl an der Adresse A1 enthält, der auf ein externes Symbol foo 54 Bezug nimmt. Zusätzlich zeigt die Symboltabelle 48, daß das Programm die externe Funktion bar 56 an der Adresse A2 definiert. Außerdem ist in Fig. 5 die Datei F2 gezeigt, die die geteilte Bibliothek SL 60 enthält. Die Datei F2 weist die gleichen vier Teile wie die Datei F auf: einen Programmkopfteil 62, den Code für das Bibliotheksprogramm 72; eine Symboltabelle 68; und eine Verschiebungstabelle 70. Da diese geteilte Bibliothek nicht von irgendwelchen weiteren geteilten Bibliotheken abhängig ist, ist die Liste der geteilten Bibliotheken leer, 66. Die Verschiebungstabelle 70 zeigt, daß der Bibliothekscode einen Befehl an der Adresse B1 enthält, der auf das externe Symbol bar 64 Bezug nimmt. Zusätzlich zeigt die Symboltabelle 68, daß der Bibliothekscode die externe Funktion foo an der Adresse B2 definiert, 76. Fig. 6 zeigt eine "fixierte" Version desselben Programms und desselben Bibliotheksprogramms, die in Fig. 5 gezeigt sind.
  • Fig. 6 zeigt einen Adreßraum 80, der den fixierten Programmcode 82 und den fixierten Bibliothekscode 84 enthält. Der Code für das Programmabbild in Datei F (52 in Fig. 5) wird an der Adresse 86 abgebildet, die für sämtliche Programmabbilder fest ist. Der Wert dieser Adresse ist so gewählt, daß jede Codeadresse in dem Abbild (52 in Fig. 5) korrekt ist (beispielsweise der Code an Adresse A1 (58 in Fig. 5) wird an Adresse A1 im Adreßraum 86 abgebildet. Die geteilte Bibliothek FL auf der anderen Seite wird beginnend an der Adreßraumspeicherplatzadresse R1 abgebildet, und somit ist jede Bibliothekscodeadresse um R1 in dem Adreßraum 80 versetzt, 90. Die externe Referenz zu dem Symbol foo in dem Befehl A1, welche als an dem Befehl A1 befindlich in der Verschiebungstabelle der Datei F (54 in Fig. 5) gezeigt wurde, wird durch die geteilte Bibliothek befriedigt. Das Symbol foo wurde an der Adresse B2 in der geteilten Bibliothek (76 in Fig. 5) definiert, und, da die Adresse B2 auf die Adresse R1 + B2 im Adreßraum 80 abgebildet wurde, war die für foo in A1 gegebene aktuelle Adresse R1 + B2 88. Die externe Referenz auf das Symbol bar in dem Befehl B1, die von der Bibliotheksverschiebungstabelle (64 in Fig. 5) gezeigt wird, wurde durch den Programmcode erfüllt, welcher bar an der Adresse A2 in dem Programmabbild (56 in Fig. 5) definierte. Der Befehl an der Adresse B1 in der geteilten Bibliothek wird tatsächlich auf die Adresse R1 + B1 in dem Adreßraum 90 abgebildet, und somit ist die in dem Befehl bei R1 + B1 plazierte aktuelle Adresse gleich A2, 92.
  • Es wird jetzt auf Fig. 7 Bezug genommen, in der eine Umgebung bei einem beispielhaften objekt-orientierten SPRING-System gezeigt wird, mit welcher das bevorzugte Ausführungsbeispiel der Erfindung veranschaulicht werden soll. Gezeigt sind: ein Benennungsdienst 100, der einen Implementierer für das Kontextobjekt C 102 enthält; eine Domäne C 104, die einen Adreßraum 106 enthält; eine Client-Domäne 108, die eine Abbildungsliste 120 und Objekte C 109, L 110, M 112, AS 114, D 116 und DM 118 enthält; ein SPRING-Kernel 122, das einen Domänenmanager 124 enthält, welcher selbst einen Implementierer des Domänenobjekts D 126 enthält, welches als das Objekt AS 128 enthaltend gezeigt ist; einen virtuellen Speichermanager 130, der ebenfalls in dem SPRING- Kernel enthalten ist, welcher einen Adreßraumimplementierer für Objekte AS 132 enthält; eine Datei-Server-Domäne 152, die Implementierer für ein Speicherobjekt M 154, Speicherobjekt M 256, Speicherobjekt SL 158, Speicherobjekt SL 260 und Speicherobjekt SL 362 enthält; und schließlich eine Verknüpfer-Domäne 140, die einen Implementierer für das Verknüpferobjekt L 142, einen einen Beispiel-Cache-Eintrag 146 enthaltenden Abbild-Cache 144, welcher selbst eine Liste von Speicherobjekten und zugehörigen Adressen 172 und die Speicherobjekte C 164, M 166, M2 168 und SL3 170 enthält, und einen einen Beispiel-Cache-Eintrag 150 enthaltenden Bibliotheks- Cache 148, welcher selbst Speicherobjekte SL 172 und 5L2 174 und die cache-gespeicherte Programmstartadresse 176 enthält, enthält.
  • Es sei angemerkt, daß die folgenden Objekte äquivalent sind: M 112 und M 166; M2 175 und M2 168; 5L3 177 und 5L3 170; und C 109 und C 164. Für die Zwecke dieser Erfindung werden zwei Objekte als äquivalent angesehen, wenn sie auf den Quellzustand auf dem Server Bezug nehmen.
  • Bei den folgenden Beispielen wünscht eine Client-Domäne ein Programm mit dem Namen foo zu starten. Die Konfiguration, nachdem das Programm gestartet ist, ist in Fig. 7 gezeigt.
  • Das einfachste Beispiel besteht darin, daß es einen Cache-Treffer in dem Abbild-Cache gibt. In diesem Fall durchläuft das Starten der neuen Domäne die folgenden Schritte:
  • Die Client-Domäne schlägt foo über den SPRING-Benennungsdienst 100 nach und erhält ein Speicherobjekt M 112 zurück, daß das Programmabbild für foo speichert. Das in M gespeicherte Programmabbild benötigt die geteilte Bibliothek SL, um dynamisch verknüpft zu sein; die Namen der Bibliotheken, zu denen ein Abbild verknüpft sein soll, sind in dem Speicherobjekt M 112 gespeichert, dessen Implementierung auf Platte 154 ist.
  • Die Client-Domäne 108 schlägt ein Verknüpferobjekt L 110 nach, das durch eine Verknüpferdomäne 140 unter Verwendung des Benennungsdienstes 100 implementiert wird.
  • Die Client-Domäne 108 ruft eine Verknüpfungsmethode auf L 110 auf, wobei sie zwei Parameter hineinleitet: das Speicherobjekt M 112 und ein Kontextobjekt C 109, implementiert durch den Benennungsdienst 100.
  • Die Verknüpferdomäne 140 sucht in ihrem Cache unter Verwendung von M 112 und 109 als ihre Schlüssel und entdeckt, daß sie einen Eintrag mit dem Schlüssel M 166 und C 164 hat, der übereinstimmt (M 166 ist äquivalent zu M 112 und C 164 ist äquivalent zu C 109). Der Cache-Eintrag enthält eine cache-gespeicherte Kopie einer vollständig verknüpften Version von M 166, die unter Verwendung von C 164 verknüpft wurde. Die vollständig verknüpfte Version besteht aus den zwei Speicherobjekten: M2 168 und 5L3 170. M2 168 ist eine vollständig verknüpfte Kopie von M 166, verknüpft an der Adresse A1 (die Adresse zum Abbilden der Programmabbilder ist für sämtliche Programme auf den Wert A1 fixiert) und SL3 170 ist eine vollständig verknüpfte Kopie des Speicherobjekts für die geteilte Bibliothek SL 172, verknüpft an der Adresse A2 (die Liste der Speicherobjekte und zugehörigen verknüpften Adressen ist bei 173 gezeigt).
  • Die Verknüpferdomäne 140 gibt eine Liste von < Adresse zum Abbilden, Speicherobjektpaare> 173 an die Client-Domäne 108 zurück (diese Liste wird Abbildungsliste 120 in der Client-Domäne 108 genannt). Der erste Eintrag in der Liste 121 enthält die Adresse A1 und das Speicherobjekt M2. Der zweite Eintrag in der Liste 123 enthält die Adresse A2 und das Speicherobjekt SL3.
  • Die Client-Domäne 108 schlägt ein Domänenmanagerobjekt DM 118 unter Verwendung des Benennungsdienstes 100 nach.
  • Die Client-Domäne 108 ruft die create domain-Methode auf dem Objekt DM 118 auf und erhält ein neues Domänenobjekt D 116 zurück.
  • Die Client-Domäne 108 ruft die getaddress space- Methode auf D 116 auf und erhält ein Objekt AS 114 zurück, daß den Adreßraum von D 132 repräsentiert.
  • Die Client-Domäne 108 ruft die copy and map-Methode auf dem AS-Objekt 114 auf, um das Objekt M2 175 an der Adresse A1 und SL3 177 an der Adresse A2 durch Kopierenbeim-Schreiben abzubilden. (Man beachte, daß diese Information aus der Abbildungsliste 120 erlangt worden ist).
  • Die Client-Domäne 108 startet das Ablaufen der Domäne D 126 durch Aufrufen der enter-Methode auf dem Domänenobjekt D 116.
  • Man beachte, daß in Fig. 7 der Bibliothekscache 148 außerdem eine cache-gespeicherte Kopie der gemeinsamen Bibliothek SL 172 und eine provisorisch fixierte Version, welche in dem Speicherobjekt SL2 174 ist, aufweist. Da wir jedoch einen Treffer in dem Abbild-Cache 144 erhielten, brauchten wir nicht den Bibliothekscache 148 zu konsultieren.
  • Als zweites Beispiel sei betrachtet der Fall, wenn es keinen Abbild-Cache-Treffer aber einen Bibliothekscache- Treffer gibt. Für dieses Beispiels sei angenommen, daß der Abbild-Cache 144 in Fig. 7 leer ist, wenn die Client-Domäne 108 das Programmabbild zu verknüpfen versucht. Die Verknüpferdomäne 140 führt die Verknüpfung unter Verwendung der folgenden Schritte aus:
  • Die Verknüpferdomäne 140 schlägt M 112 und C 109 in ihrem Abbild-Cache 144 nach und findet keine Übereinstimmung.
  • Die Verknüpferdomäne 140 schlägt im Speicherobjekt M 112 nach und entdeckt, daß sie ein geteiltes Bibliotheksprogramm mit dem Namen SL zum Verknüpfen benötigt.
  • Die Verknüpferdomäne 140 schlägt den Namen SL unter Verwendung des Kontextobjekts C 109 nach. (Man beachte, daß dieser Schritt für jedes erforderliche Bibliotheksprogramm wiederholt würde). Das Ergebnis ist das Speicherobjekt SL 300 (dieses Speicherobjekt ist nicht in der Verknüpferdomäne 140 gezeigt), das den Inhalt des gemeinsamen Bibliotheksprogramms SL enthält.
  • Die Verknüpferdomäne 140 sieht in ihrem Bibliotheks-Cache 148 unter Verwendung des Speicherobjekt SL 300 als Argument nach und entdeckt, daß sie einen Eintrag mit dem Schlüssel SL 172 aufweist, der übereinstimmt (das heißt, SL 172 ist äquivalent zu SL 300). Der cache-gespeicherte Eintrag enthält eine Cache-Kopie einer provisorisch fixierten Version der gemeinsamen Bibliothek SL, welche das Speicherobjekt SL 274 ist.
  • Die Verknüpferdomäne 140 erzeugt ein Speicherobjekt M2 168, das eine Kopiere-beim-Schreiben-Kopie von M 112 ist, und erzeugt ein Speicherobjekt SL3 170, das eine Kopiere-beim-Schreiben-Kopie von SL2 174 ist.
  • Die Verknüpferdomäne 140 löst sämtliche nicht aufgelösten Referenzen in M2 168 unter Verwendung von SL3 170 auf und löst sämtliche nicht aufgelösten Referenzen in SL3 170 unter Verwendung von M2 168 auf. (Wie dies ausgeführt wird, wurde oben beschrieben und in dem Ablaufdiagramm gezeigt). Das Ergebnis besteht darin, daß M2 168 und SL3 170 eine vollständig verknüpfte Version des Programms foo umfassen. Wiederum sei angemerkt, daß dann, wenn es mehrere erforderliche Bibliotheksprogramme gäbe, dieselben Schritte für jedes wiederholt würden.
  • Die Verknüpferdomäne gibt M2 168 und SL3 170 in ihren Abbild-Cache 144 zusammen mit ihren zugehörigen Schlüsseln (Speicherobjekt C 164 und Speicherobjekt M 166) ein und gibt eine Liste von &le; Adresse zum Abbilden, Speicherobjektpaare> 173 an die Client-Domäne 108 zurück (diese Liste ist als Abbildungsliste 120 in 108 bezeichnet). Der erste Eintrag in der Liste 121 enthält die Adresse A1 und das Speicherobjekt M2 und der zweite Eintrag in der Liste 123 enthält die Adresse A2 in das Speicherobjekt SL3.
  • Die Client-Domäne 108 verfolgt dann die gleichen Schritte wie bei dem ersten Beispiel zum Erzeugen der neuen Domäne.
  • Als letztes Beispiel sei der Fall genannt, wenn es keinen Abbild- oder Bibliotheks-Cache-Treffer gibt. Für dieses Beispiel sei angenommen, daß dann, wenn die Client-Domäne 108 versucht, das Programmabbild zu verknüpfen, der Abbild- Cache 144 und der Bibliotheks-Cache 148 leer sind. Die Verknüpferdomäne 140 führt die Verknüpfung unter Verwendung der folgenden Schritte aus:
  • Die Verknüpferdomäne 140 schlägt M 112 und C 109 in ihrem Abbild-Cache 144 nach und findet keine Übereinstimmung.
  • Die Verknüpferdomäne 140 findet das Speicherobjekt M 112 und bildet es in ihrem Adreßraum ab und entdeckt, daß M 112 eine Verknüpfung zu einer gemeinsamen Bibliothek mit dem Namen SL benötigt.
  • Die Verknüpferdomäne 140 schlägt den Namen SL unter Verwendung des Kontextobjekts C 109 nach. Das Ergebnis ist das Speicherobjekt SL 172, das den Inhalt des gemeinsamen Bibliotheksprogramms SL enthält.
  • Die Verknüpferdomäne 140 sieht in ihrem Bibliotheks-Cache 148 unter Verwendung des Speicherobjekts SL 172 als Argument nach und findet keine Übereinstimmung (es sei daran erinnert, daß wir bei diesem Beispiel annahmen, daß der Bibliotheks-Cache leer ist).
  • Die Verknüpferdomäne 140 entscheidet, daß das Speicherobjekt SL 172 bei einer verfügbaren Adresse in ihrem Adreßraum (nennen wir sie A2) fixiert werden muß.
  • Die Verknüpferdomäne 140 erzeugt ein Speicherobjekt SL 260, das eine Kopiere-beim-Schreiben-Kopie von SL 172 ist, und bildet SL2 in ihrem Adreßraum ab.
  • Die Verknüpferdomäne 140 fixiert provisorisch SL2 (siehe die Erörterung über Fixierungen oben und das detaillierte Ablaufdiagramm in Fig. 4 hinsichtlich der Details) und speichert SL2 174 in dem Bibliotheks-Cache 148 (zusammen mit seinem Schlüssel SL 172).
  • Die Verknüpferdomäne 140 erzeugt ein Speicherobjekt M2 168, das eine Kopiere-beim-Schreiben-Kopie von M 112 ist, und erzeugt ein Speicherobjekt SL3 170, das eine Kopiere-beim-Schreiben-Kopie von SL2 174 ist.
  • Die Verknüpferdomäne 140 löst sämtliche nicht aufgelösten Referenzen in M2 168 unter Verwendung von SL3 170 auf und löst sämtliche nicht aufgelösten Referenzen in SL3 170 unter Verwendung von M2 168 auf (wie dies ausgeführt wird, ist in der obigen Diskussion über Fixierungen und in dem detaillierten Ablaufdiagramm in Fig. 4 erläutert). Das Ergebnis besteht darin, daß M2 168 und SL3 170 eine vollständig verknüpfte Version des Programms foo sind.
  • Die Verknüpferdomäne 140 gibt M2 168 und SL3 170 in ihren Abbild-Cache 144 (zusammen mit ihrem Schlüssel, Speicherobjekt M 166 und ihrem Kontextobjekt C 164) ein und gibt eine Liste 172 von &le; Adresse zum Abbilden, Speicherobjektpaare> an die Client-Domäne 108 zurück. Der erste Eintrag der Liste 121 enthält die Adresse A1 und das Speicherobjekt M2. Der zweite Eintrag in der Liste 123 enthält die Adresse A2 und das Speicherobjekt SL3.
  • Die Client-Domäne 108 folgt dann den gleichen Schritten wie oben bei dem ersten Beispiel, um die neue Domäne 104 zu erzeugen.
  • Ein alternatives Ausführungsbeispiel der Erfindung besteht darin, nur den Cache für gemeinsame Bibliotheksprogramme bei dem dynamischen Verknüpfersystem zu verwenden, wobei dieselben Schritte, wie oben ausgeführt, verfolgt werden, beginnend mit dem zweiten Beispiel.
  • Während die oben genannten Beispiele das gegenwärtig bevorzugte Ausführungsbeispiel beschreiben und spezielle Programmdomänen und eine bestimmte Sequenz von Schritten beschreiben, erkennen Fachleute, daß diese Spezifika für die Ausführung der Erfindung nicht wesentlich sind, wobei die Erfindung im wesentlichen die Verwendung von Caches für die Einbehaltung vollständig verknüpfter Abbilder von Programmen und ihre zugeordneten Bibliotheken sowie partiell fixierter Bibliotheksroutinen verkörpert, womit die gesamten dynamischen Verknüpfungsmehraufwandkosten minimiert werden.

Claims (39)

1. Ein Verfahren zum effektiven Erzeugen eines vollständig verknüpften Programmabbilds eines bestimmten Programms und zugehöriger Bibliotheksprogramme unter Verwendung eines dynamischen Verknüpfungssystems, das einen Abbild-Cache umfaßt, wobei das Verfahren in einem Computersystem implementiert ist, wobei das Verfahren gekennzeichnet ist durch die Schritte:
Aufrufen des Verknüpfungssystems mit Parametern, die ein unverknüpftes Programmabbild des bestimmten Programms darstellen;
Durchsuchen (22) des Abbild-Caches nach dem vollständig verknüpften Programmabbild des bestimmten Programms und der zugehörigen Bibliotheksprogramme; und
wobei dann, wenn das vollständig verknüpfte Programmabbild in dem Abbild-Cache gefunden wird (28), das Verfahren ferner die Schritte umfaßt:
Wiedergewinnen (38) des vollständig verknüpften Programmabbilds mit einer Liste von Programmidentifizierern und zugehörigen Adressen für jedes der zugehörigen Bibliotheksprogramme aus dem Abbild-Cache; und
Abbilden (38) des vollständig verknüpften Programmabbilds des bestimmten Programms und jedes der zugehörigen Bibliotheksprogramme auf die Adressen aus der Liste von Programmidentifizierern.
2. Das Verfahren nach Anspruch 1, wobei dann, wenn das vollständig verknüpfte Programmabbild nicht in dem Abbild- Cache gefunden wird, das Verfahren ferner die Schritte umfaßt:
Erzeugen (26) einer unverknüpften Kopie des bestimmten Programms;
Durchsuchen (26) eines Bibliotheks-Cache des Verknüpfungssystems nach einer provisorisch festgelegten (fixed-up) Kopie der zugehörigen Bibliotheksprogramme; und
wobei dann, wenn die provisorisch festgelegten Bibliotheksprogramme in dem Bibliotheks-Cache gefunden werden, das Verfahren ferner die Schritte umfaßt:
Wiedergewinnen (34) der provisorisch festgelegten Bibliotheksprogramme aus dem Bibliotheks-Cache;
Verknüpfen (34) der provisorisch festgelegten Bibliotheksprogramme miteinander und mit dem unverknüpften bestimmten Programm, um das vollständig verknüpfte Programmabbild des bestimmten Programms und der zugehörigen Bibliotheksprogramme mit einer Liste von Programmidentifizierern und zugehörigen Adressen, die einen Identifizierer und eine zugehörige Adresse für das bestimmte Programm und für jedes der zugehörigen Bibliotheksprogramme enthält, zu erzeugen; und
Abbilden (38) des vollständig verknüpften Programmabbilds des bestimmten Programms und jedes der provisorisch festgelegten Bibliotheksprogramme auf die zugehörigen Adressen aus der Liste von Programmidentifizierern.
3. Das Verfahren nach Anspruch 2, wobei dann, wenn die provisorisch festgelegten Bibliotheksprogramme nicht in dem Bibliotheks-Cache gefunden werden, das Verfahren ferner die folgenden Schritte umfaßt:
Auswählen einer Adresse (32), mit welcher zugehörige Bibliotheksprogramme verknüpft werden sollen;
Erzeugen einer unverknüpften Kopie (32) der zugehörigen Bibliotheksprogramme;
provisorisches Festlegen (fixing-up) von Verschiebungssymbolen (32) in der Kopie der zugehörigen Bibliotheksprogramme;
Verknüpfen (32) der provisorisch festgelegten Bibliotheksprogramme miteinander und mit dem unverknüpften bestimmten Programm, um das vollständig verknüpfte Programmabbild des bestimmten Programms und der zugehörigen Bibliotheksprogramme mit einer Liste von Programmidentifizierern und zugehörigen Adressen, die einen Identifizierer und eine zugehörige Adresse für das bestimmte Programm und für jedes der zugehörigen Bibliotheksprogramme umfaßt, zu erzeugen;
Abbilden (32) des vollständig verknüpften Programmabbilds des bestimmten Programms und jedes der zugehörigen Bibliotheksprogramme auf die zugehörigen Adressen aus der Liste von Programmidentifizierern; und
Hinzufügen (34) der provisorisch festgelegten Bibliotheksprogramme zu dem Bibliotheks-Cache.
4. Das Verfahren nach Anspruch 3, wobei dann, wenn das Programmabbild nicht in dem Abbild-Cache gefunden wird, das Verfahren ferner die Schritte umfaßt:
Hinzufügen (34) des vollständig verknüpften Programmabbilds mit den provisorisch festgelegten Bibliotheksprogrammen und der Liste von Programmidentifizierern und zugehörigen Adressen zu dem Abbild-Cache für eine nachfolgende Wiedergewinnung durch das Verknüpfungssystem.
5. Das Verfahren nach Anspruch 4, wobei sämtliche Programme objekt orientierte Programme sind.
6. Das Verfahren nach Anspruch 1, wobei der Schritt des Durchsuchens des Abbild-Cache nach dem vollständig verknüpften Programmabbild den Schritt umfaßt:
Überprüfen des Abbild-Cache nach einem Schlüssel, welcher mit dem bestimmten Programm und den zugehörigen Bibliotheksprogrammen übereinstimmt.
7. Das Verfahren nach Anspruch 2, wobei der Schritt des Durchsuchens nach einer provisorisch festgelegten Kopie der zugehörigen Bibliotheksprogramme die zusätzlichen Schritte umfaßt
Erzeugen (308) einer ersten Namensliste, die Namen der Bibliotheksprogramme enthält, welche zu dem bestimmten Programm gehören; und
Auflösen (310) jedes der Namen der in der ersten Liste enthaltenen Bibliotheksprogramme in einen Bibliotheksprogrammidentifizierer und Hinzufügen jedes Bibliotheksprogrammidentifizierers zu einer zweiten Liste.
8. Das Verfahren nach Anspruch 7, wobei der Schritt des Wiedergewinnens der provisorisch festgelegten Bibliotheksprogramme die zusätzlichen Schritte umfaßt:
Überprüfen (316) des Bibliotheks-Cache hinsichtlich einer Übereinstimmung jedes Bibliotheksprogrammidentifizierers in der zweiten Liste;
Gewinnen (322) eines übereinstimmenden Bibliotheksprogramms aus dem Bibliotheks-Cache, sofern ein übereinstimmender Bibliotheksprogrammidentifizierer gefunden wird; und
Hinzufügen (336) des übereinstimmenden Bibliotheksprogrammidentifizierers aus dem Bibliotheks-Cache zu einer dritten Liste.
9. Das Verfahren nach Anspruch 8, umfassend die zusätzlichen Schritte:
Auswählen einer Adresse, mit welcher in der zweiten Liste identifizierte zugehörige Bibliotheksprogramme verknüpft werden sollen, sofern kein übereinstimmender Bibliotheksprogrammidentifizierer in dem Bibliotheks-Cache gefunden wird; Erzeugen (330) einer unverknüpften Kopie der zugehörigen Bibliotheksprogramme;
provisorisches Festlegen (332) von Verschiebungssymbolen in der Kopie der zugehörigen Bibliotheksprogramme;
Verknüpfen (332) der provisorisch festgelegten Bibliotheksprogramme miteinander und mit dem unverknüpften bestimmten Programm, um das vollständig verknüpfte Programmabbild des bestimmten Programms und der zugehörigen Bibliotheksprogramme mit einer Liste von Programmidentifizierern und zugehörigen Adressen, die einen Identifizierer und eine zugehörige Adresse für das bestimmte Programm und für jedes der zugehörigen Bibliotheksprogramme enthält, zu erzeugen;
Hinzufügen (334) der provisorisch festgelegten Bibliotheksprogramme zu dem Bibliotheks-Cache; und
Hinzufügen (336) der provisorisch festgelegten Bibliotheksprogrammidentifizierer zu der dritten Liste.
10. Das Verfahren nach Anspruch 9, umfassend die zusätzlichen Schritte:
Herstellen einer Kopie (342) des Programmabbilds und Hinzufügen eines Identifizierers der Kopie des Programmabbilds zu einer vierten Liste, wobei die Kopie des Programmabbilds eine Symboltabelle und eine Verschiebungstabelle aufweist; und Herstellen einer Kopie (344) jedes der Bibliotheksprogramme aus der dritten Liste und Hinzufügen eines Identifizierers der Kopie der Bibliotheksprogramme zu der vierten Liste, wobei jede der Kopien der Bibliotheksprogramme eine Symboltabelle und eine Verschiebungstabelle aufweist.
11. Das Verfahren nach Anspruch 10, umfassend die zusätzlichen Schritte:
Auffinden jedes zu verschiebenden Symbols (352) in der Kopie des Programmabbilds; und
Durchsuchen (336) sämtlicher der in der vierten Liste identifizierten Bibliotheksprogramme und, sofern eine erste Symboldefinition, welche mit dem zu verschiebenden Symbol übereinstimmt, gefunden wird, Verwenden einer Adresse der ersten Symboldefinition, welche mit dem zu verschiebenden Symbol übereinstimmt, um eine Verschiebung für das zu verschiebende Symbol durchzuführen.
12. Das Verfahren nach Anspruch 11, umfassend die zusätzlichen Schritte:
Verwenden der Symboltabelle (356) in jedem der in der vierten Liste identifizierten Bibliotheksprogramme, um der Reihe nach, beginnend mit einem ersten in der vierten Liste identifizierten Bibliotheksprogramm, jedes Symbol der Symboltabelle mit der Symboltabelle des Programmabbilds zu vergleichen und um ein Symbol in der Symboltabelle des Bibliotheksprogramms als überschrieben (overridden) zu markieren, sofern das Symbol mit einem Symbol in der Symboltabelle des Programmabbilds übereinstimmt;
Vergleichen jedes Symbols jeder der Symboltabellen mit sämtlichen Symboltabellen der in der vierten Liste identifizierten Bibliotheksprogramme, welche an einer höheren Stelle in der vierten Liste sind, als die Symboltabelle, welche überprüft wird, und welche als bereits überprüft markiert worden sind;
Markieren des Identifizierers eines in der vierten Liste identifizierten Bibliotheksprogramms bei Abschluß der Überprüfung der Symboltabelle des Bibliotheksprogramms der vierten Liste als einen, dessen Symboltabelle überprüft worden ist; und
Vergleichen der Symbole in den Symboltabellen in jedem der in der vierten Liste identifizierten Bibliotheksprogramme auf eine gleiche Weise, bis sämtliche Symboltabellen verglichen worden sind.
13. Das Verfahren nach Anspruch 12, umfassend die zusätzlichen Schritte:
Verwenden der Verschiebungstabelle (366) in jedem der in der vierten Liste identifizierten Programme, um nacheinander beginnend mit einem ersten in der vierten Liste identifizierten Programm jede der. Verschiebungstabellen zu durchsuchen, um ein undefiniertes Symbol aufzufinden;
sofern ein Symbol in einer der Verschiebungstabellen ein definiertes Symbol ist (370), Überprüfen des definierten Symbols, und sofern das definierte Symbol als überschrieben markiert worden ist, Rückgängigmachen einer Verschiebungsadresse für das definierte Symbol, welches als überschrieben markiert worden ist;
Verwenden jedes undefinierten Symbols (368) und jedes definierten Symbols, dessen Verschiebungsadresse rückgängig gemacht wurde, als Suchargument beim Überprüfen der Symboltabelle der Kopie des Programmabbilds und der Symboltabellen jeder der in der vierten Liste identifizierten Bibliotheksprogramme, um ein mit dem Suchargument übereinstimmendes Symbol aufzufinden, und, sofern das übereinstimmende Symbol gefunden ist, Verwenden der Adresse des übereinstimmenden Symbols, um die Adreßverschiebung für das Symbol durchzuführen, welches als Suchargument verwendet worden ist; und
Bereitstellen einer Ausnahmenachricht (372) für den Fall, daß herausgefunden wird, daß kein Symbol mit dem Suchargument übereinstimmt.
14. Das Verfahren nach Anspruch 13, umfassend die zusätzlichen Schritte:
Erzeugen einer cache-baren Liste (388) von Programmidentifizierern, die eine Kopie des bestimmten Programmabbilds und jedes der in der vierten Liste identifizierten Bibliotheksprogramme enthält;
Eingeben der cache-baren Liste (388) von Programmidentifizierern in den Abbild-Cache; und
Rückgeben der cache-baren Liste (390) von Programmidentifizierern in Erwiderung auf das Verknüpfungssystem.
15. Das Verfahren nach Anspruch 14, wobei die Programme Objekte sind und das Computersystem ein objekt-orientiertes System ist.
16. Das Verfahren nach Anspruch 15, wobei die Identifizierer und die Programmidentifizierer Speicherobjekte sind.
17. Das Verfahren nach Anspruch 1, wobei:
dann, wenn kein vollständig verknüpftes Programmabbild in dem Abbild-Cache gefunden wird (24), das Verfahren ferner die Schritte umfaßt:
Überprüfen eines Bibliotheks-Cache (26) hinsichtlich einer provisorisch festgelegten (fixed-up) Kopie der zugehörigen Bibliotheksprogramme und dann, wenn der Bibliotheks- Cache die provisorisch festgelegten zugehörigen Bibliotheksprogramme enthält, Wiedergewinnen der provisorisch festgelegten Bibliotheksprogramme; und
wobei dann, wenn die provisorisch festgelegten Bibliotheksprogramme in dem Bibliotheks-Cache nicht gefunden werden (30), das Verfahren ferner die Schritte umfaßt:
Erzeugen (32) einer Liste von Bibliotheksprogrammidentifizierern und zugehörigen Adressen aus dem Bibliotheks- Cache;
Verknüpfen (34) jedes der Bibliotheksprogramme miteinander und mit dem Programmabbild, um das vollständig verknüpfte Programmabbild zu erzeugen; und
Abbilden (38) des von den Programmidentifizieren identifizierten vollständig verknüpften Programmabbilds mit der zugehörigen Adresse aus der Liste von Programmidentifizierern.
18. Das Verfahren nach Anspruch 17, wobei der Schritt des Erzeugens einer Liste von Bibliotheksprogrammidentifizierern und zugehörigen Adressen aus dem Bibliotheksprogramm-Cache die zusätzlichen Schritte umfaßt:
Erzeugen (308) einer ersten Liste, die die Namen derjenigen Bibliotheksprogramme enthält, welche zu dem bestimmten Programm gehören;
Auflösen (310) jedes der Namen der Bibliotheksprogramme, die in der ersten Liste enthalten sind, in einen Bibliotheksprogrammidentifizierer und Hinzufügen jedes der Bibliotheksprogrammidentifizierer zu einer zweiten Liste;
Überprüfen (322) des Bibliotheks-Cache hinsichtlich einer Übereinstimmung für jeden Bibliotheksprogrammidentifizierer in der zweiten Liste;
Gewinnen (336) eines übereinstimmenden Bibliotheksprogramms aus dem Bibliotheks-Cache, sofern ein übereinstimmender Bibliotheksprogrammidentifizierer gefunden wird; und
Hinzufügen (336) des übereinstimmenden Bibliotheksprogrammidentifizierers aus dem Bibliotheks-Cache zu einer dritten Liste.
19. Das Verfahren nach Anspruch 18, umfassend die zusätzlichen Schritte:
Auswählen (328) einer Adresse, mit welcher in der zweiten Liste identifizierte zugehörige Bibliotheksprogramme verknüpft werden sollen, sofern kein übereinstimmender Bibliotheksprogrammidentifizierer in dem Bibliotheks-Cache gefunden wird;
Erzeugen (330) einer unverknüpften Kopie der zugehörigen Bibliotheksprogramme;
provisorisches (332) Festlegen von Verschiebungssymbolen in der Kopie der zugehörigen Bibliotheksprogramme;
Hinzufügen (334) der provisorisch festgelegten Bibliotheksprogramme zu dem Bibliotheks-Cache; und
Hinzufügen (336) des provisorisch festgelegten Bibliotheksprogrammidentifizierers zu der dritten Liste.
20. Das Verfahren nach Anspruch 19, umfassend die zusätzlichen Schritte:
Herstellen (343) einer Kopie des Programmabbilds und Hinzufügen eines Identifizierers der Kopie des Programmabbilds zu einer vierten Liste, wobei die Kopie des Programmabbilds eine Symboltabelle und eine Verschiebungstabelle aufweist; und
Herstellen (342) einer Kopie jedes der Bibliotheksprogramme aus der dritten Liste und Hinzufügen eines Identifizierers der Kopie der Bibliotheksprogramme zu der vierten Liste, wobei jede der Kopien der Bibliotheksprogramme eine Symboltabelle und eine Verschiebungstabelle aufweist.
21. Das Verfahren nach Anspruch 20, umfassend die zusätzlichen Schritte:
Auffinden (352) jedes zu verschiebenden Symbols in der Kopie des Programmabbilds; und
Durchsuchen (356) sämtlicher in der vierten Liste identifizierter Bibliotheksprogramme und, sofern eine erste Symboldefinition, welche mit dem zu verschiebenden Symbol übereinstimmt, aufgefunden wird, Verwenden einer Adresse der ersten Symboldefinition, welche mit dem zu verschiebenden Symbol übereinstimmt, um eine Verschiebung des zu verschiebenden Symbols durchzuführen.
22. Das Verfahren nach Anspruch 21, umfassend die zusätzlichen Schritte:
Verwenden (358) der Symboltabelle in jedem der in der vierten Liste identifizierten Bibliotheksprogramme, um der Reihe nach beginnend mit einem ersten der in der vierten Liste identifizierten Bibliotheksprogramme jedes Symbol der Symboltabelle mit der Symboltabelle des Programmabbilds zu vergleichen und ein Symbol in der Symboltabelle des Bibliotheksprogramms als überschrieben zu markieren, sofern das Symbol mit einem Symbol in der Symboltabelle des Programmabbilds übereinstimmt;
Vergleichen jedes Symbols jeder der Symboltabellen mit sämtlichen Symboltabellen der in der vierten Liste identifizierten Bibliotheksprogramme, welche an einer höheren Stelle in der vierten Liste sind als die Symboltabelle, welche überprüft wird und welche als bereits überprüft markiert worden ist;
bei Abschluß der Überprüfung der Symboltabelle jedes der in der vierten Liste identifizierten Bibliotheksprogramme:
Markieren des Identifizierers des Bibliotheksprogramms in der vierten Liste als einen, dessen Symboltabelle überprüft worden ist; und
Vergleichen der Symbole in den Symboltabellen in jedem der in der vierten Liste identifizierten Bibliotheksprogramme in gleicher Weise, bis sämtliche Symboltabellen verglichen worden sind.
23. Das Verfahren nach Anspruch 22, umfassend die zusätzlichen Schritte:
Verwenden (366) der Verschiebungstabelle in jedem der in der vierten Liste identifizierten Programme, um nacheinander beginnend mit einem ersten der in der vierten Liste identifizierten Programme jede der Verschiebungstabellen zu durchsuchen, um ein undefiniertes Symbol aufzufinden;
dann, wenn ein Symbol in einer der Verschiebungstabellen ein definiertes Symbol ist, Überprüfen des definierten Symbols (378) ein zweites Mal und, sofern das definierte Symbol als überschrieben markiert worden ist, Rückgängig-Machen einer Verschiebungsadresse für das definierte Symbol, welches als überschrieben markiert worden ist;
Verwenden jedes undefinierten Symbols (368) und jedes definierten Symbols, dessen Verschiebungsadresse rückgängig gemacht wurde, als Suchargument, Überprüfen der Symboltabelle der Kopie des Programmabbilds und der Symboltabellen jeder der in der vierten Liste identifizierten Bibliotheksprogramme, um ein Symbol aufzufinden, das mit dem Suchargument übereinstimmt, und, sofern das übereinstimmende Symbol gefunden wird, Verwenden der Adresse des gefundenen Symbols, um die Adreßverschiebung für das Symbol, welches als das Suchargument verwendet worden ist, durchzuführen; und
Bereitstellen einer Ausnahmenachricht (372), sofern gefunden wird, daß kein Symbol mit dem Suchargument übereinstimmt.
24. Das Verfahren nach Anspruch 23, umfassend die zusätzlichen Schritte:
Erzeugen (388) einer cache-baren Liste von Programmidentifizierern, die eine Kopie des bestimmten Programmabbilds und jedes der in der vierten Liste identifizierten Bibliotheksprogramme enthält; und
Zurückgeben (390) der cache-baren Liste von Programmidentifizierern in Erwiderung auf das Verknüpfungssystem.
25. Das Verfahren nach Anspruch 24, wobei die Programme Objekte sind und das Computersystem ein objekt-orientiertes System ist.
26. Das Verfahren nach Anspruch 25, wobei die Identifizierer und die Programmidentifizierer Speicherobjekte sind.
27. Ein Abbild-Cache-System zum Bereitstellen eines vollständig verknüpften Programmabbilds eines bestimmten Programms und zugehöriger Bibliotheksprogramme für ein dynamisches Verknüpfungssystem, wobei das Cache-System in einem Computersystem implementiert ist, wobei das Abbild-Cache-System gekennzeichnet ist durch:
einen Abbild-Cache (144) zum Cache-Speichern des vollständig verknüpften Programmabbilds mit einer Liste von Programmidentifizierern und zugehörigen Adressen für jedes der zugehörigen Bibliotheksprogramme, wobei die Liste zum Abbilden des vollständig verknüpften Programmabbilds dient;
eine erste mit dem Abbild-Cache gekoppelte Sucheinrichtung (22) zum Durchsuchen des Abbild-Cache, um zu bestimmen, ob der Abbild-Cache das vollständig verknüpfte Programmabbild enthält, wobei die Suche in Beantwortung einer Anforderung zum Verknüpfen des bestimmten Programms durchgeführt wird; und
eine mit der ersten Sucheinrichtung gekoppelte erste Kommunikationseinrichtung (38) zum Antworten auf die Anforderung zum Verknüpfen des bestimmten Programms, wobei die Antwort die Liste von Programmidentifizierern und zu den Programmidentifiziererri gehörende Adressen enthält, die aus dem Abbild-Cache gewonnen wurden, sofern das vollständig verknüpfte Programmabbild in dem Abbild-Cache gefunden wird.
28. Das Abbild-Cache-System nach Anspruch 27, ferner aufweisend:
einen mit dem Abbild-Cache gekoppelten Bibliotheks-Cache (148) zum Speichern provisorisch festgelegter (fixed-up) Bibliotheksprogramme; und
eine mit dem Bibliotheks-Cache gekoppelte zweite Sucheinrichtung (263) zum Durchsuchen des Bibliotheks-Cache, um zu bestimmen, ob wenigstens eines der provisorisch festgelegten Bibliotheksprogramme mit wenigstens einem der zugehörigen Bibliotheksprogramme übereinstimmt.
29. Das Abbild-Cache-System nach Anspruch 28, wobei das Durchsuchen des Bibliotheks-Cache durchgeführt wird, wenn das vollständig verknüpfte Programmabbild nicht in dem Abbild-Cache, welcher mit dem bestimmten Programm übereinstimmt, gefunden wird, und wobei die erste Suchmöglichkeit eine unverknüpfte Kopie des bestimmten Programms gewinnt.
30. Das Abbild-Cache-System nach Anspruch 29, ferner aufweisend:
eine mit der zweiten Sucheinrichtung gekoppelte erste Verknüpfungseinrichtung (32) zum Verknüpfen eines gefundenen Bibliotheksprogramms mit dem unverknüpften Programmabbild, sofern wenigstens eines der provisorisch festgelegten Bibliotheksprogramme in dem Bibliotheks-Cache gefunden ist, welches mit wenigstens einem der zugehörigen Bibliotheksprogramme übereinstimmt.
31. Das Abbild-Cache-System nach Anspruch 30, ferner aufweisend:
eine mit der zweiten Sucheinrichtung gekoppelte dritte Sucheinrichtung (36) zum Auffinden unverknüpfter Bibliotheksprogramme, sofern kein Bibliotheksprogramm in dem Bibliotheks-Cache gefunden wird, das mit dem zugehörigen Bibliotheksprogramm übereinstimmt; und
eine mit der dritten Sucheinrichtung gekoppelte zweite Verknüpfungseinrichtung (32) zum Verknüpfen der unverknüpften Bibliotheksprogramme miteinander und mit den gefundenen Bibliotheksprogrammen und mit dem unverknüpften Programmabbild, wobei ein vollständig verknüpftes Programmabbild des bestimmten Programms mit zugehörigen Bibliotheksprogrammen erzeugt wird.
32. Das Abbild-Cache-System nach Anspruch 31, wobei:
eine zweite Verknüpfungseinrichtung (32) irgendwelche der unverknüpften Bibliotheksprogramme provisorisch festlegt (fixed-up) und die provisorisch festgelegten Bibliotheksprogramme in dem Bibliotheks-Cache speichert; und
die zweite Verknüpfungseinrichtung (32) das vollständig verknüpfte Programmabbild mit zugehörigen Bibliotheksprogrammen in dem Abbild-Cache (144) speichert.
33. Das Abbild-Cache-System nach Anspruch 22, wobei das bestimmte Programm und die Bibliotheksprogramme objektorientierte Programme sind.
34. Das Abbild-Cache-System nach Anspruch 28, wobei die zweite Sucheinrichtung (26) die Suche in Erwiderung einer Anforderung zum Verknüpfen des bestimmten Programms durchführt, sofern das vollständig verknüpfte Programmabbild des bestimmten Programms von dem dynamischen Verknüpfungssystem nicht aufgefunden wird; und
eine mit der zweiten Sucheinrichtung gekoppelte erste Verknüpfungseinrichtung (38) zum Verknüpfen eines aufgefundenen Bibliotheksprogramms mit dem bestimmten Programm, sofern das gefundene Bibliotheksprogramm in dem Bibliotheks- Cache gefunden wird.
35. Das Abbild-Cache-System nach Anspruch 34, wobei die erste Sucheinrichtung ferner aufweist:
eine mit dem Bibliotheks-Cache (148) gekoppelte zweite Sucheinrichtung (26) zum Durchsuchen des Bibliotheks-Cache, zum Bestimmen, ob der Bibliotheks-Cache ein unverknüpftes Bibliotheksprogramm enthält, das mit einem der zugehörigen Bibliotheksprogramme übereinstimmt.
36. Das Abbild-Cache-System nach Anspruch 34, ferner aufweisend:
eine mit dem Speicher des Computers gekoppelte zweite Sucheinrichtung (26) zum Auffinden der unverknüpften Bibliotheksprogramme, welche mit den zugehörigen Bibliotheksprogrammen übereinstimmen; und
eine mit der zweiten Sucheinrichtung gekoppelte zweite Verknüpfungseinrichtung (32) zum Verknüpfen der unverknüpften Bibliotheksprogramme miteinander und mit den aufgefundenen Bibliotheksprogrammen und mit der unverknüpften Kopie des bestimmten Programms, wobei ein vollständig verknüpftes Programmabbild des bestimmten Programms mit zugehörigen Bibliotheksprogrammen erzeugt wird.
37. Das Abbild-Cache-System nach Anspruch 36, wobei:
die zweite Verknüpfungseinrichtung (32) irgendwelche der unverknüpften Bibliotheksprogramme provisorisch festlegt (fixed-up) und die provisorisch festgelegten Bibliotheksprogramme in den Bibliotheks-Cache speichert.
38. Das dynamische Verknüpfungssystem nach Anspruch 37, wobei die Bibliotheksprogramme in dem Bibliotheksprogramm- Cache (148) partiell verknüpfte Bibliotheksprogramme sind.
39. Das dynamische Verknüpfungssystem nach Anspruch 38, wobei die Anwendungsprogramme und die Bibliotheksprogramme objekt orientierte Programme sind.
DE69427174T 1993-04-13 1994-03-14 Dynamische Hochleistungsprogrammverknüpfung durch Cachespeicherung Expired - Fee Related DE69427174T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/046,827 US5475840A (en) 1993-04-13 1993-04-13 High performance dynamic linking through caching

Publications (2)

Publication Number Publication Date
DE69427174D1 DE69427174D1 (de) 2001-06-13
DE69427174T2 true DE69427174T2 (de) 2002-01-03

Family

ID=21945612

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69427174T Expired - Fee Related DE69427174T2 (de) 1993-04-13 1994-03-14 Dynamische Hochleistungsprogrammverknüpfung durch Cachespeicherung

Country Status (4)

Country Link
US (1) US5475840A (de)
EP (1) EP0620522B1 (de)
JP (1) JPH07160483A (de)
DE (1) DE69427174T2 (de)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3553991B2 (ja) * 1993-05-27 2004-08-11 キヤノン株式会社 プログラム制御方法
US5748961A (en) * 1993-07-12 1998-05-05 Digital Equipment Corporation Efficient method and apparatus for compiling and linking modules of computer code in a large software system
US5379432A (en) * 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
JP3527765B2 (ja) * 1993-11-29 2004-05-17 富士通株式会社 プログラムキャッシュ装置
JPH07327093A (ja) * 1994-06-01 1995-12-12 Ekushingu:Kk データ伝送装置
JPH08241216A (ja) * 1995-01-06 1996-09-17 Mitsubishi Electric Corp 計算機システム
US5797015A (en) * 1995-04-18 1998-08-18 Pitney Bowes Inc. Method of customizing application software in inserter systems
US6332168B1 (en) 1995-09-28 2001-12-18 International Business Machines Corporation Method of, system for, and computer program product for providing a run time subsystem for run time libraries
US5797014A (en) * 1995-12-14 1998-08-18 International Business Machines Corporation Method for reducing processor cycles used for global offset table address computation in a position independent shared library
US5774722A (en) * 1995-12-14 1998-06-30 International Business Machines Corporation Method for efficient external reference resolution in dynamically linked shared code libraries in single address space operating systems
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6466947B2 (en) * 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6182083B1 (en) 1997-11-17 2001-01-30 Sun Microsystems, Inc. Method and system for multi-entry and multi-template matching in a database
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US6003095A (en) * 1996-10-31 1999-12-14 International Business Machines Corporation Apparatus and method for demand loading a dynamic link library
US6769126B1 (en) 1996-12-10 2004-07-27 International Business Machines Corporation Apparatus and method for demand load analysis
US5946486A (en) * 1996-12-10 1999-08-31 International Business Machines Corporation Apparatus and method for tracing entries to or exits from a dynamic link library
US6052778A (en) * 1997-01-13 2000-04-18 International Business Machines Corporation Embedded system having dynamically linked dynamic loader and method for linking dynamic loader shared libraries and application programs
US5767978A (en) * 1997-01-21 1998-06-16 Xerox Corporation Image segmentation system
US6363436B1 (en) 1997-01-27 2002-03-26 International Business Machines Corporation Method and system for loading libraries into embedded systems
US7203769B2 (en) * 1997-03-14 2007-04-10 International Business Machines Corporation Bootstrapping technique for distributed object client systems
US5933630A (en) * 1997-06-13 1999-08-03 Acceleration Software International Corporation Program launch acceleration using ram cache
US6957427B1 (en) 1997-10-15 2005-10-18 Sun Microsystems, Inc. Remote object activation in a distributed system
US6421827B1 (en) 1997-12-17 2002-07-16 International Business Machines Corporation System and method for detecting and reordering loading patterns
US6292843B1 (en) 1998-01-16 2001-09-18 International Business Machines Corporation Quick loading of run time dynamic link library for OS/2
WO1999044296A2 (en) 1998-02-26 1999-09-02 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6604127B2 (en) * 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
AU2787799A (en) 1998-02-26 1999-09-15 Sun Microsystems, Inc. Method and system for deterministic hashes to identify remote methods
US20020046228A1 (en) * 1998-03-20 2002-04-18 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6591337B1 (en) 1999-04-05 2003-07-08 Lsi Logic Corporation Method and apparatus for caching objects in a disparate management environment
US6901518B1 (en) 1999-04-08 2005-05-31 Sun Microsystems, Inc. Method and system for establishing trust in downloaded proxy code
US6845393B1 (en) 1999-06-14 2005-01-18 Sun Microsystems, Inc. Lookup discovery service in a distributed system having a plurality of lookup services each with associated characteristics and services
US6928641B1 (en) * 1999-10-08 2005-08-09 Texas Instruments Incorporated Method and system for far branch and call instructions
US6542167B1 (en) 2000-01-28 2003-04-01 Wind River Systems, Inc. System and method for flexible software linking
US7577834B1 (en) 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
AU2001259342A1 (en) 2000-05-15 2001-11-26 Superspeed Software, Inc. System and method for high-speed substitute cache
US6957237B1 (en) 2000-06-02 2005-10-18 Sun Microsystems, Inc. Database store for a virtual heap
US20020129336A1 (en) * 2000-12-19 2002-09-12 Bolding Joe D. Automatic symbol table selection in a multi-cell environment
US7296275B2 (en) 2001-01-04 2007-11-13 Sun Microsystems, Inc. Method and system for passing objects in a distributed system using serialization contexts
US20030009750A1 (en) * 2001-07-09 2003-01-09 Robert Hundt Optimizing an executable computer program having linkage functions
US7660887B2 (en) 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US20030051029A1 (en) 2001-09-07 2003-03-13 Reedy Dennis G. Dynamic provisioning of sevice components in a distributed system
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7805710B2 (en) * 2003-07-15 2010-09-28 International Business Machines Corporation Shared code caching for program code conversion
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US8704837B2 (en) 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US7231632B2 (en) * 2004-04-16 2007-06-12 Apple Computer, Inc. System for reducing the number of programs necessary to render an image
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
KR100617698B1 (ko) * 2004-06-07 2006-08-28 삼성전자주식회사 기능별 데이터 저장을 위한 바이너리 파일 생성 장치 및방법과 그 방법이 저장된 컴퓨터 판독 가능한 저장 매체
US20060075394A1 (en) * 2004-10-01 2006-04-06 Tatsuya Iwamoto Dynamic loading and unloading for processing unit
JP4794331B2 (ja) * 2006-03-15 2011-10-19 株式会社日立ソリューションズ 任意アプリケーションによる外部記憶装置への情報持ち出し制御方法
US7930710B2 (en) * 2006-05-16 2011-04-19 Panasonic Corporation Program start-up unit, program start-up method, recording medium with start-up processing program recorded, and integrated circuit
US7930709B2 (en) * 2006-10-02 2011-04-19 Red Hat, Inc. Methods and apparatus for a dynamic linker speed up
US8274520B2 (en) * 2007-06-08 2012-09-25 Apple Inc. Facilitating caching in an image-processing system
US8402410B2 (en) 2007-08-27 2013-03-19 Samsung Electronics Co., Ltd. Method and apparatus for managing configuration memory of reconfigurable hardware
US10410117B2 (en) 2008-09-21 2019-09-10 Brainchip, Inc. Method and a system for creating dynamic neural function libraries
US9218373B2 (en) * 2012-10-10 2015-12-22 Business Objects Software Ltd. In-memory data profiling
US10606611B2 (en) 2017-06-02 2020-03-31 Apple Inc. Techniques for performing dynamic linking

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5269021A (en) * 1989-10-12 1993-12-07 Texas Instruments Incorporated Multiprocessor software interface for a graphics processor subsystem employing partially linked dynamic load modules which are downloaded and fully linked at run time
JPH04178731A (ja) * 1990-11-13 1992-06-25 Hitachi Ltd オブジェクト指向処理系におけるメソッド・キャッシュ情報の再利用方式

Also Published As

Publication number Publication date
DE69427174D1 (de) 2001-06-13
EP0620522A3 (de) 1996-05-01
US5475840A (en) 1995-12-12
EP0620522B1 (de) 2001-05-09
EP0620522A2 (de) 1994-10-19
JPH07160483A (ja) 1995-06-23

Similar Documents

Publication Publication Date Title
DE69427174T2 (de) Dynamische Hochleistungsprogrammverknüpfung durch Cachespeicherung
DE69400406T2 (de) System und methode zur lokalisierung von geteilten bibliotheken
DE69707752T2 (de) Verfahren und System zur Klassenspeicherung in einem Festspeicher
DE69800909T2 (de) Verfahren und Vorrichtung zur Optimierung der präzisen Speicherbereinigung, bei der Programmschleifen mit Zeiger-Feldern verwendet werden
DE60006410T2 (de) Verfahren und system zum verteilen von objektorientierten rechnerprogrammen
DE69924857T2 (de) Programm-kode-umwandlung
DE69838756T2 (de) Die verarbeitung von eingabe/ausgabeanforderungen von mehreren treibern ermöglichen dateisystem-primitivroutine in einem mehrschicht-treiber-e/a-system
DE69321255T2 (de) Vorrichtung zur ausführung vom mehreren programmteilen mit verschiedenen objektcodetypen in einem einzigen programm oder in einer prozessorumgebung
DE69621975T2 (de) Verfahren und System zum Ermöglichen der Zusammenarbeit von zur Ausführung auf unterschiedlichen Betriebssystemen geschriebenen Prozessen
DE60208710T2 (de) Plattformunabhängige im-voraus-kompilierung
DE69424597T2 (de) Erweiterbares Dateiensystem
DE69503065T2 (de) Objektorientierte vorrichtung für konfigurationsverlaufsverwaltung
DE3855475T2 (de) Software-Verwaltungsstruktur
DE69701623T2 (de) Ein globales registersystem und verfahren basiert auf objektorientierter programmierung
DE69938218T2 (de) Vorrichtung und Verfahren zum Laden eines Java Anwendungsprogramms
DE69802437T2 (de) Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen
DE69719620T2 (de) Vorrichtung und Verfahren zur Bestimmung von Server-Cluster-Topologien
DE69800686T2 (de) Verfahren und Gerät für effizienten Operationen auf primären Typwerten ohne statisches Überladen
DE19945992B4 (de) Dynamisch optimierender Objektcode-Übersetzer zur Architekturemulation und dynamisches optimierendes Objektcode-Übersetzungsverfahren
DE69814174T2 (de) Java laufzeitsystem mit veränderter sammlung von konstanten
DE69510572T2 (de) Verfahren und Vorrichtung zur Run-Time-Fehlerprüfung unter Verwendung dynamischer Programmmodifikation
DE69523142T2 (de) Verteiltes datenbanksystem
DE60035745T2 (de) Verfahren zum bei Bedarf Laden und Ausführen einer Netzwerkanwendung
DE19681256C2 (de) Ausführung von Anwendungen am Platz vom Speicher
DE69918334T2 (de) Erzeugung von kompilierten programmen für interpretative laufzeitumgebungen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee