-
HINTERGRUND
-
Die Erfindung bezieht sich auf eine Ausführungsform eines Verfahrens, einer Vorrichtung und eines Systems für eine Registerdatei mit Begrenzungsinformationen und insbesondere, jedoch nicht einschränkend, auf ein Verfahren, eine Vorrichtung und ein System zum Verwenden einer dedizierten Registerdatei mit Begrenzungsinformationen zum Schützen vor Speicherreferenzen außerhalb der Begrenzungen.
-
Schwachstellen bei der Speichersicherheit (z.B. Pufferüberlauf, Nullzeiger, Beschädigung des Heap-Speichers, Benutzen nach Freigeben (use after free) und doppeltes Freigeben (double free)) treten auf, wenn Software versehentlich oder absichtlich auf den Systemspeicher in einer Weise zugreift, die die ihm zugeordnete Größe und die Speicheradressen überschreitet.
-
Programme wie C und C++, die in bestimmten Betriebssystemen und anderen Programmen in großem Umfang verwendet werden, können zu einer Mehrzahl von Speichersicherheitsfehlern führen, die Angreifer mit gefährlichen und störenden Folgen wie beispielsweise Remote-Code-Ausführung oder Fehlern bei der Rechteerweiterung usw. ausnützen können. Ein Angreifer kann zum Beispiel beim Lesen von Speichern außerhalb der Begrenzungen den Speicherschutz umgehen und an geheime Werte gelangen.
-
Daher werden Techniken benötigt, die Schwachstellen bei der Speichersicherheit auf effiziente Weise verringern oder beseitigen können.
-
KURZDARSTELLUNG
-
In Anbetracht der vorgenannten Probleme sowie weiterer Probleme, Nachteile und Beeinträchtigungen des oben genannten Standes der Technik stellt ein beispielhafter Aspekt der offenbarten Erfindung ein Verfahren, eine Vorrichtung und ein System für eine dedizierte Registerdatei mit Begrenzungsinformationen zum Schützen vor Speicherreferenzen außerhalb der Begrenzungen bereit.
-
Eine Ausführungsform der vorliegenden Erfindung ist ein Verfahren zum Schützen vor Referenzen außerhalb der Begrenzungen, das Speichern einer Adresse eines Puffers in einem Universalregister und Speichern von Begrenzungsinformationen (Bl) für den Puffer in einem Register mit Begrenzungsinformationen umfasst, und wenn der Inhalt des Universalregisters als eine Adresse bei einem Lade- oder Speichervorgang verwendet wird, Verwenden des Inhalts des Registers mit Begrenzungsinformationen, um zu ermitteln, ob der Lade- oder Speichervorgang außerhalb der Begrenzungen ist.
-
Eine Ausführungsform der vorliegenden Erfindung ist ein System zum Schützen vor Referenzen außerhalb der Begrenzungen, das Speichern einer Adresse eines Puffers in einem Universalregister und Speichern von Begrenzungsinformationen (Bl) für den Puffer in einem Register mit Begrenzungsinformationen umfasst, und wenn der Inhalt des Universalregisters als eine Adresse bei einem Lade- oder Speichervorgang verwendet wird, Verwenden des Inhalts des Registers mit Begrenzungsinformationen, um zu ermitteln, ob der Lade- oder Speichervorgang außerhalb der Begrenzungen ist.
-
Eine weitere Ausführungsform der vorliegenden Erfindung ist ein Computerprogrammprodukt, das ein durch einen Computer lesbares Speichermedium mit darauf enthaltenen Programmanweisungen aufweist, wobei die Programmanweisungen von einem Computer lesbar und ausführbar sind, um den Computer zu veranlassen, ein Verfahren zum Schützen vor Referenzen außerhalb der Begrenzungen durchzuführen, das Speichern einer Adresse eines Puffers in einem Universalregister und Speichern von Begrenzungsinformationen (Bl) für den Puffer in einem Register mit Begrenzungsinformationen umfasst, und wenn der Inhalt des Universalregisters als eine Adresse bei einem Lade- oder Speichervorgang verwendet wird, Verwenden des Inhalts des Registers mit Begrenzungsinformationen, um zu ermitteln, ob der Lade- oder Speichervorgang außerhalb der Begrenzungen ist.
-
Damit die ausführliche Beschreibung der Erfindung besser verstanden und der vorliegende Beitrag zur Technik besser gewürdigt werden können, wurden einige Ausführungsformen der Erfindung in groben Zügen umrissen. Es gibt selbstverständlich noch weitere Ausführungsformen der Erfindung, die im Folgenden beschrieben werden und die Gegenstand der hier beigefügten Ansprüche sind.
-
Es versteht sich, dass die Erfindung in ihrer Anwendung nicht auf die Einzelheiten des Aufbaus und die Anordnungen der in der folgenden Beschreibung aufgeführten oder in den Zeichnungen dargestellten Komponenten beschränkt ist. Die Erfindung kann zusätzlich zu den beschriebenen Ausführungsformen noch Ausführungsformen enthalten und auf verschiedene Art und Weise durchgeführt werden. Es versteht sich ferner, dass die hier verwendete Ausdrucksweise und Terminologie sowie die Zusammenfassung zum Zweck der Beschreibung dienen und nicht als einschränkend angesehen werden sollten.
-
Für Fachleute ist daher offensichtlich, dass das Konzept, auf dem diese Offenbarung beruht, ohne Weiteres als Grundlage für die Gestaltung anderer Strukturen, Verfahren und Systeme zum Durchführen der verschiedenen Zwecke der vorliegenden Erfindung verwendet werden kann. Es ist daher wichtig, dass die Ansprüche unter dem Aspekt betrachtet werden, dass sie diesen äquivalenten Aufbau umfassen, ohne vom Gedanken und Anwendungsbereich der vorliegenden Erfindung abzuweichen.
-
Figurenliste
-
Die beispielhaften Aspekte der Erfindung sind anhand der folgenden ausführlichen Beschreibung der beispielhaften Ausführungsformen der Erfindung unter Bezugnahme auf die Zeichnungen besser verständlich.
- 1 veranschaulicht ein beispielhaftes System einer Ausführungsform der vorliegenden Erfindung.
- 2 veranschaulicht eine Tabelle mit Begrenzungsinformationen.
- 3 veranschaulicht ein Verfahren für eine Tabelle mit Begrenzungsinformationen.
- 4 veranschaulicht Auswählen zwischen zwei BI-Tabellen der Indextabelle und der Wert-/Schlüsseltabelle in einer Ausführungsform der vorliegenden Erfindung.
- 5 veranschaulicht ein beispielhaftes Erzeugen einer BI-Anweisung einer Ausführungsform der vorliegenden Erfindung.
- 6 veranschaulicht eine beispielhafte Ladeanweisung einer Ausführungsform der vorliegenden Erfindung.
- 7A veranschaulicht, wie eine Anwendung geändert werden kann, damit sie gemäß einer Ausführungsform der vorliegenden Erfindung einen Schutz vor Speicherreferenzen außerhalb der Begrenzungen umfasst.
- 7B veranschaulicht, wie eine Anwendung geändert werden kann, damit sie einen Schutz vor Speicherreferenzen außerhalb der Begrenzungen unter Verwendung von MPX von INTEL umfasst.
- 8 veranschaulicht eine beispielhafte Speicheranweisung einer Ausführungsform der vorliegenden Erfindung.
- 9 veranschaulicht eine alternative Implementierung der Zuordnung.
- 10A veranschaulicht ein Verfahren einer Ausführungsform der vorliegenden Erfindung.
- 10B veranschaulicht ein Verfahren einer Ausführungsform der vorliegenden Erfindung.
- 11 veranschaulicht ein beispielhaftes Hardware-/Informationsverarbeitungssystem zum Integrieren der beispielhaften Ausführungsform der vorliegenden Erfindung.
- 12 veranschaulicht ein signaltragendes Speichermedium zum Speichern von maschinenlesbaren Anweisungen eines Programms, das das Verfahren gemäß der beispielhaften Ausführungsform der vorliegenden Erfindung implementiert.
- 13 zeigt einen Cloud-Computing-Knoten gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
- 14 zeigt eine Cloud-Computing-Umgebung gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
- 15 zeigt Abstraktionsmodellschichten gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die Erfindung wird im Folgenden mit Bezug auf die gezeichneten Figuren beschrieben, in denen sich gleiche Bezugsziffern durchgehend auf gleiche Teile beziehen. Es wird darauf hingewiesen, dass die verschiedenen Merkmale der Zeichnung wie in der Praxis üblich nicht unbedingt maßstabsgetreu sind. Die Abmessungen der verschiedenen Merkmale können aus Gründen der Übersichtlichkeit vielmehr beliebig vergrößert oder verkleinert werden. Nachstehend werden beispielhafte Ausführungsformen zur Veranschaulichung bereitgestellt, die die Ansprüche nicht einschränken. Darüber hinaus sei darauf hingewiesen, dass die Schritte in unterschiedlicher Reihenfolge, kombiniert oder gleichzeitig durchgeführt werden können. Darüber hinaus kann jede der gezeigten Strukturen und Ausführungsformen verändert oder kombiniert werden.
-
Speicherreferenzen, die außerhalb ihrer Begrenzungen liegen, können ernsthafte Sicherheitsprobleme verursachen. Es ist wichtig, zu prüfen, ob jede Speicherreferenz, Laden oder Speichern, in ihrer Speicherbegrenzung liegt. Eine bestehende Lösung ist das System Memory Protection (MPX) von Intel. MPX führte eine neue ISA (Befehlssatzarchitektur) und eine Hardware-Unterstützung zum genauen Überprüfen der Begrenzung ein. Im Speicher werden die Begrenzungsinformationen (Bl) für jeden Puffer mit dem Zeigerwert als Schlüssel gespeichert/abgerufen. Im Kern befinden sich der Zeiger und seine BI in Registern, und die Zuordnung wird durch zusätzliche, vom Compiler hinzugefügte Anweisungen aufrechterhalten. Für die ursprüngliche Berechnung und der Operation des Begrenzungsschutzes werden dieselben Hardware-Ressourcen genutzt. Es gibt noch andere Verfahren, mit denen versucht wird, Schwachstellen bei der Speichersicherheit zu beseitigen oder zu verringern. Bei diesen anderen Lösungen besteht insgesamt jedoch das große Problem, dass eine Mehrzahl von Anweisungen hinzugefügt werden muss und dass die Implementierung teuer ist. Die Anzahl der Anweisungen kann sich daher um das Vier- oder Mehrfache erhöhen, und die Ausführungszeit kann sich um das Zwei- oder Mehrfache erhöhen, selbst wenn die Überprüfung der Begrenzung inaktiv ist.
-
Die vorliegende Erfindung löst die vorstehend genannten Probleme mit Schwachstellen bei der Speichersicherheit, ohne dass die Anzahl der Anweisungen wie bei früheren Lösungen erhöht werden muss. Im Allgemeinen führt die vorliegende Erfindung eine dedizierte Registerdatei zum Speichern von Begrenzungsinformationen für aktive Zeiger ein, die sich in Universalregistern befinden. Bei der vorliegenden Technik wird auch eine Zuordnung vom Universalregister zum Begrenzungsregister aufrechterhalten, sodass die Operation zum Überprüfen der Begrenzung mit den ursprünglichen Anweisungen durchgeführt werden kann. Die Anzahl der Anweisungen, die für das Überprüfen der Begrenzung hinzugefügt werden muss, wird stark verringert. Um die Operationen zum Überprüfen der Begrenzung für Anweisungen auszuführen, wird darüber hinaus eine spezielle Hardware hinzugefügt. Hinzu kommt, dass sich die Latenz der meisten Anweisungen bei Registern mit Begrenzungsinformationen nicht erhöht, wenn eine Operation zum Überprüfen der Begrenzung hinzugefügt wird.
-
Die vorliegende Erfindung stellt einen genauen Schutz bereit, bei dem jeder Puffer geschützt wird, und die Präzision ist bis auf das Byte genau. Das vorliegende System ist auf C/C++-Anwendungen und andere Programme mit möglichen Speicherproblemen anwendbar, bei denen es eine beliebige Zeigerarithmetik gibt und die Anzahl der zu schützenden Puffer in einer Anwendung von Tausenden bis Millionen reichen kann.
-
1 veranschaulicht ein beispielhaftes System einer Ausführungsform der vorliegenden Erfindung. Das System 100 umfasst einen CPU-Kern 10 (CPU = Zentraleinheit) und einen Speicher 20. Der CPU-Kern 10 umfasst eine Anweisungsabruf- und eine Decodierfunktion 12, eine ALU (arithmetische Logikeinheit) 14, eine Universalregisterdatei 16, eine Begrenzungsregisterdatei 18 und eine Begrenzungsverarbeitungseinheit 20. Die Universalregisterdatei tauscht mit dem Daten-Cache 22 Daten aus, während die Begrenzungsregisterdatei 18 mit dem Cache 24 mit den Begrenzungsinformationen (Bl) verbunden ist. BI-Informationen können in der Hardware-Organisation 100 in einem dedizierten Cache (BI-Cache 24) zwischengespeichert werden. Der BI-Cache 24 verringert eine Verlangsamung des Zugriffs auf die BI-Tabelle 26 im Speicher 20.
-
Der Speicher 20 umfasst die Tabelle 26 mit Begrenzungsinformationen, die die Indextabelle 28 und die Wert-/Schlüsseltabelle 30 enthält. Die Tabelle 26 mit Begrenzungsinformationen (Bl) befindet sich daher im Speicher 20.
-
Der CPU-Kern 10 tauscht Informationen mit der Indextabelle 28 und der Wert-/Schlüsseltabelle 30 aus. Der CPU-Kern 10 stellt der Indextabelle 28 über „Index in einem Zeiger“ (Pfad 23) Daten bereit, während er der Wert-/Schlüsseltabelle 30 über „Wert des Zeigers“ (Pfad 25) Daten bereitstellt.
-
Die Begrenzungsinformationen (Bl) enthalten eine Anfangsadresse und eine Länge für jeden Puffer. Die Indextabelle 28 umfasst einen Zugriff über einen Index. Die Wert-/Schlüsseltabelle 30 umfasst einen Zugriff mit einem Zeigerwert als Schlüssel. Die Ausführung der Anweisungen im CPU-Kern 10 umfasst die BI-Register 18, um die Begrenzungsinformationen zu speichern. Das System 100 hält eine Zuordnung zwischen einem Universalregister in der Universalregisterdatei 16 und einem Register mit Begrenzungsinformationen in der Begrenzungsregisterdatei 18 aufrecht. Die Begrenzungsinformationen für den Zeiger in der Registerdatei 18 können anhand der ursprünglichen Anweisungen lokalisiert werden. Die Begrenzungsverarbeitungseinheit führt Operationen zum Begrenzungsschutz aus.
-
Die Begrenzungsregisterdatei 18 wird wie folgt näher beschrieben. Ein Register in der Begrenzungsregisterdatei 18 (z.B. 128 Bit) speichert Begrenzungsinformationen, darunter eine Anfangsadresse und eine Länge eines Puffers. Das System 100 stellt sicher, dass die BI eines Zeigers im Register 18 über eine Zuordnung, z.B. FB, gefunden werden können:
- FB(Rn) = Bm: bedeutet, dass sich die BI für den Zeiger im Universalregister Rn im Begrenzungsregister Bm befinden.
-
Eine solche Zuordnung ermöglicht es, dass über ein Zeigerregister auf die Begrenzungsinformationen zugegriffen werden kann. Das System 100 verwendet keine separate Anweisung, um Begrenzungsinformationen zu verwenden, wie dies bei MPX der Fall ist. Zu früheren Anweisungen kann eine zusätzliche Registeradresse hinzugefügt werden.
-
Eine vorgeschlagene Implementierung der FB-Abbildung: Spiegelung der Universalregister
-
Die Anzahl der Begrenzungsregister 18 entspricht der Anzahl der Universalregister 16, oder sie kann verringert werden, wenn der Compiler nur einen Teilsatz der Universalregister 16 für die Zeiger verwendet. Das System 100 gibt die BI entlang der Zeigerarithmetik (z.B. Ri, Rj, Rk hinzufügen) weiter, während ein Compiler markiert, welcher Operand ein Zeiger ist (Rk ist ein Zeiger). Die BI werden kopiert (von Bk zu Bi).
-
Die Tabelle 26 mit Begrenzungsinformationen (Bl) wird wie folgt näher beschrieben. Die BI-Tabelle 26 enthält mindestens zwei Untertabellen, darunter eine Indextabelle 28 und die Wert-/Schlüsseltabelle 30.
-
2 veranschaulicht eine Tabelle 26 mit Begrenzungsinformationen. In der Indextabelle 28 enthält jeder Eintrag eine Anfangsadresse 40 und eine Länge 42 des Puffers. Jeder Eintrag in der Wert-/Schlüsseltabelle 30 enthält einen Zeigerwert (Schlüssel) 50, eine Anfangsadresse 52 und eine Länge des Puffers 54. Die Wert-/Schlüsseltabelle 30 kann bei Bedarf vergrößert werden und wird über einen Zeigerwert durchsucht. Der Zeigerwert (Schlüssel) 50 kann vom Zeigerwert 64 eines Zeigers 60 erhalten werden. Der Index 62 des Zeigers 60 kann verwendet werden, um die Einträge der Indextabelle zu erhalten.
-
Die Indextabelle 28 kann als lineare Tabelle mit einer Mehrzahl von BI-Einträgen 29 organisiert sein, wobei jeder BI-Eintrag ein Basisadressfeld 40 und ein Objektgrößen- oder Längenfeld 42 enthält. Jeder BI-Eintrag 29 der Indextabelle 28 kann einem Heap-Objekt zugehörig sein. Der Zugriff auf einen bestimmten BI-Eintrag 29 in der Indextabelle 28, der einem bestimmten Objekt entspricht, kann mit einer einzigen Tabellensuche erfolgen. Die einzige Tabellensuche kann zum Beispiel die Verwendung eines Index 62 umfassen, der während der Objektzuordnung in einen Zeiger 60 eingebettet werden kann.
-
Die Mitgliederfunktionen oder Mikroanweisungen sind wie folgt:
- Void initialize (long int bit_mask): Einrichten der Zuordnung der Indexbits von bit_mask und Zuordnen von Speicherplatz für die Indextabelle und die Wert-/Schlüsseltabelle
- unsigned long int get_index_bits (void *addr): Zurücksenden des Wertes ohne Vorzeichen, der durch die Indexbits in der Zeigeradresse dargestellt wird
- Void *set_index_bits (void *addr, unsigned int v): Zurücksenden der Adresse mit den auf den Wert v gesetzten Indexbits
- Constant INDEX_NA: all ones 11...1 //: Index ist für diesen Zeiger nicht verfügbar
- Die Funktionen get_index_bits und set_index_bits sollten direkt von der Hardware unterstützt werden.
-
3 veranschaulicht ein Verfahren für eine Tabelle mit Begrenzungsinformationen.
-
Das System 100 kann die Zuordnung der Indexbits anhand einer Bitmaske 202 einrichten und in Schritt 204 Platz für die Indextabelle 28 und die Wert-/Schlüsseltabelle 30 zuordnen. Die Schritte 202 und 204 können mit den vorstehenden Anweisungen durchgeführt werden: „Void initialize (long int bit_mask)“.
-
Das System 100 sendet anschließend den Wert ohne Vorzeichen zurück, der durch die Indexbits 62 in der Zeigeradresse 206 dargestellt wird. Anschließend sendet das System 100 in Schritt 208 die Adresse mit den Index-Bits 62 zurück, die auf den Wert v gesetzt sind. Constant INDEX_NA: all ones 11...1 //: der Index ist für diesen Zeiger nicht verfügbar (Schritt 210). Die Funktionen in den Schritten 206 („get_index_bits“) und 208 („set_index_bits“) sollten direkt von der Hardware unterstützt werden.
-
4 veranschaulicht Auswählen zwischen zwei BI-Tabellen der Indextabelle 28 und der Wert-/Schlüsseltabelle 30 in einer Ausführungsform der vorliegenden Erfindung.
-
Wählen von bzw. Auswählen zwischen zwei BI-Tabellen 26 der Indextabelle 28 und der Wert-/Schlüsseltabelle 30 kann auf der Grundlage der Ressourcenverfügbarkeit (Index-Bits) 62 zur Laufzeit durchgeführt werden (Schritt 232). Der Binärcode ist derselbe.
-
Das System 100 stellt dem Compiler/Benutzer eine Steuerung bereit, mit der es möglich ist, zu entscheiden, welche Tabelle 26 mit Begrenzungsinformationen (die Indextabelle 28 oder die Wert-/Schlüsseltabelle 30) nach Möglichkeit verwendet wird, und die Einträge in der Indextabelle 28 für die künftige Pufferzuordnung zu reservieren.
-
Das System 100 ermittelt in Schritt 234, ob ein Aufrufer (Compiler/Benutzer) eine Entscheidung trifft. Wenn die Entscheidung in Schritt 234 „ja“ ist, ermittelt das System 100 in Schritt 240, ob die Indextabelle 28 vom Compiler/Benutzer (Aufrufer) ausgewählt wird. Wenn die Entscheidung in Schritt 240 „nein“ ist, verwendet das System 100 die Wert-/Schlüsseltabelle 30 für die Puffer. Wenn die Entscheidung in Schritt 240 „ja“ ist, verwendet das System 100 eine Indextabelle 28 für die Puffer (238).
-
Wenn die Entscheidung in Schritt 234 „nein“ ist, ermittelt das System 100, ob die Indextabelle 28 von der Laufzeit-Heuristik ausgewählt wird (236). Wenn die Entscheidung in Schritt 236 „nein“ ist, verwendet das System 100 die Wert-/Schlüsseltabelle 30 für die Puffer (242). Wenn die Entscheidung in Schritt 236 „ja“ ist, verwendet das System 100 die Indextabelle 28 für die Puffer (238).
-
Wie vorstehend gezeigt, kann für das Auswählen ein einfaches oder komplexes Verfahren angewendet werden. Die einfache Strategie wäre, zuerst die Indextabelle 28 zu verwenden. Das System 100 kann die Indextabelle 28 für Puffer verwenden, deren Zeiger selbst viele Lade-/Speichervorgänge umfassen. Das System 100 kann die Verwendung der Indextabelle 28 für Zeiger erzwingen, die in Schritt eine Typkonvertierung durchlaufen.
-
5 veranschaulicht ein beispielhaftes Erzeugen einer BI-Anweisung 370 einer Ausführungsform der vorliegenden Erfindung.
-
6 veranschaulicht eine beispielhafte Ladeanweisung 402 einer Ausführungsform der vorliegenden Erfindung. Es sei darauf hingewiesen, dass die Begrenzungsschutzoperationen 400 (nicht fettgedruckt 404) so konzipiert sind, dass sie während der Laufzeit aktiviert oder deaktiviert werden können.
-
7A veranschaulicht, wie eine Anwendung geändert werden kann, damit sie gemäß einer Ausführungsform der vorliegenden Erfindung einen Schutz vor Speicherreferenzen außerhalb der Begrenzungen umfasst. Es gibt weit weniger Anweisungen als bei anderen Systemen wie MPX, und es wird derselbe Code verwendet, unabhängig davon, welche BI-Tabelle 26 verwendet wird. Zu den Änderungen gehört auch „createBI p, p, @a+79, 0“ (406), um die Tabelle 26 mit Begrenzungsinformationen zu erzeugen. Außerdem zeigt „load“ bei 408 das Laden des Zeigers an.
-
7B veranschaulicht, wie eine Anwendung geändert werden kann, damit sie einen Schutz vor Speicherreferenzen außerhalb der Begrenzungen unter Verwendung von MPX von INTEL umfasst. Wie aus den unterstrichenen und fettgedruckten Zeilen der Anweisung 409 hervorgeht, erhöht sich die Anzahl der Anweisungen erheblich, wenn MPX anstelle der vorliegenden Erfindung verwendet wird.
-
8 veranschaulicht eine beispielhafte Speicheranweisung 412 einer Ausführungsform der vorliegenden Erfindung. Es sei darauf hingewiesen, dass die Begrenzungsschutzoperationen (nicht in der fettgedruckten Anweisung 414) so konzipiert sind, dass sie während Laufzeit aktiviert oder deaktiviert werden können.
-
9 veranschaulicht eine alternative Implementierung der Zuordnung.
-
Das System 100 kann jedem der Universalregister der Universalregisterdatei 16 zusätzliche N-Bits beifügen. Die zusätzlichen N-Bits können zum Indexieren von 2N Begrenzungsregistern verwendet werden, wobei N eine ganze Zahl ist (Schritt 302).
-
FB(Ri) = Bj, j ist der Wert der Ri beigefügten zusätzlichen N-Bits.
-
Die Zuordnung wird wie folgt aufrechterhalten. Bei der Initialisierung des Zeigers wird ein freigegebenes B-Register (Bl-Register) ausgewählt und der Index dieses B-Registers (Bl-Registers) in die N-Bits des Universalregisters für den Zeiger aufgenommen (304). Bei allen anderen Registern sollten die N-Bits in den B-Registern (BI-Registern) angeben, dass diese anderen Register ?? zugehörig sind (306).
-
Weitergabe mit Zeigerarithmetik durch Auswählen des Nicht-Null-Wertes der zusätzlichen Bits von den Operanden (308). Eines der Hauptprobleme besteht darin, wie das BI-Register freigegeben oder das BI-Register der BI-Registerdatei 18 ausgelagert (spill) wird.
-
Das System 100 gibt das BI-Register der BI-Registerdatei 18 mit einer vom Compiler eingefügten Anweisung wie folgt frei. Anweisung zum Freigeben des Registers. Das System 100 verwendet die zugeordnete Registerdatei und benötigt die Freigabeanweisung, um das BI-Register der BI-Registerdatei 18 freizugeben. Wenn Eins-zu-eins-Zuordnung verwendet wird, wird die Freigabeanweisung nicht benötigt, und die Hardware kann die BI-Registerdateien 18 beibehalten. Das System 100 verwendet Zeigt-auf-Analyse (points-to analysis), um Zeigersätze für jedes BI-Register zu identifizieren: (B1:{R2, R4}) (Schritt 310).
-
Wenn festgestellt wird, dass ein Zeigerregister 60 inaktiv wird (durch Datenflussanalyse) 312, entfernt das System 100 es aus dem Registersatz (314).
-
Wenn festgestellt wird, dass der Registersatz in Kürze leer sein wird (316), gibt das System das entsprechende BI-Register 18 frei (Schritt 318). Eine andere Möglichkeit besteht darin, zu ermitteln, welche BI-Register noch aktiv sind, indem alle aktiven Zeiger (am Anfang oder Ende der Funktion) abgetastet und die anderen freigegeben werden (Schritt 318).
-
Das System 100 lagert das BI-Register 18 aus, wenn festgestellt wird, dass nicht genügend vorhanden sind (320). Angenommen, KS ist der Satz von Registern, der beibehalten werden soll (mindestens zwei BI-Register für die nächste Anweisung).
If FB(Rx) != FB(Ry), for all Ry in KS, spill Rx out
Remember all Rz that FB(Rz) = FB(Rx) for restore
-
Das System wählt anschließend anhand der Verfahren für das Auslagern von Registern in Verbindung mit dem Ergebnis der Zeigt-auf-Analyse aus, welches Register ausgelagert wird (322).
-
10A veranschaulicht ein Verfahren einer Ausführungsform der vorliegenden Erfindung.
-
Das System 100 speichert Begrenzungsinformationen (Bl) in Registern in einer Begrenzungsregisterdatei 18 (Schritt 502). Die Begrenzungsinformationen werden der Universalregisterdatei 16 zugeordnet. Die Begrenzungsinformationen enthalten eine Anfangsadresse und eine Länge für jeden Puffer.
-
Das System 100 erzeugt anschließend aus den Begrenzungsinformationen aus der Begrenzungsregisterdatei 18 eine Indextabelle in einem Speicher 20 (Schritt 504). Auf die Indextabelle 28 wird über einen Index zugegriffen. Jeder Eintrag der Indextabelle 28 umfasst eine Anfangsadresse 40 und eine Länge 42 des Puffers.
-
Das System 100 erzeugt ferner anhand der Begrenzungsinformationen eine Wert-/Schlüsseltabelle 30 im Speicher 20. Auf die Wert-/Schlüsseltabelle 30 wird mit einem Zeigerwert 64 als Schlüssel 50 zugegriffen. Jeder Eintrag in der Wert-/Schlüsseltabelle 30 enthält einen Schlüssel 50 eines Zeigerwerts 62, eine Anfangsadresse 52 und eine Länge des Puffers 54. Die Begrenzungsinformationen für einen Zeiger können anhand der ursprünglichen Anweisungen lokalisiert werden.
-
Das System 100 schützt vor Referenzen außerhalb der Begrenzungen unter Verwendung der Indextabelle 28 und der Wert-/Schlüsseltabelle 30 (Schritt 508). Ein Prozessor oder ein CPU-Kern 10 enthält eine Begrenzungsverarbeitungseinheit 20, die Operationen zum Schutz vor Referenzen außerhalb der Begrenzungen ausführt.
-
Die vorliegende Erfindung führt daher eine dedizierte Registerdatei zum Speichern von Begrenzungsinformationen für aktive Zeiger ein, die sich in Universalregistern befinden. Die vorliegende Erfindung erhält eine Zuordnung von einem Universalregister der Universalregisterdatei 16 zu einem Begrenzungsregister der Begrenzungsregisterdatei 16 aufrecht, sodass die Operation zum Überprüfen der Begrenzung mit den ursprünglichen Anweisungen durchgeführt werden kann. Die Anzahl der Anweisungen, die für das Überprüfen der Begrenzung hinzugefügt werden muss, wird durch die vorliegende Erfindung stark verringert. Um die Operationen zum Überprüfen der Begrenzung für Anweisungen auszuführen, wird darüber hinaus eine spezielle Hardware eingeführt. Hinzu kommt, dass sich die Latenz der meisten Anweisungen bei Registern mit Begrenzungsinformationen der Registerdatei 18 mit Begrenzungsinformationen nicht erhöht, wenn eine Operation zum Überprüfen der Begrenzung hinzugefügt wird.
-
Die Erfindung ist daher in der Lage, einen genauen Schutz bereitzustellen, bei dem das System 100 jeden Puffer schützt, und die Präzision bis auf das Byte genau ist. Die vorliegende Erfindung ist auf ältere Programme wie C/C++-Anwendungen anwendbar, bei denen es eine beliebige Zeigerarithmetik geben kann und die Anzahl der zu schützenden Puffer in einer Anwendung von Tausenden bis Millionen reichen kann.
-
10B veranschaulicht ein Verfahren einer Ausführungsform der vorliegenden Erfindung.
-
Das Verfahren zum Schützen vor Referenzen außerhalb der Begrenzungen umfasst anders ausgedrückt Folgendes. Wenn ein Puffer zugeordnet wird, speichert das System 100 eine Adresse des Puffers in einem Universalregister von einer Universalregisterdatei 16 und speichert die Begrenzungsinformationen (Bl) für den Puffer in einem Register mit Begrenzungsinformationen von einer Begrenzungsregisterdatei 18 (Schritt 510). Wenn der Inhalt des Universalregisters von der Universalregisterdatei 16 als Adresse bei einem Lade- oder Speichervorgang verwendet wird, verwendet das System 100 den Inhalt des Registers mit Begrenzungsinformationen der Begrenzungsregisterdatei 18, um zu ermitteln, ob der Lade- oder Speichervorgang außerhalb der Begrenzungen ist (Schritt 512).
-
Verschiedene Merkmale, die in verschiedenen Figuren der 1 bis 10 dargestellt sind, können kombiniert, geändert oder zwischen den verschiedenen Beispielen ausgetauscht werden. Das in den 1 bis 10 dargestellte System 100 kann auch in der in den 11 bis 15 dargestellten Hardware und Software implementiert werden.
-
11 veranschaulicht eine andere Hardware-Konfiguration des Systems, in der es ein Informationsverarbeitungs-/Computersystem 1100 gemäß der vorliegenden Erfindung gibt, das über mindestens einen Prozessor oder eine Zentraleinheit (CPU) 1110 verfügt, die die Techniken der Erfindung in Form eines Software-Programms für Software-Intelligenz als Dienst implementieren kann.
-
Die CPUs 1110 sind über einen Systembus 1112 mit einem Direktzugriffsspeicher (RAM) 1114, einem Nur-Lese-Speicher (ROM) 1116, einem Eingabe-/Ausgabeadapter (E/A-Adapter) 1118 (zum Verbinden von Peripherieeinheiten wie Platteneinheiten 1121 und Bandlaufwerken 1140 mit dem Bus 1112), einem Benutzerschnittstellenadapter 1122 (zum Verbinden einer Tastatur 1124, einer Maus 1126, eines Lautsprechers 1128, eines Mikrofons 1132 und/oder einer anderen Benutzerschnittstelleneinheit mit dem Bus 1112), einem Datenübertragungsadapter 1134 zum Verbinden eines Informationsverarbeitungssystems mit einem Datenverarbeitungsnetzwerk, dem Internet, einem Intranet, einem Personal Area Network (PAN) usw. und einem Anzeigeadapter 1136 zum Verbinden des Busses 1112 mit einer Anzeigeeinheit 1138 und/oder einem Drucker 1139 (z.B. einem digitalen Drucker oder Ähnlichem) verbunden.
-
Neben der vorstehend beschriebenen Hardware-/Softwareumgebung umfasst ein anderer Aspekt der Erfindung ein durch einen Computer implementiertes Verfahren zum Durchführen des vorstehenden Verfahrens. Dieses Verfahren kann beispielsweise in der vorstehend beschriebenen besonderen Umgebung implementiert werden.
-
Ein solches Verfahren kann beispielsweise durch den Betrieb eines Computers, wie in einer digitalen Datenverarbeitungsvorrichtung ausgeführt, implementiert werden, um eine Folge von maschinenlesbaren Anweisungen auszuführen. Diese Anweisungen können sich in verschiedenen Arten von signaltragenden Medien befinden.
-
Dieser Aspekt der vorliegenden Erfindung bezieht sich somit auf ein programmiertes Produkt, darunter signaltragende Speichermedien, die ein Programm von maschinenlesbaren Anweisungen physisch ausführen, die von einem digitalen Prozessor ausgeführt werden können, der die vorstehend genannte CPU 1110 und die Hardware enthält, um das Verfahren der Erfindung durchzuführen.
-
Diese signaltragenden Speichermedien können zum Beispiel einen RAM enthalten, der in der CPU 1110 enthalten ist, wie zum Beispiel durch den Schnellzugriffsspeicher dargestellt.
-
Alternativ können die Anweisungen in anderen signaltragenden Speichermedien 1200 wie einem Flash-Speicher 1210 oder einer optischen Speicherdiskette 1220 (12) enthalten sein, auf die die CPU 1110 direkt oder indirekt zugreifen kann.
-
Unabhängig davon, ob die Anweisungen im Flash-Speicher 120, der optischen Platte 1220, dem Computer/der CPU 1110 oder anderswo enthalten sind, können die Anweisungen in einer Vielfalt von maschinenlesbaren Datenspeichermedien gespeichert werden.
-
Bei der vorliegenden Erfindung kann es sich daher um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. einen Lichtwellenleiter durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
-
Hier beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Router, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server umfassen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung sind hier unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
-
Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen.
-
Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, einen Herstellungsartikel umfasst, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
-
Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
-
Der Ablaufplan und die Blockschaltbilder in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) umfassen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
Mit Bezug nunmehr auf 13 wird eine schematische Darstellung 1400 eines Beispiels eines Cloud-Computing-Knotens gezeigt. Der Cloud-Computing-Knoten 1400 ist nur ein Beispiel eines geeigneten Cloud-Computing-Knotens und soll keine Beschränkung des Anwendungsbereichs der Nutzung oder Funktionalität von Ausführungsformen der hier beschriebenen Erfindung nahelegen. Ungeachtet dessen kann der Cloud-Computing-Knoten 1400 implementiert werden und/oder eine beliebige der vorstehend dargelegten Funktionalitäten durchführen. Wie bereits erwähnt, kann das System 100 von 1 in einer Cloud-Infrastruktur wie in 13 (und auch in den 14 und 15) dargestellt implementiert werden. Im Cloud-Computing-Knoten 1400 gibt es ein Computersystem/einen Server 1412, der mit zahlreichen anderen universellen oder speziellen Datenverarbeitungssystem-Umgebungen oder Konfigurationen funktionsfähig ist. Beispiele für bekannte Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die für die Nutzung mit dem Computersystem/Server 1412 geeignet sein können, sind unter anderem, ohne auf diese beschränkt zu sein, Personal-Computer-Systeme, Server-Computer-Systeme, schlanke Clients, leistungsintensive Clients, Hand- oder Laptop-Einheiten, Mehrprozessorsysteme, Systeme auf Grundlage von Mikroprozessoren, Beistellgeräte, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, die jedes beliebige der oben genannten Systeme oder Einheiten und Ähnliches enthalten.
-
Das Computersystem/der Server 1412 kann im allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen beschrieben werden, z.B. Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen implementieren. Das Computersystem/der Server 1412 kann in verteilten Cloud-Computing-Umgebungen eingesetzt werden, wo die Aufgaben von entfernt angeordneten Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl auf lokalen als auch auf entfernt angeordneten Computersystem-Speichermedien befinden, darunter Speichereinheiten mit Arbeitsspeichern.
-
Wie in 13 gezeigt, wird das Computersystem/der Server 1412 im Cloud-Computing-Knoten 1400 in Form einer universellen Datenverarbeitungseinheit dargestellt. Bei den Komponenten des Computersystems/Servers 1412 kann es sich - ohne auf diese beschränkt zu sein - um einen oder mehrere Prozessoren oder Verarbeitungseinheiten 1416, einen Systemspeicher 1428 und einen Bus 1418 handeln, der verschiedene Systemkomponenten, darunter den Systemspeicher 1428, mit dem Prozessor 1416 verbindet.
-
Der Bus 1418 stellt einen oder mehrere von beliebigen mehreren Arten von Busstrukturen dar, darunter einen Speicherbus oder eine Speichersteuereinheit, einen Peripheriebus, eine AGP-Schnittstelle (Accelerated Graphics Port) und einen Prozessor oder lokalen Bus, der eine beliebige aus einer Vielfalt von Busarchitekturen nutzt. Beispielsweise und nicht einschränkend enthalten solche Architekturen einen Industry-Standard-Architecture(ISA)-Bus, einen Micro-Channel-Architecture(MCA)-Bus, einen Enhanced-ISA(EISA)-Bus, einen lokalen Video-Electronics-Standards-Association(VESA)-Bus und einen Peripheral-Component-Interconnects(PCI)-Bus.
-
Das Computersystem/der Server 1412 umfasst in der Regel eine Vielfalt von durch einen Computer lesbare Medien. Bei diesen Medien kann es sich um beliebige verfügbare Medien handeln, auf die das Computersystem/der Server 1412 zugreifen kann, darunter flüchtige und nichtflüchtige Medien, wechselbare und nichtwechselbare Medien.
-
Der Systemspeicher 1428 kann vom Computersystem lesbare Medien in Form von flüchtigen Speichern, z.B. Direktzugriffsspeicher (RAM) 1430 und/oder Cache 1432, enthalten. Das Computersystem/der Server 1412 kann ferner weitere wechselbare/nichtwechselbare, flüchtige/nichtflüchtige Computersystem-Speichermedien enthalten. Nur beispielhaft kann das Speichersystem 1434 bereitgestellt werden, um ein nichtwechselbares, nichtflüchtiges magnetisches Medium auszulesen und zu beschreiben (nicht dargestellt und üblicherweise als „Festplatte“ bezeichnet). Obwohl nicht dargestellt, können ein Laufwerk für magnetische Speicherplatten zum Auslesen und Beschreiben einer wechselbaren, nichtflüchtigen magnetischen Speicherplatte (z.B. „Diskette“) und ein Laufwerk für optische Speicherplatten zum Auslesen oder Beschreiben einer wechselbaren, nichtflüchtigen optischen Speicherplatte wie einer CD-ROM, DVD-ROM und andere optische Medien bereitgestellt werden. In solchen Fällen kann jedes über eine oder mehrere Datenmedien-Schnittstellen mit dem Bus 1418 verbunden sein. Wie unten weiter dargestellt und beschrieben, kann der Speicher 1428 mindestens ein Programmprodukt mit einem (z.B. mindestens einem) Satz von Programmmodulen enthalten, die so konfiguriert sind, dass sie die Funktionen der Ausführungsformen der Erfindung ausführen.
-
Das Programm/Dienstprogramm 1440 mit (mindestens) einem Satz von Programmmodulen 1442 kann beispielsweise und nicht einschränkend im Speicher 1428 gespeichert sein, ebenso ein Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten oder eine Kombination daraus können jeweils eine Implementierung einer Netzwerkumgebung enthalten. Die Programmmodule 1442 führen im Allgemeinen die Funktionen und/oder Methodiken von Ausführungsformen der hierin beschriebenen Erfindung aus.
-
Das Computersystem/der Server 1412 kann auch mit einer oder mehreren externen Einheiten 1414, z.B. einer Tastatur, einer Zeigeeinheit, einer Anzeige 1424 usw., Daten austauschen; sowie mit einer oder mehreren Einheiten, die einen Benutzer in die Lage versetzen, mit dem Computersystem/Server 1412 zu interagieren; und/oder beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die das Computersystem/den Server 1412 in die Lage versetzen, mit einer oder mehreren Datenverarbeitungseinheiten Daten auszutauschen. Eine solche Datenübertragung kann über die Eingabe-/Ausgabeschnittstellen (E/A-Schnittstellen) 1422 erfolgen. Überdies kann das Computersystem/der Server 1412 mit einem oder mehreren Netzwerken, z.B. einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. das Internet), über den Netzwerkadapter 1420 Daten austauschen. Wie dargestellt, tauscht der Netzwerkadapter 1420 über den Bus 1418 mit den anderen Komponenten des Computersystems/Servers 1412 Daten aus. Es versteht sich, dass sonstige Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 1412 verwendet werden können, auch wenn sie nicht dargestellt sind. Beispiele sind unter anderem, ohne auf diese beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, Anordnungen externer Festplattenlaufwerke, RAID-Systeme, Bandlaufwerke und Speichersysteme für die Datenarchivierung usw.
-
Mit Bezug nunmehr auf 14 ist eine veranschaulichende Cloud-Computing-Umgebung 1550 dargestellt. Wie gezeigt, enthält die Cloud-Computing-Umgebung 1550 einen oder mehrere Cloud-Computing-Knoten 1400, mit denen von Cloud-Nutzern verwendete lokale Datenverarbeitungseinheiten wie der persönliche digitale Assistent (PDA) oder das Mobiltelefon 1554A, der Desktop-Computer 1554B, der Laptop-Computer 1554C und/oder das Kraftfahrzeug-Computersystem 1554N Daten austauschen können. Die Knoten 1400 können miteinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken wie private, benutzergemeinschaftliche, öffentliche oder hybride Clouds wie oben beschrieben oder in einer Kombination davon in Gruppen angeordnet sein (nicht dargestellt). Dies ermöglicht es der Cloud-Computing-Umgebung 1550, Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es ist ersichtlich, dass die Arten von Datenverarbeitungseinheiten 1554A bis N, die in 16 dargestellt sind, nur veranschaulichend sein sollen und die Datenverarbeitungsknoten 1400 und die Cloud-Datenverarbeitungsumgebung 1550 mit jeder Art von computergestützter Einheit über jede Art von Netzwerk und/oder netzwerkadressierbarer Verbindung Daten austauschen kann (z.B. über einen Web-Browser).
-
Mit Bezug nunmehr auf 15 wird ein Satz funktionaler Abstraktionsschichten gezeigt, die von der Cloud-Computing-Umgebung 1550 (14) bereitgestellt werden. Es versteht sich von vornherein, dass die in 15 dargestellten Komponenten, Schichten und Funktionen nur veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
-
Die Hardware- und Software-Schicht 1600 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten gehören Mainframe-Computer, in einem Beispiel IBM® zSeries®-Systeme; auf der RISC-Architektur (Reduced Instruction Set Computer) beruhende Server, in einem Beispiel IBM pSeries®-Systeme; IBM xSeries®-Systeme; IBM BladeCenter®-Systeme; Speichereinheiten; Netzwerke sowie Netzwerkkomponenten. Zu Beispielen für Software-Komponenten gehören eine Netzwerk-Anwendungsserver-Software, in einem Beispiel die IBM WebSphere®-Anwendungsserver-Software; und eine Datenbank-Software, in einem Beispiel die IBM DB2®-Datenbank-Software. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere und DB2 sind Warenzeichen der International Business Machines Corporation, die in vielen Rechtsordnungen weltweit eingetragen sind).
-
Die Virtualisierungsschicht 1620 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Entitäten bereitgestellt werden können: virtuelle Server, virtuelle Speicher, virtuelle Netzwerke, darunter virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme und virtuelle Clients.
-
In einem Beispiel kann die Verwaltungsschicht 1630 die nachfolgend beschriebenen Funktionen bereitstellen. Die Ressourcenbereitstellung ermöglicht eine dynamische Bereitstellung von Datenverarbeitungsressourcen und anderen Ressourcen, die verwendet werden, um Aufgaben in der Cloud-Datenverarbeitungsumgebung durchzuführen. Messen und Preisermittlung stellen eine Kostenerfassung (wenn Ressourcen in der Cloud-Datenverarbeitungsumgebung verwendet werden) sowie eine Rechnungsstellung oder Fakturierung für die Inanspruchnahme dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware umfassen. Die Sicherheitsfunktion stellt eine Identitätsprüfung für Cloud-Nutzer und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal stellt einen Zugang zur Cloud-Computing-Umgebung für Nutzer und Systemadministratoren bereit. Eine Dienstgüteverwaltung stellt eine Zuordnung und Verwaltung der Cloud-Datenverarbeitungsressourcen bereit, sodass die erforderliche Dienstgüte erfüllt wird. Die Planung und Erfüllung der Dienstgütevereinbarung (Service Level Agreement, SLA) stellt eine Vorabanordnung und Bereitstellung von Cloud-Computing-Ressourcen bereit, deren künftiger Bedarf auf der Grundlage einer Dienstgütevereinbarung vorausberechnet wird.
-
Die Arbeitslastschicht 1640 stellt Beispiele für Funktionalitäten bereit, für die die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen von Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Abbildung und Navigation; Software-Entwicklung und Lebenszyklusverwaltung; Lieferung von Bildung aus dem virtuellen Klassenzimmer; Datenanalyseverarbeitung; Transaktionsverarbeitung; und insbesondere in Bezug auf die vorliegende Erfindung APIs und Laufzeitsystemkomponenten zum Erzeugen von Vorschlägen für die automatische Vervollständigung der Suche auf der Grundlage von Kontexteingaben.
-
Die zahlreichen Merkmale und Vorteile der Erfindung ergeben sich aus der ausführlichen Beschreibung, daher sollen die beigefügten Ansprüche alle diese Merkmale und Vorteile der Erfindung abdecken, die dem eigentlichen Gedanken und Anwendungsbereich der Erfindung entsprechen. Da für Fachleute zahlreiche Änderungen und Variationen offensichtlich sind, soll die Erfindung nicht auf den genauen Aufbau und die genaue Funktionsweise wie dargestellt und beschrieben beschränkt sein, und entsprechend kann auf alle geeigneten Änderungen und Äquivalente zurückgegriffen werden, die in den Anwendungsbereich der Erfindung fallen.
-
Es versteht sich, dass die Erfindung in ihrer Anwendung nicht auf die Einzelheiten des Aufbaus und die Anordnungen der in der folgenden Beschreibung aufgeführten oder in den Zeichnungen dargestellten Komponenten beschränkt ist. Die Erfindung kann zusätzlich zu den beschriebenen Ausführungsformen noch Ausführungsformen enthalten und auf verschiedene Art und Weise durchgeführt werden. Es versteht sich ferner, dass die hier verwendete Ausdrucksweise und Terminologie sowie die Zusammenfassung zum Zweck der Beschreibung dienen und nicht als einschränkend angesehen werden sollten.
-
Für Fachleute ist daher offensichtlich, dass das Konzept, auf dem diese Offenbarung beruht, ohne Weiteres als Grundlage für die Gestaltung anderer Strukturen, Verfahren und Systeme zum Durchführen der verschiedenen Zwecke der vorliegenden Erfindung verwendet werden kann. Es ist daher wichtig, dass die Ansprüche unter dem Aspekt betrachtet werden, dass sie diesen äquivalenten Aufbau umfassen, ohne vom Gedanken und Anwendungsbereich der vorliegenden Erfindung abzuweichen.