-
HINTERGRUND
-
Auf vielen Computergeräten, einschließlich mobiler Computergeräte, kann Anwendungssoftware ausgeführt werden, um verschiedene Funktionen auszuführen, wie z.B. kommunikationsbezogene Funktionen, Datenmanipulationsfunktionen, Bilderzeugungs- und/oder Präsentationsfunktionen, Tonerzeugungs- und/oder Präsentationsfunktion und andere Funktionen. Die Anwendungssoftware kann von einem Server oder einem anderen Computergerät heruntergeladen oder auf ein Computergerät übertragen werden. In einigen Fällen kann die Anwendungssoftware als Teil eines Softwarepakets heruntergeladen werden. Das Softwarepaket kann Anwendungssoftware und Anweisungen für die Installation der Anwendungssoftware umfassen. Beispielsweise kann das Softwarepaket ausführbar sein, um die Anweisungen zur Installation der Anwendungssoftware auszuführen.
-
Systemsoftware, wie z.B. ein Betriebssystemkernel, kann zur Verwaltung eines Computergeräts verwendet werden. Der Betriebssystemkernel kann verschiedene Funktionen für das mobile Computergerät ausführen, wie z.B. die Planung von Softwareprozessen zur Ausführung, die Verwaltung des Zugriffs auf Ein-/Ausgabegeräte (E/A-Geräte) und die Zuweisung von Speicher. Ein Prozess kann ein Satz von Anweisungen einer Softwarekomponente sein, der auf einem oder mehreren Prozessoren des Computergeräts ausgeführt wird (ein aktiver Prozess) oder ausgeführt werden könnte (ein wartender Prozess, ein schlafender Prozess). Der Prozess kann einen oder mehrere Ausführungs-Threads umfassen, wobei ein Thread einen Teil oder die Gesamtheit des Befehlssatzes der Softwarekomponente gleichzeitig mit anderen Threads des Prozesses ausführen kann.
-
KURZFASSUNG
-
In einem Aspekt wird ein computerimplementiertes Verfahren bereitgestellt. Eine Kernelkomponente eines Betriebssystemkernels, die auf einem Computergerät läuft, führt eine Kerneloperation durch. Ein maschinelles Lernmodell, das auf dem Computergerät läuft, empfängt operationsbezogene Informationen, die sich auf die Kerneloperation beziehen. Das maschinelle Lernmodell bestimmt auf der Grundlage der operationsbezogenen Informationen eine Inferenz. Die Inferenz wird der Kernelkomponente bereitgestellt. Die Kernelkomponente passt die Leistung der Kerneloperation auf der Grundlage der Inferenz an.
-
In einem weiteren Aspekt wird ein Computergerät bereitgestellt. Das Computergerät umfasst einen oder mehrere Prozessoren; und ein oder mehrere computerlesbare Medien, auf denen computerausführbare Befehle gespeichert sind, die, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, das Computergerät veranlassen, Funktionen auszuführen. Die Funktionen umfassen: Ausführen einer Kerneloperation durch eine Kernelkomponente eines Betriebssystemkerns, der auf dem Computergerät läuft; Empfangen von operationsbezogenen Informationen, die sich auf die Kerneloperation beziehen, an einem maschinellen Lernmodell, das auf dem Computergerät läuft; Bestimmen einer Inferenz durch das maschinelle Lernmodell auf der Grundlage der operationsbezogenen Informationen; Bereitstellen der Inferenz an die Kernelkomponente; und Anpassen der Leistung der Kerneloperation durch die Kernelkomponente auf der Grundlage der Inferenz.
-
In einem weiteren Aspekt wird ein Herstellungsgegenstand bereitgestellt. Der Herstellungsgegenstand umfasst einen oder mehrere computerlesbare Datenträger mit darauf gespeicherten computerausführbaren Befehlen, die, wenn sie von einem oder mehreren Prozessoren eines Computergeräts ausgeführt werden, bewirken, dass das Computergerät Funktionen ausführt. Die Funktionen umfassen: Ausführen einer Kerneloperation durch eine Kernelkomponente eines Betriebssystemkerns, der auf dem Computergerät ausgeführt wird; Empfangen von operationsbezogenen Informationen, die sich auf die Kerneloperation beziehen, an einem maschinellen Lernmodell, das auf dem Computergerät ausgeführt wird; Bestimmen einer Inferenz durch das maschinelle Lernmodell auf der Grundlage der operationsbezogenen Informationen; Bereitstellen der Inferenz an die Kernelkomponente; und Anpassen der Leistung der Kerneloperation durch die Kernelkomponente auf der Grundlage der Inferenz.
-
In einem weiteren Aspekt wird ein Computergerät bereitgestellt. Das Computergerät umfasst: Mittel zum Durchführen einer Kerneloperation eines Betriebssystemkerns; Mittel zum Empfangen operationsbezogener Informationen, die sich auf die Kerneloperation beziehen; Mittel zum Bestimmen einer Inferenz auf der Grundlage der operationsbezogenen Informationen; Mittel zum Bereitstellen der Inferenz; und Mittel zum Einstellen der Leistung der Kerneloperation auf der Grundlage der Inferenz.
-
Die vorstehende Kurzfassung dient nur zur Veranschaulichung und soll in keiner Weise einschränkend wirken. Zusätzlich zu den oben beschriebenen illustrativen Aspekten, Ausführungsformen und Merkmalen werden weitere Aspekte, Ausführungsformen und Merkmale durch Bezugnahme auf die Abbildungen und die folgende detaillierte Beschreibung und die begleitenden Zeichnungen deutlich.
-
Figurenliste
-
- 1 ist ein Diagramm, das eine Software-Architektur für ein Computergerät gemäß einigen Beispielausführungen illustriert.
- 2 ist ein Diagramm, das die Trainings- und Inferenzphasen eines maschinellen Lernmodells gemäß einigen Beispielausführungen veranschaulicht.
- 3 ist eine Tabelle, in der Eingabedaten und damit zusammenhängende Inferenzen für Softwarekomponenten der Softwarearchitektur von 1 gemäß einigen Beispielausführungen zusammengefasst sind.
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 und 15 stellen Kommunikationsflüsse eines Szenarios dar, in dem ein trainiertes maschinelles Lernmodell in Übereinstimmung mit einigen Beispielausführungen Inferenzen bzw. Rückschlüsse, Herleitungen, Ableitungen auf Softwarekomponenten zulässt.
- 16 zeigt eine verteilte Rechnerarchitektur gemäß einigen Beispielvarianten.
- 17 ist ein funktionales Blockdiagramm eines Computergerätes gemäß einigen Beispielausführungen.
- 18 ist ein Flussdiagramm eines Verfahrens, einigen Beispielausführungsformen.
-
DETAILLIERTE BESCHREIBUNG
-
Einige Computergeräte können Betriebssysteme verwenden, um die Ressourcen des Computergeräts zu verwalten. Ein Betriebssystem kann über einen zentralen Teil oder „Kernel“ von Software verfügen, der die Schlüsselressourcen des Computergeräts, einschließlich Speicher und Prozessorzeit, verwaltet. Der Kernel kann aus einer oder mehreren Kernelkomponenten gebildet sein, zu denen unter anderem ein Prozessplaner bzw. Prozessscheduler, ein Speichermanager, ein Eingabe-Ausgabe (E/A) - Planer und ein Systemressourcenmanager gehören können.
-
Betriebssysteme, einschließlich Kernelkomponenten, verwenden oft einfache, schnell zu berechnende Heuristiken, um verschiedene Entscheidungen bei der Durchführung von Operationen zur Verwaltung von Computergeräten zu leiten und zu treffen. Heuristiken können auch von Nicht-Kernelkomponenten verwendet werden, wie z.B. Software-Anwendungen, die nicht Teil des Betriebssystems sind. Diese Heuristiken können schnell Entscheidungen treffen, bieten aber möglicherweise keine optimalen Lösungen, da solchen Heuristiken der ganzheitliche Kontext eines Computergeräts (oder einer Anwendung) fehlen kann.
-
Andere als heuristische Techniken, wie z.B. Techniken des maschinellen Lernens, können bessere Entscheidungen ermöglichen. Eine Technik des maschinellen Lernens besteht darin, einen Algorithmus des maschinellen Lernens auf einem Eingabesatz von Trainingsdaten zu trainieren, um Muster in den Trainingsdaten zu erkennen und daraus Inferenzen auf die (Muster in den) Trainingsdaten zu ziehen. Der daraus resultierende trainierte Algorithmus des maschinellen Lernens kann als ein trainiertes maschinelles Lernmodell bezeichnet werden. Dann kann das trainierte maschinelle Lernmodell Eingabedaten, die den Trainingsdaten ähnlich sind, als Eingabe erhalten und entsprechende Inferenzen über die Eingabedaten erzeugen.
-
Eingabedaten für trainierte maschinelle Lernmodelle können sich auf den Betrieb eines Computergeräts beziehen. Die Eingabedaten und/oder die operationsbezogenen Informationen können kernelbezogene Eingabedaten, anwendungsspezifische Eingabedaten und/oder andere Eingabedaten, z.B. vom Benutzer bereitgestellte Daten, umfassen. Die kernelbezogenen Eingabedaten, die dem trainierten maschinellen Lernmodell bereitgestellt werden, können Daten umfassen, die sich auf ein Computergerät beziehen, das den Kernel ausführt und verwendet, einschließlich Daten, die sich auf eine oder mehrere Kernelkomponenten beziehen. Die anwendungsspezifischen Eingabedaten, die dem trainierten maschinellen Lernmodell bereitgestellt werden, können Daten umfassen, die sich auf eine oder mehrere Nicht-Kernelkomponenten und/oder Software-Anwendungen beziehen.
-
In einigen Fällen können Inferenzen, die durch das trainierte maschinelle Lernmodell bereitgestellt werden, zu genaueren Problemlösungen führen als Lösungen, die auf einer verwandten Heuristik einer Kernelkomponente oder einer Nicht-Kernelkomponente basieren. Beispielsweise kann ein trainiertes maschinelles Lernmodell Muster, Trends und/oder Merkmale in Daten erkennen, die über längere Zeiträume auftreten, als von einer verwandten Heuristik berücksichtigt werden, und eine Inferenz erzeugen, deren Ergebnis besser ist als ein Ergebnis der verwandten Heuristik. Ein weiteres Beispiel: Ein trainiertes maschinelles Lernmodell kann Muster, Trends und/oder Merkmale auf der Grundlage eines größeren Satzes von Eingabedaten erkennen, als von einer verwandten Heuristik berücksichtigt werden, und eine Inferenz erzeugen, deren Ergebnis besser ist als das Ergebnis der verwandten Heuristik. Ein weiteres Beispiel: Ein trainiertes maschinelles Lernmodell, das entweder mit gerätespezifischen Daten trainiert wurde und/oder Ausgangsinferenzen als Eingabe in eine Rückkopplungsschleife verwendet, kann Muster, Trends und/oder Merkmale erkennen, die für das Gerät spezifisch sind und die von einer verwandten Heuristik möglicherweise nicht berücksichtigt werden, und eine Inferenz erzeugen, deren Ergebnis besser ist als das Ergebnis der verwandten Heuristik. Andere Beispiele von Mustern oder Trends, die von trainierten maschinellen Lernmodellen erkannt werden können, die von verwandten Heuristiken möglicherweise nicht erkannt werden, sind ebenfalls möglich.
-
Während ein trainiertes maschinelles Lernmodell bessere Entscheidungen treffen kann als eine verwandte Heuristik, kann das trainierte maschinelle Lernmodell sehr langsam zu trainieren sein und nur langsam Inferenzen liefern. Zum Beispiel nehmen einige trainierte maschinelle Lernmodelle die Größenordnung von einigen zehn Millisekunden an, um eine Inferenz zu ziehen, selbst mit spezieller Hardware. Die Zeit, die trainierte maschinelle Lernmodelle benötigen, kann in einigen Fällen zu langsam sein; z.B. kann eine Prozesszeitscheibe nur fünf Millisekunden betragen. Daher kann die zusätzliche Zeit, die durch das trainierte maschinelle Lernmodell verbraucht wird, dazu führen, dass die alleinige Verwendung von trainierten maschinellen Lernmodellen als vollständiger Ersatz für schnellere Heuristiken nicht möglich ist.
-
Hier werden Techniken zur Kombination von Ergebnissen der Heuristik mit Inferenzen beschrieben, die durch trainierte maschinelle Lernmodelle erzeugt werden, um die Entscheidungsfindung sowohl für Kernelkomponenten als auch für Nicht-Kernelkomponenten zu unterstützen. Die hier beschriebenen Techniken ermöglichen es Kernel- und Nicht-Kernelkomponenten, genauere Entscheidungen auf der Grundlage der von trainierten maschinellen Lernmodellen erzeugten Inferenzen zu treffen, während sie gleichzeitig die schnelle Reaktionszeit der Heuristik nutzen, wodurch sowohl die Leistung des Betriebssystems als auch die Gesamtleistung der Computergeräte verbessert wird.
-
Die Ausführung der trainierten maschinellen Lernmodelle kann ein Ausführen eines Inferenzdämons umfassen. Der Inferenzdämon kann Eingabe- und/oder Ausgabe-Unterstützung für ein oder mehrere trainierte maschinelle Lernmodelle bieten; z.B. Eingabedaten lesen, Inferenzanfragen empfangen, Inferenzantworten ausgeben, die Inferenzen enthalten. In einigen Beispielen kann der Inferenzdämon die trainierten maschinellen Lernmodelle auf einem bestimmten Computergerät ausführen und Inferenzen für Software liefern, die auf dem bestimmten Computergerät ausgeführt wird. In anderen Beispielen kann der Inferenzdämon auf einem Computergerät ausgeführt werden, um Zugang zu den von den trainierten maschinellen Lernmodellen erzeugten Inferenzen zu bieten, wobei die trainierten maschinellen Lernmodelle auf einem anderen Computergerät ausgeführt werden können. In einigen Beispielen kann der Inferenzdämon auch Inferenzen unter Verwendung eines trainierten maschinellen Lernmodells bereitstellen, während der Inferenzdämon in anderen Beispielen Inferenzen unter Verwendung einer Mehrzahl von trainierten maschinellen Lernmodellen bereitstellen kann, z.B. ein trainiertes maschinelles Lernmodell für die Prozessplanung, ein trainiertes maschinelles Lernmodell für die Speicherverwaltung, ein trainiertes maschinelles Lernmodell für Datenbankanwendungen usw.
-
Kernel- und Nicht-Kernel-Softwarekomponenten können so modifiziert werden, dass sie Inferenzen aus einem oder mehreren trainierten maschinellen Lernmodellen nutzen und gleichzeitig die schnellen Antwortzeiten beibehalten, die von vorhandenen Heuristiken bereitgestellt werden. Beispielsweise kann eine Kernel- (oder Nicht-Kernel-) Komponente Inferenzen aus dem trainierten maschinellen Lernmodell empfangen und diese Inferenzen mit Ergebnissen aus ihrer eigenen Heuristik kombinieren, um eine oder mehrere kernelbezogene (oder nicht kernelbezogene) Operationen durchzuführen. Diese Inferenz und heuristischen Ergebnisse können mit effizienten Kombinationstechniken kombiniert werden, wie z.B. die Durchführung einer linearen oder anderen mathematischen Kombination von Inferenzwerten, die als Inferenz-Ergebnisse bereitgestellt werden, mit heuristischen Werten, die als heuristische Ergebnisse bereitgestellt werden.
-
Die trainierten maschinellen Lernmodelle können von anderen Softwarekomponenten eines Computergeräts, einschließlich der Kernelkomponenten, getrennt werden. Diese Trennung des trainierten maschinellen Lernmodells kann die Ausführung des Inferenzdämons (und damit der trainierten maschinellen Lernmodelle) in einem Nicht-Kernel-Speicherbereich (z.B. Benutzerspeicher) umfassen, was die Verwendung von Nicht-Kernel-Space-Bibliotheken/- Frameworks für maschinelles Lernen ermöglicht. Dann können Kernel- (und Nicht-Kernel-) Komponenten Inferenzen von den trainierten maschinellen Lernmodellen erhalten, vielleicht auf Anfrage über den Softwaredämon. Außerdem ermöglicht diese Trennung weniger Kernel-Änderungen und weniger Kernel-Software, was die damit verbundenen Sicherheitsrisiken und den Bedarf an Kernel-Ressourcen verringert.
-
In einigen Beispielen können die trainierten maschinellen Lernmodelle und die Inferenzanfordernden Kernel- und Nicht-Kernelkomponenten sowohl Eingabedaten und/oder Inferenzen asynchron gemeinsam nutzen, ohne wesentliche zusätzliche Softwareschnittstellen, wie z.B. neue Systemaufrufe, zu schaffen. Durch die Möglichkeit, dass das trainierte maschinelle Lernmodell Inferenzen asynchron (z.B. durch eine oder mehrere Ausgabedateien) bereitstellt, kann eine Softwarekomponente Warten auf die vom trainierten maschinellen Lernmodell bereitgestellten Inferenzen vermeiden. Da das trainierte maschinelle Lernmodell von anderen Softwarekomponenten getrennt ist, können Inferenzen einer Kernelkomponente (oder Nicht-Kernelkomponente) asynchron von Operationen bereitgestellt werden, die von der Kernelkomponente (oder Nicht-Kernelkomponente) ausgeführt werden, so dass die Kernelkomponente (oder Nicht-Kernelkomponente) Operationen ausführen kann, ohne diese Operationen mit Inferenzen zu koordinieren. Beispielsweise kann ein Prozessplaner ferner Prozesse planen, ohne auf eine Inferenz warten zu müssen. Die asynchrone Bereitstellung von Inferenzen aus Kernelkomponenten- (oder Nicht-Kernelkomponenten-) Operationen reduziert oder eliminiert das Warten auf Inferenzen und ermöglicht daher eine erhöhte systemweite Leistung. In einigen Fällen kann eine zeitgesteuerte Schnittstelle, die Inferenzen in vorgegebenen Zeitintervallen und/oder innerhalb einer vorgegebenen Zeitspanne ab der Anforderung einer Inferenz liefert, zusammen mit oder anstelle von asynchronen Inferenzen verwendet werden.
-
Die hier beschriebenen Techniken können dazu beitragen, einen flexiblen und effizienten Ansatz für die Entscheidungsfindung im Betriebssystem zu bieten, der auf den besten Eigenschaften von Inferenzen und Heuristiken des maschinellen Lernens basiert. Die Kombination von Inferenzwerten mit heuristischen Werten bietet die besten Eigenschaften von Inferenzen und Heuristiken des maschinellen Lernens in Bezug auf Latenz und Qualität der Vorhersagen. Darüber hinaus lassen sich die hier beschriebenen Techniken, wie hier veranschaulicht, auf eine Reihe verschiedener Softwarekomponenten und verwandter Heuristiken verallgemeinern, darunter sowohl Kernel-Softwarekomponenten als auch Nicht-Kernel-Softwarekomponenten eines Computergeräts. Die hierin beschriebenen Techniken können den Einsatz von maschinellem Lernen ermöglichen, um die Qualität der von Kernel- und Nicht-Kernel-Softwarekomponenten ausgeführten Operationen zu erhöhen; z.B. können Kerneloperationen höhere Cache-Trefferraten und eine bessere CPU-Planung haben; Nicht-Kerneloperationen können ein zuverlässigeres Datenbank-Checkpointing haben, eine bessere Darstellung von Audio-/Video-Inhalten bieten und Hot-Loops besser optimieren. Daher können die hier beschriebenen Techniken maschinelles Lernen ermöglichen, um die Leistung sowohl der Kernel- als auch der Nicht-Kernel-Softwarekomponenten zu verbessern und dadurch die Gesamtleistung des Computergeräts zu steigern.
-
1 ist ein Diagramm, das die Software-Architektur 100 für ein Computergerät gemäß einigen Beispielausführungen illustriert. Die Software-Architektur 100 kann sich in einem Speicher oder Datenspeicher des Computergeräts befinden und kann in zwei verschiedene Bereiche unterteilt werden: Nicht-Kernel-Speicherbereich (NKMS) 110 und Kernel-Speicherbereich (KMS) 120.
-
Der Nicht-Kernel-Speicherplatz 110, der auch als Benutzerspeicherplatz bezeichnet werden kann, umfasst Speicher für Nicht-Kernel-Software, die auf dem Computergerät ausgeführt wird. Ein Teil oder die Gesamtheit einer ausführbaren Software, die zur Ausführung im Nicht-Kernel-Speicherbereich 110 konfiguriert ist, kann als Nicht-Kernelkomponente bezeichnet werden. 1 veranschaulicht den Nicht-Kernel-Speicherplatz 110 der Software-Architektur 100 mit Beispielen von Nicht-Kernelkomponenten einschließlich Inferenzdämon 130, einem oder mehreren trainierten maschinellen Lernmodellen (TMLMs) 132, Datenbankanwendung 140, Audio-/Video-Anwendung (AV-Anwendung) 142, Browser-Anwendung 144 und Just-in-Time (JIT)-Compilern 146 und 148, wobei der Inferenzdämon 130 das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 und die Browser-Anwendung 144 den Just-in-Time (JIT)-Compiler 146 umfasst. Während der Ausführung kann eine Nicht-Kernelkomponente eine oder mehrere „Nicht-Kerneloperationen“ oder Aktivitäten im Zusammenhang mit der Ausführung einer oder mehrerer Aufgaben der Nicht-Kernelkomponente ausführen. Es sind auch mehr, weniger und/oder unterschiedliche Beispiele von Nicht-Kernelkomponenten möglich.
-
Der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 können mit den hier beschriebenen Techniken eine oder mehrere Inferenzen erzeugen. In einigen Fällen können der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 die Inferenzen als Antwort auf eine Inferenzanforderung erzeugen. In anderen Fällen können der Inferenz-Dämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 die Inferenzen sua sponte erzeugen, z.B. ohne eine Inferenzanforderung zu erhalten.
-
Nach der Generierung der Inferenz(en) können der Inferenzdämon 130 und/oder das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 die Inferenz(en) einer oder mehreren anderen Softwarekomponenten der Softwarearchitektur 100 zur Verfügung stellen; z.B. einer oder mehreren von Datenbankanwendung 140, Audio-/Videoanwendung 142), Browseranwendung 144, Speichermanager 162, Prozessplaner 164, Ein-/Ausgabeplaner 166 und Systemressourcenmanager 168. Nach Erhalt einer oder mehrerer Inferenzen kann eine Softwarekomponente der Softwarearchitektur 100 diese Inferenz verwenden, um die Leistung einer oder mehrerer Operationen, wie hier besprochen, zu steuern; z.B. im Kontext des Szenarios 400 unten. Während der Ausführung kann eine Nicht-Kernelkomponente eine oder mehrere Operationen ausführen; z.B. Nicht-Kerneloperationen zur Ausführung einer Aufgabe. Zum Beispiel können der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 Nicht-Kerneloperationen ausführen, einschließlich, aber nicht beschränkt auf ein Empfangen von Eingabedaten, ein Empfangen von Inferenzanforderungen, ein Erzeugen von Inferenzen, ein Erzeugen von Inferenzantworten und ein Bereitstellen von Inferenzen.
-
Die Datenbankanwendung 140 kann Zugriff auf eine oder mehrere Datenbanken ermöglichen, z. B. Lese-, Schreib-, Aktualisierungs-, Löschoperationen usw. für in der Datenbank gespeicherte Daten. Ein Merkmal von transaktionalen Datenbankanwendungen, wie z.B. der Datenbankanwendung 140, ist ein „atomarer Commit“ einer Datenbank, was bedeutet, dass entweder alle Datenbankänderungen innerhalb einer einzigen Transaktion oder keine davon stattfinden. Eine Technik zur Bereitstellung eines atomaren Commits heißt WAL-Protokollierung (Write Ahead Logging), bei der die Datenbankanwendung 140 Datenänderungen in ein Checkpoint-Journal schreiben kann, während die Datenbank unverändert bleibt. Wenn ein atomarer Commit angefordert wird, wird ein spezieller Datensatz, der einen Commit anzeigt, an das Checkpoint-Journal angehängt. Somit können Datenbankleser weiterhin aus der unveränderten Datenbank lesen, während gleichzeitig Änderungen in das Checkpoint-Journal übertragen werden. In einigen Fällen können mehrere Datenbanktransaktionen im Checkpoint-Journal gespeichert werden. Zur Aktualisierung der Datenbank kann die Datenbankanwendung 140 dann ein „Checkpointing“ durchführen, bei dem die Datenänderungen im Checkpoint-Journal auf die Datenbank angewendet und in der Datenbank gespeichert werden. In einigen Beispielen kann die Datenbankanwendung 140 während ihres Betriebs die „Write-Ahead“-Protokollierung mit Checkpointing von Datenbanken verwenden. Insbesondere bei diesen Beispielen kann die Datenbankanwendung 140 eine Heuristik verwenden, um zu bestimmen, wann ein Checkpointing in der Datenbank durchgeführt werden soll; z.B. kann ein Checkpoint durchgeführt werden, wenn das Checkpoint-Journal eine vorgegebene Größe erreicht. Als solche kann die Datenbankanwendung 140 Nicht-Kerneloperationen ausführen, einschließlich, aber nicht beschränkt auf, das Erstellen einer Datenbank, das Modifizieren einer Datenbank, das Lesen von Daten aus einer Datenbank, das Schreiben von Daten in eine Datenbank, das Festschreiben von Daten in eine Datenbank, das Durchführen von Datenbanktransaktionen, die Datenbanktransaktionen protokollieren, das Durchführen von atomaren Festschreibungen, das Überprüfen einer Datenbank, das Ausführen von Heuristiken, das Anfordern von Inferenzen, das Empfangen von Inferenzen und das Verwenden von Heuristiken und/oder und Inferenzen während der Ausführung.
-
Die Audio-/Video-Anwendung 142 kann den Zugriff auf Audio- und/oder Video-Inhalte ermöglichen, einschließlich der Wiedergabe gespeicherter Audio- und/oder Video-Inhalte, der Anzeige von Stand- und/oder Videobildern sowie der Wiedergabe und anschließenden Bereitstellung von Text, Grafiken, Bildern, Tönen und/oder anderen Ausgaben. In einigen Beispielen kann die Audio-/Videoanwendung 142 während ihres Betriebs einen oder mehrere Puffer verwenden. Die Verwendung mehrerer Puffer kann den Durchsatz des Audio- und/oder Videoinhalts erhöhen und gleichzeitig die Latenzzeit nachteilig beeinflussen. In einem Audiokontext kann sich die Audiolatenz auf eine Verzögerungszeit (normalerweise in Millisekunden gemessen) zwischen dem Eintreffen eines Audiosignals bei der Audio-/Videoanwendung 142 und dem tatsächlichen Bereitstellen oder Abspielen des Audiosignals durch die Audio-/Videoanwendung 142 beziehen. Ein gewisses Maß an Latenz, das als Audiopufferung bezeichnet wird, kann verwendet werden, um sicherzustellen, dass Wiedergabe, Aufnahme und Verarbeitung zu einem fehlerfreien Audiostrom ohne Aussetzer oder Störungen führen. Ein Kompromiss besteht darin, dass kleinere Puffergrößen zu einer geringeren Latenz führen, aber kleinere Puffergrößen können zu Aussetzern oder Störungen führen, so dass eine optimale Puffergröße eine möglichst kleine Puffergröße ohne Beeinträchtigung der Audioqualität wäre.
-
In einem Videokontext kann die Pufferung gerenderter grafischer Anzeigen, wie z.B. Doppelpufferung, zur Reduzierung oder Beseitigung unerwünschter visueller Artefakte verwendet werden. Bei der Doppelpufferung kann die Audio-/Video-Anwendung 142 die Ergebnisse der Rendering-Vorgänge zunächst in einem „Rückpuffer“ speichern. Wenn die Rendering-Operationen als abgeschlossen betrachtet werden, kann die Audio-/Video-Anwendung 142 einen Teil oder den gesamten Rückpuffer in einen „Frontpuffer“ kopieren und den Inhalt des Frontpuffers anzeigen. Das Kopieren vom Rückpuffer in den Vorderpuffer kann mit einem Aktualisierungszyklus synchronisiert werden, um Tearing-Artefakte zu vermeiden. Die doppelte Pufferung erfordert notwendigerweise mehr Speicher- und CPU-Zeit als die einfache Pufferung, da der für den hinteren Puffer zugewiesene Systemspeicher, die Zeit für den Kopiervorgang und die Zeit, die auf die Synchronisation wartet, größer ist.
-
Audio-/Video-Anwendung 142 kann eine oder mehrere Heuristiken verwenden, um eine Größe und/oder eine Anzahl von Speicherpuffern zur Speicherung eines Teils oder des gesamten Audio- und/oder Videoinhalts zu bestimmen. In einigen Beispielen kann die Audio-/Video-Anwendung 142 Pufferspeicher für die Bereitstellung von Audio- und/oder Video-Inhalten im Hinblick auf die Zuweisung einer Anzahl von Puffern vorbestimmter Größen, z.B. Puffer oder die Speicherung einer vorbestimmten Anzahl von Inhaltspixeln, Puffer zur Speicherung einer vorbestimmten Menge (unkomprimierter) Audio-Inhalte, Puffer zur Speicherung einer vorbestimmten Anzahl von Bytes usw., zuweisen. Dann kann die Änderung einer Puffergröße durch die Audio-/Video-Anwendung 142 durch Zuweisung und/oder Freigabe von Puffern dieser vorgegebenen Größen durchgeführt werden. Als solche kann die Audio-/Video-Anwendung 142 Nicht-Kerneloperationen durchführen, einschließlich, aber nicht beschränkt auf den Empfang von Audio- und/oder Video-Inhalten, die Bereitstellung von Audio- und/oder Video-Inhalten, die Pufferung von Audio- und/oder Video-Inhalten, die Zuweisung von Puffern, die Änderung der Puffergrößen, die Freigabe von Puffern, die Ausführung von Heuristiken, die Anforderung von Inferenzen, den Empfang von Inferenzen und die Verwendung von Heuristiken und/oder und Inferenzen während der Ausführung.
-
Ein weiteres Nicht-Kernel-Software-Beispiel bezieht sich auf einen Compiler. Ein Compiler ist eine Software-Anwendung, die Software-Anweisungen in einer Programmiersprache in maschinenausführbare Anweisungen übersetzt. Einige Compiler sind Just-in-Time (JIT)-Compiler, die Anweisungen in einer Programmiersprache während der Laufzeit in maschinenausführbare Anweisungen übersetzen können, zumindest für einen Teil der Anweisungen in der Programmiersprache für einen Prozess. Einige JIT-Compiler verwenden Tracing-Just-in-Time-Kompilierungstechniken, bei denen eine lineare Sequenz häufig ausgeführter Operationen aufgezeichnet, in nativen Maschinencode kompiliert und ausgeführt werden kann. Tracing-JIT-Compiler basieren auf der Annahme, dass Programme die meiste Zeit in einigen als „Hot-Loops“ bezeichneten Schleifen des Programms verbringen und nachfolgende Schleifeniterationen oft ähnliche Wege nehmen. Tracing-JIT-Compiler können eine oder mehrere Hot-Loop-Heuristiken verwenden, um Teile von Ausführungsspuren als Hot-Loops zu klassifizieren.
-
Einige Compiler sind in einer anderen Anwendung eingebettet - zum Beispiel zeigt 1 den Just-in-Time-Compiler 146 eingebettet mit der Browseranwendung 144. In anderen Beispielen kann ein Just-in-Time-Compiler eine eigenständige Anwendung sein, wie z.B. der Just-in-Time-Compiler 148 zeigt. Als solches kann der Just-in-Time-Compiler 148 von der Browser-Anwendung 144 und/oder anderen Software-Anwendungen verwendet werden, z.B. der Datenbank-Anwendung 140, der Audio-/Video-Anwendung 142, einer E-Mail-Anwendung, einer Karten-Anwendung, einer Ride-Sharing-Anwendung usw.
-
Bei der Browser-Anwendung 144 kann es sich um einen Webbrowser handeln, der zum Abrufen und Anzeigen von Inhalten, einschließlich entfernt gespeicherter Inhalte, verwendet werden kann; z.B. über das Internet verfügbare Inhalte. In einigen Fällen kann der ferngespeicherte Inhalt Anweisungen der Programmiersprache enthalten und/oder mit diesen verbunden sein. Dann kann der Just-in-Time-Compiler 146 (und/oder der Just-in-Time-Compiler 148) die Programmiersprachenanweisungen als Eingabe lesen und die eingegebenen Programmiersprachenanweisungen in maschinenausführbare Ausgabeanweisungen übersetzen, die auf einem (virtuellen) Computergerät ausführbar sind. In einigen Beispielen kann der Just-in-Time-Compiler 146 (und/oder der Just-in-Time-Compiler 148) einen Tracing-JIT-Compiler umfassen und über eine oder mehrere Hot-Loop-Heuristiken verfügen, um Teile von Ausführungsspuren als Hot-Loops zu klassifizieren. Als solche können die Browser-Anwendung 144 und der Just-in-Time-Compiler 146 (und/oder der Just-in-Time-Compiler 148) Nicht-Kerneloperationen ausführen, einschließlich, aber nicht beschränkt auf ein Erhalten von Inhalten (möglicherweise von einem entfernten Computergerät), ein Anzeigen empfangener Inhalte, ein Kompilieren von Programmiersprachenanweisungen, ein Interpretieren von Kompiliersprachenanweisungen, dein Ausführen von Tracing Just-in-Time-Kompilierungstechniken, ein Ausführen maschinenausführbarer Anweisungen, ein Erkennen von Hot-Loops, ein Ausführen von Heuristiken, ein Anfordern von Inferenzen, ein Empfangen von Inferenzen und ein Verwenden von Heuristiken und/oder und Inferenzen während der Ausführung.
-
Kernel-Speicherplatz 120 umfasst Speicher für Kernel-Software für einen Betriebssystemkernel, der auf dem Computergerät ausgeführt wird. Ein Teil oder die Gesamtheit einer ausführbaren Software, die zur Ausführung im Kernel-Speicherbereich 120 konfiguriert ist, kann als Kernelkomponente bezeichnet werden. 1 veranschaulicht den Kernel-Speicherplatz 120 der Software-Architektur 100 mit Beispielen für Kernelkomponenten einschließlich Speichermanager 162, Prozessplaner 164, Ein-/Ausgabeplaner 166 und Systemressourcenmanager 168. Es sind auch mehr, weniger und/oder andere Beispiele für Kernelkomponenten möglich. Während der Ausführung kann eine Kernelkomponente eine oder mehrere „Kerneloperationen“ oder Aktivitäten im Zusammenhang mit der Ausführung einer oder mehrerer Aufgaben der Kernelkomponente ausführen. In einigen Beispielen kann ein Teil der Funktionalität des Betriebssystemkernels 160 unter Verwendung von Nicht-Kernelkomponenten ausgeführt werden; z.B. können Dateisystem- und/oder Gerätetreiber-Softwarekomponenten, die sich auf den Betriebssystemkernel 160 beziehen, Nicht-Kernelkomponenten sein, die im Nicht-Kernel-Speicherbereich 110 ausgeführt werden. Insbesondere von diesen Beispielen kann ein Teil oder die gesamte hier beschriebene Funktionalität des Ein-/Ausgabeplaners 166 unter Verwendung von Nicht-Kernelkomponenten ausgeführt werden.
-
Der Speichermanager 162 kann den Zugriff auf einen Teil oder den gesamten auf dem Computergerät verfügbaren Speicher „verwalten“ oder kontrollieren, indem er eine oder mehrere Kerneloperationen durchführt. Zum Beispiel kann der Speichermanager 162 Kerneloperationen ausführen, einschließlich, aber nicht beschränkt auf die Zuweisung von Speicher, die Freigabe von Speicher, das Hinzufügen von Cache-Einträgen zu einem oder mehreren Speicher-Caches, das Löschen von Cache-Einträgen aus einem oder mehreren Speicher-Caches, das Zusammenfügen von Speicherblöcken, das Aufteilen von Speicherblöcken, die Zuweisung von Speicherblöcken und die Freigabe von Speicherblöcken, Größenänderung von Speicherplatten, Bereitstellung einer komprimierten Blockvorrichtung zum Komprimieren von Speicherrahmen/Speicherseiten und Dekomprimieren von Speicherrahmen/Speicherseiten, Aufrechterhaltung von Daten bezüglich der Speicherverwaltung, Ausführung von Heuristiken, Anforderung von Inferenzen, Empfang von Inferenzen und Verwendung von Heuristiken und/oder und Inferenzen während der Ausführung.
-
Bei der Speicherverwaltung kann der Speichermanager 162 eine oder mehrere Heuristiken verwenden. In einem Beispiel können diese Heuristiken eine oder mehrere Cache-bezogene Heuristiken umfassen, um einen Cache-Speicher zu verwalten, wobei der Cache eine vorbestimmte Menge an relativ schnellem Speicher umfassen kann; z.B. ein Hardware-Cache, der im Vergleich zum Hauptspeicher relativ schnell ist, ein Speicherpuffer, der als Cache fungiert, der im Vergleich zu einem Dateispeichergerät relativ schnell ist. Der Cache kann einen oder mehrere „Cache-Einträge“ oder Datenelemente speichern. Während der Verwaltung des Cache kann der Speichermanager 162 neue Cache-Einträge empfangen, die im Cache gespeichert werden sollen. Wenn ein neuer Cache-Eintrag eintrifft, kann der Speichermanager 162 einen oder mehrere Cache-Einträge „Verdrängung“ oder Entfernung aus dem Cache auswählen, um Platz für den neuen Cache-Eintrag zu schaffen. Die Cache-bezogene(n) Heuristik(en) kann (können) verschiedene Werte bestimmen, die mit der Bestimmung von Cache-Einträgen für die Räumung verbunden sind; z.B. einen Cache-Prioritätswert für jeden Cache-Eintrag im Cache auf der Grundlage der Zugriffszeiten für Cache-Einträge, der Ankunftszeiten von Cache-Einträgen und/oder anderer Cache-bezogener Daten.
-
In einem weiteren Beispiel kann der Speichermanager 162 einen relativ großen virtuellen Speicherplatz mit einer relativ kleinen Menge an physischem Speicher verwalten, z. B. eine vorgegebene Menge an flüchtigem Speicher, wie z. B. RAM (Random Access Memory). Der Speichermanager 162 kann sowohl den virtuellen Speicher als auch den physischen Speicher in Speicherseiten oder Frames einer vorgegebenen Größe (z.B. 4 Kilobyte, 8 Kilobyte) unterteilen - der Begriff Speicherseite wird häufig für Daten verwendet, die in einem Sekundärspeicher (z.B. Flash-Speicher, Plattenplatz) gespeichert sind, während der Begriff Speicherframe häufig für Daten im physischen Speicher verwendet wird. Jede Seite des virtuellen Speichers kann „gesichert sein durch“ oder mit einem entsprechenden Rahmen des physischen Speichers und/oder einem relativ großen „Sicherungsspeicher“ oder einer vorbestimmten Menge an Sekundärspeicher, der Speicherseiten speichert, verbunden sein. Der Hintergrundspeicher kann Seiten speichern, die „ausgelagert“ oder aus dem physischen Speicher entfernt wurden, wodurch Speicher bereitgestellt wird, der einem Speichersystem den relativ größeren virtuellen Speicherraum bereitstellt.
-
Da der virtuelle Speicherplatz größer als der physische Speicherplatz ist, kann eine Speicherseite vom Hintergrundspeicher in einen Speicherrahmen „eingeblättert“ bzw. „eingepagt“ werden, um einem Prozess den Zugriff auf die Speicherseite/den Speicherrahmen zu ermöglichen, und ein Speicherrahmen kann auf eine Speicherseite des Hintergrundspeichers „ausgelagert“ bzw. „ausgepagt“ werden, wenn der Prozess nicht mehr auf die Speicherseite/den Speicherrahmen zugreift. Damit ein Programm auf einen beliebigen Teil einer virtuellen Speicherseite zugreifen kann, sollte die virtuelle Speicherseite durch einen Rahmen im physischen Speicher gesichert werden. Ein „Seitenfehler“ kann jedoch auftreten, wenn ein Prozess versucht, auf eine virtuelle Speicherseite zuzugreifen, die zu diesem Zeitpunkt nicht durch einen Speicherrahmen gesichert ist. Wenn ein „Seitenfehler“ auftritt, kann der Kernel den Prozess anhalten, in eine angeforderte Speicherseite einblenden und den Prozess wieder aufnehmen - aus Sicht des Prozesses befand sich die Seite (oder der Rahmen) die ganze Zeit im physischen Speicher. Die verstrichene Ausführungszeit für den Prozess, der einen Seitenfehler hat, ist jedoch oft viel länger, da der Kernel normalerweise relativ langsame Eingabe-Ausgabe-Operationen durchführen muss, um die angeforderte Seite einzupagen.
-
Der Speichermanager 162 kann Speicherseiten und/oder Speicherrahmen für virtuellen Speicher bereitstellen, indem er eine oder mehrere Seitenzuweisungs-Heuristiken verwendet, wie z.B. einen „Buddy Allocator“, der physischen Speicher in Speicherblöcke unterteilt, wobei jeder Speicherblock eine Zweierpotenz (z.B. 2, 4, 8, 16 ...) der Anzahl der Rahmen haben kann. Nach Erhalt einer Speicheranforderung der Größe SZ1 kann der Speichermanager 162 feststellen, ob ein Block der Größe SZ1 verfügbar ist. Wenn ein Block der Größe SZ1 nicht verfügbar ist, kann Speichermanager 162 einen Speicherblock, dessen Größe größer ist als SZ1, in ein Blockpaar aufteilen, und die beiden Blöcke des Paares werden als „Buddies“ klassifiziert. Einer der Blockpaare kann dann zur Erfüllung der Speicheranforderung zugewiesen werden und der andere Block kann „frei“ oder nicht zugewiesen bleiben. Der Speichermanager 162 kann Speicherblöcke nach Bedarf halbieren, bis ein Speicherblock der Größe SZ1 zur Verfügung gestellt wird. Wenn ein Speicherblock später freigegeben wird, kann der Speichermanager 162 einen „Buddy“ des freigegebenen Blocks untersuchen - wenn beide Blöcke frei sind, kann der Speichermanager 162 die beiden Speicherblöcke zu einem größeren Speicherblock zusammenfügen.
-
Der Speichermanager 162 kann eine oder mehrere plattenbezogene Heuristiken verwenden, die sich auf die Zuweisung, Größenänderung und Freigabe von „Platten“ des Speichers beziehen. Eine Speicherplatte kann ein Speicherblock sein, der ein oder mehrere häufig verwendete Kernelobjekte speichert, die in einem initialisierten Zustand gehalten werden; z.B. Objekte, die Prozesse repräsentieren, Kernel-Warteschlangeneinträge usw. Die Slab-Zuweisung zielt darauf ab, häufig verwendete freigegebene Kernel-Objekte zwischenzuspeichern, um die Struktur des freigegebenen Kernel-Objekts zwischen den Verwendungen zu erhalten. Die Slab-Zuweisung kann dem Kernel Zeit und Ressourcenabfluss für die Zuweisung, Initialisierung und Freigabe häufig verwendeter Kernel-Objekte ersparen.
-
Der Speichermanager 162 kann eine oder mehrere komprimierungsbezogene Heuristiken für die Verwaltung eines komprimierten Blockgeräts verwenden, z. B. einen dynamisch zugewiesenen Bereich des RAM, der als virtuelles Gerät verwaltet wird. Das komprimierte Blockgerät kann Daten, wie z.B. Speicherrahmen, in komprimierter Form speichern, wodurch mehr Informationen gespeichert werden und ein schnellerer Zugriff auf Speicherrahmen im Vergleich zu den im Sekundärspeicher gespeicherten Speicherseiten ermöglicht wird. Die Verwendung von komprimierten Blockgeräten kann zu einem reduzierten Zugriff auf den Sekundärspeicher führen und so die Anzahl der Lese-/Schreibzyklen für Geräte, die Sekundärspeicher bereitstellen, verringern und dadurch die Lebensdauer dieser Geräte verlängern.
-
Die Zeit, die zum Komprimieren und späteren Dekomprimieren der auf dem Gerät für komprimierte Blöcke gespeicherten Daten benötigt wird, ist oft ungefähr proportional zur Anzahl der Bytes, die komprimiert oder dekomprimiert werden. Da die Größe eines Speicherrahmens ziemlich groß ist, kann die Komprimierung und Dekomprimierung von Speicherrahmen eine relativ teure Operationen sein. Daher sollte der Speichermanager 162 Speicherrahmen, die komprimiert oder dekomprimiert werden sollen, sorgfältig auswählen, z.B. einen Speicherrahmen, der wahrscheinlich wieder verwendet wird, aber in naher Zukunft nicht mehr verwendet werden dürfte, um zu vermeiden, dass die teuren Operationen der Komprimierung und anschließenden Dekomprimierung von Seiten wiederholt durchgeführt werden. Die kompressionsbezogene(n) Heuristik(en) kann (können) eine Auswahlheuristik enthalten, wie z.B. eine Heuristik, die am seltensten verwendet wird oder eine First-in-first-out-Heuristik, die der Speichermanager 162 verwenden kann, um auf einem Gerät für komprimierte Blöcke gespeicherte Speicherrahmen zur Dekomprimierung auszuwählen und/oder um Speicherrahmen zur Komprimierung und Speicherung auf dem Gerät für komprimierte Blöcke auszuwählen.
-
Der Prozessplaner 164 kann den Zugriff auf einen oder mehrere Prozessoren des Computergeräts steuern, indem er Prozesse zur Ausführung durch den einen oder die mehreren Prozessoren plant, indem er eine oder mehrere Kerneloperationen durchführt. Zum Beispiel kann der Prozessplaner 164 Kerneloperationen ausführen, einschließlich, aber nicht beschränkt auf, die Planung von Prozessen zur Ausführung, die Auswahl von Prozessen zur Ausführung, die Initiierung der Ausführung eines Prozesses, das Anhalten der Ausführung eines Prozesses, das Beenden der Ausführung eines Prozesses, die Pflege von Daten, die sich auf die Prozess-Planung beziehen, die Bestimmung einer oder mehrerer Prioritäten, die sich auf die Prozesse beziehen, die Bestimmung von Zeitscheiben für die Prozesse, die Ausführung von Heuristiken, die Anforderung von Inferenzen, den Empfang von Inferenzen und die Verwendung von Heuristiken und/oder und Inferenzen während der Ausführung. Eine Zeitscheibe für einen Prozess kann eine maximale Zeitspanne angeben, in der der Prozess von dem einen oder mehreren Prozessoren ohne Unterbrechung ausgeführt werden kann. Dann kann der Prozessplaner 164 auf der Grundlage der Prioritäten einen Prozess für die Ausführung auswählen und dann dem ausgewählten Prozess die Ausführung auf mindestens einem des einen oder der mehreren Prozessoren für eine Zeitspanne erlauben, die auf der Zeitscheibe für den ausgewählten Prozess basiert. Bei der Planung von Prozessen kann der Prozessplaner 164 eine oder mehrere Heuristiken verwenden, um Zeitscheibenwerte für Prozesse (dynamische) Prioritätswerte für Prozesse, Prozessoraffinitätswerte, die Prozesse mit einem oder mehreren Prozessoren eines Computergeräts verbinden, und möglicherweise andere Werte zu bestimmen.
-
Der Ein-/Ausgabeplaner 166 kann den Zugriff auf ein oder mehrere Ein- und/oder Ausgabegeräte des Computergeräts verwalten, indem er eine oder mehrere Kerneloperationen durchführt. Zum Beispiel kann der Ein-/Ausgabeplaner 166 Kerneloperationen durchführen, einschließlich, aber nicht beschränkt auf die Bestimmung, welche Anforderungen von Ein-/Ausgabegeräten in welcher Reihenfolge und für welche Zeitdauer erfüllt werden müssen, so dass das System insgesamt einen hohen Durchsatz und eine niedrige Latenz aufweist, wobei ein Prozess ausgewählt wird, der ein Eingabegerät und/oder ein Ausgabegerät verwendet, Anhalten der Verwendung eines Eingabegeräts und/oder eines Ausgabegeräts durch einen Prozess, Beenden der Verwendung eines Eingabegeräts und/oder eines Ausgabegeräts durch einen Prozess, Verwalten von Daten, die sich auf die Verwaltung des Zugriffs auf das eine oder die mehreren Eingabe- und/oder Ausgabegeräte beziehen, Ausführen von Heuristiken, Anfordern von Inferenzen, Empfangen von Inferenzen und Verwenden von Heuristiken und/oder und Inferenzen während der Ausführung. Beispiele für diese Ein- und/oder Ausgabegeräte sind Blockspeichergeräte, z.B. Flash-Laufwerke, Platten, redundante Arrays unabhängiger Platten (RAIDs), Blockspeichergeräte, die als ein oder mehrere Storage Area Networks (SANs) angeordnet sind, usw.
-
In einigen Beispielen kann der Eingabe/Ausgabe-Planer 166 eine oder mehrere Eingabe/Ausgabe-bezogene Heuristiken verwenden, um einen Prozess zu charakterisieren, der Zugriff auf ein Ein- und/oder Ausgabegerät anfordert, und um die Prioritäten von Prozessen für die Planung des Zugriffs auf ein Ein- und/oder Ausgabegerät zu bestimmen. Zum Beispiel kann der Eingabe/Ausgabeplaner 166 die Eingabe-Ausgabe-bezogene(n) Heuristik(en) verwenden, um Prozesse als „Basislinie“, „interaktiv“ und/oder „weiche Echtzeit“ zu charakterisieren. Interaktive und/oder Soft-Echtzeit-Prozesse können eine sehr geringe Latenzzeit erfordern und sollten daher ihre E/A-Anforderungen mit höherer Priorität bedienen lassen. Dies können anwenderseitige Anwendungen sein, insbesondere Multimedia-Anwendungen wie Video- und Audio-Player, bei denen die Einführung zusätzlicher Latenzzeiten zu unerwünschten Unterbrechungen der Wiedergabe führen kann. Basislinien-Prozesse können eine niedrigere Priorität haben als interaktive oder weiche Echtzeit-Prozesse. Dann kann der Eingabe/Ausgabeplaner 166 diese Charakterisierung verwenden, um eine Priorität für den Zugriff auf das Ein- und/oder Ausgabegerät zu bestimmen. Der Eingabe/Ausgabe-Planer 166 kann einen Prozess für den Zugriff auf ein Ein- und/oder Ausgabegerät auswählen, basierend auf den Prioritäten aller Prozesse, die Zugriff auf das Ein- und/oder Ausgabegerät anfordern. In einigen Beispielen können die eingabe-/ausgabebezogene(n) Heuristik(en) eine oder mehrere Heuristiken enthalten, um direkt eine Priorität eines Prozesses zu bestimmen, der Zugriff auf ein Eingabe- und/oder Ausgabegerät anfordert. In einigen Beispielen können Charakterisierungsheuristiken anfällig für falsch-positive Ergebnisse von Anwendungen sein, die nicht wesentlich von der höheren E/A-Priorität profitieren würden, aber dennoch die Verwendung von E/A-Geräten durch andere Prozesse reduzieren würden.
-
Systemressourcenmanager 168 kann die Ressourcen des Computergeräts verwalten, indem er eine oder mehrere Kerneloperationen durchführt. Beispielsweise kann der Systemressourcenmanager 168 Kerneloperationen ausführen, einschließlich, aber nicht beschränkt auf die Erzeugung eines Ressourcenbehälters, die Spezifizierung von Ressourcen, die einem Ressourcenbehälter zugeordnet sind, die Modifizierung eines Ressourcenbehälters, das Löschen eines Ressourcenbehälters, die Zuweisung eines Ressourcenbehälters an einen Prozess, die Pflege von Daten, die sich auf einen Ressourcenbehälter beziehen, die Ausführung von Heuristiken, die Anforderung von Inferenzen, den Empfang von Inferenzen und die Verwendung von Heuristiken und/oder und Inferenzen während der Ausführung.
-
Beispielsweise kann der Systemressourcenmanager 168 einen oder mehrere Ressourcenbehälter bestimmen, wobei jeder Ressourcenbehälter die für einen Prozess verfügbaren Ressourcen angibt. Dann kann der Systemressourcenmanager 168 jeden Prozess einem Ressourcenbehälter zuweisen und so die für den Prozess verfügbaren Ressourcen steuern. Ein weiteres Beispiel: Der Systemressourcenmanager kann Systemressourcen verwalten, indem er statisch eine Anzahl von Ressourcenbehältern erzeugt, die die für einen Prozess verfügbaren Ressourcen angeben, und dann jeden Prozess mit Hilfe einer Systemressourcen-Verwaltungsheuristik dynamisch einem aus der Anzahl der Ressourcenbehälter zuweist. Beispielsweise können die Ressourcenbehälter fünf Standardgrößen haben: (1) eine extra kleine Größe, die einem extra kleinen Satz von Ressourcenbeschränkungen zugeordnet ist, die eine Mindestmenge an Ressourcen spezifizieren, (2) eine kleine Größe, die einem kleinen Satz von Ressourcenbeschränkungen zugeordnet ist, der größer als der extra kleine Satz von Ressourcenbeschränkungen ist, (3) eine mittlere Größe, die einem mittleren Satz von Ressourcenbeschränkungen zugeordnet ist, der größer als der kleine Satz von Ressourcenbeschränkungen ist, (4) eine große Größe, die einem großen Satz von Ressourcenbeschränkungen zugeordnet ist, der größer als der mittlere Satz von Ressourcenbeschränkungen ist, und (5) eine extragroße Größe, die einem extragroßen Satz von Ressourcenbeschränkungen zugeordnet ist, der größer als der große Satz von Ressourcenbeschränkungen ist, und so eine maximale Menge an Ressourcen angibt, die einem Ressourcenbehälter für dieses Beispiel zugeordnet ist. Die Verwendung von Ressourcenbehältern kann in Strom-, Wärme- und anderen Arten von Systemen gesehen werden. Wenn jedoch der aktuelle Ressourcenbedarf einer Systemressource zwischen zwei Behältern liegt, kann es sein, dass die Systemressource nicht so genutzt wird, wie durch die statische Auswahl der Ressourcenbehälter beabsichtigt. Wenn ein Prozess einem Ressourcenbehälter falsch zugeordnet ist, verfügt der Prozess möglicherweise nicht über genügend Ressourcen oder hat Zugriff auf zu viele Ressourcen.
-
Software, die im Nicht-Kernel-Speicherbereich 110 des Computergeräts ausgeführt wird, kann mit Software, die im Kernel-Speicherbereich 120 ausgeführt wird, über eine vorbestimmte Schnittstelle kommunizieren, z.B. eine Dateischnittstelle, die unter Verwendung von Kernel- und Nicht-Kernel-zugänglichen Dateien/Daten (KNKD) 150 bereitgestellt wird. Zum Beispiel kann Betriebssystem-Kernel 160 bestimmte Kerneldaten zum Lesen und Schreiben über eine oder mehrere Dateien bereitstellen; z.B. Dateien mit vorbestimmten Namen, die unter Verwendung einer sysfs (/sys-Verzeichnis) und/oder einer procfs (/proc-Verzeichnis) Dateisystemschnittstelle bereitgestellt werden. Als solche können Kernel- und Nicht-Kernel-zugreifbare Dateien / Daten 150 eine oder mehrere Dateien, Speicherpuffer und/oder andere Datenelemente umfassen; z.B, Dateien mit Kernel-Daten, die über eine /procfs und/oder /sysfs-Schnittstelle für Nicht-Kernel-Software zur Verfügung gestellt werden, eine oder mehrere Dateien mit Inferenzen, die vom Inferenzdämon 130 bereitgestellt werden, anwendungsspezifische Eingabedaten. Die Verwendung der Dateischnittstelle, die unter Verwendung von Kernel- und Nicht-Kernel-zugänglichen Dateien / Daten 150 bereitgestellt wird, ermöglicht die gemeinsame Verwendung von Informationen, wie Eingabedaten und/oder Inferenzen, zwischen Softwarekomponenten, ohne dass wesentliche neue Softwareschnittstellen, wie z.B. neue Systemaufrufe, geschaffen werden müssen, wodurch die mit der Entwicklung solcher neuen Softwareschnittstellen verbundene Zeit, Softwarefehler und Kosten entfallen können.
-
Kernel- und Nicht-Kernel-zugängliche Dateien/Daten 150 können Eingabedaten umfassen, die von Software bereitgestellt werden, die im Nicht-Kernel-Speicherbereich 110 ausgeführt wird (z.B. anwendungsspezifische Eingabedaten) und/oder Eingabedaten, die von Software bereitgestellt werden, die im Kernel-Speicherbereich 120 ausgeführt wird (z.B. kernelbezogene Eingabedaten). Der Inferenzdämon 130 kann die Eingabedaten aus Dateien / Daten 150 (und eventuell aus anderen Quellen) beziehen, auf die der Kernel zugreifen kann, und die Eingabedaten für das/die trainierte(n) Modell(e) des maschinellen Lernens 132 bereitstellen. Unter Verwendung der Eingabedaten kann (können) das (die) trainierte(n) maschinelle(n) Lernmodell(e) 132 eine oder mehrere Inferenzen erzeugen. Die eine oder mehreren Inferenzen können durch den Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 an Kernel- und Nicht-Kernel-Software in der Software-Architektur 100 unter Verwendung einer oder mehrerer Inferenzdateien (oder anderer Datenstrukturen) von Kernel- und Nicht-Kernel-zugänglichen Dateien / Daten 150 bereitgestellt werden.
-
Da Dateien in Kernel- und Nicht-Kernel-zugänglichen Dateien/Daten 150 persistente Datenstrukturen sind, behalten Inferenzen (die Inferenzwerte enthalten können), die in die Inferenzdatei(en) geschrieben werden, ihre vorherigen Werte bei, bis sie erneut geschrieben werden. Daher kann eine Kernelkomponente oder eine Nicht-Kernelkomponente, die nach Inferenzwerten sucht, die Inferenzwerte aus der/den Inferenzdatei(en) lesen, ohne auf eine neue Inferenz zu warten; d.h. der Inferenzdämon 130 und das/die trainierte(n) maschinelle Lernmodell(e) 132 können Inferenzen in die Inferenzdatei(en) schreiben und Kernelkomponenten und/oder Nicht-Kernelkomponenten können die Inferenzen asynchron aus der/den Inferenzdatei(en) lesen. Wenn außerdem der Inferenzdämon 130 und das/die trainierte(n) maschinelle Lernmodell(e) 132 im Vergleich zur Kernelkomponente oder Nicht-Kernelkomponente relativ langsam sind, kann die Kernelkomponente oder Nicht-Kernelkomponente die Inferenz(en) aus der/den Inferenzdatei(en) lesen und die vorhandenen (und wahrscheinlich leicht veralteten) Inferenzwerte aus der/den Inferenzdatei(en) verwenden, ohne auf neue Inferenzen zu warten. Wenn man das Warten auf Inferenzen vermeidet, kann die Kernelkomponente oder Nicht-Kernelkomponente während der Ausführung einer Aufgabe schnell reagieren; d.h. im Gegensatz zum Warten auf eine synchrone Schnittstelle zwischen Inferenz-Dämon 130 / trainiertem(n) maschinellen Lernmodell(en) 132 und Kernelkomponente und Nicht-Kernelkomponenten. In einigen Beispielen können sich einige oder alle der Inferenzdatei(en) in verschiedenen Dateisystemen befinden als die sysfs und/oder die procfs-Dateisystemschnittstelle; z.B. können sich Inferenzdatei(en), die den Nicht-Kernel-Softwarekomponenten zugeordnet sind, in einem anderen Dateisystem, Verzeichnis, Ordner oder einer verwandten Struktur von Dateien befinden als von der sysfs und/oder der procfs-Dateisystemschnittstelle angegeben.
-
In weiteren Beispielen können andere Datenstrukturen und/oder andere Objekte als Dateien verwendet werden, um Eingabedaten für das/die trainierte(n) maschinelle Lernmodell(e) 132 und/oder Inferenzen, die von dem/den trainierten maschinellen Lernmodell(en) 132 gezogen wurden, an Kernelkomponenten und Nicht-Kernelkomponenten zu übermitteln. Beispielsweise kann ein Kernel-Objekt von Kernelkomponenten und/oder Nicht-Kernelkomponenten verwendet werden, um Operationen/Methoden bereitzustellen, die den Zugriff auf die vom Kernel gespeicherten persistenten Daten ermöglichen; z.B. können die Methoden des Kernel-Objekts den Zugriff auf die vom Kernel gespeicherten persistenten Daten über Handles, Zeiger oder andere Referenzen auf die persistenten Daten ermöglichen. In einigen dieser Beispiele kann das Kernel-Objekt den Zugriff auf eine Datei und damit den Zugriff auf die vom Kernel gespeicherten persistenten Daten über eine Referenz auf die Datei ermöglichen; während in anderen dieser Beispiele das Kernel-Objekt den Zugriff auf einen Puffer oder eine andere Speicherregion und damit den Zugriff auf die vom Kernel gespeicherten persistenten Daten über eine Referenz auf den Puffer oder eine andere Speicherregion ermöglichen kann. Somit kann die Verwendung von Kernel-Objekten den asynchronen Zugriff auf Eingabedaten und/oder Inferenzen sowohl durch Kernelkomponenten als auch durch Nicht-Kernelkomponenten ermöglichen.
-
In anderen Beispielen kann eine synchronisierte Schnittstelle Inferenzen aus trainierten maschinellen Lernmodellen 132 in vorgegebenen Zeitintervallen und/oder innerhalb einer vorgegebenen Zeitspanne nach der Anforderung einer Inferenz liefern - eine solche synchronisierte Schnittstelle kann zusammen mit oder anstelle von asynchronen Inferenzen verwendet werden. In noch anderen Beispielen können Inferenzen über eine oder mehrere andere Softwareschnittstellen kommuniziert werden, wie z.B. Anwendungsprogramm-Schnittstellen (APIs) und/oder verwandte Kernel-Software-Schnittstellen.
-
In einigen Beispielen können eine oder mehrere Kernelkomponenten und/oder Anwendungsprogramme einen Teil oder die Gesamtheit des/der trainierten maschinellen Lernmodells/-modelle 132 während der Laufzeit abschalten. In verwandten Beispielen kann ein Teil oder die Gesamtheit des/der trainierten maschinellen Lernmodells(e) 132 während der Kompilierung ausgeschaltet werden, z.B. während der Kompilierung des Inferenzdämons 130.
-
Wie in gezeigt, kann (können) das (die) ausgebildete(n) maschinelle(n) Lernmodell(e) 132 von anderen Softwarekomponenten der Softwarearchitektur 100, einschließlich der Kernelkomponenten, getrennt werden. Die Trennung des/der trainierten maschinellen Lernmodell(e) 132 kann ein Ausführen des Inferenzdämons 130 (und damit des/der trainierten maschinellen Lernmodell(e) 132) im Nicht-Kernel-Speicherbereich 110 umfassen, wodurch das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 von den Kernelkomponenten getrennt werden, die im Kernel-Speicherbereich 120 ausgeführt werden; z.B. Speichermanager 162, Prozessplaner 164, Eingabe/Ausgabeplaner 166, Systemressourcenmanager 168, andere Komponenten (nicht in gezeigt) des Betriebssystemkernels 160. Die Ausführung von trainierten maschinellen Lernmodellen 132 im Nicht-Kernel-Speicherbereich 110 kann auch die Verwendung von Benutzerraum-Bibliotheken/Frameworks für maschinelles Lernen ermöglichen. Die Trennung des/der trainierten maschinellen Lernmodell(e) 132 vom Betriebssystem-Kernel 160 kann weniger Kernel-Modifikationen und weniger Kernel-Software ermöglichen und damit verbundene Sicherheitsrisiken und Kernel-Ressourcenanforderungen reduzieren.
-
2 zeigt Diagramm 200, das die Trainingsphase 202 und die Inferenzphase 204 des/der trainierten maschinellen Lernmodells/e 132 gemäß einigen Beispielausführungen veranschaulicht. Das (die) ausgebildete(n) Modell(e) des maschinellen Lernens 132 kann (können) ein oder mehrere Modelle eines oder mehrerer Algorithmen des maschinellen Lernens 220 umfassen. Algorithmus/-en 220 des maschinellen Lernens kann/können unter anderem Folgendes umfassen: ein künstliches neuronales Netz, ein Bayessches Netz, ein verborgenes Markov-Modell, einen Markov-Entscheidungsprozess, eine logistische Regressionsfunktion, eine Support-Vektormaschine, einen geeigneten statistischen Algorithmus des maschinellen Lernens und/oder ein heuristisches maschinelles Lernsystem. Der/die Algorithmus/-en des maschinellen Lernens 220 kann/können beaufsichtigt oder unbeaufsichtigt sein und kann/können jede geeignete Kombination von Online- und Offline-Lernen implementieren.
-
In einigen Beispielen kann (können) der (die) Algorithmus/-en des maschinellen Lernens 220 ein rekurrentes künstliches neuronales Netz umfassen. In einigen Beispielen können der (die) Algorithmus/-en 220 und/oder das (die) trainierte(n) Modell(e) 132 des maschinellen Lernens mit Hilfe von geräteinternen Co-Prozessoren, wie z.B. Grafikverarbeitungseinheiten (GPUs), Tensorverarbeitungseinheiten (TPUs), digitalen Signalprozessoren (DSPs) und/oder anwendungsspezifischen integrierten Schaltungen (ASICs) beschleunigt werden. Solche geräteinternen Co-Prozessoren können zur Beschleunigung von Algorithmen für maschinelles Lernen (220) und/oder trainierten Modellen für maschinelles Lernen (132) und damit zur Beschleunigung des Inferenzdämons 130 verwendet werden. In einigen Beispielen können trainierte(s) maschinelle(s) Lernmodell(e) 132 trainiert, gespeichert und ausgeführt werden, um Inferenzen bzw. Rückschlüsse auf ein bestimmtes Computergerät zu ermöglichen und/oder andernfalls Rückschlüsse für das bestimmte Computergerät zu ziehen.
-
Während der Trainingsphase 202 können der/die Algorithmus/-en des maschinellen Lernens 220 trainiert werden, indem mindestens der Trainingssatz 210 von Daten als Trainingseingabe unter Verwendung von unüberwachten, überwachten, halbüberwachten und/oder Verstärkungs-Lerntechniken bereitgestellt wird. Beim unbeaufsichtigten Lernen wird ein Teil (oder die Gesamtheit) des Trainingssatzes 210 von Daten an den/die Algorithmus/-en für maschinelles Lernen 220 und den/die Algorithmus/-en für maschinelles Lernen 220 geliefert, der/die eine oder mehrere Ausgabeinferenzen auf der Grundlage des gelieferten Teils (oder der Gesamtheit) des Trainingssatzes 210 von Daten bestimmt. Beim überwachten Lernen wird ein Teil der Daten des Trainingssatzes 210 an den/die Algorithmus(en) 220 für maschinelles Lernen geliefert, wobei der/die Algorithmus/-en für maschinelles Lernen 220 eine oder mehrere Ausgabeinferenzen auf der Grundlage des gelieferten Teils der Daten des Trainingssatzes 210 bestimmt/bestimmen, und die Ausgabeinferenz(en) auf der Grundlage der korrekten Ergebnisse, die den Daten des Trainingssatzes 210 zugeordnet sind, entweder akzeptiert oder korrigiert werden. In einigen Beispielen kann das überwachte Lernen von Algorithmus/-en 220 des maschinellen Lernens durch einen Satz von Regeln und/oder einen Satz von Labels für die Trainingseingabe geregelt werden, und der Satz von Regeln und/oder der Satz von Labels kann verwendet werden, um Inferenzen von Algorithmus/-en 220 des maschinellen Lernens zu korrigieren.
-
Semi-überwachtes Lernen bedeutet, dass für einen Teil, aber nicht für alle Daten des Schulungssatzes 210 korrekte Ergebnisse erzielt werden. Beim semi-überwachten Lernen wird überwachtes Lernen für einen Teil des Trainingssatzes 210 mit korrekten Ergebnissen verwendet, und unbeaufsichtigtes Lernen wird für einen Teil des Trainingssatzes 210 mit nicht korrekten Ergebnissen verwendet. Beim Reinforcement Learning bzw. Verstärkungslemen erhalten die Algorithmen des maschinellen Lernens (220) ein Belohnungssignal bezüglich einer früheren Inferenz, wobei das Belohnungssignal ein numerischer Wert sein kann. Während des Verstärkungslernens kann (können) der (die) Algorithmus/-en 220 des maschinellen Lernens eine Inferenz ausgeben und als Antwort ein Belohnungssignal erhalten, wobei der (die) Algorithmus/- en 220 des maschinellen Lernens so konfiguriert ist (sind), dass er (sie) versucht (versuchen), den numerischen Wert des Belohnungssignals zu maximieren. In einigen Beispielen wird beim Verstärkungslemen auch eine Wertfunktion verwendet, die einen numerischen Wert liefert, der eine erwartete Summe der numerischen Werte darstellt, die das Belohnungssignal im Laufe der Zeit liefert. In einigen Beispielen können Algorithmen für maschinelles Lernen (220) und/oder trainierte Modelle für maschinelles Lernen (132) mit anderen Techniken des maschinellen Lernens trainiert werden, einschließlich, aber nicht beschränkt auf inkrementelles Lernen und Lernen nach Lehrplan.
-
In einigen Beispielen können Algorithmus/-en 220 und/oder trainierte(s) Modell(e) des maschinellen Lernens 132 Techniken des Transferlernens verwenden. Beispielsweise können Transfer-Lerntechniken umfassen, dass das (die) trainierte(n) maschinelle(n) Lernmodell(e) 132 auf einem Datensatz vortrainiert und zusätzlich mit dem Trainingssatz 210 von Daten trainiert wird (werden). Insbesondere kann(n) der/die Algorithmus/-en für maschinelles Lernen 220 auf Daten von einem oder mehreren Computergeräten vortrainiert werden, und ein daraus resultierendes trainiertes maschinelles Lernmodell wird dem Computergerät CD1 zur Verfügung gestellt, wobei CD1 dazu bestimmt ist, das trainierte maschinelle Lernmodell während der Inferenzphase 204 auszuführen. Dann, während der Trainingsphase 202, kann das vortrainierte maschinelle Lernmodell zusätzlich mit einem Trainingssatz 210 von Daten trainiert werden, wobei der Trainingssatz 210 von Daten aus Kernel- und Nicht-Kernel-Daten des Computergeräts CD1 hergeleitet werden kann. Dieses weitere Training des/der Algorithmus/-en des maschinellen Lernens 220 und/oder des vortrainierten, trainierten maschinellen Lernmodells unter Verwendung des Trainingssatzes 210 von Daten des CD1 kann entweder durch beaufsichtigtes oder unbeaufsichtigtes Lernen durchgeführt werden. Sobald der/die maschinelle(n) Lernalgorithmus/- algorithmen 220 und/oder das vortrainierte maschinelle Lernmodell unter Verwendung von mindestens Trainingssatz 210 von Daten trainiert wurde, kann die Trainingsphase 202 abgeschlossen werden. Das trainierte resultierende maschinelle Lernmodell kann als mindestens eines der trainierten maschinellen Lernmodelle 132 verwendet werden.
-
Insbesondere können nach Abschluss der Trainingsphase 202 ausgebildete(s) maschinelle(s) Lernmodell(e) 132 für ein Computergerät bereitgestellt werden, falls es sich nicht bereits auf dem Computergerät befindet. Nachdem das (die) ausgebildete(n) maschinelle(n) Lernmodell(e) 132 dem Computer CD1 zur Verfügung gestellt wurde(n), vielleicht als Teil der Software für den Inferenzdämon 130, kann die Inferenzphase 204 beginnen.
-
Während der Inferenzphase 204 kann (können) das (die) ausgebildete(n) maschinelle(n) Lernmodell(e) 132 Eingabedaten 230 empfangen und eine oder mehrere entsprechende Inferenzen 250 über Eingabedaten 230 erzeugen und ausgeben. Somit können die Eingabedaten 230 als Eingabe für das/die trainierte(n) maschinelle Lernmodell(e) 132 verwendet werden, um entsprechende Inferenz(en) 250 an Kernelkomponenten und Nicht-Kernelkomponenten bereitzustellen. Beispielsweise kann (können) das (die) trainierte(n) Modell(e) des maschinellen Lernens 132 Inferenz(en) 250 als Antwort auf eine oder mehrere Inferenzanforderungen 240 erzeugen. In einigen Beispielen kann (können) das (die) trainierte(n) maschinelle(n) Lernmodell(e) 132 einen Teil anderer Software ausführen; z.B. kann (können) das (die) trainierte(n) maschinelle(n) Lernmodell(e) 132 einen Teil des Inferenzdämons 130 ausführen. Eingabedaten 230 können Daten vom Computergerät CD1 umfassen, das das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 ausführt und/oder Eingabedaten von einem oder mehreren anderen Computergeräten als CD 1.
-
Eingabedaten 230 können kernelbezogene Eingabedaten, anwendungsspezifische Eingabedaten und/oder andere Eingabedaten, z.B. vom Benutzer bereitgestellte Daten, umfassen. Die kernelbezogenen Eingabedaten können Daten umfassen, die sich auf das Computergerät CD1 beziehen, das den Kernel ausführt und nutzt. Zu den anwendungsspezifischen Eingabedaten können unter anderem datenbankbezogene Eingabedaten, audio-videobezogene Eingabedaten und compilerbezogene Eingabedaten gehören. Die vom Benutzer bereitgestellten Daten können Daten umfassen, die über eine grafische Benutzeroberfläche (GUI) oder eine andere Benutzerschnittstelle empfangen wurden, z.B. Befehle, Text, Auswahl grafischer Objekte usw. In anderen Beispielen können auch mehr, weniger und/oder andere kernelbezogene Daten, anwendungsspezifische Daten und/oder vom Benutzer bereitgestellte Daten verwendet werden. Die Verwendung von Eingabedaten 230 aus verschiedenen Datenquellen kann es trainierten maschinellen Lernmodellen 132 ermöglichen, ganzheitlichere Entscheidungen zu treffen als Entscheidungen, die mit Hilfe von Heuristiken getroffen werden.
-
Eingabedaten 230 können über eine vorgegebene Zeitspanne (z.B. eine Zeitspanne zwischen ca. 100 Millisekunden und zehn Sekunden) gesammelt und dann dem/den trainierten maschinellen Lernmodell(en) 132 zur Verfügung gestellt werden. Das heißt, das (die) trainierte(n) maschinelle(n) Lernmodell(e) 132 kann (können) aufeinanderfolgende Lose von Eingabedaten 230 (und eventuell andere Daten) empfangen und entsprechende Inferenzen in Zeitintervallen generieren, wobei die Zeitintervalle in Form eines festgelegten Quantums / einer vorgegebenen Zeitspanne angegeben werden. Zum Beispiel kann ein Stapel von Eingabedaten 230 während eines Zeitquantums gesammelt werden. Einmal gesammelt, kann der Stapel von Eingabedaten 230 für das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 bereitgestellt werden, und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 kann/können eine oder mehrere Inferenzen generieren, die mindestens auf dem Stapel von Eingabedaten 230 basieren, der während des Zeitquantums bereitgestellt wird. Diese Stapelsammlung und die entsprechende Prozedur zur Erzeugung von Inferenzen kann für mehrere Zeitintervalle wiederholt werden.
-
Beispielsweise können die kernelbezogenen Eingabedaten und/oder die anwendungsspezifischen Eingabedaten von Eingabedaten 230 nach der Ausführung einer vorgegebenen Anzahl von kernelbezogenen Operationen, wie Zeitscheiben, Kontextwechsel, Speicherzugriffe, Eingabegeräteoperationen und/oder Ausgabegeräteoperationen, gesammelt werden. Insbesondere können die kernelbezogenen Eingabedaten nach ein bis mehreren hundert Zeitscheiben oder Kontextwechseln gesammelt werden. In einigen Beispielen können der Inferenzdämon 130 und/oder das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 mit einer Eingabe, wie z.B. einem Software-Interrupt, versehen werden, um den Inferenzdämon 130 und/oder das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 über neu verfügbare Eingabedaten zur Verwendung als Eingabedaten 230 zu informieren.
-
Inferenz(en) 250 können Werte und/oder Hinweise enthalten, die durch trainierte(s) Modell(e) 132 des maschinellen Lernens erzeugt werden, die mit Eingabedaten 230 (und einem Trainingssatz 210 von Daten) arbeiten. In einigen Beispielen kann (können) das (die) trainierte(n) maschinelle(n) Lernmodell(e) 132 Ausgabeinferenzen 250 als Eingabe-Feedback verwenden; z.B. kann (können) das (die) trainierte(n) maschinelle(n) Lernmodell(e) 132 auch auf frühere Inferenzen als Input für die Generierung neuer Inferenzen zurückgreifen. In einigen Beispielen kann eine Kernelkomponente (oder Nicht-Kernelkomponente), die einer oder mehreren von der Stapelsammlung und dem entsprechenden Inferenz-Erzeugungsverfahren generierten Inferenzen zugeordnet ist, einige oder alle der einen oder mehreren der generierten Inferenzen speichern, einschließlich, aber nicht beschränkt auf eine zuletzt bestimmte der einen oder mehreren der generierten Inferenzen; d.h. die zuletzt bestimmte Inferenz kann an einer Speicherstelle des Computergeräts gespeichert werden, auf die die Kernelkomponente (oder Nicht-Kernelkomponente) zugreifen kann. Insbesondere wenn der Kernelkomponente (oder Nicht-Kernelkomponente) eine neue Inferenz zur Verfügung gestellt wird, kann die Kernelkomponente (oder Nicht-Kernelkomponente) eine zuvor gespeicherte, zuletzt ermittelte Inferenz mit der neuen Inferenz überschreiben.
-
3 zeigt Tabelle 300, in der die Eingabedaten und die damit zusammenhängenden Inferenzen für Softwarekomponenten der Softwarearchitektur von
1 gemäß einigen Beispielausführungen zusammengefasst sind. Tabelle 300 wird hier als Tabelle 1 unten wiedergegeben:
Tabelle 1
Software-Komponente | Eingangsdaten 230 | Inferenz(en) 250 |
Datenbank-Anwendung 140 | Datenbankbezogene Eingabedaten | Checkpointing-Entscheidungen |
Audio/Video-Anwendung 142 | Audio- Video-bezogene Eingangsdaten | Angaben zur Puffergröße |
JIT-Compiler 146, 148 | Compiler-bezogene Eingabedaten | Hot-Loop-Anzeigen |
Speicher-Manager 162 | Speicherbezogene Eingabedaten | Cache-Prioritäten, Auswahl von Cache-Einträgen, Hinweise auf Blockaufteilung und -zusammenführung, |
| | Plattenzuordnung, Hinweise auf Freigabe und Größenänderung, Hinweise auf Frame-Kompression/Dekompression |
Prozessplaner 164 | Prozessbezogene Eingabedaten | Prozessprioritäten, Prozesszeitscheiben |
E/A-Planer 166 | Eingabe-/Ausgabe-bezogene Eingabedaten | Charakterisierungen von Prozessen, die E/A-Geräte verwenden |
Systemressourcenmanager 168 | Ressourcenbehälterdaten, Anwendungsressourcen-Verwendungsdaten | Angaben zum Behälterinhalt, Angaben zur Zuweisung von Ressourcenbehältern |
-
In Tabelle 300 und der entsprechenden Tabelle 1 oben zeigt die erste Spalte eine bestimmte Softwarekomponente der Softwarearchitektur 100, die zweite Spalte Aspekte der Eingabedaten 230 in Bezug auf die bestimmte Softwarekomponente und die dritte Spalte Aspekte der Inferenz(en) 250 in Bezug auf die bestimmte Softwarekomponente an.
-
Die ersten drei Zeilen von Tabelle 300 und Tabelle 1 beziehen sich auf Nicht-Kernelkomponenten. Eingabedaten für Inferenzen für Nicht-Kernelkomponenten können zumindest einen Teil der kernelbezogenen Eingabedaten und zumindest einen Teil der anwendungsspezifischen Eingabedaten, eventuell begleitet von zusätzlichen Daten, umfassen. Aus der ersten Zeile von Tabelle 300 und Tabelle 1 geht hervor, dass die Datenbankanwendung 140 Checkpointing-Entscheidungen als Inferenz(en) 250 empfangen kann, die von einem oder mehreren trainierten maschinellen Lernmodell(en) 132 bereitgestellt werden, die auf einem oder mehreren trainierten maschinellen Lernmodell(en) 132 basieren, die mit Eingabedaten 230 arbeiten, die datenbankbezogene Eingabedaten umfassen, aber nicht darauf beschränkt sind. Die datenbankbezogenen Eingabedaten können Daten wie z.B. Daten zur Datenbankgröße, Daten zu Datenbanktransaktionen einschließlich Zählungen, Inhalten und Zeiten von Datenbanktransaktionen und Datenbanknutzungsdaten einschließlich Datenmengen und/oder Zeitangaben zu Daten, die mit Datenbanktransaktionen in Zusammenhang stehen, umfassen, sind aber nicht darauf beschränkt.
-
Die zweite Zeile von Tabelle 300 und Tabelle 1 zeigt an, dass Audio-/Video-Anwendung 142 Puffergrößenangaben als Inferenz(en) 250 empfangen kann, die von trainierten maschinellen Lernmodellen 132 auf der Grundlage von trainierten maschinellen Lernmodellen 132 bereitgestellt werden, die mit Eingabedaten 230 arbeiten, die Audio-Video-bezogene Eingabedaten enthalten, aber nicht darauf beschränkt sind. Die Audio-Video-bezogenen Eingabedaten können Daten wie z.B. Audio-/Video-Inhaltsdaten einschließlich Größen, Zählungen, Quellen, Zugriffszeiten und/oder Inhalte von Audio- und/oder Video-Inhalten, Rendering-Operationsdaten einschließlich Größen, Zählungen und/oder Inhalte von Rendering-Operationen sowie pixelbezogene Daten einschließlich Abmessungen, Zählungen und Inhalte von Pixeln, die durch Audio-/Video-Anwendung 142 und/oder durch andere Quellen gerendert werden, umfassen, sind aber nicht darauf beschränkt.
-
Die dritte Zeile von Tabelle 300 und Tabelle 1 zeigt an, dass der Just-in-Time-Compiler 146 und/oder der Just-in-Time-Compiler 148 Hot-Loop-Indikationen als Inferenz(en) 250 empfangen können, die von einem oder mehreren trainierten maschinellen Lernmodell(en) 132 bereitgestellt werden, die auf einem oder mehreren trainierten maschinellen Lernmodellen 132 basieren, die mit Eingabedaten 230 arbeiten, die compilerbezogene Eingabedaten enthalten, aber nicht darauf beschränkt sind. Die compilerbezogenen Eingabedaten können Daten wie z.B. Befehlsausführungsdaten, Schleifenverwendungszählungen und/oder Schleifenverfolgungsdaten und Befehlsprofilierungsdaten umfassen, sind aber nicht darauf beschränkt.
-
Die letzten vier Zeilen von Tabelle 300 und Tabelle 1 beziehen sich auf Kernelkomponenten. Eingabedaten, um Rückschlüsse auf Kernelkomponenten zu ziehen, können zumindest einen Teil der kernelbezogenen Eingabedaten und eventuell zusätzliche Daten enthalten. Beispielsweise können die kernelbezogenen Eingabedaten speicherbezogene Eingabedaten, prozessbezogene Eingabedaten, Eingabe-Ausgabe-bezogene Eingabedaten, ressourcenbezogene Eingabedaten und eventuell zusätzliche Daten umfassen.
-
Die vierte Zeile von Tabelle 300 und Tabelle 1 zeigt an, dass der Speichermanager 162 Cache-Prioritäten, Cache-Eintrags-Auswahlen, Angaben zur Aufteilung und Zusammenführung von Speicherblöcken, Angaben zur Plattenzuweisung, Freigabe und Größenänderung sowie Angaben zur Komprimierung und/oder Dekomprimierung von Speicherrahmen als Inferenz(en) 250 empfangen kann, die von trainierten maschinellen Lernmodellen 132 auf der Grundlage von trainierten maschinellen Lernmodellen 132 bereitgestellt werden, die mit Eingabedaten 230 arbeiten, die speicherbezogene Eingabedaten enthalten, aber nicht darauf beschränkt sind. Zu den speicherbezogenen Eingabedaten können unter anderem Cache-Daten gehören, einschließlich Cache-Einträge, Zugriffszeiten, zu denen zuletzt auf die Cache-Einträge zugegriffen wurde, Speicheranforderungsdaten, Seitentabellendaten, Seitennutzungsdaten, Speicherzugriffsdaten, Speicherzuweisungs/-freigabedaten in Bezug auf Platten (engl. Slabs) und/oder Speicherblöcke, Speicherzugriffsdaten, wie z.B. Daten über eine Anzahl von Zugriffen auf ein oder mehrere Objekte in einer oder mehreren Platten und/oder ein oder mehrere Datenelemente, die in einem Speicherblock, einer Seite und/oder einem Rahmen gespeichert sind, Speicherseiten-Verwendungs- und -Zugriffsdaten, Speicherrahmen-Verwendungs- und -Zugriffsdaten, Objektdaten, die sich auf eine oder mehrere Platten, eine oder mehrere Platten, eine oder mehrere Speicherseiten, einen oder mehrere Speicherrahmen, andere Speicherzuweisungs-/-freigabedaten und andere Speicherzugriffsdaten beziehen.
-
Die fünfte Zeile von Tabelle 300 und Tabelle 1 zeigt an, dass Prozessplaner 164 Prozessprioritäten und Prozesszeitscheiben als Inferenz(en) 250 empfangen kann, die von trainierten maschinellen Lernmodellen 132 auf der Basis von trainierten maschinellen Lernmodellen 132 bereitgestellt werden, die mit Eingabedaten 230 arbeiten, die prozessbezogene Eingabedaten enthalten, aber nicht darauf beschränkt sind. Die prozessbezogenen Eingabedaten können unter anderem Folgendes umfassen: benutzerdefinierte Prioritätswerte (z.B. einen Echtzeit-Prioritätswert und/oder einen benutzerdefinierten „netten“ Prioritätswert), dynamische Planer-definierte Prioritätswerte, Daten über das Laufzeitverhalten, wie z.B. Energieverbrauch, prozentuale Anteile der von den Prozessen verwendeten Zeitscheiben, Informationen darüber, wie oft Prozesse blockiert werden, während sie auf den Betrieb des Ein-/Ausgabegeräts warten, Prozessornutzungsdaten und Systemauslastungsdaten.
-
Die sechste Zeile von Tabelle 300 und Tabelle 1 zeigt an, dass der Eingabe/Ausgabe-Planer 166 Charakterisierungen von Prozessen, die Ein- und/oder Ausgabegeräte verwenden, als Inferenz(en) 250 empfangen kann, die von einem oder mehreren trainierten maschinellen Lernmodell(en) 132 geliefert werden, die auf einem oder mehreren trainierten maschinellen Lernmodell(en) 132 basieren, die mit Eingabedaten 230 arbeiten, die Eingabe-Ausgabe-bezogene Eingabedaten enthalten, aber nicht darauf beschränkt sind. Die Eingabe-Ausgabe-bezogenen Eingabedaten können unter anderem Terminierungsdaten für Eingabe- und/oder Ausgabegeräte, Daten über Zählungen und die Verwendung von Operationen, die den Eingabe- und/oder Ausgabegeräten zugeordnet sind, und Daten, die für Eingabe- und/oder Ausgabegeräte bereitgestellt werden, umfassen.
-
Aus der siebten Zeile von Tabelle 300 und Tabelle 1 geht hervor, dass der Systemressourcenmanager 168 Inhaltsangaben und Zuordnungsangaben für den Ressourcenbehälter als Inferenz(en) 250 erhalten kann, die von einem oder mehreren trainierten maschinellen Lernmodellen 132 auf der Grundlage eines oder mehrerer trainierter maschineller Lernmodelle 132 bereitgestellt werden, die mit Eingabedaten 230 arbeiten, die ressourcenbezogene Eingabedaten enthalten, aber nicht darauf beschränkt sind. Ressourcenbezogene Eingabedaten können unter anderem Ressourcenbehälterdaten, Informationen über Ressourcen, die Ressourcenbehältern zugeordnet sind, Daten über Ressourcenbehälter, die Prozessen zugeordnet sind, Daten über die Verwendung von Anwendungsressourcen und Daten über die Verfügbarkeit und Verwendung von Systemressourcen umfassen.
-
In anderen Beispielen kann (können) das (die) ausgebildete(n) Modell(e) des maschinellen Lernens 132 mehr, weniger und/oder unterschiedliche Inferenzen für mehr, weniger und/oder unterschiedliche Softwarekomponenten auf der Grundlage von mehr, weniger und/oder unterschiedlichen Eingabedaten liefern, als in Tabelle 300 und Tabelle 1 angegeben.
-
Kernel- und Nicht-Kernelkomponenten, wie z.B., aber nicht beschränkt auf, Datenbankanwendung 140, Audio-/Videoanwendung 142, Browseranwendung 144, Just-in-Time-Compiler 146, Speicherverwaltung 162, Prozessplaner 164, Ein-/Ausgabe-Planer 166 und Systemressourcenverwaltung 168, können Inferenzen aus einem oder mehreren trainierten maschinellen Lernmodellen nutzen und dabei schnelle Antwortzeiten beibehalten, die durch vorhandene Heuristiken bereitgestellt werden. Beispielsweise kann der Inferenzdämon 130, der im Nicht-Kernel-Speicherbereich 110 ausgeführt wird, das/die trainierte(n) maschinellen Lernmodell(e) 132 ausführen, um Inferenzen für die Kernel- und Nicht-Kernel-Softwarekomponenten bereitzustellen.
-
Dann können die Kernel- und Nicht-Kernelkomponenten die Inferenzen verwenden, um Operationen durchzuführen. In einigen Beispielen können die Kernel- und Nicht-Kernelkomponenten die Inferenzen zusammen mit den vorhandenen Heuristiken zur Durchführung von Operationen verwenden.
-
Als spezielles Beispiel kann der Prozessplaner 164 Inferenzen von trainierten maschinellen Lernmodellen 132 empfangen und diese Inferenzen mit Ergebnissen aus seinen eigenen Heuristiken kombinieren, um Prozesse zu planen. Einige heuristische Ergebnisse des Prozessplaners 164 können heuristische Werte für die Prozessplanung enthalten, wie z.B., aber nicht beschränkt auf, Werte in Bezug auf CPU-Frequenzskalierung, Lastausgleich, Prozessoraffinität, dynamische Priorität und Zeit. Die Inferenzen und heuristischen Ergebnisse können mit effizienten Kombinationstechniken kombiniert werden, so dass weder die Inferenzen noch die heuristischen Ergebnisse die Ausgabe des Prozessplaners diktieren, ohne die Fähigkeit des Prozessplaners 164 zur schnellen Anpassung an Änderungen der Systembelastung und des Systemverhaltens zu opfern.
-
Ein Beispiel für diese effizienten Kombinationstechniken umfasst ein Durchführen einer linearen oder anderen mathematischen Kombination von Inferenzwerten, die als Inferenz-Ergebnisse geliefert werden, mit heuristischen Werten, die als heuristische Ergebnisse geliefert werden. Genauer gesagt drückt Gleichung (1) einen linearen Kombinationsergebniswert F aus, der zur Kombination von Inferenzwerten und heuristischen Werten verwendet werden kann:
-
In Gleichung (1) stellen Wo, W1 und W2 Gewichte für den Linearkombinationsergebniswert F dar, IV stellt einen Inferenzwert dar, der durch eine Inferenz aus einem oder mehreren trainierten maschinellen Lernmodellen 132 bereitgestellt wird, und HV stellt einen heuristischen Wert dar, der durch eine Heuristik des Prozessplaners bereitgestellt wird. In einigen Beispielen können die Gewichte Wo, W1 und/oder W2 vorgegebene numerische Werte sein; z.B. können Wo, W1 und/oder W2 zur Kompilierungszeit oder während der Initialisierung zur Laufzeit bestimmt werden, vielleicht auf der Grundlage von Benutzereingaben bezüglich der Werte der Gewichte Wo, W1 und/oder W2. Ferner können durch geeignete Einstellung der Gewichte Wo, W1 und/oder W2 die Inferenzwerte entweder ganz ignoriert oder ganz hervorgehoben werden. Als ein Extrembeispiel: Wenn W0 = W1 = 0 und W2 = 1, dann würde der Ergebniswert von F = HV und damit der Inferenzwert IV vollständig ignoriert und der heuristische Wert HV vollständig hervorgehoben werden. Ein weiteres extremes Beispiel: Wenn W0 = W2 = 0 und W1 = 1, dann würde der Ergebniswert von F = IV und damit der Inferenzwert IV vollständig betont und der heuristische Wert HV vollständig ignoriert werden. Viele andere Beispielauswahlen von W0, W1 und W2 sind ebenfalls möglich.
-
Als weiteres Beispiel drückt Gleichung (2) einen weiteren Linearkombinationsergebniswert F aus, der zur Kombination von Inferenzwerten und heuristischen Werten verwendet werden kann:
-
In Gleichung (2) stellen IV0 und IV1 Inferenzwerte dar, die durch eine Inferenz aus einem oder mehreren trainierten maschinellen Lernmodellen 132 bereitgestellt werden. In beiden Gleichungen (1) und (2) stellt HV einen heuristischen Wert dar, der durch eine Heuristik des Prozessplaners bereitgestellt wird. In Gleichung (2) wird die Gewichtung IV1 für den heuristischen Wert HV als Inferenzwert durch ein oder mehrere trainierte maschinelle Lernmodelle 132 bereitgestellt. Wenn man das (die) trainierte(n) maschinelle(n) Lernmodell(e) 132 in die Lage versetzt, den Inferenzwert IV0 zu bestimmen, und in Kombination mit der Gewichtung IV1 ermöglicht es das (die) trainierte(n) maschinelle(n) Lernmodell(e) 132, die Ausgabewerte des Ergebnisses der Linearkombination F über einen längeren Zeitraum (Hunderte bis Tausende von Millisekunden) in eine bestimmte Richtung zu „schubsen“, während die vom Prozessplaner 164 gelieferten heuristischen Werte über viel kürzere Zeitintervalle variieren können, um schnell auf Änderungen der Systembelastung zu reagieren.
-
Auch andere mathematische Techniken zur Kombination von heuristischen Werten (z.B. heuristischer Wert HV) und Inferenzwerten (z.B. Inferenzwerte IV, IV0 und/oder IV1) zur Bestimmung eines Ergebniswertes, wie z.B. F, sind möglich. Beispielsweise kann eine Differenz D = | HV - IV | bestimmt werden, und falls D einen vorgegebenen Schwellenwert oder einen vorgegebenen Schwellenprozentsatz von HV (oder IV) nicht überschreitet, kann ein Ergebniswert gleich HV (oder IV) verwendet werden. Wenn D jedoch den vorgegebenen Schwellenwert oder den vorgegebenen Schwellenprozentsatz überschreitet, dann kann eine Linearkombination (wie durch Gleichung (1) und/oder Gleichung (2) bereitgestellt), eine nichtlineare Kombination oder eine andere mathematische Kombination von heuristischen Kann-Werten und Inferenzwerten verwendet werden, um den Ergebniswert zu bestimmen. Als weiteres Beispiel können ein oder mehrere frühere heuristische Werte und/oder ein oder mehrere frühere Inferenzwerte gespeichert und zur Bestimmung eines Ergebniswertes verwendet werden. Genauer gesagt kann ein ausgewählter früherer Wert, eine Summe mehrerer früherer Werte, ein Durchschnitt mehrerer früherer Werte oder eine andere Kombination mehrerer früherer Werte verwendet werden, um einen historischen Wert zu bestimmen, z.B. einen historischen heuristischen Wert oder einen historischen abgeleiteten Wert. Dann können die historischen Werte mit dem aktuellen heuristischen Wert HV und/oder dem aktuellen Inferenzwert IV kombiniert werden, um einen Ergebniswert unter Verwendung einer Linearkombination, nichtlinearen Kombination oder einer anderen mathematischen Kombination aus historischen Werten, dem aktuellen heuristischen Wert HV und/oder dem aktuellen Inferenzwert IV zu bestimmen. Andere Beispiele für die Kombination von Inferenz- und heuristischen Ergebnissen sind ebenfalls möglich.
-
Als ein weiteres Beispiel für die Kombination von Inferenz und heuristischen Ergebnissen kann der Eingabe/Ausgabe-Planer 166 Inferenzen aus dem trainierten maschinellen Lernmodell empfangen, um Prozesse in Bezug auf ihre Verwendung von Eingabe/Ausgabe-Geräten zu charakterisieren. Diese Charakterisierungen können eine Charakterisierung eines Prozesses umfassen als entweder: einen Basislinienprozess, der einer Basislinienpriorität für die Verwendung von Ein-/Ausgabegeräten zugeordnet ist, ein interaktiver Prozess, der einer interaktiven Priorität für die Verwendung von Ein-/Ausgabegeräten zugeordnet ist, oder ein weicher Echtzeitprozess, der mit einer weichen Echtzeitpriorität für die Verwendung von Ein-/Ausgabegeräten verbunden ist. Die interaktive Priorität und die weichen Echtzeitprioritäten können höhere Prioritäten als die Basislinienpriorität sein, und daher kann ein interaktiver Prozess oder ein weicher Echtzeitprozess eine höhere Priorität als ein Basislinienprozess haben. Andere Klassifikationen von Prozessen in Bezug auf ihre Verwendung von Ein-/Ausgabegeräten und/oder andere Inferenzen bzw. Rückschlüsse für den Ein-/Ausgabeplaner 166 können ebenfalls als trainierte(s) maschinelle Lernmodell(e) 132 bereitgestellt werden. In einigen Beispielen kann der Eingabe/Ausgabeplaner 166 Inferenzen aus dem/den trainierten maschinellen Lernmodell(en) 132 empfangen, um Eingabe-Ausgabe-Prioritätsbezogene Inferenzen in Bezug auf die Prioritäten eines oder mehrerer Prozesse zu liefern, die ein oder mehrere Eingabe- und/oder Ausgabegeräte anfordern und/oder verwenden. Dann kann der Eingabe-/Ausgabeplaner 166 Prioritäten für die Planung des Prozesses/der Prozesse zur Verwendung des Eingabe- und/oder Ausgabegeräts/der Ausgabegeräte setzen, indem er die auf die Eingabe-/Ausgabepriorität bezogenen Inferenzen mit heuristischen Werten in ähnlicher Weise kombiniert, wie es hier in Bezug auf den Prozessplaner 164 diskutiert wird, einschließlich der Diskussion der Gleichungen (1) und (2), oder indem er nur die auf die Eingabe-/Ausgabepriorität bezogenen Inferenzen verwendet, um Prozessprioritäten zu setzen.
-
Als ein weiteres Beispiel für die Kombination von Inferenzen und heuristischen Ergebnissen kann der Systemressourcenmanager 168 Inferenzen von trainierten maschinellen Lernmodellen 132 empfangen, die angeben, welche Ressourcen und Ressourcenmengen einem oder mehreren bestimmten Ressourcenbehältern zugeordnet werden sollen. Die Ressourcenmengen, die in einer Inferenz für einen bestimmten Ressourcenbehälter angegeben sind, können mit den Ressourcenmengen kombiniert werden, die dem bestimmten Ressourcenbehälter bereits zugeordnet sind (d.h. mit Hilfe einer Heuristik des Systemressourcenmanagers 168 bestimmt wurden), wobei eine mathematische Kombination verwendet wird, z.B. eine Linearkombination oder eine andere mathematische Kombination, wie sie hier im Zusammenhang mit den Gleichungen (1) und (2) diskutiert wird.
-
4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 und 15 stellen die Kommunikationsflüsse des Szenarios 400 dar, in dem das (die) ausgebildete(n) Modell(e) des maschinellen Lernens 132 gemäß einigen Beispielausführungsformen Inferenzen bzw. Rückschlüsse auf Softwarekomponenten der Softwarearchitektur 100 zulässt (zulassen). Szenario 400 umfasst trainierte(s) maschinelle(s) Lernmodell(e) 132, die Rückschlüsse auf Kernelkomponenten liefern, einschließlich Speichermanager 162, Prozessplaner 164, Eingabe/Ausgabe-Planer 166 und Systemressourcenmanager 168, und Inferenzen bzw. Rückschlüsse auf Nicht-Kernel-SoftwareKomponenten liefern, einschließlich Datenbank-Anwendung 140, Audio-/Video-Anwendung 142, Browser-Anwendung 144 und Just-in-time-Compiler 146.
-
Vor Szenario 400 wurde(n) das (die) ausgebildete(n) Modell(e) 132 für maschinelles Lernen so trainiert, dass es (sie) mindestens die in Tabelle 300 und Tabelle 1 aufgeführten Inferenz(en) 250 liefert (liefern), wobei Trainingsdaten verwendet wurden, die mindestens die in Tabelle 300 und Tabelle 1 aufgeführten Eingabedaten 230 repräsentieren Auch vor Szenario 400 wurde(n) das (die) ausgebildete(n) Modell(e) 132 für das Computergerät 402 bereitgestellt, das (die) mindestens die in Tabelle 300 und Tabelle 1 aufgeführten Softwarekomponenten enthält (enthalten); z.B, Datenbankanwendung 140, Audio-/Videoanwendung 142, Just-in-Time-Compiler 146, Speichermanager 162, Prozessplaner 164, Eingabe-/Ausgabeplaner 166 und Systemressourcenmanager 168 der Softwarearchitektur 100.
-
Während des Szenarios 400 führt das Computergerät 402 Software für den Inferenzdämon 130 aus, der das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 enthält. In Szenario 400 empfängt der Inferenzdämon 130 Eingabedaten zur Verwendung durch das/die trainierte(n) maschinelle Lernmodell(e) 132 zur Erzeugung von Inferenzen; z.B. Eingabedaten 230 aus einer oder mehreren Dateien aus mindestens vom Kernel- und Nicht-Kernel-zugänglichen Dateien/Daten 150. In Szenario 400 liefert der Inferenzdämon 130 die von den trainierten maschinellen Lernmodellen 132 erzeugten Inferenzen als Ausgabedateien, die in den in Kernel- und in den Nicht-Kernel zugänglichen Dateien / Daten 150 enthalten sind. Inferenzen, die durch trainierte(s) maschinelle Lernmodell(e) 132 erzeugt werden, sind also sowohl für Kernelkomponenten, die im Kernel-Speicherbereich 120 ausgeführt werden, als auch für Nicht-Kernelkomponenten, die im Nicht-Kernel-Speicherbereich 110 ausgeführt werden, zugänglich. In anderen Szenarien können Inferenzen, die durch trainierte(s) Modell(e) des maschinellen Lernens 132 erzeugt werden, so gesichert werden, dass die Inferenzen nur für eine Teilmenge der Softwarekomponenten mit Zugriff auf Kernel- und Nicht-Kernel-zugängliche Dateien / Daten 150 verfügbar sind; d.h., die Inferenzen können verschlüsselt, dateigeschützt und/oder anderweitig geschützt werden, so dass nur eine anfordernde Softwarekomponente oder eine andere Teilmenge der Softwarekomponenten auf die Inferenzen zugreifen kann.
-
4 zeigt, dass Szenario 400 mit dem Prozessplaner 164 beginnt, der Inferenzanforderung 410 an den Inferenzdämon 130 liefert. Inferenzanforderung 410 fordert eine Inferenz über einen Prioritätswert und einen Zeitscheibenwert für einen Prozess PID1 an. Nach Erhalt der Inferenzanforderung 410 erhalten der Inferenz-Dämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 die Prozessdaten PD1, die mindestens die prozessbezogenen Eingabedaten des Computergeräts 402 enthalten, zumindest aus Kernel- und Nicht-Kernel-zugänglichen Dateien/Daten 150, wie in Block 412 angegeben. Dann verwenden trainierte(s) maschinelle(s) Lernmodell(e) 132 PD1 als Eingabedaten, um einen Planungsprioritätswert InfP1 und einen Zeitscheibenwert InfT 1 für den Prozess PID1 abzuleiten, wie ebenfalls in Block 412 angegeben. Der Inferenzdämon 130 sendet dann die Inferenzantwort 414 an den Prozessplaner 164 und liefert die angeforderte Inferenz einschließlich des Prioritätswertes InfP1 und des Zeitscheibenwertes InfT 1 für den Prozess PID1.
-
Während Szenario 400 führt der Prozessplaner 164 weiterhin Operationen durch, einschließlich, aber nicht beschränkt auf die Planung von Prozessen, während er auf Inferenzen wartet; z. B. wartet er auf Inferenzen während eines Zeitintervalls zwischen der Bereitstellung der Inferenzanforderung 410 an den Inferenzdämon 130 und dem Empfang der Inferenzantwort 414; d. h., das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 bestimmen die in der Inferenzantwort 414 bereitgestellte Inferenz asynchron zu den vom Prozessplaner 164 durchgeführten Operationen.
-
Nach Empfang der Inferenzantwort 414 zeigt Block 416 von 4 an, dass der Prozessplaner 164 den heuristischen Prioritätswert HPV und den heuristischen Zeitscheibenwert HTS unter Verwendung einer oder mehrerer Heuristiken bestimmt und die Ausführung des Prozesses PID1 unter Verwendung einer ersten Linearkombination aus dem hergeleiteten Prioritätswert InfP1 und dem heuristischen Prioritätswert HPV und einer zweiten Linearkombination aus dem hergeleiteten Zeitscheibenwert InfT1 und dem heuristischen Zeitscheibenwert HTS plant; z. B. unter Verwendung einer Linearkombinationstechnik auf der Grundlage von Gleichung (1) und/oder Gleichung (2).
-
Dann stellt Prozessplaner 164 Inferenzanforderung 420 an Inferenzdämon 130 bereit, der eine Inferenz über einen Zeitscheibenwert für einen Prozess PID2 anfordert. Block 422 zeigt an, dass nach dem Empfang der Inferenzanforderung 420 der Inferenzdämon 130 und das/die trainierte(n) Modell(e) des maschinellen Lernens 132 Prozessdaten PD2 erhalten, die mindestens prozessbezogene Eingabedaten des Computergeräts 402 enthalten, und zwar zumindest von Kernel- und Nicht-Kernel zugänglichen Dateien / Daten 150. Dann verwenden trainierte(s) maschinelle Lernmodell(e) 132 PD2 als Eingabedaten, um einen Zeitscheibenwert InfT2 für Prozess PID2 abzuleiten, wie in Block 422 angegeben. Der Inferenzdämon 130 sendet dann die Inferenzantwort 424 an den Prozessplaner 164 und liefert die angeforderte Inferenz einschließlich des Zeitscheibenwertes InfT2 für den Prozess PID2. Nach Empfang der Inferenzantwort 424 zeigt Block 426 von 4 an, dass Prozessplaner 164 die Ausführung von Prozess PID2 für eine Zeitscheibe plant, deren Dauer der des abgeleiteten Zeitscheibenwertes InfT2 entspricht.
-
In weiteren Szenarien können der Prozessplaner 164, der Prozess PID1 und/oder der Prozess PID2 eine Ausgabe des Computergeräts 402 erzeugen, wobei die Ausgabe eine visuelle Ausgabe, eine Audioausgabe, eine haptische Ausgabe oder eine Kombination davon sein kann. Nehmen wir zum Beispiel an, Prozess PID2 ist ein Prozess, der eine Spielanwendung ausführt. Nachdem der Prozessplaner 164 die Ausführung des Prozesses PID2 für eine Zeitscheibe plant, deren Dauer der des abgeleiteten Zeitscheibenwertes InfT2 entspricht, kann der Prozess PID2 eine oder mehrere Ausgaben der Recheneinheit 402 erzeugen, z.B. spielbezogene Bilder, Töne, Vibrationen usw.
-
Block 510 von 5 zeigt an, dass der Inferenzdämon 130 neu gestartet wird, wodurch das (die) ausgebildete(n) maschinelle(n) Lernmodell(e) 132 vorübergehend aus dem Dienst genommen wird (werden) und daher keine Inferenzen liefern kann (können). Während Inferenz-dämon 130 neu gestartet wird, sendet Prozessplaner 164 die Inferenzanforderung 520 an den Inferenzdämon 130 und fordert eine Inferenz über einen Prioritätswert und einen Zeitscheibenwert für Prozess PID1 an. Wie aus Block 522 von 5 hervorgeht, läuft die Inferenzanforderung 520 aus. Dann bestimmt der Prozessplaner 164 den heuristischen Prioritätswert HPV1 und den heuristischen Zeitscheibenwert HTS1 unter Verwendung einer oder mehrerer Heuristiken. Und der Prozessplaner 164 plant die Ausführung des Prozesses PID1 unter Verwendung einer dritten Linearkombination aus dem zuvor bestimmten abgeleiteten Prioritätswert InfP1 und dem heuristischen Prioritätswert HPV1 und einer vierten Linearkombination aus dem zuvor bestimmten abgeleiteten Zeitscheibenwert InfT 1 und dem heuristischen Zeitscheibenwert HTS1; z.B. unter Verwendung einer Linearkombinationstechnik auf der Grundlage von Gleichung (1) und/oder Gleichung (2).
-
Auch während des Neustarts des Inferenzdämons 130 sendet der Prozessplaner 164 die Inferenzanforderung 530 an den Inferenzdämon 130 und fordert eine Inferenz über einen Prioritätswert für einen Prozess PID3 an. Wie aus Block 532 von 5 hervorgeht, läuft die Inferenzanforderung 530 aus. Dann bestimmt Prozessplaner 164 den heuristischen Prioritätswert HPV3 unter Verwendung einer oder mehrerer Heuristiken und plant dann die Ausführung von Prozess PID3 unter Verwendung des Prioritätswerts HPV3. Für die Planung von Prozess PID3 wurde nur der heuristische Prioritätswert HPV3 verwendet, da für PID3 keine vorherigen abgeleiteten Prioritätswerte verfügbar waren und das (die) trainierte(n) maschinelle(n) Lernmodell(e) 132 vorübergehend nicht in der Lage ist (sind), Inferenzen zu liefern. Dann wird, wie in Block 540 von 5 angegeben, der Inferenzdämon 130 wieder in Betrieb genommen.
-
In anderen Szenarien können der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 Inferenzantworten erzeugen, wie z.B. die Inferenzantworten 414 und 424, ohne entsprechende Inferenzanfragen zu erhalten. Beispielsweise können der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 kontinuierlich Inferenzen auf der Grundlage eines festgelegten Zeitquantums (z.B. ein Quantum zwischen etwa hundert Millisekunden und zehn Sekunden) liefern, um den Scheduler 164 zu verarbeiten. Dann kann der Prozessplaner 164 eine oder mehrere aktuellste Inferenzen der kontinuierlich bereitgestellten Inferenzen verwenden, die vom Inferenzdämon 130 und dem/den trainierten maschinellen Lernmodell(en) 132 bereitgestellt werden, um eine oder mehrere Kerneloperationen, z.B. Scheduling-Prozesse, durchzuführen. In einigen Fällen können die vom Inferenzdämon 130 und dem/den trainierten maschinellen Lernmodell(en) 132 auf der Grundlage des eingestellten Zeitquantums kontinuierlich bereitgestellten Inferenzen Inferenzwerte einschließlich Prioritätswerten und/oder Zeitscheibenwerten enthalten.
-
6 zeigt, dass das Szenario 400 mit dem Speichermanager 162 fortgesetzt wird, der die Inferenzanforderung 610 an den Inferenzdämon 130 sendet. Inferenzanforderung 610, die eine Inferenz bezüglich des Zusammenfügens und/oder Trennens von Buddy-Paaren in Bezug auf die Speicherblöcke B1, B2 und B4 anfordert. Nach dem Empfang der Inferenzanforderung 610 zeigt Block 622 an, dass der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 MR1 erhalten, das/die mindestens speicherbezogene Eingabedaten für das Computergerät 402 enthält/enthalten, zumindest von Kernel- und Nicht-Kernel-zugreifbaren Dateien / Daten 150. Dann verwenden trainierte(s) maschinelle(s) Lernmodell(e) 132 MR1 als Eingabedaten, um daraus abzuleiten, dass die Blöcke B1 und B2 verbunden werden sollten, und um daraus diesen Block B4 abzuleiten, wie auch in Block 622 angegeben. Der Inferenzdämon 130 sendet dann die Inferenzantwort 614 an den Speichermanager 162 und liefert die angeforderte Inferenz bezüglich der Blöcke B1, B2 und B4. Nach dem Empfang der Inferenzantwort 614 zeigt Block 616 von 6 an, dass Speichermanager 162 die Blöcke B1 und B2 zu einem größeren Block B3 zusammenfügt, und zeigt an, dass Speichermanager 162 den Block B4 in zwei oder mehrere kleinere Blöcke aufteilt.
-
Während des Szenarios 400 führt der Speichermanager 162 weiterhin Operationen durch, einschließlich, aber nicht beschränkt auf: Speicherverwaltung, Verbinden von Speicherblöcken, Aufteilen von Speicherblöcken, Hinzufügen von Cache-Einträgen, Löschen von Cache-Einträgen, Bereitstellen von virtuellem Speicher, Komprimieren von Speicherseiten/-rahmen, Dekomprimieren von Speicherseiten/-rahmen, während auf Inferenzen gewartet wird; z.B, Warten auf Inferenzen während eines Zeitintervalls zwischen der Bereitstellung der Inferenzanforderung 610 an den Inferenzdämon 130 und dem Empfang der Inferenzantwort 614; d.h., das (die) trainierte(n) maschinellen Lernmodell(e) 132 bestimmen die in der Inferenzantwort 614 bereitgestellte Inferenz asynchron zu den vom Speichermanager 162 durchgeführten Operationen.
-
Anschließend stellt der Speichermanager 162 die Inferenzanforderung 620 an den Inferenzdämon 130 bereit, der eine Inferenz in Bezug auf die Zuweisung, Freigabe und Größenänderung von Platten für eine Datenstruktur DS1 und für zwei Platten SL2 und SL3 anfordert. Nach Erhalt der Inferenzanforderung 620 verwenden der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 MR1 als Eingabedaten, um daraus abzuleiten, dass: eine neue Platte der Größe SZ1 zugewiesen werden sollte, um Kopien der Datenstruktur DS1 zu speichern, die Platte SL2 freigegeben werden sollte und die Platte SL3 auf die Größe SZ3 verkleinert werden sollte, wie in Block 612 angegeben. Der Inferenzdämon 130 sendet dann die Inferenzantwort 624 an den Speichermanager 162 und liefert die angeforderte Inferenz über die Datenstruktur DS1 und die Platten (engl. Slabs) SL2 und SL3. Nach dem Empfang der Inferenzantwort 624 zeigt Block 626 von 6 an, dass der Speichermanager 162: eine neue Platte der Größe SZ1 zuweist, um Kopien der Datenstruktur DS1 zu speichern, den gesamten Speicher für die Platte SL2 freigibt und die Größe der Platte SL3 auf die Größe SZ3 ändert.
-
Wie in 7 dargestellt, fährt Szenario 400 damit fort, dass der Speichermanager 162 die Inferenzanforderung 710 an den Inferenzdämon 130 sendet und eine Inferenz in Bezug auf eine Cache-Priorität für den Cache-Eintrag CEnt1 anfordert. In Szenario 400 wurde der Cache-Eintrag CEnt1 bereits von Speichermanager 162 in einem Cache gespeichert, und Speichermanager 162 sendet Inferenzanforderung 710, um einen abgeleiteten Cache-Prioritätswert zu bestimmen. Ein Cache-Prioritätswert des Cache-Eintrags CEnt1 kann vom Speichermanager 162 verwendet werden, um zu bestimmen, ob der Cache-Eintrag CEnt1 aus dem Cache ausgeworfen werden soll oder nicht, falls Cache-Platz für einen oder mehrere neue Cache-Einträge benötigt wird. Nach Empfang der Inferenzanforderung 710 zeigt Block 712 an, dass der Inferenzdämon 130 und das/die trainierte(n) maschinelle Lernmodell(e) 132 CA1 erhalten, das/die mindestens speicherbezogene Eingabedaten für das Computergerät 402 enthält/enthält/enthalten, zumindest von Kernel- und Nicht-Kernel-zugreifbaren Dateien / Daten 150 kann. Das/die trainierte(n) maschinelle Lernmodell(e) 132 verwenden dann CA1 als Eingabedaten, um einen Cache-Prioritätswert von InfCP1 für den Cache-Eintrag CEnt1 abzuleiten, wie auch in Block 712 angegeben. Beispielsweise können trainierte(s) Modell(e) des maschinellen Lernens 132 Prioritätsdaten über den Cache-Eintrag CEnt1 und/oder Zugriffszeitdaten in CA1 verwenden, die angeben, wann auf den Cache-Eintrag CEnt1 zuletzt zugegriffen wurde, um den Cache-Prioritätswert von InfCP 1 zu bestimmen. Der Inferenzdämon 130 sendet dann die Inferenzantwort 714 an den Speichermanager 162 und liefert die angeforderte Inferenz bezüglich des Cache-Eintrags CEnt1.
-
Wie in Block 716 angegeben, bestimmt der Speichermanager 162 den heuristischen Cache-Prioritätswert HCPV für den Cache-Eintrag CEnt1 unter Verwendung einer oder mehrerer Heuristiken und bestimmt eine Cache-Priorität für den Cache-Eintrag CEnt1 unter Verwendung einer fünften Linearkombination aus dem abgeleiteten Cache-Prioritätswert InfCP1 und dem heuristischen Cache-Prioritätswert HCPV; z. B. unter Verwendung einer Linearkombinationstechnik auf der Grundlage von Gleichung (1) und/oder Gleichung (2).
-
Speichermanager 162 empfängt später einen neuen Cache-Eintrag NewEnt, der dem Cache hinzugefügt werden soll, und sendet die Inferenzanforderung 720 an den Inferenzdämon 130, der eine Inferenz für einen Cache-Eintrag anfordert, der geräumt bzw. verdrängt werden soll, um im Cache Platz für den neuen Cache-Eintrag NewEnt zu schaffen.
-
Nach dem Empfang der Inferenzanforderung 720 zeigt Block 722 an, dass der Inferenz-Dämon 130 und das/die trainierte(n) Modell(e) des maschinellen Lernens 132 Speicherverbrauchs- und Cache-Daten CA2 erhalten, die mindestens speicherbezogene Eingabedaten für das Computergerät 402 enthalten, und zwar mindestens von Kernel- und Nicht-Kernel-zugreifbaren Dateien / Daten 150. Trainierte(s) Modell(e) des maschinellen Lernens 132 verwenden dann CA2 als Eingabedaten, um daraus abzuleiten, dass der Cache-Eintrag CEnt27 geräumt werden sollte, um im Cache Platz für den Cache-Eintrag NewEnt zu schaffen, wie ebenfalls in Block 722 angegeben. Der Inferenzdämon 130 sendet dann die Inferenzantwort 724 an den Speichermanager 162 und liefert die angeforderte Inferenz bezüglich der Cache-Einträge NewEnt und CEnt27. Nachdem er die Inferenzantwort 724 empfangen hat, zeigt Block 726 an, dass Speichermanager 162 den Cache-Eintrag CEnt27 aus dem Cache und dann den Cache-Eintrag NewEnt in den Cache räumt.
-
Wie in dargestellt, fährt Szenario 400 damit fort, dass der Eingabe/Ausgabe-Planer 166 die Inferenzanforderung 810 an den Inferenzdämon 130 sendet und eine Inferenz für die Eingabe/Ausgabe-Charakterisierungen der Prozesse PID810 und PID814 anfordert, wobei die Inferenzanforderung 810 anzeigt, dass der Eingabe/Ausgabe-Planer 166 beide Prozesse bereits als Basislinienprozesse charakterisiert hat. Nach dem Empfang der Inferenzanforderung 810 erhalten der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 101, das/die mindestens Eingabe-/Ausgabe-bezogene Eingabedaten für das Computergerät 402 enthält/enthalten, und zwar mindestens von Kernel- und Nicht-Kernel zugreifbaren Dateien / Daten 150, wie in Block 812 angegeben. Das (die) trainierte(n) maschinelle(n) Lernmodell(e) 132 verwendet (verwenden) dann 101 als Eingabedaten, um ein Agreement bzw. eine Übereinstimmung mit dem Eingabe/Ausgabe-Planer 166 hinsichtlich der Basisliniencharakterisierung für die beiden Prozesse PID810 und PID814 abzuleiten, wie ebenfalls in Block 812 angegeben. Der Inferenzdämon 130 sendet dann die Inferenzantwort 814 an den Eingabe/Ausgabe-Planer 166 und liefert die angeforderte Inferenz über die Prozesse PID810 und PID814. Wie in Block 820 angegeben, plant der Eingabe/Ausgabe-Planer 166 die Verwendung von Ein- und/oder Ausgabegeräten für die Prozesse PID810 und PID814 als Basislinienprozesse.
-
Während des Szenarios 400 führt der Eingabe/Ausgabe-Planer 166 weiterhin Operationen durch, einschließlich, aber nicht beschränkt auf: Planen der Verwendung eines oder mehrerer Eingabe- und/oder Ausgabe-Geräte und Charakterisierung von Prozessen, während auf Inferenzen gewartet wird; z.B. Warten auf Inferenzen während eines Zeitintervalls zwischen der Bereitstellung der Inferenzanforderung 810 an den Inferenzdämon 130 und dem Empfang der Inferenzantwort 814; d.h., das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 bestimmen die in der Inferenzantwort 814 bereitgestellte Inferenz asynchron zu den vom Eingabe/Ausgabe-Planer 166 durchgeführten Operationen.
-
Später, wie in Block 830 angegeben, erhalten der Inferenz-Dämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 102, das/die mindestens aktualisierte Eingabe-Ausgabe-bezogene Eingabedaten für das Computergerät 402 enthält/enthält/enthalten, und zwar mindestens von Kernel- und Nicht-Kernel-zugreifbaren Dateien/Daten 150. Und, wie auch in Block 830 angegeben, verwenden trainierte(s) maschinelle(s) Lernmodell(e) 132 dann 102 als Eingabedaten, um eine neue Inferenz zu bestimmen, dass der Prozess PID810 jetzt als interaktiver Prozess charakterisiert ist. Der Inferenzdämon 130 sendet dann die Inferenzantwort 832 an den Eingabe-/Ausgabeplaner 166, was anzeigt, dass der Prozess PID810 jetzt als interaktiver Prozess charakterisiert ist, und einen Abweichungsindikator, der anzeigt, dass das/die trainierte(n) maschinelle Lernmodell(e) 132 jetzt mit dem Eingabe-/Ausgabeplaner 166 bezüglich der Charakterisierung des Prozesses PID810 nicht einverstanden ist/sind. Block 840 von 8 zeigt an, dass als Antwort auf die Inferenzantwort 832 der Eingabe-/Ausgabeplaner 166 den Prozess PID810 erneut als interaktiven Prozess charakterisiert. Eingabe-/Ausgabeplaner 166 zeichnet auch auf, dass aufgrund des Unstimmigkeitsindikators, der Inferenzdämon 130 und Eingabe-/Ausgabeplaner 166 anzeigt, dass Inferenzdämon 130 anstelle von Eingabe-/Ausgabeplaner 166 nun den Prozess PID810 charakterisiert.
-
Block 910 von 9 zeigt, dass Szenario 400 mit dem Eingabe-/Ausgabeplaner 166 unter Verwendung einer Heuristik fortfährt, um den Prozess PID814 als einen weichen Echtzeitprozess neu zu charakterisieren. Dann sendet der Eingabe-/Ausgabeplaner 166 die Inferenzanforderung 912 an den Inferenzdämon 130, um eine Inferenz für die Eingabe-/Ausgabecharakterisierung des Prozesses PID814 anzufordern, mit dem Hinweis, dass der Eingabe-/Ausgabeplaner 166 den Prozess PID814 jetzt als einen weichen Echtzeitprozess charakterisiert. Nach Empfang der Inferenzanforderung 912 zeigt Block 920 an, dass der Inferenz-Dämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 103 erhalten, das/die mindestens aktualisierte Eingabe-Ausgabe-bezogene Eingabedaten für das Computergerät 402 enthält/enthalten, und zwar mindestens von Kernel- und Nicht-Kernel-zugreifbaren Dateien / Daten 150. Trainierte(s) maschinelle Lernmodell(e) 132 verwenden dann 103 als Eingabedaten, um daraus die Übereinstimmung mit dem Eingabe/Ausgabe-Planer 166 bezüglich der weichen Echtzeit-Prozesscharakterisierung für den Prozess PID814 abzuleiten, wie auch in Block 920 angegeben. Der Inferenzdämon 130 sendet dann die Inferenzantwort 922 an den Speichermanager 162, der die Inferenz über den Prozess PID814 liefert. Wie in Block 930 angegeben, empfängt der Eingabe-/Ausgabeplaner 166 die Inferenzantwort 922 und plant anschließend die Verwendung von Ein- und/oder Ausgabegeräten für den Prozess PID810 als interaktiven Prozess und für den Prozess PID814 als weichen Echtzeitprozess.
-
Wie aus Block 932 hervorgeht, erhalten der Inferenz-Dämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 später das 104, das mindestens aktualisierte Eingabe-Ausgabe-bezogene Eingabedaten für das Computergerät 402 enthält, zumindest von Kernel- und Nicht-Kernel-zugreifbaren Dateien/Daten 150. Und, wie ebenfalls in Block 932 angegeben, verwenden trainierte(s) maschinelle(s) Lernmodell(e) 132 dann 104 als Eingabedaten, um eine neue Inferenz zu bestimmen, dass der Prozess PID810 jetzt als ein Basislinienprozess charakterisiert ist und dass der Prozess PID814 als ein weicher Echtzeitprozess charakterisiert bleibt. Der Inferenzdämon 130 sendet dann die Inferenzantwort 940 an den Eingabe-/Ausgabeplaner 166, der anzeigt, dass der Prozess PID810 als Grundlinienprozess charakterisiert ist, und einen Unstimmigskeitsindikator (Disagreementindikator), der anzeigt, dass das/die trainierte(n) maschinelle Lernmodell(e) 132 mit dem Eingabe-/Ausgabeplaner 166 bezüglich der Charakterisierung des Prozesses PID810 nicht übereinstimmen. Block 942 zeigt an, dass als Reaktion auf die Inferenzantwort 940 der Eingabe-/Ausgabeplaner 166 den Prozess PID810 als Basislinienprozess neu charakterisiert.
-
In weiteren Szenarien können der Eingabe-/Ausgabeplaner 166, der Prozess PID810 und/oder der Prozess PID814 eine Ausgabe des Computergeräts 402 erzeugen, wobei die Ausgabe eine visuelle Ausgabe, eine Audioausgabe, eine haptische Ausgabe oder eine Kombination davon sein kann. Beispielsweise kann der Prozess PID814 ein Prozess sein, der eine Nachrichtenanwendung ausführt, und kann den Ein-/Ausgabeplaner 166 anfordern, um den Abruf von Daten aus einem Blockspeichergerät für eine Nachricht zu planen, wobei das Blockspeichergerät aus Sicht des Prozesses PID814 als Eingabegerät fungiert. Nachdem der Prozessplaner 164 die Ausführung des Prozesses PID814 geplant hat, um das Blockspeichergerät zu verwenden, kann der Prozess PID814 dann die Daten für die aus dem Blockspeichergerät abgerufene Nachricht verwenden, um einen oder mehrere Ausgaben des Computergeräts 402 zu erzeugen, z.B. eine Anzeige der Nachricht, einen Warnton oder einen anderen Ton in Bezug auf die Nachricht, eine Vibration bei Nachrichteneingang usw.
-
Block 1010 von 10 zeigt an, dass Szenario 400 mit dem Speichermanager 162 fortgesetzt wird, der ein Gerät mit komprimierten Blöcken verwaltet, das die Speicherrahmen F1020 und F1022 umfasst. Block 1020 zeigt an, dass der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 PD3 erhalten, das/die mindestens speicherbezogene Eingabedaten des Computergeräts 402 enthält/enthalten, zumindest von Kernel- und Nicht-Kernel-zugreifbaren Dateien / Daten 150. Dann verwenden trainierte(s) maschinelle(s) Lernmodell(e) 132 PD3 als Eingabedaten, was zu einer Inferenz führt, dass der Speicherrahmen F1020 komprimiert werden sollte. Der Inferenzdämon 130 sendet dann die Inferenzantwort 1022 an den Speichermanager 162, die die Inferenz enthält, dass der Speicherrahmen F1020 komprimiert werden sollte. Nach Empfang der Inferenzantwort 1022 zeigt Block 1024 von 10 an, dass Speichermanager 162 den Speicherrahmen F1020 als Teil der Verwaltung des komprimierten Blockgeräts komprimiert.
-
Wie aus Block 1030 hervorgeht, erhalten der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 später den PD4, der mindestens aktualisierte speicherbezogene Eingabedaten des Computergeräts 402 enthält, zumindest von Kernel- und Nicht-Kernel-zugreifbaren Dateien/Daten 150. Dann verwenden das/die trainierte(n) maschinelle Lernmodell(e) 132 PD4 als Eingabedaten, was zu der Inferenz führt, dass der Speicherrahmen F1022 komprimiert werden sollte. Der Inferenzdämon 130 sendet dann die Inferenzantwort 1032 an den Speichermanager 162, die die Inferenz enthält, dass der Speicherrahmen F1022 komprimiert werden sollte. Nach Empfang der Inferenzantwort 1032 zeigt Block 1034 an, dass Speichermanager 162 den Speicherrahmen F1022 als Teil der Verwaltung des komprimierten Blockgeräts komprimiert.
-
Wie aus Block 1040 hervorgeht, erhalten der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 später den PD5, der mindestens aktualisierte speicherbezogene Eingabedaten des Computergeräts 402 enthält, zumindest von Kernel- und Nicht-Kernel-zugreifbaren Dateien/Daten 150. Dann verwenden trainierte(s) maschinelle(s) Lernmodell(e) 132 PD5 als Eingabedaten, was zu der Inferenz führt, dass der Speicherrahmen F1020 dekomprimiert werden sollte. Der Inferenzdämon 130 sendet dann die Inferenzantwort 1042 an den Speichermanager 162, der die Inferenz enthält, dass der Speicherrahmen F1020 dekomprimiert werden sollte. Nach dem Empfang der Inferenzantwort 1042 zeigt der Block 1044 an, dass Speichermanager 162 den Speicherrahmen F1020 als Teil der Verwaltung des komprimierten Blockgeräts dekomprimiert.
-
Block 1110 von 11 zeigt an, dass Szenario 400 mit dem Systemressourcenmanager 168 unter Verwendung einer Behälter-Heuristik zur Bestimmung der Ressourcenbeschränkungen HRL1, HRL2, HRL3 für drei entsprechende Ressourcenbehälter BK1, BK2, BK3 fortfährt. In Szenario 400 sind die Ressourcenbehälter BK1, BK2, BK3 drei Ressourcenbehälter von insgesamt fünf Ressourcenbehältern BK1, BK2, BK3, BK4 und BK5. Der Systemressourcenmanager 168 sendet dann die Inferenzanforderung 1112 an den Inferenzdämon 130, um eine Inferenz in Bezug auf die Beschränkungen der Ressourcenkategorien für alle fünf Ressourcenkategorien anzufordern.
-
Nach Erhalt der Inferenzanforderung 1112 zeigt Block 1114 an, dass der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 ResD1 erhalten, das/die mindestens ressourcenbezogene Eingabedaten des Computergeräts 402 enthält/enthalten, und zwar mindestens von Kernel- und Nicht-Kernel zugreifbaren Dateien / Daten 150. Das (die) trainierte(n) maschinelle(n) Lernmodell(e) 132 verwenden dann ResD1 als Eingabedaten, um die Ressourcenbeschränkungen RL1, RL2, RL3, RL4, RL5 für die jeweiligen Ressourcenbehälter BK1, BK2, BK3, BK4 und BK5 abzuleiten. Der Inferenzdämon 130 sendet dann die Inferenzantwort 1116 an den Systemressourcenmanager 168, der die Inferenz über die fünf Ressourcenbehälter von Szenario 400 liefert. Wie in Block 1118 angegeben, empfängt der Systemressourcenmanager 168 die Inferenzantwort 1116, weist den Ressourcenbehältern RL1, RL2 und RL3 auf der Grundlage von Kombinationen der jeweiligen heuristischen Ressourcenbeschränkungen HRL1, HRL2, HRL3 und der abgeleiteten Ressourcenbeschränkungen RL1, RL2, RL3 Ressourcenbeschränkungen von RL4, RL5 zu und weist den jeweiligen Ressourcenbehältern BK4, BK5 Ressourcenbeschränkungen von RL4, RL5 zu.
-
Während Szenario 400 führt der Systemressourcenmanager 168 weiterhin Vorgänge durch, einschließlich, aber nicht beschränkt auf: Bestimmen von Ressourcenbeschränkungen für Ressourcenbehälter und Zuweisen von Ressourcenbehältern an Prozesse, während auf Inferenzen gewartet wird; z. B. Warten auf Inferenzen während eines Zeitintervalls zwischen der Bereitstellung der Inferenzanforderung 1112 an den Inferenzdämon 130 und dem Empfang der Inferenzantwort 1116; d. h., das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 bestimmen die in der Inferenzantwort 1116 bereitgestellte Inferenz asynchron zu den vom Systemressourcenmanager 168 durchgeführten Vorgängen.
-
Block 1210 von 12 zeigt an, dass Szenario 400 mit dem Systemressourcenmanager 168 fortfährt, wobei eine Heuristik verwendet wird, um zunächst einen Prozess, der eine Anwendung A1 ausführt, dem Ressourcenbehälter BK3 zuzuweisen. Wie in Block 1212 angegeben, wird der Prozess, der Anwendung A1 ausführt, später aktiv, und der Systemressourcenmanager 168 verwendet die Heuristik, um diesen Prozess dem Ressourcenbehälter BK4 neu zuzuweisen.
-
Block 1220 zeigt an, dass der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 ResD2 erhalten, das/die mindestens aktualisierte ressourcenbezogene Eingabedaten des Computergeräts 402 enthält/enthalten, zumindest von Kernel- und Nicht-Kernel-zugreifbaren Dateien/Daten 150. Trainierte(s) Modell(e) des maschinellen Lernens 132 verwenden dann ResD2 als Eingabedaten, um daraus abzuleiten, dass der Prozess, der die Anwendung A1 ausführt, dem Ressourcenbehälter BK5 zugeordnet werden sollte. Der Inferenz-Dämon 130 sendet dann die Inferenzantwort 1222 an den Systemressourcenmanager 168, der die Inferenz über den Prozess, der die Anwendung A1 ausführt, bereitstellt. Wie in Block 1224 angegeben, empfängt der Systemressourcenmanager 168 die Inferenzantwort 1222 und weist den Prozess, der die Anwendung A1 ausführt, dem Ressourcenbehälter BK5 zu.
-
Der Systemressourcenmanager 168 sendet dann die Inferenzanforderung 1230 an den Inferenzdämon 130, um eine Inferenz in Bezug auf die Ressourcenbehälterbeschränkungen für einen Prozess anzufordern, der die Anwendung A2 ausführt. Nach Empfang der Inferenzanforderung 1230 zeigt Block 1232 an, dass der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 ResD3 erhalten, das/die mindestens aktualisierte ressourcenbezogene Eingabedaten des Computergeräts 402 enthält/enthalten, zumindest von Kernel- und Nicht-Kernel-zugreifbaren Dateien / Daten 150. Trainierte(s) Modell(e) des maschinellen Lernens 132 verwenden dann ResD3 als Eingabedaten, um daraus abzuleiten, dass der Prozess, der die Anwendung A2 ausführt, dem Ressourcenbehälter BK3 zugeordnet werden sollte. Wie in Block 1236 angegeben, erhält der Systemressourcenmanager 168 die Inferenzantwort 1234 und weist den Prozess, der die Anwendung A2 ausführt, dem Ressourcenbehälter BK3 zu.
-
zeigt, dass Szenario 400 mit der Datenbankanwendung 140 fortfährt, die Inferenzanforderung 1310 an den Inferenzdämon 130 sendet und eine Inferenz bezüglich der Checkpoint-Datenbanken DB1, DB2 und DB3 anfordert. Nach Empfang der Inferenzanforderung 1310 zeigt Block 1312 an, dass der Inferenzdämon 130 und das/die trainierte(n) maschinelle Lernmodell(e) 132 DBU1 erhalten, das/die mindestens datenbankbezogene Eingabedaten des Computergeräts 402 enthält/enthält/enthalten, zumindest von Kernel- und Nicht-Kernel-zugreifbaren Dateien / Daten 150. Trainierte(s) maschinelle(s) Lernmodell(e) 132 verwenden dann DBU1 als Eingabedaten, um daraus abzuleiten, dass die Datenbank DB1 einem Checkpointing unterzogen werden sollte und dass die Datenbanken DB2 und DB3 nicht einem Checkpointing unterzogen werden sollten, und senden die entsprechende Inferenzantwort 1314 an die Datenbankanwendung 140. Nach dem Empfang der Inferenzantwort 1314 zeigt Block 1316 von 13 an, dass die Datenbankanwendung 140 die Datenbank DB1 einem Checkpointing unterzieht. Block 1320 zeigt an, dass die Datenbankanwendung 140 später eine Checkpoint-Heuristik und Datenbank DB3 einem Checkpointing unterzieht.
-
Während Szenario 400 führt die Datenbankanwendung 140 weiterhin Operationen durch, einschließlich, aber nicht beschränkt auf: Ausführen von Datenbanktransaktionen, Empfangen von Datenbankabfragen, Beantworten von Datenbankabfragen, Protokollieren von Datenbanktransaktionen und Unterziehen von Datenbanken einem Checkpointing, während auf Inferenzen gewartet wird; z.B. Warten auf Inferenzen während eines Zeitintervalls zwischen der Bereitstellung der Inferenzanforderung 1310 an den Inferenzdämon 130 und dem Empfang der Inferenzantwort 1314; d.h., das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 bestimmen die in der Inferenzantwort 1314 bereitgestellte Inferenz asynchron zu den von der Datenbankanwendung 140 durchgeführten Operationen.
-
Wie in Block 1330 angedeutet, fährt Szenario 400 mit Inferenzdämon 130 fort und trainierte(s) Modell(e) des maschinellen Lernens 132 erhalten DBU2, das mindestens aktualisierte datenbankbezogene Eingabedaten des Computergeräts 402 enthält, zumindest von Kernel- und Nicht-Kernel-zugreifbaren Dateien/Daten 150. Trainierte(s) Modell(e) des maschinellen Lernens 132 verwenden dann DBU2 als Eingabedaten, um daraus abzuleiten, dass die Datenbank DB1 erneut einem Checkpointing unterzogen werden sollte, und senden die entsprechende Inferenzantwort 1332 an die Datenbankanwendung 140. Nach Erhalt der Inferenzantwort 1332 zeigt Block 1334 an, dass Datenbankanwendung 140 wieder die Datenbank DB1 einem Cheeckpointing unterzieht. Und Block 1336 zeigt an, dass die Datenbankanwendung 140 anschließend die Ausführung beendet.
-
Szenario 400 fährt, wie in Block 1340 angegeben, mit der Audio-/Video-Anwendung 142 fort, die mit der Ausführung beginnt und anfänglich NB1 Puffer zuweist, um Audioinhalt AC1 bereitzustellen, wobei der Wert von NB1 unter Verwendung einer Heuristik der Audio-/Video-Anwendung 142 bestimmt wird. In Szenario 400 stellt die Audio-/Video-Anwendung 142 den Audioinhalt AC1 zusammen mit einer entsprechenden visuellen Anzeige als Ausgaben des Computergeräts 402 zur Verfügung.
-
Die Audio-/Video-Anwendung 142 sendet dann die Inferenzanforderung 1342 an den Inferenzdämon 130 und fordert eine Inferenz über eine Anzahl von Puffern an, die zugewiesen werden sollen, um den Audioinhalt AC1 mit der Information zu versorgen, dass NB1 Puffer bereits zugewiesen wurden. Nach Empfang der Inferenzanforderung 1342 zeigt Block 1410 von 14 an, dass der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 MUP1 erhalten, das/die zumindest audio-video-bezogene Eingangsdaten des Computergeräts 402 enthält/enthalten, zumindest von Kernel- und Nicht-Kernel zugreifbaren Dateien / Daten 150. Trainierte(s) maschinelle Lernmodell(e) 132 verwenden dann MUP1 als Eingabedaten, um daraus abzuleiten, dass Audio-/Video-Anwendung 142 NB2 Puffer verwenden sollte, um Audio-Inhalte AC1 bereitzustellen. Der Inferenzdämon 130 sendet dann die Inferenzantwort 1412 an die Audio-/Video-Anwendung 142 und liefert die Inferenz über die Anzahl der Puffer, die zur Bereitstellung von Audio-Inhalten AC1 zuzuweisen sind. In Szenario 400 ist NB2 größer als NB1. Block 1414 zeigt an, dass nach Empfang der Inferenzantwort 1412 die Audio-/Video-Anwendung 142 NB2 - NB1 weitere Puffer für die Bereitstellung des Audioinhalts AC1 zuweist.
-
In weiteren Szenarien kann die Audio-/Videoanwendung 142 eine Anzahl von Puffern NB COMB für die Bereitstellung von Audioinhalten AC1 als Kombination des heuristisch bestimmten Wertes NB1 und des modellbestimmten abgeleiteten Wertes NB2 bestimmen. Beispielsweise kann die Audio-/Video-Anwendung 142 eine sechste Linearkombination aus dem heuristisch bestimmten Wert NB1 und dem modellbestimmten hergeleiteten Wert NB2 verwenden, z.B. unter Verwendung einer Linearkombinationstechnik auf der Grundlage von Gleichung (1) und/oder Gleichung (2).
-
Während Szenario 400 führt die Audio-/Video-Anwendung 142 weiterhin Operationen durch, einschließlich, aber nicht beschränkt auf: Bereitstellen von Audio- und/oder Video-Inhalten, Zuweisen (Allokation) von Puffern und Freigeben (De-Allokation) von Puffern, während auf Inferenzen gewartet wird; z. B. Warten auf Inferenzen während eines Zeitintervalls zwischen der Bereitstellung der Inferenzanforderung 1342 an den Inferenzdämon 130 und dem Empfang der Inferenzantwort 1412; d. h., das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 bestimmen die in der Inferenzantwort 1412 bereitgestellte Inferenz asynchron zu den von der Audio-/Video-Anwendung 142 durchgeführten Operationen.
-
Block 1420 zeigt an, dass der Inferenz-Dämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 später MUP2 erhalten, das mindestens aktualisierte audio-video-bezogene Eingabedaten des Computergeräts 402 enthält, zumindest von Kernel- und Nicht-Kernel-zugreifbaren Dateien / Daten 150. Trainierte(s) maschinelle Lernmodell(e) 132 verwenden dann MUP2 als Eingabedaten, um daraus abzuleiten, dass Audio-/Video-Anwendung 142 NB3 Puffer verwenden sollte, um Audio-Inhalte AC1 bereitzustellen. Der Inferenzdämon 130 sendet dann die Inferenzantwort 1422 an die Audio-/Video-Anwendung 142 und liefert die Inferenz über die Anzahl der Puffer, die für die Bereitstellung von Audio-Inhalten AC1 zuzuweisen sind. In Szenario 400 ist NB3 kleiner als NB2. Block 1424 zeigt an, dass die Audio-/Videoanwendung 142 nach Empfang der Inferenzantwort 1422 die Puffer NB2 - NB3 für die Bereitstellung des Audioinhalts AC1 freigibt.
-
Block 1430 zeigt an, dass die Präsentation von Audio-Inhalten AC1 endet und die Audio-/Video-Anwendung 142 alle Puffer freigibt. Block 1430 zeigt auch an, dass Audio-/Video-Anwendung 142 eine Anfrage zur Bereitstellung von Video-Inhalt VC1 empfängt. Audio-/Video-Anwendung 142 sendet dann die Inferenzanforderung 1432 an den Inferenzdämon 130 und fordert eine Inferenz über eine Anzahl von Puffern an, die zuzuweisen (zu allozieren) sind, um Videoinhalt VC1 mit der Information zu versorgen, dass null Puffer bereits zugewiesen wurden.
-
Nach Erhalt der Inferenzanforderung 1432 zeigt Block 1434 an, dass der Inferenzdämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 MUP3 erhalten, das/die mindestens aktualisierte audio-video-bezogene Eingabedaten des Computergeräts 402 enthält/enthalten, und zwar zumindest von Kernel- und Nicht-Kernel-zugreifbaren Dateien/Daten 150. Trainierte(s) maschinelle Lernmodell(e) 132 verwenden dann MUP3 als Eingabedaten, um daraus abzuleiten, dass Audio-/Video-Anwendung 142 NB4 Puffer verwenden sollte, um Video-Inhalte VC1 bereitzustellen. Der Inferenzdämon 130 sendet dann die Inferenzantwort 1436 an die Audio-/Video-Anwendung 142 und liefert die Inferenz über die Anzahl der Puffer, die zur Bereitstellung des Videoinhalts VC1 zuzuweisen sind.
-
Wie in Block 1440 angegeben, beinhaltet Szenario 400 auch, dass die Browseranwendung 144 die Ausführung startet und sowohl die Browseranwendung 144 als auch der Just-in-Time-Compiler 146 während der Ausführung Anweisungen der Programmiersprache interpretieren.
-
Wendet man sich 15 zu, so zeigt Block 1510 an, dass die Audio-/Video-Anwendung 142 nach Erhalt der Inferenzantwort 1436 NB4 Puffer zuweist, um Videoinhalte VC1 bereitzustellen, und mit der Bereitstellung von Videoinhalten VC1 beginnt. In Szenario 400 stellt die Audio-/Video-Anwendung 142 den Videoinhalt VC1 als Audio- und visuelle Ausgaben des Computergeräts 402 zur Verfügung.
-
Szenario 400 fährt mit dem Just-in-Time-Compiler 146 der Browser-Anwendung 144 fort, der die Inferenzanforderung 1520 an den Inferenzdämon 130 sendet und eine Inferenz darüber anfordert, ob die gegenwärtig vom Just-in-Time-Compiler 146 ausgeführten Anweisungen als Hot-Loop bezeichnet werden sollen. Block 1522 zeigt an, dass der Inferenz-Dämon 130 und das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 CEP1 erhalten, das/die mindestens compilerbezogene Eingabedaten des Computergeräts 402 enthält/enthalten, zumindest von Kernel- und Nicht-Kernel zugreifbaren Dateien / Daten 150. Trainierte(s) maschinelle(s) Lernmodell(e) 132 verwenden dann CEP1 als Eingabedaten, um daraus abzuleiten, dass die Anweisungen, die gegenwärtig vom Just-in-Time-Compiler 146 ausgeführt werden, nicht als Hot-Loop bezeichnet werden sollten. Der Inferenzdämon 130 sendet dann die Inferenzantwort 1524 an den Just-in-Time-Compiler 146, um die Inferenz über die Hot-Loop-Nicht-Bezeichnung zu liefern.
-
Während des Szenarios 400 führt der Just-in-Time-Compiler 146 weiterhin Operationen durch, einschließlich, aber nicht beschränkt auf: Kompilieren von Anweisungen und Bestimmen von Hot-Loops in den Anweisungen, während auf Inferenzen gewartet wird; z. B. Warten auf Inferenzen während eines Zeitintervalls zwischen dem Senden der Inferenzanforderung 1520 an den Inferenzdämon 130 und dem Empfang der Inferenzantwort 1524; d. h., das/die trainierte(n) maschinelle(n) Lernmodell(e) 132 bestimmen die in der Inferenzantwort 1524 bereitgestellte Inferenz asynchron zu den vom Just-in-Time-Compiler 146 durchgeführten Operationen.
-
Block 1530 zeigt an, dass das Szenario 400 mit dem Inferenz-Dämon 130 und dem/den trainierten maschinellen Lernmodell(en) 132 fortfährt, um CEP2 zu erhalten, das mindestens aktualisierte compilerbezogene Eingabedaten des Computergeräts 402 enthält, zumindest aus den Kernel- und Nicht-Kernel-zugreifbaren Dateien / Daten 150. Trainierte(s) maschinelles Lernmodell(e) 132 verwenden dann CEP2 als Eingabedaten, um abzuleiten, dass die Anweisungen, die gegenwärtig vom Just-in-Time-Compiler 146 ausgeführt werden, als Hot-Loop bezeichnet werden sollten. Der Inferenzdämon 130 sendet dann die Inferenzantwort 1532 an den Just-in-Time-Compiler 146, der die Inferenz über die Hot-Loop-Bezeichnung liefert. Nach Erhalt der Inferenzantwort 1532 zeigt der Block 1534 an, dass der Just-in-Time-Compiler 146 die gegenwärtig ausgeführten Befehle als Hot-Loop bezeichnet und die jetzt als Hot-Loop bezeichneten Befehle kompiliert. Block 1536 zeigt an, dass der Just-in-Time-Compiler 146 die Kompilierung der jetzt als Hot-Loop bezeichneten Anweisungen abschließt. Nach der Ausführung der kompilierten Hot-Loop-Anweisungen wird die Browser-Anwendung 144 (zu der der Just-in-Time-Compiler 146 gehört) beendet, wodurch der Just-in-Time-Compiler 146 ebenfalls beendet wird, was durch Block 1536 weiter angezeigt wird.
-
Wie in Block 1540 angezeigt, fährt Szenario 400 mit Inferenz-Dämon 130 fort und trainierte(s) maschinelle Lernmodell(e) 132 erhalten MUP4, das aktualisierte audio-video-bezogene Eingangsdaten des Computergeräts 402 enthält, zumindest von Kernel- und Nicht-Kernel-zugänglichen Dateien/Daten 150. Trainierte(s) maschinelle Lernmodell(e) 132 verwenden dann MUP4 als Eingabedaten, um daraus abzuleiten, dass Audio-/Video-Anwendung 142 NB5 Puffer verwenden sollte, um Video-Inhalte VC1 bereitzustellen. Der Inferenz-Dämon 130 sendet dann die Inferenzantwort 1542 an die Audio-/Video-Anwendung 142 und liefert die Inferenz über die Anzahl der Puffer, die zur Bereitstellung des Videoinhalts VC1 zuzuweisen sind. In Szenario 400 ist NB5 größer als NB4 (die Anzahl der Puffer, die derzeit von der Audio-/Video-Anwendung 142 zugewiesen werden). Block 1544 zeigt an, dass nach Erhalt der Inferenzantwort 1542 die Audio-/Videoanwendung 142 NB5 - NB4 mehr Puffer für die Bereitstellung des Videoinhalts VC1 zuweist. Dann zeigt Block 1546 an, dass die Präsentation des Videoinhalts VC1 endet und die Audio-/Video-Anwendung 142 beendet wird. Sobald die Audio-/Video-Anwendung 142 beendet ist, kann Szenario 400 abgeschlossen werden.
-
Beispiel Datennetz
-
16 stellt die Architektur des verteilten Rechnens 1600 gemäß Beispielausführungen dar. Die verteilte Rechnerarchitektur 1600 umfasst Servergeräte 1608, 1610, die so konfiguriert sind, dass sie über das Netz 1606 mit den programmierbaren Geräten 1604a, 1604b, 1604c, 1604d und 1604e kommunizieren. Netzwerk 1606 kann einem lokalen Netzwerk (LAN), einem Weitverkehrsnetzwerk (WAN), einem WLAN, einem WWAN, einem Firmen-Intranet, dem öffentlichen Internet oder jeder anderen Art von Netzwerk entsprechen, das so konfiguriert ist, dass es einen Kommunikationspfad zwischen vernetzten Computergeräten bereitstellt. Netzwerk 1606 kann auch einer Kombination aus einem oder mehreren LANs, WANs, Firmen-Intranets und/oder dem öffentlichen Internet entsprechen.
-
Obwohl 16 nur fünf programmierbare Geräte zeigt, können verteilte Anwendungsarchitekturen Dutzende, Hunderte oder Tausende von programmierbaren Geräten bedienen. Darüber hinaus kann es sich bei den programmierbaren Geräten 1604a, 1604b, 1604c, 1604d, 1604e (oder zusätzlichen programmierbaren Geräten) um jede Art von Computergerät handeln, wie z.B. einen gewöhnlichen Laptop-Computer, einen Desktop-Computer, ein tragbares Computergerät, ein mobiles Computergerät, ein Head Mountable Device (HMD), ein Netzwerk-Endgerät, ein drahtloses Kommunikationsgerät (z.B. ein Smartphone oder ein Mobiltelefon) und so weiter. In einigen Beispielen, wie z.B. bei den programmierbaren Geräten 1604a, 1604b, 1604c, 1604e, können programmierbare Geräte direkt an das Netz 1606 angeschlossen werden. In anderen Beispielen, wie z.B. dem programmierbaren Gerät 1604d, können programmierbare Geräte indirekt über ein zugehöriges Computergerät, wie z.B. das programmierbare Gerät 1604c, an das Netzwerk 1606 angeschlossen werden. In diesem Beispiel kann das programmierbare Gerät 1604c als ein zugeordnetes Computergerät fungieren, um die elektronische Kommunikation zwischen dem programmierbaren Gerät 1604d und dem Netz 1606 weiterzuleiten. In anderen Beispielen, wie z.B. im Beispiel des programmierbaren Geräts 1604e, kann ein Computergerät Teil eines Fahrzeugs sein und/oder sich in einem Fahrzeug befinden, wie z.B. einem Auto, einem Lastwagen, einem Bus, einem Boot oder Schiff, einem Flugzeug usw. In anderen Beispielen, die nicht in 16 dargestellt sind, kann ein programmierbares Gerät sowohl direkt als auch indirekt an das Netzwerk 1606 angeschlossen werden.
-
Die Server-Geräte 1608, 1610 können so konfiguriert werden, dass sie einen oder mehrere Dienste ausführen, wie sie von den programmierbaren Geräten 1604a-1604e angefordert werden. Zum Beispiel kann das Server-Gerät 1608 und/oder 1610 Inhalte für die programmierbaren Geräte 1604a-1604e bereitstellen. Der Inhalt kann Webseiten, Hypertext, Skripte, binäre Daten wie kompilierte Software, FIG.er, Audio- und/oder Videodaten umfassen, ist aber nicht darauf beschränkt. Der Inhalt kann komprimierte und/oder unkomprimierte Inhalte umfassen. Der Inhalt kann verschlüsselt und/oder unverschlüsselt sein. Auch andere Arten von Inhalten sind möglich.
-
Als ein weiteres Beispiel kann das Server-Gerät 1608 und/oder 1610 den programmierbaren Geräten 1604a-1604e Zugang zu Software für Datenbank, Suche, Berechnung, Grafik, Audio, Video, World Wide Web/Internet-Verwendung und/oder anderen Funktionen bieten. Viele andere Beispiele für Server-Geräte sind ebenfalls möglich.
-
Architektur von Computergeräten
-
17 ist ein funktionelles Blockdiagramm eines Beispiel-Computergeräts 1700, gemäß Beispielausführungen. Insbesondere das in FIG. 1700 gezeigte Computergerät 1700 kann so konfiguriert werden, dass es mindestens eine Funktion eines Algorithmus für maschinelles Lernen, eines Modells für maschinelles Lernen, eines Computergeräts, eines Betriebssystems, eines Kernels, einer Kernelkomponente, einer Software-Anwendung, einer Nicht-Kernelkomponente, einer Software-Architektur 100, eines Nicht-Kernel-Speicherplatzes 110, eines Kernel-Speicherplatzes 120, eines Inferenzdämons 130, eines oder mehrerer trainierter maschineller Lernmodelle 132, einer Datenbank-Anwendung 140, einer Audio-/Video-Anwendung 142, einer Browser-Anwendung 144 ausführt, Just-in-Time-Compiler 146, Kernel- und Nicht-Kernelzugreifbare Dateien / Daten 150, Betriebssystem-Kernel 160, Speicherverwaltung 162, Prozessplaner 164, Ein-/Ausgabe-Planer 166, System-Ressourcenverwaltung 168 und/oder mindestens eine Funktion, die sich auf eine Inferenz bezieht, Eingabedaten, Trainingsphase 202, Inferenzphase 204, Inferenzanforderungen 240, Inferenz(en) 250, Feedback 260, Tabelle 300, Szenario 400, Computergerät 402 und/oder Verfahren 1800.
-
Das Computergerät 1700 kann ein Benutzerschnittstellenmodul 1701, ein Netzwerkkommunikationsmodul 1702, einen oder mehrere Prozessoren 1703, Datenspeicher 1704, einen oder mehrere Sensoren 1720 und das Stromversorgungssystem 1722 enthalten, die alle über einen Systembus, ein Netzwerk oder einen anderen Verbindungsmechanismus 1705 miteinander verbunden sein können.
-
Das Benutzerschnittstellenmodul 1701 kann so betrieben werden, dass es Daten an externe Benutzer-Ein-/Ausgabegeräte sendet und/oder von diesen empfangen kann. Beispielsweise kann das Benutzerschnittstellenmodul 1701 so konfiguriert werden, dass es Daten an Benutzereingabegeräte wie einen Touchscreen, eine Computermaus, eine Tastatur, ein Tastenfeld, ein Touchpad, einen Trackball, einen Joystick, eine Kamera, ein Spracherkennungsmodul und/oder andere ähnliche Geräte sendet und/oder von diesen empfängt. Das Benutzerschnittstellenmodul 1701 kann auch so konfiguriert werden, dass es Ausgaben an Benutzeranzeigegeräte wie eine oder mehrere Kathodenstrahlröhren (CRT), Flüssigkristallanzeigen, Leuchtdioden (LEDs), Anzeigen mit digitaler Lichtverarbeitungstechnologie (DLP), Drucker, Glühbirnen und/oder andere ähnliche Geräte, die entweder jetzt bekannt sind oder später entwickelt wurden, liefert. Das Benutzerschnittstellenmodul 1701 kann auch so konfiguriert werden, dass es akustische Ausgaben mit Geräten wie einem Lautsprecher, einer Lautsprecherbuchse, einem Audioausgangsanschluss, einem Audioausgabegerät, Ohrhörern und/oder anderen ähnlichen Geräten erzeugt. Das Benutzerschnittstellenmodul 1701 kann ferner mit einem oder mehreren haptischen Geräten konfiguriert werden, die haptische Ausgaben erzeugen können, wie z.B. Vibrationen und/oder andere Ausgaben, die durch Berührung und/oder physischen Kontakt mit dem Computergerät 1700 erkennbar sind. In einigen Beispielen kann das Benutzerschnittstellenmodul 1701 verwendet werden, um eine grafische Benutzeroberfläche (GUI) für die Verwendung des Computergeräts 1700 bereitzustellen.
-
Das Netzwerkkommunikationsmodul 1702 kann ein oder mehrere Geräte enthalten, die eine oder mehrere drahtlose Schnittstellen 1707 und/oder eine oder mehrere drahtgebundene Schnittstellen 1708 bereitstellen, die für die Kommunikation über ein Netzwerk konfigurierbar sind. Die drahtlose(n) Schnittstelle(n) 1707 kann/können einen oder mehrere drahtlose Sender, Empfänger und/oder Transceiver enthalten, wie z.B. einen Bluetooth™ Transceiver, einen Zigbee® Transceiver, einen Wi-Fi™ Transceiver, einen WiMAX™ Transceiver und/oder einen anderen ähnlichen Typ von drahtlosen Transceivern, die für die Kommunikation über ein drahtloses Netzwerk konfigurierbar sind. Die drahtgebundene(n) Schnittstelle(n) 1708 kann/können einen oder mehrere drahtgebundene Sender, Empfänger und/oder Transceiver enthalten, wie z.B. einen Ethernet-Transceiver, einen USB-Transceiver (Universal Serial Bus) oder ähnliche Transceiver, die für die Kommunikation über eine verdrillte Zweidrahtleitung, ein Koaxialkabel, eine Glasfaserverbindung oder eine ähnliche physische Verbindung zu einem drahtgebundenen Netzwerk konfigurierbar sind.
-
In einigen Beispielen kann das Netzwerkkommunikationsmodul 1702 so konfiguriert werden, dass es eine zuverlässige, gesicherte und/oder authentifizierte Kommunikation ermöglicht. Für jede hier beschriebene Kommunikation können Informationen zur Gewährleistung zuverlässiger Kommunikationen (z.B. garantierte Nachrichtenzustellung) bereitgestellt werden, möglicherweise als Teil eines Nachrichtenkopf- und/oder -fußteils (z.B. Paket-/Nachrichtensequenzinformationen, Einkapselungs-Kopf- und/oder -Fußzeilen, Größen-/Zeitinformationen und Übertragungsüberprüfungsinformationen wie z.B. zyklische Redundanzprüfung (CRC) und/oder Paritätsprüfungswerte). Die Kommunikation kann mit einem oder mehreren kryptographischen Protokollen und/oder Algorithmen gesichert (z.B. codiert oder verschlüsselt) und/oder entschlüsselt/decodiert werden, wie z.B., aber nicht beschränkt auf, Data Encryption Standard (DES), Advanced Encryption Standard (AES), einen Rivest-Shamir-Adelman (RSA)-Algorithmus, einen Diffie-Hellman-Algorithmus, ein Secure Sockets-Protokoll wie Secure Sockets Layer (SSL) oder Transport Layer Security (TLS) und/oder Digital Signature Algorithm (DSA). Andere kryptographische Protokolle und/oder Algorithmen können ebenfalls oder zusätzlich zu den hier aufgeführten verwendet werden, um die Kommunikation zu sichern (und dann zu entschlüsseln/decodieren).
-
Ein oder mehrere Prozessoren 1703 können einen oder mehrere Allzweckprozessoren und/oder einen oder mehrere Spezialprozessoren (z.B. digitale Signalprozessoren, Grafikverarbeitungseinheiten, anwendungsspezifische integrierte Schaltungen usw.) enthalten. Ein oder mehrere Prozessoren 1703 können so konfiguriert werden, dass sie die computerlesbaren Befehle 1706, die im Datenspeicher 1704 enthalten sind, und/oder andere hier beschriebene Befehle ausführen.
-
Datenspeicher 1704 kann ein oder mehrere computerlesbare Speichermedien enthalten, die von mindestens einem oder mehreren Prozessoren 1703 gelesen und/oder darauf zugegriffen werden können. Das eine oder die mehreren computerlesbaren Speichermedien können flüchtige und/oder nichtflüchtige Speicherkomponenten enthalten, wie z.B. optische, magnetische, organische oder andere Speicher oder Plattenspeicher, die ganz oder teilweise mit mindestens einem von einem oder mehreren Prozessoren 1703 integriert werden können. In einigen Beispielen kann die Datenspeicherung 1704 mit einem einzigen physikalischen Gerät (z.B. einer optischen, magnetischen, organischen oder anderen Speicher- oder Plattenspeichereinheit) realisiert werden, während in anderen Beispielen die Datenspeicherung 1704 mit zwei oder mehr physikalischen Geräten realisiert werden kann.
-
Die Datenspeicherung 1704 kann computerlesbare Anweisungen 1706 und vielleicht zusätzliche Daten enthalten. In einigen Beispielen kann die Datenspeicherung 1704 Speicher enthalten, der erforderlich ist, um zumindest einen Teil der hier beschriebenen Verfahren, Szenarien und Techniken und/oder zumindest einen Teil der Funktionalität der hier beschriebenen Geräte und Netzwerke auszuführen. In einigen Beispielen kann die Datenspeicherung 1704 einen Speicher umfassen, um zumindest einen Teil der Funktionalität der Software-Architektur 100 bereitzustellen. In einigen Beispielen kann die Datenspeicherung 1704 zusätzlich Speicher umfassen, um ein oder mehrere komprimierte Blockgeräte 1730 bereitzustellen.
-
In einigen Beispielen kann das Computergerät 1700 einen oder mehrere Sensoren 1720 enthalten. Die Sensoren 1720 können so konfiguriert werden, dass sie die Bedingungen innerhalb des Computergeräts 1700 und/oder die Bedingungen in einer Umgebung des Computergeräts 1700 messen und Daten über diese Bedingungen liefern. Zum Beispiel können die Sensoren 1720 einen oder mehrere davon enthalten: (i) Sensoren zum Erhalten von Daten über das Computergerät 1700, wie z.B., aber nicht beschränkt auf, ein Thermometer, das die Temperatur des Computergeräts 1700 misst, einen Batteriesensor zum Messen der Leistung einer oder mehrerer Batterien des Stromversorgungssystems 1722 und/oder andere Sensoren, die die Bedingungen des Computergeräts 1700 messen; (ii) einen Identifikationssensor zum Identifizieren anderer Objekte und/oder Geräte, wie z.B., aber nicht beschränkt auf, ein Radio Frequency Identification (RFID)-Lesegerät, einen Näherungssensor, ein eindimensionales Strichcode-Lesegerät, einen zweidimensionalen Strichcode (z.B, Quick-Response (QR)-Code-Lesegerät und ein Laser-Tracker, wobei die Identifikationssensoren so konfiguriert werden können, dass sie Identifikatoren wie RFID-Tags, Strichcodes, QR-Codes und/oder andere Geräte und/oder Objekte, die so konfiguriert sind, dass sie gelesen werden können, lesen und zumindest Identifikationsinformationen liefern; (iii) Sensoren zum Messen von Standorten und/oder Bewegungen des Computergeräts 1700, wie z.B. ein Neigungssensor, ein Gyroskop, ein Beschleunigungsmesser, ein Dopplersensor, ein GPS-Gerät, ein Sonarsensor, ein Radargerät, ein Laser-Verschiebungssensor und ein Kompass; (iv) einen Umgebungssensor, um Daten zu erhalten, die eine Umgebung des Computergeräts 1700 anzeigen, wie z.B., aber nicht beschränkt auf, einen Infrarotsensor, einen optischen Sensor, einen Lichtsensor, eine Kamera, einen Biosensor, einen kapazitiven Sensor, einen Berührungssensor, einen Temperatursensor, einen drahtlosen Sensor, einen Funksensor, einen Bewegungssensor, ein Mikrofon, einen Schallsensor, einen Ultraschallsensor und/oder einen Rauchsensor; und/oder (v) einen Kraftsensor, um eine oder mehrere Kräfte zu messen (e.g. , Trägheitskräfte und/oder G-Kräfte), die um das Computergerät 1700 wirken, wie z. B., aber nicht beschränkt auf einen oder mehrere Sensoren, die Folgendes messen: Kräfte in einer oder mehreren Dimensionen, Drehmoment, Bodenkraft, Reibung und/oder einen Nullmomentpunkt-(ZMP-)Sensor, der ZMPs und/oder Standorte der ZMPs identifiziert. Viele andere Beispiele von Sensoren 1720 sind ebenfalls möglich.
-
Das Stromversorgungssystem 1722 kann eine oder mehrere Batterien 1724 und/oder eine oder mehrere externe Stromversorgungs-Schnittstellen 1726 zur Versorgung des Computergeräts 1700 mit Strom enthalten. Jede Batterie der einen oder mehreren Batterien 1724 kann, wenn sie elektrisch mit dem Computergerät 1700 gekoppelt ist, als Quelle gespeicherter elektrischer Energie für das Computergerät 1700 dienen. Eine oder mehrere Batterien 1724 des Stromversorgungssystems 1722 können so konfiguriert werden, dass sie tragbar sind; z.B. können sie von einer Person, die das Computergerät 1700 mit der einen oder den mehreren Batterien trägt, leicht transportiert werden. Einige oder alle von einer oder mehreren Batterien 1724 können leicht aus dem Computergerät 1700 entnommen werden. In anderen Beispielen können einige oder alle von einer oder mehreren Batterien 1724 intern im Computergerät 1700 enthalten sein, so dass sie nicht ohne weiteres aus dem Computergerät 1700 entnommen werden können. Einige oder alle von einer oder mehreren Batterien 1724 können wiederaufladbar sein; z.B. kann eine wiederaufladbare Batterie über eine verdrahtete Verbindung zwischen der Batterie und einer anderen Stromversorgung aufgeladen werden; z.B. eine oder mehrere Stromversorgungen, die außerhalb des Computergeräts 1700 liegen und über die eine oder mehrere externe Stromversorgungsschnittstellen mit dem Computergerät 1700 verbunden sind. In anderen Beispielen können einige oder alle von einer oder mehreren Batterien 1724 nicht-wiederaufladbare Batterien sein.
-
Eine oder mehrere externe Stromversorgungs-Schnittstellen 1726 des Stromversorgungssystems 1722 können eine oder mehrere verdrahtete Stromversorgungs-Schnittstellen enthalten, wie z.B. ein USB-Kabel und/oder ein Netzkabel, die verdrahtete elektrische Stromverbindungen zu einer oder mehreren Stromversorgungen ermöglichen, die außerhalb des Computergeräts 1700 liegen. Eine oder mehrere externe Stromversorgungs-Schnittstellen 1726 können eine oder mehrere drahtlose Stromversorgungs-Schnittstellen, wie z.B. ein drahtloses Qi-Ladegerät, enthalten, die drahtlose elektrische Stromversorgungs-Verbindungen, wie z.B. über ein drahtloses Qi-Ladegerät, zu einer oder mehreren externen Stromversorgungen ermöglichen. Sobald eine elektrische Stromverbindung zu einer externen Stromquelle über eine oder mehrere externe Stromversorgungsschnittstellen 1726 hergestellt ist, kann das Computergerät 1700 elektrische Energie von der externen Stromquelle über die hergestellte elektrische Stromverbindung beziehen. In einigen Beispielen kann das Stromversorgungssystem 1722 zugehörige Sensoren enthalten; z.B. Batteriesensoren, die mit einer oder mehreren Batterien verbunden sind, elektrische Leistungssensoren.
-
Beispiel Betriebsverfahren
-
18 ist ein Flussdiagramm des Verfahrens 1800, gemäß einigen Beispielausführungsformen. Das Verfahren 1800 kann von einem Computergerät, wie z.B. dem Computergerät 1700, ausgeführt werden. Das Verfahren 1800 kann bei Block 1810 beginnen, wo eine Kernelkomponente eines Betriebssystemkernels, der auf dem Computergerät läuft, eine Kerneloperation ausführen kann, wie sie hier zumindest im Zusammenhang mit 1 und 3-12 besprochen wird. In einigen Beispielen kann das Ausführen der Kerneloperation durch die Kernelkomponente ein Bestimmen eines komponentenbestimmten Wertes unter Verwendung einer Heuristik der Kernelkomponente umfassen; und wobei das Bestimmen der Inferenz auf der Grundlage der operationsbezogenen Informationen ein Bestimmen eines modellbestimmten Wertes auf der Grundlage der operationsbezogenen Informationen umfasst, wie hier zumindest im Zusammenhang mit 1 und 3-12 besprochen.
-
In Block 1820 kann ein maschinelles Lernmodell, das auf dem Computergerät ausgeführt wird, operationsbezogene Informationen in Bezug auf die Kerneloperation erhalten, wie sie hier zumindest im Zusammenhang mit 1-12 diskutiert werden. In einigen Beispielen kann das Empfangen von operationsbezogenen Informationen am maschinellen Lernmodell folgendes umfassen: Empfangen von aufeinanderfolgenden Stapeln operationsbezogener Informationen im maschinellen Lernmodell in Intervallen, die einem festgelegten Zeitquantum entsprechen, wie hier zumindest im Zusammenhang mit 2 besprochen. In einigen dieser Beispiele kann das eingestellte Zeitquantum zwischen ungefähr einhundert Millisekunden und zehn Sekunden liegen, wie hier zumindest im Zusammenhang mit 2 diskutiert wird. In anderen Beispielen kann das Empfangen der operationsbezogenen Informationen folgendes umfassen: Empfangen, am maschinellen Lernmodell, der operationsbezogenen Informationen unter Verwendung einer ersten Datei, die vom Nicht-Kernel-Speicherbereich und vom Kernel-Speicherbereich zugreifbar /zugänglich ist, wie hier zumindest im Kontext von 1 und 4-15 diskutiert wird. In anderen Beispielen kann das Empfangen der operationsbezogenen Informationen im maschinellen Lernmodell das Empfangen der operationsbezogenen Informationen unter Verwendung eines ersten Kernel-Objekts einschließen, auf das vom Nicht-Kernel-Speicherbereich und vom Kernel-Speicherbereich zugegriffen werden kann, wie hier zumindest im Zusammenhang mit 1 besprochen. In anderen Beispielen kann die Bereitstellung der Inferenz auf die Kernelkomponente die Bereitstellung der Inferenz auf die Kernelkomponente unter Verwendung eines zweiten Kernel-Objekts umfassen, auf das vom Nicht-Kernel-Speicherbereich und vom Kernel-Speicherbereich zugegriffen werden kann, wie hier zumindest im Kontext von 1 besprochen.
-
In anderen Beispielen kann das Empfangen der operationsbezogenen Informationen das Empfangen von Prioritätsinformationen umfassen, die sich auf eine Mehrzahl von Prioritäten beziehen, die der Mehrzahl von Computerprozessen zugeordnet sind, wie sie hier zumindest im Zusammenhang mit den 1 und 3-5 diskutiert werden. In anderen Beispielen kann das Empfangen der Prozessinformationen auch das Empfangen von Zeitscheibeninformationen umfassen, die sich auf eine Mehrzahl von Zeitscheibenwerten beziehen, die der Mehrzahl von Computerprozessen zugeordnet sind, wie hier zumindest im Zusammenhang mit 1 und 3-5 besprochen. In anderen Beispielen kann das Empfangen der operationsbezogenen Informationen ein Empfangen von Cache-Prioritätsinformationen umfassen, die sich auf eine Mehrzahl von Prioritäten beziehen, die der Mehrzahl von Cache-Einträgen zugeordnet sind, und auf eine Mehrzahl von Zugriffszeiten, die der Mehrzahl von Cache-Einträgen zugeordnet sind, und wobei eine erste Zugriffszeit der Mehrzahl von Zugriffszeiten einem ersten Cache-Eintrag der Mehrzahl von Cache-Einträgen zugeordnet ist und anzeigt, wann auf den ersten Cache-Eintrag zuletzt zugegriffen wurde, wie hier zumindest im Zusammenhang mit 1, 3, 6 und 7 besprochen.
-
In Block 1830 kann das maschinelle Lernmodell eine Inferenz auf der Grundlage der operationsbezogenen Informationen bestimmen, wie sie hier zumindest im Zusammenhang mit 1-12 diskutiert werden. In einigen Beispielen kann die Inferenz, die auf der operationsbezogenen Information basiert, durch das maschinelle Lernmodell bestimmt werden: Bestimmen aufeinanderfolgender Inferenzen durch das maschinelle Lernmodell in Intervallen, die dem eingestellten Zeitquantum entsprechen, basierend auf einem zuletzt erhaltenen Stapel operationsbezogener Information, wie hier zumindest im Zusammenhang mit 2 diskutiert. In anderen Beispielen erfolgt die Bestimmung der Inferenz durch das maschinelle Lernmodell auf der Grundlage der operationsbezogenen Informationen asynchron mit der Planung der Ausführung der Mehrzahl von Computerprozessen durch den Prozessplaner, wie hier zumindest im Zusammenhang mit 1 und 3-5 diskutiert.
-
In anderen Beispielen kann die Bestimmung der Inferenz auf der Grundlage der operationsbezogenen Informationen auch die Bestimmung der Inferenz auf der Grundlage der Zeitscheibeninformation umfassen, wobei die Inferenz einen modellbestimmten Zeitscheibenwert umfasst, der der Mehrzahl von Computerprozessen zugeordnet ist, wie hier zumindest im Zusammenhang mit 1 und 3-5 diskutiert. In anderen Beispielen kann das Bestimmen der Inferenz auf der Grundlage der operationsbezogenen Information ein Bestimmen der Inferenz auf der Grundlage der Cache-Prioritätsinformation und der Mehrzahl von Zugriffszeiten umfassen, und wobei der modellbestimmte Cache-Management-Wert einen modellbestimmten Cache-Prioritätswert umfassen kann, wie hier zumindest im Zusammenhang mit 1, 3, 6 und 7 diskutiert. In anderen Beispielen erfolgt die Inferenz durch das maschinelle Lernmodell auf der Grundlage der operationsbezogenen Informationen asynchron mit dem Planen der Verwendung des einen oder der mehreren Eingabe-Ausgabe-Geräte durch den einen oder die mehreren Prozesse auf der Grundlage der Modell-Eingabe-bezogenen Charakterisierung unter Verwendung des Eingabe/Ausgabe-Managers, wie hier zumindest im Zusammenhang mit 1, 3, 8 und 9 diskutiert. In anderen Beispielen kann die Inferenz, die auf den operationsbezogenen Informationen basiert, durch das maschinelle Lernmodell bestimmt werden, wobei das maschinelle Lernmodell die Inferenz auf der Grundlage der operationsbezogenen Informationen asynchron mit dem Speichermanager bestimmt, der bestimmt, ob die erste Speicherseite auf der Grundlage der Kompressionsangabe komprimiert werden soll, wie hier zumindest im Zusammenhang mit 1, 3 und 10 diskutiert.
-
In anderen Beispielen erfolgt die Bestimmung durch das maschinelle Lernmodell die Inferenz auf der Grundlage der operationsbezogenen Informationen asynchron mit der Bestimmung der Ressourcenbeschränkungen, die sich auf den mindestens einen Ressourcenbehälter des einen oder der mehreren Ressourcenbehälter beziehen, wie hier zumindest im Zusammenhang mit den 1, 3, 11 und 12 diskutiert. In anderen Beispielen erfolgt die Bestimmung der Inferenz durch das maschinelle Lernmodell auf der Grundlage der operationsbezogenen Informationen asynchron mit der Einleitung der Bestimmung, ob die erste Schleife eine Hot-Loop-Schleife ist, die auf der Hot-Loop-Anzeige unter Verwendung des Compilers basiert, wie hier zumindest im Zusammenhang mit den 1, 3, 14 und 15 diskutiert. In anderen Beispielen kann das maschinelle Lernmodell ein neuronales Netz enthalten, dann kann die Bestimmung der Inferenz, die auf der operationsbezogenen Information basiert, die Bestimmung der Inferenz enthalten, die auf der operationsbezogenen Information unter Verwendung des neuronalen Netzes basiert, wie hier zumindest im Zusammenhang mit 2 diskutiert.
-
In Block 1840 kann die Inferenz der Kernelkomponente bereitgestellt werden, wie hier zumindest im Zusammenhang mit 1-12 diskutiert wird. In einigen Beispielen kann die Bereitstellung der Inferenz an die Kernelkomponente folgendes umfassen: Speichern einer zuletzt bestimmten der aufeinanderfolgenden Inferenzen an mindestens einer Speicherstelle des Computergeräts, auf die die Kernelkomponente zugreifen kann, wie hier zumindest im Zusammenhang mit 2 besprochen. In einigen dieser Beispiele kann das Speichern der zuletzt bestimmten letzten der aufeinanderfolgenden Inferenzen an mindestens einer Speicherstelle des Computergeräts folgendes umfassen: das Überschreiben mindestens einer zuvor bestimmten der aufeinanderfolgenden Inferenzen an der mindestens einen Speicherstelle, wie hier zumindest im Zusammenhang mit 2 diskutiert. In anderen Beispielen kann die Bereitstellung der Inferenz für die Kernelkomponente folgendes umfassen: die Bereitstellung der Inferenz für die Kernelkomponente unter Verwendung einer zweiten Datei, auf die vom Nicht-Kernel-Speicherbereich und vom Kernel-Speicherbereich aus zugegriffen werden kann, wie hier zumindest im Kontext von 1 und 4-15 diskutiert.
-
In Block 1850 kann die Kernelkomponente die Leistung der Kerneloperation auf der Grundlage der Inferenz anpassen, wie hier zumindest im Zusammenhang mit 1 und 3-12 diskutiert. In einigen Beispielen kann die Anpassung der Leistung der Kerneloperation durch die Kernelkomponente auf der Grundlage des modellbestimmten Wertes umfassen: Bestimmen eines tatsächlichen Wertes auf der Grundlage des komponentenbestimmten Wertes und des modellbestimmten Wertes; und die Durchführung der Kerneloperation durch die Kernelkomponente auf der Grundlage des tatsächlichen Wertes, wie hier zumindest im Zusammenhang mit 1 und 3-12 erörtert. In einigen dieser Beispiele kann die Berechnung der Linearkombination aus dem komponentenbestimmten Wert und dem modellbestimmten Wert Folgendes umfassen: Berechnen eines oder mehrerer Gewichte für die Linearkombination aus dem komponentenbestimmten Wert und dem modellbestimmten Wert unter Verwendung des maschinellen Lernmodells, wie hier zumindest im Zusammenhang mit den 3-5, 7 und 12 diskutiert. Insbesondere kann bei diesen Beispielen die Berechnung eines oder mehrerer Gewichte für die Linearkombination aus dem komponentenbestimmten Wert und dem modellbestimmten Wert unter Verwendung des maschinellen Lernmodells die Berechnung eines komponentenbezogenen Gewichts des einen oder der mehreren Gewichte für die Linearkombination unter Verwendung des maschinellen Lernmodells umfassen, wobei das komponentenbezogene Gewicht dem komponentenbestimmten Wert zugeordnet wird; dann kann das Berechnen der Linearkombination aus dem komponentenbestimmten Wert und dem modellbestimmten Wert ein Berechnen einer Linearkombination aus dem modellbestimmten Wert, dem komponentenbezogenen Gewicht und dem komponentenbestimmten Wert umfassen, wie sie hier zumindest im Zusammenhang mit FIGS diskutiert wird. 3-5, 7 und 12.
-
In anderen Beispielen können die operationsbezogenen Informationen Prozessinformationen für eine Mehrzahl von Computerprozessen enthalten, die auf dem Computergerät ausgeführt werden; die Inferenz kann einen modellbestimmten Prioritätswert für die Planung der Ausführung der Mehrzahl von Computerprozessen enthalten; und die Kernelkomponente des Betriebssystemkerns kann einen Prozessplaner enthalten; dann kann die Anpassung der Leistung des Kernelbetriebs durch die Kernelkomponente auf der Grundlage der Inferenz die Planung der Ausführung der Mehrzahl von Computerprozessen durch den Prozessplaner auf der Grundlage des modellbestimmten Prioritätswerts unter Verwendung des Prozessplaners enthalten, wie hier zumindest im Zusammenhang mit den 1 und 3-5 diskutiert. In einigen dieser Beispiele kann die (zeitliche) Planung der Ausführung der Mehrzahl von Computerprozessen eine zeitliche Planung der Ausführung der Mehrzahl von Computerprozessen auf der Grundlage des modellbestimmten Prioritätswertes umfassen, wie hier zumindest im Zusammenhang mit 1 und 3-5 diskutiert. Insbesondere bei diesen Beispielen kann die Planung der Ausführung der Mehrzahl von Computerprozessen auf der Grundlage des modellbestimmten Prioritätswertes folgendes umfassen: das Bestimmen eines heuristisch bestimmten Prioritätswertes, der der Mehrzahl von Computerprozessen zugeordnet ist, unter Verwendung einer Prioritätsheuristik, die vom Prozessplaner ausgeführt wird; das Bestimmen eines tatsächlichen Prioritätswertes, der der Mehrzahl von Computerprozessen zugeordnet ist, auf der Grundlage des modellbestimmten Prioritätswertes und des heuristisch bestimmten Prioritätswertes; und die Planung der Ausführung der Mehrzahl von Computerprozessen auf der Grundlage des tatsächlichen Prioritätswertes, wie hier zumindest im Zusammenhang mit den 1 und 3-5 erörtert. In anderen speziellen dieser Beispiele kann die Bestimmung des tatsächlichen Prioritätswertes, der der Mehrzahl von Computerprozessen zugeordnet ist, auf der Grundlage des modellbestimmten Prioritätswertes und des heuristisch bestimmten Prioritätswertes umfassen: Berechnen einer mathematischen Kombination des modellbestimmten Prioritätswertes und des heuristisch bestimmten Prioritätswertes, wie hier zumindest im Zusammenhang mit 3-5 erörtert. In anderen speziellen dieser Beispiele kann die mathematische Kombination eine Linearkombination des modellbestimmten Prioritätswertes und des heuristisch bestimmten Prioritätswertes umfassen, und wobei das Berechnen der mathematischen Kombination des modellbestimmten Prioritätswertes und des heuristisch bestimmten Prioritätswertes das Berechnen einer oder mehrerer Gewichte für die Linearkombination des modellbestimmten Prioritätswertes und des heuristisch bestimmten Prioritätswertes umfassen kann, wie hier zumindest im Zusammenhang mit FIGS diskutiert. 3-5. In einigen dieser Beispiele kann das Berechnen eines oder mehrerer Gewichte für die Linearkombination aus dem modellbestimmten Prioritätswert und dem heuristisch bestimmten Prioritätswert ein Berechnen eines einer ersten Heuristik zugeordneten Gewichts des einen oder der mehreren Gewichte für die Linearkombination unter Verwendung des maschinellen Lernmodells umfassen, wobei das der ersten Heuristik zugeordnete Gewicht dem heuristisch bestimmten Prioritätswert zugeordnet wird; dann kann das Berechnen der mathematischen Kombination aus dem modellbestimmten Prioritätswert und dem heuristisch bestimmten Prioritätswert ein Berechnen einer Linearkombination aus dem modellbestimmten Prioritätswert, dem der ersten Heuristik zugeordneten Gewicht und dem heuristisch bestimmten Prioritätswert einschließen, wie hier zumindest im Zusammenhang mit 3-5 diskutiert wird.
-
In weiteren dieser Beispiele kann das Planen der Ausführung der Mehrzahl von Computerprozessen auch ein Planen der Ausführung der Mehrzahl von Computerprozessen auf der Grundlage des modellbestimmten Zeitscheibenwertes umfassen, wie hier zumindest im Zusammenhang mit 1 und 3-5 diskutiert. In speziellen dieser Beispiele kann das Planen der Ausführung der Mehrzahl von Computerprozessen auf der Grundlage des modellbestimmten Zeitscheibenwertes umfassen: Bestimmen eines heuristisch bestimmten Zeitscheibenwertes, der der Mehrzahl von Computerprozessen zugeordnet ist, unter Verwendung einer Zeitscheibenheuristik, die vom Prozessplaner ausgeführt wird; Bestimmen eines tatsächlichen Zeitscheibenwertes, der der Mehrzahl von Computerprozessen zugeordnet ist, auf der Grundlage des modellbestimmten Zeitscheibenwertes und des heuristisch bestimmten Zeitscheibenwertes; und das Planen der Mehrzahl von Computerprozessen auf der Grundlage des tatsächlichen Zeitscheibenwertes, wie hier zumindest im Zusammenhang mit 1 und 3-5 diskutiert. In weiteren besonderen dieser Beispiele kann das Bestimmen des tatsächlichen Zeitscheibenwertes, der der Mehrzahl von Computerprozessen zugeordnet ist, auf der Grundlage des modellbestimmten Zeitscheibenwertes und des heuristisch bestimmten Zeitscheibenwertes folgendes umfassen: Berechnen einer mathematischen Kombination des modellbestimmten Zeitscheibenwertes und des heuristisch bestimmten Zeitscheibenwertes, wie hier zumindest im Zusammenhang mit 3-5 diskutiert. In anderen speziellen dieser Beispiele kann die mathematische Kombination eine Linearkombination des modellbestimmten Zeitscheibenwertes und des heuristisch bestimmten Zeitscheibenwertes umfassen; dann kann die Berechnung der mathematischen Kombination des modellbestimmten Zeitscheibenwertes und des heuristisch bestimmten Zeitscheibenwertes ein Berechnung eines oder mehrerer Gewichte für die Linearkombination des modellbestimmten Zeitscheibenwertes und des heuristisch bestimmten Zeitscheibenwertes umfassen, wie hier zumindest im Zusammenhang mit FIGS diskutiert. 3-5. In einigen dieser Beispiele kann das Berechnen eines oder mehrerer Gewichte für die Linearkombination aus dem modellbestimmten Zeitscheibenwert und dem heuristisch bestimmten Zeitscheibenwert ein Berechnen eines einer zweiten Heuristik zugeordneten Gewichts des einen oder der mehreren Gewichte für die Linearkombination unter Verwendung des maschinellen Lernmodells umfassen, wobei das der zweiten Heuristik zugeordnete Gewicht dem heuristisch bestimmten Zeitscheibenwert zugeordnet wird; dann umfasst das Berechnen der mathematischen Kombination des modellbestimmten Prioritätswerts und des heuristisch bestimmten Prioritätswerts ein Berechnen einer Linearkombination des modellbestimmten Zeitscheibenwerts, des mit der zweiten Heuristik verbundenen Gewichts und des heuristisch bestimmten Zeitscheibenwerts.
-
In weiteren Beispielen können die operationsbezogenen Informationen Cache-Informationen für eine Mehrzahl von Cache-Einträgen, die einem Cache des Computergeräts zugeordnet sind, und Zugriffsinformationen für den Cache umfassen, die Inferenz kann einen modellbestimmten Cache-Verwaltungswert für die Verwaltung der Mehrzahl von Cache-Einträgen enthalten, und die Kernelkomponente des Betriebssystemkerns kann einen Speichermanager enthalten; dann kann das Anpassen der Leistung der Kerneloperation durch die Kernelkomponente auf der Grundlage der Inferenz das Auswählen eines oder mehrerer Cache-Einträge aus der Mehrzahl von Cache-Einträgen zur Speicherung im Cache auf der Grundlage des modellbestimmten Cache-Verwaltungswertes unter Verwendung des Speichermanagers umfassen, wie hier zumindest im Zusammenhang mit 1, 3, 6 und 7 diskutiert. In einigen dieser Beispiele kann die Auswahl eines oder mehrerer Cache-Einträge aus der Mehrzahl der Cache-Einträge zur Speicherung im Cache auf der Grundlage des modellbestimmten Cache-Verwaltungswertes umfassen: Bestimmen eines heuristisch bestimmten Cache-Prioritätswertes, der der Mehrzahl von Cache-Einträgen zugeordnet ist, unter Verwendung einer vom Speichermanager ausgeführten Prioritätsheuristik; Bestimmen eines tatsächlichen Cache-Prioritätswertes, der der Mehrzahl von Cache-Einträgen zugeordnet ist, auf der Grundlage des modellbestimmten Cache-Prioritätswertes und des heuristisch bestimmten Cache-Prioritätswertes; und Auswählen des einen oder der mehreren Cache-Einträge der Mehrzahl von Cache-Einträgen zur Speicherung im Cache auf der Grundlage des tatsächlichen Cache-Prioritätswertes, wie hier zumindest im Zusammenhang mit 1, 3, 6 und 7 diskutiert. Insbesondere bei diesen Beispielen kann die Bestimmung des tatsächlichen Cache-Prioritätswertes, der der Mehrzahl von Cache-Einträgen zugeordnet ist, auf der Grundlage des modellbestimmten Cache-Prioritätswertes und des heuristisch bestimmten Cache-Prioritätswertes folgendes umfassen: Berechnen einer mathematischen Kombination des modellbestimmten Cache-Prioritätswertes und des heuristisch bestimmten Cache-Prioritätswertes, wie hier zumindest im Zusammenhang mit den 1, 3, 6 und 7 diskutiert. In anderen speziellen dieser Beispiele kann die mathematische Kombination eine Linearkombination des modellbestimmten Cache-Prioritätswertes und des heuristisch bestimmten Cache-Prioritätswertes umfassen; dann kann das Berechnen der mathematischen Kombination des modellbestimmten Cache-Prioritätswertes und des heuristisch bestimmten Cache-Prioritätswertes ein Berechnen einer oder mehrerer Gewichte für die Linearkombination des modellbestimmten Cache-Prioritätswertes und des heuristisch bestimmten Cache-Prioritätswertes umfassen, wie hier zumindest im Zusammenhang mit 1, 3, 6 und 7 diskutiert. In anderen speziellen dieser Beispiele kann das Berechnen eines oder mehrerer Gewichte für die Linearkombination des modellbestimmten Cache-Prioritätswerts und des heuristisch bestimmten Cache-Prioritätswerts ein Berechnen eines einer dritten Heuristik zugeordneten Gewichts des einen oder der mehreren Gewichte für die Linearkombination unter Verwendung des maschinellen Lernmodells umfassen, wobei das der dritten Heuristik zugeordnete Gewicht dem heuristisch bestimmten Cache-Prioritätswert zugeordnet wird; dann kann das Berechnen der mathematischen Kombination aus dem modellbestimmten Prioritätswert und dem heuristisch bestimmten Prioritätswert ein Berechnen einer Linearkombination aus dem modellbestimmten Cache-Prioritätswert, dem der dritten Heuristik zugeordneten Gewicht und dem heuristisch bestimmten Cache-Prioritätswert umfassen, wie hier zumindest im Zusammenhang mit 1, 3, 6 und 7 diskutiert. In weiteren besonderen dieser Beispiele kann die Auswahl eines oder mehrerer Cache-Einträge aus der Mehrzahl von Cache-Einträgen zur Speicherung im Cache auf der Grundlage des modellbestimmten Cache-Management-Wertes die Auswahl eines Cache-Eintrags umfassen, der im Cache auf der Grundlage des modellbestimmten Cache-Management-Wertes ersetzt werden soll, wie hier zumindest im Zusammenhang mit den 1, 3, 6 und 7 diskutiert.
-
In weiteren Beispielen können die operationsbezogenen Informationen Speicheranforderungsinformationen für Speicheranforderungen in Bezug auf die Datenspeicherung des Computergeräts umfassen, wobei die Inferenz einen Hinweis zur Verwaltung der Datenspeicherung umfassen kann; und wobei die Kernelkomponente des Betriebssystemkerns einen Speichermanager umfassen kann; dann kann die Anpassung der Leistung des Kernelbetriebs durch die Kernelkomponente auf der Grundlage der Inferenz die Verwaltung der Datenspeicherung auf der Grundlage des Hinweises zur Verwaltung der Datenspeicherung unter Verwendung des Speichermanagers umfassen, wie hier zumindest im Zusammenhang mit den 1, 3, 6, 7 und 10 diskutiert. In einigen dieser Beispiele kann zumindest ein Teil der Datenspeicherung als Paare von Speicherblöcken organisiert werden, wobei beide Speicherblöcke eines Paares von Speicherblöcken die gleiche Größe haben können, wie hier zumindest im Zusammenhang mit den 1, 3 und 6 diskutiert wird. Insbesondere von diesen Beispielen können die Paare von Speicherblöcken ein erstes Paar von Speicherblöcken umfassen, und die Angabe zur Verwaltung der Datenspeicherung kann mindestens eine der folgenden Angaben enthalten: eine Angabe, das erste Paar von Speicherblöcken zu einem Speicherblock zusammenzufassen, und eine Angabe, einen Speicherblock des ersten Paares von Speicherblöcken in zwei oder mehr Speicherblöcke aufzuteilen, wie hier zumindest im Zusammenhang mit den 1, 3 und 6 besprochen. In einem anderen dieser Beispiele kann zumindest ein Teil der Datenspeicherung als Speicherplatten organisiert werden, wobei eine Speicherplatte so konfiguriert werden kann, dass sie eine Mehrzahl von Kopien einer vorbestimmten Datenstruktur speichert, wie hier zumindest im Zusammenhang mit den 1, 3 und 6 besprochen. In speziellen dieser Beispiele können die Speicherplatten eine erste Speicherplatte umfassen, wobei die Angabe zur Verwaltung der Datenspeicherung mindestens eine der folgenden Angaben umfassen kann: eine Angabe zur Zuweisung (Allokation) einer Speicherplatte der Speicherplatten, eine Angabe zur Freigabe einer Speicherplatte der Speicherplatten und eine Angabe zur Größenänderung einer Speicherplatte der Speicherplatten, wie hier zumindest im Zusammenhang mit den 1, 3 und 6 diskutiert.
-
In anderen Beispielen können die operationsbezogenen Informationen Eingabe-Ausgabe-Informationen für die Verwendung eines oder mehrerer Eingabe-Ausgabe-Geräte des Computergeräts zur Durchführung der Eingabe und/oder Ausgabe durch einen oder mehrere Prozesse, die auf dem Computergerät laufen, umfassen, die Inferenz kann eine modellbezogene Charakterisierung des einen oder der mehreren Prozesse, die auf dem Computergerät laufen, umfassen; und die Kernelkomponente des Betriebssystemkerns kann einen Eingabe/Ausgabe-Manager umfassen; dann kann die Anpassung der Leistung der Kerneloperation durch die Kernelkomponente auf der Grundlage der Inferenz die Planung der Verwendung des einen oder der mehreren Eingabe/Ausgabe-Geräte durch einen oder mehrere Prozesse auf der Grundlage der Modell-Eingabe/Ausgabe-bezogenen Charakterisierung unter Verwendung des Eingabe/Ausgabe-Managers umfassen, wie hier zumindest im Zusammenhang mit 1, 3, 8 und 9 diskutiert. In speziellen dieser Beispiele kann die Modell-Eingabe-Ausgabe-bezogene Charakterisierung mindestens eines der folgenden umfassen: eine weiche Echtzeit-Charakterisierung eines Prozesses; eine interaktive Charakterisierung eines Prozesses; und eine Basislinien-Charakterisierung eines Prozesses, wie hier zumindest im Zusammenhang mit 1, 3, 8 und 9 diskutiert. In anderen speziellen dieser Beispiele kann die zeitliche Planung der Verwendung des einen oder der mehreren Eingabe-Ausgabe-Geräte durch den einen oder die mehreren Prozesse auf der Grundlage der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung folgendes umfassen: die Zuweisung einer relativ hohen Priorität für die Verwendung des einen oder der mehreren Eingabe-Ausgabe-Geräte an einen Prozess mit einer weichen Echtzeit-Charakterisierung, wie sie hier zumindest im Zusammenhang mit 1, 3, 8 und 9 diskutiert wird. In anderen speziellen dieser Beispiele kann das zeitliche Planen der Verwendung des einen oder der mehreren Ein-/Ausgabegeräte durch den einen oder die mehreren Prozesse auf der Grundlage der Modell-, Eingabe- und ausfuhrbezogenen Charakterisierung folgendes umfassen: Zuweisung einer relativ hohen Priorität für die Verwendung des einen oder der mehreren Ein-/Ausgabegeräte an einen Prozess mit einer interaktiven Charakterisierung, wie sie hier zumindest im Zusammenhang mit 1, 3, 8 und 9 diskutiert wird. In weiteren besonderen dieser Beispiele kann die Planung der Verwendung des einen oder der mehreren Eingabe-/Ausgabegeräte durch den einen oder die mehreren Prozesse, die auf der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung basieren, folgendes umfassen: die Zuweisung einer relativ niedrigen Priorität für die Verwendung des einen oder der mehreren Eingabe-/Ausgabegeräte an einen Prozess mit einer Basischarakterisierung, wie hier zumindest im Zusammenhang mit 1, 3, 8 und 9 diskutiert wird. In weiteren speziellen dieser Beispiele kann die Modell-Eingabe-Ausgabe-bezogene Charakterisierung einen Übereinstimmungsindikator umfassen; dann kann das Planen der Verwendung des einen oder der mehreren Eingabe-Ausgabe-Geräte durch den einen oder die mehreren Prozesse auf der Grundlage der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung einbezogen werden: Bestimmen, ob der Übereinstimmungsindikator der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung eine Übereinstimmung zwischen dem maschinellen Lernmodell und dem Eingabe/Ausgabe-Manager anzeigt; und nach der Bestimmung, dass der Übereinstimmungsindikator der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung eine Übereinstimmung zwischen dem maschinellen Lernmodell und dem Eingabe/Ausgabe-Manager anzeigt, durch den Eingabe/Ausgabe-Manager: Verwenden einer Heuristik zur Bestimmung einer heuristischen Eingabe-Ausgabe-bezogenen Charakterisierung eines ersten Prozesses, der mit der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung verbunden ist, und Planen der Verwendung der einen oder mehreren Eingabe-Ausgabe-Geräte durch den ersten Prozess auf der Grundlage der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung und der heuristischen Eingabe-Ausgabe-bezogenen Charakterisierung, wie hier zumindest im Zusammenhang mit 1, 3, 8 und 9 diskutiert. In anderen speziellen dieser Beispiele kann die Modell-Eingabe-Ausgabe-bezogene Charakterisierung einen Übereinstimmungsindikator enthalten; dann kann das Planen der Verwendung des einen oder der mehreren Eingabe-Ausgabe-Geräte durch den einen oder die mehreren Prozesse auf der Grundlage der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung umfassen: Bestimmen, ob der Übereinstimmungsindikator der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung keine Übereinstimmung zwischen dem maschinellen Lernmodell und dem Eingabe/Ausgabe-Manager anzeigt; und nach der Bestimmung, dass der Übereinstimmungsindikator der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung keine Übereinstimmung zwischen dem maschinellen Lernmodell und dem Eingabe/Ausgabe-Manager anzeigt, durch Eingabe/Ausgabe-Manager: Verzichten auf die Verwendung einer Heuristik zur Charakterisierung eines ersten Prozesses, der mit der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung verbunden ist, und Planen der Verwendung der einen oder mehreren Eingabe-Ausgabe-Geräte durch den ersten Prozess auf der Grundlage der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung, wie hier zumindest im Zusammenhang mit 1, 3, 8 und 9 diskutiert.
-
In anderen Beispielen können die operationsbezogenen Informationen Auslagerungs- bzw. Paginginformationen für eine oder mehrere Speicherseiten umfassen, auf die ein oder mehrere Prozesse zugreifen können, die auf dem Computergerät laufen, jede der einen oder mehreren Speicherseiten kann entweder komprimiert oder dekomprimiert sein, die Inferenz kann eine Komprimierungsangabe enthalten, die mindestens einer ersten Speicherseite der einen oder mehreren Speicherseiten zugeordnet ist; und die Kernelkomponente des Betriebssystemkernels kann einen Speichermanager umfassen; dann kann die Anpassung der Leistung des Kernelbetriebs durch die Kernelkomponente auf der Grundlage der Inferenz umfassen: Bestimmen, ob die erste Speicherseite komprimiert werden soll, basierend auf der Komprimierungsangabe unter Verwendung des Speichermanagers, und nach der Bestimmung, dass die erste Speicherseite komprimiert werden soll, Komprimieren der ersten Speicherseite unter Verwendung des Speichermanagers, wie hier zumindest im Zusammenhang mit 1, 3 und 10 diskutiert. In einigen dieser Beispiele kann das Anpassen der Leistung der Kerneloperation durch die Kernelkomponente auf der Grundlage der Inferenz ferner folgendes umfassen: Bestimmen, ob die erste Speicherseite auf der Grundlage der Komprimierungsangabe unter Verwendung des Speichermanagers dekomprimiert werden soll, und nach der Bestimmung, die erste Speicherseite zu dekomprimieren, Dekomprimieren der ersten Speicherseite unter Verwendung des Speichermanagers, wie hier zumindest im Zusammenhang mit 1, 3 und 10 diskutiert. In einem anderen dieser Beispiele wird zumindest die erste Speicherseite auf einem komprimiertem Blockgerät gespeichert, wie hier zumindest im Zusammenhang mit 1, 3 und 10 besprochen.
-
In weiteren Beispielen können die operationsbezogenen Informationen Informationen über die Ressourcenzuweisung in Bezug auf einen oder mehrere Ressourcenbehälter umfassen, die einer oder mehreren Softwareanwendungen zugeordnet sind, die auf dem Computergerät ausführbar sind; die Inferenz kann einen Hinweis auf Ressourcenbeschränkungen in Bezug auf mindestens einen Ressourcenbehälter des einen oder der mehreren Ressourcenbehälter umfassen, und die Kernelkomponente des Betriebssystemkerns kann einen Systemressourcenmanager umfassen; dann kann die Anpassung der Leistung der Kerneloperation durch die Kernelkomponente auf der Grundlage der Inferenz ein Bestimmen von Ressourcenbeschränkungen in Bezug auf den mindestens einen Ressourcenbehälter des einen oder der mehreren Ressourcenbehälter auf der Grundlage der Angabe von Ressourcenbeschränkungen unter Verwendung des System-Ressourcenmanagers umfassen, wie hier zumindest im Zusammenhang mit 1, 3, 11 und 12 diskutiert. In einigen dieser Beispiele können der eine oder die mehreren Ressourcenbehälter umfassen: einen ersten Ressourcenbehälter, der sich auf erste Ressourcenbeschränkungen bezieht; einen zweiten Ressourcenbehälter mit zweiten Ressourcenbeschränkungen, die größer als die ersten Ressourcenbeschränkungen sind; einen dritten Ressourcenbehälter mit dritten Ressourcenbeschränkungen, die größer als die zweiten Ressourcenbeschränkungen sind; einen vierten Ressourcenbehälter mit vierten Ressourcenbeschränkungen, die größer als die dritten Ressourcenbeschränkungen sind; und einen fünften Ressourcenbehälter mit fünften Ressourcenbeschränkungen, die größer als die vierten Ressourcenbeschränkungen sind, wie hier zumindest im Zusammenhang mit den 1, 3, 11 und 12 diskutiert. In anderen dieser Beispiele kann die Bestimmung der Ressourcenbeschränkungen, die sich auf den mindestens einen Ressourcenbehälter des einen oder der mehreren Ressourcenbehälter beziehen, auf der Grundlage der Angabe von Ressourcenbeschränkungen erfolgen: Bestimmen der heuristisch bestimmten Behälterressourcenbeschränkungen, die sich auf den mindestens einen Ressourcenbehälter beziehen, unter Verwendung einer Behälter-Inhalts-Heuristik des Systemressourcenmanagers; Bestimmen der tatsächlichen Behälterressourcenbeschränkungen, die sich auf den mindestens einen Ressourcenbehälter beziehen, auf der Grundlage der Angabe von Ressourcenbeschränkungen und der heuristisch bestimmten Behälterressourcenbeschränkungen; und das Bestimmen der Ressourcenbeschränkungen, die sich auf den mindestens einen Ressourcenbehälter beziehen, auf der Grundlage der tatsächlichen Behälterressourcenbeschränkungen, wie sie hier zumindest im Zusammenhang mit 1, 3, 11 und 12 diskutiert werden. In weiteren dieser Beispiele können die operationsbezogenen Informationen ferner Informationen über die Ressourcenzuweisung in Bezug auf den einen oder die mehreren mit der einen oder den mehreren Softwareanwendungen verbundenen Ressourcenbehälter(en) umfassen, und die Inferenz kann ferner eine Angabe über die Zuweisung eines Ressourcenbehälters umfassen, die eine erste Softwareanwendung der einen oder der mehreren Softwareanwendungen einem ersten Ressourcenbehälter des einen oder der mehreren Ressourcenbehälter zuordnet; wobei dann die Anpassung der Leistung des Kernelbetriebs durch die Kernelkomponente auf der Grundlage der Inferenz ferner die Zuweisung der ersten Softwareanwendung an den ersten Ressourcenbehälter auf der Grundlage der Ressourcenbehälterzuweisungsangabe unter Verwendung des Systemressourcenmanagers umfassen kann, wie hier zumindest im Zusammenhang mit 1, 3, 11 und 12 diskutiert. In speziellen dieser Beispiele kann die Zuweisung der ersten Softwareanwendung an den ersten Ressourcenbehälter auf der Grundlage der Ressourcenbehälterzuweisungsangabe die Begrenzung der Ressourcenverwendung durch die erste Softwareanwendung auf der Grundlage einer oder mehrerer Ressourcenbeschränkungen umfassen, die dem ersten Ressourcenbehälter unter Verwendung des Systemressourcenmanagers zugeordnet sind, wie hier zumindest im Zusammenhang mit den 1, 3, 11 und 12 diskutiert. In einigen Beispielen kann das Verfahren 1800 ferner folgendes umfassen: das wiederholte Sammeln der aufeinanderfolgenden Stapel operationsbezogener Informationen in den Intervallen, die dem eingestellten Zeitquantum entsprechen; und die Bereitstellung der gesammelten Stapel operationsbezogener Informationen an das maschinenlernende Modell in den Intervallen, die dem eingestellten Zeitquantum entsprechen, wie hier zumindest im Zusammenhang mit 2 besprochen.
-
In weiteren Beispielen kann das maschinelle Lernmodell in einem Nicht-Kernel-Speicherbereich des Computergeräts resident sein; dann kann Verfahren 1800 ferner umfassen: Ausführen des maschinellen Lernmodells im Nicht-Kernel-Speicherbereich, wie hier zumindest im Zusammenhang mit 1 und 4-15 diskutiert. In einigen dieser Beispiele kann die Ausführung des maschinellen Lernmodells im Nicht-Kernel-Speicherbereich des Computergeräts die Ausführung eines Inferenz-Dämons im Nicht-Kernel-Speicherbereich umfassen, und wobei der Inferenzdämon das maschinelle Lernmodell umfassen kann, wie es hier zumindest im Zusammenhang mit den 1 und 4-15 diskutiert wird. In einem anderen dieser Beispiele kann sich der Betriebssystemkernel in einem Kernel-Speicherbereich des Computergeräts befinden, der sich vom Nicht-Kernel-Speicherbereich unterscheidet; dann kann das Verfahren 1800 ferner folgendes umfassen: Ausführen der Kernelkomponente im Kernel-Speicherbereich, wie hier zumindest im Zusammenhang mit den 1 und 4-15 diskutiert.
-
In weiteren Beispielen kann das Verfahren 1800 ferner Folgendes umfassen: Empfangen von anwendungsbezogenen Informationen für eine auf dem Computergerät ausgeführte Softwareanwendung am maschinellen Lernmodell; Bestimmen einer anwendungsbezogenen Inferenz auf der Grundlage der anwendungsbezogenen Informationen durch das maschinelle Lernmodell; Bereitstellen der anwendungsbezogenen Inferenz für die Softwareanwendung; und Anpassen der Leistung der Softwareanwendung auf der Grundlage der anwendungsbezogenen Inferenz, wie hier zumindest im Zusammenhang mit den 1, 3 und 13-15 diskutiert. In einigen dieser Beispiele kann die Softwareanwendung eine Datenbankanwendung umfassen, die anwendungsbezogene Information können datenbankbezogene Informationen für Prozesse umfassen, die auf dem Computergerät ausgeführt werden, sowie für die Verwendung einer mit der Datenbankanwendung verbundenen Datenbank, und die anwendungsbezogene Inferenz kann eine Checkpointangabe umfassen, die sich auf das Unterziehen einer einer Datenbankanwendung zugeordnetem Datenbank einem Checkpointing bezieht; dann kann die Anpassung der Leistung der Softwareanwendung auf der Grundlage der anwendungsbezogenen Inferenz folgendes umfassen: Bestimmen, ob die der Datenbankanwendung zugeordnete Datenbank auf der Grundlage der Checkpoint-Angabe unter Verwendung der Datenbankanwendung einem Checkpointing unterzogen werden soll, wie hier zumindest im Zusammenhang mit 1, 3 und 13 diskutiert. In speziellen dieser Beispiele kann das Anpassen der Leistung der Software-Anwendung auf der Grundlage der anwendungsbezogenen Inferenz ferner folgendes umfassen: Nach dem Bestimmen, die der Datenbank-Anwendung zugeordnete Datenbank auf der Grundlage der Checkpoint-Angabe einem Checkpointing zu unterziehen, kann die Datenbank unter Verwendung der Datenbank-Anwendung einem Checkpointing unterzogen werden, wie hier zumindest im Zusammenhang mit 1, 3 und 13 diskutiert. In anderen speziellen dieser Beispiele kann die Anpassung der Leistung der Softwareanwendung auf der Grundlage der anwendungsbezogenen Inferenz ferner Folgendes umfassen: Nach dem Bestimmen, die der Datenbank-Anwendung zugeordnete Datenbank auf der Grundlage der Checkpointangabe nicht einem Checkpointing zu unterziehen, Verzichten auf ein Checkpointing der Datenbank unter Verwendung der Datenbankanwendung, wie hier zumindest im Zusammenhang mit 1, 3 und 13 diskutiert.
-
In weiteren dieser Beispiele kann die Software-Anwendung eine Audio-/Video-Anwendung umfassen, die anwendungsbezogenen Informationen können Audio-Video-bezogene Informationen für Prozesse enthalten, die auf dem Computergerät ausgeführt werden, und für Audio- und/oder Video-Inhalte, die der Audio-/Video-Anwendung zugeordnet sind, und die anwendungsbezogene Inferenz kann eine Pufferangabe enthalten, die sich auf eine Anzahl von Puffern bezieht, die der Audio-/Video-Anwendung zugeordnet sind; dann kann die Anpassung der Leistung der Software-Anwendung auf der Grundlage der anwendungsbezogenen Inferenz umfassen: Bestimmen, ob die Anzahl der der Audio-/Videoanwendung zugewiesenen Puffer auf der Grundlage der Pufferangabe geändert werden soll, wie hier zumindest im Zusammenhang mit 1, 3, 14 und 15 diskutiert. In speziellen dieser Beispiele kann die Anpassung der Leistung der Software-Anwendung auf der Grundlage der anwendungsbezogenen Inferenz ferner folgendes umfassen: Nach dem Bestimmen, die Anzahl der der Audio-/Video-Anwendung zugewiesenen Puffer auf der Grundlage der Pufferangabe zu ändern, Anfordern, durch die Audio-/Video-Anwendung, der Zuweisung eines oder mehrerer zusätzlicher Puffer, wie hier zumindest im Zusammenhang mit 1, 3, 14 und 15 diskutiert. In anderen speziellen dieser Beispiele kann die Anpassung der Leistung der Software-Anwendung auf der Grundlage der anwendungsbezogenen Inferenz ferner folgendes umfassen: Nach dem Bestimmen, die Anzahl der der Audio-/Video-Anwendung zugewiesenen Puffer auf der Grundlage der Pufferangabe zu ändern, Anfordern der Freigabe mindestens eines Puffers aus der Anzahl der der Audio-/Video-Anwendung zugewiesenen Puffer, wie hier zumindest im Zusammenhang mit 1, 3, 14 und 15 diskutiert. In weiteren speziellen dieser Beispiele kann die Anpassung der Leistung der Software-Anwendung auf der Grundlage der anwendungsbezogenen Inferenz umfassen: Nach dem Bestimmen, die Anzahl der der Audio-/Video-Anwendung zugewiesenen Puffer auf der Grundlage der Pufferangabe nicht zu ändern, Beibehalten der Anzahl der der Audio-/Video-Anwendung zugewiesenen Puffer, wie hier zumindest im Zusammenhang mit 1, 3, 14 und 15 diskutiert. In weiteren Beispielen kann das Verfahren 1800 ferner folgendes umfassen: Erzeugen einer Ausgabe des Computergeräts unter Verwendung der Anzahl der der Audio-/Videoanwendung zugewiesenen Puffer, wobei die Ausgabe auf dem Audio- und/oder Videoinhalt basiert, wie hier zumindest im Zusammenhang mit 1, 3, 14 und 15 diskutiert.
-
In weiteren Beispielen kann die Software-Anwendung einen Compiler umfassen, die anwendungsbezogenen Informationen können Compiler-bezogene Informationen für Prozesse umfassen, die auf dem Computergerät ausgeführt werden, sowie für Software-Anweisungen, die dem Compiler zugeordnet sind, und die anwendungsbezogene Inferenz kann eine Hot-Loop-Anzeige umfassen, die sich auf eine erste Schleife der Software-Anweisungen bezieht; dann kann die Anpassung der Leistung der Software-Anwendung auf der Grundlage der anwendungsbezogenen Inferenz umfassen: Bestimmen, ob eine erste Schleife eine Hot-Loop ist, auf der Grundlage der Hot-Loop-Anzeige unter Verwendung des Compilers, wie hier zumindest im Zusammenhang mit 1, 3, 14 und 15 diskutiert. In speziellen dieser Beispiele kann die Anpassung der Leistung der Software-Anwendung auf der Grundlage der anwendungsbezogenen Inferenz ferner umfassen: nach dem Bestimmen, dass die erste Schleife eine Hot-Loop ist, auf der Grundlage der Hot-Loop-Anzeige: Kompilieren der Software-Anweisungen der ersten Schleife und Ausführen der kompilierten Software-Anweisungen der ersten Schleife, wie hier zumindest im Zusammenhang mit 1, 3, 14 und 15 diskutiert. In anderen speziellen dieser Beispiele kann das Anpassen der Leistung der Software-Anwendung auf der Grundlage der anwendungsbezogenen Inferenz ferner umfassen: nach dem Bestimmen, dass die erste Schleife aufgrund der Hot-Loop-Anzeige keine Hot-Loop-Schleife ist, Ausführen der Software-Anweisungen der ersten Schleife, wie hier zumindest im Zusammenhang mit 1, 3, 14 und 15 diskutiert.
-
In weiteren Beispielen kann das Verfahren 1800 ferner Folgendes umfassen: Erzeugen einer Ausgabe des Computergeräts auf der Grundlage der Leistung der Kerneloperation durch die Kernelkomponente, wie sie hier zumindest im Zusammenhang mit 4, 9, 13 und 14 diskutiert wird. In einigen dieser Beispiele kann die Ausgabe des Computergeräts eine visuelle Ausgabe umfassen, wie sie hier zumindest im Zusammenhang mit 4, 9, 13 und 14 diskutiert wird. In einem anderen dieser Beispiele kann die Ausgabe des Computergeräts eine Audioausgabe umfassen, wie sie hier zumindest im Zusammenhang mit 4, 9, 13 und 14 diskutiert wird. In einem anderen dieser Beispiele kann die Ausgabe des Computergeräts eine haptische Ausgabe umfassen, wie sie hier zumindest im Zusammenhang mit 4 und 9 diskutiert wird.
-
Zusätzliche Beispielausführungsformen
-
Die folgenden Klauseln werden als weitere Beschreibung der Offenlegung angeboten.
- Klausel 1 - Ein computerimplementiertes Verfahren, umfassend: Durchführen einer Kerneloperation durch eine Kernelkomponente eines Betriebssystemkernels, der auf einem Computergerät läuft; Empfangen von operationsbezogenen Informationen, die sich auf die Kerneloperation beziehen, an einem maschinellen Lernmodell, das auf dem Computergerät läuft; Bestimmen einer Inferenz durch das maschinelle Lernmodell basierend auf den operationsbezogenen Informationen; Bereitstellen der Inferenz an die Kernelkomponente; und Anpassen der Leistung der Kerneloperation durch die Kernelkomponente basierend auf der Inferenz.
- Klausel 2 - Das computerimplementierte Verfahren nach Klausel 1, bei dem die Durchführung der Kerneloperation durch die Kernelkomponente ein Bestimmen eines komponentenbestimmten Wertes unter Verwendung einer Heuristik der Kernelkomponente umfasst; und bei dem das Bestimmung der Inferenz auf der Grundlage der operationsbezogenen Informationen das Bestimmen eines modellbestimmten Wertes auf der Grundlage der operationsbezogenen Informationen umfasst.
- Klausel 3 - Das computerimplementierte Verfahren nach Abschnitt 2, bei dem die Anpassung der Leistung der Kerneloperation durch die Kernelkomponente auf der Grundlage des modellbestimmten Werts umfasst: Bestimmen eines tatsächlichen Werts auf der Grundlage des komponentenbestimmten Werts und des modellbestimmten Werts; und Durchführen der Kerneloperation durch die Kernelkomponente auf der Grundlage des tatsächlichen Werts.
- Klausel 4 - Das computerimplementierte Verfahren nach Klausel 3, bei dem das Bestimmen des tatsächlichen Werts auf der Grundlage des komponentenbestimmten Werts und des modellbestimmten Werts umfasst: Berechnen einer Linearkombination des komponentenbestimmten Werts und des modellbestimmten Werts.
- Klausel 5 - Das computerimplementierte Verfahren nach Klausel 4, bei dem das Berechnen der Linearkombination des komponentenbestimmten Wertes und des modellbestimmten Wertes umfasst: Berechnen eines oder mehrerer Gewichte für die Linearkombination des komponentenbestimmten Wertes und des modellbestimmten Wertes unter Verwendung des maschinellen Lernmodells.
- Klausel 6 - Das computerimplementierte Verfahren nach Abschnitt 5, bei dem das Berechnen eines oder mehrerer Gewichte für die Linearkombination des komponentenbestimmten Werts und des modellbestimmten Werts unter Verwendung des maschinellen Lernmodells das Berechnen eines komponentenbezogenen Gewichts des einen oder der mehreren Gewichte für die Linearkombination unter Verwendung des maschinellen Lernmodells umfasst, wobei das komponentenbezogene Gewicht dem komponentenbestimmten Wert zugeordnet wird; und wobei das Berechnen der Linearkombination des komponentenbestimmten Werts und des modellbestimmten Werts ein Berechnen einer Linearkombination des modellbestimmten Werts, des komponentenzugehörigen Gewichts und des komponentenbestimmten Werts umfasst.
- Klausel 7 - Das computerimplementierte Verfahren nach einer der Klauseln 1-6, bei dem das Empfangen, beim maschinellen Lernmodell, der operationsbezogenen Informationen umfasst: Empfangen, beim maschinellen Lernmodell, von aufeinanderfolgenden Stapeln operationsbezogener Informationen in Intervallen, die einem festgelegten Zeitquantum entsprechen.
- Klausel 8 - Das computerimplementierte Verfahren nach Klausel 7, das ferner Folgendes umfasst: wiederholtes Sammeln der aufeinanderfolgenden Lose von operationsbezogenen Informationen in den Intervallen, die dem eingestellten Zeitquantum entsprechen; und Bereitstellen der gesammelten Stapel von operationsbezogenen Informationen für das maschinelle Lernmodell in den Intervallen, die dem eingestellten Zeitquantum entsprechen.
- Klausel 9 - Das computerimplementierte Verfahren nach Klausel 7 oder 8, bei dem das Bestimmen, durch das maschinelle Lernmodell, der Inferenz auf der Grundlage der operationsbezogenen Informationen umfasst: Bestimmen aufeinanderfolgender Inferenzen durch das maschinelle Lernmodell in Intervallen, die dem eingestellten Zeitquantum entsprechen, auf der Grundlage eines zuletzt empfangenen Stapels von operationsbezogenen Informationen.
- Klausel 10 - Die computerimplementierte Methode nach Klausel 9, bei der die Bereitstellung der Inferenz zur Kernelkomponente Folgendes umfasst: Speichern einer zuletzt bestimmten der aufeinander folgenden Inferenzen in mindestens einer Speicherstelle des Computergeräts, auf die die Kernelkomponente zugreifen kann.
- Klausel 11 - Das computerimplementierte Verfahren nach Klausel 10, bei dem das Speichern der zuletzt bestimmten letzten der aufeinanderfolgenden Inferenzen in der mindestens einen Speicherstelle des Computergeräts Folgendes umfasst: Überschreiben mindestens einer zuvor bestimmten der aufeinanderfolgenden Inferenzen in der mindestens einen Speicherstelle.
- Klausel 12 - Das computerimplementierte Verfahren nach einer der Klauseln 7-11, bei dem das eingestellte Zeitquantum zwischen etwa hundert Millisekunden und zehn Sekunden liegt.
- Klausel 13 - Das computerimplementierte Verfahren nach einer der Klauseln 1-12, bei dem das maschinenlernende Modell in einem Nicht-Kernel-Speicherbereich des Computergeräts resident ist, und bei dem das Verfahren ferner Folgendes umfasst: Ausführen des maschinellen Lernmodells in dem Nicht-Kernel-Speicherbereich.
- Klausel 14 - Das computerimplementierte Verfahren nach Klausel 13, bei dem die Ausführung des maschinellen Lernmodells im Nicht-Kernel-Speicherbereich des Computergeräts die Ausführung eines Inferenz-Dämons im Nicht-Kernel-Speicherbereich einschließt, und bei dem der Inferenz-Dämon das maschinellen Lernmodell umfasst.
- Klausel 15 - Das computerimplementierte Verfahren nach Klausel 13 oder Klausel 14, bei dem der Betriebssystemkernel in einem Kernel-Speicherbereich des Computergeräts resident ist, der sich von dem Nicht-Kernel-Speicherbereich unterscheidet, und bei dem das Verfahren ferner Folgendes umfasst: Ausführen der Kernelkomponente im Kernel-Speicherbereich.
- Klausel 16 - Das computerimplementierte Verfahren nach Klausel 15, bei dem der Empfang der operationsbezogenen Informationen Folgendes umfasst: Empfang der operationsbezogenen Informationen am maschinellen Lernmodell unter Verwendung einer ersten Datei, auf die vom Nicht-Kernel-Speicherbereich und vom Kernel-Speicherbereich aus zugegriffen werden kann.
- Klausel 17 - Das computerimplementierte Verfahren nach Klausel 15 oder Klausel 16, bei dem die Bereitstellung der Inferenz an die Kernelkomponente umfasst: Bereitstellen der Inferenz an die Kernelkomponente unter Verwendung einer zweiten Datei, auf die vom Nicht-Kernel-Speicherbereich und vom Kernel-Speicherbereich aus zugegriffen werden kann.
- Klausel 18 - Das computerimplementierte Verfahren nach einer der Klauseln 15-17, wobei der Empfang der operationsbezogenen Informationen Folgendes umfasst: Empfang der operationsbezogenen Informationen am maschinellen Lernmodell unter Verwendung eines ersten Kernel-Objekts, auf das vom Nicht-Kernel-Speicherbereich und vom Kernel-Speicherbereich aus zugegriffen werden kann.
- Klausel 19 - Das computerimplementierte Verfahren nach einer der Klauseln 15-18, bei dem das Bereitstellen der Inferenz zur Kernelkomponente Folgendes umfasst: Bereitstellen der Inferenz zur Kernelkomponente unter Verwendung eines zweiten Kernel-Objekts, auf das vom Nicht-Kernel-Speicherbereich und vom Kernel-Speicherbereich aus zugegriffen werden kann.
- Klausel 20 - Das computerimplementierte Verfahren nach einer der Klauseln 1-19, wobei die operationsbezogenen Informationen Prozessinformationen für eine Mehrzahl von Computerprozessen enthält, die auf dem Computergerät laufen; wobei die Inferenz einen modellbestimmten Prioritätswert für die Planung der Ausführung der Mehrzahl von Computerprozessen umfasst; wobei die Kernelkomponente des Betriebssystemkerns einen Prozessplaner umfasst; und wobei die Anpassung der Leistung des Kernelbetriebs durch die Kernelkomponente auf der Grundlage der Inferenz die Planung der Ausführung der Mehrzahl von Computerprozessen durch den Prozess-Scheduler auf der Grundlage des modellbestimmten Prioritätswerts unter Verwendung des Prozessplaners enthält.
- Klausel 21 - Das computerimplementierte Verfahren nach Klausel 20, bei dem die Bestimmung der Inferenz auf der Grundlage der operationsbezogenen Informationen durch das maschinelle Lernmodell asynchron zur Planung der Ausführung der Mehrzahl von Computerprozessen durch den Prozessplaner erfolgt.
- Klausel 22 - Das computerimplementierte Verfahren nach Klausel 20 oder Klausel 21, bei dem der Empfang der operationsbezogenen Informationen den Empfang von Prioritätsinformationen einschließt, die sich auf eine Mehrzahl von Prioritäten beziehen, die der Mehrzahl von Computerprozessen zugeordnet sind.
- Klausel 23 - Das computerimplementierte Verfahren nach Klausel 22, bei dem die Planung der Ausführung der Mehrzahl von Computerprozessen die Planung der Ausführung der Mehrzahl von Computerprozessen auf der Grundlage des modellbestimmten Prioritätswertes umfasst.
- Klausel 24 - Das computerimplementierte Verfahren nach Klausel 23, bei dem die Planung der Ausführung der Mehrzahl von Computerprozessen auf der Grundlage des modellbestimmten Prioritätswertes umfasst: Bestimmen eines heuristisch bestimmten Prioritätswertes, der der Mehrzahl von Computerprozessen zugeordnet ist, unter Verwendung einer durch den Prozessplaner ausgeführten Prioritätsheuristik; Bestimmen eines tatsächlichen Prioritätswertes, der der Mehrzahl von Computerprozessen zugeordnet ist, auf der Grundlage des modellbestimmten Prioritätswertes und des heuristisch bestimmten Prioritätswertes; und Planen der Ausführung der Mehrzahl von Computerprozessen auf der Grundlage des tatsächlichen Prioritätswertes.
- Klausel 25 - Das computerimplementierte Verfahren nach Klausel 24, bei dem die Bestimmung des tatsächlichen Prioritätswertes, der der Mehrzahl von Computerprozessen zugeordnet ist, auf der Grundlage des modellbestimmten Prioritätswertes und des heuristisch bestimmten Prioritätswertes umfasst: Berechnen einer mathematischen Kombination des modellbestimmten Prioritätswertes und des heuristisch bestimmten Prioritätswertes.
- Klausel 26 - Das computerimplementierte Verfahren nach Klausel 25, bei dem die mathematische Kombination eine Linearkombination des modellbestimmten Prioritätswertes und des heuristisch bestimmten Prioritätswertes umfasst, und bei dem die Berechnung der mathematischen Kombination des modellbestimmten Prioritätswertes und des heuristisch bestimmten Prioritätswertes ein Berechnen eines oder mehrerer Gewichte für die Linearkombination des modellbestimmten Prioritätswertes und des heuristisch bestimmten Prioritätswertes umfasst.
- Klausel 27 - Das computerimplementierte Verfahren nach Klausel 26, bei dem die Berechnung eines oder mehrerer Gewichte für die Linearkombination des modellbestimmten Prioritätswertes und des heuristisch bestimmten Prioritätswertes die Berechnung eines ersten, mit der Heuristik verbundenen Gewichtes des einen oder der mehreren Gewichte für die Linearkombination unter Verwendung des maschinellen Lernmodells umfasst, wobei das einer ersten Heuristik zugeordnete Gewicht dem heuristisch bestimmten Prioritätswert zugeordnet ist; und wobei die Berechnung der mathematischen Kombination aus dem modellbestimmten Prioritätswert und dem heuristisch bestimmten Prioritätswert die Berechnung einer Linearkombination aus dem modellbestimmten Prioritätswert, dem mit der ersten heuristischen Gewichtung verbundenen Gewicht und dem heuristisch bestimmten Prioritätswert umfasst.
- Klausel 28 - Das computerimplementierte Verfahren einer der Klauseln 20-27, bei dem der Empfang der Prozessinformationen den Empfang von Zeitscheibeninformationen umfasst, die sich auf eine Mehrzahl von Zeitscheibenwerten beziehen, die der Mehrzahl von Computerprozessen zugeordnet sind.
- Klausel 29 - Das computerimplementierte Verfahren nach Klausel 28, bei dem die Bestimmung der Inferenz auf der Grundlage der operationsbezogenen Informationen die Bestimmung der Inferenz auf der Grundlage der Zeitscheibeninformation einschließt, wobei die Inferenz einen modellbestimmten Zeitscheibenwert einschließt, der mit der Mehrzahl von Computerprozessen verknüpft ist.
- Klausel 30 - Das computerimplementierte Verfahren nach Klausel 29, bei dem die Planung der Ausführung der Mehrzahl von Computerprozessen die Planung der Ausführung der Mehrzahl von Computerprozessen auf der Grundlage des modellbestimmten Zeitscheibenwertes umfasst.
- Klausel 31 - Das computerimplementierte Verfahren nach Klausel 30, bei dem das Planen der Ausführung der Mehrzahl von Computerprozessen auf der Grundlage des modellbestimmten Zeitscheibenwertes umfasst: Bestimmen eines heuristisch bestimmten Zeitscheibenwertes, der der Mehrzahl von Computerprozessen zugeordnet ist, unter Verwendung einer Zeitscheibenheuristik, die von dem Prozessplaner ausgeführt wird; Bestimmen eines tatsächlichen Zeitscheibenwertes, der der Mehrzahl von Computerprozessen zugeordnet ist, auf der Grundlage des modellbestimmten Zeitscheibenwertes und des heuristisch bestimmten Zeitscheibenwertes; und Planen der Mehrzahl von Computerprozessen auf der Grundlage des tatsächlichen Zeitscheibenwertes.
- Klausel 32 - Das computerimplementierte Verfahren nach Klausel 31, bei dem die Bestimmung des tatsächlichen Zeitscheibenwertes, der mit der Mehrzahl von Computerprozessen verbunden ist, auf der Grundlage des modellbestimmten Zeitscheibenwertes und des heuristisch bestimmten Zeitscheibenwertes umfasst: Berechnung einer mathematischen Kombination des modellbestimmten Zeitscheibenwertes und des heuristisch bestimmten Zeitscheibenwertes.
- Klausel 33 - Das computerimplementierte Verfahren nach Klausel 32, bei dem die mathematische Kombination eine Linearkombination des modellbestimmten Zeitscheibenwertes und des heuristisch bestimmten Zeitscheibenwertes enthält, und bei dem die Berechnung der mathematischen Kombination des modellbestimmten Zeitscheibenwertes und des heuristisch bestimmten Zeitscheibenwertes die Berechnung eines oder mehrerer Gewichte für die Linearkombination des modellbestimmten Zeitscheibenwertes und des heuristisch bestimmten Zeitscheibenwertes enthält.
- Klausel 34 - Das computerimplementierte Verfahren nach Klausel 33, bei dem die Berechnung eines oder mehrerer Gewichte für die Linearkombination aus dem modellbestimmten Zeitscheibenwert und dem heuristisch bestimmten Zeitscheibenwert die Berechnung eines zweiten heuristisch zugeordneten Gewichts des einen oder der mehreren Gewichte für die Linearkombination unter Verwendung des maschinellen Lernmodells umfasst, wobei das zweite heuristisch zugeordnete Gewicht dem heuristisch bestimmten Zeitscheibenwert zugeordnet wird; und wobei die Berechnung der mathematischen Kombination aus dem modellbestimmten Prioritätswert und dem heuristisch bestimmten Prioritätswert die Berechnung einer Linearkombination aus dem modellbestimmten Zeitscheibenwert, dem mit der zweiten Heuristik verbundenen Gewicht und dem heuristisch bestimmten Zeitscheibenwert einschließt.
- Klausel 35 - Das computerimplementierte Verfahren nach einer der Klauseln 1-34, wobei die operationsbezogenen Informationen Cache-Informationen für eine Mehrzahl von Cache-Einträgen, die mit einem Cache des Computergeräts verbunden sind, und Zugriffsinformationen für den Cache umfassen; wobei die Inferenz einen modellbestimmten Cache-Verwaltungswert für die Verwaltung der Mehrzahl von Cache-Einträgen umfasst; wobei die Kernelkomponente des Betriebssystemkerns einen Speichermanager enthält; und wobei das Anpassen der Leistung des Kernelbetriebs durch die Kernelkomponente auf der Grundlage der Inferenz das Auswählen eines oder mehrerer Cache-Einträge aus der Mehrzahl von Cache-Einträgen zur Speicherung im Cache auf der Grundlage des modellbestimmten Cache-Verwaltungswerts unter Verwendung des Speichermanagers enthält.
- Klausel 36 - Das computerimplementierte Verfahren nach Klausel 35, wobei der Empfang der operation-bezogenen Informationen den Empfang von Cache-Prioritäts-Informationen einschließt, die sich auf eine Mehrzahl von Prioritäten, die mit der Mehrzahl von Cache-Einträgen verbunden sind, und eine Mehrzahl von Zugriffszeiten, die mit der Mehrzahl von Cache-Einträgen verbunden sind, beziehen, und wobei eine erste Zugriffszeit der Mehrzahl von Zugriffszeiten mit einem ersten Cache-Eintrag der Mehrzahl von Cache-Einträgen verbunden ist und anzeigt, wann auf den ersten Cache-Eintrag zuletzt zugegriffen wurde.
- Klausel 37 - Das computerimplementierte Verfahren nach Klausel 36, bei dem die Bestimmung der Inferenz auf der Grundlage der operationsbezogenen Informationen die Bestimmung der Inferenz auf der Grundlage der Cache-Prioritätsinformationen und der Mehrzahl der Zugriffszeiten einschließt, und bei dem der modellbestimmte Cache-Verwaltungswert einen modellbestimmten Cache-Prioritätswert einschließt.
- Klausel 38 - Das computerimplementierte Verfahren nach Klausel 37, wobei die Auswahl eines oder mehrerer Cache-Einträge aus der Mehrzahl der Cache-Einträge zur Speicherung im Cache auf der Grundlage des modellbestimmten Cache-Verwaltungswertes umfasst: Bestimmen eines heuristisch bestimmten Cache-Prioritätswertes, der mit der Mehrzahl von Cache-Einträgen verbunden ist, unter Verwendung einer Prioritätsheuristik, die von dem Speichermanager ausgeführt wird; Bestimmen eines tatsächlichen Cache-Prioritätswertes, der mit der Mehrzahl von Cache-Einträgen verbunden ist, auf der Grundlage des modellbestimmten Cache-Prioritätswertes und des heuristisch bestimmten Cache-Prioritätswertes; und Auswählen des einen oder der mehreren Cache-Einträge der Mehrzahl von Cache-Einträgen zur Speicherung in dem Cache auf der Grundlage des tatsächlichen Cache-Prioritätswertes.
- Klausel 39 - Das computerimplementierte Verfahren nach Klausel 38, bei dem die Bestimmung des tatsächlichen Cache-Prioritätswertes, der mit der Mehrzahl der Cache-Einträge verbunden ist, auf der Grundlage des modellbestimmten Cache-Prioritätswertes und des heuristisch bestimmten Cache-Prioritätswertes umfasst: Berechnung einer mathematischen Kombination des modellbestimmten Cache-Prioritätswertes und des heuristisch bestimmten Cache-Prioritätswertes.
- Klausel 40 - Das computerimplementierte Verfahren nach Klausel 39, bei dem die mathematische Kombination eine Linearkombination des modellbestimmten Cache-Prioritätswertes und des heuristisch bestimmten Cache-Prioritätswertes umfasst, und bei dem die Berechnung der mathematischen Kombination des modellbestimmten Cache-Prioritätswertes und des heuristisch bestimmten Cache-Prioritätswertes die Berechnung einer oder mehrerer Gewichtungen für die Linearkombination des modellbestimmten Cache-Prioritätswertes und des heuristisch bestimmten Cache-Prioritätswertes umfasst.
- Klausel 41 - Das computerimplementierte Verfahren nach Klausel 40, bei dem die Berechnung einer oder mehrerer Gewichte für die Linearkombination aus dem modellbestimmten Cache-Prioritätswert und dem heuristisch bestimmten Cache-Prioritätswert die Berechnung eines dritten heuristisch zugeordneten Gewichts des einen oder der mehreren Gewichte für die Linearkombination unter Verwendung des maschinellen Lernmodells einschließt, wobei das dritte heuristisch zugeordnete Gewicht dem heuristisch bestimmten Cache-Prioritätswert zugeordnet wird; und wobei die Berechnung der mathematischen Kombination aus dem modellbestimmten Prioritätswert und dem heuristisch bestimmten Prioritätswert die Berechnung einer Linearkombination aus dem modellbestimmten Cache-Prioritätswert, dem dritten heuristisch zugeordneten Gewicht und dem heuristisch bestimmten Cache-Prioritätswert einschließt.
- Klausel 42 - Das computerimplementierte Verfahren nach einer der Klauseln 35-41, bei dem die Auswahl eines oder mehrerer Cache-Einträge aus der Mehrzahl von Cache-Einträgen zur Speicherung im Cache auf der Grundlage des modellbestimmten Cache-Verwaltungswertes die Auswahl eines Cache-Eintrags umfasst, der im Cache auf der Grundlage des modellbestimmten Cache-Verwaltungswertes ersetzt werden soll.
- Klausel 43 - Das computerimplementierte Verfahren nach einer der Klauseln 1-42, wobei die operationsbezogenen Informationen Speicheranforderungs-Informationen für Speicheranforderungen in Bezug auf die Datenspeicherung des Computergeräts enthalten, wobei die Inferenz eine Angabe zur Verwaltung der Datenspeicherung enthält; wobei die Kernelkomponente des Betriebssystemkerns einen Speichermanager enthält; und wobei die Anpassung der Leistung der Kerneloperation durch die Kernelkomponente auf der Grundlage der Inferenz die Verwaltung der Datenspeicherung auf der Grundlage der Angabe zur Verwaltung der Datenspeicherung unter Verwendung des Speichermanagers enthält.
- Klausel 44 - Das computerimplementierte Verfahren nach Klausel 43, bei der mindestens ein Teil des Datenspeichers als Paare von Speicherblöcken organisiert ist, und bei der beide Speicherblöcke eines Speicherblockpaares die gleiche Größe haben.
- Klausel 45 - Das computerimplementierte Verfahren nach Klausel 44, bei dem die Paare von Speicherblöcken ein erstes Paar von Speicherblöcken umfassen, und bei dem die Angabe zur Verwaltung der Datenspeicherung mindestens eine der folgenden Angaben umfasst: eine Angabe, das erste Paar von Speicherblöcken zu einem Speicherblock zusammenzufügen, und eine Angabe, einen Speicherblock des ersten Paares von Speicherblöcken in zwei oder mehr Speicherblöcke aufzuteilen.
- Klausel 46 - Das computerimplementierte Verfahren nach einer der Klauseln 43-45, bei dem mindestens ein Teil des Datenspeichers als Speicherplatten organisiert ist und bei dem eine Speicherplatte so konfiguriert ist, dass sie eine Mehrzahl von Kopien einer vorgegebenen Datenstruktur speichert.
- Klausel 47 - Das computerimplementierte Verfahren nach Klausel 46, bei dem die Speicherplatten eine erste Speicherplatte umfassen und bei dem die Angabe zur Verwaltung der Datenspeicherung mindestens eine der folgenden Angaben umfasst: eine Angabe zur Zuweisung einer Speicherplatte der Speicherplatten, eine Angabe zur Freigabe einer Speicherplatte der Speicherplatten und eine Angabe zur Größenänderung einer Speicherplatte der Speicherplatten.
- Klausel 48 - Das computerimplementierte Verfahren nach einer der Klauseln 1-47, wobei die operationsbezogene Information Eingabe-/Ausgabe-Information zur Verwendung eines oder mehrerer Eingabe-/Ausgabegeräte des Computergeräts zur Durchführung der Eingabe und/oder Ausgabe durch einen oder mehrere Prozesse, die auf dem Computergerät ausgeführt werden, enthält, wobei die Inferenz eine modell-, eingabe- und ausgabebezogene Charakterisierung des einen oder der mehreren Prozesse, die auf dem Computergerät ausgeführt werden, enthält; wobei die Kernelkomponente des Betriebssystemkerns einen Eingabe/Ausgabe-Manager enthält; und wobei das Anpassen der Leistung der Kerneloperation durch die Kernelkomponente auf der Grundlage der Inferenz das Planen der Verwendung der einen oder mehreren Eingabe/Ausgabe-Vorrichtungen durch einen oder mehrere Prozesse auf der Grundlage der modell-eingabe/Ausgabe-bezogenen Charakterisierung unter Verwendung des Eingabe/Ausgabe-Managers enthält.
- Klausel 49 - Das computerimplementierte Verfahren nach Klausel 48, bei dem die Bestimmung der Inferenz auf der Grundlage der operationsbezogenen Informationen durch das maschinenlernende Modell asynchron mit der planmäßigen Verwendung des einen oder der mehreren Eingabe-/Ausgabegeräte durch den einen oder die mehreren Prozesse auf der Grundlage der modellinputbezogenen Charakterisierung unter Verwendung des Eingabe/Ausgabe-Managers erfolgt.
- Klausel 50 - Das computerimplementierte Verfahren nach Klausel 48 oder Klausel 49, wobei die Modell-Eingabe-Ausgabe-bezogene Charakterisierung mindestens eines der folgenden Verfahren umfasst: eine weiche Echtzeit-Charakterisierung eines Prozesses; eine interaktive Charakterisierung eines Prozesses; und eine Basislinien-Charakterisierung eines Prozesses.
- Klausel 51 - Das computerimplementierte Verfahren nach Klausel 50, bei dem die Planung der Verwendung eines oder mehrerer Eingabe-Ausgabe-Geräte durch einen oder mehrere Prozesse auf der Grundlage der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung Folgendes umfasst: Zuweisung einer relativ hohen Priorität für die Verwendung des einen oder der mehreren Eingabe-Ausgabe-Geräte an einen Prozess mit einer weichen Echtzeit-Charakterisierung.
- Klausel 52 - Das computerimplementierte Verfahren nach Klausel 50 oder Klausel 51, bei dem die Planung der Verwendung eines oder mehrerer Eingabe-/Ausgabegeräte durch einen oder mehrere Prozesse auf der Grundlage der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung Folgendes umfasst: Zuweisung einer relativ hohen Priorität für die Verwendung eines oder mehrerer Eingabe-/Ausgabegeräte an einen Prozess mit einer interaktiven Charakterisierung.
- Klausel 53 - Das computerimplementierte Verfahren nach einer der Klauseln 50-52, bei dem die Planung der Verwendung des einen oder der mehreren Eingabe-Ausgabe-Geräte durch den einen oder die mehreren Prozesse auf der Grundlage der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung Folgendes umfasst: Zuweisung einer relativ niedrigen Priorität für die Verwendung des einen oder der mehreren Eingabe-Ausgabe-Geräte an einen Prozess mit einer Basislinien -Charakterisi erung.
- Klausel 54 - Das computerimplementierte Verfahren nach einer der Klauseln 48-53, bei dem die Modell-Eingabe-Ausgabe-bezogene Charakterisierung einen Übereinstimmungsindikator umfasst und bei dem das Planen der Verwendung des einen oder der mehreren Eingabe-Ausgabe-Geräte durch den einen oder die mehreren Prozesse, die auf der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung basieren, umfasst: Bestimmen, ob der Übereinstimmungsindikator der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung eine Übereinstimmung zwischen dem maschinellen Lernmodell und dem Eingabe/Ausgabe-Manager anzeigt; und nach dem Bestimmen, dass der Übereinstimmungsindikator der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung eine Übereinstimmung zwischen dem maschinellen Lernmodell und dem Eingabe/Ausgabe-Manager anzeigt, durch den Eingabe/Ausgabe-Manager: Verwenden einer Heuristik zur Bestimmung einer heuristischen Eingabe-Ausgabe-bezogenen Charakterisierung eines ersten Prozesses, der mit der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung verbunden ist, und Planung der Verwendung der einen oder mehreren Eingabe-Ausgabe-Vorrichtungen durch den ersten Prozess auf der Grundlage der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung und der heuristischen Eingabe-Ausgabe-bezogenen Charakterisierung.
- Klausel 55 - Das computerimplementierte Verfahren nach einer der Klauseln 48-54, bei dem die Modell-Eingabe-Ausgabe-bezogene Charakterisierung einen Übereinstimmungsindikator umfasst und bei dem das Planen der Verwendung des einen oder der mehreren Eingabe-Ausgabe-Geräte durch den einen oder die mehreren Prozesse, die auf der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung basieren, umfasst: Bestimmen, ob der Übereinstimmungsindikator der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung keine Übereinstimmung zwischen dem maschinellen Lernmodell und dem Eingabe/Ausgabe-Manager anzeigt; und nach dem Bestimmen, dass der Übereinstimmungsindikator der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung keine Übereinstimmung zwischen dem maschinellen Lernmodell und dem Eingabe/Ausgabe-Manager anzeigt, den Eingabe/Ausgabe-Manager: Verzicht auf die Verwendung einer Heuristik zur Charakterisierung eines ersten Prozesses, der mit der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung verbunden ist, und Planung der Verwendung der einen oder mehreren Eingabe-Ausgabe-Vorrichtungen durch den ersten Prozess auf der Grundlage der Modell-Eingabe-Ausgabe-bezogenen Charakterisierung.
- Klausel 56 - Das computerimplementierte Verfahren nach einer der Klauseln 1-55, bei dem die operationsbezogenen Informationen Auslagerungsinformationen für eine oder mehrere Speicherseiten umfassen, auf die durch einen oder mehrere Prozesse zugegriffen werden kann, die auf dem Computergerät laufen, wobei jede der einen oder mehreren Speicherseiten entweder komprimiert oder dekomprimiert wird; wobei die Inferenz eine Kompressionsangabe umfasst, die mindestens einer ersten Speicherseite der einen oder mehreren Speicherseiten zugeordnet ist; wobei die Kernelkomponente des Betriebssystemkerns einen Speichermanager enthält; und wobei die Anpassung der Leistung der Kerneloperation durch die Kernelkomponente auf der Grundlage der Inferenz enthält: Bestimmen, ob die erste Speicherseite komprimiert werden soll, basierend auf der Komprimierungsanzeige unter Verwendung des Speichermanagers, und nach der Bestimmung, dass die erste Speicherseite komprimiert werden soll, Komprimieren der ersten Speicherseite unter Verwendung des Speichermanagers.
- Klausel 57 - Das computerimplementierte Verfahren nach Klausel 56, bei dem durch das maschinelle Lernmodell die Inferenz auf der Grundlage der operationsbezogenen Informationen bestimmt wird, umfasst: das maschinelle Lernmodell, das die Inferenz auf der Grundlage der operationsbezogenen Informationen asynchron mit dem Speichermanager bestimmt, der auf der Grundlage der Kompressionsangabe bestimmt, ob die erste Speicherseite komprimiert werden soll.
- Klausel 58 - Das computerimplementierte Verfahren nach Klausel 56 oder Klausel 57, bei dem die Anpassung der Leistung der Kerneloperation durch die Kernelkomponente auf der Grundlage der Inferenz weiterhin Folgendes umfasst: Bestimmen, ob die erste Speicherseite auf der Grundlage der Komprimierungsanzeige unter Verwendung des Speichermanagers dekomprimiert werden soll, und nach der Bestimmung, dass die erste Speicherseite dekomprimiert werden soll, Dekomprimieren der ersten Speicherseite unter Verwendung des Speichermanagers.
- Klausel 59 - Das computerimplementierte Verfahren nach einer der Klauseln 56-58, bei der mindestens die erste Speicherseite auf einem komprimierten Blockgerät gespeichert wird.
- Klausel 60 - Das computerimplementierte Verfahren nacheiner der Klauseln 1-59, bei dem die operationsbezogenen Informationen Ressourcenzuweisungsinformationen enthalten, die sich auf einen oder mehrere Ressourcenbehälter beziehen, die mit einer oder mehreren Softwareanwendungen verbunden sind, die auf dem Computergerät ausführbar sind; wobei die Inferenz eine Angabe von Ressourcenbeschränkungen enthält, die sich auf mindestens einen Ressourcenbehälter des einen oder der mehreren Ressourcenbehälter beziehen; wobei die Kernelkomponente des Betriebssystemkerns einen System-Ressourcen-Manager enthält; und wobei das Anpassen der Leistung des Kernel-Vorgangs durch die Kernelkomponente auf der Grundlage der Inferenz das Bestimmen von Ressourcenbeschränkungen, die sich auf den mindestens einen Ressourcenbehälter des einen oder der mehreren Ressourcenbehälter beziehen, auf der Grundlage der Angabe von Ressourcenbeschränkungen unter Verwendung des System-Ressourcen-Managers umfasst.
- Klausel 61 - Das computerimplementierte Verfahren nach Klausel 60, bei dem die Bestimmung durch das maschinelle Lernmodell die Inferenz auf der Grundlage der operationsbezogenen Informationen asynchron mit der Bestimmung der Ressourcenbeschränkungen erfolgt, die sich auf den mindestens einen Ressourcenbehälter des einen oder der mehreren Ressourcenbehälter beziehen.
- Klausel 62 - Das computerimplementierte Verfahren nach Klausel 60 oder Klausel 61, wobei der eine oder die mehreren Ressourcenbehälter Folgendes umfassen: einen ersten Ressourcenbehälter, der sich auf erste Ressourcenbeschränkungen bezieht; einen zweiten Ressourcenbehälter mit zweiten Ressourcenbeschränkungen, die größer als die ersten Ressourcenbeschränkungen sind; einen dritten Ressourcenbehälter mit dritten Ressourcenbeschränkungen, die größer als die zweiten Ressourcenbeschränkungen sind; einen vierten Ressourcenbehälter mit vierten Ressourcenbeschränkungen, die größer als die dritten Ressourcenbeschränkungen sind; und einen fünften Ressourcenbehälter mit fünften Ressourcenbeschränkungen, die größer als die vierten Ressourcenbeschränkungen sind.
- Klausel 63 - Das computerimplementierte Verfahren nach einer der Klauseln 60-62, bei dem das Bestimmen der Ressourcenbeschränkungen, die sich auf den mindestens einen Ressourcenbehälter des einen oder der mehreren Ressourcenbehälter beziehen, auf der Grundlage der Angabe von Ressourcenbeschränkungen umfasst: Bestimmen von heuristisch bestimmten Behälterressourcenbeschränkungen, die sich auf den mindestens einen Ressourcenbehälter beziehen, unter Verwendung einer Behälter-Inhalt-Heuristik des Systemressourcenmanagers; Bestimmen der tatsächlichen Behälterressourcenbeschränkungen, die sich auf den mindestens einen Ressourcenbehälter beziehen, auf der Grundlage der Angabe von Ressourcenbeschränkungen und der heuristisch bestimmten Behälterressourcenbeschränkungen; und Bestimmen der Ressourcenbeschränkungen, die sich auf den mindestens einen Ressourcenbehälter beziehen, auf der Grundlage der tatsächlichen Behälterressourcenbeschränkungen.
- Klausel 64 - Das computerimplementierte Verfahren nach einer der Klauseln 60-63, bei dem die operationsbezogenen Informationen ferner Informationen über die Ressourcenzuweisung in Bezug auf den einen oder die mehreren mit der einen oder den mehreren Softwareanwendungen verknüpften Ressourcenbehälter(en) enthalten; wobei die Inferenz ferner eine Angabe über die Zuweisung des Ressourcenbehälters enthält, die eine erste Softwareanwendung der einen oder der mehreren Softwareanwendungen einem ersten Ressourcenbehälter des einen oder der mehreren Ressourcenbehälter zuweist; und wobei das Anpassen der Leistung des Kernelbetriebs durch die Kernelkomponente auf der Grundlage der Inferenz ferner das Zuweisen der ersten Softwareanwendung an den Ressourcenbehälter auf der Grundlage der Ressourcenbehälter-Zuweisungsanzeige unter Verwendung des Systemressourcenmanagers umfasst.
- Klausel 65 - Das computerimplementierte Verfahren nach Klausel 64, bei dem die Zuweisung der ersten Softwareanwendung an den ersten Ressourcenbehälter auf der Grundlage der Angabe der Zuweisung des Ressourcenbehälters die Begrenzung der Ressourcenverwendung durch die erste Softwareanwendung auf der Grundlage einer oder mehrerer Ressourcenbeschränkungen umfasst, die mit dem ersten Ressourcenbehälter unter Verwendung des Systemressourcenmanagers verbunden sind.
- Klausel 66 - Das computerimplementierte Verfahren nach einer der Klauseln 1-65, das ferner umfasst: Empfangen von anwendungsbezogenen Informationen für eine auf dem Computergerät ausgeführte Software-Anwendung am maschinellen Lernmodell; Bestimmen einer anwendungsbezogenen Inferenz durch das maschinelle Lernmodell auf der Grundlage der anwendungsbezogenen Informationen; Bereitstellen der anwendungsbezogenen Inferenz für die Software-Anwendung; und Anpassen der Leistung der Software-Anwendung auf der Grundlage der anwendungsbezogenen Inferenz.
- Klausel 67 - Das computerimplementierte Verfahren nach Klausel 66, bei dem die Softwareanwendung eine Datenbankanwendung umfasst, bei dem die anwendungsbezogenen Informationen datenbankbezogene Informationen für Prozesse, die auf dem Computergerät ausgeführt werden, und für die Verwendung einer mit der Datenbankanwendung verknüpften Datenbank umfassen; bei dem die anwendungsbezogene Inferenz eine Kontrollpunktangabe umfasst, die sich auf das Kontrollieren einer mit der Datenbankanwendung verknüpften Datenbank bezieht; und bei dem die Anpassung der Leistung der Softwareanwendung auf der Grundlage der anwendungsbezogenen Inferenz Folgendes umfasst: Bestimmen, ob die mit der Datenbankanwendung verknüpfte Datenbank auf der Grundlage der Kontrollpunktangabe unter Verwendung der Datenbankanwendung kontrolliert werden soll.
- Klausel 68 - Das computerimplementierte Verfahren nach Klausel 67, bei dem die Anpassung der Leistung der Softwareanwendung auf der Grundlage der anwendungsbezogenen Inferenz ferner Folgendes umfasst: Nach dem Bestimmen, dass die mit der Datenbankanwendung verknüpfte Datenbank einem Checkpointing unterzogen werden soll, Unterziehen der Datanbank einem Checkpointing unter Verwendung der Datenbankanwendung.
- Klausel 69 - Das computerimplementierte Verfahren nach Klausel 67 oder Klausel 68, bei dem die Anpassung der Leistung der Softwareanwendung auf der Grundlage der anwendungsbezogenen Inferenz ferner Folgendes umfasst: nach dem Bestimmen, die mit der Datenbankanwendung verbundene Datenbank auf der Grundlage der Checkpointangabe nicht einem Checkpointing zu unterziehen, darauf Verzichten, die Datenbank einem Checkpointing unter Verwendung der Datenbankanwendung zu unterziehen.
- Klausel 70 - Das computerimplementierte Verfahren nach einer der Klauseln 66-69, bei dem die Softwareanwendung eine Audio-/Videoanwendung umfasst, bei der die anwendungsbezogenen Informationen Audio-Video-bezogene Informationen für Prozesse, die auf dem Computergerät ausgeführt werden, und für Audio- und/oder Videoinhalte, die mit der Audio-/Videoanwendung verbunden sind, umfassen; bei der die anwendungsbezogene Inferenz eine Pufferangabe umfasst, die sich auf eine Anzahl von Puffern bezieht, die der Audio-/Videoanwendung zugeordnet sind; und bei der die Anpassung der Leistung der Softwareanwendung auf der Grundlage der anwendungsbezogenen Inferenz umfasst: Bestimmen, ob die Anzahl der der Audio-/Video-Anwendung zugewiesenen Puffer auf der Grundlage der Pufferangabe geändert werden soll.
- Klausel 71 - Das computerimplementierte Verfahren nach Klausel 70, bei dem die Anpassung der Leistung der Softwareanwendung auf der Grundlage der anwendungsbezogenen Inferenz weiterhin Folgendes umfasst: Nach der Bestimmung, die Anzahl der der Audio-/Videoanwendung zugewiesenen Puffer auf der Grundlage der Pufferangabe zu ändern, fordert die Audio-/Videoanwendung die Zuweisung eines oder mehrerer zusätzlicher Puffer an.
- Klausel 72 - Das computerimplementierte Verfahren nach Klausel 70 oder Klausel 71, bei dem die Anpassung der Leistung der Softwareanwendung auf der Grundlage der anwendungsbezogenen Inferenz ferner umfasst: nach der Bestimmung, die Anzahl der der Audio-/Videoanwendung zugewiesenen Puffer auf der Grundlage der Pufferangabe zu ändern, die Anforderung der Freigabe mindestens eines Puffers aus der Anzahl der der Audio-/Videoanwendung zugewiesenen Puffer.
- Klausel 73 - Das computerimplementierte Verfahren nach einer der Klauseln 70-72, bei dem die Anpassung der Leistung der Softwareanwendung auf der Grundlage der anwendungsbezogenen Inferenz ferner umfasst: Nach der Entscheidung, die Anzahl der der Audio-/Videoanwendung zugewiesenen Puffer auf der Grundlage der Pufferangabe nicht zu ändern, wird die Anzahl der der Audio-/Videoanwendung zugewiesenen Puffer beibehalten.
- Klausel 74 - Das computerimplementierte Verfahren nach einer der Klauseln 70-73, umfassend: Erzeugung einer Ausgabe des Computergeräts unter Verwendung der der Audio-/Videoanwendung zugewiesenen Anzahl von Puffern, wobei die Ausgabe auf dem Audio- und/oder Videoinhalt basiert.
- Klausel 75 - Das computerimplementierte Verfahren nach einer der Klauseln 66-74, bei dem die Softwareanwendung einen Compiler enthält, bei dem die anwendungsbezogenen Informationen Compiler-bezogene Informationen für Prozesse, die auf dem Computergerät ausgeführt werden, und für Softwareanweisungen, die dem Compiler zugeordnet sind, enthalten; bei dem die anwendungsbezogene Inferenz eine Hot-Loop-Anzeige enthält, die sich auf eine erste Schleife der Softwareanweisungen bezieht; und bei dem die Anpassung der Leistung der Softwareanwendung auf der Grundlage der anwendungsbezogenen Inferenz Folgendes umfasst: Bestimmen, ob eine erste Schleife eine Hot-Loop ist, auf der Grundlage der Hot-Loop-Anzeige unter Verwendung des Compilers.
- Klausel 76 - Das computerimplementierte Verfahren nach Klausel 75, bei dem die Bestimmung der Inferenz auf der Grundlage der operationsbezogenen Informationen durch das maschinelle Lernmodell asynchron mit der Einleitung der Bestimmung, ob die erste Schleife eine Hot-Loop-Schleife ist, auf der Grundlage der Hot-Loop-Anzeige durch den Compiler erfolgt.
- Klausel 77 - Das computerimplementierte Verfahren nach Klausel 75 oder Klausel 76, bei dem die Anpassung der Leistung der Softwareanwendung auf der Grundlage der anwendungsbezogenen Inferenz weiterhin Folgendes umfasst: nach der Feststellung, dass die erste Schleife eine Hot-Loop-Schleife ist, auf der Grundlage der Hot-Loop-Angabe: Kompilieren der Softwareanweisungen der ersten Schleife und Ausführen der kompilierten Softwareanweisungen der ersten Schleife.
- Klausel 78 - Das computerimplementierte Verfahren nach einer der Klauseln 75-77, bei der die Anpassung der Leistung der Softwareanwendung auf der Grundlage der anwendungsbezogenen Inferenz ferner Folgendes umfasst: nach der Feststellung, dass die erste Schleife keine Hot-Loop-Schleife ist, auf der Grundlage der Hot-Loop-Angabe, Ausführen der Softwareanweisungen der ersten Schleife.
- Klausel 79 - Das computerimplementierte Verfahren nach einer der Klauseln 1-78, bei der das maschinelle Lernmodell ein neuronales Netzwerk umfasst und bei dem die Bestimmung der Inferenz auf der Grundlage der operationsbezogenen Informationen ein Bestimmen der Inferenz auf der Grundlage der operationsbezogenen Informationen unter Verwendung des neuronalen Netzwerks umfasst.
- Klausel 80 - Das computerimplementierte Verfahren nach einer der Klauseln 1-79, umfassend; Generierung einer Ausgabe des Computergeräts auf der Grundlage der Leistung der Kerneloperation durch die Kernelkomponente.
- Klausel 81 - Das computerimplementierte Verfahren nach Klausel 80, bei dem die Ausgabe des Computergeräts eine visuelle Ausgabe enthält.
- Klausel 82 - Das computerimplementierte Verfahren nach Klausel 80 oder Klausel 81, bei dem die Ausgabe des Computergeräts eine Audioausgabe enthält.
- Klausel 83 - Das computerimplementierte Verfahren nach einer der Klauseln 80-82, bei dem die Ausgabe des Computergeräts eine haptische Ausgabe beinhaltet.
- Klausel 84 - Ein Computergerät, umfassend: einen oder mehrere Prozessoren; und einen oder mehreren computerlesbare Medien mit darauf gespeicherten computerausführbaren Befehlen, die, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, bewirken, dass das Computergerät Funktionen ausführt, die das computerimplementierte Vefahren nach einer der Klauseln 1-83 umfasst.
- Klausel 85 - Ein Herstellungsgegenstand, umfassend eines oder mehrere computerlesbare Medien mit darauf gespeicherten computerausführbaren Befehlen, die, wenn sie von einem oder mehreren Prozessoren eines Computergerätes ausgeführt werden, das Computergerät veranlassen, Funktionen auszuführen, die das computerimplementierte Verfahren eines der Klauseln 1-83 umfassen.
- Klausel 86 - Der Herstellungsgegenstand nach Klausel 85, bei dem ein oder mehrere computerlesbare Medien ein oder mehrere nicht vorübergehende computerlesbare Medien umfassen.
- Klausel 87 - Ein Computergerät, einschließlich: Mittel zur Ausführung des computerimplementierten Verfahrens nach einer der Klauseln 1-83.
-
Die vorliegende Offenlegung soll sich nicht auf die in diesem Antrag beschriebenen besonderen Ausführungsformen beschränken, die zur Veranschaulichung verschiedener Aspekte gedacht sind. Viele Modifikationen und Variationen können vorgenommen werden, ohne von ihrem Geist und Umfang abzuweichen, wie es für den Fachmann offensichtlich sein wird. Funktionell gleichwertige Methoden und Apparate innerhalb des Anwendungsbereichs der Offenbarung, zusätzlich zu den hier aufgezählten, werden für den Fachmann aus den vorstehenden Beschreibungen ersichtlich sein. Solche Modifikationen und Variationen sollen in den Geltungsbereich der beigefügten Ansprüche fallen.
-
Die obige detaillierte Beschreibung beschreibt verschiedene Merkmale und Funktionen der offengelegten Systeme, Geräte und Methoden unter Bezugnahme auf die begleitenden Figuren. In den Figuren kennzeichnen ähnliche Symbole in der Regel ähnliche Komponenten, es sei denn, der Kontext schreibt etwas anderes vor. Die in der ausführlichen Beschreibung, den Figuren und den Ansprüchen beschriebenen illustrativen Ausführungsformen sind nicht als einschränkend zu verstehen. Es können andere Ausführungsformen verwendet und andere Änderungen vorgenommen werden, ohne dass das Wesen oder der Schutzbereich des hier dargestellten Gegenstands beeinträchtigt wird. Es wird leicht verständlich sein, dass die Aspekte der vorliegenden Offenlegung, wie sie hier allgemein beschrieben und in den Figuren veranschaulicht werden, in einer Mehrzahl von verschiedenen Konfigurationen angeordnet, ersetzt, kombiniert, getrennt und gestaltet werden können, die alle hier ausdrücklich in Betracht gezogen werden.
-
In Bezug auf einige oder alle der Leiterdiagramme, Szenarien und Flussdiagramme in den Figuren und wie hier besprochen, kann jeder Block und/oder jede Kommunikation eine Verarbeitung von Informationen und/oder eine Übermittlung von Informationen gemäß Beispielausführungen darstellen. Alternative Ausführungsformen sind im Rahmen dieser Beispielausführungsformen enthalten. In diesen alternativen Ausführungsformen können z.B. Funktionen, die als Blöcke, Übertragungen, Mitteilungen, Anfragen, Antworten und/oder Mitteilungen beschrieben werden, außerhalb der gezeigten oder diskutierten Reihenfolge ausgeführt werden, einschließlich im Wesentlichen gleichzeitiger oder in umgekehrter Reihenfolge, je nach der betroffenen Funktionalität. Darüber hinaus können mehr oder weniger Blöcke und/oder Funktionen mit jedem der hier besprochenen Kontaktpläne, Szenarien und Flussdiagramme verwendet werden, und diese Kontaktpläne, Szenarien und Flussdiagramme können ganz oder teilweise miteinander kombiniert werden.
-
Ein Block, der eine Informationsverarbeitung darstellt, kann einer Schaltung entsprechen, die so konfiguriert werden kann, dass sie die spezifischen logischen Funktionen einer hier beschriebenen Methode oder Technik ausführt. Alternativ oder zusätzlich kann ein Block, der eine Informationsverarbeitung darstellt, einem Modul, einem Segment oder einem Teil des Programmcodes (einschließlich verwandter Daten) entsprechen. Der Programmcode kann eine oder mehrere Anweisungen enthalten, die von einem Prozessor ausgeführt werden können, um spezifische logische Funktionen oder Aktionen in der Methode oder Technik zu implementieren. Der Programmcode und/oder damit zusammenhängende Daten können auf jeder Art von computerlesbarem Medium gespeichert werden, z.B. auf einem Speichergerät einschließlich einer Platte oder Festplatte oder einem anderen Speichermedium.
-
Das computerlesbare Medium kann auch nicht-transitorische computerlesbare Medien umfassen, wie z.B. nicht-transitorische computerlesbare Medien, die Daten für kurze Zeiträume speichern, wie Registerspeicher, Prozessor-Cache und RAM. Zu den computerlesbaren Medien können auch nicht-transitorische computerlesbare Medien gehören, die als Hintergrundspeicher fungieren und/oder Programmcode und/oder Daten für längere Zeiträume speichern, wie z.B. sekundäre oder persistente Langzeitspeicher, wie ROM (Read Only Memory), optische oder magnetische Platten, Compact-Disc-Read Only Memory (CD-ROM), zum Beispiel. Bei den computerlesbaren Medien kann es sich auch um beliebige andere flüchtige oder nichtflüchtige Speichersysteme handeln. Ein computerlesbares Medium kann z.B. als computerlesbares Speichermedium oder als greifbares Speichergerät angesehen werden.
-
Darüber hinaus kann ein Block, der eine oder mehrere Informationsübertragungen darstellt, Informationsübertragungen zwischen Software- und/oder Hardwaremodulen in demselben physikalischen Gerät entsprechen. Andere Informationsübertragungen können jedoch zwischen Software- und/oder Hardwaremodulen in verschiedenen physikalischen Geräten erfolgen.
-
Während verschiedene Aspekte und Verkörperungen hier offengelegt wurden, werden andere Aspekte und Verkörperungen für diejenigen, die sich in dieser Kunst auskennen, offensichtlich sein. Die verschiedenen Aspekte und Ausführungsformen, die hier offengelegt werden, dienen der Erläuterung und sollen nicht einschränkend wirken, wobei der wahre Umfang durch die folgenden Behauptungen angegeben wird.