[go: up one dir, main page]

DE19681256C2 - Ausführung von Anwendungen am Platz vom Speicher - Google Patents

Ausführung von Anwendungen am Platz vom Speicher

Info

Publication number
DE19681256C2
DE19681256C2 DE19681256T DE19681256T DE19681256C2 DE 19681256 C2 DE19681256 C2 DE 19681256C2 DE 19681256 T DE19681256 T DE 19681256T DE 19681256 T DE19681256 T DE 19681256T DE 19681256 C2 DE19681256 C2 DE 19681256C2
Authority
DE
Germany
Prior art keywords
program
xip
segment
task
memory
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
DE19681256T
Other languages
English (en)
Other versions
DE19681256T1 (de
Inventor
John Garney
Clifton W Laney
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE19681256T1 publication Critical patent/DE19681256T1/de
Application granted granted Critical
Publication of DE19681256C2 publication Critical patent/DE19681256C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44568Immediately runnable code
    • G06F9/44573Execute-in-place [XIP]

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)
  • Memory System Of A Hierarchy Structure (AREA)

Description

Die vorliegende Erfindung betrifft ein Computersystem bzw. ein Verfahren zum Erzeugen bzw. zum Ausführen eines aus einem Nur-Lese-Speicher ausführbaren Programms.
Computeranwendungsprogramme (im folgenden Anwendung ge­ nannt) werden üblicherweise für die Ausführung aus einem Speicher mit wahlfreiem Zugriff (RAM) geschrieben und kompi­ liert, gegenüber welchem sowohl Schreiboperationen als auch Leseoperationen ausgeführt werden können. Diese "RAM-ge­ stützten" Anwendungen werden außerdem üblicherweise so ge­ schrieben, daß sie "verschiebbar" sind, d. h. von jedem Spei­ cherort aus ausführbar sind, wodurch sie es ermöglichen, daß der Speicher zu verschiedenen Zeiten für verschiedene Anwen­ dungen wiederverwendet werden kann und wodurch eine maximale Flexibilität bei der Zuordnung des Speichers zu Anwendungs­ programmen geschaffen wird. Aus diesem Grund werden Spei­ cherreferenzen einer "verschiebbaren" und "RAM-gestützten" Computeranwendung zur Ladezeit dynamisch aufgelöst, da ihre genauen Orte zur Kompilierzeit nicht garantiert werden kön­ nen.
Speicherreferenzen in einer Anwendung können im allge­ meinen in zwei Kategorien eingeteilt werden; es gibt Spei­ cherreferenzen zu Speicherorten innerhalb der Anwendung selbst, d. h. interne Referenzen, oder Speicherreferenzen zu Speicherorten außerhalb der Anwendung, d. h. externe Referen­ zen. Zu den besonderen Beispielen für interne Referenzen ge­ hören Funktionsaufrufe, die Segmentgrenzen einer segmentier­ ten Anwendung überschreiten. Zu den besonderen Beispielen für externe Referenzen gehören Aufrufe zu Funktionen, die von dem Betriebssystem oder der Umgebung zur Verfügung ge­ stellt werden. Die relativen Orte dieser Speicherreferenzen (innerhalb der Anwendung), die auch als "Korrektur- bzw. Patch-Stellen" bekannt sind, sind üblicherweise als Teil der "Verschiebungsinformationen" der Anwendung gekennzeichnet und in diesen enthalten.
Wenn die Anwendung zur Vorbereitung der Ausführung in den RAM geladen wird, verwendet das Anwendungsladeprogramm sein Wissen über die zugeordneten Speicherorte der Anwen­ dung, die relativen Orte der "Patch-Stellen" und die Spei­ cherorte der Eingangspunkte der externen Funktionen, um die geeigneten Referenzwerte zu bestimmen oder "aufzulösen", die in dem Anwendungscode enthalten sein sollten. Das Ladepro­ gramm "korrigiert" oder "berichtigt" dann die Anwendung, in­ dem es die aufgelösten Referenzwerte in die "Patch-Stellen" der geladenen Anwendung schreibt.
Da in "Schreib-Einmal"-Speicher, wie z. B. Nur-Lese-Spei­ cher (ROM), und "Schreib-Selten"-Speicher, wie z. B. EPROM oder Flash-Speicher, nicht oder nicht "leicht" geschrieben werden kann, können übliche, in der oben beschriebenen Weise entwickelte Programme nicht "berichtigt" werden, wenn sie in diesen "Schreib-Einmal/Selten"-Speichern gespeichert sind und müssen am Platz ausgeführt werden bzw. "executed in place" (XIP). Traditionsgemäß müssen daher alle XIP-Anwen­ dungen speziell geschrieben werden, um sicherzustellen, daß es zur Zeit, wenn sie (d. h. das absolute Codeabbild) in dem "Schreib-Einmal/Selten"-Speicher gespeichert werden, keine unaufgelösten Referenzen gibt. In der Praxis ist dies für jede komplexe Folge von Anwendungen ein extrem komplexes Projekt, insbesondere wenn externe Verbindungsbibliotheken beteiligt sind.
Historisch bedingt waren die meisten XIP-Anwendungen au­ ßerdem für eingebettete Anwendungen entwickelt worden. Auf­ grund der Vorgaben der eingebetteten Umgebungen verwenden XIP-Anwendungen gewöhnlich Überlagerungen. Außerdem wird zu jedem Zeitpunkt nur eine XIP-Anwendung ausgeführt; mit ande­ ren Worten, es findet kein Multitasking von XIP-Anwendungen statt.
Mit dem Aufkommen der tragbaren Rechner und der Perso­ nalcomputer-Memory-Card-International-Association(PCMCIA)- Karten gibt es ein erneutes Interesse an XIP-Anwendungen. Wenn Anwendungen vom ROM, Flash-Speicher, PCMCIA-Karten oder dgl. am Platz ausgeführt werden können, bedeutet dies, daß weniger RAM und/oder Plattenspeicher zur Verfügung gestellt werden, wobei dies zu einer Verringerung der Größe und/oder des Gewichtes eines Notizbuchcomputers führen würde. Es ist besonders wünschenswert, daß neue XIP-Anwen­ dungen "leicht" entwickelt werden können und daß die große Anzahl existierender "RAM-gestützter" Anwendungen automa­ tisch für die Ausführung am Platz "konvertiert" werden kann, so daß sie nicht neu geschrieben zu werden braucht. Außerdem ist es wünschenswert, daß bei XIP-Anwendungen genau wie bei "RAM-gestützten" Anwendungen Multitasking möglich ist.
Es ist wenigstens ein früherer Versuch bekannt, Anwen­ dungen am Platz vom ROM für eine. Reihe von nun nicht mehr existierenden tragbaren Computern auszuführen. Jedoch ähnel­ ten diese XIP-Anwendungen den traditionellen eingebetteten XIP-Anwendungen, d. h. sie waren unter Verwendung von Überla­ gerungen und ohne unaufgelöste Anwendungen speziell ge­ schrieben. Außerdem mußten die XIP-Anwendungen ihr eigenes Speichermanagement zur Verfügung stellen, einschließlich dem Ein- und Auslagern der geeigneten Speicherbereiche in den und aus dem Adreßraum des Prozessors.
Nachfolgend wurde eine PCMCIA-Standardanwendungs-Pro­ grammierschnittstelle bzw. "standard application programming interface" (API) für XIP-Anwendungen entwickelt (vgl.: PCMCIA Standards, Release 2.01, Release Records, November 1992, Personal Computer Memory Card International Associa­ tion, Abschnitt 6. "Execute In Place (XIP)"). Sie ähnelte demjenigen, was auf der nun nicht mehr existierenden Reihe von Notizbuchcomputern geschah darin, daß die XIP-Anwendun­ gen unter Verwendung von Überlagerungen und ohne jegliche unaufgelösten Verschiebungsreferenzen speziell geschrieben werden mußten. Jedoch vereinheitlichte und unterstützte die PCMCIA-API das benötigte Speichermanagement, wobei den XIP- Anwendungen das Anbieten ihres eigenen Speichermanagements abgenommen wurde. Die Speichermanagementunterstützung ent­ spricht derjenigen von Erweiterungsspeichern (EMS) bei Per­ sonalcomputern.
Es wird eine Lösung benötigt, die es konventionell ent­ wickelten "RAM-gestützten" Anwendungen ermöglicht, am Platz in "Schreib-Einmal/Selten"-Speichern, d. h. ROM, EPROM, EE­ PROM, Flash-Speicher usw., in der oben beschriebenen ge­ wünschten Weise gespeichert und ausgeführt werden zu können.
Diese Aufgabe wird erfindungsgemäß durch ein Computersy­ stem mit den Merkmalen des Anspruchs 1 bzw. mit den Merkma­ len des Anspruchs 10 bzw. durch ein Verfahren mit den Merk­ malen des Anspruchs 22 oder denen des Anspruchs 25 gelöst.
Die gewünschten Ergebnisse werden vorteilhafterweise da­ durch erzielt, daß eine Anzahl neuer Dienstprogramm- und Laufzeitfunktionen einem ansonsten konventionellen Betriebs­ system eines Computersystems zur Verfügung gestellt werden, das einen virtuellen Speicher und Multitasking unterstützt. Zu diesen neuen Dienstprogramm- und Laufzeitfunktionen gehö­ ren neue Binde-, Installations-, Speichermanagement-, Lade- und Taskmanagementfunktionen. Die neue Bindefunktion wird dazu verwendet, um unaufgelöste Referenzen einer konventio­ nellen "RAM-gestützten" Anwendung zum Teil aufzulösen, so daß die zum Teil aufgelöste Anwendung zusammen mit den neuen Laufzeitfunktionen aus einem "Schreib-Einmal/Selten"-Spei­ chermedium am Platz ausgeführt werden kann. Die neue In­ stallationsfunktion wird verwendet, um die zum Teil aufgelö­ ste Anwendung in einem "Schreib-Selten"-Speichermedium zu installieren. Die neue Speichermanagementfunktion wird ver­ wendet, um einen vorgegebenen Abschnitt der Speichermanage­ mentdatenstruktur des Betriebssystems für die "Abbildung" des (der) physischen Adreßbereichs (-bereiche) einer instal­ lierten Anwendung in einen logischen Adreßraum zu reservie­ ren, wodurch der "abgebildeten" Anwendung eine Ausführung am Platz ermöglicht wird. Die neue Ladefunktion wird verwendet, um ein Pseudoladen einer XIP-Anwendung durchzuführen und die Ausführung einer XIP-Anwendung zu beginnen. Die neue Taskma­ nagementfunktion wird verwendet, um eine gemeinsame Nutzung des vorgegebenen Bereichs der Speichermanagementdatenstruk­ tur des Betriebssystems durch mehrere XIP-Anwendungen zu er­ leichtern, wodurch von dem Betriebssystem ein Multitasking der XIP-Anwendungen sowie der Nicht-XIP-Anwendungen oder konventionellen "RAM-gestützten" Anwendungen ermöglicht wird.
Die neue Bindefunktion liest die ausführbare Datei einer konventionellen "RAM-gestützten" Anwendung und löst zum Teil externe sowie interne Referenzen mit Hilfe eines vorgegebe­ nen Abschnitts der Speichermanagementdatenstruktur des Be­ triebssystems auf, der zur Zeit der Systeminitialisierung reservierbar ist, so daß diese zum Teil aufgelösten Referen­ zen zur Ausführungszeit vollständig aufgelöst werden können, indem der reservierte vorgegebene Abschnitt der Speicher­ managementdatenstruktur des Betriebssystems mit der richti­ gen physischen Adresse berichtigt wird. Außerdem struktu­ riert die neue Bindefunktion einige externe Referenzen in indirekte externe Referenzen über einen R/W-Datenbereich um. Die neue Bindefunktion berichtigt außerdem verschiedene Informationstabellen in der ausführbaren Datei und regene­ riert die ausführbare Datei. Die neue Installationsfunktion installiert die regenerierte ausführbare Datei auf einem "Schreib-Selten"-Medium, wobei die strukturellen gegenseiti­ gen Abhängigkeiten, d. h. örtliche Beziehungen der verschie­ denen Teile der regenerierten ausführbaren Datei, erhalten bleiben.
Die neue Speichermanagementfunktion reserviert den vor­ gegebenen Abschnitt der Speichermanagementdatenstruktur des Betriebssystems, indem sie veranlaßt, daß dieser zur System­ initialisierungszeit der neuen Speichermanagementfunktion zugeordnet wird. Die neue Ladefunktion führt eine Pseudo­ ladung einer installierten Anwendung durch, indem sie veran­ laßt, daß RAM dem R/W-Datenbereich der Anwendung zugeordnet wird, und indem der vorab zugeordnete, vorgegebene Abschnitt der Speichermanagementdatenstruktur des Betriebssystems mit den richtigen physischen Adressen berichtigt wird. Die neue Ladefunktion informiert außerdem die neue Taskmanagement­ funktion über jede neu "geladene" XIP-Anwendung.
Zur Systeminitialisierungszeit erzeugt die neue Taskma­ nagementfunktion eine private XIP-Taskmanagementdatenstruk­ tur für XIP-Anwendungen. Als Antwort auf jeden Hinweis auf eine neue XIP-Anwendung von der neuen Ladefunktion erzeugt die neue Taskmanagementfunktion für die neu "geladene" XIP- Anwendung ein neues XIP-Taskmanagementdatenelement in der XIP-Taskmanagementdatenstruktur. Jedes XIP-Taskmanagement­ datenelement enthält die Berichtigungsdaten für den vorab zugeordneten, vorgegebenen Abschnitt der Speichermanagement­ datenstruktur des Betriebssystems, einschließlich Daten, um eine ausgewählte Untermenge des vorab zugeordneten, vorgege­ benen Abschnitts mit einer geeigneten Untermenge des dyna­ misch zugeordneten Abschnitts der Speichermanagementdaten­ struktur des Betriebssystems in Verbindung zu bringen. Au­ ßerdem verwaltet die neue Taskmanagementfunktion aktuelle XIP-Taskinformationen. Wird dem neuen Taskmanagement von dem Betriebssystem ein Taskwechsel mitgeteilt, bestimmt es, ob eine XIP-Anwendung beteiligt ist. Wenn eine XIP-Anwendung beteiligt ist, lagert die neue Taskmanagementfunktion die richtigen Berichtigungsspeichermanagementdaten in den vorab zugeordneten, vorgegebenen Bereich der Speichermanagementda­ tenstruktur ein und aktualisiert dementsprechend die aktuel­ len XIP-Taskinformationen.
Bei einigen Ausführungsbeispielen sind die neuen Binde- und Installationsfunktionen als eigenständige Dienstprogram­ me ausgeführt, während die neuen Speichermanagement-, Lade- und Taskmanagementfunktionen ebenfalls als eigenständige "Erweiterungen" des Betriebssystems ausgeführt sind. Bei an­ deren Ausführungsbeispielen können die neuen Binde-, Spei­ chermanagement-, Lade- und Taskmanagementfunktionen als in­ tegraler Bestandteil der entsprechenden Teile des Betriebs­ systems ausgeführt sein.
Bei einem "eigenständiges Programm/Erweiterung"-Ausfüh­ rungsbeispiel, welches für die WindowsTM-Betriebssystemumge­ bung entwickelt wurde (Windows ist eine Marke der Microsoft Corporation aus Redmond, Washington), sind die neuen Binde- und Installationsfunktionen mit zwei eigenständigen ausführ­ baren Programmen (EXEs), XIP_Linker bzw. XIP-Binder und XIP_Installer bzw. XIP-Installierer, ausgeführt, während die neuen Speichermanagement-, Lade- und Taskmanagementfunktio­ nen zusammen mit einem dynamischen Verbindungsbiblio­ thek(DLL)-XIP_Loader bzw. -XIP-Lader und einem virtuellen Gerätetreiber(VxD)-XIP_Mgmt bzw. -XIP-Management implemen­ tiert sind.
Der XIP_Linker löst externe sowie interne Referenzen ei­ ner ansonsten konventionellen WindowsTM-Anwendung zu einem vorgegebenen Bereich von Segmentselektoren zum Teil auf, wo­ durch es ermöglicht wird, daß diese teilweise aufgelösten Referenzen zur Ausführungszeit vollständig aufgelöst werden, indem die zugehörigen Segmentdeskriptoren mit den geeigneten physischen Adressen berichtigt werden. Bei externen Referen­ zen unter Beteiligung von FAR CALLs bzw. FERN-AUFRUFEN strukturiert der XIP_Linker ferner die externen Referenzen in indirekte externe Referenzen über das automatische R/W- Datensegment der Anwendung um. Der XIP_Linker fügt außerdem ein selbstladenes Segment mit einer komplementären Aufruflo­ gik zum Aufrufen von XIP_Loader ein, bevor die verschiedenen Informationstabellen berichtigt werden und die ausführbare Datei regeneriert wird. Der XIP_Installer installiert die regenerierte ausführbare Datei auf einem "Schreib-Selten"- Speichermedium, wobei die relativen Orte der Segmente erhalten bleiben.
Zur Systeminitialisierungszeit ordnet das XIP_Mgmt vorab mit dem Kernprogramm bzw. Kernel von Windows den vorgegebe­ nen Bereich von Segmentselektoren zu und erzeugt eine Task­ managementstruktur. Zur "Lade"-Zeit einer XIP-Anwendung wird das selbstladende Segment der XIP-Anwendung geladen und ihm wird die Steuerung vom Windows-Ladeprogramm übergeben. Das selbstladene Segment wiederum gibt die Ausführungssteuerung an den XIP_Loader. Bei Empfang der Steuerung aktualisiert der XIP_Loader die Modultabelle der XIP-Anwendung, wobei die vorab zugeordneten, vorgegebenen Segmentselektoren mit den physischen Adressen des "Schreib-Einmal/Selten"-Mediums be­ richtigt werden, veranlaßt das Windows-Ladeprogramm RAM für das (die) automatische(n) R/W-Datensegment(e) der geladenen XIP-Anwendung zuzuordnen, wobei die XIP-Anwendung pseudoge­ laden wird. Beim "Laden" der XIP-Anwendung ruft der XIP_Loader außerdem das XIP_Mgmt auf.
Das XIP_Mgmt erzeugt beim Aufruf ein XIP-Taskmanagement­ datenelement in der XIP-Taskmanagementdatenstruktur für die XIP-Anwendung. Das XIP-Taskmanagementdatenelement enthält alle Berichtigungsdaten für die Segmentdeskriptoren des vorab zugeordneten, vorgegebenen Bereichs von Segmentselek­ toren, einschließlich Daten, um einige der vorab zugeordne­ ten Segmentselektoren und einige der dynamisch zugeordneten Segmentselektoren miteinander zu verbinden. Zur Zeit der Taskinitialisierung und des Taskwechsels einer XIP-Anwendung lagert das XIP_Mgmt die richtige Menge von Segmentselektor­ berichtigungen für die aktuelle XIP-Task in den Segmentdes­ kriptoren des vorab zugeordneten, vorgegebenen Bereichs von Segmentselektoren ein. Das XIP_Mgmt verfolgt außerdem, wel­ che XIP-Anwendung die aktuelle XIP-Task ist. Zur Taskab­ schlußzeit löscht das XIP_Mgmt das Taskmanagementdatenele­ ment der endenden XIP-Task. Das XIP_Mgmt wird über einen Taskstart, einen Taskwechsel und ein Taskende vom XIP_Loader informiert, der sich wiederum auf TOOLHELP.DLL von WindowsTM verläßt, um informiert zu werden.
Außerdem ist eine dritte WindowsTM-EXE XIP_Init, vorge­ sehen, um bestimmte einmalige Betriebscharakteristiken von WindowsTM zu adressieren. Der XIP_Init wird verwendet, um ein Blind-Modul bzw. Dummy-Modul unter Verwendung eines Blindsegmentes zu erzeugen und um alle zugehörigen Segment­ deskriptoren des vorab zugeordneten, vorgegebenen Bereichs von Segmentselektoren zu berichtigen, damit sie unter Ver­ wendung von XIP_Mgmt zur Systemstartzeit auf das Blindseg­ ment zeigen. Der XIP_Init ist in den während des Starts von WindowsTM ausgeführten Programme als Teil enthalten. Zusätz­ lich wird der XIP_Init zur Berichtigung von absichtlich er­ zeugten "bedeutungsvollen fehlerhaften Zeigern" verwendet, wenn von einer laufenden XIP-Anwendung auf sie verwiesen wird.
Schließlich ist eine WindowsTM-COM, Card_Mapper bzw. Karten-Abbilder, zur Ergänzung von WindowsTM vorgesehen, um eine eingefügte PCMCIA-Karte in einen oder mehrere vorgege­ bene Bereiche von physischen Adressen zur Zeit der Einfügung der PCMCIA-Karte abzubilden.
Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
Im folgenden wird die Erfindung anhand von Ausführungs­ beispielen näher beschrieben, die anhand der beigefügten Zeichnung erläutert werden, in der gleiche Bezugszeichen ähnliche Elemente bezeichnen, und in der:
Fig. 1 ein beispielhaftes Computersystem zeigt;
Fig. 2 die Abbildung von E/A-Einheiten in den physischen Adreßraum zeigt, und die Abbildung von logischen Adreßräumen in den physischen Adreßraum, die von dem beispielhaften Com­ putersystem gemäß Fig. 1 unterstützt werden;
Fig. 3a-3b zeigen verschiebene Aspekte des Segmentie­ rungsspeichermanagements, das von dem beispielhaften Compu­ tersystem gemäß Fig. 1 unterstützt wird;
Fig. 4 zeigt die wichtigsten Softwarekomponenten des beispielhaften Computersystems gemäß Fig. 1;
Fig. 5a-5b zeigen die Dienstprogramm- und Kernel- bzw. Kernerweiterungen der vorliegenden Erfindung detaillierter;
Fig. 6a-6g zeigen ein Ausführungsbeispiel der Dienstpro­ grammerweiterungen zur Unterstützung von für WindowsTM ent­ wickelten XIP-Anwendungen detaillierter;
Fig. 7a-7d zeigen ein Ausführungsbeispiel der für Windo­ wsTM entwickelten Kernelerweiterungen zur Unterstützung von XIP-Anwendungen detaillierter;
Fig. 8 zeigt die von einem Ausführungsbeispiel eines XIP-Binders ausgeführten Schritte des Umstrukturierens und der teilweisen Auflösung von Speicherreferenzen einer anson­ sten konventionellen "RAM-gestützten" Anwendung;
Fig. 9 zeigt den Schritt "analysiere und zeichne auf" gemäß Fig. 8 detaillierter;
Fig. 10 zeigt den Schritt "erzeuge XIP-Anwendung" gemäß Fig. 8 detaillierter;
Fig. 11a-11b zeigen den Schritt "erzeuge XIP-Datei" gemäß Fig. 10 detaillierter;
Fig. 12a-12c zeigen den Schritt "löse Verschiebungselemente auf" gemäß Fig. 10 detaillierter;
Fig. 13a-13b zeigen den Schritt "verbessere Ort" gemäß Fig. 12s detaillierter;
Fig. 14 zeigt den Schritt "endgültige Korrektur" gemäß Fig. 10 detaillierter;
Fig. 15 zeigt die zur Systeminitialisierungszeit von einem Ausführungsbeispiel des XIP-Managements ausgeführten Arbeits­ schritte;
Fig. 16 zeigt die zur WindowsTM-Startzeit von einem Ausfüh­ rungsbeispiel des ergänzenden XIP-Initiators und des XIP- Managements ausgeführten Arbeitsschritte;
Fig. 17 zeigt die zur "Lade"-Zeit der XIP-Anwendung von dem XIP-Lader ausgeführten Arbeitsschritte;
Fig. 18a-18c, 19-21 zeigen die zur Taskstart-, Taskein­ gangs, Taskausgangs- und Taskendezeit von einem Ausführungsbei­ spiel des XIP-Managements ausgeführten Arbeitsschritte.
DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
In der folgenden Beschreibung werden zur Erklärung spe­ zielle Zahlen, Materialien und Konfigurationen angegeben, um ein besseres Verständnis der vorliegenden Erfindung zu ermögli­ chen. Jedoch ist es für den Fachmann klar, daß die vorliegende Erfindung ohne diese speziellen Details ausgeführt werden kann. In anderen Fällen sind bekannte Merkmale weggelassen oder ver­ einfacht worden, um die vorliegende Erfindung nicht unnötig zu belasten.
Es wird nun auf Fig. 1 Bezug genommen, in der ein Block­ schaltbild dargestellt ist, das ein die Lehre der vorliegenden Erfindung enthaltendes beispielhaftes Computersystem zeigt. Das beispielhafte Computersystem 10 enthält einen Prozessor 12, einen Cache-Speicher 14, einen Hauptspeicher 16, einen ROM 18a, einen Flash-Speicher 18b, einen Speichercontroller 20 und einen Prozessorbus 22, die miteinander in der dargestellten Weise ge­ koppelt sind. Außerdem enthält das beispielhafte Computersystem 10 einen E/A-Controller 24, eine PCMCIA-Schnittstelle 26, eine PCMCIA-Karte 28, andere E/A-Einheiten 30 und einen E/A-Bus 32, die in der dargestellten Weise miteinander gekoppelt sind. Die E/A- und Speichercontroller 20 und 24 sind außerdem miteinander gekoppelt und enthalten eine Schaltung zum Abbilden von E/A- Einheiten in den physischen Adreßraum des beispielhaften Compu­ tersystems 10. Die PCMCIA-Karte 28 ist lösbar mit der PCMCIA- Schnittstelle 26 gekoppelt, wodurch es möglich ist, daß ver­ schiedene PCMCIA-Karten 28 mit verschiedenen Programm- und/oder Dateninhalten mit der PCMCIA-Schnittstelle 26 verbunden werden können. Zu den anderen Einheiten 30 können gewöhnliche E/A-Ein­ heiten gehören, wie z. B. eine Tastatur, eine Maus usw., sowie spezielle E/A-Einheiten, wie z. B. eine Einheit zum Schreiben auf ein EPROM.
Diese Elemente sollen bis auf ihre Verwendungsweise eine breite Kategorie von ähnlichen, in vielen Computersystemen zu findenden Elementen repräsentieren, deren Aufbau und Funktionen bekannt sind und ansonsten nicht weiter beschrieben werden. Die erfindungsgemäße Verwendungsweise dieser Elemente wird mit zu­ sätzlichen Hinweisen auf die verbleibenden Figuren weiter unten detaillierter beschrieben.
Nun wird sich Fig. 2 zugewendet, die die Abbildung von E/A- Einheiten in den physischen Adreßraum und die Abbildung von lo­ gischen Adreßräumen in den physischen Adreßraum zeigt, die von dem beispielhaften Computersystem 10 gemäß Fig. 1 unterstützt werden. Wie es dargestellt ist, werden der RAM 16, der ROM 18a, der Flash-Speicher 18b, die PCMCIA-Schnittstelle und -Karte 26 und 28 und die anderen speicherabgebildeten E/A-Einheiten 30 in verschiedene Bereiche des physischen Adreßraumes 36 abgebildet. Die Positionen dieser Bereiche kann in Abhängigkeit von der von dem Speicher- und E/A-Controller 20 und 24 und dem Betriebs­ system des beispielhaften Computersystems 10 zur Verfügung ge­ stellten Unterstützung vorab bestimmt oder dynamisch bestimmt werden.
Wie es dargestellt ist, unterstützt das beispielhafte Com­ putersystem 10 außerdem die Abbildung von mehreren logischen Adreßräumen 34 in den physischen Adreßraum 36. Wie weiter unten detaillierter beschrieben wird, unterstützt das beispielhafte Computersystem 10 außerdem ein Mehrsegmentmodell des Speicher­ managements, in dem jedes Segment ein separater logischer Adreßraum 34 ist. Diese logischen Adreßräume 34 werden üb­ licherweise direkt oder indirekt (über (nicht dargestellte) li­ neare. "Zwischen-"Adreßräume) in verschiedene Bereiche des phy­ sischen Adreßraums 36 abgebildet. Jedoch können sie direkt oder indirekt auf den gleichen Bereich des physischen Adreßraumes 36 abgebildet werden.
Fig. 3a-3b zeigen verschiedene grundlegende Aspekte des beispielhaften Computersystems 10 zur Unterstützung des Mehr­ segmentmodells des Speichermanagements. Wie dargestellt ist, enthält eine logische Adresse 38 einen Segmentselektor 40 und einen Offset 42. Der Segmentselektor 40 wird zur Auswahl eines Segmentdeskriptors 46 verwendet, der in einer globalen oder lo­ kalen Deskriptortabelle 52 gespeichert ist, die im Hauptspei­ cher 16 gespeichert ist. Die Deskriptortabellen-Basisdresse und der Deskriptortabellen-Grenzwert bzw. -Limit der globa­ len/lokalen Deskriptortabelle 52 sind in einem der Register 50 der globalen/lokalen Deskriptortabellen gespeichert, das Teil des Prozessors 12 ist. Ein Bereich des Segmentselektors 40 wird verwendet, um zu bestimmen, ob der Inhalt des globalen oder lo­ kalen Segmentregisters 50 verwendet werden soll.
Jeder Segmentdeskriptor 46 enthält eine Segmentbasisadresse 54 und einen Segmentgrenzwert bzw. ein Segmentlimit 56 eines Speichersegments. Eine Adreßübersetzungsschaltung 48, die ein Teil des Prozessors 12 ist, verwendet die Segmentbasisadresse 54, das Segmentlimit 56 und den Offset 42, um für die logische Adresse 38 die zugehörige physische Adresse zu erzeugen.
Obwohl die vorliegende Erfindung anhand des ein Segment­ speichermanagement unterstützenden beispielhaften Computer­ systems 10 beschrieben wird, ist für den Fachmann klar, daß die vorliegende Erfindung auch mit einem flachen bzw. unstruktu­ rierten Modell des Speichermanagements ausgeführt werden kann, da die Abbildung aller logischen Adreßräume 34 auf den gesamten physischen Adreßraum 36 funktionsmäßig äquivalent zu einem fla­ chen Speichermanagementmodell ist. Außerdem kann die vorlie­ gende Erfindung mit Seitenwechseln anstelle von oder in Kombi­ nation mit entweder dem flachen Modell oder dem Segmentierungs­ modell des Speichermanagements ausgeführt werden.
Es wird nun auf Fig. 4 Bezug genommen, in der ein Block­ schaltbild gezeigt ist, das die wichtigsten Softwareelemente des beispielhaften Computersystems 10 veranschaulicht. Wie es dargestellt ist, gehören zu den wichtigsten Softwarelementen die in die Lehre der vorliegenden Erfindung aufgenommenen An­ wendungen 58 und das Betriebssystem 60. Die Anwendungen 58 ent­ halten konventionelle "RAM-gestützte" Anwendungen 62 und XIP- Anwendungen 64, die gemäß der Lehre der vorliegenden Erfindung erzeugt und ausgeführt werden. Das Betriebssystem 60 enthält einen Kernel bzw. ein Kernteil 66, Dienstprogramme 70, Einhei­ tentreiber 74 und vorzugsweise ein Subsystem 76 mit Fenster­ technik.
Der Kernel 66 führt Speichermanagement-, Programmlade-, Taskablaufplanungs-, Taskmanagementfunktionen und verwandte Funktionen aus. Insbesondere enthält der Kernel 66 eine Spei­ chermanagementdatenstruktur zur Verwaltung der Speicherzuord­ nung zu den Anwendungen 58. Der Kernel 66 ist außerdem mit "erweiterten" Speichermanagement-, Lade- und Taskmanagement­ funktionen 68 für XIP-Anwendungen 64 gemäß der Lehre der vor­ liegenden Erfindung versehen, wie weiter unten detaillierter beschrieben wird. Die Dienstprogramme 70 führen Funktionen, wie z. B. Verbinden, Taskwechselhinweis aus. Insbesondere enthalten die Dienstprogramme 70 eine Funktion zum Mitteilen eines Task­ wechsels. Die Dienstprogramme 70 sind außerdem mit "erweiterten" Binde- und Installationsfunktionen 72 für XIP-An­ wendungen 64 gemäß der Lehre der vorliegenden Erfindung verse­ hen, die ebenfalls weiter unten detaillierter beschrieben wer­ den. Einheitentreiber 74 und das Fenstersubsystem 76 führen ih­ re im Stand der Technik bekannten, konventionellen Funktionen aus.
Es wird nun auf die Fig. 5a-5b Bezug genommen, in der die gemäß der Lehre der vorliegenden Erfindung zur Verfügung ge­ stellten "erweiterten" Funktionen detaillierter dargestellt sind. Wie es dargestellt ist, enthalten die Dienstprogramm- "Erweiterungen" 72 für XIP-Anwendungen 64 eine neue Bindefunk­ tion 78 und eine neue Installationsfunktion 80, wogegen die Kernel-(oder Laufzeit-)"Erweiterungen" 68 für XIP-Anwendungen 64 eine neue Speichermanagementfunktion 82, eine neue Ladefunk­ tion 84 und eine neue XIP-Taskmanagementfunktion 86 enthalten.
Die neue Bindefunktion 78 wird verwendet, um Referenzen einer konventionellen "RAM-gestützten" Anwendung 62 teilweise aufzulösen, so daß die teilweise aufgelöste Anwendung 64 in Verbindung mit den neuen Laufzeitfunktionen 68 von einem "Schreib-Einmal/Selten"-Speichermedium 18a, 18b oder 28 am Platz ausgeführt werden kann. Die neue Installationsfunktion 80 wird zur Installation der teilweise aufgelösten Anwendung 64 auf einem "Schreib-Selten"-Speichermedium 18b oder 28 verwen­ det. Die "Installation" einer teilweise aufgelösten Anwendung 64 auf einem "Schreib-Einmal"-Speichermedium 18a kann unter Verwendung beliebig vieler, bekannter Halbleiterprozesse er­ zielt werden.
Die neue Speichermanagementfunktion 82 wird verwendet, um einen vorgegebenen Bereich 83 der Speichermanagementdatenstruk­ tur 81 des Betriebssystemkernteils für eine "Abbildung" des (der) physischen Adreßraums(-räume) einer installierten Anwen­ dung 64 in einen logischen Adreßraum 34 zu reservieren, wodurch es der "abgebildeten" Anwendung 64 ermöglicht wird, am Platz ausgeführt zu werden. (Es sei an die zurückliegende Beschrei­ bung erinnert, daß die XIP-Anwendung 64, die ein "Schreib-Ein­ mal/Selten"-Speichermedium 18a, 18b oder 28 hält, von einer Schaltung der Speicher- und E/A-Controller 20 und 24 und dem Betriebssystem 60 in den physischen Adreßraum 36 abgebildet wird). Die neue Ladefunktion 84 wird zum Pseudoladen und Pseu­ dostarten der Ausführung einer XIP-Anwendung 64 verwendet. Eine neue Taskmanagementfunktion 86 wird verwendet, um die gemein­ same Nutzung des vorgegebenen Bereichs 83 der Speichermanage­ mentdatenstruktur 81 mehreren XIP-Anwendungen 64 zu ermögli­ chen, wodurch ein Multitasking von XIP-Anwendungen 64 sowie von Nicht-XIP-Anwendungen oder konventionellen "RAM-gestützten" An­ wendungen 62 vom Betriebssystem 60 ermöglicht wird.
Insbesondere liest die neue Bindefunktion 78 die ausführbare Datei einer konventionellen "RAM-gestützten" Anwendung 62, lokalisiert die unaufgelösten externen sowie internen Referenzen 103a-103b (wie z. B. "unrslvd int_addr/ext_addr" der Steuerungsübertragungsinstruktionen "XCTL"), und löst sie teilweise auf. Die teilweise aufgelösten internen und externen Referenzen 107a-107c (wie z. B. "p_rslvd int_addr/ext_addr") werden zu dem vorgegebenen Bereich 83 der Speichermanagementdatenstruktur 81 aufgelöst, wodurch es ermöglicht wird, daß sie zur Ausführungszeit durch Berichtigung des vorgegebenen Bereichs 83 der Spei­ chermanagementdatenstruktur 81 mit den richtigen physischen Adressen vollständig aufgelöst werden. Für einige externe Refe­ renzen 106b strukturiert die neue XIP-Bindefunktion 78 ferner die externen Referenzen 106b in indirekte externe Referenzen 107c-107d durch den R/W-Datenbereich 105b um. Die neue XIP-Bin­ defunktion 78 berichtigt außerdem verschiedene Informationsta­ bellen in der "RAM-gestützten" ausführbaren Datei 62 und er­ zeugt die ausführbare XIP-Datei 64 (die später vollständiger beschrieben wird).
Die neue Speichermanagementfunktion 82 reserviert den vor­ gegebenen Bereich 83 der Speichermanagementdatenstruktur 81, indem sie sich diesen zur Systeminitialisierungszeit vorab zu­ ordnet. Die neue Ladefunktion 84 führt eine Pseudoladung an einer installierten Anwendung 64 durch, indem sie den Kernel 66 des Betriebssystems veranlaßt, einen RAM für den R/W-Datenbe­ reich 105b der XIP-Anwendung 64 und den vorab zugeordneten, vorgegebenen Bereich 83 der Speichermanagementdatenstruktur 81 zuzuordnen, der mit den richtigen physischen Adressen berich­ tigt werden soll. Die neue Ladefunktion 84 informiert außerdem die neue Taskmanagementfunktion 86 über jede neu "geladene" XIP-Anwendung 64. Die neue Taskmanagementfunktion 86 erzeugt zur Systeminitialisierungszeit eine Taskmanagementdatenstruktur 87 für XIP-Anwendungen 64. Als Antwort auf jeden Hinweis von der neuen Ladefunktion 84 erzeugt die neue Taskmanagementfunk­ tion 86 ein Taskmanagementdatenelement 89 in der Taskmanage­ mentdatenstruktur 87 für die neu "geladene" XIP-Anwendung 64. Das Taskmanagementdatenelement 89 enthält die Berichtigungsda­ ten für den vorab zugeordneten, vorgegebenen Bereich 83 der Speichermanagementdatenstruktur 81, einschließlich Daten, um geeignete Teilbereiche des vorab zugeordneten, vorgegebenen Be­ reichs 83 und Teilbereiche des dynamisch zugeordneten Bereichs 85 der Speichermanagementdatenstruktur 81 miteinander zu ver­ binden. Wenn der neuen Taskmanagementfunktion 86 von dem Be­ triebssystem 60 ein Taskwechsel mitgeteilt wird, bestimmt sie, ob eine XIP-Anwendung 64 beteiligt ist, und lagert die richti­ gen Berichtigungsspeichermanagementdaten 89 in den vorab zuge­ ordneten, vorgegebenen Bereich 83 der Speichermanagementdaten­ struktur 81 ein. In ähnlicher Weise löscht die neue Taskmanage­ mentfunktion 86 das Taskmanagementdatenelement 89 der endenden XIP-Task, wenn ihr vom Betriebssystem 60 ein Taskende mitge­ teilt wird und eine XIP-Anwendung 64 beteiligt ist.
Die neue Bindefunktion 78 und die neue Installationsfunk­ tion 80 zur Unterstützung von XIP-Anwendungen 64 können als ei­ genständige Dienstprogramme oder alternativ als integrale Teile eines konventionellen Binders bzw. eines konventionellen Datei­ systems ausgeführt werden. In ähnlicher Weise können die neue Speichermanagementfunktion 82, die neue Ladefunktion 84 und die neue XIP-Taskmanagementfunktion 86 zur Unterstützung von XIP- Anwendungen 64 als eigenständige "Erweiterungen" des Kernels 66 oder alternativ als ein integraler Teil des Kernels ausgeführt werden.
Fig. 6a-6g zeigen ein Ausführungsbeispiel sowohl der neuen Bindefunktion als auch der neuen Installationsfunktion 78' und 80' zur Unterstützung von für die WindowsTM-Betriebsumgebung entwickelten XIP-Anwendungen 64' detaillierter. Fig. 6a-6c zei­ gen diese Ausführungsbeispiele der neuen Binde- und Insta­ llationsfunktionen 78' und 80' mit Hilfe von zwei Ansichten der "RAM-gestützten" Anwendung 62' und der XIP-Anwendung 64', einer segmentierten Ansicht und einer Dateiorganisationsansicht. Die Fig. 6d-6e zeigen die Verschiebungsdaten 150 (d. h. beschrei­ bende Informationen der Referenzen) der "RAM-gestützten" Anwen­ dung 62' detaillierter, wobei die Fig. 6f-6g die Arbeitsdaten 78'c-78'd dieses Ausführungsbeispiels der neuen Bindefunktion 78' detaillierter zeigen. Zur leichteren Erklärung sind diese Ausführungsbeispiele der neuen Binde- und Installationsfunktio­ nen 78' und 80' in diesen Figuren mit einer "RAM-gestützten" Anwendung 62' dargestellt, die zwei Codesegmente 102b-102c und ein automatisches R/W-Datensegment 102d aufweist. Für den Fach­ mann ist es jedoch aufgrund der folgenden Beschreibung klar, daß die vorliegende Erfindung zusammen mit Anwendungen mit einer beliebigen Anzahl von Codesegmenten und einer beliebigen Anzahl von Datensegmenten ausgeführt werden kann, solange es ein "äquivalentes" automatisches R/W-Datensegment gibt.
Bei diesem Ausführungsbeispiel sind die neue Bindefunktion 78 und die neue Installationsfunktion 80 als zwei eigenständige WindowsTM-Ausführungen, XIP-Binder 78'a bzw. XIP-Installierer 80' ausgeführt. Außerdem ist der XIP-Binder 78'a mit einem er­ gänzenden Selbstladesegment 78'b und Arbeitsdaten 78'c verse­ hen. Wie es aufgrund der folgenden Beschreibung klar wird, müs­ sen andere Ausführungsbeispiele das Selbstladesegment 78'b nicht verwenden, wenn die Zielbetriebssysteme/-umgebungen Funk­ tionen zur Verfügung stellen, die "äquivalent" zu den von dem Selbstladesegment 78'b zur Verfügung gestellten Funktionen sind.
Der XIP-Binder 78'a liest die ausführbare Datei der "RAM- gestützten" Anwendung 62', lokalisiert externe sowie interne Referenzen 104a-104b (wie z. B. "unrslvd ext_addr/int_addr" der Steuerübertragungsinstruktionen "CALL/JMP" bzw. "RUFE AUFSPRINGE") und löst sie teilweise auf. Die teilweise aufgelösten Referenzen 106a-106d werden teilweise zu einem vom Windows-Kernel verwalteten, vorgegebenen Bereich von Segmentselektoren 83 (wie z. B. "pre-allocated selector:offset") aufgelöst, wodurch es den teilweise aufgelösten Referenzen 108a-108d ermöglicht wird, zur Ausführungszeit vollständig aufgelöst zu werden, indem der vorgegebene Bereich von Segmentselektoren 83 mit den richtigen physischen Adressen berichtigt wird. Der XIP-Binder 78'a zeichnet verschiedene Arbeitsdaten 78'c auf, um die teilweise Auflösung der Referenzen 104a-104d zu erleichtern. Der XIP-Binder 78'a er­ zeugt die ausführbare Datei 64', indem die teilweise aufge­ lösten Referenzen 108a-108d verwendet werden, das selbstladene Segment 78'b eingefügt wird und verschiedenen Informationsta­ bellen 103a-103f berichtigt werden.
Unaufgelöste Referenzen 104a-104b sind in den Verschie­ bungsdaten 120a-120c der zugehörigen Segmente 118a-118c be­ schrieben. Jede Gruppe von Verschiebungsdaten 120a, 120b und 120c enthält einen Verschiebungselement-Zählwert 152 und einen oder mehrere Verschiebungselemente 154 (wenn der Verschie­ bungselement-Zählwert ungleich Null ist). Jedes Verschiebungs­ element 154 enthält die Adreßart 156, die Referenzart 158, den Patch-Standort 160 und die Auflösung oder den Index des Ver­ schiebungselementes zu den Auflösungsdaten 162. Die Ver­ schiebungselement-Adreßart 156 enthält Selektor-, Zeiger- und Offsetadreßarten. Die Verschiebungsreferenzart 160 enthält die Art der internen Referenz, die Importordinalzahlart und die Importnamensart. Zu jeder Verschiebungsart 160 gehört ein additives Flag, welches anzeigt, ob der Offsetwert an dem Patch-Standort zu den Auflösungsdaten addiert werden soll oder als Zeiger auf einen verketteten Patch-Standort verwendet werden soll. Die Auflösung oder der Index zu den Auflösungsdaten 162 enthält entweder die Segment- und Offsetwerte für eine feste interne Referenz oder einen Indexwert zu den Auflösungsdaten für die anderen Verschiebungsreferenzarten. Die Verwendung dieser Daten wird weiter unten detaillierter beschrieben.
Die Arbeitsdaten 78'c enthalten eine Segmentinforma­ tionstabelle 164 und Variablen 190. Die Segmentierungsinforma­ tionstabelle 164 enthält für jedes Segment einen vorab zugeord­ neten, zugewiesenen Selektor 166, die Segmentart 168, die An­ zahl der Verschiebungselemente 170, die Anzahl der umstruktu­ rierbaren Verschiebungselemente 172, die Anzahl der Selektor­ verschiebungselemente 174, die Anzahl der Zeigerverschiebungs­ elemente 176 und die Anzahl der Offsetverschiebungselemente 178. Die Variablen 190 enthalten den nächsten ungenutzten vorab zugeordneten Selektor 191, ein Erzeuge-Automatisches-R/W-Daten­ segment-Flag 192, einen Einfügezeiger 193 für das automatische R/W-Datensegment, ein Wachstum des automatischen R/W-Datenseg­ mentes 194, ein Wachstum der Verschiebungsdaten des automati­ schen R/W-Datensegmentes 195, einen Patch-Selektor 196, einen Patch-Offset 196, ein Indirekter-Kandidat-Flag 198 und eine Anzahl von Aliasnamen 199. In ähnlicher Weise wird die Verwen­ dung dieser Daten weiter unten detaillierter beschrieben.
Das Selbstladesegment 78'b enthält eine komplementäre Auf­ ruflogik zum Aufrufen einer neuen XIP-Ladefunktion 84 in seinem Codesegment 118d, wobei das selbstladene Merkmal von WindowsTM verwendet wird (wobei dies weiter unten detaillierter be­ schrieben wird). Das Selbstladesegment 78'b enthält in ähnli­ cher Weise wie andere Segmente Verschiebungsdaten 120d.
Der XIP-Installierer 80' installiert die regenerierte ausführbare Datei 64' auf einem "Schreib-Selten"-Speichermedium 18b oder 28, wobei die relativen Orte der Segmente 106b und 106c erhalten bleiben, die am Platz ausgeführt werden soll. Der XIP-Installierer 80' kann auf viele verschiedenen Weisen imple­ mentiert werden, die alle im Rahmen der Fähigkeiten eines Fach­ manns liegen und daher nicht weiter beschrieben werden müssen.
Die Fig. 7a-7c in Verbindung mit Fig. 7d zeigen ein Ausfüh­ rungsbeispiel der neuen XIP-Speichermanagement-, -Lade- und -Taskmanagementfunktionen 82'a-82'c und 84' detaillierter, die für die WindowsTM-Betriebsumgebung entwickelt wurden. Fig. 7a zeigt Interaktionen dieser neuen Funktionen 82'a-82'c und 84 mit dem Windows-Kernel 66' und den Dienstprogrammen 70' und den XIP-Anwendungen 64', wogegen Fig. 7b die Interaktionen dieser neuen Funktion 82'a-82'c und 84 mit der Windows- Speichermanagementdatenstruktur 81' zeigt. Fig. 7c zeigt die Taskmanagementdatenstruktur 87' der vorliegenden Erfindung detaillierter, wogegen Fig. 7d die Windows- Speichermanagementdatenstruktur 81a' und 81b' detaillierter zeigt.
Bei diesem Ausführungsbeispiel sind die neuen XIP-Speicher­ management-, -Lade- und -Taskmanagementfunktionen 82-86 zusam­ men mit einem XIP-LADER 84' und einem XIP-Management 82'a im­ plementiert. Zusätzlich ist das XIP-Management 82'a durch einen XIP-Initiator 82'b und einen XIP-Abbilder 82'c ergänzt. Wie der folgenden Beschreibung zu entnehmen ist, müssen der XIP-Initia­ tor 82'b und der XIP-Abbilder 82'c bei anderen Ausführungsbei­ spielen nicht verwendet werden, die für andere Betriebssyste­ me/-umgebungen entwickelt sind, die "äquivalente" Funktionen zu den von dem XIP-Initiator 82'b und dem XIP-Abbilder 82'c zur Verfügung gestellten Funktionen bieten.
Wie es dargestellt ist, wird das XIP-Management 82'a zur Systeminitialisierungszeit aufgerufen, zu welcher Zeit das XIP- Management 82'a den vorgegebenen Bereich der Selektoren 83' da­ durch reserviert, daß die Segmentselektoren 83' vorab zugeord­ net werden. Das XIP-Management 82'a ordnet die Segmentselekto­ ren 83' dadurch vorab zu, daß der Windows-Kernel 66' wiederholt aufgefordert wird, Segmentselektoren dem XIP-Management 82'a zuzuordnen, bis der vorgegebene Bereich der Selektoren 83' auf diese Weise zugeordnet ist. Die Selektoren außerhalb des vorge­ gebenen Bereichs der Selektoren 83' werden dann von dem XIP- Management 82'a freigegeben. Die von dem Windows-Kernel 66' verwalteten Segmentselektoren werden im Windows-LDT 81'b ge­ speichert. Außerdem enthält der Windows-Kernel 66' das im Stand der Technik als Windows-Burgermaster-Segment 81'a bekannte Seg­ ment, welches eine den Windows-LDT 81'b "spiegelnde" Selektor­ tabelle 91, einen Arena-Pool 92 zum Verfolgen des freien Spei­ cherblocks im globalen Windows-Freispeicher 94 und Informatio­ nen 93 über das Burgermaster-Segment 81'a enthält.
Außerdem erzeugt das XIP-Management 82'a zur Systemini­ tialisierungszeit eine "leere" XIP-Taskmanagementdatenstruktur 87', um das Multitasking von XIP-Anwendungen 64' zu erleich­ tern. Wenn die XIP-Taskmanagementdatenstruktur 87' während des Betriebs belegt wird, enthält sie mehrere XIP-Taskdeskriptoren 204, einen pro XIP-Task, und zugehöriger XIP-Tasksegmentdes­ kriptorseiten 206, ebenfalls eine pro XIP-Task. Jeder XIP-Task­ deskriptor 204 enthält eine XIP-Task-ID bzw. einen XIP-Taskbe­ zeichner 220, der die XIP-Task identifiziert, eine XIP-Segment­ deskriptorseitenadresse 222, die die zugehörige XIP-Taskseg­ mentdeskriptorseite 206 lokalisiert, die Segmentanzahl des au­ tomatischen R/W-Datensegmentes 224 und die Arena-Adresse des Burgermasters und die Adresse des Selektortabelleneintrags für das automatische R/W-Datensegment 226 und 228. Jede XIP-Seg­ mentdeskriptorseite 206 enthält mehrere Tasksegmentdeskriptoren 230 der XIP-Anwendung 64'. Die XIP-Taskmanagementdatenstruktur 87' enthält außerdem globale Taskinformationen 202, wie z. B. einen Gesamt-Task-Zählwert 210, einen Tasksegmentdeskriptorseiten-Zählwert 212, einen Zeiger 214 auf den Deskriptor 204 der aktuellen Task, einen Selektorzählwert 216 der aktuellen Task und eine ID 218 für das automatische R/W-Datensegment der aktuellen Task. Diese Informationen ermöglichen zusammen, daß die zugehörigen Segmentdeskriptoren der vorab zugeordneten Segmentselektoren 83'b für eine "überlappte" Ausführung von mehreren XIP-Anwendungen 64' richtig berichtigt werden, wobei am oberen Ende der logischen Adreßräume 34 wirksam eine weitere Ebene der Virtualisierung erzeugt wird. Wie im folgenden detaillierter beschrieben wird, enthält das "Berichtigen" des vorgegebenen Bereichs der Segmentselektoren 83' eine direkte Berichtigung einiger zugehöriger Segmentdeskriptoren der vorab zugeordneten Segmentselektoren 83'b mit physischen Adressen des "Schreib- Einmal/Selten"-Mediums 18a, 18b oder 28, ein Aliasing einiger vorab zugeordneter Segmentselektoren 83'b und dynamisch zuge­ ordneter Segmentselektoren 85'b miteinander, und/oder ein Pseu­ do-Aliasing einiger vorab zugeordneter Segmentselektoren 83'b als "bedeutungsvolle fehlerhafte Zeiger" bzw. "meaningful bad pointers" oder MBPs. MBPs werden verwendet, um sich dem Windows-Merkmal zu widmen, daß vom globalen Windows-Freispei­ cher zugeordnete Speicherblöcke bewegbar sein können. MBPs wer­ den zur Zeit ihrer Bezugnahme vollständig zu ihren richtigen, dynamisch zugeordneten Alias-Selektoren aufgelöst. Die Verwen­ dung dieser Informationen wird weiter unten detaillierter beschrieben.
Der XIP-Initiator 82'b wird zur WindowsTM-Startzeit aufge­ rufen. Der XIP-Initiator 82'b erzeugt unter Verwendung eines XIP-Leersegmentes bzw. -Dummy-Segmentes 106e, vorzugsweise eines 64-K-Segmentes, ein Leermodul bzw. Dummy-Modul. Der XIP- Initiator 82'b ruft dann das XIP-Management 82'a auf, um einen XIP-Taskdeskriptor 204 und eine zugehörige XIP-Tasksegmentdes­ kriptorseite 206 für das XIP-Leersegment 106e zu erzeugen. Der XIP-Taskdeskriptor 204 und die zugehörige XIP-Tasksegmentdes­ kriptorseite 206 enthalten Informationen, die wenn sie auf die Segmentdeskriptoren des vorab zugeordneten Bereichs von Seg­ mentselektoren 83'b im Windows-LDT 81'b angewendet werden, be­ wirken, daß der ganze vorab zugeordnete Bereich von Segmentse­ lektoren 83'b auf das XIP-Leersegment 106e zeigt. Das XIP- Management 82'a wendet dann die enthaltenen Informationen ent­ sprechend an, wobei die gewünschte Bezugnahme des ganzen vorab zugeordneten Bereichs der Segmentselektoren 83'b auf das XIP- Leersegment 106e bewirkt wird.
Der XIP-Abbilder 82'c wird als Antwort auf das Einfügen einer PCMCIA-Karte 28 aufgerufen. Der XIP-Abbilder 82'c bildet die neu eingefügte PCMCIA-Karte 28 in einen physischen Adreßbe­ reich oder in mehrere physische Adreßbereiche ab, wenn er auf­ gerufen wird. Zur Vereinfachung der Implementierung kann der XIP-Abbilder 82'c bei Systemen, in denen es einen Bereich bzw. Bereiche von physischen Adressen gibt, die üblicherweise "ungenutzt" sind, die eingefügten PCMCIA-Karten auf einen oder mehrere vorgegebene physische Adreßbereiche abbilden. Das Ab­ bilden einer eingefügten PCMCIA-Karte in einen oder mehrere physische Adreßräume ist im Stand der Technik bekannt, daher wird der XIP-Abbilder 82'c nicht weiter beschrieben.
Der XIP-LADER 84' wird zur Ladezeit der XIP-Anwendung von dem Selbstladesegment 106a aufgerufen. Jedesmal wenn das Laden einer XIP-Anwendung 64' angefordert wird, wird das Selbstlade­ segment 106a geladen und ihm vom Windows-Kernel 66' gemäß dem Windows-Selbstlademerkmal die Steuerung übergeben. Der XIP- LADER 84' ändert bei dem Aufruf die Modultabelle der XIP-Anwen­ dung, wobei der vorab zugeordnete, vorgegebene Bereich der Seg­ mentselektoren 83' mit physischen Adressen des "Schreib-Ein­ mal/Selten"-Mediums 18 oder 28 berichtigt wird, und veranlaßt den Windows-Kernel 66' RAM für das automatische R/W-Datenseg­ ment 106d zuzuordnen, wodurch die XIP-Anwendung 64' pseudogela­ den wird. Der XIP-LADER 84' veranlaßt außerdem den Windows-Ker­ nel 66', die Ausführung der XIP-Anwendung 64' zu beginnen. Wenn die Ausführung beginnt, erhält der XIP-LADER 84' wieder die Steuerung über das Selbstladesegment 106a, welches wiederum das XIP-Management 82'a aufruft, damit das Berichtigen des vorgege­ benen Bereichs von Segmentselektoren 83' beendet wird. Als Ant­ wort erzeugt das XIP-Management 82'a den XIP-Taskdeskriptor 204 und die zugehörige XIP-Tasksegmentdeskriptorseite 206 für die XIP-Anwendung 64', und wendet die Informationen an, um die Seg­ mentdeskriptoren des vorab zugeordneten, vorgegebenen Bereichs von Segmentselektoren 83' zu berichtigen.
Der XIP-LADER 84' wird außerdem von dem Windows-Dienstpro­ gramm 70' (WERKZEUG-HILFE) während des Taskwechsels aufgerufen. Beim Aufruf überträgt der XIP-LADER 84' die Informationen an das XIP-Management 82'a. Als Antwort bestimmt das XIP-Manage­ ment 82'a, ob eine XIP-Task beteiligt ist. Wenn eine XIP-Task beteiligt ist, lagert das XIP-Management 82'a die richtigen Be­ richtigungsinformationen in die Segmentdeskriptoren des vorge­ gebenen Bereichs von Segmentselektoren 83'b ein.
Schließlich wird der XIP-Initiator 82'b als Antwort auf einen allgemeinen Speicherzugriffsfehler (general protection fault) oder GP-Fehler aufgerufen. Der XIP-Initiator 82'b be­ stimmt, ob der GP-Fehler dadurch verursacht wird, daß auf einen MBP verwiesen wird. Wenn der GP-Fehler von einer MBP-Referenz verursacht wird, zerlegt der XIP-Initiator 82'b die den Fehler auslösende Instruktion, um den Selektor zu erhalten. Der XIP- Initiator 82'b verwendet den Selektor 83' dann, um in die Seg­ mentdeskriptortabelle 52 zu indexieren und um die reale Seg­ mentselektoranzahl von dem Basisbereich 54 abzurufen, wo sie vorher von dem XIP-Management 82'a gespeichert wurde (wie spä­ ter beschrieben wird). Nach dem Abrufen der realen Segmentse­ lektoranzahl startet der XIP-Initiator 82'b die Instruktion un­ ter Verwendung des realen Segmentselektors 85' erneut.
Die Fig. 8-10, 11a-11b, 12a-12c, 13a-13b und 14 zeigen ein Ausführungsbeispiel der Operationslogik des XIP-Binders 78'a detaillierter. Wie es in Fig. 8 gezeigt ist, hat der XIP-Binder 78'a einen Operationsablauf 300 mit zwei Arbeitsgängen. In dem ersten Arbeitsgang liest der XIP-Binder 78'a die ausführbare. Datei der "RAM-gestützten" Anwendung 62', analysiert die "RAM- gestützte" Anwendung, insbesondere die Verschiebungselemente, und zeichnet die relevanten Informationen zum teilweisen Auflö­ sen der Referenzen auf, Schritt 302. In dem zweiten Arbeitsgang regeneriert der XIP-Binder 78'a die ausführbare Datei, indem er die Anwendung in eine XIP-Anwendung 64' transformiert, wobei die Verschiebungselemente teilweise aufgelöst werden, die ex­ ternen Referenzen ggf. umstrukturiert werden und die Informa­ tionstabellen berichtigt werden, Schritt 304. Zusätzlich kann der XIP-Binder 78'a, obwohl es nicht dargestellt ist, einen vorläufigen Schritt (vorläufige Schritte) zum Vorauswählen "ungeeigneter" ausführbarer Dateien enthalten. Zu den besonde­ ren Beispielen für "ungeeignete" ausführbare Dateien gehören solche Dateien mit Linkedit-Fehlern und Dateien, die das Selbstlademerkmal bereits verwenden.
Fig. 9 zeigt den Schritt "analysiere und zeichne auf" 302 detaillierter. Wie es dargestellt ist, ordnet der XIP-Binder 78'a zunächst die vorher beschriebene Arbeitsdatenstruktur 78'c zu und initialisiert sie (Schritt 306). Bei dem dargestellten Ausführungsbeispiel wird das "Erzeuge-Automatisches-R/W-Daten­ segment(DS)-Flag" 192 derart initialisiert, daß es lautet "automatisches R/W-DS-Erzeugung benötigt". Als nächstes lokali­ siert der XIP-Binder 78'a ein Segment 102b-102d (Schritt 307). Üblicherweise werden die Segmente 102b-102d in fortlaufender Reihenfolge lokalisiert. Der XIP-Binder 78'a ordnet dann einen Selektor aus dem vorgegebenen Bereich von Segmentselektoren 83' dem lokalisierten Segment 102b-102d zu und zeichnet die Zuord­ nung auf (Schritt 308). Üblicherweise werden Segmentselektoren 83' ebenfalls in fortlaufender Reihenfolge zugeordnet. Der XIP- Binder 78'a zeichnet außerdem die Segmentart 168 auf, d. h. Code oder Daten, Schritt 308. Wenn das Segment das automatische R/W- Datensegment 102d ist, ändert der XIP-Binder 78'a das "Erzeuge- Automatisches-R/W-DS-Flag" 192 derart, daß es "Erzeugung des automatischen R/W-DS nicht benötigt" angibt, Schritt 310.
Als nächstes bestimmt der XIP-Binder 78'a unabhängig von der Segmentart, ob das lokalisierte Segment 102b-102d Verschie­ bungselemente 154 aufweist (Schritte 311). Wenn das lokali­ sierte Segment 102d Verschiebungselemente 154 aufweist, ruft der XIP-Binder 78'a eines der Verschiebungselemente 154 ab, Schritt 312. Üblicherweise werden die Verschiebungselemente 154 auch in fortlaufender Reihenfolge abgerufen. Der XIP-Binder 78'a untersucht dann die vorher beschriebenen Verschiebungsele­ mentinformationen und kumuliert die relevanten Informationen, d. h. Anzahl der umstrukturierbaren Verschiebungselemente 172, Anzahl der Selektorverschiebungselemente 174 usw., Schritt 313. Nach der Verarbeitung der Verschiebungselemente 154 bestimmt der XIP-Binder 78'a, ob es weitere Verschiebungselemente 154 gibt, Schritt 314. Wenn es weitere Verschiebungselemente 154 gibt, wiederholt der XIP-Binder 78'a die Schritte 312 und 313, bis alle Verschiebungselemente 154 verarbeitet sind. Nachdem alle Verschiebungselemente 154 für das lokalisierte Segment 102b-102d verarbeitet worden sind, bestimmt der XIP-Binder 78'a, ob die "RAM-gestützte" Anwendung 62' weitere Segmente 102b-102d hat. Falls weitere Segmente 102b-102d noch verarbei­ tet werden müssen, wiederholt der XIP-Binder 78'a die Schritte 307-314, bis alle Segmente 102b-102d verarbeitet worden sind.
Fig. 10 zeigt den Schritt der "XIP-Anwendungserzeugung" 304 detaillierter. Wie es dargestellt ist, erzeugt der XIP-Binder 78'a zunächst die neue ausführbare XIP-Datei 64', Schritt 316. Es wird nun zu den Fig. 11a-11b gesprungen, die den Schritt 316 detaillierter zeigen. Der XIP-Binder 78'a bestimmt zunächst die Segmentgröße und das Wachstum der Verschiebungsdaten für das automatische R/W-Datensegment 106d, und zwar unter Verwendung der in der Arbeitssegmentinformationstabelle 164 aufgezeichne­ ten Informationen, Schritt 323. Der XIP-Binder 78'a kopiert dann die ausführbare Datei 62' der "RAM-gestützten" Anwendung bis zum Beginn der Segmenttabelle 110a-110e in die neue ausführbare XIP-Datei 64', die erzeugt wird, Schritt 324. Der XIP-Binder 78'a vergrößert außerdem die Segmenttabelle 112a, Schritt 325, lagert einen Segmenteintrag für das Selbstladeseg­ ment 78'b aus, Schritt 326, und kopiert die Segmenttabelle 112a in die ausführbare XIP-Datei 64', Schritt 327. Der XIP-Binder 78' kopiert außerdem die Ressourcen- und Modulreferenztabellen 112b-112c in die ausführbare XIP-Datei 64', Schritt 327 und fügt einen Eintrag für den XIP-LADER 84' zur Modulreferenzta­ belle 112c zu, Schritt 328. Der XIP-Binder 78' kopiert außerdem die Tabelle der importierten Namen 112d in die ausführbare XIP- Datei 64', Schritt 329, und fügt einen Eintrag für den XIP- LADER 84' zu der Tabelle der importierten Namen 112d hinzu, Schritt 330. Der XIP-Binder 78' kopiert außerdem die Eintrags­ tabelle und die nichtresidente Tabelle 112e-112f in die ausführbare XIP-Datei 64', Schritt 332, füllt zur Segmentausrichtung aus, Schritt 334, und kopiert Segmente und Verschiebungsdaten 116 in die neue ausführbare XIP-Datei 64', Schritt 335.
Als nächstes kopiert der XIP-Binder 78'a das automatische R/W-Datensegment 118s in die ausführbare XIP-Datei 64' oder er­ zeugt das automatische R/W-Datensegment 119a direkt, Schritt 336. Der XIP-Binder 78'a lagert vorzugsweise außerdem einen Si­ cherheitsblock 115c aus, Schritt 338. Der XIP-Binder 78'a la­ gert außerdem für jede zu erzeugende indirekte Referenz einen Platzhalter aus, Schritt 340, kopiert die Verschiebungsdaten 110c für das automatische R/W-Datensegment 102c in die ausführbare XIP-Datei 64', wobei der Verschiebungselement- Zählwert 152 berichtigt wird, Schritt 344, lagert die Verschiebungselemente für die indirekten Referenzen aus, Schritt 346, und füllt zur Segmentausrichtung auf, Schritt 348. Dann kopiert der XIP-Binder 78' den Rest der ausführbaren Datei 62' der "RAM-gestützten" Anwendung in die ausführbare XIP-Datei 64', Schritt 350, und füllt für die Segmentausrichtung auf, Schritt 352.
Als nächstes kopiert der XIP-Binder 78'a das Selbstladeseg­ ment 78'b in die ausführbare XIP-Datei 64', Schritt 354. Der XIP-Binder 78' bestimmt dann, ob an einem der Segmentselektoren aus dem vorgegebenen Bereich der Segmentselektoren 83' ein Aliasing bzw. eine Aliasnamensumsetzung zu dynamisch zugeord­ nete Segmentselektoren 85' während der Ausführung durchgeführt wird, Schritt 356. Wenn an einem oder mehreren der Segmentse­ lektoren 83' des vorgegebenen Bereichs ein Aliasing durchge­ führt wird, lagert der XIP-Binder 78'a Versionsinformationen und einen Aliasnamenszählwert 126, Schritt 358 und Patch-Räume für Alias-Selektoren 127, Schritt 360, aus.
Als nächstes lagert der XIP-Binder 78'a eine "karteneigene" Adreßtabelle aus, und zwar unabhängig davon, ob an einem der Segmentselektoren des vorgegebenen Bereichs der Segmentselekto­ ren 83' ein Aliasing durchgeführt wird, Schritt 362. Der XIP- Binder 78'a kopiert dann Verschiebungsdaten 120d des Selbstla­ desegmentes 78'b in die ausführbare XIP-Datei 64', wobei der Verschiebungszählwert 152 korrigiert wird, wenn an einem Seg­ mentselektor 83' des vorgegebenen Bereichs der Segmentselekto­ ren 83' ein Aliasing durchgeführt wird, Schritt 364. Schließ­ lich lagert der XIP-Binder 78'a ggf. Alias-Verschiebungsdaten­ elemente 154 für die Aliasnamen aus, Schritte 366-368.
Es wird nun wieder auf Fig. 10 Bezug genommen, in der der Schritt der "Erzeugung der XIP-Anwendung" dargestellt ist. Nach dem Erzeugen einer ausführbaren XIP-Datei 64', Schritt 316, holt der XIP-Binder 78'a ein Segment 106b-106d, Schritt 317. Üblicherweise werden Segmente 106b-106d in fortlaufender Rei­ henfolge abgerufen. Der XIP-Binder 78'a stellt die Segmentorte in dem abgerufenen Segment 106b-106d ein und korrigiert die Segmentlängeninformationen in der Segmenttabelle 117, Schritt 318.
Als nächstes bestimmt der XIP-Binder 78'a, ob das abgerufe­ ne Segment 106b-106d Verschiebungselemente 154 aufweist, Schritt 319. Wenn das abgerufene Segment 106b-106d Verschie­ bungselemente 154 aufweist, löst der XIP-Binder 78'a die Ver­ schiebungselemente auf, Schritt 320, welches weiter und detail­ lierter beschrieben wird. Nach dem Auflösen der Verschiebungs­ elemente 154 bestimmt der XIP-Binder 78'a, ob weitere Segmente 106b-106d verarbeitet werden müssen, Schritt 321. Wenn weitere Segmente 106b-106d verarbeitet werden müssen, wiederholt der XIP-Binder 78'a die Schritte 317-320 wiederholt, bis alle Seg­ mente 106b-106d verarbeitet worden sind.
Nachdem der XIP-Binder 78'a alle Verschiebungselemente 154 in allen Segmenten 106b-106d aufgelöst hat, führt er schließ­ lich Endkorrekturen an der ausführbaren XIP-Datei 64' aus, die ebenfalls weiter unten detaillierter beschrieben werden.
Fig. 12a-12c zeigen den Schritt des "Auflösens der Ver­ schiebungselemente" 320 detaillierter. Wie es dargestellt ist, ruft der XIP-Binder 78'a ein Verschiebungselement 154 des loka­ lisierten Segments 106a-106d ab, Schritt 374. Wie vorher be­ schrieben wurde, werden Verschiebungselemente 154 üblicherweise in fortlaufender Reihenfolge abgerufen. Der XIP-Binder 78'a be­ stimmt dann, ob das Verschiebungselement 154 mit einer internen Referenz verbunden ist, Schritt 376. Wenn das Verschiebungsele­ ment 154 mit einer internen Referenz verbunden ist, löst der XIP-Binder 78'a es dementsprechend auf, Schritt 378, ansonsten löst der XIP-Binder 78'a das Verschiebungselement 154 als eine externe Referenz auf, Schritt 380.
Es wird nun zu den Fig. 12b-12c gesprungen, in denen die Schritte 378 und 380 detaillierter dargestellt sind. Für eine interne Referenz bestimmt der XIP-Binder 78'a, ob das Referenz­ segment bewegbar ist, Schritt 396. Wenn das Referenzsegment nicht bewegbar oder fixiert ist, setzt der XIP-Binder 78'a einen Korrektur-Offset auf den Offset 162, der vom Verschie­ bungselement 154 angegeben wird, Schritt 398. Unabhängig davon, ob das Referenzsegment bewegbar ist, setzt der XIP-Binder 78'a den Korrekturselektor 196 in dem Fall eines nicht bewegbaren Referenzsegmentes auf den vorab zugeordnetenen Selektor 83' des Segmentes, der in dem Verschiebungselement 154 angegeben ist, oder schlägt in dem Fall eines bewegbaren Referenzsegmentes in der Segmenttabelle 113a unter Verwendung des angegebenen Ordi­ nalwertes 162 nach, der in dem Verschiebungselement 154 angegeben ist, Schritt 400.
Für eine externe Referenz bestimmt der XIP-Binder 78'a, ob das lokalisierte Segment 106a-106d das automatische R/W-Daten­ segment 106d ist, Schritt 402. Wenn das lokalisierte Segment das automatische R/W-Datensegment 106d ist, unternimmt der XIP- Binder 78'a keine weiteren Aktivitäten. Das Verschiebungsele­ ment 154 wird von dem Windows-Kernel 66' in der üblichen Weise aufgelöst, wenn es von dem XIP-LADER 84' aufgerufen wird, um dem automatischen R/W-Datensegment 106d RAM zuzuordnen. Wenn das lokalisierte Segment 106a-106d dagegen nicht das automati­ sche R/W-Datensegment 106d ist, löst der XIP-Binder 78'a die externen Referenzen mit dem Ordinalwert oder dem Namen einer Funktion aus der Modulreferenztabelle 113c auf, der mit Hilfe des angegebenen Indexes 162 in die Modulreferenztabelle 113c abgefragt worden ist, Schritte 404-406. Wenn das Verschiebungs­ element die Zeiger-Adreßart 156 hat, Schritt 407, setzt der XIP-Binder 78'a ferner das Indirekter-Kandidat-Flag 198, wel­ ches das Verschiebungselement 154 als einen umstrukturierbaren, externen Referenzkandidaten angibt, Schritt 408.
Es wird nun wieder auf Fig. 12a Bezug genommen. Nachdem die interne/externe Referenz verarbeitet worden ist, bestimmt der XIP-Binder 78'a, ob das additive Flag in der Verschiebungsrefe­ renzart 158 für das Verschiebungselement 154 gesetzt ist, Schritt 382. Wenn das additive Flag in der Verschiebungsrefe­ renzart 158 gesetzt ist, löscht der XIP-Binder 78'a das additi­ ve Flag, Schritt 384, liest den Offsetwert an dem angegebenen Patch-Standort 160, Schritt 386, und addiert den gelesenen Offsetwert zum korrigierenden Selektor oder Offset, je nachdem, ob die Adreßart 156 des Verschiebungselementes die Selek­ toradreßart ist, Schritte 388-392. Schließlich berichtigt der XIP-Binder 78'a die geeigneten Orte ohne Rücksicht darauf, ob das additive Flag gesetzt ist, Schritt 394.
Fig. 13a-13b zeigen den Schritt "Berichtige Ort(e)" 394 de­ taillierter. Wie es dargestellt ist, bestimmt der XIP-Binder 78'a, ob das Indirekter-Kandidat-Flag der externen Referenz ge­ setzt ist, Schritt 412. Wenn das Indirekter-Kandidat-Flag der externen Referenz gesetzt ist, erzeugt der XIP-Binder 78'a eine indirekte Referenz 125 mit den korrigierenden Selektor- und Offsetwerten 196-197. Der XIP-Binder 78'a bestimmt die Adresse der erzeugten indirekten Referenz 125 und speichert die Adresse in den Patch-Standort, Schritt 416. Wenn das Indirekter-Kandi­ dat-Flag der externen Referenz nicht gesetzt ist, bestimmt der XIP-Binder 78'a außerdem, ob die externe Referenz auf ein Codesegment gerichtet ist, Schritt 418. Wenn die externe Refe­ renz auf ein Codesegment gerichtet ist und die Verschie­ bungsadreßart 156 die Offsetart ist, speichert der XIP-Binder 78'a den Offsetwert in den Patch-Standort, Schritte 420-422. Wenn die externe Referenz jedoch auf ein Codesegment gerichtet ist und die Verschiebungsadreßart 156 die Selektorart ist, ve­ rwendet der XIP-Binder 78'a einen von den Segmentselektoren 83' des vorgegebenen Bereichs, um ein Aliasing des realen Selektors durchzuführen, der vom Windows-Kernel 66' dynamisch zugeordnet werden soll, Schritte 424-426. Wenn der Schritt 426 ausgeführt ist, speichert der XIP-Binder 78'a außerdem die Aliasnamen und Aliasinformationen in dem Patch-Raum für die Alias-Selektoren 127 bzw. Verschiebungsdaten für Aliasnamen 129, Schritt 428.
Wenn die externe Referenz nicht auf ein Codesegment gerich­ tet ist, führt der XIP-Binder 78'a die Schritte 430-454 für al­ le Patch-Standorte in der Patch-Standortkette aus. Der XIP-Bin­ der 78'a bestimmt zunächst, ob das Ende der Kette erreicht wurde, Schritt 430. Das Ende der Kette wurde erreicht, wenn das additive Flag der Verschiebungsart 158 eines Verschiebungsele­ mentes 154 gesetzt ist, oder ein vorgegebener Offsetwert (wie z. B. xFFFF) von einem Patch-Standort gelesen wurde. Wenn das Ende der Kette nicht erreicht wurde, liest der XIP-Binder 78'a den Operationscode und den Wert an dem Patch-Standort, Schritte 432-434. Als nächstes bestimmt der XIP-Binder 78'a, ob das additive Flag der Verschiebungsart 158 des Verschiebungselemen­ tes 154 gesetzt wurde, Schritt 438. Wenn das additive Flag ge­ setzt wurde, notiert der XIP-Binder 78'a, daß das Ende der Kette erreicht wurde, Schritt 440, bevor er mit den Schritten 442-454 fortfährt.
In den Schritten 442-444 überschreibt der XIP-Binder 78'a bedingt das vorausgehende bzw. führende Byte des Patch-Standor­ tes mit dem indirekten FAR-CALL- bzw. FERN-AUFRUF-Operations­ code und notiert, daß der ursprüngliche FAR-CALL entfernt wer­ den kann, wenn die Adreßart des Verschiebungselements 154 die Zeigeradreßart ist und mit einem FAR-CALL-Befehl verbunden ist. In den Schritten 446-448 erzeugt der XIP-Binder 78'a bedingt einen Alias-Selektor und speichert den Aliasnamen und die Aliasinformationen, wie es vorher beschrieben wurde, wenn die Adreßart des Verschiebungselementes 154 die Zeigeradreßart ist, jedoch nicht mit einer FAR-CALL-Instruktion verbunden ist.
Im Schritt 450 schreibt der XIP-Binder 78'a an den Patch- Standort, und zwar dementsprechend von einer Anzahl von Erwä­ gungen abhängig. Wenn die Verschiebungsadreßart 156 die Selek­ torart ist, schreibt der XIP-Binder 78'a den korrigierenden Se­ lektorwert in den Patch-Standort. Wenn die Verschiebungsadreß­ art 156 die Offsetart ist, schreibt der XIP-Binder 78'a den korrigierenden Offsetwert in den Patch-Standort. Wenn die Ver­ schiebungsadreßart 156 die Zeigerart ist und mit einem FAR-CALL verbunden ist, schreibt der XIP-Binder 78'a den korrigierenden Offsetwert in den Patch-Standort. Wenn die Verschiebungsadreß­ art 156 die Zeigerart ist und nicht mit einem FAR-CALL verbun­ den ist, schreibt der XIP-Binder 78'a die korrigierenden Selek­ tor- und Offsetwerte in den Patch-Standort.
Schließlich entfernt der XIP-Binder 78'a in den Schritten 452-454 das Verschiebungselement 154 unter der Bedingung, daß das Verschiebungselement 154 eine interne Referenz ist. Der XIP-Binder 78'a kehrt dann zum Schritt 430 zurück.
Fig. 14 zeigt den Schritt 390 der "Endkorrektur" detail­ lierter. Wie es dargestellt ist, korrigiert der XIP-Binder 78'a zunächst den Informationsblock 111e, Schritt 460. Alle Schnelladefelder in dem Informationsblock 111e werden gelöscht und die Anzahl der Segmenteinträge in dem Informationsblock 111e wird um Eins erhöht, um das neue Selbstladesegment 119d zu berücksichtigen. Das ursprüngliche Codeseg­ ment:Instruktionszeiger(CS:IP - code segment:instruction poin­ ter)-Paar in dem Informationsblock 111e wird an einem vorgege­ benen Ort des Selbstladesegmentes 119d zur späteren Verwendung zur Ausführungszeit gespeichert, und das CS:IP-Feld des Infor­ mationsblockes 111e wird auf den Eingangspunkt des Selbstlade­ segmentes 119d gesetzt. Alle Einträge in dem Informationsblock 111e, die Segmentnummern haben, werden um Eins erhöht, um das neue Selbstladesegment 119d zu berücksichtigen. Die Zeiger zu den Kopfzeilentabellen in dem Informationsblock 111e werden so eingestellt, daß sie den neuen Eintrag in der Segmenttabelle 113a, der Modulreferenztabelle 113b und in dem Namenstabellen­ wachstum berücksichtigen. Schließlich wird das Selbstlade-Flag in dem Informationsblock 111e gesetzt.
Als nächstes korrigiert der XIP-Binder 78'a die Segmentta­ belle 113a, Schritt 462. Der Eintrag für das automatische R/W- Datensegment in der Segmenttabelle 113a wird so eingestellt, daß deren Vergrößerung berücksichtigt wird und außerdem ihre Mindestzuordnungsgröße erhöht wird. In dem Eintrag wird ein Flag gesetzt, um anzuzeigen, daß das automatische R/W-Datenseg­ ment 119a Verschiebungsreferenzen 121a hat. Ähnliche Flags wer­ den in anderen Einträgen für die anderen Segmente 119b-119c ge­ setzt, um anzugeben, daß diese anderen Segmente 119b-119c keine Verschiebungsreferenzen 121b-121c haben, und die zugehörigen Verschiebungszählwerte in diesen Einträgen werden auf Null ge­ setzt. Der Eintrag für das Selbstladesegment 119d wird so ein­ gestellt, daß sein Offset, seine Länge und seine Flags richtig sind.
Der XIP-Binder 78'a korrigiert dann die Ressourcentabelle 113b, Schritt 464, so daß sie die neuen Orte aller Ressourcen in der ausführbaren XIP-Datei 64' angibt. Der XIP-Binder 78'c korrigiert außerdem das Selbstladesegment 119d, Schritt 466. Der in dem Informationsblock 111e gespeicherte CS:IP-Ort wird an einen bestimmten Ort in dem Selbstladesegment 119d geschrie­ ben. Der bestimmte Ort wird verwendet, wenn das Selbstladeseg­ ment 106d ausgeführt wird, um der XIP-Anwendung 64' die Steue­ rung zu übergeben. Der XIP-Binder 78'c korrigiert außerdem die Eintragstabelle 113e, Schritt 468. Der XIP-Binder 78'c durchläuft eine Schleife in der Eintragstabelle 113e, wobei er die Segmentart prüft, auf die Bezug genommen wird. Wenn ein Eintrag auf ein bewegbares Segment hinweist, wird seine Segmentnummer um Eins erhöht, um das neue Selbstladesegment 119d zu berücksichtigen. Wenn der Eintrag exportiert wird, wird der Eingangspunkt untersucht. Wenn der Code für "PUSH DS", "POP AX" oder "MOV AX, DS" gefunden wird, korrigiert der XIP-Binder 78'a den Eingangspunkt mit zwei NOP-Instruktionen bzw. Leerbefehlen. Diese Korrektur dupliziert, was der Windows- Kernel 66' (Lader) beim Laden einer Anwendung tut. Wenn ein Eintrag auf ein festes Segment hinweist, wird seine Segmentnummer in ähnlicher Weise um Eins erhöht, um das neue Selbstladesegment 119d zu berücksichtigen. Wieder wird der Eingangspunkt untersucht, wenn der Eintrag exportiert wird. Wenn der Code für "PUSH DS", "POP AX" oder "MOV AX, DS" gefunden wird, korrigiert der XIP-Binder 78'a auch den Eingangspunkt mit zwei NOP-Instruktionen bzw. Leerbefehlen. Wenn ein Eintrag dagegen auf eine in einem Modul definierte Konstante hinweist, unternimmt der XIP-Binder 78'a keine weiteren Aktionen.
Der XIP-Binder 78'a korrigiert dann die Verschiebungsdaten 121d des Selbstladesegments 119d, um die neue Referenz zu dem XIP-LADER 84' zu berücksichtigen, Schritt 470. Schließlich kor­ rigiert der XIP-Binder 78'a die Modulreferenztabelle 113c der­ art, daß sie auf den Anfang des Namens des XIP-Laders 84' in der Tabelle der importierten Namen 113d zeigt, Schritt 472.
Fig. 15-17, 18a-18c und 19-21 zeigen die von verschiedenen Laufzeitelementen ausgeführten Operationsschritte bei der Systeminitialisierung, beim Windows-Start, "Laden" einer XIP- Anwendung, Eingeben einer Task, Ausgeben einer Task und beim Stopp einer Task. Wie in Fig. 15 dargestellt ist, ordnet das XIP-Management 78'a, nachdem es die Steuerung erhalten hat, zur Systeminitialisierungszeit der Taskmanagementdatenstruktur 87' RAM zu, Schritt 476, veranlaßt dann, daß der vorgegebene Be­ reich der Segmentselektoren 83' sich selbst zugeordnet wird, Schritt 478. Wie vorher beschrieben wurde, fordert das XIP- Management 78'a den Windows-Kernel 66' wiederholt auf, Seg­ mentselektoren dem XIP-Management 78'a zuzuordnen, bis der vor­ gegebene Bereich der Segmentselektoren 83' zugeordnet ist. Das XIP-Management 78'a gibt dann die zugeordneten Segmentselekto­ ren 83' außerhalb des vorgegebenen Bereiches frei.
Wie in Fig. 16 dargestellt ist, erhält der XIP-Initiator 78'b, nachdem ihm die Steuerung übergeben wurde, vom Windows- Kernel 66' zur WindowsTM-Startzeit den Ort des Burgermaster- Segmentes 81'a, Schritt 482. Der XIP-Initiator 78'b erzeugt dann ein Leersegment 106e, vorzugsweise 64K groß, und veranlaßt den Windows-Kernel 66', dem Leersegment einen Segmentselektor 81'b zuzuordnen, Schritt 483. Der XIP-Initiator 78'b erzeugt außerdem unter Verwendung des Leersegmentes 106e ein Leermodul und erhält einen anderen Segmentselektor 85' vom Windows-Kernel 66', Schritt 484. Der XIP-Initiator 78'b schreibt außerdem ein Segmenttabellenbild in das Leermodul, Schritt 486.
Als nächstes informiert der XIP-Initiator 78'b das XIP- Management 78'a über beide Segmentselektoren 85', Schritt 488. Als Antwort berichtigt das XIP-Management 78'a die Segmentdes­ kriptoren aller Segmentselektoren 83' in dem vorgegebenen Be­ reich, damit sie auf das Leersegment 106e zeigen, Schritt 490. Dann bestimmt das XIP-Management 78'a den Selektortabellenein­ trags-Offset des Burgermasters für das Leersegment 106e, Schritt 492. Schließlich ze 13022 00070 552 001000280000000200012000285911291100040 0002019681256 00004 12903igt das XIP-Management 78'a allen Burgermaster-Selektortabelleneinträgen für den vorgegebenen Be­ reich der Segmentselektoren 83' den Offset des Segmentselektors 85' des Leersegmentes.
Die obigen Schritte werden durchgeführt, um ein bestimmtes Laufzeitverhalten von WindowsTM zu adressieren, insbesondere um sicherzustellen, daß eine bestimmte von WindowsTM durchgeführte Laufzeitprüfung trotz der neuen Verwendung des vorab zugeordne­ ten, vorgegebenen Bereichs der Segmentselektoren 83' noch durchlaufen wird.
Wie in Fig. 17 dargestellt ist, aktualisiert der XIP-LADER 84', nachdem er, wie vorher beschrieben wurde, die Steuerung vom Selbstladesegment 106a erhalten hat, zur "Lade"-Zeit der XIP-Anwendung die Modultabelle für die XIP-Anwendung 64', Schritt 506. (Der XIP-LADER 84' "registriert" sich selbst auch bei WERKZEUG-HILFE für Hinweise über Taskwechsel, wenn er als erster aufgerufen wird (dieser Schritt ist nicht dargestellt)). Der XIP-LADER 84' berührt dann alle Aliasnamen, wobei dies dazu führt, daß alle "Lade bei Aufruf"- und "Lade bei Anforderung"- Segmente und die Segmentdeskriptoren dieser Selektoren vom Windows-Kernel 66' in den Speicher geladen werden. Der XIP- LADER 84' läuft dann eine Schleife durch die Segmenttabelle der Modultabelle, wobei der vorab zugeordnete, vorgegebene Bereich der Segmentselektoren 83' für alle Segmente bis auf das automa­ tische R/W-Datensegment eingefüllt wird, Schritte 510-514. Der XIP-LADER 84' läuft dann wieder eine Schleife durch die Seg­ menttabelle der Modultabelle, wobei er veranlaßt, daß der Windows-Kernel 66' dem automatischen R/W-Datensegment 106d RAM zuordnet, ordnet dem automatischen R/W-Datensegment 106d einen Segmentselektor 85' zu, berichtigt die Segmentdeskriptoren des zugeordneten Segmentselektors 85' und löst alle Verschiebungs­ elemente 154 des automatischen R/W-Datensegments 106d auf, Schritte 516-518. Die Schritte 516-518 werden nach den Schrit­ ten 510-514 durchgeführt, um es dem Windows-Kernel 66' zu er­ möglichen, daß er alle Verschiebungselemente 154 des automati­ schen R/W-Datensegmentes 106d richtig auflösen kann.
Als nächstes kehrt der XIP-LADER 84' zum Windows-Lader zu­ rück, um die Taskerzeugung der XIP-Anwendung 64' zu beenden. Als Antwort ordnet der Windows-Kernel 66' den Bezeichner der XIP-Anwendung in der Taskwarteschlange an. Zu gegebener Zeit erhält das Selbstladesegment 106a wieder die Steuerung. Auf­ grund der bereits beschriebenen CS:IP-Berichtigung in dem Selbstladesegment 106a wird die Ausführungssteuerung sofort zu dem XIP-LADER 64' zurückübertragen. Der XIP-LADER 84' infor­ miert dann das XIP-Management 82'a von dem Taskstart und führt die Ausführung an dem ursprünglichen CS:IP fort, Schritte 522-524.
Wie in Fig. 18a gezeigt ist, erzeugt das XIP-Management 82'a, nachdem es von dem XIP-LADER 84' benachrichtigt wurde, zur Taskstartzeit einen Taskdeskriptor 204 und die zugehörige Tasksegmentdeskriptorseite 206, Schritt 206. Fig. 18b zeigt den Schritt 206 detaillierter. Das XIP-Management 82'a inkremen­ tiert den Taskzählwert 210 zunächst, Schritt 564. Dann bestimmt das XIP-Management 82'a, ob es freie Taskdeskriptoreinträge 204 gibt, Schritt 565. Wenn es keine freien Taskdeskriptoreinträge 204 gibt, ordnet das XIP-Management 82'a weitere freie Taskdes­ kriptoreinträge 204 zu und zugehörige Tasksegmentdeskriptorsei­ ten 206, Schritt 566. Nachdem das XIP-Management 82'a bestimmt hat, daß es freie Taskdeskriptoreinträge 204 gibt oder neue Deskriptoreinträge erzeugt hat, lokalisiert es den nächsten freien Taskdeskriptoreintrag 204 in der Taskmanagementdaten­ struktur 89' und speichert die Bezeichnung der beginnenden Task in den Eintrag, Schritte 567-568. Das XIP-Management 82'a loka­ lisiert dann die zugehörige freie Tasksegmentdeskriptorseite 206 und erzeugt Leersegmentdeskriptoren überall in der neu zu­ geordneten Tasksegmentdeskriptorseite 206, Schritte 570-572. Zum Schluß füllt das XIP-Management 82'a die Segmentdeskriptor­ seite 206 auf der Basis der Informationen in der Segmenttabelle der Modultabelle aus, Schritt 574.
Es wird wieder auf Fig. 18a Bezug genommen. Nachdem das XIP-Management 82'a den Taskdeskriptor 204 und die zugehörige Tasksegmentdeskriptorseite 206 erzeugt hat, setzt es die begin­ nende Task als aktuelle Task, Schritt 538. Das XIP-Management 82'a lokalisiert das Modul, Schritt 540, und ruft die Adresse des Selbstladesegmentes 106a und die Anzahl der Alias-Selekto­ ren ab, Schritte 542 und 544. Dann berechnet und speichert das XIP-Management 82'a den Selektorzählwert 216, Schritt 546. Au­ ßerdem identifiziert das XIP-Management das automatische R/W- Datensegment 106d der aktuellen Task im Bezeichner 218 und zeichnet es auf, Schritt 548. Als nächstes lokalisiert das XIP- Management 82'a den Selektortabelleneintrag des Burgermasters, Schritt 550, berechnet und speichert den "XIP-Selektor" des au­ tomatischen R/W-Datensegments, d. h. den "Alias-Selektor" in dem vorgegebenen Bereich der Segmentselektoren 83'. Das XIP-Manage­ ment 82'a bestimmt außerdem, ob der Objektzählwert für das Mo­ dul gleich 1 ist, Schritt 554. Wenn der Objektzählwert nicht gleich 1 ist, findet das XIP-Management gültige Segmentdes­ kriptoren von vorangegangenen Objekten und kopiert sie in den Windows-LDT, bevor es zu dem Schritt 558 weitergeht.
In jedem Fall löst das XIP-Management 82'a im Schritt 558 die Alias-Selektoren 83' zu deren richtigen dynamisch zugeord­ neten Selektoren 85' auf oder berichtigt die Alias-Selektoren 83' als bedeutungsvolle fehlerhafte Zeiger oder MBPs. MBPs wer­ den erzeugt, indem die reale Segmentselektornummer in dem Ba­ sisabschnitt 54 des Segmentdeskriptors 46 des bestimmten Seg­ mentselektors aus dem vorab zugeordneten, vorgegebenen Bereich der Segmentselektoren 83' angeordnet wird, und der Segmentdes­ kriptor 46 wird als TSS markiert. Da das Zugreifen auf einen TSS-Deskriptor einen allgemeinen Speicherzugriffsfehler er­ zeugt, kann dem XIP-Initiator 82'b auf diese Weise die Steue­ rung übertragen werden. Zum Schluß baut das XIP-Management 82'a den vorgegebenen Bereich der Selektoren für alle Segmente auf, Schritt 560, und lagert die Tasksegmentdeskriptorseite 206 der aktuellen Task ein, Schritt 562.
Fig. 18c zeigt den Schritt 560 detaillierter. Das XIP- Management 82'a ruft das erste Segment 106a-106d ab, Schritt 576. Das Segment 106a-106d wird üblicherweise in fortlaufender Reihenfolge erhalten. Als nächstes bestimmt das XIP-Management 82'a, ob das Segment 106a-106d das automatische R/W-Datenseg­ ment 106d ist. Wenn es nicht das automatische R/W-Datensegment 106d ist, setzt das XIP-Management 82'a das Basisfeld auf die Summe der Flash-Speicheradresse, des Offsets der XIP-Anwendung und des Segmentoffsets innerhalb der ausführbaren Datei, Schritt 580, setzt das Deskriptor-Flag auf "Code", Schritt 582, und setzt das Limit auf "Segmentgröße", Schritt 584. Wenn dage­ gen das lokalisierte Segment das automatische R/W-Datensegment 106d ist, kopiert das XIP-Management die Segmentdeskriptorin­ formationen des von dem Windows-Kernel 66' zugeordneten Seg­ mentselektors 35', Schritt 586. Vorzugsweise befreit das XIP- Management 82'a außerdem den von Windows zugeordneten Selektor, Schritt 588, und setzt den Segmentsektor auf Null, um seine Wiederverwendung zu verhindern, Schritt 590.
Wie in Fig. 19 dargestellt ist, bestimmt das XIP-Management 82'a zur Taskeingangszeit, nachdem es von dem XIP-LADER 84' in­ formiert wurde, ob die eingehende Task eine XIP-Task ist, Schritt 594. Wenn die eingehende Task keine XIP-Task ist, un­ ternimmt das XIP-Management 82'a keine weiteren Aktionen. Wenn die eingehende Task dagegen eine XIP-Task ist, sichert das XIP- Management 82'a die Adresse des Deskriptors der eingehenden Task als Zeiger 214, Schritt 596. Als nächstes speichert das XIP-Management 82'a die Arena-Adresse des Burgermasters in dem Selektoreintrag des Burgermasters für das automatische R/W-Da­ tensegment 106d, Schritt 598. Zum Schluß kopiert das XIP- Management 82'a die Tasksegmentdeskriptorseite der eingehenden XIP-Task in die Segmentdeskriptoren des vorab zugeordneten Be­ reichs der Segmentselektoren 83', Schritt 600.
Wie in Fig. 20 dargestellt ist, bestimmt das XIP-Management 82'a zur Taskausgangszeit, wenn es von dem XIP-LADER 84' infor­ miert worden ist, ob die abgehende Task eine XIP-Task ist, Schritt 604. Wenn die abgehende Task keine XIP-Task ist, unter­ nimmt das XIP-Management 82'a keine weiteren Aktionen. Wenn die abgehende Task dagegen die aktuelle XIP-Task ist, setzt das XIP-Management 82'a den aktuellen Taskdeskriptorzeiger 214 auf Null, Schritt 606. Als nächstes setzt das XIP-Management 82'a den Selektoreintrag des Burgermasters für das automatische R/W- Datensegment 106d auf die Burgermaster-Arena-Adresse des Leer­ segmentes 106e, Schritt 608. Zum Schluß kopiert das XIP-Manage­ ment 82'a die Tasksegmentdeskriptorseite des Leersegmentes in die Segmentdeskriptoren des vorab zugeordneten, vorgegebenen Bereichs der Segmentselektoren 83', Schritt 610.
Wie es in Fig. 21 gezeigt ist, bestimmt das XIP-Management 82'a zur Taskstoppzeit, wenn es von dem XIP-LADER 84' infor­ miert wurde, ob die stoppende Task die aktuelle XIP-Task ist, Schritt 614. Falls die stoppende Task die aktuelle XIP-Task ist, führt das XIP-Management 82'a die Schritte des Taskaus­ gangs aus, die vorher beschrieben wurden, und fährt dann mit dem Schritt 620 fort. Wenn die stoppende Task dagegen nicht die aktuelle XIP-Task ist, bestimmt das XIP-Management 82'a, ob die stoppende Task überhaupt eine XIP-Task ist, Schritt 618. Wenn die stoppende Task keine XIP-Task ist, unternimmt das XIP- Management 82'a keine weiteren Aktionen. Ansonsten geht das XIP-Management zu dem Schritt 620 über. Im Schritt 622 berei­ nigt das XIP-Management 82'a den Taskdeskriptor 204 und die zu­ gehörige Tasksegmentdeskriptorseite 206 der stoppenden Task, Schritt 620, dekrementiert den Taskzählwert, Schritt 622. Zu­ sätzlich aktualisiert das XIP-Management 82'a die Modultabelle entsprechend, Schritt 623.
Auf diese Weise wurde ein Verfahren und eine Einrichtung zum Ausführen einer Anwendung vom ROM, Flash-Speicher, o. dgl. am Platz beschrieben. Obwohl die vorliegende Erfindung anhand der oben dargestellten Ausführungsbeispiele beschrieben wurde, ist es für den Fachmann zu erkennen, daß die Erfindung nicht auf die beschriebenen Ausführungsbeispiele beschränkt ist. Die vorliegende Erfindung kann mit Modifikationen und Änderungen innerhalb des Erfindungsgedankens und Schutzbereichs der anlie­ genden Ansprüche ausgeführt werden. Daher ist die Beschreibung nur als Veranschaulichung zu verstehen und soll die vorliegende Erfindung nicht beschränken.

Claims (27)

1. Computersystem (10) mit:
einem Speichermedium, das ein erstes Programm (78) spei­ chert, das eine Logik zum Lesen einer verschiebbaren aus­ führbaren Datei (62) eines zur Ausführung aus einem Speicher mit wahlfreiem Zugriff (RAM; 14, 16) vorgesehenen zweiten Programms und zum Umwandeln der verschiebbaren ausführbaren Datei (62) in eine am Platz ausführbare Datei (64) umfaßt, wobei die am Platz ausführbare Datei zur Ausführung aus ei­ nem Schreib-Einmal-(18a) oder Schreib-Selten(18b)-Speicher­ medium vorgesehen ist, in welches die am Platz ausführbare Datei gespeichert werden soll,
wobei das erste Programm (78) verschiebbare Elemente (103) in der verschiebbaren ausführbaren Datei (62) derart genügend auflöst, daß keine weiteren Schreiboperationen in die am Platz ausführbare Datei (64) erforderlich sind, bevor die am Platz ausführbare Datei am Platz ausgeführt werden kann, nachdem sie in das Schreib-Einmal/Selten-Speichermedi­ um (18) gespeichert worden ist,
wobei das erste Programm (78) die verschiebbaren Elemen­ te (103) genügend auflöst, indem es einen vorgegebenen Ab­ schnitt (83) einer Speichermanagementdatenstruktur (81) ei­ nes Betriebssystems verwendet, welches zur Verwaltung der Am-Platz-Ausführung des zweiten Programms verwendet werden soll, und sich darauf verläßt, daß der vorgegebene Abschnitt (83) der Speichermanagementdatenstruktur (81) bei Bedarf dem am Platz ausführenden zweiten Programm zur Verfügung ge­ stellt und zur Ausführungszeit mit den richtigen Speicher­ adressen berichtigt werden kann.
2. Computersystem nach Anspruch 1, dadurch gekennzeich­ net, daß die verschiebbaren Elemente (103) externe Referen­ zen (103b) enthalten, wobei das erste Programm (78) einige der externen Referenzen (103b) dadurch auflöst, daß diese externen Referenzen in indirekte externe Referenzen (107c, d) umstrukturiert werden, die durch einen Lese/Schreib-Datenbe­ reich (105b) des zweiten Programms gehen.
3. Computersystem nach Anspruch 1 oder 2, dadurch ge­ kennzeichnet, daß in dem Speichermedium außerdem ein drittes Programm (80) gespeichert ist, das eine Logik umfaßt, um die am Platz ausführbare Datei (64) des zweiten Programms auf einem Schreib-Selten-Speichermedium (18) zu installieren.
4. Computersystem nach einem der Ansprüche 1-3, dadurch gekennzeichnet, daß das erste Programm ein Umwandlerprogramm und das zweite Programm ein vorhandenes, für die Ausführung aus einem Speicher mit wahlfreiem Zugriff vorgesehenes Pro­ gramm ist.
5. Computersystem nach einem der Ansprüche 1-3, dadurch gekennzeichnet, daß das erste Programm ein Binder-Programm und das zweite Programm ein kompiliertes Programm ist.
6. Computersystem nach einem der Ansprüche 1-3, dadurch gekennzeichnet, daß der vorgegebene Abschnitt der Speicher­ managementdatenstruktur ein vorgegebener Bereich von Spei­ chersegmentselektoren einer Speichersegmentdeskriptortabelle ist.
7. Computersystem nach Anspruch 6, dadurch gekennzeich­ net, daß die verschiebbaren Elemente externe Referenzen ent­ halten, und das erste Programm externe "FAR CALL"- bzw. "FERN-AUFRUF"-Referenzen auflöst, indem diese externen FERN- AUFRUF-Referenzen in indirekte, externe FERN-AUFRUF-Referen­ zen über ein Lese/Schreib-Datensegment des zweiten Programms umstrukturiert werden.
8. Computersystem nach Anspruch 6, dadurch gekennzeich­ net, daß das erste Programm außerdem ein Selbstladeprogramm­ segment (106a) in das am Platz ausführende zweite Programm (64) einfügt, und das am Platz ausführende zweite Programm derart markiert wird, daß das Selbstladeprogrammsegment (106a) von dem Betriebssystem die Steuerung erhält, wenn das Betriebssystem in Erwiderung einer Anforderung zur Ausfüh­ rung des am Platz ausführenden zweiten Programms das am Platz ausführende zweite Programm zu laden versucht.
9. Computersystem nach Anspruch 6, dadurch gekennzeich­ net, daß in dem Speichermedium außerdem ein drittes Programm (80) gespeichert ist, das eine Logik umfaßt, um die am Platz ausführbare Datei des zweiten Programms auf einem Schreib- Einmal/Selten-Speichermedium (18) zu installieren.
10. Computersystem (10) mit: einem Speichermedium, welches ein erstes Programm (82) speichert, das eine Logik umfaßt, um einen vorgegebenen Ab­ schnitt (83) einer Speichermanagementdatenstruktur (81) ei­ nes Betriebssystems zur Systeminitialisierungszeit zu reser­ vieren, um den reservierten vorgegebenen Abschnitt (83) der Speichermanagementdatenstruktur (81) einem zweiten Programm (64) neu zuzuweisen, wenn das zweite Programm (64) am Platz ausgeführt werden soll, und um den neu zugewiesenen, vorge­ gebenen Abschnitt (83) der Speichermanagementdatenstruktur (81) mit den richtigen Speicheradressen eines Schreib-Ein­ mal/Selten-Speichermediums (18) zu berichtigen, in welchem das am Platz ausführende zweite Programm (64) gespeichert ist, wobei das Betriebssystem zur Verwaltung der Ausführung des zweiten Programms am Platz verwendet wird.
11. Computersystem nach Anspruch 10, wobei das erste Programm außerdem eine Logik (84) umfaßt, um zu veranlassen, daß Speicher (105b) mit wahlfreiem Zugriff sowohl für Lese- als auch für Schreib-Datenbereiche des am Platz ausführenden zweiten Programms (64) zugewiesen wird.
12. Computersystem nach Anspruch 10, wobei in dem Spei­ chermedium außerdem ein drittes Programm (86) gespeichert ist, welches eine Logik umfaßt, um eine Managementdaten­ struktur (87) für eine am Platz ausführende Task zu erzeugen und aufrechtzuerhalten, wobei die Managementdatenstruktur (87) Taskmanagementinformationen (89) enthält, um ein Multi­ tasking des am Platz ausführenden zweiten Programms (64) und weiterer am Platz ausführender Programme zu ermöglichen, die auf die gleiche Weise erzeugt wurden, wie das am Platz aus­ führende zweite Programm, wobei die Taskmanagementinforma­ tionen (89) die richtigen Speicheradressen des Schreib-Ein­ mal/Selten-Speichermediums (18) der verschiedenen am Platz ausführenden Programme enthalten, um bei einem Taskwechsel den vorgegebenen Abschnitt (83) der Speichermanagementdaten­ struktur (81) zu berichtigen.
13. Computersystem nach Anspruch 10, dadurch gekenn­ zeichnet, daß der vorgegebene Abschnitt der Speichermanage­ mentdatenstruktur ein vorgegebener Bereich von Speicherseg­ mentselektoren ist.
14. Computersystem nach Anspruch 13, dadurch gekenn­ zeichnet, daß das erste Programm eine Logik umfaßt, um ein Blind-Programmsegment und unter Verwendung des Blind-Pro­ grammsegmentes ein Blind-Programmmodul zu erzeugen, und um die Berichtigungslogik dann zu veranlassen, die zugehörigen Speichersegmentdeskriptoren derart zu berichtigen, daß der vorab zugewiesene Bereich der Speichersegmentselektoren vollständig auf das Blind-Programmsegment zeigt.
15. Computersystem nach Anspruch 13, dadurch gekenn­ zeichnet, daß das erste Programm von einem Selbstladesegment (106a), welches ein integraler Teil des am Platz ausführen­ den zweiten Programms (64') ist, die Steuerung erhält, wobei das Selbstladesegment (106a) von dem Betriebssystem die Steuerung erhält, wenn das Betriebssystem versucht, das am Platz ausführende zweite Programm in Erwiderung einer Anfor­ derung zur Ausführung des am Platz ausführenden zweiten Pro­ gramms zu laden.
16. Computersystem nach Anspruch 13, dadurch gekenn­ zeichnet, daß die Berichtigungslogik des ersten Programms eine Logik umfaßt, um ein Aliasing von einigen aus dem er­ neut zugewiesenen, vorgegebenen Bereich der Speichersegment­ selektoren zu von dem Betriebssystem dynamisch zugeordneten Speichersegmentselektoren durchzuführen und um einige aus dem erneut zugewiesenen, vorgegebenen Bereich der Speicher­ segmentselektoren als bedeutungsvolle fehlerhafte Zeiger pseudozuberichtigen, die Speicherzugriffsfehler verursachen, wenn sie von einem Befehl referenziert werden.
17. Computersystem nach Anspruch 16, dadurch gekenn­ zeichnet, daß in dem Speichermedium außerdem ein drittes Programm gespeichert ist, das eine Logik umfaßt, um einen von einer Referenz zu einem bedeutungsvollen fehlerhaften Zeiger verursachten Speicherzugriffsfehler zu bedienen, ein­ schließlich einer Logik, um den referenzierenden Befehl für einen Identifizierer des Speichersegmentselektors zurückzu­ übersetzen, wobei der Speichersegmentselektor berichtigt wird und der referenzierende Befehl erneut ausgegeben wird.
18. Computersystem nach Anspruch 17, dadurch gekenn­ zeichnet, daß in dem Speichermedium ein drittes Programm (86) gespeichert ist, das eine Logik umfaßt, um eine Manage­ mentdatenstruktur (87) einer am Platz ausführenden Task zu erzeugen und aufrechtzuerhalten, wobei die Managementdaten­ struktur (87) Taskmanagementinformationen (89) enthält, um ein Multitasking des am Platz ausführenden zweiten Programms (64) und weiterer am Platz ausführender Programme zu er­ leichtern, die auf die gleiche Weise erzeugt wurden, wie das am Platz ausführende zweite Programm, wobei die Taskmanage­ mentinformationen (89) die richtigen Adressen des Schreib- Einmal/Selten-Speichermediums (18) der verschiedenen am Platz ausführenden Programme enthalten, um die zugehörigen Speichersegmentdeskriptoren des vorgegebenen Bereichs (83) der Speichersegmentselektoren abwechselnd zu berichtigen.
19. Computersystem nach Anspruch 18, dadurch gekenn­ zeichnet, daß die Taskmanagementdatenstruktur-Erzeugungs- und -aufrechterhaltungs-Logik eine Logik zum Erzeugen eines Taskdeskriptoreintrages und eines Zeigers (214; 222) auf ei­ ne zugehörige Taskspeichersegmentdeskriptorseite für eine am Platz ausführende Task umfaßt, wenn die am Platz ausführende Task gestartet wird, und wobei der erzeugte Taskdeskriptor­ eintrag und die zugehörige Taskspeichersegmentdeskriptor­ seite zerstört werden, wenn die am Platz ausführende Task beendet wird, wobei der Taskdeskriptoreintrag beschreibende Basisinformationen über die beginnende ausführende Task und einen Zeiger auf die zugehörige Taskspeichersegmentdeskript­ orseite enthält, und wobei die zugehörige Taskspeicherseg­ mentdeskriptorseite Berichtigungsinformationen enthält, um den vorgegebenen Bereich der Speichersegmentselektoren für die Am-Platz-Ausführung der beginnenden am Platz ausführen­ den Task zu berichtigen.
20. Computersystem nach Anspruch 19, dadurch gekenn­ zeichnet, daß die Taskmanagementdatenstruktur-Erzeugungs- und -Aufrechterhaltungs-Logik außerdem eine Logik umfaßt, um Speicherraum einer ersten Tabelle zum Speichern von mehreren Taskdeskriptoreinträgen und einer zweiten Tabelle zum Spei­ chern von mehreren zugehörigen Taskspeichersegmentdeskript­ orseiten zuzuweisen und um die erste und die zweite Tabelle zu komprimieren.
21. Computersystem nach Anspruch 18, dadurch gekenn­ zeichnet, daß das erste Programm außerdem eine Logik umfaßt, um die in den Tasksegmentdeskriptorseiten gespeicherten In­ formationen in die zugehörigen Speichersegmentdeskriptoren des vorgegebenen Bereichs der Speichersegmentselektoren zur Taskeingangszeit und zur Taskausgangszeit einzulagern und aus diesen auzulagern, wenn eine am Platz ausführende Task ein- oder ausgeschaltet wird.
22. Computergestütztes Verfahren zur Erzeugung eines am Platz ausführbaren Programms in einem Computersystem, wobei:
  • a) eine verschiebbare ausführbare Datei eines Programms gelesen wird, die zur Ausführung aus einem Speicher mit wahlfreiem Zugriff heraus vorgesehen ist, in der verschieb­ baren ausführbaren Datei enthaltene verschiebbare Elemente analysiert werden und zur Auflösung dieser verschiebbaren Elemente benötigte Informationen verfolgt werden;
  • b) die verschiebbare ausführbare Datei in eine am Platz ausführbare Datei umgewandelt wird, die zur Ausführung aus einem Schreib-Einmal- oder Schreib-Selten-Speichermedium heraus vorgesehen ist, in welches die am Platz ausführbare Datei gespeichert werden soll,
wobei die verschiebbaren Elemente in der verschiebbaren, ausführbaren Datei derart aufgelöst werden, daß keine weite­ ren Schreiboperationen in die am Platz ausführbare Datei be­ nötigt werden, bevor die am Platz ausführbare Datei am Platz ausgeführt werden kann, wobei die verfolgten Informationen und ein vorgegebener Abschnitt einer Speichermanagementda­ tenstruktur eines zur Verwaltung der Ausführung des zweiten Programms am Platz verwendeten Betriebssystems verwendet werden, und wobei sich darauf verlassen wird, daß der vor­ gegebene Abschnitt der Speichermanagementdatenstruktur bei Bedarf dem am Platz ausführenden zweiten Programm zur Verfü­ gung gestellt und zur Ausführungszeit mit den richtigen Speicheradressen berichtigt werden kann.
23. Verfahren nach Anspruch 22, dadurch gekennzeichnet, daß die verschiebbaren Elemente externe Referenzen enthal­ ten, und wobei der Schritt (b) das Auflösen einiger externer Referenzen enthält, indem diese externen Referenzen in indi­ rekte externe Referenzen über einen Lese/Schreib-Datenbe­ reich des Programms umstrukturiert werden.
24. Verfahren nach Anspruch 22 oder 23, dadurch gekenn­ zeichnet, daß das Verfahren außerdem den Schritt (c) ent­ hält, daß die am Platz ausführbare Datei des Programms auf einem Schreib-Selten-Speichermedium installiert wird.
25. Computergestütztes Verfahren zur Ausführung eines Programms aus einem Schreib-Einmal/Selten-Speichermedium heraus, wobei:
  • a) ein vorgegebener Abschnitt einer Speichermanagement­ datenstruktur eines Betriebssystems zur Systeminitialisie­ rungszeit reserviert wird, wobei das Betriebssystem nachfol­ gend verwendet wird, um die Ausführung des Programms am Platz zu verwalten;
  • b) der reservierte, vorgegebene Abschnitt der Speicher­ managementdatenstruktur dem Programm neu zugewiesen wird, wenn das Programm am Platz ausgeführt werden soll; und
  • c) der vorgegebene Abschnitt der Speichermanagementda­ tenstruktur mit den richtigen Speicheradressen des Schreib- Einmal/Selten-Speichermediums berichtigt wird.
26. Verfahren nach Anspruch 25, dadurch gekennzeichnet, daß (d) veranlaßt wird, daß Speicher mit wahlfreiem Zugriff Lese- sowie Schreib-Datenbereichen des am Platz ausführenden zweiten Programms zugeordnet wird.
27. Verfahren nach Anspruch 25 oder 26, dadurch gekenn­ zeichnet, daß eine am Platz ausführende Taskmanagementdaten­ struktur erzeugt und aufrechterhalten wird, die Taskmanage­ mentinformationen enthält, um ein Multitasking des am Platz ausführenden Programms und weiterer am Platz ausführender Programme zu ermöglichen, die in der gleichen Weise wie das am Platz ausführende Programm erzeugt wurden, wobei die Taskmanagementinformationen die richtigen Speicheradressen des Schreib-Einmal/Selten-Speichermediums der verschiedenen am Platz ausführenden Programme enthalten, um den vorgegebe­ nen Abschnitt der Speichermanagementdatenstruktur abwech­ selnd zu berichtigen.
DE19681256T 1995-02-27 1996-02-12 Ausführung von Anwendungen am Platz vom Speicher Expired - Fee Related DE19681256C2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/394,619 US5581768A (en) 1995-02-27 1995-02-27 Method and apparatus for executing applications in place from write once/seldom memories
PCT/US1996/002150 WO1996027158A1 (en) 1995-02-27 1996-02-12 Executing applications in place from memory

Publications (2)

Publication Number Publication Date
DE19681256T1 DE19681256T1 (de) 1998-02-12
DE19681256C2 true DE19681256C2 (de) 2000-02-03

Family

ID=23559731

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19681256T Expired - Fee Related DE19681256C2 (de) 1995-02-27 1996-02-12 Ausführung von Anwendungen am Platz vom Speicher

Country Status (5)

Country Link
US (1) US5581768A (de)
AU (1) AU4986096A (de)
DE (1) DE19681256C2 (de)
GB (1) GB2314182B (de)
WO (1) WO1996027158A1 (de)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802368A (en) * 1995-09-29 1998-09-01 Informix Software, Inc. Dynamic Library Task Switching
US5752005A (en) * 1996-01-22 1998-05-12 Microtest, Inc. Foreign file system establishing method which uses a native file system virtual device driver
JPH10177473A (ja) * 1996-12-18 1998-06-30 Japan Airlines Co Ltd コンピュータ・プログラムのインストール方法及びシステム
JPH1185526A (ja) 1997-09-12 1999-03-30 Hitachi Ltd プログラムロード方法
US6421827B1 (en) 1997-12-17 2002-07-16 International Business Machines Corporation System and method for detecting and reordering loading patterns
US6117186A (en) * 1998-01-15 2000-09-12 Dvp Media Pty Ltd. System and method for easy loading of CD-ROM computer software without installation process
EP1066562B1 (de) * 1998-03-23 2003-05-02 International Business Machines Corporation Java laufzeitsystem mit veränderter sammlung von konstanten
US6185638B1 (en) 1998-10-07 2001-02-06 International Business Machines Corporation Method and system for dynamically assigning addresses to an input/output device
US6170023B1 (en) 1998-10-07 2001-01-02 International Business Machines Corporation System for accessing an input/output device using multiple addresses
US6202095B1 (en) 1998-10-07 2001-03-13 International Business Machines Corporation Defining characteristics between processing systems
US6167459A (en) * 1998-10-07 2000-12-26 International Business Machines Corporation System for reassigning alias addresses to an input/output device
US6637023B1 (en) * 1999-03-03 2003-10-21 Microsoft Corporation Method and system for updating read-only software modules
KR100376924B1 (ko) * 1999-04-09 2003-03-20 미쓰비시덴키 가부시키가이샤 프로그램머블 컨트롤러의 cpu유닛 및 운전대행 제어방법
US6658658B1 (en) * 2000-02-17 2003-12-02 International Business Machines Corporation Implicit forwarding and resolving of a reference made by an importing module to an exporting module for a specified export
AU2001243502A1 (en) 2000-03-09 2001-09-17 Exent Technologies, Inc. Registry emulation
US7080373B2 (en) * 2001-03-07 2006-07-18 Freescale Semiconductor, Inc. Method and device for creating and using pre-internalized program files
US6868480B2 (en) 2001-09-28 2005-03-15 Ui Evolution, Inc. Removable active application specific medium
US7131121B2 (en) * 2001-11-14 2006-10-31 Axalto, Inc. Method and apparatus for linking converted applet files without relocation annotations
NL1019876C2 (nl) * 2002-01-31 2003-08-04 Chess Embedded Technology B V Systeem en werkwijze voor het laden van een programmacode in een inrichting alsmede een werkwijze voor het voeden van een programmacode aan een inrichting.
US7178139B2 (en) * 2002-08-27 2007-02-13 Delphi Technologies, Inc. Executable file system for an embedded computer
US7055145B2 (en) * 2002-10-30 2006-05-30 Intel Corporation Dynamic management of execute in place applications
US20040117787A1 (en) * 2002-12-12 2004-06-17 Sowa Kurt E. Reorganized storing of applications to improve execution
US7287068B1 (en) * 2002-12-13 2007-10-23 Bmc Software, Inc. System and method for updating devices that execute an operating system or application program directly from nonvolatile storage
US7328432B2 (en) * 2003-06-02 2008-02-05 Sun Microsystems, Inc. Proximity-based addressing for supporting in-place execution in virtual machines
DE10357257A1 (de) * 2003-12-08 2005-06-30 Giesecke & Devrient Gmbh Java Smart Card Chip mit für globale Variablen reserviertem Speicherbereich
US8069192B2 (en) * 2004-03-22 2011-11-29 Microsoft Corporation Computing device with relatively limited storage space and operating / file system thereof
US7647358B2 (en) * 2004-03-22 2010-01-12 Microsoft Corporation Computing device with relatively limited storage space and operating/file system thereof
US7426625B2 (en) * 2004-03-31 2008-09-16 International Business Machines Corporation Data processing system and computer program product for support of system memory addresses with holes
US7603665B2 (en) 2004-06-29 2009-10-13 Sun Microsystems, Inc. Method and apparatus for loading relocatable in-place executable files in a virtual machine
US8065563B2 (en) * 2006-03-23 2011-11-22 Mediatek Inc. System for booting from a non-XIP memory utilizing a boot engine that does not have ECC capabilities during booting
US7555678B2 (en) * 2006-03-23 2009-06-30 Mediatek Inc. System for booting from a non-XIP memory utilizing a boot engine that does not have ECC capabilities during booting
US8438558B1 (en) 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data
CN101950256A (zh) * 2010-09-15 2011-01-19 中兴通讯股份有限公司 一种嵌入式系统及嵌入式系统重新启动的方法
CN105426223B (zh) 2015-12-25 2019-01-04 百度在线网络技术(北京)有限公司 应用加载方法和装置
CN113157979B (zh) * 2021-03-16 2023-09-29 中国人民解放军国防科技大学 一种基于哑模块节点的内核模块关系图构建方法、系统及介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175828A (en) * 1989-02-13 1992-12-29 Hewlett-Packard Company Method and apparatus for dynamically linking subprogram to main program using tabled procedure name comparison
US5132716A (en) * 1990-04-04 1992-07-21 Eastman Kodak Company System for updating software in automatic film processor
JPH06214670A (ja) * 1991-04-29 1994-08-05 Intel Corp コンピュータ装置およびそれを初期化する方法
US5388267A (en) * 1991-05-29 1995-02-07 Dell Usa, L.P. Method and apparatus for updating and restoring system BIOS functions while maintaining BIOS integrity
US5497464A (en) * 1991-11-01 1996-03-05 Yeh; Keming W. Address mapping logic for transferring data between a peripheral device of a base function expander unit and a palmtop computer as if the peripheral was a peripheral of the computer
US5495586A (en) * 1991-12-26 1996-02-27 Kabushiki Kaisha Toshiba Computer system having memory card/disk storage unit used as external storage device
US5319751A (en) * 1991-12-27 1994-06-07 Intel Corporation Device driver configuration in a computer system
US5355498A (en) * 1992-02-25 1994-10-11 Sun Microsystems, Inc. Method and apparatus for booting a computer system without loading a device driver into memory

Also Published As

Publication number Publication date
GB2314182B (en) 1999-09-08
US5581768A (en) 1996-12-03
AU4986096A (en) 1996-09-18
WO1996027158A1 (en) 1996-09-06
GB9715969D0 (en) 1997-10-01
HK1006788A1 (en) 1999-03-19
DE19681256T1 (de) 1998-02-12
GB2314182A (en) 1997-12-17

Similar Documents

Publication Publication Date Title
DE19681256C2 (de) Ausführung von Anwendungen am Platz vom Speicher
DE69707752T2 (de) Verfahren und System zur Klassenspeicherung in einem Festspeicher
DE69427174T2 (de) Dynamische Hochleistungsprogrammverknüpfung durch Cachespeicherung
DE69230450T2 (de) Programmverarbeitungssystem und -verfahren
DE69813618T2 (de) Kombinieren von mehreren klassendateien in einer laufzeitabbildung
DE69031494T2 (de) Verfahren zum lesen und schreiben von dateien auf nichtlöschbaren speichermedien
DE69510572T2 (de) Verfahren und Vorrichtung zur Run-Time-Fehlerprüfung unter Verwendung dynamischer Programmmodifikation
DE69604882T2 (de) Einzeltransaktionsverfahren für ein Dateiensystem mit Logging-Möglichkeit in einem Rechnerbetriebssytem
DE19740525C1 (de) Verfahren zur Abspeicherung und Wiedergewinnung von Daten in einem Steuersystem, insbesondere in einem Kraftfahrzeug
DE69428848T2 (de) Mehrsprachige Standardressourcen
DE4214184C2 (de) Computersystem mit einem nicht-flüchtigen Speicher und Verfahren zu dessen Aktualisierung
DE60008929T2 (de) Schnellstart eines mikroprozessorbasierten systems
DE69032418T2 (de) Privatspeicher für Fäden in einem multifaden digitalen Datenverarbeitungssystem
DE68926345T2 (de) Datenverarbeitungsnetzwerk
DE19810802A1 (de) Störungsfreies Aktualisieren von Daten
DE10238566A1 (de) Fenster-basierendes Flashspeicher-Speichersystem und Management und Zugriffsverfahren darauf
DE69031936T2 (de) System und Verfahren zur Speicherung von Firmware in einem adressunabhängigen Format
DE102004061597A1 (de) Betriebssystem, das den Lauf von Echtzeitprogrammen ermöglicht, Steuerungsverfahren hierfür sowie Verfahren zum Laden von DLLs
DE102005037855A1 (de) System und Verfahren zum Speichern von Benutzerdaten in einer Partitionsdatei oder zum Verwenden einer Partitionsdatei, die Benutzerdaten enthält
EP1145118A2 (de) Verfahren zum linken von in einen arbeitsspeicher eines prozessors nachgeladenen programmodulen auf einer chipkarte
EP1731999B1 (de) Mechanismus zum dynamischen Registrieren von Dateien in einer stapelverarbeitungsorientierten Umgebung
DE112010004185T5 (de) Synchronisieren einer Datenbank mit datenbankfremden Ressourcen
DE69737608T2 (de) Verfahren zum laden eines anwendungsprogramms auf eine chipkarte
EP1197854B1 (de) Verfahren zum Starten einer Datenverarbeitungsanlage sowie zugehörige Komponenten
DE69911660T2 (de) Laden von objektorientierten rechnerprogrammen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8607 Notification of search results after publication
8607 Notification of search results after publication
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee