DE102016105381A1 - Gemeinsames Nutzen von Arbeitsspeicher durch Gäste - Google Patents

Gemeinsames Nutzen von Arbeitsspeicher durch Gäste Download PDF

Info

Publication number
DE102016105381A1
DE102016105381A1 DE102016105381.3A DE102016105381A DE102016105381A1 DE 102016105381 A1 DE102016105381 A1 DE 102016105381A1 DE 102016105381 A DE102016105381 A DE 102016105381A DE 102016105381 A1 DE102016105381 A1 DE 102016105381A1
Authority
DE
Germany
Prior art keywords
guest
computer
application
computer processors
operating system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102016105381.3A
Other languages
English (en)
Inventor
Utz Bacher
Dominik Dingel
Thomas P. GROSSER
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/666,566 external-priority patent/US9606827B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102016105381A1 publication Critical patent/DE102016105381A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Hardware Redundancy (AREA)

Abstract

Bei einem Ansatz zum gemeinsamen Nutzen von Arbeitsspeicher durch einen ersten Gast und einen zweiten Gast, die beide auf einem Datenverarbeitungssystem ausgeführt werden, stellen ein oder mehrere Computerprozessoren einem ersten Gast eine virtuelle Einheit bereit, 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.

Description

  • 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.

Claims (15)

  1. Verfahren zum gemeinsamen Nutzen von Arbeitsspeicher durch einen ersten Gast und einen zweiten Gast, die beide auf einem Datenverarbeitungssystem ausgeführt werden, wobei das Verfahren aufweist: Bereitstellen einer virtueller Einheit durch einen oder mehrere Computerprozessoren an einen ersten Gast zum Vermitteln von Arbeitsspeicherzugriffen durch den ersten Gast und einen zweiten Gast, wobei der erste Gast mit dem zweiten Gast durch einen Hypervisor zusammengehört und wobei der erste Gast ein erstes Betriebssystem ausführt und der zweite Gast ein zweites Betriebssystem ausführt; und Senden von einer oder mehreren einheitenbezogenen Funktionen durch den einen oder die mehreren Computerprozessoren an den zweiten Gast, wobei die virtuelle Einheit ein gemeinsames Nutzen von Arbeitsspeicher durch den ersten Gast und den zweiten Gast ermöglicht.
  2. Verfahren nach Anspruch 1, wobei ein gemeinsames Nutzen von Arbeitsspeicher durch den ersten Gast und den zweiten Gast des Weiteren aufweist: Registrieren einer zweiten Anwendung, die auf dem zweiten Gast ausgeführt wird, durch den einen oder die mehreren Computerprozessoren bei dem zweiten Betriebssystem, um eine oder mehrere Dienstfunktionen bereitzustellen; Empfangen durch den einen oder die mehreren Computerprozessoren einer Bekanntgabe einer Verfügbarkeit der Dienstfunktionen von dem zweiten Betriebssystem durch den Hypervisor; Empfangen einer Bekanntgabe der Dienstfunktionen von dem Hypervisor an den ersten Gast durch den einen oder die mehreren Computerprozessoren; Feststellen durch den einen oder die mehreren Computerprozessoren, dass eine erste Anwendung, die auf dem ersten Gast ausgeführt wird, die durch den Hypervisor bekannt gegebenen Dienstfunktionen erkannt hat; Feststellen durch den einen oder die mehreren Computerprozessoren, dass die erste Anwendung die Dienstfunktionen von dem Hypervisor angefordert hat; Feststellen durch den einen oder die mehreren Computerprozessoren, dass der Hypervisor den zweiten Gast über die Anforderung der Dienstfunktionen durch die erste Anwendung informiert hat; Feststellen durch den einen oder die mehreren Computerprozessoren, dass das zweite Betriebssystem des zweiten Gasts die Anforderung von Dienstfunktionen durch die erste Anwendung empfangen hat; Verarbeiten der Anforderung von der ersten Anwendung über die zweite Anwendung durch den einen oder die mehreren Computerprozessoren, so dass die Anforderung ausgeführt wird; Empfangen einer Benachrichtigung an den Hypervisor über den Abschluss der Anforderung von dem zweiten Betriebssystem des zweiten Gasts durch den einen oder die mehreren Computerprozessoren; Empfangen eines Hinweises auf den Abschluss der Anforderung an das erste Betriebssystem des ersten Gasts von dem Hypervisor durch den einen oder die mehreren Computerprozessoren; und Empfangen einer Benachrichtigung an die erste Anwendung über den Abschluss der Anforderung von dem ersten Betriebssystem des ersten Gasts durch den einen oder die mehreren Computerprozessoren.
  3. Verfahren nach Anspruch 2, das des Weiteren ein Registrieren der zweiten Anwendung aufweist, die auf dem zweiten Gast ausgeführt wird, durch den einen oder die mehreren Computerprozessoren bei dem zweiten Betriebssystem, um durch einen Blockierungssystemaufruf Dienstfunktionen bereitzustellen.
  4. Verfahren nach Anspruch 2, wobei das Empfangen einer Bekanntgabe einer Verfügbarkeit der Dienstfunktionen an den Hypervisor von dem zweiten Betriebssystem des Weiteren aufweist: Aufrufen einer paravirtualisierten Funktion durch den einen oder die mehreren Computerprozessoren; und Registrieren einer Unterbrechungsroutine durch den einen oder die mehreren Computerprozessoren.
  5. Verfahren nach Anspruch 2, wobei das Empfangen einer Bekanntgabe der Dienstfunktionen an den ersten Gast durch den Hypervisor des Weiteren ein Empfangen von einer oder mehreren Abfragen nach aktiven Dienstfunktionen von einem oder mehreren zusätzlichen Gästen durch den einen oder die mehreren Computerprozessoren aufweist.
  6. Verfahren nach Anspruch 2, wobei die Dienstfunktionen als eine virtuelle Einheit verfügbar sind.
  7. Verfahren nach Anspruch 2, wobei das Feststellen, dass die erste Anwendung die Dienstfunktionen von dem Hypervisor angefordert hat, des Weiteren ein Verwenden eines nichtblockierenden Systemaufrufs durch den einen oder die mehreren Computerprozessoren aufweist.
  8. Verfahren nach Anspruch 2, wobei das Feststellen, dass der Hypervisor den zweiten Gast über die Anforderung der Dienstfunktionen durch die erste Anwendung informiert hat, des Weiteren ein Empfangen einer Unterbrechung in dem zweiten Gast durch den einen oder die mehreren Computerprozessoren aufweist.
  9. Verfahren nach Anspruch 2, wobei das Verarbeiten der Anforderung von der ersten Anwendung über die zweite Anwendung des Weiteren ein Abbilden einer exportierten Arbeitsspeicherregion des ersten Gasts auf einen Prozessadressraum der zweiten Anwendung durch den einen oder die mehreren Computerprozessoren aufweist.
  10. Verfahren nach Anspruch 9, das des Weiteren ein Abbilden eines Speichers des ersten Gast als eine Nur-Lese-Abbildung durch den einen oder die mehreren Computerprozessoren aufweist.
  11. Verfahren nach Anspruch 9, das des Weiteren ein Zurückziehen eines Zugriffs auf den Speicher des ersten Gasts durch den Hypervisor aufweist, indem dieser die Speicherabbildung entfernt.
  12. Verfahren nach Anspruch 9, das des Weiteren ein Aktualisieren des Speichers durch den einen oder die mehreren Computerprozessoren als Reaktion auf ein Empfangen einer Benachrichtigung an die erste Anwendung über den Abschluss der Anforderung von dem ersten Betriebssystem des ersten Gasts aufweist.
  13. Verfahren nach Anspruch 2, wobei das Empfangen einer Benachrichtigung an die erste Anwendung über den Abschluss der Anforderung von dem ersten Betriebssystem des ersten Gasts ein Bereitstellen einer Rückruffunktion durch den einen oder die mehreren Computerprozessoren aufweist.
  14. Computerprogrammprodukt zum gemeinsamen Nutzen von Arbeitsspeicher durch einen ersten Gast und einen zweiten Gast, die beide auf einem Datenverarbeitungssystem ausgeführt werden, wobei das Computerprogrammprodukt aufweist: eine oder mehrere computerlesbare Speichereinheiten und Programmbefehle, die auf dem einen oder den mehreren computerlesbaren Speichereinheiten gespeichert sind, wobei die Programmbefehle durch einen Computer ausführbar sind, um den Computer zum Durchführen eines Verfahrens zu veranlassen, wobei die Programmbefehle aufweisen: Programmbefehle, um zum Vermitteln von Arbeitsspeicherzugriffen durch den ersten Gast und einen zweiten Gast eine virtuelle Einheit an einen ersten Gast bereitzustellen, wobei der erste Gast dem zweiten Gast durch einen Hypervisor zusammengehören und wobei der erste Gast ein erstes Betriebssystem ausführt und der zweite Gast ein zweites Betriebssystem ausführt; und Programmbefehle, um eine oder mehrere einheitenbezogene Funktionen an den zweiten Gast zu senden, wobei die virtuelle Einheit ein gemeinsames Nutzen von Arbeitsspeicher durch den ersten Gast und den zweiten Gast ermöglicht.
  15. Computersystem zum gemeinsamen Nutzen von Arbeitsspeicher durch einen ersten Gast und einen zweiten Gast, die beide auf einem Datenverarbeitungssystem ausgeführt werden, wobei das Computersystem aufweist: einen oder mehrere Prozessoren; eine oder mehrere computerlesbare Speichereinheiten; auf dem einen oder den mehreren computerlesbaren Speichereinheiten gespeicherte Programmbefehle zur Ausführung durch mindestens einen der einen oder mehreren Computerprozessoren, wobei die Programmbefehle aufweisen: Programmbefehle, um zum Vermitteln von Arbeitsspeicherzugriffen durch den ersten Gast und einen zweiten Gast eine virtuelle Einheit an einen ersten Gast bereitzustellen, wobei der erste Gast dem zweiten Gast durch einen Hypervisor zugehörig ist und wobei der erste Gast ein erstes Betriebssystem ausführt und der zweite Gast ein zweites Betriebssystem ausführt; und Programmbefehle, um eine oder mehrere einheitenbezogene Funktionen an den zweiten Gast zu senden, wobei die virtuelle Einheit ein gemeinsames Nutzen von Arbeitsspeicher durch den ersten Gast und den zweiten Gast ermöglicht.
DE102016105381.3A 2015-03-24 2016-03-22 Gemeinsames Nutzen von Arbeitsspeicher durch Gäste Pending DE102016105381A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/666,566 US9606827B2 (en) 2015-03-24 2015-03-24 Sharing memory between guests by adapting a base address register to translate pointers to share a memory region upon requesting for functions of another guest
US14/666,566 2015-03-24
US14/930,697 US9612860B2 (en) 2015-03-24 2015-11-03 Sharing memory between guests by adapting a base address register to translate pointers to share a memory region upon requesting for functions of another guest
US14/930,697 2015-11-03

Publications (1)

Publication Number Publication Date
DE102016105381A1 true DE102016105381A1 (de) 2016-09-29

Family

ID=56889718

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016105381.3A Pending DE102016105381A1 (de) 2015-03-24 2016-03-22 Gemeinsames Nutzen von Arbeitsspeicher durch Gäste

Country Status (2)

Country Link
US (1) US9612860B2 (de)
DE (1) DE102016105381A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9760513B2 (en) * 2015-09-22 2017-09-12 Cisco Technology, Inc. Low latency efficient sharing of resources in multi-server ecosystems
US10552332B2 (en) 2018-05-10 2020-02-04 Alibaba Group Holding Limited Rapid side-channel access to storage devices
US11385918B2 (en) * 2019-01-23 2022-07-12 Vmware, Inc. Dynamic discovery of internal kernel functions and global data

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7222332B2 (en) 2002-10-24 2007-05-22 International Business Machines Corporation Method and apparatus for overlay management within an integrated executable for a heterogeneous architecture
US20050086656A1 (en) * 2003-10-20 2005-04-21 Gemstone Systems, Inc. Methods and systems for inter-process copy sharing of data objects
US7739684B2 (en) * 2003-11-25 2010-06-15 Intel Corporation Virtual direct memory access crossover
US7478204B2 (en) * 2004-04-29 2009-01-13 International Business Machines Corporation Efficient sharing of memory between applications running under different operating systems on a shared hardware system
US8856781B2 (en) * 2006-09-14 2014-10-07 Intel Corporation Method and apparatus for supporting assignment of devices of virtual machines
WO2008077628A2 (en) 2006-12-22 2008-07-03 Virtuallogix Sa System for enabling multiple execution environments to share a device
WO2008152967A1 (ja) 2007-06-12 2008-12-18 Nec Corporation 情報処理装置、実行環境転送方法及びそのプログラム
US7539987B1 (en) * 2008-03-16 2009-05-26 International Business Machines Corporation Exporting unique operating system features to other partitions in a partitioned environment
US8195897B2 (en) 2008-06-09 2012-06-05 International Business Machines Corporation Migrating memory data between partitions
US8490094B2 (en) 2009-02-27 2013-07-16 International Business Machines Corporation Non-uniform memory access (NUMA) enhancements for shared logical partitions
US20110113426A1 (en) * 2009-11-09 2011-05-12 Hsiang-Tsung Kung Apparatuses for switching the running of a virtual machine between multiple computer devices belonging to the same computer platform and the associated switching methods
US8463980B2 (en) 2010-09-30 2013-06-11 Microsoft Corporation Shared memory between child and parent partitions
US8892802B2 (en) * 2012-01-01 2014-11-18 International Business Machines Corporation Enhancing interrupt handling in a virtual environment
US9229752B2 (en) 2013-03-12 2016-01-05 International Business Machines Corporation Systems and methods to offload hardware support using a hypervisor subpartition

Also Published As

Publication number Publication date
US20160283260A1 (en) 2016-09-29
US9612860B2 (en) 2017-04-04

Similar Documents

Publication Publication Date Title
DE112011101633B4 (de) Virtualisierung und dynamische Ressourcenzuweisung berücksichtigendes Neuordnen von Speicherebenen
DE112016001657T5 (de) Multi-Tenant-Sensitiver DHCP-Mechanismus für Cloud-Netzwerke
DE112011100094T5 (de) Verfahren und System zum Abstrahieren eines auf nichtfunktionalen Anforderungen beruhenden Einsatzes von virtuellen Maschinen
DE102020113346A1 (de) Bereitstellen von service-containern in einer adaptervorrichtung
DE112013000369T5 (de) Verwaltung von Threads innerhalb einer Datenverarbeitungsumgebung
DE102015105884A1 (de) Zuverlässige und deterministische Live-Migration von virtuellen Maschinen
DE202012013448U1 (de) Prozessormodussperre
DE102016222861A1 (de) Transparentes, sicheres Durchführen von Abrufvorgängen
DE112013006063T5 (de) Funktionsübernahme für einen Datenübertragungskanal in einem Netzwerk mit Hochleistungsdatenverarbeitung
DE112020000280B4 (de) Transparente interpretation von gastbefehlen in einer sicheren virtuellen maschinenumgebung
DE112018005898T5 (de) Dynamische bereitstellung von software-funktionen
DE112012002404B4 (de) Konfiguration und Management virtueller Netzwerke
DE102020110143A1 (de) Standortbasierte virtualisierungs-workload-platzierung
DE112022003720T5 (de) Verwenden eines fernen pods in kubernetes
DE202014010925U1 (de) Dienstbrücken
DE112011101019T5 (de) Verarbeitung von Befehlen mit mehreren Prioritäten zwischen Back-End-Prozessoren
DE102012105068A1 (de) Beschleunigungseinrichtung mit Unterstützung für virtuelle Maschinen
DE102018202432A1 (de) Strukturunterstützung für die Dienstgüte
DE112020004661T5 (de) Ermitteln einer optimalen Anzahl von Threads pro Kern in einem Mehrkern-Prozessorkomplex
DE112020006047T5 (de) Steuern von transaktionsanforderungen zwischen anwendungen und servern
DE112018004220T5 (de) Speicherzugriffs-Vermittlersystem mit anwendungsgesteuerter Unterstützung für frühzeitige Schreibbestätigung
DE102009060301A1 (de) Das Ermöglichen mehrerer virtueller Geräte-Controller durch Umleiten eines Interrupts von einem physischen Geräte-Controller
DE112021001408T5 (de) Verwendung kohärent verbundener schnittstellen in einem netzwerkstapelrahmen
DE112016006308T5 (de) Erweiterte virtuelle Funktionsfähigkeiten in einer virtualisierten Netzwerkumgebung
DE102021125182A1 (de) Gemeinsam genutzte unternehmenscloud

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009440000

Ipc: G06F0015160000

R084 Declaration of willingness to licence