-
HINTERGRUND
-
Die vorliegende Offenbarung betrifft im Allgemeinen logische Partitionen in einem Datenverarbeitungssystem und insbesondere Techniken, die es einem Gast-Betriebssystem (auf einem Datenverarbeitungssystem) ermöglichen, Einträge in einem Adressumsetzpufferspeicher ungültig zu machen.
-
Administratoren nehmen oftmals eine logische Partitionierung der Ressourcen von Datenverarbeitungssystemen durch Virtualisierung vor. Zu diesen Ressourcen können Prozessoren, Arbeitsspeicher, Massenspeicher usw. gehören. Ein Hypervisor wird verwendet, um verschiedenen logischen Partitionen (oder virtuellen Maschinen) virtualisierte Datenverarbeitungs-Hardware bereitzustellen. Jede logische Partition kann ein anderes Betriebssystem (operating system, OS) ausführen. Der Hypervisor kann jedes OS mit einem Satz virtualisierter Datenverarbeitungs-Hardware versehen.
-
Außerdem enthalten Prozessoren mindestens eine Arbeitsspeicher-Verwaltungseinheit (memory management unit (MMU)), um virtuelle in physische Adressen umzusetzen. Zum Beispiel kann der Prozessor verschiedenen Prozessen, die auf dem Prozessor ausgeführt werden (z. B. Betriebssysteme oder Benutzeranwendungen), Blöcke von virtuellem Arbeitsspeicher zuweisen. Jede der virtuellen Adressen entspricht einer physischen Arbeitsspeicheradresse im Arbeitsspeicher. Die Zuordnungen zwischen den virtuellen und den physischen Adressen werden in einer Seitentabelle als Seitentabelleneinträge gespeichert. Wenn ein Prozess eine Anforderung, Daten von einer bestimmten virtuellen Adresse zu lesen oder Daten an eine bestimmte virtuelle Adresse zu schreiben, an einen Verarbeitungskern sendet, fragt die MMU die Seitentabelle {oder einen Adressumsetzpufferspeicher (translation lookaside buffer (TLB)) ab, um die entsprechenden physischen Adressen zu ermitteln. Der Verarbeitungskern verwendet dann die physische Adresse, um die von dem Prozess angeforderte Lese- oder Schreiboperation durchzuführen.
-
Bei dem TLB handelt es sich im Allgemeinen um einen Cachespeicher der Seitentabelle, der eine Teilmenge des Inhalts der Seitentabelle darstellt. Im Allgemeinen geht der Zugriff auf den TLB für eine Umsetzung für einen Prozessor schneller vonstatten als der Zugriff auf die Seitentabelle (die üblicherweise im Hauptspeicher abgelegt wird). In manchen Fällen können die Einträge in dem TLB jedoch ungültig werden, z. B. aufgrund eines Prozesswechsels, bei dem der Prozessor von der Ausführung eines Prozesses (der eine Zuordnung einer virtuellen zu einer physischen Adresse verwendet) zur Ausführung eines anderen Prozesses übergeht (der eine andere Zuordnung einer virtuellen zu einer physischen Adresse verwendet).
-
Bevor ein TLB-Eintrag ungültig gemacht wird, muss das Betriebssystem im Allgemeinen den Hypervisor aufrufen, dessen Aufgabe darin besteht, TLB-Einträge ungültig zu machen. Auf diese Weise wird verhindert, dass Betriebssysteme, die Sicherheitsbedrohungen darstellen können, andere Betriebssysteme in dem Datenverarbeitungssystem in Mitleidenschaft ziehen. Gleichzeitig kann die Verwendung des Hypervisors, um TLB-Einträge ungültig zu machen, bei einer großen Anzahl von Betriebssystemen jedoch ineffizient sein (beispielsweise weil möglicherweise eine große Anzahl von Anweisungen ausgeführt werden muss, bevor ein TLB-Eintrag ungültig gemacht wird).
-
KURZDARSTELLUNG
-
Eine hier vorgestellte Ausführungsform beschreibt ein Verfahren. Das Verfahren beinhaltet im Allgemeinen den Empfang von einem oder mehreren Invalidierungsguthaben von einem Hypervisor durch ein Gast-Betriebssystem, um Umsetzungseinträge in einem Adressumsetzpufferspeicher (TLB) ungültig zu machen. Das Verfahren beinhaltet auch das Verringern von einem Invalidierungsguthaben von dem einen oder den mehreren Invalidierungsguthaben, nachdem ein Umsetzungseintrag in dem TLB ungültig gemacht worden ist. Das Verfahren beinhaltet darüber hinaus das Anfordern von zusätzlichen Invalidierungsguthaben von dem Hypervisor, nachdem festgestellt wurde, dass keine Invalidierungsguthaben mehr übrig sind.
-
Weitere Ausführungsformen enthalten, ohne darauf beschränkt zu sein, ein Computerprogrammprodukt, das ein nichtflüchtiges Speichermedium mit von einem Computer lesbarem Programmcode enthält, der es einer Verarbeitungseinheit ermöglicht, einen oder mehrere Aspekte der offenbarten Verfahren umzusetzen, sowie ein System, das über einen Prozessor, einen Arbeitsspeicher und Anwendungsprogramme verfügt, die so konfiguriert sind, dass sie eines oder mehrere der offenbarten Verfahren durchführen.
-
KURZE BESCHREIBUNG DER DIVERSEN ANSICHTEN DER ZEICHNUNGEN
-
1 zeigt ein beispielhaftes Datenverarbeitungssystem gemäß einer Ausführungsform, das es Gast-Betriebssystemen ermöglicht, TLB-Einträge ungültig zu machen.
-
2 zeigt ein Beispiel einer TLB-Invalidierungskomponente gemäß einer Ausführungsform.
-
3 zeigt ein Verfahren gemäß einer Ausführungsform, das dazu dient, TLB-Einträge durch ein Gast-Betriebssystem ungültig zu machen.
-
4 zeigt ein Verfahren gemäß einer Ausführungsform, das dazu dient, ein Gast-Betriebssystem zu erkennen und/oder ein Gast-Betriebssystem daran zu hindern, einem Datenverarbeitungssystem Schaden zuzufügen.
-
5 zeigt ein Blockschaubild eines Datenverarbeitungssystems gemäß einer Ausführungsform, das so konfiguriert ist, dass es TLB-Einträge ungültig macht und ein gefährliches Betriebssystem unter Quarantäne stellt.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Hier aufgezeigte Ausführungsformen offenbaren Techniken, um es einem Gast-Betriebssystem zu ermöglichen, TLB-Einträge ungültig zu machen, beispielsweise, ohne über den Hypervisor zu gehen. Hier aufgezeigte Ausführungsformen offenbaren auch Techniken, die dazu dienen, Gast-Betriebssysteme, die eine Sicherheitsbedrohung und/oder ein Sicherheitsrisiko für andere Gast-Betriebssysteme darstellen, zu erkennen und daran zu hindern, die anderen Betriebssysteme in einem Datenverarbeitungssystem in Mitleidenschaft zu ziehen. Somit bieten die hier aufgezeigten Techniken eine verbesserte Leistungsfähigkeit im Vergleich zu herkömmlichen Architekturen, bei denen das Gast-Betriebssystem keine TLB-Einträge ungültig machen darf.
-
In herkömmlichen Datenverarbeitungssystemen dürfen Gast-Betriebssysteme TLB-Einträge im Allgemeinen nicht selbst ungültig machen, da es sich bei dem Gast-Betriebssystem im Allgemeinen nicht um ein vertrauenswürdiges Betriebssystem handelt. In vielen Fällen kann das Gast-Betriebssystem zum Beispiel eine Sicherheitsbedrohung und/oder ein Sicherheitsrisiko für andere Gast-Betriebssysteme in dem Datenverarbeitungssystem darstellen. Unter Verwendung eines Denial-of-Service-(DOS-)Angriffs als Referenzbeispiel könnte das Gast-Betriebssystem, wenn ein Gast-Betriebssystem TLB-Einträge ungültig machen dürfte (ohne Erlaubnis von dem Hypervisor), andere Gast-Betriebssysteme am Betrieb hindern und/oder die Leistungsfähigkeit der anderen Betriebssysteme merklich herabsetzen (z. B. ”denial of service” (Zugangsbehinderung)), indem den Gast-Betriebssystemen durch die Verwendung von Anweisungen, Einträge im Adressumsetzpufferspeicher ungültig zu machen (translation lookaside buffer invalidate entry instructions (tlbies)), der Zugriff auf Umsetzungen von virtuellen in physische Adressen, die sich in dem TLB befinden, verwehrt wird. Somit gestatten herkömmliche Datenverarbeitungssysteme im Allgemeinen nur dem Hypervisor, TLB-Einträge ungültig zu machen.
-
Die Verwendung des Hypervisors, um TLB-Einträge ungültig zu machen, ist jedoch sehr ineffizient. Eine Architektur beispielsweise, die vorgibt, dass das Gast-Betriebssystem den Hypervisor aufruft, um einen TLB-Eintrag ungültig zu machen, muss üblicherweise mehrere Anweisungen ausführen, bevor der TLB-Eintrag ungültig gemacht wird, was die Leistungsfähigkeit des Gast-Betriebssystems herabsetzt.
-
Wie nachstehend ausführlicher beschrieben wird, machen es die hier aufgezeigten Techniken möglich, dass ein Gast-Betriebssystem TLB-Einträge direkt ungültig macht, während Gast-Betriebssysteme erkannt und daran gehindert werden, eine Gefahr für andere Betriebssysteme in einem Datenverarbeitungssystem darzustellen. In einer Ausführungsform kann der Hypervisor jedem Gast-Betriebssystem, das auf einem Datenverarbeitungssystem ausgeführt wird, eine Anzahl von TLB-Invalidierungsguthaben (z. B. tlbie-Guthaben) zuweisen. Jedes Gast-Betriebssystem kann die tlbie-Guthaben dazu verwenden, TLB-Einträge direkt ungültig zu machen. Der Hypervisor kann den Betrieb des Gast-Betriebssystems einschließlich der Verwendung der tlbie-Guthaben durch jedes Gast-Betriebssystem überwachen. Auf der Grundlage der Verwendung der Guthaben kann der Hypervisor feststellen, ob das Gast-Betriebssystem ein ”gefährliches” Betriebssystem ist (z. B. ein Betriebssystem, das ein Sicherheitsrisiko oder eine Sicherheitsbedrohung für die anderen Betriebssysteme darstellt, die in dem Datenverarbeitungssystem betrieben werden, usw.). Wenn der Hypervisor zum Beispiel feststellt, dass ein Gast-Betriebssystem mehr tlbie-Guthaben in Anspruch nimmt, als ihm zugewiesen wurden, kann der Hypervisor zu der Feststellung kommen, dass das Gast-Betriebssystem an einem Denial-of-Service-(DOS-)Angriff oder an einem anderen Sicherheitsangriff beteiligt ist. Wenn der Hypervisor feststellt, dass das Gast-Betriebssystem ein ”gefährliches” Betriebssystem ist, kann der Hypervisor Maßnahmen ergreifen, um ein solches gefährliches Betriebssystem zu isolieren, z. B., indem er das gefährliche Betriebssystem unter Quarantäne stellt, dem gefährlichen Betriebssystem jede weitere Zuweisung von tlbie-Guthaben verweigert, dem gefährlichen Betriebssystem Betriebszeit durch den Prozessor verweigert usw. Der Hypervisor kann das gefährliche Betriebssystem auch einem Administrator melden, um den Administrator einschreitende Maßnahmen ergreifen zu lassen.
-
Somit ermöglichen es die hier aufgezeigten Techniken einem Gast-Betriebssystem, TLB-Einträge selbst ungültig zu machen (z. B. ohne den Hypervisor aufzurufen), was die Leistungsfähigkeit des Betriebssystems merklich verbessert. Überdies machen es die hier aufgezeigten Techniken auch möglich, Gast-Betriebssysteme, die ein Sicherheitsrisiko und/oder eine Sicherheitsbedrohung darstellen, zu erkennen und solche gefährlichen Betriebssysteme von anderen Teilen des Datenverarbeitungssystems zu isolieren und unter Quarantäne zu stellen.
-
Es sei angemerkt, dass die folgenden Ausführungsformen von einem Kontextwechsel Gebrauch machen, bei dem die Hardware (z. B. der Prozessor usw.) eines Datenverarbeitungssystems von der Ausführung eines Prozesses (und folglich von einem Adressraum) zur Ausführung eines anderen Prozesses (und folglich zu einem anderen Adressraum) schaltet, was als Referenzbeispiel für eine Situation dienen soll, in der die Einträge des TLB beispielsweise von einem Gast-Betriebssystem ungültig gemacht werden können. Es sei jedoch angemerkt, dass die hier aufgezeigten Techniken, die es einem Gast-Betriebssystem ermöglichen, TLB-Einträge ungültig zu machen, auch in anderen Situationen Anwendung finden können. Es sei weiter angemerkt, dass sich die folgenden Ausführungsformen auch auf Denial-of-Service-(DOS-)Angriffe als ein Referenzbeispiel für eine Art von Angriff beziehen, der von einem gefährlichen Betriebssystem durchgeführt werden kann, welches eine übermäßige Menge von tlbies ausgibt. Der Fachmann versteht jedoch, dass mit den hier aufgezeigten Techniken auch andere Arten von Angriffen und/oder Sicherheitslücken erkannt werden können.
-
1 zeigt ein beispielhaftes Datenverarbeitungssystem 100 gemäß einer Ausführungsform, in dem die hier aufgezeigten Techniken in die Praxis umgesetzt werden können. Wie gezeigt ist, enthält das Datenverarbeitungssystem 100 einen Hypervisor 102, eine virtuelle Maschine (VM) 106A, eine VM 106B, einen Prozessor 112, einen TLB 114 und einen Massenspeicher 116. Bei dem Hypervisor 102 (d. h. einem Virtual Machine Monitor (VMM)) handelt es sich um Software und/oder Hardware, die die VMs 106 (die auch als logische Partitionen oder LPARs bezeichnet werden) in dem Datenverarbeitungssystem 100 verwaltet und ausführt. Im Allgemeinen ist der Hypervisor 102 ein Vermittler zwischen den VMs 106 und der Hardware in dem Datenverarbeitungssystem 100 (z. B. dem Prozessor 112, dem Massenspeicher 116 usw.). Wie gezeigt ist, ist das Gast-Betriebssystem 108A das Betriebssystem für die VM 106A, während das Gast-Betriebssystem 108B das Betriebssystem für die VM 106B ist. Jedes Gast-Betriebssystem 108 kann eine oder mehrere Anwendungen (oder Prozesse), die nicht gezeigt sind, ausführen. Zu Beispielen für Gast-Betriebssysteme zählen Versionen des Betriebssystems UNIX (wie zum Beispiel das Betriebssystem AIX), Versionen des Betriebssystems Microsoft Windows sowie Distributionen des Betriebssystems Linux. (UNIX ist ein eingetragenes Warenzeichen von The Open Group in den Vereinigten Staaten von Amerika und in anderen Ländern. Microsoft und Windows sind Warenzeichen der Microsoft Corporation in den Vereinigten Staaten von Amerika, in anderen Ländern oder sowohl in den Vereinigten Staaten von Amerika als auch in anderen Ländern. Linux ist ein eingetragenes Warenzeichen von Linus Torvalds in den Vereinigten Staaten von Amerika, in anderen Ländern oder sowohl in den Vereinigten Staaten von Amerika als auch in anderen Ländern.) Allgemeiner gesagt, jedes Betriebssystem, das die hier offenbarten Funktionen unterstützt, kann verwendet werden.
-
In einer Ausführungsform steuert der Hypervisor 102, welche VM 106 (und ihr entsprechendes Gast-Betriebssystem 108) gerade von dem Prozessor 112 ausgeführt wird. Anders ausgedrückt, der Hypervisor 102 kann die Verarbeitungszeit des Prozessors 112 so einteilen, dass verschiedenen VMs 106 in dem Datenverarbeitungssystem 100 verschiedene Blöcke von Verarbeitungszeit (oder Zeitscheiben) zugewiesen werden. In diesem Beispiel wird die VM 106A gerade für die Verwendung des Prozessors 112 eingeteilt. Somit führt der Prozessor 112 Anweisungen aus, die von den Prozessen bereitgestellt werden, welche im Gast-Betriebssystem 108A ausgeführt werden, wie von dem gestrichelten Kästchen im Prozessor 112 angegeben wird. Es sei angemerkt, dass 1 zwar nur zwei VMs 106 zeigt, das Datenverarbeitungssystem 100 aber eine beliebige Anzahl von VMs enthalten kann, die die Verarbeitungszeit auf dem Prozessor 112 aufteilen.
-
Der Prozessor 112 stellt eine beliebige Anzahl von Verarbeitungselementen dar, von denen jedes einen oder mehrere Verarbeitungskerne enthalten kann. Wenn der Prozessor 112 mehrere Kerne enthält, können die VMs 106 in einer Ausführungsform so eingeteilt werden, dass sie die einzelnen Kerne zu verschiedenen Zeitblöcken verwenden. Beispielsweise kann das Gast-Betriebssystem 108A der VM 106A so ungeteilt werden, dass es einen ersten Kern im Prozessor 112 verwendet, während das Gast-Betriebssystem 108B der VM 106B so eingeteilt wird, dass es einen zweiten Kern im Prozessor 112 verwendet. Alternativ können die VMs 106 während des Zeitraums, für den sie eingeteilt sind, den ganzen Prozessor 112 (der mehrere Kerne enthält) verwenden. Zum Beispiel können alle Kerne im Prozessor 112 vom Gast-Betriebssystem 108A ausgegebene Anweisungen ausführen. Während die VM 106A für die Verwendung des Prozessors 112 eingeteilt ist, kann das Gast-Betriebssystem 108B der VM 106B inaktiv sein. Anders ausgedrückt, der Hypervisor 102 hält die Prozesse, die auf dem Gast Betriebssystem 108B ausgeführt werden, bis zu dem Zeitpunkt an, zu dem er für die Verwendung des Prozessors 112 eingeteilt ist.
-
Das Datenverarbeitungssystem 100 enthält auch einen TLB 114, um die von dem Prozessor 112 angeforderten Umsetzungen von virtuellen in physische Adressen durchzuführen. In einer Ausführungsform kann der TLB 114 als eine Art von Cachespeicher betrachtet werden, der nur einen Teil der Einträge in einer Seitentabelle (nicht gezeigt) für ein Gast-Betriebssystem (wie zum Beispiel das Gast Betriebssystem 108A, 108B usw.) speichert. Zum Beispiel kann der TLB 114 kürzlich vorgenommene Umsetzungen von virtuellen Adressen in physische Adressen verwalten, die von einem bestimmten Prozess oder einer bestimmten Anwendung (eines Gast-Betriebssystems) verwendet werden. Bei dem TLB 114 kann es sich beispielsweise um einen Assoziativspeicher (z. B. einen inhaltadressierbaren Speicher (content addressable memory (CAM)) handeln, der sich in der Arbeitsspeicherhierarchie über anderen Arten von Arbeitsspeicher (wie z. B. Cachespeicher, Hauptspeicher usw.) befindet. Anders ausgedrückt, der TLB 114 befindet sich näher am Prozessor 112 als andere Arten von Arbeits- oder Massenspeicher.
-
Wenn der Prozessor 112 einen Prozess ausführt, der zu dem Gast-Betriebssystem 108A gehört, kann der Prozessor 112 zuerst Umsetzungseinträge im TLB 114 abfragen. Wenn der Prozessor 112 die entsprechende Arbeitsspeicher-Umsetzung nicht finden kann, kann der Prozessor 112 die Seitentabelle (nicht gezeigt), die sich üblicherweise im Hauptspeicher befindet, nach der entsprechenden Arbeitsspeicher-Umsetzung durchsuchen. Wenn der Hauptspeicher nicht die gewünschte Zuordnung hat, kann der Prozessor 112 die virtuelle Adresse aus dem Massenspeicher 116 abrufen, der Kopien von allen Seitentabellen in dem Datenverarbeitungssystem 100 enthalten kann. Der Massenspeicher 116 kann Direktzugriffsspeicher-(RAM-)Einheiten, zu denen der Hauptspeicher des Datenverarbeitungssystems 100 gehört, sowie ergänzende Arbeitsspeicherebenen, z. B. Cachespeicher, nichtflüchtige oder Sicherungsspeicher (z. B. programmierbare oder Flashspeicher), Nur-Lese-Speicher und dergleichen, darstellen. Außerdem kann zu dem Massenspeicher 116 Arbeitsspeicher gehören, der sich physisch im Datenverarbeitungssystem 100 oder auf einer anderen Datenverarbeitungseinheit befindet, die mit dem Datenverarbeitungssystem 100 verbunden ist.
-
In einer Ausführungsform können ein oder mehrere Einträge in dem TLB 114 für den nachfolgend ausgeführten Prozess ungültig (oder unbrauchbar) werden, weil das Gast-Betriebssystem 108A und das Gast-Betriebssystem 108B möglicherweise verschiedene Prozesse ausführen, die unterschiedliche virtuelle Adressräume verwenden. In derartigen Situationen würde das Datenverarbeitungssystem 100 solche Einträge im Allgemeinen als ungültig markieren, beispielsweise, um sicherzustellen, dass der nächste Prozess (der gleich ausgeführt wird) nicht versehentlich eine Umsetzung einer virtuellen in eine physische Adresse aus einem vorherigen Prozess verwendet. Wie vorstehend erwähnt wurde, gestatten es herkömmliche Architekturen, teilweise aufgrund von Sicherheitsbedenken, einem Gast-Betriebssystem jedoch nicht, TLB-Einträge ungültig zu machen. Vielmehr muss das Gast-Betriebssystem bei diesen herkömmlichen Architekturen im Allgemeinen den Hypervisor aufrufen, der dafür zuständig ist, TLB-Einträge ungültig zu machen.
-
Hier aufgezeigte Ausführungsformen stellen jedoch Techniken vor, die es Gast-Betriebssystemen gestatten können, TLB-Einträge ungültig zu machen, während sie Sicherheitsbedenken ausräumen, die damit verbunden sind, dass Gast-Betriebssystemen diese Möglichkeit eingeräumt wird. Wie beispielsweise in 1 gezeigt ist, enthält jede VM 106A und 106B eine TLB-Invalidierungskomponente 110A beziehungsweise 110B. Wie nachstehend ausführlicher beschrieben wird, können das Gast-Betriebssystem 108A und das Gast-Betriebssystem 1088 die TLB-Invalidierungskomponente in ihrer jeweiligen logischen Partition verwenden, um TLB-Einträge im TLB 114 direkt ungültig zu machen, z. B., ohne den Hypervisor 102 aufzurufen. In einer Ausführungsform können das Gast-Betriebssystem 108A und das Gast-Betriebssystem 108B die TLB-Invalidierungskomponenten 110A und 110B verwenden, um TLB-Einträge während eines Kontextwechsels ungültig zu machen, bei dem ein Prozess (der mit einem Adressraum arbeitet) zu einem anderen Prozess wechselt (der mit einer anderen Adresse arbeitet).
-
In einer Ausführungsform überwacht der Hypervisor 102 den Betrieb des Gast-Betriebssystems 108A und des Gast-Betriebssystems 108B, um sicherzustellen, dass das Gast-Betriebssystem 108A weder ein Risiko noch eine Bedrohung für das Gast-Betriebssystem 108B (und umgekehrt) in dem Datenverarbeitungssystem 100 darstellt. Wie nachstehend ausführlicher beschrieben wird, kann der Hypervisor 102 zum Beispiel eine maximale Anzahl von TLB-Invalidierungsversuchen festlegen, die jedes Gast-Betriebssystem 108A und jedes Gast-Betriebssystem 108B vornehmen darf. Wenn der Hypervisor 102 in einer Ausführungsform feststellt, dass eines der Gast-Betriebssysteme 108 die zugeteilte Anzahl von TLB-Invalidierungsversuchen überschreitet, kann der Hypervisor 102 zu der Feststellung gelangen, dass das Gast-Betriebssystem ein ”gefährliches” Betriebssystem ist, das für andere Gast-Betriebssysteme in dem Datenverarbeitungssystem 100 eine Bedrohung darstellt, und Maßnahmen ergreifen, um das ”gefährliche” Betriebssystem von anderen Teilen des Datenverarbeitungssystems 100 zu isolieren.
-
Beispielsweise kann der Hypervisor 102, wie gezeigt ist, ein gefährliches Gast-Betriebssystem mit Hilfe der Quarantänekomponente 104 isolieren. In einer Ausführungsform kann der Hypervisor 102 mit Hilfe der Quarantänekomponente 104 den restlichen Block der Verarbeitungszeit, welcher dem gefährlichen Gast-Betriebssystem zugewiesen worden ist, wegnehmen und/oder verringern. In einer Ausführungsform kann der Hypervisor 102 die Anzahl der TLB-Invalidierungsversuche, die das gefährliche Gast-Betriebssystem vornehmen darf, mit Hilfe der Quarantänekomponente 104 beschränken. In einer Ausführungsform kann der Hypervisor 102 mit der Quarantänekomponente 104 den Zugriff des gefährlichen Betriebssystems auf Software- und/oder Hardware-Ressourcen des Datenverarbeitungssystems 100 beschränken und/oder verhindern. Der Hypervisor 102 kann zum Beispiel die Zuwiderhandlungen eines Gast-Betriebssystems erfassen und sobald die Zuwiderhandlungen einen Schwellenwert erreichen, kann der Hypervisor 102 das Gast-Betriebssystem von einem oder mehreren Teilen des Datenverarbeitungssystems 100 isolieren und unter Quarantäne stellen. In einer Ausführungsform kann der Hypervisor 102 einem Systemadministrator das Vorhandensein eines ”gefährlichen” Gast-Betriebssystems anzeigen, um dem Systemadministrator die Möglichkeit zu geben, die Sicherheitsbedrohung zu beseitigen. Im Allgemeinen kann die Quarantänekomponente 104 jedoch jedwede Kombination der vorstehenden Techniken umsetzen, um ein Gast-Betriebssystem zu erkennen und/oder daran zu hindern, eine Bedrohung für andere Gast Betriebssysteme in dem Datenverarbeitungssystem 100 darzustellen.
-
Es sei angemerkt, dass 1 lediglich ein Beispiel für ein Datenverarbeitungssystem zeigt, das so konfiguriert ist, dass es einem Gast-Betriebssystem gestattet, TLB-Einträge ungültig zu machen (ohne den Hypervisor aufzurufen), und so konfiguriert ist, dass es verhindert, dass ein Gast-Betriebssystem eine Sicherheitsbedrohung für andere Teile des Datenverarbeitungssystems 100 darstellt. Allgemeiner ausgedrückt, der Fachmann wird erkennen, dass andere Ausführungsformen von Datenverarbeitungssystemen ebenfalls so konfiguriert werden können, dass sie die hier aufgezeigten Techniken umsetzen.
-
2 zeigt des Weiteren ein Beispiel der in Bezug auf 1 beschriebenen TLB-Invalidierungskomponente 110 gemäß einer Ausführungsform. Wie gezeigt ist, enthält die TLB-Invalidierungskomponente 110 Invalidierungsguthaben 202, eine Unterbrechungskomponente 204 und ein Invalidierungsinstrument 206.
-
In einer Ausführungsform macht die TLB-Invalidierungskomponente 110 TLB-Einträge in dem TLB 114 mit Hilfe des Invalidierungsinstruments 206 ungültig. Zum Beispiel sendet die TLB-Invalidierungskomponente 110 tlbie-Anweisungen mit Hilfe des Invalidierungsinstruments 206 an den Prozessor 112, um TLB-Einträge in dem TLB 114 ungültig zu machen. Üblicherweise weiß das Gast-Betriebssystem jedoch nicht, auf welchem Prozessor es gerade ausgeführt wird. In diesen Fällen verwendet das Invalidierungsinstrument 206 daher die Rundsendeform der tlbie-Anweisung, welche auf dem Systembus (nicht gezeigt) in dem Datenverarbeitungssystem 100 im Rundsendeverfahren übertragen wird. Selbst wenn es den Gast-Betriebssystemen gestattet ist, tlbie-Anweisungen für ihre eigene VM (oder logische Partition) im Rundsendeverfahren zu übertragen, kann die Rundsendeform der tlbie-Anweisungen in manchen Fällen eine Gefahr für andere Gast-Betriebssysteme in demselben Datenverarbeitungssystem 100 darstellen. Ein gefährliches Gast-Betriebssystem könnte beispielsweise die Fabric mit seinen tlbie-Anweisungen fluten, was zu Leistungseinbußen und/oder Zugangsbehinderungen (denial of service) für andere Gast-Betriebssysteme führt. Ferner kann die Rundsendung einer großen Anzahl von tlbie-Anweisungen auf dem Systembus dazu führen, dass das ganze Datenverarbeitungssystem zusammenbricht.
-
Hier aufgezeigte Ausführungsformen stellen Techniken bereit, die dazu dienen, die Anzahl der tlbie-Anweisungen zu steuern, die ein Gast-Betriebssystem je Zeitblock ausgeben kann. Wie gezeigt ist, wird jedem Gast-Betriebssystem zum Beispiel eine Anzahl von Invalidierungsguthaben 202 durch den Hypervisor 102 zugewiesen. In einer Ausführungsform lädt der Hypervisor die Invalidierungsguthaben 202 in ein Sonderregister (special purpose register (SPR)), welches das Invalidierungsinstrument 206 bei der Ausgabe von tlbie-Anweisungen verwenden darf. Die Anzahl der jedem Gast-Betriebssystem zugewiesenen Invalidierungsguthaben 202 kann auf vielen verschiedenen Kriterien (oder Informationen) beruhen. In einer Ausführungsform ist die Anzahl der Invalidierungsguthaben, die dem Gast-Betriebssystem zugewiesen werden, zum Beispiel eine feste Anzahl (die z. B. von der Gesamtzahl der Invalidierungsguthaben bestimmt wird, die dem Hypervisor 102 zur Verfügung stehen). Anders ausgedrückt, wenn der Hypervisor 102 über M Invalidierungsguthaben verfügt und es N Gast-Betriebssysteme 108 gibt, die über N VMs 106 betrieben werden, kann jedes Gast-Betriebssystem M/N Invalidierungsguthaben erhalten, wobei M > N und N > 1 ist. In manchen Fällen können die M Invalidierungsguthaben auf der Grundlage des Schwellenwerts von im Rundsendeverfahren übertragenen Invalidierungsguthaben bestimmt werden, die das Datenverarbeitungssystem 100 (z. B. auf dem Systembus) zulassen kann, bevor es zu Leistungseinbußen und/oder einem Systemausfall kommt.
-
In einer weiteren Ausführungsform kann die Anzahl der Invalidierungsguthaben 202, die dem Gast-Betriebssystem zugewiesen werden, auf den jeweiligen Prozessen oder Anwendungen beruhen, die von dem Gast-Betriebssystem ausgeführt werden. Beispielsweise kann der Hypervisor 102 die Entscheidung treffen, einem Gast-Betriebssystem mehr Invalidierungsguthaben zuzuweisen, wenn dieses Gast-Betriebssystem im Vergleich beispielsweise zu einem anderen Gast-Betriebssystem, das für die Ausführung von einfachen Prozessen zuständig ist, für die Ausführung von komplexeren Prozessen zuständig ist. In einer Ausführungsform kann die Anzahl der Invalidierungsguthaben 202, die dem Gast-Betriebssystem zugewiesen werden, auf der Eingabe und/oder der Rückmeldung des Systemadministrators beruhen.
-
In einer Ausführungsform verringert der Prozessor 112 jedes Mal, wenn das Invalidierungsinstrument 206 eine tlbie-Anweisung ausgibt, nach erfolgter Ausführung der Anweisung ein Invalidierungsguthaben 202 von dem SPR. In einer Ausführungsform unterbricht die Unterbrechungskomponente 204 das Gast-Betriebssystem 108, sobald keine Invalidierungsguthaben 202 mehr übrig sind. In einer Ausführungsform wird die Unterbrechungskomponente 204 von der Leistungsüberwachungseinheit (performance monitoring unit (PMU)) des Prozessors 112 realisiert. Eine solche Unterbrechung zwingt das Gast-Betriebssystem 108 zum Aufruf des Hypervisors 102, um mehr Invalidierungsguthaben 202 anzufordern, damit das Gast-Betriebssystem 108 weiterhin ausgeführt werden und es seinen aktuellen Zeitblock verwenden kann. Sobald der Hypervisor 102 die Unterbrechung empfängt, kann der Hypervisor 102 beliebige der vorstehend beschriebenen Techniken umsetzen, wie zum Beispiel den restlichen Zeitblock des Gast-Betriebssystems verringern und/oder wegnehmen, das Gast-Betriebssystem darüber informieren, dass die zugewiesene Anzahl von Invalidierungsguthaben 202 überschritten wurde, dem Gast-Betriebssystem 108 mehr Invalidierungsguthaben 202 zuweisen, das Gast-Betriebssystem unter Quarantäne stellen (z. B., wenn sich das Gast-Betriebssystem wiederholt einer Zuwiderhandlung schuldig macht), sich weigern, zusätzliche Invalidierungsguthaben 202 zuzuweisen, einem Systemadministrator die Zuwiderhandlung melden usw.
-
3 zeigt ein Verfahren 300 gemäß einer Ausführungsform, das dazu dient, einen oder mehrere TLB-Einträge ungültig zu machen. Wie gezeigt ist, beginnt das Verfahren 300 im Schritt 302, in dem das Gast-Betriebssystem 108 ein oder mehrere Invalidierungsguthaben, z. B. von einem Hypervisor 102, empfängt. Wie vorstehend erwähnt wurde, können die Invalidierungsguthaben in einer Ausführungsform in ein Sonderregister für das Gast-Betriebssystem 108 geladen werden. Im Schritt 304 verringert das Gast-Betriebssystem 108 jedes Mal, wenn das Gast-Betriebssystem 108 eine tlbie-Anweisung ausgibt, die Anzahl der Invalidierungsguthaben um eins. Im Schritt 306 stellt das Gast-Betriebssystem fest, ob in dem Sonderregister noch Invalidierungsguthaben übrig sind. Wenn ja, gibt das Gast-Betriebssystem 108 weiterhin tlbie-Anweisungen als Teil seines normalen Betriebs aus. Anders ausgedrückt, das Gast-Betriebssystem 108 kann weiterhin tlbie-Anweisungen als Teil eines jeden Kontextwechsels oder einer anderen Art von Operation ausgeben. Wenn das Gast-Betriebssystem 108 andererseits feststellt, dass in dem Sonderregister keine Invalidierungsguthaben mehr übrig sind, unterbricht das Gast-Betriebssystem 108 den Prozessor und ruft den Hypervisor auf, um zusätzliche Invalidierungsguthaben anzufordern (Schritt 308). Wenn im Schritt 310 zusätzliche Invalidierungsguthaben empfangen werden, verwendet das Gast-Betriebssystem 108 weiterhin Invalidierungsguthaben als Teil seines normalen Betriebs.
-
4 zeigt ein Verfahren 400 gemäß einer Ausführungsform, das dazu dient, ein gefährliches Gast-Betriebssystem, das tlbie-Anweisungen ausgeben darf, zu erkennen und daran zu hindern, eine Bedrohung für ein Datenverarbeitungssystem darzustellen. Wie gezeigt ist, beginnt das Verfahren 400 im Schritt 402, in dem der Hypervisor 102 einem oder mehreren Gast-Betriebssystemen 108 in einem Datenverarbeitungssystem ein oder mehrere Invalidierungsguthaben zuweist. Bei 404 erkennt der Hypervisor 102, dass mindestens ein Gast-Betriebssystem die zugewiesene Anzahl von Invalidierungsguthaben überschritten hat. Wie vorstehend erwähnt wurde, wird, sobald ein Gast-Betriebssystem seine zugewiesene Anzahl von Invalidierungsguthaben überschreitet, zum Beispiel eine Unterbrechung erzeugt (z. B. von einer PMU), die das Gast-Betriebssystem anhält und das Gast-Betriebssystem zwingt, den Hypervisor 102 aufzurufen, um zusätzliche Invalidierungsguthaben anzufordern.
-
Bei 406 stellt der Hypervisor 102 fest, ob das Gast-Betriebssystem ein gefährliches Betriebssystem ist (z. B. eine Bedrohung oder ein Risiko für andere Gast-Betriebssysteme in dem Datenverarbeitungssystem 100 darstellt). Wie vorstehend erwähnt wurde, kann der Hypervisor 102 beispielsweise auf der Grundlage der Anzahl der Zuwiderhandlungen, des von dem Gast-Betriebssystem in Anspruch genommenen Prozentsatzes seines zugewiesenen Zeitblocks, der Art der Prozesse, die das Gast-Betriebssystem gerade ausführt, usw. feststellen, dass das Gast-Betriebssystem ein gefährliches Betriebssystem ist. Wenn der Hypervisor 102 feststellt, dass das Gast-Betriebssystem kein gefährliches Betriebssystem ist, weist der Hypervisor 102 dem Gast-Betriebssystem im Schritt 408 dann zusätzliche Invalidierungsguthaben zu. Der Hypervisor 102 kann auch einen Zähler erhöhen, der die Anzahl der Zuwiderhandlungen für das Gast-Betriebssystem erfasst. Wenn der Hypervisor 102 feststellt, dass das Gast-Betriebssystem ein gefährliches Betriebssystem ist, nimmt der Hypervisor 102 im Schritt 410 den restlichen Zeitblock des Gast-Betriebssystems weg (oder verringert ihn). Im Schritt 412 stellt der Hypervisor 102 das Gast-Betriebssystem unter Quarantäne. Im Schritt 414 benachrichtigt der Hypervisor 102 einen Systemadministrator.
-
5 zeigt ein Datenverarbeitungssystem 500 gemäß einer Ausführungsform, das so konfiguriert ist, dass es ein paralleles Nullsetzen des Arbeitsspeichers durchführt. Wie gezeigt ist, enthält das Datenverarbeitungssystem 500, ohne darauf beschränkt zu sein, eine zentrale Verarbeitungseinheit (CPU) 505, eine Netzschnittstelle 515, einen Arbeitsspeicher 520 und einen Massenspeicher 560, die jeweils mit einem Bus 517 verbunden sind. Das Datenverarbeitungssystem 500 kann auch eine E/A-Einheitenschnittstelle 510 enthalten, die E/A-Einheiten 512 (z. B. Tastatur-, Maus- und Anzeigeeinheiten) mit dem Datenverarbeitungssystem 500 verbindet. Im Kontext dieser Offenbarung können die in dem Datenverarbeitungssystem 500 gezeigten Datenverarbeitungselemente überdies einem physischen Datenverarbeitungssystem (z. B. einem System in einem Rechenzentrum) entsprechen oder sie können eine virtuelle Datenverarbeitungsinstanz sein, die in einer Datenverarbeitungs-Cloud ausgeführt wird.
-
Die CPU 505 ruft im Arbeitsspeicher 520 gespeicherte Programmieranweisungen ab und führt sie aus und sie speichert und ruft Anwendungsdaten ab, die sich im Arbeitsspeicher 520 befinden. Die Verbindung 517 dient zur Übertragung von Programmieranweisungen und Anwendungsdaten zwischen der CPU 505, der E/A-Einheitenschnittstelle 510, dem Massenspeicher 560, der Netzschnittstelle 515 und dem Arbeitsspeicher 520. Es sei angemerkt, dass die CPU 505 stellvertretend für eine einzelne CPU, mehrere CPUs, eine einzelne CPU mit mehreren Verarbeitungskernen und dergleichen enthalten ist. Der Arbeitsspeicher 520 ist im Allgemeinen stellvertretend für einen Direktzugriffsspeicher enthalten. Bei dem Massenspeicher 560 kann es sich um eine Plattenlaufwerk-Speichereinheit handeln. Obgleich er als eine einzelne Einheit gezeigt ist, kann es sich bei dem Massenspeicher 560 um eine Kombination aus fest installierten und/oder auswechselbaren Speichereinheiten, wie zum Beispiel Festplattenlaufwerken, auswechselbaren Speicherkarten oder optischem Speicher, an das Netz angeschlossenem Speicher (network attached storage (NAS)) oder aber um ein Speicherbereichsnetz (storage area-network (SAN)) handeln.
-
Zum Zweck der Veranschaulichung enthält der Arbeitsspeicher 520 die VMs 522A bis 522N, einen Hypervisor 528 und einen TLB 532. Jede VM 522 enthält ein Gast-Betriebssystem 524 und eine Invalidierungskomponente 526. Wie vorstehend erwähnt wurde, macht das Gast-Betriebssystem 524 TLB-Einträge im TLB 532 mit Hilfe der Invalidierungskomponente 526 ungültig. Der Hypervisor 528 enthält eine Quarantänekomponente 530. Der Hypervisor 528 verwendet die Quarantänekomponente 530, um das Gast-Betriebssystem 524, das TLB-Einträge über die Invalidierungskomponente 526 ungültig machen kann, zu erkennen und/oder daran zu hindern, eine Bedrohung für andere Gast-Betriebssysteme in dem Datenverarbeitungssystem 500 darzustellen. In manchen Ausführungsformen stellen die Invalidierungskomponente 526 und die Quarantänekomponente 530 im Allgemeinen Logik dar (z. B. eine Software-Anwendung, die Firmware einer Einheit, eine anwendungsspezifische integrierte Schaltung (ASIC) usw.), die so konfiguriert ist, dass sie eine oder mehrere hier aufgezeigten Techniken umsetzt.
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung erfolgten zum Zweck der Veranschaulichung, erheben jedoch keinen Anspruch auf Vollständigkeit und sind auch nicht als auf die offenbarten Ausführungsformen beschränkt zu verstehen. Viele Ab- und Veränderungen sind für den Fachmann erkennbar, ohne vom Umfang und Wesen der beschriebenen Ausführungsformen abzuweichen. Die hier verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt befindlicher Technologien am besten zu erklären oder um anderen Fachleuten das Verständnis der hier offenbarten Ausführungsformen zu ermöglichen.
-
Im Folgenden wird Bezug auf in dieser Offenbarung aufgezeigte Ausführungsformen genommen. Der Umfang der vorliegenden Offenbarung ist jedoch nicht auf bestimmte beschriebene Ausführungsformen beschränkt. Vielmehr wird jede beliebige Kombination der folgenden Merkmale und Elemente, ungeachtet dessen, ob sie sich auf verschiedene Ausführungsformen beziehen oder nicht, als eine Kombination erwogen, welche in Betracht gezogene Ausführungsformen implementiert und in die Praxis umsetzt. Zwar können hier offenbarte Ausführungsformen Vorteile gegenüber anderen möglichen Lösungen oder gegenüber dem Stand der Technik erzielen, doch stellt die Frage, ob ein bestimmter Vorteil von einer bestimmten Ausführungsform erzielt wird oder nicht, überdies keine Einschränkung des Umfangs der vorliegenden Offenbarung dar. Die folgenden Aspekte, Merkmale, Ausführungsformen und Vorteile dienen somit lediglich der Veranschaulichung und werden nicht als Elemente oder Einschränkungen der beigefügten Ansprüche betrachtet, soweit dies in einem oder in mehreren Ansprüchen nicht ausdrücklich anders angegeben ist. Ebenso ist die Bezugnahme auf ”die Erfindung” nicht als Verallgemeinerung eines beliebigen hier offengelegten Erfindungsgegenstands auszulegen und nicht als ein Element oder eine Beschränkung der beigefügten Ansprüche zu betrachten, soweit dies in einem oder in mehreren Ansprüchen nicht ausdrücklich anders angegeben ist.
-
Aspekte der vorliegenden Erfindung können die Form einer ganz in Hardware realisierten Ausführungsform, einer ganz in Software realisierten Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software und Hardware-Aspekte kombiniert, die hier alle allgemein als eine ”Schaltung”, ein ”Modul” oder ein ”System” bezeichnet werden können.
-
Bei der vorliegenden Offenbarung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein von einem Computer lesbares Speichermedium (oder Speichermedien) beinhalten, auf dem sich von einem Computer lesbare Programmanweisungen befinden, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Offenbarung umzusetzen.
-
Das von einem Computer lesbare Speichermedium kann eine physisch greifbare Einheit sein, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit aufnehmen und speichern kann. Das von einem Computer lesbare Speichermedium kann zum Beispiel, ohne darauf beschränkt zu sein, eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder eine beliebige geeignete Kombination des Vorstehenden sein. Eine Liste mit genaueren Beispielen für das von einem Computer lesbare Speichermedium, die keinen Anspruch auf Vollständigkeit erhebt, beinhaltet die folgenden Beispiele: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flashspeicher), einen statischen Direktzugriffsspeicher (SRAM), einen tragbaren Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine digitale vielseitig verwendbare Disk (DVD), einen Speicherstick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhöhte Strukturen in einer Rille mit darauf aufgezeichneten Anweisungen sowie jede beliebige geeignete Kombination des Vorstehenden. Ein von einem Computer lesbares Speichermedium in der hier verwendeten Weise ist nicht so auszulegen, dass es sich dabei um kurzzeitige Signale an sich, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich über einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z. B. Lichtimpulse, die durch ein Lichtwellenleiterkabel geleitet werden), oder elektrische Signale, die über ein Kabel übertragen werden, handelt.
-
Von einem Computer lesbare Programmanweisungen, die hier beschrieben sind, können von einem Speichermedium, das von einem Computer gelesen werden kann, auf entsprechende Rechen-/Verarbeitungseinheiten oder über ein Netzwerk, zum Beispiel das Internet, ein lokales Netz, ein Weitverkehrsnetz und/oder ein drahtloses Netz, auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenleiter, drahtlose Übertragung, Router, Firewalls, Vermittlungsstellen (Switches), Gateway-Rechner und/oder Edge-Server aufweisen. Eine Netzadapterkarte oder Netzschnittstelle in jeder Rechen-/Verarbeitungseinheit empfängt von einem Computer lesbare Programmanweisungen von dem Netzwerk und leitet die von einem Computer lesbaren Programmanweisungen weiter, um sie in einem von einem Computer lesbaren Speichermedium in der jeweiligen Rechen-/Verarbeitungseinheit zu speichern.
-
Bei den von einem Computer lesbaren Programmanweisungen zur Durchführung von Operationen der vorliegenden Offenbarung kann es sich um Assembler-Anweisungen, Anweisungen der Befehlssatzarchitektur (ISA), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, Zustandseinstellungsdaten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen einschließlich einer objektorientierten Programmiersprache, wie beispielsweise Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache ”C” oder in ähnlichen Programmiersprachen geschrieben sind. Die von einem 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 fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers über jede beliebige Art eines Netzwerks einschließlich eines lokalen Netzes (LAN) oder eines Weitverkehrsnetzes (WAN) verbunden sein oder die Verbindung kann zu einem externen Computer (zum Beispiel über das Internet mittels eines Internet-Dienstanbieters) hergestellt werden. In manchen Ausführungsformen können elektronische Schaltungen, zu denen beispielsweise programmierbare Logikschaltkreise, kundenprogrammierbare Universalschaltkreise (FPGA) oder programmierbare logische Anordnungen (PLA) gehören, die von einem Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der von einem Computer lesbaren Programmanweisungen verwenden, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Offenbarung umzusetzen.
-
Aspekte der vorliegenden Offenbarung werden hier mit Bezug auf Darstellungen in Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es versteht sich, dass jeder Block der Darstellungen in den Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen aus Blöcken in den Darstellungen der Ablaufpläne und/oder den Blockschaubildern von Programmanweisungen, die von einem Computer gelesen werden können, realisiert werden können.
-
Diese von einem Computer lesbaren Programmanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind. Diese von einem Computer lesbaren Programmanweisungen können auch in einem von einem Computer lesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass das von dem Computer lesbare Speichermedium, das über darin gespeicherte Anweisungen verfügt, einen Herstellungsgegenstand aufweist, der Anweisungen enthält, die Aspekte der Funktion/des Vorgangs umsetzen, welche beziehungsweise welcher in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
-
Die von einem Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder auf eine andere Einheit geladen werden, um die Durchführung einer Reihe von Betriebsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder auf einer anderen Einheit zu bewirken, um einen von einem Computer ausgeführten Prozess zu erzeugen, so dass die Anweisungen, die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführt werden, die Funktionen/Vorgänge ausführen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
-
Die Ablaufpläne und die Blockschaubilder in den Figuren zeigen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung. In dieser Hinsicht kann jeder Block in den Ablaufplänen oder in den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, das beziehungsweise der einen oder mehrere ausführbare Anweisungen zur Ausführung der angegebenen logischen Funktionen) aufweist. In manchen alternativen Ausführungsarten treten die in dem Block angegebenen Funktionen gegebenenfalls nicht in der in den Figuren angegebenen Reihenfolge auf. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können zuweilen in der umgekehrten Reihenfolge ausgeführt werden. Man wird auch feststellen, dass jeder Block der Blockschaubilder und/oder der Darstellung in den Ablaufplänen sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder der Darstellung in den Ablaufplänen von Systemen, die auf Spezial-Hardware beruhen und die angegebenen Funktionen oder Vorgänge oder Kombinationen aus Anweisungen von Spezial-Hardware und Computer-Anweisungen durchführen, realisiert werden können.
-
Ausführungsformen der vorliegenden Offenbarung können Endbenutzern über eine Cloud-Computing-Infrastruktur bereitgestellt werden. Cloud-Computing bezieht sich im Allgemeinen auf die als ein Dienst über ein Netzwerk erfolgende Bereitstellung von skalierbaren Datenverarbeitungsressourcen. Formaler ausgedrückt, Cloud-Computing kann als eine Möglichkeit der Datenverarbeitung definiert werden, die eine Abstraktion zwischen der Datenverarbeitungsressource und ihrer zugrunde liegenden technischen Architektur (z. B. Server, Massenspeicher, Netzwerke) darstellt, was einen komfortablen, bedarfsweisen Netzzugriff auf einen gemeinsam genutzten Bestand an konfigurierbaren Datenverarbeitungsressourcen ermöglicht, die schnell bereitgestellt und mit minimalem Verwaltungsaufwand oder Zutun eines Dienstanbieters freigegeben werden können. Folglich ermöglicht das Cloud-Computing einem Benutzer den Zugriff auf virtuelle Datenverarbeitungsressourcen (z. B. Massenspeicher, Daten, Anwendungen und sogar vollständige virtualisierte Datenverarbeitungssysteme) in ”der Cloud”, ohne Rücksicht auf die zugrunde liegenden physischen Systeme (oder Standorte dieser Systeme), die zur Bereitstellung der Datenverarbeitungsressourcen verwendet werden.
-
Während sich das Vorstehende auf Ausführungsformen der vorliegenden Offenbarung bezieht, können andere und weitere Ausführungsformen der Erfindung entworfen werden, ohne vom grundlegenden Umfang der Erfindung abzuweichen, und der Umfang der Erfindung wird von den Ansprüchen, die folgen, festgelegt.