-
Technisches Gebiet
-
Der offengelegte Erfindungsgegenstand betrifft allgemein Rechnersysteme und insbesondere das effiziente Laden von Daten in den Speicher eines Rechnersystems, das eine Vielzahl von virtuellen Maschinen beherbergt.
-
Hintergrund
-
In einer Virtualisierungsumgebung kann die Software eines Hostrechners (d. h. eines Hypervisors), die auf einer oder mehreren Software- oder Hardware-Infrastrukturen (d. h. einer Host-Maschine) ausgeführt wird, die Host-Maschine für ein oder mehrere Gast-Softwareprogramme nachbilden oder virtualisieren. Anders ausgedrückt, ein Hypervisor kann eine oder mehrere virtuelle Maschinen (VMs) realisieren.
-
Der Hypervisor realisiert die VMs, indem er Daten, die zur Realisierung der VMs (d. h. Abbilder der VMs) verwendet werden, aus einem Datenspeichersystem in einen Speicher der Host-Maschine lädt. Wenn die Abbilder von demselben Abbild (d. h. einem Original-Abbild) abgeleitet werden, können den Abbildern eine beträchtliche Menge an Daten gemein sein. Bei vorhandenen Ausführungsarten ruft der Hypervisor jedes der Abbilder ab und lädt sie unabhängig voneinander in einen getrennten Bereich des Rechnerspeichers, ohne die den mehreren VM-Abbildern gemeinsamen Daten festzustellen. Folglich verschwendet der Hypervisor Ressourcen (z. B. Verarbeitungsleistung, Speicherplatz, Speicher- und Netzwerkbandbreite), indem er die gemeinsamen Daten wiederholt abruft und lädt.
-
Die veröffentlichte US-Patentanmeldung 20090182928 legt ein Verfahren und ein System zum Erfassen der Bewegung einer VM mit Hilfe einer Kennung offen. Die veröffentlichte US-Patentanmeldung US20080263296 legt ein Verfahren und ein System zur Feststellung, ob ein Informationsblock bereits in einer Speichereinheit gespeichert ist, offen. Die
US-Patentschrift 7500048 legt ein Verfahren und ein System zur Feststellung offen, ob es zwischen einer ersten in Frage kommenden Speicherseite und einer zweiten in Frage kommenden Speicherseite einen übereinstimmenden Hash-Wert gibt. Die
US-Patentschrift 7356665 legt ein Verfahren und ein System zur Aufrechterhaltung einer umgekehrten Abbildungsstruktur offen, die Maschinenspeicherblöcke in dem Verarbeitungssystem auf physische Speicherblöcke abbildet, die in einer jeden virtuellen Maschine verwendet werden. Die
US-Patentschrift 7246200 legt ein Verfahren zur Prüfung offen, ob ein Abbild, das zu einer virtuellen Maschine gehört, in einem Speicher auf der Grundlage von Abbildungsinformationen gespeichert wird.
-
Keines dieser Schriftstücke nach dem Stand der Technik geht das Problem der Ressourcenverschwendung aufgrund der Notwendigkeit, gemeinsame Daten wiederholt abzurufen und zu laden, an.
-
Kurzdarstellung
-
Zum Zweck der Kurzdarstellung wurden hier bestimmte Aspekte, Vorteile und neuartige Merkmale beschrieben. Es versteht sich, dass nicht alle diese Vorteile gemäß einer bestimmten Ausführungsform erzielt werden können. Der offengelegte Erfindungsgegenstand kann in einer Art und Weise realisiert oder ausgeführt werden, die einen Vorteil oder eine Gruppe von Vorteilen erzielt oder optimiert, ohne alle Vorteile, die in diesem Schriftstück möglicherweise gelehrt oder zu erkennen gegeben werden, zu erzielen.
-
Gemäß einer Ausführungsform wird ein Verfahren zur Inbetriebnahme von einer oder mehreren virtuellen Maschinen auf einem Host-Rechnersystem bereitgestellt. Das Verfahren umfasst den Empfang von Abbildungsinformationen aus einem Datenspeichersystem. Die Abbildungsinformationen ordnen ein erstes in dem Datenspeichersystem gespeichertes Datensegment (data chunk) einer eindeutigen Kennung zu, um die Inbetriebnahme bzw. Installation bzw. ein Laden einer ersten virtuellen Maschine auf einem Host-Rechnersystem zu unterstützen. Sobald die Abbildungsinformationen empfangen wurden, werden sie zur Feststellung verwendet, ob in Verbindung mit der Inbetriebnahme der ersten virtuellen Maschine oder einer zweiten virtuellen Maschine auf dem Host-Rechnersystem Kopien des ersten Datensegments bereits in einen Speicher des Host-Rechnersystems geladen worden sind. Wenn noch keine Kopien des ersten Datensegments in den Rechnerspeicher geladen worden sind, wird das erste Datensegment aus dem Datenspeichersystem abgerufen, in den Rechnerspeicher geladen und verwendet, um die erste virtuelle Maschine auf dem Host-Rechnersystem in Betrieb zu nehmen.
-
Gemäß einer oder mehrerer Ausführungsformen wird ein System, das eine oder mehrere Logikeinheiten umfasst, bereitgestellt. Die eine oder die mehreren Logikeinheiten sind so konfiguriert, dass sie die Funktionen und Operationen in Verbindung mit den vorstehend offengelegten Verfahren ausführen. In noch einer weiteren Ausführungsform wird ein Rechnerprogrammprodukt, das ein rechnerlesbares Speichermedium umfasst, welches über ein rechnerlesbares Programm verfügt, bereitgestellt. Wenn das rechnerlesbare Programm auf einem Rechner ausgeführt wird, veranlasst es den Rechner, die Funktionen und Operationen in Verbindung mit den vorstehend offengelegten Verfahren auszuführen.
-
Eine oder mehrere der vorstehend offengelegten Ausführungsformen werden nachstehend zusätzlich zu bestimmten Alternativen ausführlicher dargelegt, wobei Bezug auf die beigefügten Figuren genommen wird. Der offengelegte Erfindungsgegenstand ist jedoch nicht auf eine bestimmte offengelegte Ausführungsform beschränkt.
-
Kurze Beschreibung der Zeichnungen
-
Bevorzugte Ausführungsformen der vorliegenden Erfindung werden nun lediglich anhand eines Beispiels und mit Bezug auf die folgenden Zeichnungen beschrieben, bei denen:
-
1 eine beispielhafte Virtualisierungsumgebung gemäß einer oder mehrerer Ausführungsformen veranschaulicht;
-
die 2A und 2B Flussdiagramme eines Verfahrens sind, um ein oder mehrere VM-Abbilder gemäß einer Ausführungsform abzurufen und in den Rechnerspeicher zu laden;
-
die 3 und 4 Blockschaltbilder von Hardware- und Software-Umgebungen sind, in denen ein System der vorliegenden Erfindung gemäß einer oder mehrerer Ausführungsformen betrieben werden kann.
-
Gemäß einer oder mehrerer Ausführungsformen stellen Merkmale, Elemente und Aspekte, auf die in verschiedenen Figuren mit denselben Bezugszahlen Bezug genommen wird, gleiche, gleichwertige oder ähnliche Merkmale, Elemente oder Aspekte dar.
-
Ausführliche Beschreibung von beispielhaften Ausführungsformen
-
Im Folgenden werden zahlreiche spezielle Einzelheiten aufgezeigt, um verschiedene Ausführungsformen eingehend zu beschreiben. Bestimmte Ausführungsformen können ohne diese speziellen Einzelheiten oder mit Abweichungen im Detail in die Praxis umgesetzt werden. In manchen Fällen werden bestimmte Merkmale weniger ausführlich beschrieben, um andere Aspekte nicht zu verdecken. Der mit jedem der Elemente oder Merkmale einhergehende Detaillierungsgrad sollte nicht so ausgelegt werden, dass damit die Neuartigkeit oder die Bedeutung von einem Merkmal über die anderen gestellt werden soll.
-
Bezug nehmend auf 1 umfasst eine beispielhafte Virtualisierungsumgebung 100 gemäß einer oder mehrerer Ausführungsformen ein Datenspeichersystem 110 und eine Host-Maschine 120. Das Datenspeichersystem 110 enthält eine oder mehrere Speichereinheiten 112, um Daten zu speichern, und eine Speichersteuereinheit 114, um Daten zu verwalten. Die Host-Maschine 120 enthält einen Rechnerspeicher 122, um Daten zu speichern, eine Rechnerspeicher-Steuereinheit 124, um Daten zu verwalten, und einen Hypervisor 126, um eine oder mehrere VMs 130 zu realisieren.
-
Bezug nehmend auf die 1, 2A und 2B können Daten, die zur Realisierung der VMs 130 (d. h. VM-Abbilder) verwendet werden, gemäß einer Ausführungsform aus den Speichereinheiten 112 abgerufen und in den Rechnerspeicher 122 geladen werden. Die Speichersteuereinheit 114 hat die VM-Abbilder gemäß einem Speicherschema, das Kopieren-beim-Schreiben-(Copy-on-Write-), Deduplizierungs- oder andere speicherplatzsparende Speichermechanismen verwendet, um zu verhindern oder ganz auszuschließen, dass mehrere Kopien von gemeinsam benutzten Daten in dem Datenspeichersystem 110 gespeichert werden, in den Speichereinheiten 112 gespeichert (P200). Es ist erwähnenswert, dass die VM-Abbilder eine beträchtliche Datenmenge gemeinsam haben können, wenn die VM-Abbilder von einem Original-Abbild abgeleitet werden. In einer Ausführungsart kann ein VM-Abbild zum Beispiel von einem Original-Abbild abgeleitet werden, indem eine speicherplatzsparende Zeitpunkt-(Point-in-time-)Kopie (z. B. eine Momentaufnahme) des Original-Abbilds erzeugt und die Kopie anschließend geändert wird.
-
Jedem Datensegment, das in dem Datenspeichersystem 110 gespeichert wird, kann auf vorteilhafte Weise eine eindeutige Kennung zugeordnet werden (P210).
-
Ein Datensegment bezieht sich auf einen Datenblock, eine Datenerweiterung oder eine andere Gruppierung von Daten. In Abhängigkeit von der gegebenen Art der Ausführung kann eine eindeutige Kennung, die einem Datensegment zugeordnet wird, entsprechend dem Speicherort, entsprechend dem Inhalt des Datensegments oder entsprechend einem anderen Mechanismus zur Erzeugung einer solchen Kennung erzeugt werden. Bei manchen Ausführungsarten kann Kopien eines Datensegments, die an demselben Speicherort gespeichert sind oder denselben Inhalt haben, somit dieselbe eindeutige Kennung zugeordnet werden.
-
In einer beispielhaften Ausführungsform können, wenn das Kopieren-beim-Schreiben-Verfahren angewendet wird, um eine Zeitpunkt-Kopie eines Datensegments zu speichern, eine oder mehrere Kopien des Datensegments in Abhängigkeit davon, ob das Datensegment nach einem bestimmten Zeitpunkt geändert worden ist, in einem ersten oder in einem zweiten Speicherbereich gespeichert werden. Bei einem solchen Speicherschema kann eine eindeutige Kennung für eine nicht geänderte Kopie des Datensegments zum Beispiel eine Kennung für den ersten Speicherbereich und den Speicherort der Kopie in dem ersten Speicherbereich enthalten. Eine eindeutige Kennung für eine geänderte Kopie des Datensegments kann beispielsweise eine Kennung für einen zweiten Speicherbereich und den Speicherort der Kopie in dem zweiten Speicherbereich umfassen.
-
Bei anderen Speicherschemata kann eine eindeutige Kennung für ein Datensegment beispielsweise die physische Adresse des Datensegments umfassen. Alternativ kann eine eindeutige Kennung für ein Datensegment zum Beispiel einen Hash-Wert oder einen anderen Wert umfassen, der von dem Inhalt des Datensegments erzeugt wurde.
-
Nach wie vor Bezug nehmend auf die 1, 2A und 2B versorgt die Speichersteuereinheit 114 den Hypervisor 126 mit Informationen (z. B. Abbildungsinformationen), wobei jedem Datensegment der VM-Abbilder eine eindeutige Kennung zugeordnet wird (P220). In Abhängigkeit von der gegebenen Art der Ausführung können solche Abbildungsinformationen von dem Hypervisor 126 beschafft werden, indem der Hypervisor 126 entweder eine ausdrückliche Anforderung an die Speichersteuereinheit 114 für diese Informationen sendet oder indem die Abbildungsinformationen im Huckepack-Verfahren auf anderen Datenverkehr, der von der Speichersteuereinheit 114 an den Hypervisor 126 fließt, aufgesattelt werden oder indem ein beliebiges anderes zur Verfügung stehendes Mittel verwendet wird, das der Beschaffung solcher Informationen dient. Es versteht sich, dass der offengelegte Erfindungsgegenstand nicht auf eine bestimmte Ausführungsart beschränkt ist.
-
Für jedes Datensegment eines VM-Abbilds, das aus dem Datenspeichersystem 110 abgerufen und in den Rechnerspeicher 122 geladen werden soll, verwendet der Hypervisor 126 die zu dem Datensegment gehörende eindeutige Kennung, um festzustellen, ob als Teil der Installation eines ersten VM-Abbilds (d. h. des aktuellen VM-Abbilds) oder eines zweiten VM-Abbilds (d. h. eines vorherigen installierten VM-Abbilds) eine Kopie des Datensegments bereits abgerufen und in den Rechnerspeicher 122 geladen worden ist (P230). Wenn eine Kopie des Datensegments bereits abgerufen und in den Rechnerspeicher 122 geladen worden ist, wird keine zweite Kopie desselben Datensegments abgerufen und in den Rechnerspeicher 122 geladen, um das erste VM-Abbild zu installieren. Stattdessen verhält es sich so, dass das erste VM-Abbild die Kopie des Datensegments mitbenutzt, die bereits in den Rechnerspeicher 122 geladen worden ist (P240). Alternativ ersucht der Hypervisor 126 die Rechnerspeicher-Steuereinheit 124, einen Kopiervorgang des Datensegments von Rechnerspeicher zu Rechnerspeicher durchzuführen, statt das Datensegment nochmals aus dem Datenspeichersystem 110 abzurufen.
-
Wenn keine vorherige Kopie des Datensegments abgerufen und in den Rechnerspeicher 122 geladen worden ist, ruft der Hypervisor 126 das Datensegment aus dem Datenspeichersystem 110 ab und stellt das Datensegment der Rechnerspeicher-Steuereinheit 124 zur Verfügung (P250). Nach dem Empfang des Datensegments lädt die Rechnerspeicher-Steuereinheit 124 das Datensegment in den Rechnerspeicher 122, wobei sie ein speicherplatzsparendes Speicherschema verwendet, das verhindert oder ganz ausschließt, dass mehrere Kopien der gemeinsam benutzten Daten in dem Rechnerspeicher 122 gespeichert werden (P260). Sobald das Datensegment in den Rechnerspeicher 122 geladen worden ist, aktualisiert der Hypervisor 126 eine Datenstruktur (z. B. eine Tabelle, eine Matrix, eine Bitmap usw.), um anzuzeigen, dass das Datensegment in den Rechnerspeicher 122 geladen worden ist (P270).
-
Bei bestimmten Ausführungsarten kann eine VM aufgrund einer Änderung des Zustands der VM geändert werden. Wenn dies der Fall ist, kann ein Datensegment für eine erste VM, das von der ersten VM und von der zweiten VM gemeinsam benutzt wird, geändert werden, nachdem es in den Rechnerspeicher 122 geladen worden ist. Bei solchen Ausführungsarten kann der Hypervisor 124 die eindeutige Kennung, die zu dem in den Rechnerspeicher 122 geladenen Datensegment gehört, aktualisieren, um beispielsweise einen Zeitstempel oder eine Versionsnummer aufzunehmen, um das Datensegment dahingehend zu unterscheiden, dass es zu der ersten VM und nicht zu der zweiten VM gehört. In diesem Szenario wird, wenn die zweite VM bereits installiert worden ist, eine Kopie des Datensegments vor der Änderung reserviert und in Verbindung mit der zweiten VM geladen. Alternativ kann der Hypervisor 120 untersagen, dass das Datensegment geändert wird, während es noch in Verwendung ist.
-
Die vorstehend genannten Prozesse verhindern, dass Kopien derselben Daten, die in verschiedenen Speicherbereichen eines Datenspeichersystems gespeichert sind, mehr als einmal aus dem Datenspeicher abgerufen und in den Rechnerspeicher geladen werden. Folglich werden Daten abgerufen und in den Rechnerspeicher geladen, ohne Verarbeitungsleistung (z. B. Eingabe-/Ausgabe-(E/A-)Operationen), Speicherplatz oder Speicher- und Netzwerkbandbreite zu verschwenden. Auch können die vorstehend genannten Prozesse auf jede beliebige Art von Daten angewendet werden, die aus einer Gruppe von Speicherbereichen in den Speicher einer beliebigen Art von Rechnersystem geladen werden können. Daher sollte der Umfang des beanspruchten Erfindungsgegenstands nicht dahingehend ausgelegt werden, dass er auf das Laden von VM-Abbildern in den Speicher eines Rechnersystems, das VMs beherbergt, beschränkt ist.
-
In anderen Ausführungsformen kann der offengelegte Erfindungsgegenstand als eine sowohl aus Hardware- als auch aus Software-Elementen bestehende Kombination oder alternativ entweder ganz in Form von Hardware oder aber ganz in Form von Software realisiert werden. Hier offengelegte Rechnersysteme und Programm-Software können darüber hinaus eine gesteuerte Datenverarbeitungsumgebung umfassen, die in Form von Hardware-Komponenten oder Logik-Code dargestellt werden kann, welcher ausgeführt wird, um Verfahren und Prozesse durchzuführen, die die hier beabsichtigten Ergebnisse erzielen. Die Verfahren und Prozesse setzen die Universalmaschine in eine Maschine, die einem ganz bestimmten Zweck dient, um, wenn die Verfahren und Prozesse von einem Universalrechnersystem oder einer Universalmaschine durchgeführt werden.
-
Bezug nehmend auf die 3 und 4 kann eine Rechnersystemumgebung gemäß einer beispielhaften Ausführungsform aus einer Hardware-Umgebung 1110 und einer Software-Umgebung 1120 bestehen. Die Hardware-Umgebung 1110 kann Logikeinheiten, Schaltungen oder andere Maschinen und Geräte umfassen, die eine Ausführungsumgebung für die Komponenten der Software-Umgebung 1120 zur Verfügung stellen. Die Software-Umgebung 1120 wiederum kann die Ausführungsbefehle, einschließlich der zugrunde liegenden Betriebseinstellungen und Konfigurationen, für die verschiedenen Komponenten der Hardware-Umgebung 1110 bereitstellen.
-
Bezug nehmend auf 3 können die Anwendungs-Software und der Logik-Code, die hier offengelegt werden, in Form von rechnerlesbarem Code realisiert werden, der über ein oder mehrere Rechnersysteme ausgeführt wird, welche von der beispielhaften Hardware-Umgebung 1110 dargestellt werden. Wie gezeigt ist, kann die Hardware-Umgebung 1110 einen Prozessor 1101 umfassen, der über einen Systembus 1100 mit einem oder mehreren Speicherelementen verbunden ist. Die Speicherelemente können beispielsweise den lokalen Rechnerspeicher 1102, die Speichermedien 1106, den Cachespeicher 1104 oder andere von einem Rechner nutzbare oder lesbare Datenträger umfassen. Im Rahmen dieser Offenbarung kann ein von einem Rechner nutzbares oder lesbares Speichermedium jeden beliebigen beschreibbaren Gegenstand einschließen, der verwendet werden kann, um Programmcode aufzunehmen, zu speichern, zu übertragen, weiterzugeben oder zu transportieren.
-
Ein rechnerlesbares Speichermedium kann ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbspeicher-Medium, -System, -Vorrichtung oder -Einheit sein. Das rechnerlesbare Speichermedium kann auch ohne Einschränkung insoweit in einem Weitergabe-Medium realisiert werden, als eine solche Realisierung als ein gesetzlich festgelegter Patent-Gegenstand erachtet wird. Zu Beispielen für rechnerlesbare Speichermedien können gegebenenfalls ein Halbleiterspeicher oder Festkörperspeicher, ein Magnetband, eine auswechselbare Rechnerdiskette, ein Direktzugriffspeicher (RAM), ein Nur-Lese-Speicher (ROM), eine magnetische Festplatte, eine optische Platte oder eine Trägerwelle gehören. Zu aktuellen Beispielen für optische Platten gehören ein Compact-Disk-Nur-Lese-Speicher (CD-ROM), ein Compact-Disk-Schreib-/Lese-Speicher (CD-R/W), eine digitale Videoplatte (DVD), eine hochauflösende Videoplatte (HD-DVD) oder eine Blue-rayTM-Platte.
-
In einer Ausführungsform lädt der Prozessor 1101 ausführbaren Code aus den Speichermedien 1106 in den lokalen Rechnerspeicher 1102. Der Cachespeicher 1104 optimiert die Verarbeitungszeit, indem er einen temporären Speicher bereitstellt, der dazu beiträgt, die Häufigkeit zu verringern, mit der Code zur Ausführung geladen wird. Eine oder mehrere Benutzerschnittstellen-Einheiten 1105 (z. B. Tastatur, Zeigegerät usw.) und ein Bildschirm 1107 können entweder direkt oder beispielsweise über eine zwischengeschaltete E/A-Steuereinheit 1103 mit den anderen Elementen in der Hardware-Umgebung 1110 verbunden werden. Eine Datenübertragungs-Schnittstelleneinheit 1108, wie zum Beispiel ein Netzwerk-Adapter, kann bereitgestellt werden, um der Hardware-Umgebung 1110 zu ermöglichen, Daten mit lokalen oder fernen Rechnersystemen, Druckern und Speichereinheiten über zwischengeschaltete private oder öffentliche Netzwerke (z. B. das Internet) auszutauschen. Drahtgebundene oder drahtlose Modems und Ethernet-Karten sind ein paar der als Beispiel dienenden Arten von Netzwerkadaptern.
-
Es sei erwähnt, dass die Hardware-Umgebung 1110 bei bestimmten Ausführungsarten einen Teil oder alle der vorstehenden Komponenten gegebenenfalls nicht enthält oder aber zusätzliche Komponenten umfassen kann, um ergänzende Funktionen oder ergänzenden Nutzen bereitzustellen. In Abhängigkeit von der vorgesehenen Verwendung und Konfiguration kann es sich bei der Hardware-Umgebung 1110 um einen Tischrechner oder einen Laptop-Rechner oder eine andere Rechnereinheit handeln, die optional in einem eingebetteten System wie zum Beispiel einem Aufsatzgerät (Set-Top-Box), einem persönlichen digitalen Assistenten (PDA), einem persönlichen Medienwiedergabegerät, einer mobilen Kommunikationseinheit (z. B. einem schnurlosen Telefon) oder anderen ähnlichen Hardware-Plattformen enthalten ist, die über Informationsverarbeitungs- oder Datenspeicherfähigkeiten verfügen.
-
In manchen Ausführungsformen dient die Datenübertragungs-Schnittstelle 1108 als Datenübertragungsanschluss, um ein Mittel zum Austausch von Daten mit einem oder mehreren Rechnersystemen bereitzustellen, indem digitale, elektrische, elektromagnetische oder optische Signale gesendet und empfangen werden, die analoge oder digitale Datenströme übertragen, welche verschiedene Arten von Informationen einschließlich Programmcode darstellen. Der Datenaustausch kann mittels eines lokalen oder eines fernen Netzwerks oder alternativ mittels Übertragung durch die Luft oder ein anderes Medium einschließlich der Weitergabe über eine Trägerwelle, ohne darauf beschränkt zu sein, stattfinden.
-
Die offengelegten Software-Elemente, die auf den veranschaulichten Hardware-Elementen ausgeführt werden, werden hier gemäß logischen oder funktionalen Beziehungen, deren Art beispielhaft ist, angegeben. Es sei jedoch angemerkt, dass die jeweiligen Verfahren, die mittels der beispielhaften Software-Elemente durchgeführt werden, beispielsweise auch mittels konfigurierter und programmierter Prozessoren, anwendungsspezifischer integrierter Schaltungen (application specific integrated circuits (ASICs)), kundenprogrammierbarer Universalschaltkreise (field programmable gate arrays (FPGAs)) sowie Digitalsignalprozessoren (DSPs) in den Hardware-Elementen codiert sein können.
-
Bezug nehmend auf 4 kann die Software-Umgebung 1120 im Allgemeinen in zwei Klassen unterteilt werden, welche die System-Software 1121 und die Anwendungs-Software 1122 umfassen, die auf einer oder mehreren Hardware-Umgebungen 1110 ausgeführt werden. In einer Ausführungsform können die hier offengelegten Verfahren und Prozesse als System-Software 1121, Anwendungs-Software 1122 oder als eine Kombination daraus realisiert werden. Die System-Software 1121 kann Steuerprogramme wie zum Beispiel ein Betriebssystem (operating system (OS)) oder ein Informationsverwaltungssystem umfassen, die einem oder mehreren Prozessoren 1101 (z. B. Mikrocontroller) in der Hardware-Umgebung 1110 Anweisungen dahingehend erteilen, wie Funktionen auszuführen oder Daten zu verarbeiten sind. Die Anwendungs-Software 1122 kann Programmcode, Datenstrukturen, Firmware, residente Software, Mikrocode oder eine beliebige andere Form von Informationen oder Routinen, ohne darauf beschränkt zu sein, umfassen, die von einem Prozessor 1101 gelesen, ausgewertet oder ausgeführt werden können.
-
Anders ausgedrückt, die Anwendungs-Software 1122 kann als Programmcode realisiert werden, der in ein Rechnerprogrammprodukt in Form von einem von einem Rechner nutzbaren oder lesbaren Speichermedium eingebettet ist, welches Programmcode zur Verwendung durch einen Rechner oder ein beliebiges Befehlsausführungssystem oder in Verbindung mit einem Rechner oder einem beliebigen Befehlsausführungssystem bereitstellt. Überdies kann die Anwendungs-Software 1122 ein oder mehrere Rechnerprogramme umfassen, die auf System-Software 1121 aufsetzend ausgeführt werden, nachdem sie aus dem Speichermedium 1106 in den lokalen Rechnerspeicher 1102 geladen worden sind. In einer Client-Server-Architektur kann die Anwendungs-Software 1122 Client-Software und Server-Software umfassen. In einer Ausführungsform kann die Client-Software zum Beispiel auf einem Client-Rechnersystem ausgeführt werden, das sich von einem Server-Rechnersystem, auf dem Server-Software ausgeführt wird, unterscheidet und von diesem getrennt werden kann.
-
Die Software-Umgebung 1120 kann auch Browser-Software 1126 umfassen, um auf Daten zuzugreifen, die über lokale oder ferne Rechnernetzwerke zur Verfügung stehen. Ferner kann die Software-Umgebung 1120 eine Benutzerschnittstelle 1124 (z. B. eine grafische Benutzeroberfläche (graphical user interface (GUI)) umfassen, um Benutzerbefehle und Daten zu empfangen. Es sei nochmals erwähnt, dass die vorstehend beschriebenen Hardware- und Software-Architekturen und -Umgebungen zu Beispielzwecken angegeben wurden. Als solches können eine oder mehrere Ausführungsformen über jede beliebige Art einer Systemarchitektur, Funktions- oder Logikplattform oder Verarbeitungsumgebung realisiert werden.
-
Es sollte auch klar sein, dass der Logik-Code, die Programme, die Module, die Prozesse, die Verfahren und die Reihenfolge, in der die jeweiligen Prozesse eines jeden Verfahrens durchgeführt werden, lediglich Beispielcharakter haben. In Abhängigkeit von der Ausführungsart können die Prozesse und jedwede zugrunde liegenden Unterprozesse und Verfahren in einer beliebigen Reihenfolge oder aber gleichzeitig durchgeführt werden, sofern in der vorliegenden Offenbarung nichts anderes angegeben ist. Außerdem bezieht sich die Definition von Logik-Code im Rahmen dieser Offenbarung, sofern nichts anderes ausdrücklich angegeben ist, weder auf irgendeine bestimmte Programmiersprache noch ist sie auf irgendeine bestimmte Programmiersprache beschränkt, und sie kann ein oder mehrere Module umfassen, die auf einem oder mehreren Prozessoren in verteilten und nicht verteilten Einfach- und Mehrfachverarbeitungsumgebungen ausgeführt werden können.
-
Für den Fachmann versteht es sich, dass eine Software-Ausführung Firmware, residente Software, Mikrocode usw. enthalten kann. Bestimmte Komponenten, die Software oder Hardware enthalten oder Software- und Hardware-Aspekte vereinen, können hier allgemein als eine ”Schaltung”, ein ”Modul” oder ein ”System” bezeichnet werden. Überdies kann der offengelegte Erfindungsgegenstand als ein Rechnerprogrammprodukt realisiert werden, das in einem oder mehreren rechnerlesbaren Speichermedien enthalten ist, auf denen sich von einem Rechner lesbarer Programmcode befindet. Jede beliebige Kombination aus einem oder mehreren rechnerlesbaren Speichermedien kann verwendet werden. Das rechnerlesbare Speichermedium kann ein rechnerlesbarer Signaldatenträger oder ein rechnerlesbares Speichermedium sein. Ein rechnerlesbares Speichermedium kann zum Beispiel, ohne auf diese beschränkt zu sein, ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, -vorrichtung, -einheit oder eine beliebige geeignete Kombination des Vorstehenden sein.
-
In Zusammenhang mit diesem Schriftstück kann ein rechnerlesbares Speichermedium jedes physisch greifbare Medium sein, das ein Programm zur Verwendung durch ein Befehlsausführungssystem, eine Befehlsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Befehlsausführungssystem, einer Befehlsausführungsvorrichtung oder -einheit enthalten oder speichern kann. Ein rechnerlesbarer Signaldatenträger kann ein übertragenes Datensignal mit einem darin enthaltenen rechnerlesbaren Programmcode, beispielsweise in einem Basisband oder als Teil einer Trägerwelle, enthalten. Solch ein übertragenes Signal kann eine beliebige einer Vielzahl von Formen einschließlich elektromagnetischer, optischer Formen oder jede beliebige geeignete Kombination dieser Formen, ohne auf diese beschränkt zu sein, annehmen. Bei einem rechnerlesbaren Signaldatenträger kann es sich um jeden beliebigen rechnerlesbaren Signaldatenträger handeln, der kein rechnerlesbares Speichermedium ist und der ein Programm zur Verwendung durch ein Befehlsausführungssystem, eine Befehlsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Befehlsausführungssystem, einer Befehlsausführungsvorrichtung oder -einheit übertragen, weiterleiten oder transportieren kann.
-
Auf einem rechnerlesbaren Speichermedium enthaltener Programmcode kann mittels eines beliebigen geeigneten Mediums einschließlich drahtloser Übertragungsmittel, drahtgebundener Übertragungsmittel, Lichtwellenleiterkabel, Hochfrequenz (HF) usw., ohne auf diese beschränkt zu sein, oder mittels jeder beliebigen geeigneten Kombination des Vorstehenden übertragen werden. Rechnerprogrammcode zur Durchführung der offengelegten Operationen kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen einschließlich einer objektorientierten Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache ”C” oder in ähnlichen Programmiersprachen geschrieben sein.
-
Die Ausführung des Programmcodes kann komplett auf dem Rechner eines Benutzers, teilweise auf dem Rechner des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Rechner des Benutzers und teilweise auf einem fernen Rechner oder komplett auf dem fernen Rechner oder Server erfolgen. Im letzteren Szenario kann der ferne Rechner mit dem Rechner des Benutzers über jede beliebige Art eines Netzwerks einschließlich eines lokalen Netzwerks (LAN) oder eines Weitverkehrsnetzes (WAN) verbunden werden oder die Verbindung kann zu einem externen Rechner (zum Beispiel über das Internet mittels eines Internet-Diensteanbieters) hergestellt werden.
-
Bestimmte Erscheinungsformen werden mit Bezug auf Darstellungen in Flussdiagrammen und/oder mit Bezug auf Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Rechnerprogrammprodukten gemäß Ausführungsformen offengelegt. Es versteht sich, dass jeder Block der Darstellungen in den Flussdiagrammen und/oder der Blockschaltbilder sowie Kombinationen aus Blöcken in den Darstellungen der Flussdiagramme und/oder den Blockschaltbildern mittels Rechnerprogrammbefehlen realisiert werden können. Diese Rechnerprogrammbefehle können einem Prozessor eines Universalrechners, eines Rechners für spezielle Anwendungen oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die über den Prozessor des Rechners oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die in dem Flussdiagramm und/oder dem Block oder den Blöcken des Blockschaltbilds angegeben sind.
-
Diese Rechnerprogrammbefehle können auch in einem rechnerlesbaren Speichermedium gespeichert werden, das einen Rechner, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die in dem rechnerlesbaren Speichermedium gespeicherten Befehle einen Herstellungsgegenstand erzeugen, der Befehle enthält, die die Funktion/den Vorgang ausführen, welche beziehungsweise welcher in dem Flussdiagramm und/oder dem Block oder den Blöcken des Blockschaltbilds angegeben ist.
-
Die Rechnerprogrammbefehle können auch auf einen Rechner, eine andere programmierbare Datenverarbeitungsvorrichtung oder auf andere Einheiten geladen werden, um die Ausführung einer Reihe von Betriebsschritten auf dem Rechner, einer anderen programmierbaren Vorrichtung oder auf anderen Einheiten zu bewirken, um einen von einem Rechner ausgeführten Prozess zu erzeugen, so dass die Befehle, die auf dem Rechner oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ermöglichen, die in dem Flussdiagramm und/oder dem Block oder den Blöcken des Blockschaltbilds angegeben sind.
-
Das Flussdiagramm und die Blockschaltbilder in den Figuren veranschaulichen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Rechnerprogrammprodukten gemäß verschiedenen Ausführungsformen. In dieser Hinsicht kann jeder Block in dem Flussdiagramm oder den Blockschaltbildern ein Modul, ein Segment oder einen Code-Teil darstellen, das beziehungsweise der einen oder mehrere ausführbare Befehle zur Ausführung der angegebenen logischen Funktion(en) umfasst. Es sei auch angemerkt, dass die in dem Block angegebenen Funktionen in manchen alternativen Ausführungsarten in einer anderen als in der in den Figuren angegebenen Reihenfolge auftreten können.
-
In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Man wird auch feststellen, dass jeder Block der Blockschaltbilder und/oder der Darstellung in den Flussdiagrammen sowie Kombinationen aus Blöcken in den Blockschaltbildern und/oder der Darstellung in den Flussdiagrammen von auf Hardware basierenden Systemen für spezielle Anwendungen, welche die angegebenen Funktionen oder Vorgänge durchführen, oder von Kombinationen aus Hardware für spezielle Anwendungen und Rechnerbefehlen ausgeführt werden können.
-
Der offengelegte Erfindungsgegenstand wurde hier mit Bezug auf ein oder mehrere Merkmale oder Ausführungsformen beschrieben. Der Fachmann erkennt und versteht, dass trotz der hier vorgenommenen ausführlichen Beschreibung der beispielhaften Ausführungsformen Ab- und Veränderungen an den Ausführungsformen vorgenommen werden können, ohne den allgemein vorgesehenen Umfang zu beschränken oder von dem allgemein vorgesehenen Umfang abzuweichen. Diese und verschiedene andere Anpassungen und Kombinationen der hier angegebenen Ausführungsformen fallen unter den offengelegten Erfindungsgegenstand, der in den Ansprüchen und deren vollständigem Satz von Entsprechungen beschrieben ist.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- US 7500048 [0004]
- US 7356665 [0004]
- US 7246200 [0004]