-
HINTERGRUND DER ERFINDUNG
-
Die vorliegende Erfindung bezieht sich im Allgemeinen auf das Gebiet von Datenverarbeitungssystemen und im Besonderen auf ein Verfahren, System und Computerprogrammprodukt zum gemeinsamen Nutzen von Arbeitsspeicher durch zwei virtualisierte Systeme, die auf einem Datenverarbeitungssystem ausgeführt werden.
-
Ein virtualisiertes Datenverarbeitungssystem kann mehrere Ansichten von realen und emulierten Ressourcen des Verarbeitungssystems bereitstellen. Eine solche Ansicht kann als virtuelle Maschinen oder so genannte Gäste realisiert werden. Jeder Gast funktioniert unabhängig von anderen Gästen als ein separates virtuelles Datenverarbeitungssystem. Die Komponente, welche die Ansicht von unabhängigen Datenverarbeitungssystemen bereitstellt, wird als ein Hypervisor bezeichnet. Zu den Aufgabenbereichen des Hypervisor zählen Ressourcenverwaltung, gegebenenfalls Emulieren sowie Isolieren der Gäste voneinander.
-
Gelegentlich müssen Gäste bei einer Aufgabe zusammenarbeiten, z. B. wenn ein Gast Daten für einen weiteren Gast analysieren soll. Für diese Datenübertragung werden im Allgemeinen Daten zwischen zwei Gästen über ein virtuelles Netzwerk kopiert. Auf diese Weise können bekannte Programmierungsparadigmen unterstützt werden. Dessen ungeachtet lässt sich bei diesem Ansatz ein hohes Maß an Sicherheit und Isolierung von Gästen erreichen.
-
KURZDARSTELLUNG
-
Ausführungsformen der vorliegenden Erfindung offenbaren ein Verfahren zum gemeinsamen Nutzen von Arbeitsspeicher durch einen ersten Gast und einen zweiten Gast, die beide auf einem Datenverarbeitungssystem ausgeführt werden. Das Verfahren kann einen oder mehrere Computerprozessoren beinhalten, die einem ersten Gast eine virtuelle Einheit bereitstellen, um Arbeitsspeicherzugriffe durch den ersten Gast und einen zweiten Gast zu vermitteln, wobei der erste Gast und der zweite Gast zusammengehören und wobei der erste Gast ein erstes Betriebssystem ausführt und der zweite Gast ein zweites Betriebssystem ausführt. Der eine oder die mehreren Computerprozessoren senden eine oder mehrere einheitenbezogene Funktionen an den zweiten Gast, wobei die virtuelle Einheit ein gemeinsames Nutzen von Arbeitsspeicher durch den ersten Gast und den zweiten Gast ermöglicht.
-
Gemäß einer Ausführungsform ist die virtuelle Einheit mit einer Semantik einer PCI-Einheit (Peripheral Component Interconnect) konfiguriert. Gemäß einer Ausführungsform weist das Verfahren des Weiteren ein Anpassen eines Basisadressregisters der virtuellen Einheit durch den einen oder die mehreren Computerprozessoren auf, um Zeiger des ersten Gasts in Zeigerpositionen in dem zweiten Gast umzusetzen. Gemäß einer Ausführungsform weist das Verfahren des Weiteren auf, durch den einen oder die mehreren Computerprozessoren einen Zugriff auf den zweiten Gast durch eine Anforderungswarteschlange einer Planungseinheit in dem zweiten Betriebssystem zu steuern. Gemäß einer Ausführungsform weist das Verfahren des Weiteren auf, durch den einen oder die mehreren Computerprozessoren über den Hypervisor Daten zur statistischen Verwendung von Funktionen des zweiten Gasts bereitzustellen.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein Systemschaubild einer Umgebung, in der ein Verfahren gemäß einer Ausführungsform der Erfindung realisiert ist;
-
2 ist ein Ablaufplan eines beispielhaften Prozesses des Verfahrens zum gemeinsamen Nutzen von Arbeitsspeicher durch einen ersten Gast und einen zweiten Gast gemäß einer Ausführungsform der Erfindung; und
-
3 ist eine beispielhafte Ausführungsform eines Datenverarbeitungssystems zum Ausführen des Verfahrens gemäß der Erfindung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In den Zeichnungen werden gleiche Elemente durch gleichlautende Bezugsziffern kenntlich gemacht. Die Zeichnungen sind lediglich schematische Darstellungen und sollen keine spezifischen Parameter der Erfindung abbilden. Darüber hinaus sollen die Zeichnungen lediglich typische Ausführungsformen der Erfindung abbilden und sind daher nicht als Beschränkung des inhaltlichen Umfangs der Erfindung zu verstehen.
-
Die hier beschriebenen veranschaulichenden Ausführungsformen stellen ein Verfahren, System und Computerprogrammprodukt zum gemeinsamen Nutzen von Arbeitsspeicher durch Gäste bereit. Die veranschaulichenden Ausführungsformen werden hier mitunter anhand bestimmter Technologien beschrieben, die lediglich zu Beispielzwecken für die bessere Verständlichkeit der Beschreibung dienen. Die veranschaulichenden Ausführungsformen können zum gemeinsamen Nutzen von Arbeitsspeicher durch einen ersten Gast und einen zweiten Gast verwendet werden, wobei der erste Gast ein erstes Betriebssystem ausführt und der zweite Gast ein zweites Betriebssystem ausführt und wobei die beiden Betriebssysteme dasselbe oder auch unterschiedliche Betriebssysteme sein können.
-
In einem virtuellen System wird sowohl eine auf dem ersten Gast ausgeführte Anwendung als auch eine auf dem zweiten Gast ausgeführte Anwendung durch denselben Hypervisor (d. h. dieselbe physische Maschine) bereitgestellt. Gemäß einer Ausführungsform der Erfindung wird ein Mechanismus bereitgestellt, um Daten durch die beiden Gäste gemeinsam zu nutzen, so dass der zweite Gast Daten des ersten Gastes verarbeiten kann.
-
Der erste Gast kennzeichnet die Daten, die der zweiten Anwendung verfügbar gemacht werden sollen, und ruft die zweite Anwendung auf dem zweiten Gast auf. Die Daten für diesen Aufruf werden durch den Hypervisor für einen sofortigen Zugriff in den Adressraum der zweiten Anwendung abgebildet. Während der Verarbeitung nimmt die zweite Anwendung die Ressourcen des zweiten Gasts (z. B. CPU, Arbeitsspeicher, E/A) in Anspruch und greift dabei dennoch direkt auf die Daten zu, die von dem ersten Gast bereitgestellt werden. Die Adressumsetzung der bereitgestellten Daten ermöglicht eine Programmierung von zweiten Anwendungen mittels höherer Programmiersprachen.
-
In jüngster Zeit werden bei der Entwicklung rechenintensive Teile der Anwendungen in Betriebssysteme mit geringem Mehraufwand verschoben, um eine kosteneffektivere Berechnung durchzuführen. Gemäß dem vorgeschlagenen Verfahren lassen sich Kopieroperationen für ein Verschieben einer speicherinternen Datenstruktur von einem Betriebssystem in ein weiteres Betriebssystem vermeiden. Mechanismen wie ein Prozedur-Fernaufruf (Remote Procedure Call, RPC), TCP/IP-Sockets und sogar ein direkter Speicherfernzugriff (Remote Direct Memory Access, RDMA), die Latenzzeiten verursachende Kopieroperationen durchführen müssen, sind dabei unnötig.
-
Das Vermeiden dieses Mehraufwands führt zu einer wesentlich besseren Gesamtleistung einer Anwendung. Eine Funktionskapselung ist möglich, ohne dass wesentliche Änderungen an einem Betriebssystem oder an der Anwendung vorgenommen werden müssen. Beim gemeinsamen Nutzen von Arbeitsspeicher gemäß einer Ausführungsform der Erfindung entsteht kein Mehraufwand für die Datenübertragung. Die Menge an gemeinsam genutzten Daten ist für einen Aufruf von Dienstfunktionen nicht leistungsrelevant, da für ein gemeinsames Nutzen von Arbeitsspeicher keine Kopieroperationen benötigt werden. Ein gemeinsames Nutzen von Arbeitsspeicher kann durch einen Funktionsaufruf von einem Gast an einen weiteren Gast realisiert werden.
-
1 stellt ein Systemschaubild einer Umgebung dar, in der ein Verfahren gemäß einer Ausführungsform der Erfindung realisiert ist. Das Systemschaubild zeigt einen ersten Gast 10 und einen zweiten Gast 20, die in 1 als deren Arbeitsspeicherregionen abgebildet sind, wobei ein Hypervisor 30 sowohl dem ersten Gast 10 als auch dem zweiten Gast 20 zugewiesen ist und wodurch der erste Gast 10 und der zweite Gast 20 zusammengehören. Der erste Gast 10 führt ein erstes Betriebssystem 12 wie z. B. ein gemeinsames Großrechner-Betriebssystem mit einer ersten Anwendung 16 aus, die anwendungsspezifische Daten 15 enthält. Das erste Betriebssystem 12 kann einen Kern beinhalten, der Anwendungen auf dem zweiten Gast 20 ermitteln kann. Der zweite Gast 20 führt ein zweites Betriebssystem 22, z. B. Linux®, mit einer zweiten Anwendung 26 wie zum Beispiel einer AAC-Anwendung (Application Assist Cartridge) aus 1 aus, die jedoch für jeden beliebigen Analysealgorithmus stehen kann. Die zweite Anwendung 26 wird als eine Anwendung eines Benutzeradressbereich-Codes 28 des zweiten Gasts 20 ausgeführt. Ein Hypervisor 30 enthält ein Verwaltungsmodul 32 für alle Aufgaben in Zusammenhang mit einer Zusammenarbeit. Das Anwendungsverwaltungsmodul 32 kann die Interaktion zwischen dem ersten Gast 10 und dem zweiten Gast 20 bezüglich der Verwendung von Dienstfunktionen und Anwendungen wie z. B. der AAC-Anwendung verwalten. Mit einem Systemaufruf 40 (SYSCALL) kann die zweite Anwendung 26 bei dem zweiten Betriebssystem 22 registriert werden.
-
Das vorgeschlagene Verfahren zum gemeinsamen Nutzen von Arbeitsspeicher durch den ersten Gast 10 und den zweiten Gast 20 wird für die Daten 15 des ersten Gasts 10 verwendet, die durch den zweiten Gast 20 verwendet und verarbeitet werden sollen, ohne dass die Daten 15 in physischer Form in den zweiten Gast 20 kopiert werden müssen. Anstelle dessen kann die zweite Anwendung 26 die Daten 15 verarbeiten, indem sie einen Funktionsaufruf von dem ersten Gast 10 an den zweiten Gast 20 verwendet, der einige Dienste der zweiten Anwendung 26 wie z. B. AAC-Dienstfunktionen anfordert.
-
Gemäß dem vorgeschlagenen Verfahren stellt der Hypervisor 30 der virtuellen Einheit 14 einen direkten Arbeitsspeicherzugriff bereit. Danach kann der erste Gast 10 der virtuellen Einheit 14 die Arbeitsspeicherregionen mit den Daten 15 bekannt geben und damit beginnen, einheitenspezifische Funktionen für die Daten aufzurufen. Im Anschluss daran kann der Hypervisor 30 die zuvor bekannt gegebenen Arbeitsspeicherregionen zusätzlich zu den bereits verfügbaren Arbeitsspeicherregionen des zweiten Gasts 20 abbilden und einheitenbezogene Funktionen an den zweiten Gast 20 senden. Auf diese Weise können der erste Gast 10 und der zweite Gast 20 den Arbeitsspeicher über die virtuelle Einheit 14 gemeinsam nutzen, da die virtuelle Einheit 14 Arbeitsspeicherzugriffe durch den ersten Gast 10 und den zweiten Gast 20 vermitteln kann.
-
Die virtuelle Einheit 14 kann mit einer Semantik für eine PCI-Einheit konfiguriert sein. Somit können Arbeitsspeicherregionen für die Verwendung bekannt gegeben werden. Es gibt Register zum Weiterleiten von Daten zu Berechnungszwecken und für Zeiger auf Arbeitsspeicherregionen. Für einen Abschluss und für Fehler während des Betriebs können Unterbrechungsmechanismen verwendet werden.
-
Somit können die Dienste der zweiten Anwendung 26 in der Art eines gemeinsam genutzten externen Platzes verwendet werden, wobei die Funktionalität der zweiten Anwendung 26 durch die erste Anwendung 16 verwendet werden soll und wobei die zweite Anwendung 26 die Daten 15 der ersten Anwendung 16 verarbeiten und die Daten 15 modifizieren kann. Auf diese Weise wird die Funktionalität des Codes der zweiten Anwendung 26 den Daten 15 der ersten Anwendung 16 zur Verfügung gestellt.
-
Wenn die Dienstfunktionen der zweiten Anwendung 26 mit Arbeitsspeicherregionen arbeiten, kann der Code der Dienstfunktionen beim Zugriff auf Arbeitsspeicherregionen Definitionen enthalten. Kompilierer/spezielle Datenstrukturen können Adressen in Zugriffe auf Arbeitsspeicherregionen umsetzen. Der Code realisiert des Weiteren eine Zeigerarithmetik innerhalb der Arbeitsspeicherregion. Der zweite Gast 20 erhält einen Basis-Offset für die Arbeitsspeicherregion, der durch den ersten Gast 10 übergangen wird.
-
Ein Basisadressregister der virtuellen Einheit 14 kann so gestaltet sein, dass Zeiger des ersten Gasts 10 in Zeigerpositionen des zweiten Gasts 20 umgesetzt werden, um korrekte Arbeitsspeicherdaten zu verwenden. Dies kann zum Beispiel durch eine C++-Kapselung des Datentyps oder durch eine Änderung einer Kompilierer-Zeigerarithmetik von Daten auf Grundlage der Arbeitsspeicherregion realisiert werden.
-
Ein Zugriff auf den zweiten Gast 20 kann durch eine Anforderungswarteschlange der Planungseinheit 24 in dem zweiten Betriebssystem 22 gesteuert werden. Dies kann nützlich sein, wenn eine Anzahl von Gästen in einem Datenverarbeitungssystem betrieben wird, wobei eine Anzahl von Diensten bekannt gegeben wird. Die Planungseinheit 24 kann als Teil eines Kerns des zweiten Betriebssystems 22 betrieben werden.
-
Ein Abbilden des Arbeitsspeichers des ersten Gasts 10 lässt sich als eine Nur-Lese-Abbildung realisieren, so dass der zweite Gast 20 die Daten 15 nur lesen kann und nur der erste Gast 10 in die Daten 15 schreiben darf. Dies kann für sicherheitsrelevante Systeme wichtig werden. Der Schreibschutz für den Arbeitsspeicherbereich des zweiten Gasts 20 kann durch den ersten Gast 10 angefordert und durch den Hypervisor 30 durchgesetzt werden.
-
Der Hypervisor 30 kann Daten zur statistischen Nutzung von Funktionen des zweiten Gasts 20 bereitstellen. Hierzu sammelt die Verwaltungsfunktion des Hypervisors 30 Nutzungsdaten von allen Diensten und Gästen, die an der Nutzung von Daten und Diensten beteiligt sind. Diese Daten können zu Fakturierungszwecken, zum Überwachen, zum Verfolgen bei einer Fehlersuche, zum Protokollieren und für Ähnliches verwendet werden.
-
2 stellt einen Ablaufplan eines beispielhaften Prozesses des Verfahrens zum gemeinsamen Nutzen von Arbeitsspeicher durch den ersten Gast 10 und den zweiten Gast 20 gemäß einer Ausführungsform der Erfindung dar. Die Daten 15 können durch die auf dem ersten Gast 10 ausgeführte erste Anwendung 16 und die auf dem zweiten Gast 20 ausgeführte zweite Anwendung 26 gemeinsam genutzt werden, wobei dies die in 2 beschriebenen Schritte aufweist.
-
Zunächst wird in Schritt S200 die auf dem zweiten Gast 20 ausgeführte zweite Anwendung 26 bei dem zweiten Betriebssystem 22 registriert, um Dienstfunktionen bereitzustellen, die durch andere Einheiten aufgerufen werden können. Die zweite Anwendung 26, z. B. die AAC-Anwendung, des zweiten Gasts 20 gibt die Dienstfunktionen zusammen mit einem Kennzeichnungs-Token durch einen Systemaufruf bekannt. Ein Kern des zweiten Betriebssystems 22 weiß dann, dass die Dienstfunktionen von der zweiten Anwendung 26 verarbeitet werden. Die zweite Anwendung 26 gibt durch einen Blockierungssystemaufruf 40 ihre Bereitschaft bekannt, eine Dienstfunktion zu verarbeiten: Der Code der zweiten Anwendung 26 wird nicht weiter ausgeführt, sondern wird so lange blockiert, bis der Kern mit einer Rückgabe von dem Systemaufruf 40 (ausgelöst durch ein externes Ereignis) die zweite Anwendung 16 erneut einplant. Etwaige Planungsmerkmale für diese Dienstfunktion, z. B. auf welchen Prozessoren sie ausgeführt wird oder welche Priorität zu verwenden ist, werden aus den Attributen der zweiten Anwendung 26 erhalten. Wenn mehrere Instanzen einer Dienstfunktion parallel verarbeitet werden sollen, können mehrere Threads den Blockierungssystemaufruf 40 ausgeben. Wenn verschiedene Dienste der Dienstfunktion angeboten werden sollen, können mehrere Prozesse diese Logik auf einer Grundlage pro AAC-Anwendung ausführen.
-
Als Nächstes gibt in Schritt S202 das zweite Betriebssystem 22 dem Hypervisor 30 die Verfügbarkeit der Dienstfunktionen bekannt. Für einen weiteren Nutzer dieses Dienstes wird durch den Hypervisor 30 eine spezielle paravirtualisierte Unterbrechung in den zweiten Gast 20 eingebracht, sobald der Nutzer eine Ausführung dieser Dienstfunktion anfordert. Bei einer Ausführungsform registriert das zweite Betriebssystem 22 für Dienstfunktionen wie z. B. AAC-Anforderungen eine Unterbrechungsroutine bei dem Hypervisor 30. Der Kern des zweiten Betriebssystems 22 verwendet einen Hypervisor-Aufruf, z. B. einen paravirtualisierten Befehl, um eine Verfügbarkeit bekannt zu geben. Sobald die zweite Anwendung 26 die Dienstfunktion als beendigt erklärt oder wenn die zweite Anwendung 26 beendet wird, widerruft der Kern die Dienstfunktionsbekanntgabe von dem Hypervisor 30.
-
In Schritt S204 gibt der Hypervisor 30 dem ersten Gast 10 die Dienstfunktionen bekannt. Der Hypervisor 30 akzeptiert die Dienstfunktionsregistrierung von dem zweiten Betriebssystem 22 und bietet die AAC-Anwendung einigen oder allen anderen Gästen an. Andere Gäste können eine Prüfung auf aktive Dienstfunktionen durchführen oder Abfragen aktiver Dienstfunktionen übertragen und diese in Anspruch nehmen. Richtlinien, Isolierung/Multi-Tenant-Funktionalität, Rückstand, Prioritäten und Zugangsbeschränkungen können angewendet werden. Zum Realisieren des Registrierungs- und Ermittlungsmechanismus kann ein standardmäßiges Dienstpositionsprotokoll verwendet werden.
-
Als Nächstes stellt in Schritt S206 die auf dem ersten Gast 10 ausgeführte erste Anwendung 16 fest, dass die Dienstfunktionen verfügbar sind, indem sie die Bekanntgabe durch den Hypervisor 30 erkennt. Dabei können die durch Schritt S204 bereitgestellten Dienstpositionsmechanismen verwendet werden. Wenn der erste Gast 10 eine Dienstfunktion nutzen möchte, kann der erste Gast 10 den Hypervisor 30 darum bitten, die Dienstfunktion zur Verfügung zu stellen. Wenn das erste Betriebssystem 12 des ersten Gasts 10 die Dienstfunktion zuerst ermittelt hat, kann das erste Betriebssystem 12 seinen Anwendungen eine Ermittlung ermöglichen. Der Hypervisor 30 stellt die Dienstfunktion als virtuelle (PCI-)Einheit 14 zur Verfügung, z. B. indem er die virtuelle Einheit 14 mittels Hot-Plugging dem ersten Gast 10 zur Verfügung stellt. Optional kann das erste Betriebssystem 12 den Benutzeradressbereich-Zugriff auf Dienstfunktionen beschränken.
-
In Schritt S208 fordert die erste Anwendung 16 die Dienstfunktionen von dem Hypervisor 30 an. Parameter von der ersten Anwendung 16 können als Wertparameter („Übergabe per Wert”) an den zweiten Gast 20 weitergeleitet werden. Die erste Anwendung 16 gibt eine Rückruffunktion bekannt, die bei Abschluss der Dienstfunktion aufgerufen werden soll. Die erste Anwendung 16 kann Regionen ihres Arbeitsspeicherbereichs für einen direkten Zugriff durch die Dienstfunktion bekannt geben. Die erste Anwendung 16 ruft den Dienst der Dienstfunktion asynchron auf, d. h., der Systemaufruf 40 wirkt nicht blockierend, die erste Anwendung 16 wird weiter ausgeführt, und die erste Anwendung 16 wird benachrichtigt, d. h., mit einer zuvor registrierten Rückruffunktion zurückgerufen, wenn die Dienstfunktion abgeschlossen ist. Das erste Betriebssystem 12 leitet die Dienstfunktionsanforderung an den Hypervisor 30 weiter.
-
Danach informiert der Hypervisor 30 in Schritt S210 den zweiten Gast 20 über die Anforderung der Dienstfunktionen durch die erste Anwendung 16. Der Hypervisor 30 stellt die virtuelle Einheit 14 bereit. Die virtuelle Einheit 14 enthält einen Bezeichner der angeforderten Dienstfunktion und Wertparameter, z. B. in einem Konfigurationsbereich. Die virtuelle Einheit 14 stellt auch Basisadressregister bereit, mit denen der zweite Gast 20 direkt auf den Arbeitsspeicher der ersten Anwendung 16 zugreifen kann. Das Hypervisor 30 bildet den bekannt gegebenen Arbeitsspeicher des ersten Gasts 10 auf den Arbeitsspeicher des zweiten Gasts 20 ab. Das Basisadressregister kann einen Offset der Arbeitsspeicherregion in dem Adressraum der ersten Anwendung 16 beinhalten.
-
Als Nächstes stellt in Schritt S212 das zweite Betriebssystem 22 des zweiten Gasts 20 fest, dass die Anforderung von Dienstfunktionen durch den Hypervisor 30 für die erste Anwendung 16 erfolgt ist, indem es die spezielle paravirtualisierte Unterbrechung empfängt. Das zweite Betriebssystem 22 kann dann nach verfügbaren Dienstfunktionsprozessen suchen, d. h. Prozesse blockieren, die für eine Verarbeitung der Dienstfunktion bereit sind. Wenn keine Prozesse gefunden werden, jedoch ein Dienst einer Dienstfunktion vorhanden ist, kann die Dienstfunktion für eine spätere Verarbeitung in eine Warteschlange gestellt werden. Anschließend bildet das zweite Betriebssystem 22 die der Dienstfunktionsanforderung zugehörigen Arbeitsspeicherregionen auf den Adressraum des Prozesses ab, der die Dienstfunktion verarbeiten wird. Das zweite Betriebssystem 22 gibt außerdem dem Dienstfunktionsprozess des zweiten Gasts 20 die Basisadresse und Größe des Arbeitsspeichers des ersten Gasts 10 bekannt. Das zweite Betriebssystem 22 stellt dem AAC-Prozess Dienstfunktionsparameter bereit und plant nach einer Rückgabe von seinem Blockierungssystemaufruf 40 den Dienstfunktionsprozess ein.
-
In Schritt S214 verarbeitet die zweite Anwendung 26 die Anforderung von der ersten Anwendung 16. Die Berechnung läuft so lange, bis die Dienstfunktionsanforderung abgeschlossen ist. Die exportierte Arbeitsspeicherregion der ersten Anwendung 16 wird durch den Hypervisor 30 auf einen Prozessadressraum der zweiten Anwendung 26 abgebildet. Ein Basisadressregister bestimmt einen Offset der Arbeitsspeicherregion in dem Adressraum der ersten Anwendung 16. Mit seiner Hilfe kann Zeigern gefolgt werden. Das Dereferenzieren der Zeiger kann entweder implizit mittels Kompilierer-Unterstützung oder explizit anhand eines spezifischen Codes z. B. über Bibliotheken erfolgen. Mach erfolgtem Abschluss gibt der Dienstfunktionscode mögliche Rückgabedaten (Übergabe per Wert) in Einheitenregistern der virtuellen Einheit 14 zurück. Zusätzlich können direkte Aktualisierungen des Arbeitsspeichers des ersten Gasts 10 stattgefunden haben. Der Dienstfunktionsprozess kann das zweite Betriebssystem 22 über eine erneute Verfügbarkeit einer Fähigkeit zur Verarbeitung einer Dienstfunktion informieren oder den Dienst der Dienstfunktion für diese Kennung beenden.
-
Als Nächstes benachrichtigt in Schritt S216 das zweite Betriebssystem 22 des zweiten Gasts 20 den Hypervisor 30 über den Abschluss der Anforderung. Das zweite Betriebssystem 22 kann einen Zugriff auf den Arbeitsspeicher zurückziehen, indem es z. B. die Arbeitsspeicherabbildung entfernt, und den Hypervisor 30 aufrufen, um den Abschluss der Dienstfunktion anzuzeigen. Wenn eine weitere Dienstfunktionsanforderung vorliegt, kann die nächste Dienstfunktionsanforderung verarbeitet werden.
-
In Schritt S218 gibt der Hypervisor 30 dem ersten Betriebssystem 12 des ersten Gasts 10 den Abschluss der Anforderung an. Wenn der Hypervisor 30 feststellt, dass die Dienstfunktionsanforderung abgeschlossen ist, benachrichtigt der Hypervisor 30 zunächst das Betriebssystem 12 und zeigt dem ersten Gast 10 z. B. über eine Unterbrechung in der virtuellen Einheit 14 den Abschluss an.
-
Als Nächstes informiert in Schritt S220 das erste Betriebssystem 12 des ersten Gasts 10 die erste Anwendung 16 über den Abschluss der Anforderung. Das erste Betriebssystem 12 ruft eine Rückruffunktion in dem Benutzeradressbereich-Code des ersten Gasts 10 auf, um einen Hinweis auf den Abschluss der Dienstfunktion bereitzustellen, indem es die erste Anwendung 16 benachrichtigt. Der Arbeitsspeicher des ersten Gasts 10 wurde, wie in 2 beschrieben, direkt während des Prozesses aktualisiert. Zusätzlich per Wert übergebene Rückgabewerte sind über die Register der virtuellen Einheit zugänglich.
-
Mit Blick auf 3 wird eine schematische Darstellung eines Beispiels für ein Datenverarbeitungssystem 310 gezeigt. Das Datenverarbeitungssystem 310 ist lediglich ein Beispiel für ein geeignetes Verarbeitungssystem und nicht als eine wie auch immer geartete Beschränkung von Verwendungsumfang oder Funktionalität von Ausführungsformen der hier beschriebenen Erfindung gedacht. Unabhängig davon kann das Datenverarbeitungssystem 310 mit jeder hier dargelegten Funktionalität realisiert sein und/oder diese durchführen.
-
In dem Datenverarbeitungssystem 310 gibt es ein Computersystem/einen Server 312, das bzw. der mit zahlreichen anderen Universal- oder Spezialsystemumgebungen oder -konfigurationen betrieben werden kann. Beispiele bekannter Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die für eine Verwendung mit einem Computersystem/Server 312 geeignet sein könnten, sind, ohne darauf beschränkt zu sein, Personal-Computersysteme, Server-Computersysteme, Thin Clients, Thick Clients, Taschen- oder Laptop-Einheiten, Mehrprozessorsysteme, Systeme auf der Grundlage von Mikroprozessoren, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Mini-Computersysteme, Großrechner-Computersysteme sowie verteilte Cloud-Datenverarbeitungsumgebungen, die eine/eines der obigen Systeme oder Einheiten beinhalten, und dergleichen.
-
Das Computersystem/der Server 312 lässt sich im allgemeinen Zusammenhang von Befehlen beschreiben, die durch ein Computersystem ausführbar sind wie z. B. Programmmodule, die von einem Computersystem ausgeführt werden. Allgemein können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. beinhalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen realisieren. Das Computersystem/der Server 312 kann in verteilten Cloud-Datenverarbeitungsumgebungen eingesetzt werden, wo Aufgaben von entfernt angeordneten Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk miteinander verbunden sind. In einer verteilten Cloud-Datenverarbeitungsumgebung können sich Programmmodule sowohl in lokalen als auch in entfernt angeordneten Computersystem-Speichermedien wie beispielsweise Arbeitsspeichereinheiten befinden.
-
3 zeigt das Computersystem/den Server 312 in dem Datenverarbeitungssystem 310 in Gestalt einer Universal-Datenverarbeitungseinheit. Die Komponenten des Computersystems/Servers 312 können einen oder mehrere Prozessoren oder Verarbeitungseinheiten 316, einen Systemspeicher 328 und einen Bus 318 beinhalten, der verschiedene Systemkomponenten wie z. B. den Systemspeicher 328 mit der/den Verarbeitungseinheiten 316 verbindet, ohne jedoch darauf beschränkt zu sein.
-
Der Bus 318 steht für mindestens eine von mehreren Arten von Busstrukturen, z. B. ein Speicherbus oder eine Speichersteuereinheit, ein Peripheriebus, ein Accelerated Graphics Port (AGP) und ein Prozessor oder lokaler Bus, wobei eine beliebige aus einer Vielfalt von Busarchitekturen verwendet werden kann. Beispielhaft und nicht als Beschränkung zu verstehen, beinhalten derartige Architekturen den ISA-Bus (Industry Standard Architecture), den MCA-Bus (Micro Channel Architecture), den EISA-Bus (Enhanced ISA), den lokalen VESA-Bus (Video Electronics Standards Association) und den PCI-Bus (Peripheral Component Interconnect).
-
Das Computersystem/der Server 312 beinhaltet üblicherweise eine Vielfalt von Medien, die von einem Computersystem gelesen werden können. Derartige Medien können beliebige verfügbare Medien sein, auf die das Computersystem/der Server 312 zugreifen kann, und zu ihnen zählen sowohl flüchtige als auch nicht flüchtige, entfernbare und nicht entfernbare Medien.
-
Der Systemspeicher 328 kann ein von einem Computersystem lesbares Medium in Form eines flüchtigen Speichers wie z. B. eines Direktzugriffsspeichers (Random Access Memory, RAM) 330 und/oder eines Cachespeichers 332 beinhalten. Das Computersystem 312 kann des Weiteren andere entfernbare/nicht entfernbare, flüchtige/nichtflüchtige Computersystem-Speichermedien beinhalten. Nur beispielgebend kann ein Speichersystem 334 zum Lesen von und Schreiben auf ein nicht entfernbares, nichtflüchtiges magnetisches Medium (das nicht abgebildet ist und das üblicherweise als ein Festplattenlaufwerk bezeichnet wird) bereitgestellt werden. Obwohl hier nicht abgebildet, können ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine entfernbare, nichtflüchtige Magnetplatte (z. B. eine Diskette) sowie ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine entfernbare, nichtflüchtige optische Platte wie z. B. einen CD-ROM, einen DVD-ROM oder ein anderes optisches Medium bereitgestellt werden. In diesen Fällen kann jedes Laufwerk über ein oder mehrere Datenmedienschnittstellen mit dem Bus 318 verbunden sein. Wie weiter unten ausführlicher dargestellt und beschrieben wird, kann der Speicher 328 mindestens ein Programmprodukt mit einem Satz von (z. B. mindestens einem) Programmmodulen beinhalten, wobei diese so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung durchführen.
-
Ein Programm/Dienstprogramm 340 mit einem Satz von (mindestens einem) Programmmodulen 342 kann beispielsweise, und ohne als Beschränkung verstanden zu werden, im Systemspeicher 328 gespeichert sein, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, das eine oder die mehreren Anwendungsprogramme, die anderen Programmmodule und die Programmdaten oder eine Kombination hiervon können jeweils eine Realisierung einer Netzwerkumgebung beinhalten. Die Programmmodule 342 führen im Allgemeinen die Funktionen und/oder Verfahrensweisen von Ausführungsformen der hier beschriebenen Erfindung aus.
-
Das Computersystem/der Server 312 kann zudem mit einer oder mehreren externen Einheiten 314 Daten austauschen, z. B. mit einer Tastatur, einer Zeigeeinheit, einer Anzeige 324 usw.; mit einer oder mehreren Einheiten, die einem Benutzer gestatten, mit dem Computersystem/Server 312 zu interagieren; und/oder mit beliebigen Einheiten (z. B. Netzwerkkarte, Modem usw.), die dem Computersystem/Server 312 ermöglichen, mit einem oder mehreren anderen Datenübertragungseinheiten Daten auszutauschen. Eine derartige Datenübertragung kann über Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 322 erfolgen. Des Weiteren kann das Computersystem/der Server 312 über einen Netzwerkadapter 320 mit einem oder mehreren Netzwerken Daten austauschen, z. B. mit einem lokales Netz (Local Area Network, LAN), einem Weitverkehrsnetz (Wide Area Network, WAN) und/oder einem öffentlichen Netz (z. B. dem Internet). Wie abgebildet, tauscht der Netzwerkadapter 320 über den Bus 318 Daten mit den anderen Komponenten des Computersystems/Servers 312 aus. Dabei sollte klar sein, dass – obwohl sie hier nicht abgebildet sind – auch andere Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 312 verwendet werden könnten. Beispiele hierfür sind, ohne darauf beschränkt zu sein, Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerksstapel, RAID-Systeme, Bandlaufwerke und Datenarchivierungsspeichersysteme usw.
-
Die hier beschriebenen Programme werden auf der Grundlage der Anwendung gekennzeichnet, für die sie in einer spezifischen Ausführungsform der Erfindung realisiert sind. Dabei sollte jedoch klar sein, dass jede hier genannte konkrete Programmnomenklatur lediglich zum Zwecke der Vereinfachung verwendet wird und dass die Erfindung nicht darauf zu beschränken ist, ausschließlich in einer wie auch immer gearteten spezifischen Anwendung verwendet zu werden, die durch eine solche Nomenklatur angegeben und/oder impliziert wird.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder -medien) mit darauf enthaltenen computerlesbaren Programmbefehlen beinhalten, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung durchzuführen.
-
Das computerlesbare Speichermedium kann jede gegenständliche Einheit sein, die Befehle zur Verwendung durch eine Befehlsausführungseinheit halten und speichern kann. Das computerlesbare Speichermedium kann z. B. eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder eine beliebige geeignete Kombination der vorgenannten Einheiten sein, ohne jedoch darauf beschränkt zu sein. Eine nicht vollständige Liste konkreterer Beispiele des computerlesbaren Speichermediums beinhaltet Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren, programmierbaren Nur-Lese-Speicher (EPROM- oder Flash-Speicher), einen statischen Direktzugriffsspeicher (SRAM), einen tragbaren CD-ROM, eine DVD, einen Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie z. B. Lochkarten oder erhabene Strukturen in einer Rille mit darauf aufgezeichneten Befehlen sowie eine beliebige geeignete Kombination der vorgenannten Elemente. Bei einem computerlesbaren Speichermedium, wie es hier verwendet wird, ist nicht davon auszugehen, dass es sich per se um flüchtige Signale wie z. B. Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Hohlleiter oder ein andere Übertragungsmedien ausbreiten (z. B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen), oder elektrische Signalen, die über eine Leitung übertragen werden, handelt.
-
Hier beschriebene computerlesbare Programmbefehle können über ein Netzwerk wie beispielsweise das Internet, ein LAN, ein WAN und/oder ein drahtloses Netzwerk von einem computerlesbaren Speichermedium auf entsprechende Datenverarbeitungs-/Verarbeitungs-Einheiten oder auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenleiter, eine drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungs-Einheit empfängt computerlesbare Programmbefehle von dem Netzwerk und leitet die computerlesbaren Programmbefehle zur Speicherung auf einem computerlesbaren Speichermedium innerhalb der betreffenden Datenverarbeitungs/Verarbeitungs-Einheit weiter.
-
Bei computerlesbaren Programmbefehlen zum Durchführen von Operationen der vorliegenden Erfindung kann es sich um Assembler-Befehle, ISA-Befehle (Instruction-Set-Architecture), Maschinenbefehle, maschinenabhängige Befehle, Mikrocode, Firmware-Befehle, einen Zustand festlegende Daten oder aber entweder um Quellcode oder um Objektcode handeln, der in einer beliebigen Kombination von einer oder mehreren Programmiersprachen wie z. B, einer objektorientierten Programmiersprache wie Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie z. B. der Programmiersprache „C” oder ähnlichen Programmiersprachen geschrieben ist. Die computerlesbaren Programmbefehle können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder aber vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letztgenannten Szenario kann der entfernt angeordnete Computer über eine beliebige Art von Netzwerk, unter anderem ein LAN oder ein WAN, mit dem Computer des Benutzers verbunden sein, oder die Verbindung kann mit einem externen Computer (z. B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden. Bei manchen Ausführungsformen kann ein elektronischer Schaltkreis wie z. B. ein programmierbarer Logikschaltkreis, Field-Programmable Gate Arrays (FPGAs) oder Programmable Logic Arrays (PLAs) die computerlesbaren Programmbefehle ausführen, indem er Zustandsdaten der computerlesbaren Programmbefehle verwendet, um die elektronische Schaltung zu personalisieren und Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung werden hier unter Bezugnahme auf Darstellungen von Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Dabei dürfte klar sein, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaubildern durch computerlesbare Programmbefehle realisiert werden kann/können.
-
Diese computerlesbaren Programmbefehle können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderweitigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die über den Prozessor des Computers oder der anderweitigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, mit dem die Funktionen/Aktionen realisiert werden können, die in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegeben werden. Diese computerlesbaren Programmbefehle können auch auf einem computerlesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass das computerlesbare Speichermedium mit darauf gespeicherten Befehlen einen Herstellungsartikel aufweist, der Befehle enthält, welche Aspekte der in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funkton/Aktion realisieren.
-
Die computerlesbaren Programmbefehle können zudem in einen Computer, eine anderweitige programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um zu veranlassen, dass eine Reihe von Funktionsschritten auf dem Computer, der anderweitigen programmierbaren Datenvorrichtung oder der anderen Einheit ausgeführt wird, so dass die Befehle, die auf dem Computer, der anderweitigen Datenverarbeitungsvorrichtung oder der anderen Einheit ausgeführt werden, die in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funktionen/Handlungen realisieren.
-
Der Ablaufplan und die Blockschaubilder in den Figuren stellen die Architektur, Funktionalität und den Betrieb möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung bereit. Somit kann jeder Block der Ablaufpläne oder Blockschaubilder ein Modul, ein Segment oder einen Teil von Befehlen darstellen, das/der ein oder mehrere ausführbare Befehle aufweist, mit denen sich die eine oder mehreren angegebenen logischen Funktionen realisieren lassen. Bei manchen alternativen Ausführungsformen können die in den Blöcken erwähnten Funktionen in einer anderen Reihenfolge als der in den Figuren genannten auftreten. So können zwei aufeinanderfolgend dargestellte Blöcke tatsächlich im Wesentlichen gleichzeitig stattfinden, oder die Blöcke können mitunter in umgekehrter Reihenfolge ausgeführt werden, wobei dies abhängig von der betreffenden Funktionalität ist. Zu erwähnen ist ebenfalls, dass jeder Block der Blockschaubilder und/oder der Ablaufplan-Darstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplan-Darstellungen durch Spezialsysteme auf Hardware-Grundlage, welche die angegebenen Funktionen oder Handlungen oder Kombinationen hiervon ausführen, oder durch Kombinationen von Spezial-Hardware- und Computerbefehlen realisiert bzw. durchgeführt werden kann/können.
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zwecke der Veranschaulichung vorgelegt und sind nicht als vollständig oder auf die offenbarten Ausführungsformen beschränkt zu verstehen. Der Fachmann weiß, dass zahlreiche Änderungen und Abwandlungen möglich sind, ohne vom inhaltlichen Umfang und gedanklichen Wesensgehalt der Erfindung abzuweichen. Die hier verwendete Begrifflichkeit wurde gewählt, um die Grundgedanken der Ausführungsform, die praktische Anwendung oder technische Verbesserung gegenüber marktgängigen Technologien bestmöglich zu erläutern bzw. anderen Fachleuten das Verständnis der hier offenbarten Ausführungsformen zu ermöglichen.