-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung betrifft allgemein die Virtualisierung in einem Datenverarbeitungssystem und insbesondere das Verbessern der Systemleistung in einer verschachtelten Virtualisierungsumgebung.
-
HINTERGRUND
-
In einem Datenverarbeitungssystem kann durch eine Host-Software oder einen Hypervisor eine simulierte Datenverarbeitungsumgebung oder eine virtuelle Maschine (VM) für eine Gast-Software bereitgestellt werden, die auf dem Hypervisor ausgeführt wird. Die VM ermöglicht die Gast-Software so auszuführen, als würde sie direkt auf der zugrunde liegenden Hardware oder einer physischen Maschine ausgeführt.
-
Eine typische physische Maschine (z. B. ein Prozessor) arbeitet in mindestens zwei Modi: einem Modus ohne Rootberechtigung und einem Modus mit Rootberechtigung. Die physische Maschine arbeitet im Allgemeinen im Modus ohne Rootberechtigung, um die nicht privilegierten Anweisungen der Gast-Software auszuführen, kann jedoch in den Modus mit Rootberechtigung wechseln, sobald sie eine privilegierte Anweisung erkennt, die durch den Hypervisor bearbeitet werden muss. Das Wechseln zwischen den Modi wird im Allgemeinen als Trapping (Abfangen) bezeichnet.
-
VMs werden üblicherweise auf der Grundlage herkömmlicher Softwarevirtualisierungskonzepte realisiert, um Virtualisierungsmerkmale wie beispielsweise Serverkonsolidierung, Fehlerbegrenzung, Sicherheit und Ressourcenverwaltung zu unterstützen. Die meisten der Virtualisierungsmerkmale werden durch beträchtliche Leistungseinbußen aufgrund von Unterbrechungen erkauft, die jedes Mal verursacht werden, wenn die Gast-Software auf ein Virtualisierungsmerkmal zugreift.
-
KURZDARSTELLUNG
-
Die vorliegende Erfindung betrifft Verfahren, Systeme und Computerprogrammprodukte, die das Verbessern der Systemleistung in einer verschachtelten virtualisierten Umgebung ermöglichen.
-
Gemäß einer Ausführungsform wird ein Verfahren zum Verbessern der Systemleistung in einer verschachtelten virtualisierten Umgebung bereitgestellt. Das Verfahren weist auf: Erkennen eines ersten Satzes durch eine Hardwareeinheit unterstützter Merkmale durch eine erste Software, wobei die erste Software auf der Hardwareeinheit ausgeführt wird; Erkennen eines zweiten Satzes von Merkmalen, mit denen eine zweite Software ausgeführt werden soll, wobei die zweite Software durch die erste Software mit dem zweiten Satz von Merkmalen gestartet wird; Verfügbarmachen eines oder mehrerer Merkmale in dem zweiten Satz von Merkmalen für die zweite Software, wobei die zweite Software die verfügbar gemachten Merkmale erkennt und für eine durch die zweite Software gestartete dritte Software freigibt; und Emulieren eines ersten Merkmals ohne Auslösen einer Unterbrechung, sodass die Steuerung an die zweite Software übertragen wird, als Reaktion auf das Ermitteln, dass es sich bei dem ersten Merkmal um ein verfügbar gemachtes Merkmal handelt, dass nicht in dem ersten Satz von Merkmalen enthalten ist, wobei dem ersten Merkmal ein oder mehrere kritische Ereignisse zugehörig sind.
-
Gemäß einer oder mehreren Ausführungsformen wird ein System bereitgestellt, das eine oder mehrere Logikeinheiten aufweist. Die eine oder mehreren Logikeinheiten sind so konfiguriert, dass sie den oben offenbarten Verfahren zugehörige Funktionen und Operationen ausführen. Gemäß noch einer weiteren Ausführungsform wird ein Computerprogrammprodukt bereitgestellt, das ein computerlesbares Speichermedium mit einem computerlesbaren Programm aufweist. Das computerlesbare Programm veranlasst den Computer, wenn es auf diesem ausgeführt wird, die den oben offenbarten Verfahren zugehörigen Funktionen und Operationen auszuführen.
-
Im Folgenden werden zusätzlich zu bestimmten Alternativen eine oder mehrere der oben offenbarten Ausführungsformen ausführlich unter Bezugnahme auf die beiliegenden Figuren dargelegt. Der offenbarte Gegenstand ist jedoch nicht auf eine bestimmte offenbarte Ausführungsform beschränkt.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Nunmehr werden Ausführungsformen lediglich beispielhaft unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben, wobei:
-
1A und 1B Schaubilder von beispielhaften verschachtelten Virtualisierungsumgebungen gemäß einer Ausführungsform sind.
-
2 ein Ablaufplan eines Verfahrens zum Freigeben von Virtualisierungsmerkmalen für eine Gast-Software gemäß einer Ausführungsform ist.
-
3 ein Ablaufplan eines Verfahrens zum Zugreifen auf ein Virtualisierungsmerkmal gemäß einer Ausführungsform ist.
-
4 und 5 Funktionsschaubilder von Hardware- und Softwareumgebungen sind, in denen ein System der vorliegenden Erfindung gemäß einer oder mehrerer Ausführungsformen funktionieren kann.
-
Merkmale, Elemente und Aspekte, die in verschiedenen Figuren mit denselben Bezugszeichen bezeichnet werden, stellen dieselben, gleichwertige oder ähnliche Merkmale, Elemente oder Aspekte gemäß einer oder mehreren Ausführungsformen dar.
-
DETAILLIERTE BESCHREIBUNG
-
Im Folgenden werden zahlreiche spezielle Details dargelegt, um eine ausführliche Beschreibung verschiedener Ausführungsformen bereitzustellen. Bestimmte Ausführungsformen können ohne diese speziellen Details oder mit einigen geringfügigen Änderungen umgesetzt werden. In manchen Fällen werden bestimmte Merkmale weniger detailliert beschrieben, um andere Aspekte nicht zu verschleiern. Die Detailtreue bei jedem der Elemente oder Merkmale ist nicht als Bewertung der Neuheit oder Bedeutung eines Merkmals gegenüber anderen Merkmalen auszulegen.
-
1A zeigt eine verschachtelte Virtualisierungsumgebung, in der mehrere Hypervisor und unterschiedliche Gast-Software verschachtelt auf einer physischen Maschine ausgeführt werden. Zum Beispiel kann ein erster Hypervisor direkt auf der physischen Maschine, ein zweiter Hypervisor als erste Gast-Software auf dem ersten Hypervisor und auf dem zweiten Hypervisor eine zweite Gast-Software ausgeführt werden. In einer solchen Umgebung können Interaktionen zwischen verschiedenen Softwareebenen dazu beitragen, dass es durch Software-Virtualisierung zu Leistungseinbußen kommt.
-
Durch hardwaregestützte Virtualisierung können die durch Software-Virtualisierung bedingten Leistungseinbußen verringert werden. Bei der hardwaregestützten Virtualisierung werden ein oder mehrere Virtualisierungsmerkmale nicht durch die Software, sondern durch die physische Maschine unterstützt, sodass die Anzahl der in einer verschachtelten Virtualisierungsumgebung verursachten Unterbrechungen verringert wird. Es ist wünschenswert, Systeme zu realisieren, in denen die durch Software-Virtualisierung bedingten Leistungseinbußen durch hardwaregestützte Virtualisierungstechnologien angemessen verringert werden, wobei viele Virtualisierungsmerkmale unter Verwendung von Software realisiert werden.
-
1B zeigt eine beispielhafte verschachtelte Virtualisierungsumgebung 100 gemäß einer Ausführungsform, die eine physische Maschine 110 und drei Virtualisierungsebenen aufweist. Die Stammebene (L0) weist einen Hypervisor 120 auf; die Ebene 1 (L1) weist einen Gast-Hypervisor 130 auf; und die Ebene 2 (L2) weist eine Gast-Software 140 auf. Der L0-Hypervisor 120 wird direkt auf der physischen Maschine 110 ausgeführt und realisiert eine VM für den L1-Gast-Hypervisor 130. Der L1-Gast-Hypervisor 130 wird auf dem L0-Hypervisor 120 ausgeführt und realisiert eine VM für den L2-Gast 140. Der L1-Gast-Hypervisor 130 und der L2-Gast 140 können jeweils mit einem Satz von Virtualisierungsmerkmalen gestartet werden. Jedes der Merkmale kann durch eine Hardware (d. h. die physische Maschine 110) oder eine Software (d. h. den zugrunde liegenden Host-Hypervisor) unterstützt werden.
-
1B und 2 zeigen, dass der L0-Hypervisor 120 gemäß einer Ausführungsform so konfiguriert werden kann, dass er einen ersten Satz durch die physische Maschine 110 (P200) unterstützter Merkmale erkennt. Der L0-Hypervisor 120 kann den L1-Gast-Hypervisor 130 mit einem zweiten Satz von Merkmalen starten (P210). Gemäß einer Ausführungsform kann der zweite Satz von Merkmalen Merkmale enthalten, die nicht in dem ersten Satz enthalten sind, solange der L0-Hypervisor 120 so konfiguriert ist, dass er solche Merkmale emuliert.
-
Für jedes Merkmal in dem zweiten Satz, das nicht in dem ersten Satz enthalten ist (d. h. nicht durch die physische Maschine 110 unterstützt wird), macht der L0-Hypervisor 120 das Merkmal wahlweise dem L1-Hypervisor 130 verfügbar (P220). Ein in diesem Zusammenhang verwendetes Merkmal verfügbar zu machen bedeutet, dass das Merkmal durch den Hypervisor der nächsten Ebene erkennbar gemacht wird. Wenn das Merkmal dem L1-Hypervisor 130 verfügbar gemacht wird, erkennt der L1-Hypervisor 130 das Merkmal und gibt es frei, um den L2-Gast 140 auszuführen (d. h. macht das Merkmal verfügbar, wenn der L2-Gast 140 ausgeführt wird) (P230). Auf diese Weise wird das Merkmal durch den L1-Hypervisor verwendet, wobei der L1-Hypervisor die physische Maschine anweist, ein dem Merkmal zugehöriges kritisches Ereignis abzuwickeln, ohne eine Unterbrechung zu erzeugen.
-
1B und 3 zeigen, dass die physische Maschine 110 gemäß einer Ausführungsform so konfiguriert ist, dass sie zumindest in einem L0-Modus, einem L1-Modus oder einem L2-Moduls arbeitet (P300). Als Reaktion darauf, dass der L1-Hypervisor den L2-Gast 140 startet, führt die physische Maschine 110 den L2-Gast 140 im L2-Modus aus (P310). Während die physische Maschine 110 im L2-Modus arbeitet, kann sie angewiesen werden, ein erstes Ereignis (d. h. ein kritisches Ereignis oder eine privilegierte Anweisung) auszuführen, die einem ersten Merkmal zugehörig ist (P320). Wenn die physische Maschine 110 ein Virtualisierungsmerkmal unterstützt, das erste Ereignis abzuwickeln (P330), wickelt die physische Maschine 110 das erste Ereignis ab, ohne eine Unterbrechung auszulösen (P340).
-
Anderenfalls wechselt die physische Maschine 110 in den L0-Modus, und der L0-Hypervisor 120 bearbeitet das erste Ereignis durch Emulieren des ersten Merkmals, ohne eine Unterbrechung in den L1-Modus zu verursachen (d. h. ohne Eingreifen durch den L1-Hypervisor 130) (P350). Mit anderen Worten, die Notwendigkeit, eine durch die physische Maschine 110 nicht unterstützte privilegierte Anweisung auszuführen, bewirkt eine Übergabe der Steuerung an den L0-Hypervisor 120, sodass die physische Maschine 120 wieder zur Ausführung des L0-Hypervisor 120 zurückkehrt. Da dem L1-Hypervisor 130 vorgetäuscht wird, dass das erste Merkmal vorhanden ist, besteht darüber hinaus keine Notwendigkeit für einen Wechsel zwischen dem L1- und dem L2-Modus.
-
Obwohl beim Emulieren eines Merkmals Prozessorzyklen in Anspruch genommen werden, können durch Verfügbarmachen des Merkmals für den L1-Hypervisor 130 die Leistungseinbußen deutlich verringert werden, die durch Unterbrechungen zwischen den Virtualisierungsebenen L0, L1 und L2 verursacht werden. Durch Verfügbarmachen des angeforderten Merkmals und Emulieren dieses Merkmals auf der Ebene L0 gemäß einer Ausführungsform multiplext der L0-Hypervisor wirksam eine Unterstützung des Merkmals in einer Ebene auf mehrere Virtualisierungsebenen und verringert dadurch den Umfang der Interaktionen zwischen den mehreren verschachtelten Ebenen, die anderenfalls einbezogen würden. Mit anderen Worten, die obigen Systeme und Verfahren können die Systemleistung in Fällen verbessern, in denen ein Virtualisierungsmerkmal durch die Hardware nicht unterstützt wird.
-
Gemäß einer Ausführungsart können die oben unter Bezugnahme auf 2 und 3 bereitgestellten Prozesse auf erweiterte oder verschachtelte Seitentabellen (EPT/NPT) angewendet werden. EPT/NPT ist ein hardwaregestütztes Merkmal, das eine Virtualisierung einer Speicherverwaltungseinheit (MMU) bereitstellt. Einige Prozessoren verwenden einen ausschließlich auf Software basierenden Mechanismus, der als Schattenseitentabellen bezeichnet wird, um eine Virtualisierung einer MMU bereitzustellen. Die Schattenseitentabellen können aufgrund einer Unterbrechung, die durch Seitenfehler, Seitentabellenaktualisierungen und Zugriffe auf Seitentabellen-Zeigerregister verursacht werden, zu hohen Leistungseinbußen führen.
-
Die durch Schattenseitentabellen verursachten Leistungseinbußen können verringert werden, indem der L0-Hypervisor so konfiguriert wird, dass er erkennt, ob das EPT/NPT-Merkmal durch den Prozessor unterstützt wird. Wenn das EPT/NPT-Merkmal nicht durch den Prozessor unterstützt wird, macht der L0-Hypervisor das EPT/NPT-Merkmal einem L1-Hypervisor verfügbar, und der L1-Hypervisor erkennt das EPT/NPT-Merkmal und gibt dieses zum Ausführen durch den L2-Gast frei (d. h. macht das EPT/NPT-Merkmal verfügbar, wenn der L2-Gast ausgeführt wird).
-
Während der Ausführung des L2-Gastes durch den Prozessor kann der Prozessor angewiesen werden, ein dem EPT/NPT-Merkmal zugehöriges Ereignis zu erzeugen (z. B. einen Seitenfehler, eine Seitentabellenaktualisierung, einen Zugriff auf ein Seitentabellen-Zeigerregister oder ein anderes einschlägiges Ereignis) und in den L0-Modus zu wechseln, wo der L0-Hypervisor das EPT/NPT-Merkmal durch Erzeugen einer Schattenseitentabelle emuliert, um den L2-Gast unter Verwendung einer durch den L1-Hypervisor bereitgestellten L2-Seitentabelle auszuführen. Im Vergleich zu dem Szenario, in dem der L0-Hypervisor einen ersten Satz von Schattenseitentabellen zum Ausführen des L1-Hypervisor verwendet und der L1-Hypervisor einen zweiten Satz von Schattenseitentabellen zum Ausführen des L2-Gastes verwendet, ermöglichen die oben bereitgestellten Prozesse dem L0-Hypervisor, eine MMU-Virtualisierung für den L2-Gast ohne Eingreifen durch den L1-Hypervisor bereitzustellen.
-
Gemäß weiteren Ausführungsarten können die oben unter Bezugnahme auf 2 und 3 bereitgestellten Prozesse auf Merkmale angewendet werden wie beispielsweise Stammelement-Eingabe/Ausgabe-Virtualisierung (SR-IOV), Hardware-Virtualisierungs-(VMX/SVM)Erweiterungen und Interruptneuzuordnung, ohne darauf beschränkt zu sein. Gemäß einer Ausführungsart kann der L0-Hypervisor zum Beispiel dem L1-Hypervisor eine SR-IOV-Einheit sogar dann verfügbar machen, wenn es keine solche Einheit gibt. Durch das Verfügbarmachen der Einheit kann der L0-Hypervisor zum Beispiel in die Lage versetzt werden, L2-Eingabe/Ausgabe-(E/A)Operationen direkt, ohne Eingreifen des L1-Hypervisor, abzuwickeln.
-
Gemäß einer weiteren Ausführungsart kann der L0-Hypervisor VMX/SVM-Erweiterungen dem L1-Hypervisor verfügbar machen, wenn dieser auf einem x86-Prozessor oder auf einem x86-Prozessor im unteren Bereich ohne VMX/SVM-Erweiterungen ausgeführt wird. Obwohl der L0-Hypervisor zum Virtualisieren der x86-Architektur einen älteren binären Umsetzungsmechanismus verwendet, kann dieser dem L1-Hypervisor VMX/SVM-Erweiterungen verfügbar machen. Mit einer solchen Konfiguration kann die Binärumsetzung vollständig durch den L0-Hypervisor unterstützt und verbessert werden, indem dieser ermittelt, welche durch den L2-Gast verursachten Ereignisse durch den L0-Hypervisor verwaltet werden müssen.
-
Gemäß den obigen Ausführungen können Hypervisor, die auf das Ausführen auf einer Hardware mit VMX/SVM-Erweiterungen (z. B. KVM und Hyper-V) beschränkt sind, als Gast-Hypervisor auf einer Plattform ohne die VMX/SVM-Erweiterungen ausgeführt werden. Wenn VMX/SVM-Erweiterungen aktualisiert werden, um das Umlenken von Interrupts direkt an einen Gast zu unterstützen, kann der L0-Hypervisor diese Merkmale ferner einem L1-Hypervisor verfügbar machen, um Interrupts ohne Eingreifen durch den L1-Hypervisor direkt dem L2-Gast zuzuführen.
-
Gemäß verschiedenen Ausführungsformen kann der beanspruchte Gegenstand der Erfindung als Kombination sowohl von Hardware- als auch Softwareelementen oder alternativ entweder vollständig in Form von Hardware oder vollständig in Form von Software realisiert werden. Ferner können hierin offenbarte Datenverarbeitungssysteme und Programmsoftware eine gesteuerte Datenverarbeitungsumgebung aufweisen, die als Hardwarekomponenten oder Logikcode dargestellt werden können, der zum Umsetzen von Verfahren und Prozessen ausgeführt wird, die die hierin angestrebten Ergebnisse liefern. Die Verfahren und Prozesse wandeln, wenn sie durch ein Universal-Datenverarbeitungssystem oder eine entsprechende Maschine ausgeführt werden, die Universalmaschine in eine Spezialmaschine um.
-
Die Umgebung eines Datenverarbeitungssystems gemäß einer beispielhaften Ausführungsform kann unter Bezugnahme auf 4 und 5 aus einer Hardwareumgebung 1110 und einer Softwareumgebung 1120 bestehen. Die Hardwareumgebung 1110 kann Logikeinheiten, Schaltungen oder andere Vorrichtungen und Ausrüstungen aufweisen, die eine Ausführungsumgebung für die Komponenten der Softwareumgebung 1120 bereitstellen. Die Softwareumgebung 1120 wiederum kann die ausführbaren Anweisungen, darunter die zugrunde liegenden Betriebseinstellungen und Konfigurationen für die verschiedenen Komponenten der Hardwareumgebung 1110 bereitstellen.
-
Die hierin offenbarte Anwendungssoftware und der Logikcode können unter Bezugnahme auf 4 in Form eines computerlesbaren Codes realisiert werden, der auf einem oder mehreren Datenverarbeitungssystemen ausgeführt wird, die durch die beispielhafte Hardwareumgebung 1110 dargestellt werden. Die veranschaulichte Hardwareumgebung 1110 kann einen Prozessor 1101 aufweisen, der durch einen Systembus 1100 mit einem oder mehreren Speicherelementen verbunden ist. Die Speicherelemente können zum Beispiel einen lokalen Speicher 1102, ein Speichermedium 1106, einen Cachespeicher 1104 oder andere durch einen Computer nutzbare oder computerlesbare Medien aufweisen. Im Rahmen dieser Offenbarung kann ein durch einen Computer nutzbares oder computerlesbares Speichermedium ein beliebiges zum Aufzeichnen fähiges Produkt beinhalten, das dazu verwendet werden kann, einen Programmcode zu enthalten, zu speichern, zu verbreiten, weiterzuleiten oder zu transportieren.
-
Bei einem computerlesbaren Speichermedium kann es sich um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitermedium, System, eine entsprechende Vorrichtung oder Einheit handeln. Das computerlesbare Speichermedium kann auch in einem Verbreitungsmedium uneingeschränkt in dem Maße realisiert werden, dass eine solche Ausführungsart zwingend als Gegenstand der Erfindung anzusehen ist. Als Beispiele eines computerlesbaren Speichermediums können je nach Eignung ein Halbleiterspeicher, ein Magnetband, eine wechselbare Computerdiskette, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), eine starre Magnetplatte, eine optische Platte oder eine Trägerwelle infrage kommen. Neueste Beispiele von optischen Platten betreffen einen Compact Disc-Nur-Lese-Speicher (CD-ROM), eine Lese/Schreib-Compact Disc (CD-R/W), eine digitale Videoplatte (DVD), eine hochauflösende Videoplatte (HD-DVD) oder eine Blue-rayTM-Disc.
-
Gemäß einer Ausführungsform lädt der Prozessor 1101 ausführbaren Code vom Speichermedium 1106 in den lokalen Speicher 1102. Der Cachespeicher 1104 optimiert die Verarbeitungszeit durch Bereitstellen von temporärem Speicher, der die Anzahl der Ladeoperationen für den auszuführenden Code zu verringern hilft. Eine oder mehrere Benutzerschnittstelleneinheiten 1105 (z. B. Tastatur, Zeigeeinheit usw.) und ein Anzeigebildschirm 1107 können entweder direkt oder zum Beispiel über eine zwischengeschaltete E/A-Steuereinheit 1103 mit den anderen Elementen in der Hardwareumgebung 1110 verbunden sein. Eine Datenübertragungs-Schnittstelleneinheit 1108 wie beispielsweise ein Netzadapter kann bereitgestellt werden, um die Hardwareumgebung 1110 in die Lage zu versetzen, über zwischengeschaltete private oder öffentliche Netze (z. B. das Internet) Daten mit lokalen oder räumlich entfernten Datenverarbeitungssystemen, Druckern und Speichereinheiten auszutauschen. Leitungsgebundene oder drahtlose Modems und Ethernet-Karten stellen lediglich einige beispielhafte Typen von Netzadaptern dar.
-
Zu beachten ist, dass die Hardwareumgebung 1110 bei bestimmten Ausführungsarten möglicherweise einige oder alle der obigen Komponenten enthält oder zusätzliche Komponenten aufweisen kann, um eine zusätzliche Funktionalität oder ein zusätzliches Dienstprogramm bereitzustellen. Je nach vorgesehenem Verwendungszweck und Konfiguration kann es sich bei der Hardwareumgebung 1110 um einen Arbeitsplatz- oder Laptop-Computer oder eine wahlweise in ein eingebettetes System integrierte Datenverarbeitungseinheit wie beispielsweise eine Set-Top-Box, einen persönlichen digitalen Assistenten (PDA), eine persönliche Medienwiedergabeeinheit, eine mobile Datenübertragungseinheit (z. B. ein Mobiltelefon) oder andere ähnliche Hardwareplattformen handeln, die über Fähigkeiten zur Datenverarbeitung oder Datenspeicherung verfügen.
-
Gemäß einigen Ausführungsformen fungiert die Datenübertragungsschnittstelle 1108 als Datenübertragungsanschluss, um ein Mittel zum Austauschen von Daten mit einem oder mehreren Datenverarbeitungssystemen durch Senden und Empfangen von digitalen, elektrischen, elektromagnetischen oder optischen Signalen bereitzustellen, die analoge oder digitale Datenströme transportieren, die verschiedene Arten von Informationen darstellen, unter anderem Programmcode. Die Datenübertragung kann mittels eines lokalen oder eines fernen Netzwerks, alternativ über Funk oder ein anderes Medium erfolgen, darunter, ohne darauf beschränkt zu sein, die Verbreitung über eine Trägerwelle.
-
Die hierin bereitgestellten Software-Elemente, die auf den veranschaulichten Hardware-Elementen ausgeführt werden, sind gemäß logischen oder funktionellen Beziehungen definiert, die ihrem Wesen nach beispielhaft sind. Dabei ist jedoch zu beachten, dass die entsprechenden Verfahren, die durch die beispielhaften Software-Elemente realisiert werden, auch in den Hardware-Elementen zum Beispiel durch konfigurierte und programmierte Prozessoren, anwendungsspezifische integrierte Schaltungen (ASICs), feldprogrammierbare Gate-Arrays (FPGAs) und digitale Signalprozessoren (DSPs) codiert sein können.
-
Die Softwareumgebung 1120 von 5 kann allgemein in zwei Klassen eingeteilt werden, die eine System-Software 1121 und eine Anwendungs-Software 1122 aufweisen und auf einer oder mehreren Hardwareumgebungen 1110 ausgeführt werden. Gemäß einer Ausführungsform können die hier offenbarten Verfahren und Prozesse als System-Software 1121, Anwendungs-Software 1122 oder eine Kombination derselben realisiert werden. Die System-Software 1121 kann Steuerprogramme wie beispielsweise ein Betriebssystem (OS) oder ein Datenverwaltungssystem aufweisen, das einen oder mehrere Prozessoren 1101 (z. B. Mikrocontroller) in der Hardwareumgebung 1110 anweisen kann, wie sie funktionieren und Daten verarbeiten sollen. Die Anwendungs-Software 1122 kann, ohne darauf beschränkt zu sein, Programmcode, Datenstrukturen, Firmware, residente Software, Mikrocode oder eine beliebige andere Form von Informationen oder Routinen aufweisen, die durch einen Prozessor 1101 gelesen, analysiert oder ausgeführt werden können.
-
Mit anderen Worten, die Anwendungs-Software 1122 kann als Programmcode realisiert werden, der in ein Computerprogrammprodukt in Form eines durch Computer ausführbaren oder computerlesbaren Speichermediums eingebettet ist, das einen Programmcode zur Verwendung durch oder in Verbindung mit einem Computer oder einem beliebigen System zum Ausführen von Anweisungen bereitstellt. Darüber hinaus kann die Anwendungs-Software 1122 ein oder mehrere Computerprogramme aufweisen, die auf der Grundlage einer System-Software 1121 ausgeführt werden, nachdem sie von Speichermedien 1106 in den lokalen Speicher 1102 geladen wurden. In einer Client-Server-Architektur kann die Anwendungs-Software 1122 Client-Software und Server-Software aufweisen. Gemäß einer Ausführungsform kann die Client-Software zum Beispiel auf dem Client-Datenverarbeitungssystem ausgeführt werden, das von einem Server-Datenverarbeitungssystem verschieden und trennbar ist, auf dem die Server-Software ausgeführt wird.
-
Die Softwareumgebung 1120 kann auch eine Browser-Software 1126 zum Zugreifen auf Daten aufweisen, die über lokale oder ferne Datenverarbeitungsnetze verfügbar sind. Ferner kann die Softwareumgebung 1120 eine Benutzeroberfläche 1124 (z. B. eine grafische Benutzeroberfläche (GUI)) zum Empfangen von Benutzerbefehlen und -daten aufweisen. Es wird wiederholt darauf hingewiesen, dass die oben beschriebenen Hardware- und Software-Architekturen und -umgebungen lediglich als Beispiel dienen. Demgemäß können eine oder mehrere Ausführungsformen auf einem beliebigen Typ von Systemarchitektur, funktioneller oder logischer Plattform oder Verarbeitungsumgebung umgesetzt werden.
-
Ferner sollte klar sein, dass der Logikcode, die Programme, Module, Prozesse, Verfahren und die Reihenfolge, in der die betreffenden Prozesse jedes Verfahrens ausgeführt werden, lediglich als Beispiel dienen. Je nach Ausführungsart können die Prozesse oder alle zugrunde liegenden Teilprozesse und Verfahren in einer beliebigen Reihenfolge oder gleichzeitig ausgeführt werden, sofern aus der vorliegenden Offenbarung nichts anderes hervorgeht. Sofern nicht anderweitig ausdrücklich angegeben, ist die Definition von Logikcode in Verbindung mit dieser Offenbarung nicht auf eine bestimmte Programmiersprache bezogen oder beschränkt und kann ein oder mehrere Module aufweisen, die auf einem oder mehreren Prozessoren in verteilten, nicht verteilten, Einzelprozessor- oder Mehrprozessorumgebungen ausgeführt werden können.
-
Dem Fachmann ist einsichtig, dass eine Softwareumgebung Firmware, residente Software, Mikrocode usw. beinhalten kann. Bestimmte Komponenten, die Software oder Hardware enthalten oder Software- und Hardware-Aspekte in sich vereinen, können hierin als „Schaltung”, „Modul” oder „System” bezeichnet werden. Darüber hinaus kann der Gegenstand der Erfindung als Computerprogrammprodukt umgesetzt werden, das in einem oder mehreren computerlesbaren Speichermedien mit einem darauf verkörperten computerlesbaren Programmcode realisiert ist. Es kann eine beliebige Kombination von einem oder mehreren computerlesbaren Speichermedien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder um ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel, ohne darauf beschränkt zu sein, um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine entsprechende Vorrichtung oder Einheit oder eine beliebige geeignete Kombination derselben handeln.
-
In Verbindung mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges materielles Medium handeln, das ein Programm zum Verwenden durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen enthalten oder speichern kann. Ein computerlesbares Signalmedium kann ein weitergeleitetes Datensignal mit einem darin verkörperten computerlesbaren Programmcode beinhalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches weitergeleitetes Signal kann eine Vielfalt von Formen annehmen, darunter, ohne darauf beschränkt zu sein, elektromagnetisch, optisch oder eine beliebige geeignete Kombination derselben. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zum Verwenden durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen übertragen, weiterleiten oder transportieren kann.
-
Ein auf einem computerlesbaren Speichermedium verkörperter Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, darunter, ohne darauf beschränkt zu sein, drahtlos, leitungsgebunden, Lichtwellenleiter, HF usw. oder eine beliebige geeignete Kombination derselben. Ein Computerprogrammcode zum Ausführen der offenbarten Operationen kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache „C” oder ähnliche Programmiersprachen.
-
Der Programmcode kann vollständig auf dem Computer eines Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers durch einen beliebigen Typ von Netzwerk verbunden sein, darunter ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel durch das Internet unter Verwendung eines Internetdienstanbieters).
-
Bestimmte Ausführungsformen werden unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen offenbart. Es ist klar, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Anweisungen eines Computerprogramms umgesetzt werden können. Diese Anweisungen eines Computerprogramms können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zugeführt werden, um eine Maschine derart zu erzeugen, dass die durch den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zum Umsetzen der in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaubildes angegebenen Funktionen/Aktionen erzeugen.
-
Diese Anweisungen eines Computerprogramms können auch in einem computerlesbaren Speichermedium gespeichert sein, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten veranlassen kann, in einer bestimmten Weise derart zu funktionieren, dass die in dem computerlesbaren Speichermedium gespeicherten Anweisungen ein Herstellungsprodukt erzeugen, das Anweisungen enthält, welche die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaltbildes angegebenen Funktionen/Aktionen umsetzen.
-
Die Anweisungen des Computerprogramms können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Folge auf dem Computer, einer anderen programmierbaren Vorrichtung oder anderen Einheiten auszuführender Arbeitsschritte zu veranlassen, um einen computergestützten Prozess derart zu erzeugen, dass die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführten Anweisungen Prozesse zum Umsetzen der in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubildes angegebenen Funktionen/Aktionen umsetzen.
-
Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Ausführungsarten von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen. Demgemäß kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Abschnitt eines Codes darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktionen aufweist. Zu beachten ist ferner, dass gemäß einigen alternativen Ausführungsarten die in dem Block angegebenen Funktionen in einer von den Figuren abweichenden Reihenfolge auftreten können.
-
Zum Beispiel können zwei nacheinander gezeigte Blöcke je nach Funktionalität in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können mitunter in der umgekehrten Reihenfolge ausgeführt werden. Ferner ist zu beachten, dass jeder Block in den Blockschaubildern und/oder dem Ablaufplan und Kombinationen von Blöcken in den Blockschaubildern und/oder dem Ablaufplan durch spezielle Hardwaresysteme oder Kombinationen von spezieller Hardware und Computeranweisungen umgesetzt werden können, die die angegebenen Funktionen oder Aktionen ausführen.
-
Der beanspruchte Gegenstand der Erfindung ist hierin unter Bezugnahme auf ein oder mehrere Merkmale oder Ausführungsformen bereitgestellt worden. Dem Fachmann ist klar und einsichtig, dass ungeachtet der detaillierten Darlegung der hier bereitgestellten beispielhaften Ausführungsformen Änderungen und Modifikationen an den Ausführungsformen vorgenommen werden können, ohne den allgemein beabsichtigten Schutzumfang einzuschränken oder von diesem abzuweichen. Diese sowie verschiedene weitere Anpassungen und Kombinationen der hierin bereitgestellten Ausführungsformen liegen innerhalb des Schutzumfangs des offenbarten Gegenstands der Erfindung, der durch die Ansprüche und alle ihre Entsprechungen definiert wird.