-
Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
-
HINTERGRUND
-
Die vorliegende Offenbarung betrifft Prozessormodussperren.
-
Cloud Computing (Datenverarbeitung auf Rechnerwolken) ist netzwerkbasierte Datenverarbeitung, bei der typischerweise große Sammlungen von Servern, die in Datenzentren oder „Server-Farmen” untergebracht sind, entfernten Endbenutzern nach Bedarf Computerressourcen und Datenspeicherplatz bereitstellen. Einige Cloud-Computing-Dienste stellen Endbenutzern, die eine Schnittstelle zu den Anwendungen über Internet-Browser oder andere Software auf der Client-Seite herstellen, den Zugang zu Softwareanwendungen bereit, wie Textverarbeitungsprogrammen und anderen häufig verwendeten Anwendungen. Elektronische Daten der Benutzer werden üblicherweise in der Server-Farm anstatt auf den Rechenvorrichtungen der Benutzer gespeichert. Die Pflege von Softwareanwendungen und Benutzerdaten auf der Server-Farm vereinfacht die Verwaltung von Endbenutzer-Rechenvorrichtungen. Einige Cloud-Computing-Dienste ermöglichen Endbenutzern das Ausführen von Softwareanwendungen in virtuellen Maschinen.
-
ZUSAMMENFASSUNG
-
Im Allgemeinen kann ein innovativer Aspekt des in dieser Spezifikation beschriebenen Gegenstands in Verfahren ausgeführt werden, die die Handlungen des Betriebs eines Prozessors im datenverarbeitenden Apparat in einem ersten Verarbeitungsmodus umfassen; Setzen eines oder mehrerer Steuerbits eines Steuerregisters des Prozessors, um den Prozessor so zu konfigurieren, dass er in einem anderen zweiten Verarbeitungsmodus betrieben wird; Bereitstellen eines virtuellen Registers in einer virtuellen Maschine, die auf dem datenverarbeitenden Apparat ausgeführt wird, wobei das virtuelle Register ein oder mehrere Sperrbits aufweist, die den Steuerbits des Steuerregisters entsprechen; Setzen eines Wertes des einen oder der mehreren Sperrbits des virtuellen Registers; und in Reaktion auf das Setzen des Wertes des einen oder der mehreren Sperrbits, Vermeiden, dass der Prozessor so konfiguriert wird, dass er im ersten Verarbeitungsmodus betrieben wird. Andere Ausführungsformen dieses Aspektes umfassen entsprechende Systeme, Apparate und Computerprogramme.
-
Diese und andere Aspekte können als Option eins oder mehrere der folgenden Merkmale beinhalten. Ein Versuch, den Wert des einen oder der mehreren Steuerbits des Steuerregisters zu ändern, kann abgefangen werden. Das Setzen des Wertes des einen oder der mehreren Sperrbits kann ferner das Angeben einer Überwachung des Wertes des einen oder der mehreren Steuerbits umfassen. Das Betreiben des Prozessors kann das Betreiben des Prozessors im ersten Verarbeitungsmodus während des Hochfahrens eines Betriebssystems des Prozessors umfassen. Der erste Verarbeitungsmodus kann ein 16-Bit-Verarbeitungsmodus sein und der zweite Verarbeitungsmodus kann ein 32-Bit-Verarbeitungsmodus sein. Der erste Verarbeitungsmodus kann ein 16-Bit-Verarbeitungsmodus sein und der zweite Verarbeitungsmodus kann ein 64-Bit-Verarbeitungsmodus sein. In Reaktion auf das Setzen des Wertes des einen oder der mehreren Sperrbits kann der Prozessor so konfiguriert werden, dass er nur im zweiten Verarbeitungsmodus betrieben wird.
-
Bestimmte Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können so implementiert werden, dass sie einen oder mehrere der folgenden Vorteile verwirklichen. Eine Rechenvorrichtung kann vom Betrieb in einem ersten Verarbeitungsmodus zum Betrieb in einem zweiten Verarbeitungsmodus wechseln. Sobald die Rechenvorrichtung im zweiten Verarbeitungsmodus betrieben wird, kann die Rechenvorrichtung nicht wieder im ersten Verarbeitungsmodus betrieben werden.
-
Die Details einer oder mehrerer Ausführungen des Gegenstands, die in dieser Spezifikation beschrieben werden, sind in den begleiteten Zeichnungen und der Beschreibung unten dargelegt. Andere Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen deutlich.
-
BESCHREIBUNG DER ZEICHNUNGEN
-
1 veranschaulicht eine beispielhafte Systemarchitektur einer virtuellen Maschine gemäß der vorliegenden Offenbarung.
-
2–4 veranschaulichen vereinfachte schematische Darstellungen eines beispielhaften virtuellen Maschinensystems.
-
5 veranschaulicht ein Ablaufdiagramm eines beispielhaften Verfahrens zum Steuern eines Verarbeitungsmodus des virtuellen Maschinensystems.
-
AUSFÜHRLICHE BESCHREIBUNG
-
1 ist eine schematische Darstellung eines beispielhaften virtuellen Maschinensystems 100. Das System umfasst eine oder mehrere Hostmaschinen wie beispielsweise Hostmaschine 102 und Hostmaschine 104. Im Allgemeinen ist eine Hostmaschine eine oder mehrere datenverarbeitende Apparate wie ein rackmontierter Server oder eine andere Rechenvorrichtung. Hostmaschinen können verschiedene Fähigkeiten und Computerarchitekturen aufweisen. Hostmaschinen können miteinander über ein internes Datenkommunikationsnetzwerk 116 kommunizieren. Das interne Netzwerk kann beispielsweise ein oder mehrere drahtgebundene (z. B. Ethernet-) oder drahtlose (z. B. WI-FI-)Netzwerke umfassen. In einigen Implementierungen ist das interne Netzwerk 116 ein Intranet. Hostmaschinen können auch mit Vorrichtungen in externen Netzwerken wie dem Internet 122 über ein oder mehrere Gateways 120 kommunizieren, die datenverarbeitende Apparate sind, die für das Weiterleiten von Datenkommunikationsverkehr zwischen dem internen Netzwerk 116 und dem Internet 122 verantwortlich sind. Andere Arten von externen Netzwerken sind möglich.
-
Jede Hostmaschine führt ein Hostbetriebssystem oder andere Software aus, das/die die zugrunde liegende Hostmaschinenhardware virtualisiert und die gleichzeitige Ausführung einer oder mehrerer virtueller Maschinen verwaltet. Zum Beispiel verwaltet das Hostbetriebssystem 106 die virtuelle Maschine (VM) 110 und VM 112, während Hostbetriebssystem 108 eine einzige VM 114 verwaltet. Jede VM umfasst eine simulierte Version der zugrunde liegenden und als virtuelle Hardware (z. B. virtuelle Hardware 110a, 112a und 114a) bezeichneten Hostmaschinenhardware. Software, die durch die virtuelle Hardware ausgeführt wird, wird als Gastsoftware bezeichnet. In einigen Implementierungen kann Gastsoftware nicht bestimmen, ob sie durch virtuelle Hardware oder durch eine physikalische Hostmaschine ausgeführt wird. Wenn Gastsoftware, die in einer VM ausgeführt wird, oder die VM selbst fehlerhaft funktioniert oder abbricht, werden andere VMs, die auf der Hostmaschine ausgeführt werden, nicht beeinflusst. (Ein) Mikroprozessor(en) einer Hostmaschine kann/können Mechanismen auf Prozessorebene umfassen, um virtueller Hardware zu ermöglichen, Softwareanwendungen effizient auszuführen, indem zugelassen wird, dass Gastsoftware-Anweisungen direkt auf dem Mikroprozessor der Hostmaschine ausgeführt werden, ohne dass Neuschreiben von Code, Neukompilierung oder Anweisungsemulation notwendig ist.
-
Jeder VM (z. B. VMs 110, 112 und 114) wird ein Satz von Seiten virtuellen Speichers vom virtuellen Speicher des zugrunde liegenden Hostbetriebssystems zugeordnet und werden virtuelle Plattenblöcke von einem oder mehreren virtuellen Plattenlaufwerken zugeordnet zur Verwendung durch die Gastsoftware, die auf der VM ausgeführt wird. So ordnet beispielsweise Hostbetriebssystem 106 Speicherseiten und Plattenblöcke zu VM 110 und VM 112 zu und Hostbetriebssystem 108 führt dasselbe mit VM 114 durch. In einigen Implementierungen kann eine gegebene VM nicht auf die Seiten virtuellen Speichers zugreifen, die anderen VMs zugeordnet sind. So kann beispielsweise VM 110 nicht auf Speicherseiten zugreifen, die VM 112 zugeordnet wurden. Ein virtuelles Plattenlaufwerk kann über mehrere VM-Neustarts hinweg verbunden bleiben. Virtuelle Plattenblöcke werden auf physikalischen Plattenlaufwerken zugeordnet, die beispielsweise mit Hostmaschinen verbunden oder über das interne Netzwerk 116 verfügbar sind. Zusätzlich zu virtuellem Speicher und Plattenressourcen können VMs Netzwerkadressen zugeordnet werden, durch die deren entsprechende Gastsoftware mit anderen Prozessen kommunizieren kann, die über das interne Netzwerk 116 oder das Internet 122 erreichbar sind. So kann beispielsweise Gastsoftware, die auf VM 110 ausgeführt wird, mit Gastsoftware kommunizieren, die auf VM 112 oder VM 114 ausgeführt wird. In einigen Implementierungen ist jede VM einem oder mehreren eindeutigen Internetprotokoll-(Internet Protocol, IP-)Adressen der IP Version 4 oder Version 6 zugeordnet. In einigen Implementierungen ist jede VM einem oder mehreren Medienzugriffssteuerungs(Media Access Control, MAC)-Adressen zugeordnet. In einigen Implementierungen teilt jede VM einen TCP-/UDP-(Transmission Control Protocol, Übertragungskontrollprotokoll-/User Datagram Protocol, Benutzer-Datagramm-Protokoll-)Portraum nach dem Netzwerkadressübersetzungs-(Network Address Translation, NAT-)Prinzip. Andere Adresssysteme sind möglich. Die VM-IP-Adressen sind im internen Netzwerk 116 sichtbar und sind in einigen Implementierungen im Internet 122 sichtbar, falls die Adressen beispielsweise mit Nutzung eines geeigneten Routingprotokolls gemeldet werden.
-
Eine Gastsoftware einer VM kann ein Gastbetriebssystem (z. B. Gastbetriebssysteme 110b, 112b und 114b), das Software ist, die die Ausführung entsprechender Gastsoftwareanwendungen (z. B. Gastanwendungen 110c, 112c und 114c) steuert, innerhalb der VM umfassen und stellt diesen Anwendungen Dienste bereit. So könnte beispielsweise ein Gastbetriebssystem eine Variante des UNIX-Betriebssystems sein. Andere Betriebssysteme sind möglich. Jede VM kann dasselbe Gastbetriebssystem oder verschiedene Gastbetriebssysteme ausführen. In weiteren Implementierungen benötigt eine VM kein Gastbetriebssystem, um Gastsoftwareanwendungen auszuführen. Ein Zugriff des Gastbetriebssystems auf Ressourcen wie Netzwerke und virtuelle Plattenspeicher wird durch das zugrunde liegende Betriebssystem gesteuert. In einigen Implementierungen kann ein Hypervisor als ein Hardwarevisualisierungsverfahren verwendet werden, das das gleichzeitige Ausführen mehrerer Betriebssysteme auf einer Hostmaschine ermöglicht. Typ-1 (native oder Bare-Metal) Hypervisoren werden direkt auf der Hardware des Hosts ausgeführt, um die Hardware zu steuern und Gastbetriebssysteme zu verwalten, und Typ-2 (oder gehostete) Hypervisoren werden innerhalb einer herkömmlichen Betriebssystemumgebung ausgeführt.
-
Zur Veranschaulichung und unter Bezugnahme auf die virtuelle Maschine 110, wenn die Gastanwendung 110c oder das Gastbetriebssystem 110b beispielsweise versucht, eine Eingabe-/Ausgabe-Operation auf einer virtuellen Platte durchzuführen, Netzwerkkommunikation einzuleiten oder eine vorrangige Operation durchzuführen, wird die virtuelle Hardware 110a unterbrochen, so dass das Hostbetriebssystem 106 die Handlung stellvertretend für die virtuelle Maschine 110 durchführen kann. Das Hostbetriebssystem 106 kann diese Handlungen mit einem Prozess durchführen, der in Kernelprozessraum 106b, Benutzerprozessraum 106a oder beiden ausgeführt wird.
-
Der Kernelprozessraum 106b ist virtueller Speicher, der für den Kernel 106d des Hostbetriebssystems 106 reserviert ist, der beispielsweise Kernelerweiterungen und Vorrichtungstreiber umfassen kann. Der Kernelprozessraum hat erweiterte Rechte (manchmal als „Supervisor-Modus” bezeichnet); das heißt, dass der Kernel 106d bestimmte vorrangige Operationen durchfahren kann, die für Prozesse, die im Benutzerprozessraum 106a ausgeführt werden, nicht zugänglich sind. Beispiele für vorrangige Operationen umfassen Zugriff auf verschiedene Adressräume, Zugriff auf spezielle Funktionsprozessoreinheiten in der Hostmaschine wie Speicherverwaltungseinheiten usw. Der Benutzerprozessraum 106a ist ein separater Teil virtuellen Speichers, der für Prozesse des Benutzermodus reserviert ist. Prozesse des Benutzermodus können vorrangige Operationen nicht direkt durchführen.
-
2 ist eine vereinfachte schematische Darstellung eines beispielhaften virtuellen Maschinensystems 200. Das System 200 umfasst eine Hostmaschine 202, die einen Prozessor 203 (z. B. eine zentrale Verarbeitungseinheit) enthält, der ein Hostbetriebssystem 204 ausführt, worin das Hostbetriebssystem 204 eine VM 206 verwaltet. Der Prozessor 203 verwaltet ein Steuerregister 208 und das Hostbetriebssystem 108 verwaltet ein Überwachungsmodul 210 und ein Abfangmodul 212. Das Überwachungsmodul 210 überwacht einen Zustand des Steuerregisters 208 und das Abfangmodul 212 fängt Versuche, den Zustand des Steuerregisters 208 zu ändern, ab, beides wird weiter unten beschrieben.
-
Die Hostmaschine 202 kann durch Nutzen verschiedener Verarbeitungsmodi, z. B. 16-Bit, 32-Bit, 64-Bit usw., betrieben werden. Der Verarbeitungsmodus des Prozessors 203 bezieht sich auf die Daten und den Speicher, die durch den Prozessor 203 adressiert werden. In einigen Beispielen verarbeitet der Prozessor 203, der im 16-Bit-Verarbeitungsmodus betrieben wird, Daten und Speicheradressen, die durch 16 Bits repräsentiert werden; und ebenso verarbeitet der Prozessor 203, der im 32-Bit-Verarbeitungsmodus betrieben wird, Daten und Speicheradressen, die durch 32 Bits repräsentiert werden.
-
In einigen Beispielen, während des Hochfahrens des Hostbetriebssystems 204, wird der Prozessor 203 in einem Verarbeitungsmodus (z. B. dem 16-Bit-Verarbeitungsmodus) betrieben. Nach dem Hochfahren des Hostbetriebssystems 204 kann der Prozessor 203 so konfiguriert werden, dass er in einem anderen Verarbeitungsmodus (z. B. dem 32-Bit- oder 64-Bit-Verarbeitungsmodus) betrieben wird. Ein Wechsel zum anderen Verarbeitungsmodus kann dem Prozessor 203 beispielsweise ermöglichen, mit einer höheren Verarbeitungsrate betrieben zu werden und die Anzahl von Speicherplätzen erhöhen, die der Prozessor 203 adressieren kann. Der Wert eines oder mehrerer benachbarter oder nicht benachbarter Steuerbits des Steuerregisters 208 steuert die Auswahl des Verarbeitungsmodus des Prozessors 203. In einigen Implementierungen konfiguriert der Wert eines einzelnen Steuerbits (z. B. Steuerbit 214) den Verarbeitungsmodus des Prozessors 203. Das Steuerregister 208 kann beispielsweise ein 32-Bit-Register sein, wobei das Steuerbit 214 das 31. Bit ist. Andere Steuerregisterbreiten sind möglich. So konfiguriert beispielsweise das Setzen des Steuerbits 214 auf den Wert „1” den Prozessor 203 für den Betrieb in dem bestimmten Verarbeitungsmodus (z. B. dem 16-Bit-Verarbeitungsmodus) während des Hochfahrens des Systems 200. Um zum anderen Verarbeitungsmodus, z. B. 32-Bit oder 64-Bit, zu wechseln, wird der Wert des Steuerbits 214 geändert. So gibt beispielsweise das Setzen des Steuerbits 214 auf den Wert „0” an, dass der Prozessor 203 den anderen Verarbeitungsmodus (z. B. den 32-Bit- oder 64-Bit-Verarbeitungsmodus) nutzt. In einigen Beispielen steuert der Prozessor 203 das Setzen des Steuerbits 214. In einigen anderen Beispielen steuert das Hostbetriebssystem 204 das Setzen des Steuerbits 214.
-
Während des Hochfahrens des Hostbetriebssystems 204 kann der Prozessor 203 in einem anfänglichen Verarbeitungsmodus betrieben werden. In einigen Beispielen wird das Steuerbit 214 auf „1” gesetzt, wie in 2 dargestellt, um den Prozessor 203 so zu konfigurieren, dass er im anfänglichen Verarbeitungsmodus betrieben wird. Nach dem Hochfahren des Hostbetriebssystems 204 kann der Prozessor 203 so konfiguriert werden, dass er in einem anderen Verarbeitungsmodus betrieben wird. In einigen Beispielen wird das Steuerbit 214 auf „0” gesetzt, wie in 3 dargestellt, um den Prozessor 203 so zu konfigurieren, dass er im späteren Verarbeitungsmodus betrieben wird. Sobald der Prozessor 203 die Nutzung des anfänglichen Verarbeitungsmodus (z. B. Hochfahren mit dem 16-Bit-Verarbeitungsmodus) beendet hat und zum Betrieb im späteren Verarbeitungsmodus gewechselt hat, kann der Prozessor 203 den anfänglichen Verarbeitungsmodus nicht wieder nutzen, z. B. ist der Verarbeitungsmodus von Prozessor 203 „gesperrt”.
-
In einigen Beispielen könnte der anfängliche Verarbeitungsmodus des Prozessors 203 zu Sicherheitslückenproblemen mit dem System 200 führen. Daher kann das Minimieren der Verwendung des anfänglichen Verarbeitungsmodus durch den Prozessor 203 die Sicherheitslückenprobleme minimieren oder abschwächen. In einigen Implementierungen verwendet der Prozessor 203 den anfänglichen Verarbeitungsmodus nur bei Bedarf, wie etwa während des Hochfahrens des Hostbetriebssystems 204. In einigen Beispielen ist der anfängliche Verarbeitungsmodus der 16-Bit-Verarbeitungsmodus. Um zu vermeiden, dass der Prozessor 203 so konfiguriert wird, dass er den anfänglichen Verarbeitungsmodus verwendet, nachdem er in einen anderen Verarbeitungsmodus konfiguriert wurde, wird der Wert des/der Steuerbits (z. B. Steuerbit 214) überwacht, so dass nur der spätere Verarbeitungsmodus genutzt wird.
-
4 zeigt das System 200 mit einem virtuellen Register 400, das durch die VM 206 bereitgestellt wird. In verschiedenen Implementierungen wird die Überwachung des Steuerregisters 208 und speziell des/der Steuerbits des Steuerregisters 208 durch das virtuelle Register 400 bestimmt. Der Wert eines oder mehrerer benachbarter oder nicht benachbarter Sperrbits des virtuellen Registers 400 gibt einen Überwachungsstatus des/von Steuerbits des Steuerregisters 208 an. So bestimmt beispielsweise der Wert des Sperrbits 402, ob das Überwachungsmodul 210 zur Überwachung von Steuerbit 214 aktiviert oder deaktiviert wird. In einigen Beispielen kann die VM 206 mehrere virtuelle Register 400 umfassen.
-
In einigen Implementierungen ist das virtuelle Register 400 ein 32-Bit-Register, wobei ein Sperrbit 402 als das 31. Bit des virtuellen Registers 400 gesetzt wird. Andere Registerbreiten sind möglich. In weiteren Implementierungen gibt das Setzen des Sperrbits 402 auf den Wert „0” das Aktivieren des Überwachungsmoduls 210 zum Überwachen des Wertes des Steuerbits 214 und das Erkennen von Versuchen, den Wert des Steuerbits 214 zu ändern, an. Das Setzen des Sperrbits 402 auf den Wert „1” gibt das Deaktivieren des Überwachungsmoduls 210 zum Überwachen des Wertes des Steuerbits 214 an. In einigen Beispielen steuert die VM 206 das Setzen des Sperrbits 402.
-
Zu diesem Zweck, wenn der Wert des Sperrbits 402 gesetzt wird, um anzugeben, dass das Überwachungsmodul 210 den Wert des Steuerbits 214 überwacht, verwendet der Prozessor 203 nur einen ausgewählten Verarbeitungsmodus (z. B. den späteren Verarbeitungsmodus nach dem Hochfahren des Hostbetriebssystems 204). Wenn ein Versuch, den Wert des Steuerbits 214 zu ändern, unternommen wird, der dazu führt, dass der Prozessor 203 Verarbeitungsmodi wechselt (z. B. der Prozessor 203 wechselt vom anderen Verarbeitungsmodus zu dem bestimmten Verarbeitungsmodus), fängt das Abfangmodul 212 den Versuch ab. Beim Abfangen eines Versuchs verhindert das System 200, dass das Steuerbit 214 geändert wird, damit der Prozessor 203 keine Verarbeitungsmodi ändert. In einigen Beispielen, wenn das Abfangmodul 212 den Versuch abfängt, kann eine Benachrichtigung ausgelöst werden, um ein Eindringen in das System 100 anzugeben. In einigen Beispielen, wenn das Abfangmodul 212 den Versuch abfängt, wird jede Verarbeitung durch den Prozessor 203 beendet.
-
5 ist ein Ablaufdiagramm eines beispielhaften Verfahrens 500 zum Konfigurieren des Verarbeitungsmodus des Prozessors 203. Der Prozessor 203 wird im anfänglichen Verarbeitungsmodus betrieben (502). Der Wert des/der Steuerbits (z. B. Steuerbit 214) wird gesetzt, um den Prozessor 203 so zu konfigurieren, dass er im anderen Verarbeitungsmodus betrieben wird (504). Das virtuelle Register 400 wird mit dem/den Sperrbit(s) 402 bereitgestellt, das/die dem/den Steuerbit(s) 214 entspricht/entsprechen (506). Der Wert des/der Sperrbits 402 wird gesetzt, um die Überwachung des Wertes des/der Steuerbits 214 anzugeben, um dafür zu sorgen, dass nur der andere Verarbeitungsmodus nach dem Setzen des Wertes des/der Sperrbits 402 genutzt wird (508). Ferner kann nach dem Setzen des Wertes des/der Sperrbits 402 der Prozessor 203 nicht im anfänglichen Verarbeitungsmodus betrieben werden.
-
Ausführungsformen des Gegenstands und die in dieser Spezifikation beschriebenen Tätigkeiten können in digitalen elektronischen Schaltungen oder in Computer-Software, Firmware oder Hardware implementiert werden, einschließlich der in dieser Spezifikation offengelegten Strukturen und ihrer strukturellen Entsprechungen oder in Kombinationen von einer oder mehrerer von ihnen. Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können als ein oder mehrere Computerprogramme, d. h. als ein oder mehrere Module von Computerprogrammanweisungen implementiert werden, die auf einem Computer-Speichermedium für die Ausführung durch oder die Steuerung des Betriebs des datenverarbeitenden Apparats kodiert werden. Alternativ oder zusätzlich können die Programmanweisungen auf einem künstlich erzeugten propagierten Signal, z. B. einem maschinell erzeugten elektrischen, optischen oder elektromagnetischen Signal künstlich kodiert werden, das erzeugt wird, um Informationen für die Übertragung auf einen geeigneten Empfängerapparat für die Ausführung durch einen datenverarbeitenden Apparat zu kodieren. Bei einem Computer-Speichermedium kann es sich um ein maschinell lesbares Speichergerät, einen maschinell lesbaren Speicherträger, ein zufälliges oder serielles Speicher-Array oder Speichergerät oder um eine Kombination aus einem oder mehreren dieser Geräte handeln oder in ihnen enthalten sein. Außerdem ist ein Computer-Speichermedium zwar kein verbreitetes Signal, aber ein Computer-Speichermedium kann eine Quelle oder ein Bestimmungsort von Computerprogrammanweisungen sein, die in einem künstlich erzeugten verbreiteten Signal kodiert werden. Bei dem Computer-Speichermedium kann es sich auch um eine oder mehrere unterschiedliche physische Komponenten oder Medien (z. B. mehrere CDs, Plattenlaufwerke oder andere Speichergeräte) handeln, bzw. kann das Speichermedium darin enthalten sein.
-
Die in dieser Spezifikation beschriebenen Tätigkeiten können als Tätigkeiten implementiert werden, die von einem datenverarbeitenden Apparat mit Daten durchgeführt werden, die auf einem oder mehreren maschinell lesbaren Speichergeräten gespeichert werden oder von anderen Quellen entgegengenommen werden.
-
Der Begriff „datenverarbeitender Apparat” umfasst alle Arten von Apparaten, Geräten und Maschinen für die Verarbeitung von Daten, einschließlich beispielsweise durch einen programmierbaren Prozessor, einen Computer, ein System auf einem oder mehreren Chips oder Kombinationen des Vorstehenden. Der Apparat kann logische Schaltungen mit einem Sonderzweck, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung) enthalten. Der Apparat kann neben der Hardware auch einen Code einschließen, der eine Ausführungsumgebung für das betreffende Computerprogramm in der Frage erstellt, z. B. einen Code, der Prozessor-Firmware, einen Protokollstapel, ein Datenbank-Managementsystem, ein Betriebssystem, eine plattformunabhängige Laufzeitumgebung, eine virtuelle Maschine oder eine Kombination einer oder mehrerer der genannten darstellt. Der Apparat und die Ausführungsumgebung können verschiedene unterschiedliche Rechnermodell-Infrastrukturen umsetzen, wie Webdienstleistungen, verteilte Rechen- und Grid-Computing-Infrastrukturen.
-
Ein Computerprogramm (auch bezeichnet als Programm, Software, Softwareanwendung, Script oder Code) kann in einer beliebigen Form von Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder verfahrensorientierter Sprachen, und das Programm kann in jeder beliebigen Form eingesetzt sein, darunter als unabhängiges Programm oder als ein Modul, eine Komponente, eine Subroutine, ein Objekt oder eine andere Einheit, die zur Benutzung in einer Rechenumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei gespeichert sein, die andere Programme oder Daten enthält (z. B. ein oder mehrere Scripts, die in einem Dokument in Markup-Sprache gespeichert sind), in einer einzelnen Datei speziell für das betreffende Programm oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teile von Code speichern). Ein Computerprogramm kann auf einem Computer oder mehreren Computern eingerichtet sein oder ausgeführt werden, die an einem Standort angeordnet sind oder über mehrere Standorte verteilt sind und über ein Kommunikationsnetz verbunden sind.
-
Die in dieser Spezifikation beschriebenen Prozesse und logischen Abläufe können durch einen oder mehrere programmierbare Prozessoren durchgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Handlungen aufgrund von Eingangsdaten durchzuführen und Ausgabedaten zu erstellen. Die Prozesse und die logischen Abläufe können auch durch logische Sonderzweckschaltungen durchgeführt werden, und der Apparat kann als Sonderzweckschaltungen implementiert werden, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung).
-
Prozessoren, die für die Ausführung eines Computerprogramms geeignet sind, schließen beispielsweise sowohl allgemeine und als auch Spezial-Mikroprozessoren sowie alle Arten eines oder mehrerer Prozessoren jeglicher Art Digitalrechner ein. Ganz allgemein nimmt ein Prozessor Befehle und Daten von einem Festwertspeicher oder einem Arbeitsspeicher oder von beiden entgegen. Die wesentlichen Elemente eines Computers sind ein Prozessor für das Durchführen von Handlungen gemäß Anweisungen und ein oder mehr Speichergeräte für das Speichern von Anweisungen und Daten. Ganz allgemein gehören zu einem Computer auch ein oder mehrere Massenspeichergeräte für das Speichern von Daten, z. B. Magnet-, magnetooptische oder optische Disketten, um Daten entgegenzunehmen und/oder zu übertragen, bzw. ist ein Computer operativ an ein solches Speichergerät gekoppelt. Jedoch muss ein Computer solche Geräte nicht haben. Außerdem kann ein Computer in einem anderen Gerät eingebettet sein, z. B. in einem Mobiltelefon, einem Organizer (PDA), einem mobilen Audio- oder Videoplayer, einer Spielkonsole, einem Funknavigationsempfänger oder einem tragbaren Speichergerät (z. B. in einem USB-Stick), um nur einige zu nennen. Geräte, die für das Speichern von Computerprogrammanweisungen und -daten geeignet sind, schließen alle Formen von Dauerspeichern, Medien- und Speichergeräten ein, einschließlich beispielsweise Halbleiter-Speichergeräte, z. B. EPROM, EEPROM und USB-Flash-Speicher; Magnetplatten, z. B. interne Festplatten oder herausnehmbare Platten; magnetooptische Platten; und CD-ROMs und DVD-ROMs. Der Prozessor und der Speicher können durch logische Sonderzweckschaltungen ergänzt werden oder darin eingebaut sein.
-
Um die Interaktion mit einem Benutzer zu ermöglichen, können in dieser Spezifikation beschriebene Ausführungsformen des Gegenstands auf einem Computer mit einem Anzeigegerät implementiert werden, z. B. einem CRT-(Kathodenstrahlröhre) oder LCD-(Flüssigkristallanzeige)Monitor, mit welchem dem Benutzer Informationen angezeigt werden, sowie einer Tastatur und einem Anzeigegerät, z. B. einer Maus oder einem Trackball, mit denen der Benutzer Eingaben in den Computer vornehmen kann. Es können auch andere Arten von Einrichtungen verwendet werden, um für eine Interaktion mit einem Nutzer zu sorgen; beispielsweise kann eine dem Benutzer gelieferte Rückkopplung beliebiger Form von sensorischer Rückkopplung vorliegen, z. B. eine visuelle Rückkopplung, auditive Rückkopplung oder taktile Rückkopplung; und die Eingabe von dem Nutzer kann in beliebiger Form empfangen werden, einschließlich akustischer, Sprach- oder taktiler Eingabe. Darüber hinaus kann ein Computer über das Senden von Dokumenten an und das Empfangen von Dokumenten von einer Einrichtung, die vom Benutzer verwendet wird, mit einem Benutzer interagieren; beispielsweise über das Senden von Webpages an einen Webbrowser auf dem Clientgerät des Benutzers als Antwort auf die vom Webbrowser empfangenen Aufforderungen.
-
Ausführungsformen der in dieser Spezifikation betrachteten Gegenstands können in ein Computersystem implementiert werden, das eine Backend-Komponente (z. B. einen Datenserver), oder eine Middleware-Komponente (z. B. einen Anwendungsserver), oder eine Frontend-Komponente (z. B. einen Client-Computer mit grafischem Benutzerinterface oder Webbrowser) umfasst, worüber der Benutzer mit einer Implementierung der in dieser Spezifikation betrachteten Gegenstands interagieren kann, oder eine beliebige Kombination aus solchen Backend, Middleware- oder Frontend-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation miteinander verbunden sein, z. B. ein Kommunikationsnetzwerk. Zu Beispielen für Kommunikationsnetzwerke zählen ein lokales Netzwerk („LAN”), ein Fernnetzwerk („WAN”), eine netzübergreifende Verbindung (z. B. das Internet) und Peer-to-Peer Netzwerke (z. B. Ad-Hoc Peer-to-Peer Netzwerke).
-
Das Computersystem kann Clients und Server beinhalten. Ein Client und Server befinden sich im Allgemeinen ortsfern voneinander und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander haben. In einigen Ausführungsformen überträgt ein Server Daten (z. B. eine HTML-Seite) an ein Client-Gerät (z. B. zum Anzeigen von Daten auf und zum Empfangen von Benutzereingaben von einem Benutzer, der mit dem Client-Gerät interagiert). Am Client-Gerät erzeugte Daten (z. B. infolge der Benutzerinteraktion) können vom Client-Gerät am Server empfangen werden.
-
Zwar enthält diese Spezifikation viele spezifische Implementierungsdetails, jedoch sollten diese nicht als Beschränkungen des Umfangs oder des Anspruchs ausgelegt werden, sondern vielmehr als Beschreibungen spezifischer Merkmale bestimmter Ausführungsformen bestimmter Erfindungen. Bestimmte Merkmale, die in dieser Spezifikation im Kontext der unterschiedlichen Ausführungsformen beschrieben werden, können auch in Kombination in einer einzelnen Ausführungsform implementiert werden. Andererseits können verschiedene Merkmale, die im Kontext einer einzelnen Ausführungsform beschrieben werden, in mehreren Ausführungsformen oder in jeder geeigneten Unterkombination implementiert werden. Außerdem können ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgelöst werden, auch wenn die Merkmale vorstehend als in gewissen Kombinationen funktionierend beschrieben oder gar als eine Kombination beansprucht werden, und die beanspruchte Kombination kann an eine Unterkombination oder eine Variation einer Unterkombination verwiesen werden.
-
Ebenso werden Tätigkeiten in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, aber dies sollte nicht als Erfordernis verstanden werden, dass solche Tätigkeiten in der bestimmten gezeigten Reihenfolge oder in einer aufeinanderfolgenden Reihenfolge durchgeführt werden müssen oder dass alle dargestellten Tätigkeiten durchgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und eine Parallelbearbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung verschiedener Systemkomponenten in den oben beschriebenen Ausführungsformen nicht in allen Ausführungsformen erforderlich aufgefasst werden, und es versteht sich, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in ein einziges Softwareprodukt integriert oder zu mehreren Softwareprodukten verkapselt werden können.
-
Folglich wurden bestimmte Ausführungsformen des Gegenstands beschrieben. Weitere Ausführungsformen gehören zum Umfang der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen beschriebenen Handlungen in einer anderen Reihenfolge durchgeführt werden und dennoch erwünschte Ergebnisse erzielen. Zusätzlich erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die bestimmte gezeigte Reihenfolge oder aufeinanderfolgende Reihenfolge, um erwünschte Ergebnisse zu erzielen. In bestimmten Implementierungen können Multitasking und eine Parallelbearbeitung vorteilhaft sein.