DE102005040075A1 - Dynamisches Verbinden von Modulen in einer Vorbetriebssystemumgebung - Google Patents
Dynamisches Verbinden von Modulen in einer Vorbetriebssystemumgebung Download PDFInfo
- Publication number
- DE102005040075A1 DE102005040075A1 DE102005040075A DE102005040075A DE102005040075A1 DE 102005040075 A1 DE102005040075 A1 DE 102005040075A1 DE 102005040075 A DE102005040075 A DE 102005040075A DE 102005040075 A DE102005040075 A DE 102005040075A DE 102005040075 A1 DE102005040075 A1 DE 102005040075A1
- Authority
- DE
- Germany
- Prior art keywords
- application
- library
- module
- modules
- loading
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
Ein dynamisches Verbindungsladeprogramm ist für eine Vorbetriebssystem-Umgebung vorgesehen. Ein derartiges Ladeprogramm kann eine einfache, flexible und kostenwirksame Weise zum Laden von Modulen in Laufzeit in einer Vorbetriebssystem-Umgebung liefern.
Description
- Bevor ein Hersteller ein Betriebssystem auf einem Computersystem installiert, testet und verifiziert derselbe typischerweise den Betrieb sowohl der Hardware als auch der Firmware.
- Vorbetriebssystemumgebungen
- Für viele Computersysteme mit zentralen Verarbeitungseinheiten von Intel ist die Vorbetriebssystem-Verifizierungsumgebung die Extensible Firmware Interface (erweiterbare Firmware-Schnittstelle) (EFI). Die EFI-Umgebung wird typischerweise bei Verifizierungswerkzeugen verwendet, um Wechselwirkungen zwischen Chipsätzen, Systembussen, I/O-Bussen, Peripheriegeräten, einer Systemfirmware und anderen Entitäten auf Systemebene zu testen. EFI ist eine Industrienorm und gilt für alle IPF-Systeme. Genauer gesagt stellt die EFI-Firmware eine Schnittstelle mit der Systemabstraktionsschicht (SAL = System Abstraction Layer) her, die wiederum eine Schnittstelle mit der Prozessorabstraktionsschicht (PAL = Processor Abstraction Layer) herstellt, die eine Schnittstelle mit einem Hardware-IPF-Prozessor herstellt.
- Die EFI-Umgebung verwaltet einen Speicher eines Computersystems, bis ein Betriebssystem gebootet wird. Vorbetriebssystem-Verifizierungsanwendungen können sowohl im Inneren einer EFI (EFI-Anwendungen) als auch auf einer EFI (Nicht-EFI-Anwendungen) als ein Teil der EFI-Umgebung unter Verwendung der EFI-Bibliothek von Funktionen, wie beispielsweise des Echtzeittakts und Tabellen von EFI-Parametern und Variablennamen ausgeführt werden. Die EFI-Bibliothek ist ferner durch das Betriebssystem zugreifbar, nachdem dasselbe gebootet ist.
- Kompilierung
- Computer führen typischerweise Maschinensprachen auf niedriger Ebene aus, die ohne weiteres durch Computerprozessoren verarbeitet werden, aber die schwierig und zeitraubend für Programmierer zu verwenden sind, während ein Programmieren typischerweise in einer Sprache auf hoher Ebene vorgenommen wird, die einfacher und weniger zeitraubend für Programmierer zu verwenden ist. Ein Kompilierer bzw. Compiler ist ein Übersetzer, dessen Quellsprache eine Sprache auf hoher Ebene ist und dessen Objektsprache nahe der Maschinensprache eines tatsächlichen Computers ist, wobei dieselbe entweder eine Assembly-Sprache oder irgendeine Varietät einer Maschinensprache (verschiebbar bzw. relativ oder absolut) ist. Eine Übersetzung einer Quellsprache auf hoher Ebene in ausführbare Maschinensprachprogramme betrifft häufig mehr als einen Übersetzungsschritt. Zum Beispiel ist es nicht ungewöhnlich, dass ein Programm zuerst in eine maschinenabhängige Assembly-Sprache kompiliert wird, dann zusammengefügt wird, um einen verschiebbaren Maschinencode zu erzeugen, und schließlich geladen und verbunden wird, um einen ausführbaren Maschinencode zu erzeugen. Außerdem betrifft der Kompilierungsschritt selbst typischerweise eine Anzahl von Durchläufen, die das Programm vor einem Erzeugen des endgültigen Objektprogramms progressiv in verschiedene Zwischenformen übersetzen.
- Ladeprogramme
- Ein Ladeprogramm (Loader) oder Verbindungsladeprogramm ist ein Übersetzerschritt, dessen Objektsprache der tatsächliche ausführbare Maschinencode ist und dessen Quellsprache beinahe identisch ist, aber gewöhnlich aus Maschinensprachprogrammen in verschiebbarer Form zusammen mit Tabellen von Daten besteht, die Punkte spezifizieren, wo der verschiebbare Code multipliziert werden muss, um wirklich ausführbar zu werden. Dieser Schritt wird gerade vor einer Ausführung durchgeführt, nachdem der tatsächliche Speicher zugewiesen wurde.
- Bibliotheken
- Ein Bereich ist typischerweise als dynamisch oder statisch klassifiziert. Eine Dynamikbereichregel defi niert einen Bereich hinsichtlich einer Programmausführung bei Laufzeit. Eine Statikbereichregel definiert einen Bereich hinsichtlich der Struktur des Programms bei einer Bauzeit (Übersetzungszeit). Programme enthalten typischerweise Funktionsrufe zu Modulen in einer Bibliothek, die dem Kompilierer verfügbar ist. In einer Statisch-Bibliothek-Umgebung werden die Module, die durch die Programmfunktionsrufe referenziert werden, bei einer Bauzeit (build time) verbunden bzw. verknüpft und geladen und können in Laufzeit nicht verändert werden. Bei einer dynamischen Umgebung ist die Bibliothek in Laufzeit verfügbar und das Verbinden und Laden der Bibliothekmodule wird gerade vor einer Initialisierung einer Ausführung vorgenommen.
- Referenzen
- Referenzieren ist die Operation eines Wiedererlangens des Daten- oder Programmobjekts, das gegenwärtig einem gegebenen Identifizierer zugeordnet ist, unter Verwendung der eindeutigen aktuell aktiven Zuordnung für den Identifizierer. Referenzen zu Identifizierern sind als Lokalreferenzen klassifiziert, falls dieselben eine Zuordnung verwenden, die lediglich innerhalb des aktuell ausgeführten Teilprogramms aktiv ist. Eine globale Referenz ist eine Referenz zu einer Zuordnung, die eine Programmausführung hindurch aktiv ist. Eine lokale Umgebung oder lokale Referenzierumgebung wird verwendet, um diese lokalen Zuordnungen zu bezeichnen, die bei der letzten Veränderung bei der Referenzierumgebung eingebracht wurden.
- Die oben beschriebenen Konzepte sind unten in Verbindung mit
1A –3 erörtert und dargestellt. - Mit Bezug auf
1A ist eine statische Vorbetriebssystem-Bauzeitumgebung10 gezeigt, die eine EFI-Anwendung2 und eine Nicht-EFI-Anwendung4 umfasst, die beide Funktionsrufe zu einem EFI-Bibliothekmodul8 umfassen. Das Bibliothekmodul8 ist in der Form eines verschiebbaren Maschinencodes mit einer Tabelle von Daten, die Punkte spezifizieren, wo der verschiebbare Code modifiziert werden muss, um ein wirklich ausführbarer Maschinencode zu werden. Die statische Vorbetriebssystem-Bauzeitumgebung10 umfasst ein statisches Ladeprogramm6 . Während des letzten Schritts der Kompilierung der Anwendung2 verbindet das statische Ladeprogramm6 eine erste Kopie des Moduls8 mit der Anwendung2 und modifiziert alle der Plätze, wo eine relative Adresse mit einer absoluten Adresse ersetzt werden muss. Auf eine ähnliche Weise verbindet das statische Ladeprogramm6 während des letzten Schritts der Kompilierung der Nicht-EFI-Anwendung4 eine zweite Kopie des Moduls8 mit der Anwendung4 und modifiziert alle der Plätze, wo eine relative Adresse mit einer absoluten Adresse ersetzt werden muss. Bei einer derartigen statischen Vorbetriebssystem-Bauzeitumgebung erfordert jeder Funktionsruf bei jeder Anwendung2 und4 eine Kopie des verschiebbaren Bibliotheksmoduls8 . Irgendeine Veränderung an dem Quellcode bei den Anwendungen2 und4 oder dem gerufenen Modul8 erfordert eine vollständige Rekompilierung der Anwendungen. - Mit Bezug auf
1B weist die statische Vorbetriebssystem-Laufzeitumgebung12 , die der statischen Vorbetriebs-Bauumgebung10 (1A ) zugeordnet ist, keinen Zugriff mehr auf ein Ladeprogramm auf. Die kompilierte EFI-Anwendung2 , die mit dem kompilierten EFI-Bibliothekmodul8 verbunden ist, ist in einem nicht verschiebbaren Maschinencodeformat und ist in einen Speicher geladen, um ausgeführt zu werden. -
1C zeigt die statische Vorbetriebssystem-Laufzeitumgebung12 , die der statischen Vorbetriebs-Bauumgebung10 zugeordnet ist, während einer Ausführung. Die kompilierte Anwendung2 enthält Funktionsrufe14 , denen durch die kompilierte und verbundene Kopie des EFI-Moduls8 genüge geleistet wird. Die Variablen im Inneren des Bibliothekmoduls8 mit globalen Referenzen weisen einen Zugriff auf alle Variablen auf, die der kompilierten Anwendung2 zugeordnet sind. Die Referenzumgebung ist statisch und ist bei Bauzeit festgelegt und kann nicht ohne eine Rekompilie rung verändert werden. Falls es ferner irgendeine Veränderung bei dem Code für die Anwendung2 gibt, muss das gesamte Paket rekompiliert werden, und falls es irgendeine Veränderung bei dem Code für das Modul8 gibt, muss das gesamte Paket rekompiliert werden. Falls es deshalb irgendeine zusätzliche erforderliche Funktionalität gibt, muss die Funktionalität in einer statischen Vorbetrieb-Bauumgebung hinzugefügt werden und das gesamte Paket muss rekompiliert werden. - Mit Bezug auf
2A umfasst eine statische Vorbetriebssystem-Bauzeitumgebung20 eine Anzahl (hier vier) von Anwendungen AA-DD, von denen einige EFI-Anwendungen sind und von denen einige Nicht-EFI-Anwendungen sind und die alle eine Funktionalität von einem EFI-Bibliothekmodul NN benötigen. Das statische Ladeprogramm6 kopiert das Modul NN in jede der Anwendungen, verbindet den verschiebbaren Maschinencode NN mit dem Maschinencode der Anwendungen AA-DD und erzeugt vier Anwendungen in einem absoluten Maschinencodeformat, das ausgeführt werden kann. - Mit Bezug auf
2B weist die statische Vorbetriebssystem-Laufzeitumgebung22 , die der statischen Vorbetriebs-Bauumgebung20 (2A ) zugeordnet ist, keinen Zugriff mehr auf ein Ladeprogramm auf. Die absoluten Binärzahlen der Anwendungen AA-DD können ausgeführt werden. Es kann keine Veränderungen an den Anwendungen oder den gemeinschaftlich verwendeten Bibliothekmodul ohne ein Rekompilieren geben. Ferner gibt es ohne eine vollständige Rekompilierung des gesamten Satzes keine Weise, eine Funktionalität zu irgendeiner der Anwendungen AA-DD hinzuzufügen oder von derselben zu entfernen. - Mit Bezug auf
3 umfasst ein Vorbetriebssystemumgebung-Hochrüstprozess112 eine statische Bauzeitumgebung112 , eine statische Laufzeitumgebung114 und eine Hochrüstumgebung120 . Wie vorhergehend beschrieben, werden während einer statischen Bauzeit110 EFI-Anwendungen100 und Nicht-EFI- Anwendungen104 unter Verwendung der EFI-Bibliothek102 kompiliert, um Funktionsrufreferenzen genüge zu leisten. Dies wird durch das statische Ladeprogramm106 vorgenommen, das Module aus der EFI-Bibliothek102 in die Anwendungen kopiert und dieselben in einem absoluten Maschinencodeformat verbindet. Während der statischen Laufzeit114 wird die kompilierte EFI-Anwendung116 mit verbundenen Bibliotheksmodulen ausgeführt. Während der statischen Laufzeit114 wird ferner die kompilierte Nicht-EFI-Anwendung118 mit verbundenen Bibliotheksmodulen ausgeführt. Falls es eine Codehochrüstung122 an einer EFI-Anwendung oder einer Nicht-EFI-Anwendung während einer Hochrüstzeit120 gibt, kehrt der Prozess zu der Bauzeitumgebung110 über den Weg124 zurück und rekompiliert die Anwendungen. Falls es eine Codehochrüstung an einem referenzierten Bibliothekmodul gibt, kehrt der Prozess zu der Bauzeitumgebung110 über den Weg124 zurück und rekompiliert die Anwendungen nach einem Rekompilieren der EFI-Bibliothek mit dem hochgerüsteten Modul. Es gibt keine Einrichtung, um die statischen Umgebungen zu verändern, ohne den Prozess von Beginn an wieder zu starten. Dies ist unzweckmäßig, kostspielig, prozessmäßig komplex, unflexibel und zeitintensiv. - Es ist die Aufgabe der vorliegenden Erfindung, ein elektronisches System und ein Verfahren mit verbesserten Charakteristika zu schaffen.
- Diese Aufgabe wird durch ein System gemäß Anspruch 1 und ein Verfahren gemäß Anspruch 11 gelöst.
- Ein dynamisches Verbindungsladeprogramm ist für eine Vorbetriebssystemumgebung vorgesehen.
- Ein derartiges Ladeprogramm kann eine einfache, flexible und kostenwirksame Weise zum Laden von Modulen in Laufzeit in einer Vorbetriebssystemumgebung liefern.
- Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
-
1A (Stand der Technik) ein Blockdiagramm, das eine statische Bauzeitumgebung mit einem statischen Ladeprogramm zeigt; -
1B (Stand der Technik) ein Blockdiagramm der Laufzeitumgebung der Anwendungen von1A ; -
1C (Stand der Technik) ein Blockdiagramm der Laufzeitumgebung von1B , das die herkömmliche Weise zeigt, auf die Funktionsrufe vorgenommen werden und globale Variablen verfügbar gemacht werden; -
2A (Stand der Technik) ein Blockdiagramm einer statischen Bauzeitumgebung, das mehrere Anwendungen zeigt, die das gleiche Bibliothekmodul benötigen; -
2B (Stand der Technik) ein Blockdiagramm einer statischen Laufzeitumgebung, das die mehreren Anwendungen von2A zeigt, wobei das gleiche Bibliothekmodul geladen ist; -
3 (Stand der Technik) ein Funktionsdiagramm eines Systemverifizierungsprozesses mit einem statischen Ladeprogramm; -
4A ein Blockdiagramm, das eine Bauzeitumgebung mit einem dynamischen Ladeprogramm gemäß einem Ausführungsbeispiel der Erfindung zeigt; -
4B ein Blockdiagramm der Laufzeitumgebung der Anwendungen von4A gemäß einem Ausführungsbeispiel der Erfindung; -
4C ein Blockdiagramm der Laufzeitumgebung von4B , das die Weise zeigt, auf die Funktionsrufe vorgenommen werden und auf globale Variablen zugegriffen wird, gemäß einem Ausführungsbeispiel der Erfindung; -
5A ein Blockdiagramm einer Bauzeitumgebung, das mehrere Anwendungen zeigt, die das gleiche Bibliothekmodul benötigen, gemäß einem Ausführungsbeispiel der Erfindung; -
5B ein Blockdiagramm einer Laufzeitumgebung der mehreren Anwendungen von5A , wobei das gleiche Bibliotheksmodul geladen ist, gemäß einem Ausführungsbeispiel der Erfindung; -
5C ein Blockdiagramm einer nachfolgenden Laufzeitumgebung, das die mehreren Anwendungen von5A zeigt, wobei ein hochgerüstetes Bibliothekmodul dynamisch geladen ist, gemäß einem Ausführungsbeispiel der Erfindung; -
5D ein Blockdiagramm einer nachfolgenden Laufzeitumgebung, das mehrere hochgerüstete Anwendungen relativ zu5B zeigt, wobei ein gemeinsames Bibliothekmodul dynamisch geladen ist, gemäß einem Ausführungsbeispiel der Erfindung; -
6A ein Blockdiagramm einer Bauzeitumgebung, das eine Anwendung zeigt, die mit mehreren unterschiedlichen Sätzen von Bibliothekmodulen aufgebaut ist, gemäß einem Ausführungsbeispiel der Erfindung; -
6B ein Blockdiagramm einer Laufzeitumgebung, das die Anwendung von6A zeigt, die zu mehreren unterschiedlichen Anwendungen wird, basierend auf unterschiedlichen Sätzen von Bibliothekmodulen, gemäß einem Ausführungsbeispiel der Erfindung; und -
7 ein Funktionsdiagramm, das einen Systemverifizierungsprozess mit einem dynamischen Ladeprogramm gemäß einem Ausführungsbeispiel der Erfindung zeigt. - Mit Bezug auf
4A ist eine dynamische Vorbetriebssystem-Bauzeitumgebung40 gezeigt, die eine EFI-Anwendung42 und eine Nicht-EFI-Anwendung44 umfasst, die beide Funktionsrufe zu einem EFI-Bibliothekmodul48 umfassen. Das Bibliothekmodul48 ist in der Form eines verschiebbaren Maschinencodes mit einer Tabelle von Daten, die Punkte spezifizieren, wo der verschiebbare Code modifiziert werden muss, um ein wirklich ausführbarer Maschinencode zu werden. Die dynamische Vorbetriebssystem-Bauzeitumgebung40 umfasst ein dynamisches Ladeprogramm46 . Das dynamische Ladeprogramm46 ist als ein Teil der EFI-Anwendung42 und auch der Nicht-EFI-Anwendung44 hergestellt. Das Bibliothekmodul48 ist in einem ABI-Format (ABI = Application Binary). Das ABI, das durch Intel für EFI-Systeme definiert ist, ist ELF64. Während der Kompilierung der EFI-Anwendung42 wird eine Referenz zu dem ABI-konformen Bibliothekmodul48 gemacht und eingefügt, aber nicht geladen. Während der Kompilierung der Nicht-EFI-Anwendung44 wird eine andere Referenz zu dem ABI-konformen Bibliothekmodul48 gemacht und eingefügt, aber nicht geladen. - Mit Bezug auf
4B umfasst die dynamische Vorbetriebssystem-Laufzeitumgebung49 , die der dynamischen Vorbetrieb-Bauumgebung40 (4A ) zugeordnet ist, das dynamische Ladeprogramm46 als Teil jeder Anwendung. Das dynamische Ladeprogramm46 ist ein Stück eines Codes, das versteht, wie ein Modul in einem Speicher zu laden ist, die Bibliothekmodulinhalte zu parsen bzw. syntaktisch zu analysieren sind, die notwendigen Verschiebungen durchzuführen sind und schließlich irgendwelche Abhängigkeiten zwischen der Lade anwendung und dem Modul, das geladen wird, zu verbinden bzw. verknüpfen sind. Das dynamische Ladeprogramm46 verbindet die geladene Kopie des ABI-konformen Bibliothekmoduls48 mit der EFI-Anwendung42 und modifiziert alle Plätze, wo eine relative Adresse mit einer absoluten Adresse ersetzt werden muss. Auf eine ähnliche Weise verbindet während des Ladens der Nicht-EFI-Anwendung44 das dynamische Ladeprogramm46 eine zweite geladene Kopie des ABI-konformen Bibliothekmoduls48 mit der Nicht-EFI-Anwendung44 und modifiziert alle Plätze, wo eine relative Adresse mit einer absoluten Adresse ersetzt werden muss. Die kompilierte EFI-Anwendung42 , die mit dem kompilierten ABI-konformen EFI-Bibliothekmodul48 verbunden ist, ist in einem verschiebbaren Maschinencodeformat und ist bereit, ausgeführt zu werden. Auf eine ähnliche Weise ist die kompilierte Nicht-EFI-Anwendung44 , die mit dem kompilierten ABI-konformen EFI-Bibliothekmodul48 verbunden ist, in einem nicht verschiebbaren Maschinencodeformat und ist bereit, ausgeführt zu werden. - Nach der ersten Ausführung der kompilierten, verbundenen und geladenen Anwendungen kann es irgendeine Anzahl von zusätzlichen Ausführungen bei nachfolgenden dynamischen Laufzeiten geben. Falls es eine Hochrüstung an dem Bibliothekmodul
48 gibt und das hochgerüstete Bibliothekmodul rekompiliert wird, dann ersetzt das hochgerüstete ABI-konforme Bibliothekmodul48 die nicht hochgerüstete Version des Moduls in der Bibliothek und bei der nächsten dynamischen Laufzeit verbindet und lädt das dynamische Ladeprogramm46 das hochgerüstete ABI-konforme Bibliothekmodul48 mit der referenzierenden Anwendung ohne einen Bedarf, die Anwendung zu rekompilieren. -
4C zeigt eine dynamische Vorbetriebssystem-Laufzeitumgebung49 , die der dynamischen Vorbetrieb-Bauumgebung40 (4A ) zugeordnet ist, während einer Ausführung. Die kompilierte Anwendung42 enthält Funktionsrufe43 , denen durch die kompilierte und verbundene Kopie des ABI-konformen EFI-Moduls48 genüge geleistet wird. Die Variablen im Inneren des Bibliothekmoduls48 mit globalen Referenzen weisen einen Zugriff auf alle Variablen auf, die der kompilierten Anwendung42 zugeordnet sind. Die Referenzumgebung ist dynamisch und ist bei Laufzeit festgelegt und kann somit ohne eine Rekompilierung der Anwendung verändert werden, falls die Bibliothek hochgerüstet wird. Obwohl ein dynamisches Ladeprogramm46 während einer Ausführung der Anwendung42 vorhanden ist, wird dasselbe zu einer nachfolgenden Ladeoperation, die einer nachfolgenden Ausführung vorhergeht, nicht verwendet. Und obwohl lediglich eine der Anwendungen42 gezeigt ist, ist die Ausführung der Anwendung44 ähnlich. - Unter Bezugnahme auf
5A umfasst eine dynamische Vorbetriebssystem-Bauzeitumgebung50 eine Anzahl (hier vier) von Anwendungen A1-D1, von denen einige EFI-Anwendungen sind und denen einige Nicht-EFI-Anwendungen sind und die alle eine Funktionalität von einem ABI-konformen EFI-Bibliothekmodul N1 benötigen. Das dynamische Ladeprogramm46 wird als ein Teil des Kompilierungsprozesses in jede Anwendung eingebaut. Dann kopiert das dynamische Ladeprogramm46 die ABI-konforme EFI-Bibliothek N1 in jede der Anwendungen. - Mit Bezug auf
5B weist die dynamische Vorbetriebssystem-Laufzeitumgebung52 , die der dynamischen Vorbetrieb-Bauumgebung50 (5A ) zugeordnet ist, weiterhin einen Zugriff auf das Ladeprogramm46 auf. Das dynamische Ladeprogramm46 jeder Anwendung verbindet den verschiebbaren Maschinencode des Moduls N1 mit dem Maschinencode der Anwendungen A1-D1 und erzeugt vier Anwendungen in einem absoluten Maschinencodeformat, das ausgeführt werden kann. - Mit Bezug auf
5C umfasst eine erste nachfolgende dynamische Vorbetriebssystem-Laufzeitumgebung54 die gleichen vier Anwendungen A1-D1, von denen jede ein dynamisches Ladeprogramm46 umfasst, das eine hochgerüstete ABI-konforme EFI-Bibliothek N2 vor einer Ausführung verbindet und lädt. Keine der Anwendungen muss rekompiliert werden, um die Funktionalität zu verändern, die der hochgerüsteten ABI-konformen EFI-Bibliothek N2 zugeordnet ist. - Mit Bezugnahme auf
5D umfasst eine zweite nachfolgende dynamische Vorbetriebssystem-Laufzeitumgebung56 die gleichen vier Anwendungen, aber zwei der Anwendungen weisen eine unterschiedliche zusätzliche Funktionalität auf. Die Anwendung A2 ist eine Hochrüstung der Anwendung A1 (5B ) und die Anwendung C2 ist eine Hochrüstung der Anwendung C1 (5B ). Diese zwei Anwendungen werden getrennt rekompiliert und greifen, wenn dieselben verbunden und geladen sind, auf die neue Funktionalität aus der ABI-konformen Bibliothek zu. Es gibt keinen Bedarf nach einer Rekompilierung des gesamten Satzes von Anwendungen und Modulen. - Unter Bezugnahme auf
6A umfasst eine dynamische Vorbetriebssystem-Bauzeitumgebung60 ein dynamisches Ladeprogramm46 , eine Basisanwendung E0, die zu einer unterschiedlichen Funktionalität in der Lage ist, basierend darauf, welche ABI-konformen Bibliothekmodule referenziert sind, und einen Satz von ABI-konformen Bibliothekmodulen X-Z. Der Kompilierer platziert eine Kopie des dynamischen Ladeprogramms46 in jeder Version der Anwendung. Das dynamische Ladeprogramm46 kopiert dann einen verschiebbaren Maschinencode der referenzierten ABI-konformen Bibliothekmodule in die Anwendungen. - Unter Bezugnahme auf
6B zeigt die dynamische Vorbetriebssystem-Laufzeitumgebung62 , die der dynamischen Vorbetriebssystem-Bauzeitumgebung60 (6A ) zugeordnet ist, drei unterschiedliche abgeleitete Anwendungen E1-E3, jede mit einem unterschiedlichen Satz von ABI-konformen Bibliothekmodulen X-Z. Die Anwendung E1 umfasst die Funktionalität des Moduls X und des Moduls Y, die Anwendung E2 umfasst die Funktionalität des Moduls Y und des Moduls Z und die Anwendung E3 umfasst die Funktionalität des Moduls X und des Moduls Z. Man kann die Funktionalität irgendeiner der Anwendungen E1-E3 bei irgendeiner nachfolgenden Laufzeit verändern, ohne die Anwendungen zu rekompilieren. Zum Beispiel kann man die Anwendung E3 modifizieren, um ebenfalls die Funktionalität des Moduls Y zu umfassen, indem das Ladeprogramm46 das Modul Y bei dem Beginn einer nachfolgenden Laufzeit lädt. - Unter Bezugnahme auf
7 umfasst ein dynamischer Vorbetriebssystemumgebung-Hochrüstprozess200 eine dynamische Bauzeitumgebung202 , eine dynamische Laufzeitumgebung208 und eine Hochrüstumgebung220 . Wie vorhergehend beschrieben werden während der dynamischen Bauzeit202 EFI-Anwendungen204 und Nicht-EFI-Anwendungen212 unter Verwendung der ABI-konformen EFI-Bibliothek216 kompiliert, um Funktionsrufreferenzen zu genügen. Dies wird durch das dynamische Ladeprogramm206 vorgenommen, das, nachdem dasselbe durch den Kompilierer zu einem Teil jeder Anwendung gemacht wurde, Module von der EFI-Bibliothek216 in die Anwendungen kopiert. Während der nachfolgenden dynamischen Laufzeit208 verbindet das dynamische Ladeprogramm206 in der kompilierten EFI-Anwendung210 alle referenzierten Bibliothekmodule und wird dann ausgeführt. Während der nachfolgenden dynamischen Laufzeit208 verbindet ferner das dynamische Ladeprogramm206 in der kompilierten Nicht-EFI-Anwendung214 alle referenzierten Bibliothekmodule und wird dann ausgeführt. Falls es eine Codehochrüstung222 an einer EFI-Anwendung oder einer Nicht-EFI-Anwendung während einer Hochrüstzeit220 gibt, kehrt der Prozess zu der Bauzeitumgebung202 über den Weg224 zurück und rekompiliert die Anwendungen. Falls es eine Codehochrüstung an einem referenzierten Bibliothekmodul gibt, kehrt der Prozess zu der dynamischen Laufzeitumgebung208 nach einem Rekompilieren der hochgerüsteten ABI-konformen EFI-Bibliothek218 mit dem hochgerüsteten Modul über den Weg226 zurück, wobei so eine Funktionalität verändert wird oder zu der Anwendung hinzugefügt wird, ohne die Anwendungen rekompilieren zu müssen. - Die vorgehende Erörterung ist vorgelegt, um zu ermöglichen, dass ein Fachmann auf dem Gebiet die Erfindung herstellt und verwendet. Verschiedene Modifikationen an den offenbarten Ausführungsbeispielen werden Fachleuten auf dem Gebiet ohne weiteres ersichtlich und die allgemeinen Prinzipien hierin können auf andere Ausführungsbeispiele und Anwendungen angewandt werden, ohne von der Wesensart und dem Schutzbereich der vorliegenden Erfindung abzuweichen. Somit soll die vorliegende Erfindung nicht auf die gezeigten Ausführungsbeispiele begrenzt sein, sondern derselben soll der breiteste Schutzbereich gewährt werden, der konsistent mit den Prinzipien und Merkmalen ist, die hierin offenbart sind.
Claims (28)
- Elektronisches System, das folgende Merkmale aufweist: einen Bibliothekspeicherraum, der betreibbar ist, um eine Vorbetriebssystem-Bibliothek (
216 ) zu speichern, die eine erste Instanz eines Bibliothekmoduls (48 ) umfasst; einen Anwendungsspeicherraum, der betreibbar ist, um eine Anwendung (42 ,44 ) zu speichern, die ein Ladeprogramm (46 ) und eine zweite Instanz des Bibliothekmoduls (48 ) umfasst; und einen Prozessor, der mit dem ersten und dem zweiten Speicherraum gekoppelt ist und betreibbar ist, um das Ladeprogramm (46 ) in Laufzeit auszuführen, und unter der Steuerung des Ladeprogramms (46 ) die zweite Instanz des Bibliothekmoduls (48 ) aus der ersten Instanz zu erzeugen und die zweite Instanz des Moduls (48 ) mit der Anwendung (42 ,44 ) zu verbinden. - System gemäß Anspruch 1, bei dem die Anwendung (
42 ,44 ) eine Vorbetriebssystem-Anwendung ist. - System gemäß Anspruch 1 oder 2, bei dem das Ladeprogramm (
46 ) ferner betreibbar ist, um eine Funktionalität bei der ersten nachfolgenden Laufzeit zu der Anwendung (42 ,44 ) zuzufügen. - System gemäß einem der Ansprüche 1 bis 3, bei dem das Ladeprogramm (
46 ) ferner betreibbar ist, um eine Funktionalität bei einer zweiten nachfolgenden Laufzeit von der Anwendung (42 ,44 ) zu entfernen. - System gemäß einem der Ansprüche 1 bis 4, bei dem das Ladeprogramm (
46 ) ferner betreibbar ist, um eine Funktionalität der Anwendung (42 ,44 ) bei einer dritten nachfolgenden Laufzeit zu modifizieren. - System gemäß einem der Ansprüche 1 bis 5, bei dem die Bibliothek (
216 ) in einem binären Anwendungsformat ist. - System gemäß Anspruch 6, bei dem das binäre Format der Bibliothek (
216 ) ELF64 ist. - System gemäß einem der Ansprüche 1 bis 7, bei dem das Verbinden ferner ein Parsen der Inhalte der zweiten Instanz des Moduls (
48 ) aufweist. - System gemäß Anspruch 8, bei dem das Verbinden ferner ein Verschieben von Adressen aufweist.
- System gemäß Anspruch 9, bei dem das Verbinden ferner ein Lösen von Abhängigkeiten zwischen der Anwendung (
42 ,44 ) und dem Modul (48 ) aufweist. - Verfahren, das folgende Schritte aufweist: Kompilieren einer Vorbetriebssystem-Anwendung (
42 ,44 ); und Hinzufügen eines dynamischen Ladeprogramms (46 ) zu der Anwendung. - Verfahren gemäß Anspruch 11, das ferner folgende Schritte aufweist: Zugreifen auf eine Laufzeitbibliothek (
216 ); Laden eines Moduls (48 ) aus der Bibliothek (216 ) in die Anwendung (42 ,44 ) in Laufzeit; und Ausführen der Anwendung (42 ,44 ). - Verfahren gemäß Anspruch 12, das ferner folgende Schritte aufweist: Hochrüsten der Anwendung (
42 ,44 ); Rekompilieren der Anwendung (42 ,44 ); nachfolgendes Wiederladen des Moduls (48 ) aus der Bibliothek (216 ) in die Anwendung (42 ,44 ); und Wiederausführen der hochgerüsteten Anwendung. - Verfahren gemäß Anspruch 12 oder 13, das ferner folgende Schritte aufweist: Hochrüsten des Moduls (
48 ); Rekompilieren des Moduls (48 ); nachfolgendes Laden des hochgerüsteten Moduls (48 ) aus der Bibliothek (216 ) in die Anwendung (42 ,44 ); und Wiederausführen der Anwendung (42 ,44 ). - Verfahren gemäß einem der Ansprüche 12 bis 14, das ferner ein Laden einer Mehrzahl von Modulen (
48 ) aufweist. - Verfahren gemäß Anspruch 15, das ferner folgende Schritte aufweist: Hochrüsten der Module (
48 ); Rekompilieren der Module (48 ); nachfolgendes Laden der Module (48 ) aus der Bibliothek (216 ) in die Anwendung (42 ,44 ); und Wiederausführen der Anwendung (42 ,44 ). - Verfahren gemäß Anspruch 15 oder 16, das ferner folgende Schritte aufweist: Hochrüsten eines Teilsatzes der Module (
48 ); Rekompilieren des Teilsatzes der Module (48 ); nachfolgendes Wiederladen der Module (48 ) aus der Bibliothek (216 ) in die Anwendung (42 ,44 ); und Wiederausführen der Anwendung (42 ,44 ). - Verfahren gemäß einem der Ansprüche 12 bis 17, bei dem das Laden ferner ein Parsen der Inhalte der Module (
48 ) aufweist. - Verfahren gemäß Anspruch 18, bei dem das Laden ferner ein Verschieben eines verschiebbaren binären Moduls aufweist.
- Verfahren gemäß Anspruch 19, bei dem das Laden ferner ein Verbinden von Abhängigkeiten zwischen der Anwendung (
42 ,44 ) und dem Modul (48 ) aufweist. - Verfahren gemäß einem der Ansprüche 12 bis 20, das ferner ein Ausführen der Anwendung (
42 ,44 ) eine Mehrzahl von Malen aufweist. - Verfahren gemäß einem der Ansprüche 12 bis 21, bei dem das Ausführen ferner ein Referenzieren von globalen Variablen aus den Modulen (
48 ) aufweist. - Verfahrengemäß einem der Ansprüche 15 bis 22, bei dem das Laden ferner folgende Schritte aufweist: Platzieren eines ersten Satzes der Module (
48 ) in eine erste abgeleitete Anwendung; Platzieren eines zweiten Satzes der Module (48 ) in eine zweite abgeleitete Anwendung; und unabhängiges Wiederausführen der abgeleiteten Anwendung. - Verfahren gemäß Anspruch 23, bei dem es irgendeine Anzahl von nicht ordnungsgemäßen Sätzen und abgeleiteten Anwendungen gibt.
- Verfahren gemäß einem der Ansprüche 12 bis 24, das ferner ein Verifizieren einer Firmware aufweist.
- Verfahren gemäß einem der Ansprüche 12 bis 25, das ferner ein Verifizieren einer Hardware aufweist.
- Verfahren gemäß einem der Ansprüche 11 bis 26, das ferner folgende Schritte aufweist: Schreiben der Anwendung (
42 ,44 ) zu Medien; Lesen der Medien zu einer späteren Zeit; und Ausführen der Anwendung (42 ,44 ). - Verfahren gemäß Anspruch 27, das ferner folgende Schritte aufweist: Lesen der Medien; Zugreifen auf eine Laufzeitbibliothek (
216 ) von den Medien; Laden eines Moduls (48 ) aus der Bibliothek (216 ) in die Anwendung (42 ,44 ) in Laufzeit; und Ausführen der Anwendung (42 ,44 ).
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/949,124 US7730472B2 (en) | 2004-09-24 | 2004-09-24 | Dynamic linking of modules in a pre-operating system environment |
US10/949,124 | 2004-09-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102005040075A1 true DE102005040075A1 (de) | 2006-04-06 |
Family
ID=36062315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102005040075A Withdrawn DE102005040075A1 (de) | 2004-09-24 | 2005-08-24 | Dynamisches Verbinden von Modulen in einer Vorbetriebssystemumgebung |
Country Status (3)
Country | Link |
---|---|
US (1) | US7730472B2 (de) |
JP (1) | JP2006092544A (de) |
DE (1) | DE102005040075A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102012009482B4 (de) | 2012-05-12 | 2020-06-25 | Volkswagen Aktiengesellschaft | Funktional erweiterbares Fahrzeugsteuergerät und Verfahren zum Ergänzen der Funktionalität eines Fahrzeugsteuergeräts |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040078497A1 (en) * | 2002-10-17 | 2004-04-22 | Nalawadi Rajeev K. | Method and apparatus for detecting configuration change |
US7246332B2 (en) * | 2005-02-08 | 2007-07-17 | International Business Machines Corporation | Methods, systems and media for functional simulation of noise and distortion on an I/O bus |
US20080005752A1 (en) * | 2006-06-30 | 2008-01-03 | Robert Paul Morris | Methods, systems, and computer program products for generating application processes by linking applications |
CN101484878B (zh) * | 2006-07-18 | 2012-11-28 | 英特尔公司 | 为基于efi的固件中的预efi初始化模块使用全局变量的方法 |
GB2465785B (en) * | 2008-11-28 | 2012-07-04 | Vmware Inc | Computer system and method for resolving dependencies in a computer system |
US8321656B2 (en) * | 2009-06-13 | 2012-11-27 | Phoenix Technologies Ltd. | Timer use in extensible firmware interface compliant systems |
EP2477110A1 (de) * | 2011-01-14 | 2012-07-18 | Wibu-Systems AG | Verfahren zum Schutz eines Anwendungsprogramms vor Reverse-Engineering und zugehöriges Computerprogrammprodukt |
US8726258B2 (en) * | 2011-04-14 | 2014-05-13 | Phoenix Technologies Ltd. | Supporting multiple hardware components in UEFI |
EP2660721A1 (de) * | 2012-05-03 | 2013-11-06 | Gemalto SA | Verfahren zum Laden einer Anwendung in einer sicheren Vorrichtung |
US9569184B2 (en) | 2012-09-05 | 2017-02-14 | Microsoft Technology Licensing, Llc | Generating native code from intermediate language code for an application |
US9588874B2 (en) * | 2012-12-14 | 2017-03-07 | Microsoft Technology Licensing, Llc | Remote device automation using a device services bridge |
US10061573B2 (en) | 2013-01-29 | 2018-08-28 | Mobilize.Net Corporation | User interfaces of application porting software platform |
US10019259B2 (en) * | 2013-01-29 | 2018-07-10 | Mobilize.Net Corporation | Code transformation using extensibility libraries |
US9910684B2 (en) * | 2013-03-25 | 2018-03-06 | Hewlett Packard Enterprise Development Lp | Extensible firmware abstraction |
KR101503785B1 (ko) * | 2013-10-10 | 2015-03-18 | (주)잉카엔트웍스 | 동적 라이브러리를 보호하는 방법 및 장치 |
US9058193B2 (en) * | 2013-11-14 | 2015-06-16 | Google Inc. | Methods and systems for providing compatibility of applications with multiple versions of an operating system |
US9348625B2 (en) | 2014-05-23 | 2016-05-24 | Google Inc. | Application access to native and bundled libraries |
CN104731592B (zh) * | 2015-03-24 | 2017-12-15 | 无锡天脉聚源传媒科技有限公司 | 一种在应用程序中集成Bonjour服务的方法和装置 |
WO2016178681A1 (en) * | 2015-05-06 | 2016-11-10 | Hewlett Packard Enterprise Development Lp | Pre-operating system content transmission |
US10268465B2 (en) * | 2016-10-24 | 2019-04-23 | International Business Machines Corporation | Executing local function call site optimization |
US10942750B2 (en) | 2019-03-29 | 2021-03-09 | Dell Products L.P. | System and method to securely load non-UEFI based file format as OEM based UEFI custom capsule format in UEFI loader |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778231A (en) * | 1995-12-20 | 1998-07-07 | Sun Microsystems, Inc. | Compiler system and method for resolving symbolic references to externally located program files |
US6052778A (en) * | 1997-01-13 | 2000-04-18 | International Business Machines Corporation | Embedded system having dynamically linked dynamic loader and method for linking dynamic loader shared libraries and application programs |
US6141698A (en) * | 1997-01-29 | 2000-10-31 | Network Commerce Inc. | Method and system for injecting new code into existing application code |
US6317870B1 (en) * | 1999-02-26 | 2001-11-13 | Hewlett-Packard Company | System and method for optimization of inter-module procedure calls |
US6425038B1 (en) * | 1999-09-28 | 2002-07-23 | Rockwell Automation Technologies, Inc. | Conversion of desk-top operating system for real-time control using installable interrupt service routines |
US7162711B2 (en) * | 2002-12-12 | 2007-01-09 | Sun Microsystems, Inc. | Method of automatically virtualizing core native libraries of a virtual machine |
US7127600B2 (en) * | 2003-09-30 | 2006-10-24 | Intel Corporation | Aggressive content pre-fetching during pre-boot runtime to support speedy OS booting |
-
2004
- 2004-09-24 US US10/949,124 patent/US7730472B2/en not_active Expired - Fee Related
-
2005
- 2005-08-24 DE DE102005040075A patent/DE102005040075A1/de not_active Withdrawn
- 2005-09-20 JP JP2005271723A patent/JP2006092544A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102012009482B4 (de) | 2012-05-12 | 2020-06-25 | Volkswagen Aktiengesellschaft | Funktional erweiterbares Fahrzeugsteuergerät und Verfahren zum Ergänzen der Funktionalität eines Fahrzeugsteuergeräts |
Also Published As
Publication number | Publication date |
---|---|
US20060070053A1 (en) | 2006-03-30 |
JP2006092544A (ja) | 2006-04-06 |
US7730472B2 (en) | 2010-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102005040075A1 (de) | Dynamisches Verbinden von Modulen in einer Vorbetriebssystemumgebung | |
DE69814174T2 (de) | Java laufzeitsystem mit veränderter sammlung von konstanten | |
DE69823153T2 (de) | Software-Emulationssystem | |
DE69911468T2 (de) | Verfahren zum direkten inlinen von virtuellen anrufen ohne on-stack-vertretung | |
DE112013001711T5 (de) | Optimieren von Unterroutine-Aufrufen auf der Grundlage der Architekturebene einer aufgerufenen Unterroutine | |
EP0674784B1 (de) | Verfahren zum testen mindestens einer klasse eines objektorientierten programmes auf einem rechner | |
EP1738257B1 (de) | Verfahren zum vermeiden von dateninkonsistenz zwischen zugriffen verschiedener funktionen einer anwendung auf eine globale variable in einer datenverarbeitungsanlage | |
DE602004006253T2 (de) | Vorrichtungen und verfahren zur wiederherstellung der synchronisation für objektorientierte softwareanwendungen in verwalteten laufzeitumgebungen | |
DE112012000303T5 (de) | Dynamische binäre Optimierung | |
DE19945992A1 (de) | Dynamisch optimierender Objektcode-Übersetzer zur Architekturemulation und dynamisches optimierendes Objektcode-Übersetzungsverfahren | |
DE102005045852A1 (de) | Verfahren und System zum Schutz von Quellcode | |
DE10121671A1 (de) | Bereitstellung einer Schnittstelle von einer Dienstkomponente zu einer maschinenspezifischen API | |
DE60102694T2 (de) | Modulares computersystem und -verfahren | |
DE102007025397A1 (de) | System mit mehreren Prozessoren und Verfahren zu seinem Betrieb | |
DE10006417A1 (de) | Computersystem mit Einzelverarbeitungsumgebung für die Ausführung von mehreren Anwendungsprogrammen | |
DE102004061597A1 (de) | Betriebssystem, das den Lauf von Echtzeitprogrammen ermöglicht, Steuerungsverfahren hierfür sowie Verfahren zum Laden von DLLs | |
DE102004057490B4 (de) | Vorrichtung und Verfahren zum Verarbeiten eines Programmcodes | |
Hirschfeld et al. | Dynamic contract layers | |
DE10333088A1 (de) | Verfahren zum Liefern von Zugriff auf die internen Signale eines dynamischen Systemmodells von außerhalb bezüglich der Modellierungsumgebung | |
WO2014161731A1 (de) | Verfahren zur überprüfung und/oder transformation eines computerprogramms mit statischen funktionen erster klasse | |
DE10324594A1 (de) | Verfahren zum Bereitstellen einer verbesserten Simulationsfähigkeit eines dynamischen Systems außerhalb der ursprünglichen Modellierungsumgebung | |
CN112988279A (zh) | 一种对象处理方法、装置、电子设备及存储介质 | |
EP1695207A2 (de) | Java smart card chip mit für globale variablen reserviertem speicherbereich | |
DE112010003774T5 (de) | Kompatibilität auf objektebene und klassenskalierung unter verwendung semantischer werte | |
DE102019117954A1 (de) | Laufzeitserver zum gleichzeitigen Ausführen mehrerer Laufzeitsysteme einer Automatisierungsanlage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8139 | Disposal/non-payment of the annual fee |