DE102021129175A1 - Automatisches erweitern eines programmdatenspeichers - Google Patents

Automatisches erweitern eines programmdatenspeichers Download PDF

Info

Publication number
DE102021129175A1
DE102021129175A1 DE102021129175.5A DE102021129175A DE102021129175A1 DE 102021129175 A1 DE102021129175 A1 DE 102021129175A1 DE 102021129175 A DE102021129175 A DE 102021129175A DE 102021129175 A1 DE102021129175 A1 DE 102021129175A1
Authority
DE
Germany
Prior art keywords
data
instructions
computer
variable memory
source code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021129175.5A
Other languages
English (en)
Inventor
Zhen Liu
Ming Lei Zhang
Jia Tian Zhong
Le Chang
Ting Ting Zhan
Xiao Yan Tian
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102021129175A1 publication Critical patent/DE102021129175A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Es wird ein Verfahren bereitgestellt, um festzustellen, dass ein Datenspeicher für ein Programm nicht ausreicht. Ein Prozessor kann einen Satz von markierten Daten empfangen, die einem Satz von Quellcode zugehörig sind. Der Prozessor kann einen Bereich des Codes ermitteln, dem die markierten Daten zugehörig sind. Der Prozessor kann einen ersten Satz von Anweisungen erzeugen, um eine erste Momentaufnahme eines variablen Speicherplatzes beim Eintreten in den Bereich und eine zweite Momentaufnahme des variablen Speicherplatzes beim Verlassen des Bereichs zu erstellen. Der Prozessor kann einen zweiten Satz von Anweisungen zum Vergleichen der ersten und der zweiten Momentaufnahme erzeugen, um eine Nutzungsmenge des variablen Speicherplatzes zu ermitteln. Der Prozessor kann einen dritten Satz von Anweisungen erzeugen, um als Reaktion darauf, dass die Nutzungsmenge des variablen Speicherplatzes einen Schwellenwert überschreitet, eine Aktion auszuführen. Der Prozessor kann den Code in eine ausführbare Datei kompilieren.

Description

  • HINTERGRUND
  • Die vorliegende Offenbarung betrifft allgemein das Gebiet der Datenspeicherung und insbesondere ein automatisches Erstellen von Datennutzungsanweisungen, die verwendet werden um festzustellen, wann ein Datenspeicher für ein entsprechendes Computerprogramm nicht mehr ausreicht.
  • Computerprogramme sind in gewissem Maß Abbilder der realen Welt. Einige Programme haben eine viel längere Lebensdauer als erwartet, was zu einer unerwarteten Programminstabilität führt, wenn sie für aktuelle Verarbeitungsaufgaben verwendet werden.
  • KURZDARSTELLUNG
  • Ausführungsformen der vorliegenden Offenbarung umfassen ein Verfahren, ein Computerprogrammprodukt und ein System zum automatischen Feststellen, wann ein Datenspeicher für ein entsprechendes Computerprogramm nicht mehr ausreicht. Ein Prozessor kann einen Satz von markierten Daten empfangen, die einem Satz von Quellcode zugehörig sind. Der Prozessor kann einen Bereich des Quellcodes ermitteln, dem die markierten Daten zugehörig sind Der Prozessor kann einen ersten Satz von Anweisungen erzeugen, um eine erste Momentaufnahme eines den markierten Daten zugehörigen variablen Speicherplatzes beim Eintritt in den Bereich und eine zweite Momentaufnahme des variablen Speicherplatzes beim Verlassen des Bereichs zu erstellen. Der Prozessor kann einen zweiten Satz von Anweisungen zum Vergleichen der ersten und der zweiten Momentaufnahme erzeugen, um eine Nutzungsmenge des variablen Speicherplatzes zu ermitteln, der den markierten Daten zugehörig ist. Der Prozessor kann einen dritten Satz von Anweisungen erzeugen, um als Reaktion darauf, dass die Nutzungsmenge des variablen Speicherplatzes einen Schwellenwert übersteigt, eine Aktion auszuführen. Der Prozessor kann den Quellcode in eine ausführbare Datei kompilieren. Die ausführbare Datei kann den ersten, zweiten und dritten Satz von Anweisungen umfassen.
  • Die obige Kurzdarstellung soll nicht jede veranschaulichte Ausführungsform oder jede Implementierung der vorliegenden Offenbarung beschreiben.
  • Figurenliste
  • Die in der vorliegenden Offenbarung enthaltenen Zeichnungen sind in die Beschreibung eingebunden und bilden einen Teil von dieser. Sie veranschaulichen Ausführungsformen der vorliegenden Offenbarung und dienen zusammen mit der Beschreibung dazu, die Grundgedanken der Offenbarung zu erläutern. Die Zeichnungen veranschaulichen lediglich typische Ausführungsformen und schränken die Offenbarung nicht ein.
    • 1 veranschaulicht ein Blockschaubild eines beispielhaften Systems gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 2 veranschaulicht ein Blockschaubild eines beispielhaften Compilers gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 3 veranschaulicht einen Ablaufplan eines beispielhaften Prozesses zum automatischen Erzeugen einer Datennutzungsanweisung und zum Benachrichtigen eines Benutzers, wenn ein Schwellenwert für die Datennutzung überschritten wurde, gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 4 veranschaulicht einen beispielhaften Satz von markierten Daten und Quellcode gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 5 veranschaulicht eine beispielhafte Querverweistabelle für markierte Daten gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 6 veranschaulicht einen Übersichts-Blockschaltplan eines beispielhaften Computersystems, das beim Implementieren von einem oder mehreren der hierin beschriebenen Verfahren, Hilfsprogramme und Module und allen damit zusammenhängenden Funktionen verwendet werden kann, gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 7 zeigt eine Cloud-Computing-Umgebung gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 8 zeigt Abstraktionsmodellschichten gemäß Ausführungsformen der vorliegenden Offenbarung.
  • Zwar sind die hierin beschriebenen Ausführungsformen offen für verschiedene Modifikationen und alternative Formen, wobei Besonderheiten von diesen in den Zeichnungen beispielhaft gezeigt und ausführlich beschrieben werden. Es sollte jedoch klar sein, dass die beschriebenen besonderen Ausführungsformen nicht in einem einschränkenden Sinne zu verstehen sind. Vielmehr sollen alle Modifikationen, Äquivalente und Alternativen abgedeckt werden, die in den Gedanken und Schutzumfang der Offenbarung fallen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Aspekte der vorliegenden Offenbarung betreffen das Gebiet der Datenspeicherung und insbesondere ein automatisches Erzeugen von Datennutzungsanweisungen, die verwendet werden um festzustellen, wann ein Datenspeicher für ein entsprechendes Computerprogramm nicht mehr ausreicht. Zwar ist die vorliegende Offenbarung nicht unbedingt auf solche Anwendungen beschränkt, jedoch können verschiedene Aspekte der Offenbarung durch eine Erläuterung verschiedener Beispiele in diesem Zusammenhang besser verstanden werden.
  • Computerprogramme sind in gewissen Maße Abbildungen der realen Welt. Einige Programme haben eine viel längere Lebensdauer als erwartet, was zu einer unerwarteten Programminstabilität führt, wenn sie für aktuelle Verarbeitungsaufgaben verwendet werden. Da beispielsweise immer mehr Daten, die Objekte der realen Welt darstellen (z.B. Produkte, Waren, Geldwerte usw.), für verschiedene Software-Anwendungen erzeugt und zusammengestellt werden, können in vielen Fällen bestimmte zugrunde liegende Programme aufgrund einer unzureichenden Datengröße, die zum Darstellen dieser realen Objekte verwendet wird, auf Fehler stoßen. Beispielsweise ist ein im Programmcode implementiertes Array möglicherweise nicht groß genug, um die aktuellen Daten zu verarbeiten, und muss erhöht werden. Normalerweise wird diese Art von Code-Modifikation und/oder Wartungsarbeit durchgeführt, nachdem ein Programmierer das Problem aufgrund von Programminstabilität erkannt hat. Darüber hinaus ist der zugrunde liegende Code in vielen Fällen schwer zu korrigieren und/oder anfällig für Codierungsfehler, wenn ein Programmierer versucht, die Datengröße für das jeweilige Programm zu erhöhen.
  • Ausführungsformen der vorliegenden Offenbarung betreffen ein Verfahren, ein Computerprogrammprodukt und ein System, das eine Compilertechnologie verwendet, um zu ermitteln, wann markierte Daten eine höhere Datenspeichernutzung über einen bestimmten Zeitraum erfordern. In Ausführungsformen ist ein Compiler so konfiguriert, dass er einen in einer Programmiersprache geschriebenen Computercode in eine andere Sprache übersetzt. Der Compiler kann zum Beispiel Quellcode und markierte Daten (z.B. ein Array oder Daten, bei denen festgestellt wurde, dass sie über einen bestimmten Zeitraum einen erhöhten Speicherplatz benötigten) in internen Code übersetzen, um ein ausführbares Programm zu erstellen.
  • In Ausführungsformen kann der Compiler einen Bereich der markierten Daten ermitteln, die dem Quellcode zugehörig sind. Der Bereich kann angeben, welcher Code über einen bestimmten Zeitraum eine Erweiterung des Datenspeichers oder des variablen Speicherplatzes erfordern kann. Der Compiler kann während des Kompiliervorgangs automatisch Datennutzungsanweisungen für die markierten Daten erzeugen. Wenn ein entsprechendes ausführbares Programm läuft, wird die Nutzung von markierten Daten jederzeit nach Bedarf erzeugt. In einigen Ausführungsformen kann der Compiler die Nutzungsanweisung für markierte Daten beim Erzeugen eines internen Codes erstellen. Beispielsweise kann der Compiler einen ersten Satz von Anweisungen (z.B. internen Code) erzeugen, um eine erste Momentaufnahme des den markierten Daten zugehörigen variablen Speicherplatzes beim Eintritt in den Bereich und eine zweite Momentaufnahme des variablen Speicherplatzes beim Verlassen des Bereichs zu erstellen. Der Satz von Anweisungen kann während des Kompiliervorgangs in den ausführbaren Programmcode eingefügt werden. In einigen Ausführungsformen kann der Compiler einen zweiten Satz von Anweisungen zum Vergleichen der ersten und zweiten Momentaufnahme erzeugen. Der zweite Satz von Anweisungen kann während des Kompiliervorgangs in den ausführbaren Programmcode eingefügt werden. In einigen Ausführungsformen kann der Prozessor einen dritten Satz von Anweisungen erzeugen, um als Reaktion darauf, dass die Nutzungsmenge des variablen Speicherplatzes einen Schwellenwert überschreitet, eine Aktion auszuführen. Der dritte Satz von Anweisungen kann während des Kompiliervorgangs in den ausführbaren Programmcode eingefügt werden.
  • In Ausführungsformen veranlassen die Anweisungen das ausführbare Programm während dessen Ausführung, eine erste und eine zweite Momentaufnahme des variablen Speicherplatzes zu erstellen und die Datennutzung des variablen Speicherplatzes zu vergleichen. Aus dem Vergleich wird ein Prozentsatz der Datennutzung berechnet. In Ausführungsformen kann eine Aktion ausgeführt werden, wenn die markierten Daten aus der Datennutzungsanweisung eine bestimmte festgelegte Begrenzung überschreiten (z.B. einen Datennutzungsschwellenwert, ein Datennutzungslimit usw.).
  • Das System so konfiguriert sein, dass es eine Benachrichtigung erzeugt und die Benachrichtigung an einen Benutzer ausgibt, wenn die markierten Daten beispielsweise eine Datenspeichergrenze von 85% für das jeweilige ausführbare Programm überschreiten. Die Benachrichtigung kann in Form einer Warnung erfolgen, die anzeigt, dass das Datenspeicherlimit überschritten wurde. Die Benachrichtigung kann über jede Art von Warnmechanismus (z.B. über eine Benutzerschnittstelle oder eine entfernt angeordnete Einheit) erzeugt und an einen Benutzer übertragen werden, wenn ein Datenspeicherlimit überschritten wurde.
  • In einigen Ausführungsformen kann der Compiler eine Kompilierlistendatei (compile listing file) erzeugen, die an einen Benutzer ausgegeben werden kann. In Ausführungsformen umfasst die Kompilierlistendatei Querverweisinformationen zu zugehörigen Daten (z.B. Variablen, Werte usw.) der markierten Daten. Die Kompilierlistendatei kann außerdem an einen Benutzer ausgegeben werden, um ihn beim Modifizieren des jeweiligen Programmcodes als Reaktion auf eine Benachrichtigung zu unterstützen, dass der Schwellenwert für das Datenlimit erreicht wurde. Auf diese Weise ermöglicht das Verwenden der Querverweisinformationen aus der Kompilierlistendatei dem Programmierer, den Code-Modifikationsprozess zu beschleunigen, indem er die markierten Daten und alle zugehörigen Daten im Programmcode leicht identifizieren kann. Außerdem ermöglichen die Querverweisinformationen es dem Programmierer, Fehler zu reduzieren, indem er schnell auf relevante Informationen zugreifen und die Programmstabilität sorgfältig verbessern kann.
  • In einigen Ausführungsformen kann das System maschinelles Lernen nutzen, um frühere Daten und/oder markierte Datensätze zu analysieren, um automatisch zu ermitteln, welche Programme möglicherweise modifiziert werden müssen und/oder ein Erhöhen der Datenspeichernutzung benötigen. Beispielsweise kann das System auf der Grundlage von Änderungen und/oder Modifikationen am Programmcode für historische Arrays ähnliche Arrays ermitteln, die sich ausgehend von den Datennutzungsanweisungen den Datengrenzwerten nähern und/oder diese überschreiten. Anhand dieser Informationen kann das System den Datenspeicher für das jeweilige ausführbare Programm automatisch anpassen, ohne dass ein menschliches Eingreifen erforderlich ist.
  • Bei den oben genannten Vorteilen handelt es sich um beispielhafte Vorteile, und es werden nicht alle Vorteile erörtert. Darüber hinaus kann es Ausführungsformen der vorliegenden Offenbarung geben, die alle, einige oder keine der oben genannten Vorteile enthalten und dennoch im Gedanken und Schutzumfang der vorliegenden Offenbarung bleiben.
  • Unter Bezugnahme auf 1 wird nun ein Blockschaubild eines beispielhaften Systems 100 gemäß Ausführungsformen der vorliegenden Offenbarung gezeigt. In der veranschaulichten Ausführungsform umfasst das System 100 eine Client-Einheit 102, die über ein Netzwerk 150 zum Datenaustausch mit einer entfernt angeordneten Einheit 116 verbunden ist. Die Client-Einheit 102 und die entfernt angeordnete Einheit 116 können als jede Art von Computersystem konfiguriert werden und können im Wesentlichen dem Computersystem 1101 von 6 ähnlich sein. In Ausführungsformen kann es sich bei der Client-Einheit 102 und/oder der entfernt angeordneten Einheit 116 um eigenständige Datenverarbeitungseinheiten oder virtuelle Software-Anwendungen handeln. Beispielsweise kann die Client-Einheit 102 eine virtuelle Anwendung sein, die sich auf einem Server (nicht gezeigt) befindet und auf die die entfernt angeordnete Einheit 116 über ein Cloud-Computing-Netzwerk zugreift, wobei die entfernt angeordnete Einheit 116 als ein Personal Computer (z.B. Laptop, Desktop, Smartphone usw.) konfiguriert sein kann, der von einem Benutzer betrieben wird.
  • Beim Netzwerk 150 kann es sich um jede Art von Datenübertragungsnetz handeln, z.B. ein drahtloses Netzwerk oder ein Cloud-Computing-Netzwerk. Das Netzwerk 150 kann im Wesentlichen der in 7 beschriebenen Cloud-Computing-Umgebung 50 ähneln oder mit dieser identisch sein. In einigen Ausführungsformen kann das Netzwerk 150 unter Verwenden einer beliebigen Anzahl von geeigneten Informationsübertragungsmedien implementiert werden. Beispielsweise kann es sich bei dem Netzwerk um ein Weitverkehrsnetz (WAN), ein lokales Netzwerk (LAN), ein Kurzstreckennetzwerk (PAN), ein Internet oder ein Intranet handeln. In bestimmten Ausführungsformen können sich die verschiedenen Systeme in örtlicher Nähe zueinander befinden und über ein beliebiges geeignetes lokales Informationsübertragungsmedium Daten austauschen.
  • Beispielsweise kann die Client-Einheit 102 unter Verwenden eines WAN, einer oder mehrerer drahtgebundener Verbindungen (z.B. ein Ethernet-Kabel) und/oder drahtloser Datenübertragungsnetze mit der entfernt angeordneten Einheit 116 Daten austauschen. In einigen Ausführungsformen können die verschiedenen Systeme unter Verwenden einer Kombination aus einem oder mehreren Netzwerken und/oder einer oder mehreren lokalen Verbindungen zum Datenaustausch miteinander verbunden sein. Beispielsweise kann in einigen Ausführungsformen die Client-Einheit 102 mit der entfernt angeordneten Einheit 116 über eine drahtgebundene Verbindung Daten austauschen, während in einigen Ausführungsformen der Datenaustausch zwischen der entfernt angeordneten Einheit 116 und der Client-Einheit 102 über ein drahtloses Datenübertragungsnetz erfolgen kann.
  • In der veranschaulichten Ausführungsform umfasst die Client-Einheit 102 einen Prozessor 104, einen Compiler 106, Quellcode und markierte Daten 108, ein ausführbares Programm 110, eine Einrichtung 112 für maschinelles Lernen und einen Datenspeicher 114. In einigen Ausführungsformen kann die entfernt angeordnete Einheit 116 die gleichen, einige oder ähnliche Komponenten wie die Client-Einheit 102 umfassen.
  • In Ausführungsformen ist der Compiler 106 so konfiguriert, dass er einen in einer Programmiersprache geschriebenen Computercode in eine andere Sprache übersetzt (z.B. kompiliert). Beispielsweise kann der Compiler 106 Quellcode und markierte Daten 108 in internen Code übersetzen, um ein ausführbares Programm 110 zu erstellen. In Ausführungsformen kann der Compiler 106 mehrere Typen von Vorgängen ausführen, wie z.B. Vorverarbeiten, lexikalische Analyse, syntaktische Analyse, semantische Analyse (z.B. syntaxgesteuerte Übersetzung), Umwandlung von Eingabeprogrammen in eine Zwischendarstellung, Codeoptimierung und Codeerzeugung, die in 2 näher beschrieben sind. In Ausführungsformen kann der Compiler 106 automatisch Datennutzungsanweisungen aus dem Quellcode und den markierten Daten 108 erzeugen. Die Datennutzungsanweisungen können verwendet werden, um eine Benachrichtigung zu erzeugen, wenn der Datenspeicher 114 (z.B. der variable Speicherplatz) für das ausführbare Programm 110 nicht ausreicht. Beispielsweise kann unter Verwenden der vom Compiler 106 erzeugten Datennutzungsanweisungen eine Benachrichtigung erzeugt und (z B. über die entfernt angeordnete Einheit 116) an einen Benutzer übertragen werden, wenn ein Datenspeicherlimit überschritten wurde (z.B. ein Datenspeicherlimit von 90%).
  • In Ausführungsformen kann die Einrichtung 112 für maschinelles Lernen verschiedene Einrichtungen für maschinelles Lernen (künstliche neuronale Netze, Korrelationseinrichtungen, ein Lernmodell mit Verstärkungsrückkopplung (reinforcement feedback learning model), ein überwachtes/unüberwachtes Lernmodell usw.) aufweisen, die so konfiguriert sind, dass sie vom System 100 erzeugte Daten analysieren, um Vorhersagen zum Festlegen von Modifikationen am Datenspeicher 114 zu verbessern. Beispielsweise kann die Einrichtung 112 für maschinelles Lernen frühere markierte Daten und/oder Programmcodeänderungen sammeln, überwachen und/oder analysieren, um automatisch zu ermitteln, welche Programme möglicherweise eine Modifikation (z.B. ein Erhöhen) des Datenspeichers benötigen. Beispielsweise kann das System auf der Grundlage früherer Änderungen und/oder Modifikationen des Programmcodes für historische Arrays ähnliche Arrays ermitteln, die sich ausgehend von den Datennutzungsanweisungen den Datengrenzen möglicherweise nähern oder diese überschreiten. Anhand dieser historischen Daten kann das System 100 automatisch den Datenspeicher für das jeweilige ausführbare Programm vorhersagen und/oder anpassen, bevor verschiedene Grenzwerte überschritten werden, ohne dass ein menschliches Eingreifen erforderlich ist.
  • Algorithmen für maschinelles Lernens können umfassen, ohne jedoch auf diese beschränkt zu sein: Lernen von Entscheidungsbäumen (decision tree learning), Lernen von Assoziationsregeln (association rule learning), künstliche neuronale Netze, Deep Learning, induktive Logikprogrammierung (inductive logic programming), Stützvektormaschinen (Support Vector Machines), Clusteranalysen (Clustering), Bayes'sche Netze (Bayesian networks), Verstärkungslernen (reinforcement learning), Repräsentationslernen (representation learning), Ähnlichkeits-/metrisches Lernen (similarity/metric training), spärliches Wörterbuchlernen (Sparse Dictionary Learning), genetische Algorithmen, regelbasiertes Lernen und/oder andere maschinelle Lerntechniken.
  • Beispielsweise können die Algorithmen für maschinelles Lernen eine oder mehrere der folgenden Beispieltechniken verwenden: K-Nächster Nachbar (K-nearest neighbor, KNN), lernende Vektorquantisierung (learning vector quantization, LVQ), selbstorganisierende Karte (self-organizing map, SOM), logistische Regression, gewöhnliche Methode der kleinsten Quadrate für die Regression (ordinary least squares regression, OLSR), lineare Regression, schrittweise Regression, multivariate adaptive Regressionsspline (multivariate adaptive regression spline, MARS), Ridge-Regression, Operator für die kleinste absolute Schrumpfung und Auswahl (least absolute shrinkage and selection operator, LASSO), elastisches Netz, kleinste Winkelregression (least-angle regression, LARS), probabilistischer Klassifikator, naiver Bayes-Klassifikator, binärer Klassifikator, linearer Klassifikator, hierarchischer Klassifikator, kanonische Korrelationsanalyse (canonical correlation analysis, CCA), Faktorenanalyse, unabhängige Komponentenanalyse (independent component analysis, ICA), lineare Diskriminanzanalyse (linear discriminant analysis, LDA), multidimensionale Skalierung (MDS), nicht-negative Matrix-Faktorisierung (non-negative metric factorization, NMF), Regression der partiellen kleinsten Quadrate (partial least squares regression, PLSR), Hauptkomponentenanalyse (principal component analysis, PCA), Hauptkomponentenregression (principal component regression, PCR), Sammon-Projektion (Sammon mapping), t-verteilte stochastische Nachbareinbettung (t-distributed stochastic neighbor embedding, t-SNE), Bootstrap-Aggregation (bootstrap aggregating), Ensemble-Mittelwertbildung (ensemble averaging), Gradient Boosted Decision Tree (GBDT), Gradient Boosting Machine (GBM), Algorithmen mit induktiver Verzerrung (inductive bias algorithms), Q-Lernen, State-Action-Reward-State-Action (SARSA), Temporal Difference- (TD-) Lernen, Apriori-Algorithmen, Equivalence-Class-Transformation- (ECLAT-) Algorithmen, Gaußsche Prozess-Regression (Gaussian process regression), Genexpressionsprogrammierung, Gruppenmethode der Datenverarbeitung (group method of data handling, GMDH), induktive logische Programmierung, instanzbasiertes Lernen, logistische Modellbäume, Informations-Fuzzy-Netzwerke (information fuzzy networks, IFN), verdeckte Markov-Modelle (hidden Markov models), Gaußscher Naiver Bayes, Multinomialer Naiver Bayes, Averaged One-Dependency Estimators (AODE), Bayessches Netz (BN), Klassifizierungs- und Regressionsbaum (classification and regression tree, CART), automatische Chi-Quadrat-Interaktionserkennung (chi-squared automatic interaction detection, CHAID), Erwartungsmaximierungsalgorithmus (expectation maximization algorithm), neuronale vorwärtsgerichtete Netze (feedforward neural networks), Maschinen für logisches Lernen (logic learning machine), selbstorganisierende Karte, Single-Linkage-Clustering, Fuzzy-Clustering, hierarchisches Clustering, Boltzmann-Maschinen, neuronale Faltungsnetze (convolutional neural networks), rekurrente neuronale Netze (recurrent neural networks), hierarchisches temporales Gedächtnis (hierarchical temporal memory, HTM) und/oder andere maschinelle Lerntechniken.
  • 1 soll die repräsentativen Hauptkomponenten des Systems 100 darstellen. In einigen Ausführungsformen können jedoch einzelne Komponenten eine größere oder geringere Komplexität haben als in 1 dargestellt, andere Komponenten als die in 1 gezeigten oder zusätzliche Komponenten können vorhanden sein, und die Anzahl, Art und Konfiguration solcher Komponenten kann variieren. Ebenso können eine oder mehrere Komponenten, die im System 100 gezeigt sind, nicht vorhanden sein, und die Anordnung der Komponenten kann variieren.
  • Zwar zeigt 1 ein beispielhaftes System 100 mit einer einzigen Client-Einheit 102 und einer einzigen entfernt angeordneten Einheit 116, die zum Datenaustausch über ein einziges Netzwerk 150 verbunden sind, jedoch können geeignete Netzwerkarchitekturen zum Implementieren von Ausführungsformen dieser Offenbarung beispielsweise eine beliebige Anzahl von Client-Einheiten, entfernt angeordneten Einheiten und Netzwerken umfassen. Die in 1 veranschaulichten verschiedenen Modelle, Module, Systeme und Komponenten können, wenn überhaupt, über eine Mehrzahl von Client-Einheiten, entfernt angeordneten Einheiten und Netzwerken existieren.
  • Unter Bezugnahme auf 2 wird nun ein Blockschaubild eines beispielhaften Compilers 106 gemäß Ausführungsformen der vorliegenden Offenbarung gezeigt. Der Compiler 106 kann der gleiche oder ein ähnlicher sein wie der Compiler 106 in 1. In der veranschaulichten Ausführungsform weist der Compiler 106 eine Front-End-Schicht 200 und eine Back-End-Schicht 202 auf. In Ausführungsformen weist die Front-End-Schicht 200 einen lexikalischen Analysator 204, einen Syntaxanalysator 206, einen internen Codegenerator 208, Wörterbuchinformationen 210 für markierte Daten, Wörterbuchinformationen 212 und ein Verzeichnis 214 auf. Die Back-End-Schicht 202 weist ein Optimierungsprogramm 218 und einen Codegenerator 220 auf.
  • In Ausführungsformen ist der lexikalische Analysator 204 so konfiguriert, dass er eine lexikalische Analyse des empfangenen Quellcodes und der markierten Daten 108 ausführt. Sobald die lexikalische Analyse ausgeführt ist, führt der Syntaxanalysator 206 eine Syntaxanalyse durch, um zu ermitteln, ob die gegebene Eingabe in der korrekten Syntax der Programmiersprache vorliegt. Während der Phase der lexikalischen Analyse und der Syntaxanalyse erzeugt der Compiler 106 Wörterbuchinformationen 212 und Wörterbuchinformationen 210 für markierte Daten, die die markierten Daten und zugehörige Daten umfassen. Die Wörterbuchinformationen 212 und die Wörterbuchinformationen 210 für markierte Daten können Querverweisinformationen umfassen, die von den markierten Daten und den zugehörigen Daten (z.B. Variablen, Werte usw.) gemeinsam genutzt werden.
  • In Ausführungsformen erzeugt der interne Codegenerator 208 während einer internen Codeerzeugungsphase Datennutzungsanweisungen zum Berechnen eines Nutzungsstatus von markierten Daten. In Ausführungsformen fügt der interne Codegenerator 208 die Datennutzungsanweisungen in den ausführbaren Programmcode ein. Beispielsweise kann der interne Codegenerator 208 einen ersten Satz von Anweisungen erzeugen, um eine erste Momentaufnahme des den markierten Daten zugehörigen variablen Speicherplatzes beim Eintritt in einen Bereich der markierten Daten und eine zweite Momentaufnahme des variablen Speicherplatzes beim Verlassen des Bereichs zu erstellen. Der interne Codegenerator 208 kann den ersten Satz von Anweisungen während des Kompiliervorgangs in den ausführbaren Programmcode einfügen. In Ausführungsformen kann der interne Codegenerator 208 einen zweiten Satz von Anweisungen zum Vergleichen der ersten und der zweiten Momentaufnahme erzeugen. Der interne Codegenerator 208 kann den zweiten Satz von Anweisungen während des Kompiliervorgangs in den ausführbaren Programmcode einfügen. In einigen Ausführungsformen kann der interne Codegenerator 208 einen dritten Satz von Anweisungen in den ausführbaren Programmcode einfügen, um als Reaktion darauf, dass ein Datenschwellenwert (z. B. ein Schwellenwert für die Datennutzung) überschritten wird, eine Aktion auszuführen.
  • Auf diese Weise ist das ausführbare Programm 110 so konfiguriert, dass es beim Eintritt in den Bereich der markierten Daten eine erste Momentaufnahme des variablen Speicherplatzes des Datenspeichers 114 speichert. Wenn es den Bereich der markierten Daten verlässt, speichert das ausführbare Programm 110 eine zweite Momentaufnahme des variablen Speicherplatzes des Datenspeichers 114. Die erste und die zweite Momentaufnahme des variablen Speicherplatzes werden durch das ausführbare Programm 110 miteinander verglichen, und es wird ein Prozentsatz der Datennutzung berechnet. Wenn die markierten Daten eine bestimmte Grenze überschreiten (z B. einen Schwellenwert für die Datennutzung, ein Datennutzungslimit usw.), kann das ausführbare Programm 110 in Ausführungsformen eine Benachrichtigung oder Warnung erzeugen und an einen Benutzer ausgeben.
  • In Ausführungsformen erzeugt der Compiler 106 während einer Phase des Erstellens einer Kompilierliste das Verzeichnis 214, das Querverweisinformationen für die markierten Daten und zugehörige Daten aufweist, die aus den Wörterbuchinformationen 210 und den Wörterbuchinformationen 212 für die markierten Daten ermittelt wurden. In Ausführungsformen kann der Compiler 106 das Verzeichnis 214 verwenden, um eine Kompilierlistendatei 216 zu erzeugen, die an einen Benutzer ausgegeben werden kann. Wenn eine Benachrichtigung an einen Benutzer übertragen wird, die anzeigt, dass der variable Speicherplatz des Datenspeichers 114 für das ausführbare Programm 110 nicht ausreicht, können die Querverweisinformationen in der Kompilierlistendatei 216 verwendet werden, um zu ermitteln, welcher Programmcode in dem ausführbaren Programm modifiziert werden muss. Die Kompilierlistendatei 216 kann eine oder mehrere der folgenden Informationen aufweisen: Querverweisinformationen der markierten Daten; Querverweisinformationen des Alias der markierten Daten (z.B. über den Alias-Mechanismus des Compilers); Querverweisinformationen eines linken Wertes, wenn es sich bei den markierten Daten in einer Zuweisungsanweisung um einen rechten Wert handelt; Querverweisinformationen eines linken Wertes, wenn es sich bei der markierten Datengröße in der Zuweisungsanweisung um den rechten Wert handelt; und Querverweisinformationen anderer Operandendaten, wenn die markierte Datengröße einer bedingten Anweisung (z.B. Bewertungsanweisung am Ende einer Schleife) der Operand ist. Auf diese Weise kann die Kompilierlistendatei 216 von einem Benutzer (z.B. einem Programmierer) verwendet werden, um leicht herauszufinden, wo der Programmcode im Zusammenhang mit der Benachrichtigung über unzureichenden Datenspeicherplatz modifiziert werden muss.
  • In Ausführungsformen kann das Optimierungsprogramm 218 einen internen Code und die vom internen Codegenerator 208 erzeugten Datennutzungsanweisungen empfangen. Das Optimierungsprogramm 218 ist so konfiguriert, dass es die Datennutzungsanweisungen verwendet, um den empfangenen internen Code zu modifizieren, um den Betrieb des ausführbaren Programms 110 zu verbessern. Beispielsweise kann das Optimierungsprogramm 218 die Datennutzungsanweisungen analysieren und den internen Code so modifizieren, dass das ausführbare Programm mit weniger Speicher arbeitet. Der Codegenerator 220 wandelt dann den modifizierten Code in eine Form von Programmcode um, die durch das ausführbare Programm 110 leicht ausgeführt/gelesen werden kann.
  • Unter Bezugnahme auf 3 wird nun ein Ablaufplan eines beispielhaften Prozesses 300 zum automatischen Erzeugen einer Datennutzungsanweisung und zum Benachrichtigen eines Benutzers bei Überschreiten eines Datennutzungsschwellenwerts gemäß Ausführungsformen der vorliegenden Offenbarung gezeigt. Der Prozess 300 kann von einer Verarbeitungslogik ausgeführt werden, die Hardware (z.B. ein elektronischer Schaltkreis, spezielle Logik, programmierbare Logik, Mikrocode usw.), Software (z B. in einem Prozessor ausgeführte Anweisungen), Firmware oder eine Kombination daraus aufweist. In einigen Ausführungsformen handelt es sich beim Prozess 300 um einen durch einen Computer implementierten Prozess. Der Prozess 300 kann durch den in 1 dargestellten Prozessor 104 ausgeführt werden.
  • Der Prozess 300 beginnt mit dem Empfangen eines Satzes markierter Daten, die einem Satz von Quellcode zugehörig sind. In Ausführungsformen kann der Satz markierter Daten, die dem Satz von Quellcode zugehörig sind, von einem Compiler empfangen werden (z.B. dem Compiler 106 von 1 und 2). Dies ist im Schritt 305 dargestellt.
  • Der Prozess 300 wird fortgesetzt durch Ermitteln eines Bereichs des Quellcodes, dem die markierten Daten zugehörig sind. Dies ist im Schritt 310 dargestellt. Der Bereich des Satzes von markierten Daten kann angeben, welcher Quellcode möglicherweise über einen bestimmten Zeitraum eine Erweiterung des Datenspeichers oder des variablen Speicherplatzes benötigt. Ein Beispiel für den Bereich des Quellcodes, dem die markierten Daten zugehörig sind, wird in 4 näher beschrieben.
  • Der Prozess 300 wird fortgesetzt durch Erzeugen eines ersten Satzes von Anweisungen zum Erstellen einer ersten Momentaufnahme eines variablen Speicherplatzes, der den markierten Daten zugehörig ist, beim Eintreten in den Bereich und einer zweiten Momentaufnahme des variablen Speicherplatzes beim Verlassen des Bereichs. Dies ist im Schritt 315 dargestellt. In Ausführungsformen erzeugt der Compiler die Nutzungsanweisung für markierte Daten, wenn er internen Code erzeugt. Der Compiler kann den ersten Satz von Anweisungen während des Kompiliervorgangs in den ausführbaren Programmcode einfügen, so dass das ausführbare Programm so konfiguriert ist, dass es eine Momentaufnahme des variablen Speicherplatzes beim Eintritt in den Bereich und beim Verlassen des Bereichs erstellt, der den markierten Daten zugehörig ist. Ein Beispiel für ein Eintreten in den Bereich von markierten Daten wird in 4 näher beschrieben.
  • Der Prozess 300 wird fortgesetzt durch Erzeugen eines zweiten Satzes von Anweisungen zum Vergleichen der ersten und der zweiten Momentaufnahme, um eine Nutzungsmenge des variablen Speicherplatzes zu ermitteln, der den markierten Daten zugehörig ist. Dies ist im Schritt 320 dargestellt. In Ausführungsformen erzeugt der Compiler den zweiten Satz von Anweisungen zum Vergleichen der ersten und der zweiten Momentaufnahme und fügt den zweiten Satz von Anweisungen während des Kompiliervorgangs in den ausführbaren Programmcode ein. In Ausführungsformen veranlassen die Anweisungen das ausführbare Programm während des Ausführens des ausführbaren Programms, die Momentaufnahmen zu vergleichen, um die Datennutzung des variablen Speicherplatzes zu ermitteln. In Ausführungsformen vergleicht das ausführbare Programm die Momentaufnahmen kontinuierlich bei jedem Eintreten in den Bereich und bei jedem Verlassen des Bereichs, bis festgestellt wird, dass die Datennutzung des variablen Speicherplatzes einen Schwellenwert überschritten hat. In Ausführungsformen veranlasst der zweite Satz von Anweisungen das Programm außerdem, die ermittelte Datennutzung mit dem Schwellenwert zu vergleichen.
  • Der Prozess 300 wird fortgesetzt durch Erzeugen eines dritten Satzes von Anweisungen zum Ausführen einer Aktion als Reaktion darauf, dass die Nutzungsmenge des variablen Speicherplatzes einen Schwellenwert überschreitet. Dies ist im Schritt 325 dargestellt. In Ausführungsformen erzeugt der Compiler den dritten Satz von Anweisungen zum Ausführen einer Aktion und fügt den dritten Satz von Anweisungen während des Kompiliervorgangs in den ausführbaren Programmcode ein. In Ausführungsformen kann das ausführbare Programm die Aktion als Reaktion auf das Überschreiten eines Datenschwellenwerts (z.B. eines Schwellenwerts für die Datennutzung) ausführen. Wenn der Schwellenwert für den variablen Speicherplatz überschritten wurde, kann beispielsweise eine Benachrichtigung erzeugt und an einen Benutzer übertragen werden. In Ausführungsformen kann es sich bei der Benachrichtigung um eine Warnung handeln, die anzeigt, dass der Satz von markierten Daten ein Datennutzungslimit überschritten hat (z.B. eine Datennutzungsbegrenzung von 75%).
  • Der Prozess 300 wird fortgesetzt durch Kompilieren des Quellcodes in eine ausführbare Datei, wobei die ausführbare Datei den ersten, zweiten und dritten Satz von Anweisungen umfasst. Dies ist im Schritt 330 dargestellt. In Ausführungsformen kann der Compiler die Anweisungen in den ausführbaren Programmcode einfügen.
  • In Ausführungsformen kann eine Anwendung oder ein Programm den ausführbaren Programmcode verwenden, um automatisch zu ermitteln, wann ein Datenspeicher für das jeweilige Computerprogramm nicht mehr ausreicht. Beispielsweise kann eine Anwendung während des Ausführens der Anwendung eine erste Momentaufnahme eines variablen Speicherplatzes erstellen, der einem markierten Objekt zugehörig ist, wenn sie in einen Bereich der markierten Daten in der Anwendung eintritt. Die Anwendung kann eine zweite Momentaufnahme des variablen Speicherplatzes erstellen, wenn der Bereich der markierten Daten verlassen wird. Die Anwendung kann die erste und die zweite Momentaufnahme vergleichen, um eine Nutzungsmenge des variablen Speicherplatzes zu ermitteln, der den markierten Daten zugehörig ist. Die Anwendung kann die Nutzungsmenge mit einem Schwellenwert für die Nutzungsmenge vergleichen. Wenn der Schwellenwert für die Nutzung überschritten wurde, kann die Anwendung als Reaktion darauf, dass die Nutzungsmenge den Schwellenwert für die Nutzung überschreitet, eine Aktion ausführen (z.B. eine Warnung oder Benachrichtigung ausgeben).
  • In einigen Ausführungsformen kann der Prozess ferner ein Ermitteln von Wörterbuchinformationen für zugehörige Daten des Satzes von markierten Daten aufweisen. Der Compiler kann eine Kompilierlistendatei erzeugen, die die Wörterbuchinformationen aufweist. Sobald die Kompilierlistendatei erzeugt wurde, kann diese zusammen mit der Benachrichtigung an den Benutzer ausgegeben werden, um den Benutzer beim Ermitteln zu unterstützen, welcher Programmcode modifiziert werden muss, um den verfügbaren Speicherplatz für die Datennutzung zu vergrößern.
  • In Ausführungsformen können die Wörterbuchinformationen der Kompilierlistendatei verschiedene Querverweisinformationen umfassen. Beispiele für die Querverweisinformationen werden in 5 näher erläutert. Die Querverweisinformationen können sich beispielsweise auf den Satz von markierten Daten oder auf einen Alias des Satzes von markierten Daten beziehen. In einigen Ausführungsformen können die Querverweisinformationen Informationen über die Daten des linken Wertes umfassen, wenn es sich bei dem Satz von markierten Daten in einer Zuweisungsanweisung um einen rechten Wert handelt. In einigen Ausführungsformen können die Querverweisinformationen Informationen über die Daten des linken Wertes umfassen, wenn es sich bei einer Datengröße des Satzes von markierten Daten in der Zuweisungsanweisung um den rechten Wert handelt. In einigen Ausführungsformen können die Querverweisinformationen Informationen anderer Operandendaten umfassen, wenn die Datengröße des Satzes von markierten Daten in einer bedingten Anweisung ein Operand ist. Dies sind lediglich Beispiele für Querverweisinformationen, die nicht als Einschränkung zu verstehen sind.
  • In einigen Ausführungsformen kann das System maschinelles Lernen verwenden, um frühere Daten und/oder markierte Datensätze zu analysieren, um automatisch zu entscheiden, welche Programme modifiziert werden müssen und/oder ein Erhöhen der Datenspeichernutzung erfordern. In einem solchen Fall ist möglicherweise das Ausgeben einer Benachrichtigung an den Benutzer erforderlich. Beispielsweise kann das System auf der Grundlage von Änderungen und/oder Modifikationen des Programmcodes für historische Arrays ähnliche Arrays ermitteln, die sich auf der Grundlage der Datennutzungsanweisungen möglicherweise den Datengrenzen nähern und/oder diese überschreiten könnten. Unter Verwenden dieser Informationen kann das System den Datenspeicher für das jeweilige ausführbare Programm automatisch anpassen, ohne dass ein menschliches Eingreifen erforderlich ist. Auf diese Weise muss das System möglicherweise keine Warnung oder Benachrichtigung an den Benutzer übertragen, da der Datenspeicher automatisch erweitert wurde. In einigen Ausführungsformen kann das System jedoch trotzdem eine Benachrichtigung übertragen, um den Benutzer darüber zu informieren, dass der Datenspeicher erweitert wurde.
  • Unter Bezugnahme auf 4 wird ein beispielhafter Satz von markierten Daten und Programmcode 400 gemäß Ausführungsformen der vorliegenden Offenbarung gezeigt. Während einer internen Codeerzeugungsphase erzeugt der Compiler Datennutzungsanweisungen zum Berechnen eines Nutzungsstatus von markierten Daten. In der veranschaulichten Ausführungsform wird „emp_table“ als der Satz von markierten Daten gekennzeichnet. Der Compiler kann den Bereich der markierten Daten ermitteln, indem er einen Eintrittspunkt 402 und einen Austrittspunkt 404 des Bereichs ermittelt. Nach dem Ermitteln kann der Compiler während des Kompiliervorgangs Anweisungen in den Code des ausführbaren Programms einfügen, so dass eine erste Momentaufnahme des Speicherplatzes von emp_table gespeichert, wenn das ausführbare Programm in den Eintrittspunkt 402 des Bereichs des Satzes von markierten Daten eintritt. Die Anweisungen können ferner einen ausführbaren Programmcode umfassen, der das ausführbare Programm veranlasst, beim Verlassen des Austrittpunktes 404 des Bereichs eine zweite Momentaufnahme des Speicherplatzes von emp_table zu speichern. Die Anweisungen können außerdem einen ausführbaren Programmcode umfassen, der das ausführbare Programm veranlasst, die erste und die zweite Momentaufnahme zu vergleichen, einen Prozentsatz der Datennutzung zu berechnen und eine Datennutzungserklärung zu erzeugen. Die Anweisungen umfassen außerdem einen ausführbaren Programmcode, der das ausführbare Programm veranlasst, eine Benachrichtigung zu erzeugen und auszugeben, wenn die markierten Daten ein Datennutzungslimit überschreiten. Wenn die markierten Daten (z.B. „emp_table“) beispielsweise eine bestimmte vorgegebene Begrenzung oder einen Schwellenwert (z.B. eine Nutzung des Datenspeicherplatzes von 80 %) überschreiten, erzeugt das ausführbare Programm eine Benachrichtigung und gibt diese an einen Benutzer aus. Die Benachrichtigung kann zum Beispiel als Warnmeldung konfiguriert sein, die besagt: „Die Nutzung von emp_table liegt bei über 80%!“.
  • Unter Bezugnahme auf 5 wird nun eine beispielhafte Querverweistabelle 500 für markierte Daten gemäß Ausführungsformen der vorliegenden Offenbarung gezeigt. In der veranschaulichten Ausführungsform sind die markierten Daten als „emp_table“ gekennzeichnet, wie in 4 beschrieben wurde. In Ausführungsformen kann durch den Compiler eine Kompilierlistendatei erzeugt und mit der Benachrichtigung ausgegeben werden. Die Kompilierlistendatei kann verschiedene Querverweisinformationen umfassen, die sich auf den Satz von markierten Daten beziehen und auf die ein Programmierer schnell Bezug nehmen kann, wenn er eine Modifikation an einem entsprechenden Programmcode ausführt (z.B. während des Programmierens der Datenspeichererweiterung).
  • In der veranschaulichten Ausführungsform umfasst die Kompilierlistendatei beispielsweise die Querverweistabelle 500, die Querverweisinformationen (Werte) kennzeichnet, die sich auf den Satz von markierten Daten 502 (z.B. „emp_table“) beziehen. In einem anderen Beispiel kann die Querverweistabelle 500 Querverweisinformationen der linken Wertdaten umfassen, wenn es sich beim Satz von markierten Daten in einer Zuweisungsanweisung um einen rechten Wert 504 handelt (z.B. „emp_sort_table“). In einem anderen Beispiel kann die Querverweistabelle 500 Querverweisinformationen umfassen, die sich auf einen Alias (über einen Compiler-Alias-Mechanismus) des Satzes von markierten Daten 506 beziehen (z.B. „emp_current“). In einem anderen Beispiel kann die Querverweistabelle 500 Querverweisinformationen von anderen Operandendaten umfassen, wenn die Datengröße des Satzes von markierten Daten in einer bedingten Anweisung der Operand 508 ist (z.B. „MAX_HEADCOUNT“). In einem weiteren Beispiel kann die Querverweistabelle 500 Querverweisinformationen der linken Wertdaten umfassen, wenn es sich bei einer Datengröße des Satzes von markierten Daten in der Zuweisungsanweisung um den rechten Wert 510 handelt (z.B. „i“). Mit Hilfe der Kompilierlistendatei kann ein Benutzer (z.B. ein Programmierer) die Programmierzeit verkürzen, indem er die Querverweisinformationen verwendet, um schnell zu entschlüsseln, wo eine Datennutzung bestimmte Grenzen überschritten hat. Auf diese Weise kann der Benutzer Fehler in Verbindung mit Programmierfehlern rechtzeitig verringern und die Stabilität eines entsprechenden Programms erhöhen, indem er den unzureichenden Datenspeicherplatz entdeckt, bevor das Programm das obere Speicherlimit erreicht.
  • Unter Bezugnahme 6 wird nun ein Übersichts-Blockschaltplan eines beispielhaften Computersystems 1101 gemäß Ausführungsformen der vorliegenden Offenbarung gezeigt, das zum Implementieren der hierin beschriebenen Verfahren, Hilfsprogramme und/oder Module und aller damit zusammenhängenden Funktionen (z.B. unter Verwenden von einem oder mehreren Prozessorschaltkreisen oder Computerprozessoren des Computers) verwendet werden kann. In einigen Ausführungsformen können die Hauptkomponenten des Computersystems 1101 eine oder mehrere CPUs 1102, ein Speicherteilsystem 1104, eine Anschlussschnittstelle 1112, eine Speicherschnittstelle 1116, eine E/A- (Ein/Ausgabe-) Einheitenschnittstelle 1114 und eine Netzwerkschnittstelle 1118 aufweisen, die alle direkt oder indirekt über einen Speicherbus 1103, einen E/A-Bus 1108 und eine E/A-Busschnittstelle 1110 zum Datenaustausch zwischen den Komponenten verbunden sein können.
  • Das Computersystem 1101 kann eine oder mehrere programmierbare Universal-Zentraleinheiten (CPUs) 1102A, 1102B, 1102C und 1102D enthalten, die hier allgemein als CPU 1102 bezeichnet werden. In einigen Ausführungsformen kann das Computersystem 1101 mehrere Prozessoren enthalten, wie sie für ein relativ großes System üblich sind; in anderen Ausführungsformen kann es sich beim Computersystem 1101 alternativ auch um ein System mit einer einzigen CPU handeln. Jede CPU 1102 kann Anweisungen ausführen, die im Speicherteilsystem 1104 gespeichert sind, und kann eine oder mehrere Ebenen von integriertem Cache umfassen. In einigen Ausführungsformen kann ein Prozessor mindestens eine Speichersteuereinheit umfassen. In einigen Ausführungsformen kann die CPU die hierin enthaltenen Prozesse ausführen (z.B. den Prozess 200, 300 und 400).
  • Das Teilsystem 1104 des Systemspeichers kann durch ein Computersystem lesbare Medien in Form von flüchtigem Speicher wie etwa ein Direktzugriffsspeicher (RAM) 1122 oder ein Cache 1124 umfassen. Das Computersystem 1101 kann außerdem andere austauschbare/nichtaustauschbare, flüchtige/nichtflüchtige Computersystem-Datenspeichermedien umfassen. Lediglich beispielhaft kann das Speichersystem 1126 zum Lesen und Beschreiben eines nichtaustauschbaren, nichtflüchtigen magnetischen Mediums wie etwa eine „Festplatte“ bereitgestellt werden. Obwohl nicht gezeigt, kann ein Magnetplattenlaufwerk zum Lesen und Beschreiben einer austauschbaren, nichtflüchtigen Magnetplatte (z.B. einer „Diskette“) oder ein optisches Plattenlaufwerk zum Lesen und Beschreiben einer austauschbaren, nichtflüchtigen optischen Platte wie etwa einer CD-ROM, DVD-ROM oder eines anderen optischen Mediums bereitgestellt werden. Darüber hinaus kann das Speicherteilsystem 1104 einen Flash-Speicher umfassen, z.B. einen Flash-Speicherstick oder ein Flash-Laufwerk. Die Speichereinheiten können über eine oder mehrere Datenträgerschnittstellen mit dem Speicherbus 1103 verbunden sein. Das Speicherteilsystem 1104 kann mindestens ein Programmprodukt mit einem Satz (z.B. mindestens einem) von Programmmodulen umfassen, die so konfiguriert sind, dass sie die Funktionen der verschiedenen Ausführungsformen ausführen.
  • Zwar wird der Speicherbus 1103 in 6 als eine einzelne Busstruktur gezeigt, die einen direkten Kommunikationspfad zwischen den CPUs 1102, dem Speicherteilsystem 1104 und der E/A-Busschnittstelle 1110 bereitstellt, jedoch kann der Speicherbus 1103 in einigen Ausführungsformen mehrere verschiedene Busse oder Kommunikationspfade umfassen, die in verschiedenen Formen angeordnet sein können, beispielsweise Punkt-zu-Punkt-Verbindungen in hierarchischen, sternförmigen oder Netzkonfigurationen, mehrere hierarchische Busse, parallele und redundante Pfade oder jeder andere geeignete Typ von Konfiguration. Zwar sind die E/A-Bus-Schnittstelle 1110 und der E/A-Bus 1108 als einzelne Einheiten dargestellt, das Computersystem 1101 kann in einigen Ausführungsformen jedoch außerdem mehrere E/A-Bus-Schnittstellen 1110, mehrere E/A-Busse 1108 oder beides umfassen. Zwar werden mehrere E/A-Schnittstelleneinheiten gezeigt, die den E/A-Bus 1108 von verschiedenen Kommunikationspfaden trennen, die zu den verschiedenen E/A-Einheiten führen, in anderen Ausführungsformen können jedoch einige oder alle E/A-Einheiten direkt mit einem oder mehreren System-E/A-Bussen verbunden sein.
  • In einigen Ausführungsformen kann es sich beim Computersystem 1101 um ein von mehreren Anwendern genutztes Großrechnersystem, ein von einem einzigen Anwender genutztes System oder um einen Server-Computer oder eine ähnliche Einheit handeln, die wenig oder keine direkte Benutzerschnittstelle hat, aber Anforderungen von anderen Computersystemen (Clients) empfängt. Darüber hinaus kann das Computersystem 1101 in einigen Ausführungsformen als Desktop-Computer, tragbarer Computer, Laptop oder Notebook, Tablet-Computer, Taschencomputer, Telefon, Smartphone, Netzvermittlungsstelle oder Leitwegrechner oder jede andere geeignete Art von elektronischer Einheit implementiert sein.
  • Es sei darauf hingewiesen, dass 6 die repräsentativen Hauptkomponenten eines beispielhaften Computersystems 1101 darstellen soll. In einigen Ausführungsformen können jedoch einzelne Komponenten eine größere oder geringere Komplexität haben als in 6 dargestellt, andere Komponenten als die in 6 gezeigten oder zusätzliche Komponenten können vorhanden sein, und die Anzahl, Art und Konfiguration solcher Komponenten können variieren.
  • Ein oder mehrere Programme/Dienstprogramme 1128, von denen jedes mindestens einen Satz von Programmmodulen 1130 hat, können im Speicherteilsystem 1104 gespeichert sein. Die Programme/Dienstprogramme 1128 können einen Hypervisor (auch als Monitor der virtuellen Maschine bezeichnet), ein oder mehrere Betriebssysteme, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten umfassen. Jedes der Betriebssysteme, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine Kombination daraus kann eine Implementierung einer Netzwerkumgebung umfassen. Die Programme/Dienstprogramme 1128 und/oder die Programmmodule 1130 führen im Allgemeinen die Funktionen oder Methodiken verschiedener Ausführungsformen aus.
  • Zwar umfasst diese Offenbarung eine ausführliche Beschreibung von Cloud-Computing, es sollte jedoch von vorherein klar sein, dass Implementierungen der hierin wiedergegebenen Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt sind. Vielmehr können Ausführungsformen der vorliegenden Offenbarung in Verbindung mit einem beliebigen anderen Typ von gegenwärtig bekannter oder zu einem späteren Zeitpunkt entwickelter Datenverarbeitungsumgebung implementiert werden.
  • Cloud-Computing ist ein Dienstleistungsmodell, das einen komfortablen und bedarfsorientierten Netzwerkzugang zu einem gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungs-Ressourcen ermöglicht (z.B. Netzwerke, Netzwerk-Bandbreite, Server, Verarbeitung, Speicher, Speicherplatz, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Dienstes schnell zur Verfügung gestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Charakteristika, mindestens drei Dienstmodelle und mindestens vier Bereitstellungsmodelle umfassen.
  • Bei den Charakteristika handelt es sich um die folgenden:
    • Bedarfsorientierte Selbstbedienung (on-demand self-service): Ein Cloud-Kunde kann je nach Bedarf einseitig Datenverarbeitungs-Ressourcen wie Server-Zeit und Netzspeicher automatisch in Anspruch nehmen, ohne dass eine menschengeführte Interaktion mit dem Anbieter des Dienstes erforderlich ist.
    • Allgemeiner Netzzugriff (broad network access): Ressourcen sind über ein Netzwerk verfügbar und über Standardmechanismen zugänglich, die eine Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
    • Ressourcen-Bündelung (resource pooling): Die Datenverarbeitungs-Ressourcen des Anbieters werden gebündelt, um mehreren Kunden zu dienen, wobei ein Multi-Tenant-Modells verwendet wird, bei dem verschiedene physische und virtuelle Ressourcen entsprechend dem Bedarf dynamisch zugewiesen und erneut zugewiesen werden. Es besteht insofern eine gewisse Unabhängigkeit vom Standort, als der Kunde im Allgemeinen keine Kontrolle über den bzw. Kenntnis vom genauen Standort der bereitgestellten Ressourcen hat, den Standort jedoch auf einer höheren Abstraktionsebene (z.B. Region, Staat oder Datenzentrum) festlegen kann.
    • Schnelle Anpassungsfähigkeit (rapid elasticity): Ressourcen können rasch und anpassungsfähig, in einigen Fällen automatisch, bereitgestellt werden, um schnell eine Erweiterungsmöglichkeit (scale out) zu bieten, und rasch wieder freigegeben werden, wodurch eine schnelle Reduzierung (scale in) geboten wird. Aus Sicht des Kunden scheinen die zur Bereitstellung verfügbaren Ressourcen oftmals unbegrenzt zu sein und können in beliebiger Menge zu einem beliebigen Zeitpunkt erworben werden.
    • Dienst für nutzungsabhängige Abrechnung (measured service): Cloud-Systeme steuern und optimieren die Ressourcen-Nutzung automatisch durch Einsatz einer Messfunktion auf einer Abstraktionsebene, die für den Typ des Dienstes (z.B. Speicherplatz, Verarbeitung, Bandbreite sowie aktive Benutzerkonten) geeignet ist. Die Ressourcen-Nutzung kann überwacht, gesteuert und aufgezeichnet werden, wobei sowohl für den Anbieter als auch für den Abnehmer des verwendeten Dienstes Transparenz gegeben ist.
  • Bei den Dienstmodellen handelt es sich um die Folgenden:
    • Software als Dienstleistung (Software as a Service, SaaS): Die für den Kunden bereitgestellte Funktionalität besteht in der Nutzung der in einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters. Auf die Anwendungen kann von verschiedenen Client-Einheiten durch eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. auf dem Web beruhende eMail) zugegriffen werden. Der Kunde verwaltet bzw. steuert nicht die zugrunde liegende Cloud-Infrastruktur, darunter Netzwerk, Server, Betriebssysteme, Speicherplatz oder sogar einzelne Anwendungsmöglichkeiten, mit der möglichen Ausnahme begrenzter benutzerspezifischer Anwendungskonfigurationseinstellungen.
    • Plattform als Dienstleistung (Platform as a Service, PaaS): Die für den Kunden bereitgestellte Funktionalität besteht in der Verwendung von vom Kunden erstellten oder angeforderten Anwendungen, die unter Verwenden von vom Anbieter unterstützten Programmiersprachen und Hilfsprogrammen erzeugt werden, in der Cloud-Infrastruktur. Der Kunde verwaltet oder steuert nicht die zugrundeliegende Cloud-Infrastruktur, darunter Netze, Server, Betriebssysteme oder Speicherplatz, hat jedoch die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen der Hosting-Umgebung der Anwendung.
    • Infrastruktur als Dienstleistung (Infrastructure as a Service, laaS): Die für den Kunden bereitgestellte Funktionalität besteht in der Bereitstellung von Datenverarbeitung, Speicherplatz, Netzwerken und anderen grundlegenden Datenverarbeitungs-Ressourcen, wobei der Kunde eine beliebige Software einsetzen und ausführen kann, die Betriebssysteme und Anwendungen umfassen kann. Der Kunde verwaltet oder steuert nicht die zugrunde liegende Cloud-Infrastruktur, hat jedoch die Kontrolle über Betriebssysteme, Speicherplatz, eingesetzte Anwendungen und möglicherweise eine begrenzte Kontrolle über die Auswahl von Netzwerkkomponenten (z.B. Host-Firewalls).
  • Bei den Einsatzmodellen handelt es sich um die Folgenden:
    • Private Cloud: Die Cloud-Infrastruktur wird einzig und allein für eine Organisation betrieben. Sie kann durch die Organisation selbst oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
    • Gemeinschaftliche Cloud (community cloud): Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Benutzergemeinschaft mit gemeinsamen Interessen (z.B. Zielsetzung, Sicherheitsanforderungen, Strategie- und Konformitätsüberlegungen). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder fremden Räumen befinden.
    • Öffentliche Cloud (public cloud): Die Cloud-Infrastruktur wird der Allgemeinheit oder einer großen Industriegruppe zur Verfügung gestellt und ist im Besitz einer Organisation, die Cloud-Dienste verkauft.
    • Kombinierte Cloud (hybrid cloud): Die Cloud-Infrastruktur setzt sich aus zwei oder mehreren Clouds (privat, gemeinschaftlich oder öffentlich) zusammen, die eigenständige Einheiten bleiben, jedoch durch eine standardisierte oder firmeneigene Technologie, die die Übertragbarkeit von Daten und Anwendungen ermöglicht, miteinander verbunden sind (z.B. Cloud-Zielgruppenverteilung für eine Auslastungsverteilung zwischen Clouds.
  • Eine Cloud-Computing-Umgebung ist dienstleistungsorientiert mit Fokus auf Statusunabhängigkeit, loser Kopplung, Modularität und semantischer Interoperabilität. Den Kern des Cloud-Computing bildet eine Infrastruktur, die ein Netzwerk aus miteinander verbundenen Knoten aufweist.
  • Unter Bezugnahme auf 7 ist eine veranschaulichende Cloud-Computing-Umgebung 50 abgebildet. Wie gezeigt ist, weist die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10 auf, mit denen von Cloud-Nutzern verwendete lokale Datenverarbeitungseinheiten wie der elektronische Assistent (PDA, personal digital assistant) oder das Mobiltelefon 54A, der Desktop-Computer 54B, der Laptop-Computer 54C und/oder das Automobil-Computer-System 54N Daten austauschen können. Die Knoten 10 können miteinander Daten austauschen. Sie können physisch oder virtuell in ein oder mehrere Netzwerke wie private, gemeinschaftliche, öffentliche oder kombinierte Clouds gruppiert werden (nicht gezeigt), wie vorstehend beschrieben wurde, oder in eine Kombination daraus. Dies ermöglicht es der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und/oder Software als Dienstleistung anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sei darauf hingewiesen, dass die Arten von in 7 gezeigten Datenverarbeitungseinheiten 54A, 54B, 54C und 54N lediglich veranschaulichend sein sollen und dass die Datenverarbeitungsknoten 10 und die Cloud-Computing-Umgebung 50 über eine beliebige Art Netzwerk und/oder über eine beliebige Art von über ein Netzwerk aufrufbarer Verbindung (z.B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.
  • Unter Bezugnahme auf 8 wird nun ein Satz von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (7) bereitgestellt werden. Es sollte von vornherein klar sein, dass die in 8 gezeigten Komponenten, Schichten und Funktionen lediglich veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie abgebildet ist, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
    • Eine Hardware- und Software-Schicht 60 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten gehören: Mainframe-Computer 61; auf der RISC- (Reduced Instruction Set Computer) Architektur beruhende Server 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke sowie Netzwerkkomponenten 66. In einigen Ausführungsformen umfassen Software-Komponenten eine Netzwerk-Anwendungsserver-Software 67 und eine Software 68 für die Planung von Robotereinheiten in Bezug auf die Client-Einheit 102 von 1.
  • Eine Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Einheiten bereitgestellt werden können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, darunter virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann eine Verwaltungsschicht 80 die nachfolgend beschriebenen Funktionen bereitstellen. Die Ressourcen-Versorgung (resource provisioning) 81 stellt dynamisches Beschaffen von Datenverarbeitungs-Ressourcen sowie anderen Ressourcen bereit, die zum Durchführen von Aufgaben innerhalb der Cloud-Computing-Umgebung verwendet werden. Die Gebührenerfassung und Preisermittlung (metering and pricing) 82 stellt eine Kostenverfolgung beim Verwenden von Ressourcen innerhalb der Cloud-Computing-Umgebung sowie eine Abrechnung oder Rechnungsstellung für die Inanspruchnahme dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungssoftware-Lizenzen aufweisen. Die Sicherheit (security) stellt eine Identitätsüberprüfung für Cloud-Kunden und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Das Benutzerportal 83 stellt den Zugang zu der Cloud-Computing-Umgebung für Nutzer und für Systemadministratoren bereit. Die Dienstgüteverwaltung (service level management) 84 stellt eine Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, so dass die Anforderungen an die Dienstgüte erfüllt werden. Die Planung und Erfüllung der Dienstgütevereinbarung (SLA, Service Level Agreement planning and fulfillment) 85 stellt die Vorbereitung für und die Beschaffung von Cloud-Computing-Ressourcen bereit, für die gemäß einer SLA ein künftiger Bedarf vorausgesehen wird.
  • Eine Arbeitslastenschicht (workloads layer) 90 stellt Beispiele einer Funktionalität bereit, für welche die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Abbildung und Navigation 91; Software-Entwicklung und Lebenszyklusverwaltung 92; virtuelles Klassenzimmer 93 als Bildungsangebot; Datenanalyseverarbeitung 94; Transaktionsverarbeitung 95; und mobile Desktops 96.
  • Wie hierin ausführlicher erläutert wird, ist es denkbar, dass einige oder alle Vorgänge einiger der hierin beschriebenen Ausführungsformen von Verfahren in alternativer Reihenfolge oder gar nicht ausgeführt werden; außerdem können mehrere Vorgänge gleichzeitig oder als interner Teil eines größeren Prozesses erfolgen.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt mit jedem möglichen technischen Integrationsgrad handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zum Verwenden durch eine Einheit zum Ausführen von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. ein Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs/Verarbeitungs-Einheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs/Verarbeitungs-Vorrichtung empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zum Speichern in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs/Verarbeitungs-Einheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Einheiten (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Computers oder einer anderen programmierbaren Datenverarbeitungseinheit bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungseinheit und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungseinheit oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Einheit oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Einheit oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Ausführen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen in einem Schritt ausgeführt werden, der gleichzeitig, im Wesentlichen gleichzeitig, teilweise oder vollständig zeitlich überlappend erfolgt, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die hierin verwendete Terminologie dient lediglich zum Beschreiben bestimmter Ausführungsformen und soll die verschiedenen Ausführungsformen nicht einschränken. Wie hierin verwendet, sollen die Singularformen „ein(e)“ und „der/die/das“ auch die Pluralformen mit einschließen, sofern aus dem Kontext nicht eindeutig etwas anderes hervorgeht. Außerdem versteht es sich von selbst, dass die Begriffe „umfasst“ und „umfassen“ bei Verwenden in dieser Beschreibung das Vorhandensein von dargelegten Merkmalen, ganzen Zahlen, Schritten, Arbeitsgängen, Elementen und/oder Komponenten angeben, jedoch das Vorhandensein oder Hinzufügen von einem oder mehreren anderen Merkmalen, ganzen Zahlen, Schritten, Arbeitsgängen, Elementen, Komponenten und/oder Gruppen aus diesen nicht ausschließen. In der vorstehenden ausführlichen Beschreibung beispielhafter Ausführungsformen der verschiedenen Ausführungsformen wurde auf die beigefügten Zeichnungen Bezug genommen (wobei gleiche Zahlen gleiche Elemente darstellen), die einen Teil hiervon bilden und in denen zur Veranschaulichung spezifische beispielhafte Ausführungsformen gezeigt werden, in denen die verschiedenen Ausführungsformen ausgeführt werden können. Diese Ausführungsformen wurden hinreichend detailliert beschrieben, um es Fachleuten zu ermöglichen, die Ausführungsformen umzusetzen, es können jedoch auch andere Ausführungsformen verwendet und logische, mechanische, elektrische und andere Änderungen vorgenommen werden, ohne vom Schutzumfang der verschiedenen Ausführungsformen abzuweichen. In der vorstehenden Beschreibung wurden zahlreiche spezifische Einzelheiten dargelegt, um ein gründliches Verständnis der verschiedenen Ausführungsformen zu ermöglichen. Die verschiedenen Ausführungsformen können jedoch auch ohne diese spezifischen Details umgesetzt werden. In anderen Fällen wurden bekannte Schaltkreise, Strukturen und Techniken nicht im Detail gezeigt, um Ausführungsformen nicht in den Hintergrund rücken zu lassen.
  • Wie hierin verwendet, bedeutet „eine Anzahl von“ ein oder mehrere Elemente, wenn der Begriff in Bezug auf Elemente verwendet wird. Beispielsweise handelt es sich bei „einer Anzahl verschiedener Typen von Netzwerken“ um ein oder mehrere verschiedene Typen von Netzwerken.
  • Wenn verschiedene Bezugsziffern eine gemeinsame Zahl, gefolgt von unterschiedlichen Buchstaben (z.B. 100a, 100b, 100c) oder Satzzeichen, gefolgt von unterschiedlichen Zahlen (z.B. 100-1, 100-2 oder 100.1, 100.2) aufweisen, kann sich die Verwendung der Bezugszeichens allein ohne den Buchstaben oder die nachfolgenden Zahlen (z.B. 100) auf die gesamte Gruppe von Elementen, eine beliebige Teilgruppe der Gruppe oder ein beispielhaftes Exemplar der Gruppe beziehen.
  • Darüber hinaus bedeutet die Formulierung „mindestens ein/e“, wenn sie in Bezug auf eine Liste von Elementen verwendet wird, dass verschiedene Kombinationen aus einem oder mehreren der aufgelisteten Elemente verwendet werden können und dass möglicherweise nur eines von jedem Element in der Liste benötigt wird. Mit anderen Worten, „mindestens ein/e“ bedeutet, dass eine beliebige Kombination von Elementen und eine beliebige Anzahl von Elementen aus der Liste verwendet werden können, jedoch nicht alle Elemente aus der Liste erforderlich sind. Bei dem Element kann es sich um ein bestimmtes Objekt, eine Sache oder eine Kategorie handeln.
  • Beispielsweise, jedoch ohne Einschränkung, kann „mindestens eines von Element A, Element B oder Element C“ Element A, Element A und Element B oder Element B umfassen. Dieses Beispiel kann auch Element A, Element B und Element C oder Element B und Element C umfassen. Selbstverständlich können alle Kombinationen dieser Elemente vorhanden sein. In einigen veranschaulichenden Beispielen kann es sich bei „mindestens ein/e“ zum Beispiel, jedoch ohne Einschränkung, um zwei von Element A, eines von Element B und zehn von Element C, vier von Element B und sieben von Element C oder um andere geeignete Kombinationen handeln.
  • Verschiedene Vorkommen des Wortes „Ausführungsform“, wie sie in dieser Beschreibung verwendet werden, beziehen sich nicht unbedingt auf dieselbe Ausführungsform. Bei allen hierin dargestellten oder beschriebenen Daten und Datenstrukturen handelt es sich lediglich um Beispiele, und in anderen Ausführungsformen können andere Datenmengen, Datentypen, Felder, Anzahl und Typen von Feldern, Feldnamen, Anzahl und Typen von Zeilen, Datensätze, Einträge oder Datenorganisationen verwendet werden. Darüber hinaus können beliebige Daten mit Logik kombiniert werden, so dass eine separate Datenstruktur nicht unbedingt erforderlich ist. Die vorstehende ausführliche Beschreibung ist daher nicht als einschränkend zu verstehen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Offenbarung dienen der Veranschaulichung, sollen jedoch nicht erschöpfend oder auf die offenbarten Ausführungsformen beschränkt sein. Viele Modifikationen und Änderungen werden für Fachleute offensichtlich sein, ohne vom Schutzumfang und Gedanken der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder die technische Verbesserung gegenüber auf dem Markt befindlichen Technologien bestmöglich zu erläutern oder um es anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.
  • Zwar wurde die vorliegende Erfindung mittels spezifischer Ausführungsformen beschrieben, es wird jedoch davon ausgegangen, dass Änderungen und Modifikationen davon für Fachleute offensichtlich sind. Daher sollen die folgenden Ansprüche so ausgelegt werden, dass sie alle Änderungen und Modifikationen einschließen, die unter den wahren Gedanken und Schutzumfang der Erfindung fallen.

Claims (10)

  1. Durch einen Computer implementiertes Verfahren, das aufweist: Empfangen eines Satzes von markierten Daten, die einem Satz von Quellcode zugehörig sind; Ermitteln eines Bereichs des Quellcodes, dem die markierten Daten zugehörig sind; Erzeugen eines ersten Satzes von Anweisungen, um eine erste Momentaufnahme eines variablen Speicherplatzes, der den markierten Daten zugehörig ist, beim Eintreten in den Bereich und eine zweite Momentaufnahme des variablen Speicherplatzes beim Verlassen des Bereichs zu erstellen; Erzeugen eines zweiten Satzes von Anweisungen zum Vergleichen der ersten und der zweiten Momentaufnahme, um eine Nutzungsmenge des variablen Speicherplatzes zu ermitteln, der den markierten Daten zugehörig ist; Erzeugen eines dritten Satzes von Anweisungen, um als Reaktion darauf, dass die Nutzungsmenge des variablen Speicherplatzes einen Schwellenwert überschreitet, eine Aktion auszuführen; und Kompilieren des Quellcodes in eine ausführbare Datei, wobei die ausführbare Datei den ersten, zweiten und dritten Satz von Anweisungen umfasst.
  2. Durch einen Computer implementiertes Verfahren nach Anspruch 1, das außerdem aufweist: Ermitteln von Wörterbuchinformationen für zugehörige Daten des Satzes von markierten Daten; und Erzeugen einer Kompilierlistendatei, die die Wörterbuchinformationen aufweist.
  3. Durch einen Computer implementiertes Verfahren nach Anspruch 2, wobei die Wörterbuchinformationen der Kompilierlistendatei mindestens eines aus der Gruppe aufweisen, die besteht aus: Querverweisinformationen, die sich auf den Satz von markierten Daten beziehen; Querverweisinformationen, die sich auf einen Alias des Satzes von markierten Daten beziehen; Querverweisinformationen von Daten des linken Wertes, wenn es sich beim Satz von markierten Daten in einer Zuweisungsanweisung um einen rechten Wert handelt; Querverweisinformationen der Daten des linken Wertes, wenn es sich bei einer Datengröße des Satzes von markierten Daten in der Zuweisungsanweisung um den rechten Wert handelt; und Querverweisinformationen von anderen Operandendaten, wenn es sich bei der Datengröße des Satzes von markierten Daten in einer bedingten Anweisung um einen Operanden handelt.
  4. Durch einen Computer implementiertes Verfahren nach Anspruch 2, das außerdem ein Ausgeben der Kompilierlistendatei an den Benutzer aufweist.
  5. Durch einen Computer implementiertes Verfahren nach Anspruch 1, wobei die Aktion als Reaktion darauf, dass die Nutzungsmenge des variablen Speicherplatzes einen Schwellenwert überschreitet, Anweisungen zum Ausgeben einer Benachrichtigung an einen Benutzer aufweist.
  6. Durch einen Computer implementiertes Verfahren nach Anspruch 5, wobei die Benachrichtigung anzeigt, dass der Satz von markierten Daten ein Datennutzungslimit überschritten hat.
  7. Durch einen Computer implementiertes Verfahren nach Anspruch 5, das außerdem aufweist: als Reaktion auf die Benachrichtigung Empfangen einer Eingabe vom Benutzer zum Modifizieren des variablen Speicherplatzes.
  8. Durch einen Computer implementiertes Verfahren nach Anspruch 7, wobei die Eingabe vom Benutzer den variablen Datenspeicher vergrößert.
  9. System, das aufweist: einen Prozessor; und ein durch einen Computer lesbares Speichermedium, das zum Datenaustausch mit dem Prozessor verbunden ist und Programmanweisungen speichert, die bei Ausführen durch den Prozessor den Prozessor veranlassen, ein Verfahren auszuführen, wobei das Verfahren aufweist: Empfangen eines Satzes von markierten Daten, die einem Satz von Quellcode zugehörig sind; Ermitteln eines Bereichs des Quellcodes, dem die markierten Daten zugehörig sind; Erzeugen eines ersten Satzes von Anweisungen, um eine erste Momentaufnahme eines variablen Speicherplatzes, der den markierten Daten zugehörig ist, beim Eintreten in den Bereich und eine zweite Momentaufnahme des variablen Speicherplatzes beim Verlassen des Bereichs zu erstellen; Erzeugen eines zweiten Satzes von Anweisungen zum Vergleichen der ersten und der zweiten Momentaufnahme, um eine Nutzungsmenge des variablen Speicherplatzes zu ermitteln, der den markierten Daten zugehörig ist; Erzeugen eines dritten Satzes von Anweisungen, um als Reaktion darauf, dass die Nutzungsmenge des variablen Speicherplatzes einen Schwellenwert überschreitet, eine Aktion auszuführen; und Kompilieren des Quellcodes in eine ausführbare Datei, wobei die ausführbare Datei den ersten, zweiten und dritten Satz von Anweisungen umfasst.
  10. Computerprogrammprodukt, das ein durch einen Computer lesbares Speichermedium mit darin enthaltenen Programmanweisungen aufweist, wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen, ein Verfahren auszuführen, wobei das Verfahren aufweist: Empfangen eines Satzes von markierten Daten, die einem Satz von Quellcode zugehörig sind; Ermitteln eines Bereichs des Quellcodes, dem die markierten Daten zugehörig sind; Erzeugen eines ersten Satzes von Anweisungen, um eine erste Momentaufnahme eines variablen Speicherplatzes, der den markierten Daten zugehörig ist, beim Eintreten in den Bereich und eine zweite Momentaufnahme des variablen Speicherplatzes beim Verlassen des Bereichs zu erstellen; Erzeugen eines zweiten Satzes von Anweisungen zum Vergleichen der ersten und der zweiten Momentaufnahme, um eine Nutzungsmenge des variablen Speicherplatzes zu ermitteln, der den markierten Daten zugehörig ist; Erzeugen eines dritten Satzes von Anweisungen, um als Reaktion darauf, dass die Nutzungsmenge des variablen Speicherplatzes einen Schwellenwert überschreitet, eine Aktion auszuführen; und Kompilieren des Quellcodes in eine ausführbare Datei, wobei die ausführbare Datei den ersten, zweiten und dritten Satz von Anweisungen umfasst.
DE102021129175.5A 2020-12-10 2021-11-10 Automatisches erweitern eines programmdatenspeichers Pending DE102021129175A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/117,405 US11392473B2 (en) 2020-12-10 2020-12-10 Automated extension of program data storage
US17/117,405 2020-12-10

Publications (1)

Publication Number Publication Date
DE102021129175A1 true DE102021129175A1 (de) 2022-12-22

Family

ID=79163992

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021129175.5A Pending DE102021129175A1 (de) 2020-12-10 2021-11-10 Automatisches erweitern eines programmdatenspeichers

Country Status (4)

Country Link
US (1) US11392473B2 (de)
JP (1) JP2022092604A (de)
DE (1) DE102021129175A1 (de)
GB (1) GB2603264B (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116756710B (zh) * 2023-08-16 2024-03-22 深圳开源互联网安全技术有限公司 基于特征标记追踪技术的开源治理方法、系统及电子设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062761B2 (en) 2001-07-10 2006-06-13 Micron Technology, Inc. Dynamic arrays and overlays with bounds policies
WO2003054704A1 (en) 2001-12-19 2003-07-03 Netuitive Inc. Method and system for analyzing and predicting the behavior of systems
US6804682B1 (en) 2002-04-29 2004-10-12 Borland Software Corporation System and methodology providing compiler-assisted refactoring
US20080148102A1 (en) 2006-12-15 2008-06-19 International Business Machines Corporation Method for enhancing debugging of runtime memory access errors by using an integrated visualization tool and a runtime memory error detection tool
US7676510B1 (en) * 2006-12-22 2010-03-09 Network Appliance, Inc. Space reservation monitoring in a fractionally reserved data storage system
US9009679B2 (en) * 2012-06-28 2015-04-14 International Business Machines Corporation Determining snapshot placement
US10353679B2 (en) * 2014-10-31 2019-07-16 Microsoft Technology Licensing, Llc. Collecting profile data for modified global variables
US9619366B1 (en) 2015-11-12 2017-04-11 International Business Machines Corporation Object monitoring in code debugging
US10241811B2 (en) 2016-11-23 2019-03-26 Significs And Elements, Llc Systems and methods for automatic data management for an asynchronous task-based runtime

Also Published As

Publication number Publication date
JP2022092604A (ja) 2022-06-22
GB2603264A (en) 2022-08-03
US11392473B2 (en) 2022-07-19
GB2603264B (en) 2023-03-01
GB202116912D0 (en) 2022-01-05
US20220188206A1 (en) 2022-06-16

Similar Documents

Publication Publication Date Title
DE112018002984T5 (de) Konformitätsbewusste Laufzeiterzeugung auf Grundlage von Anwendungsmustern und Risikobeurteilung
DE112020003820T5 (de) Erkennung von Anomalien und Abweichungen unter Verwendung eines domänenindizierten Einschränkungs-Repository
DE112021000467T5 (de) Generierung von mikrodiensten aus einer monolithischen anwendung auf grundlage von laufzeit-traces
DE112020002110T5 (de) Ressourcenarme entitätsauflösung mit transfer learning
DE112018005167T5 (de) Aktualisieren von trainingsdaten
DE112016001902T5 (de) Schätzen von Rechenressourcen für die Ausführung von Data-Mining-Diensten
DE112020005095T5 (de) Automatische trennung und extraktion von tabellendaten unter verwendung von maschinellem lernen
DE112018004660T5 (de) Verwenden von kommentaren zum bereitstellen von optimierungen
DE112021005422T5 (de) Auf lernen beruhende arbeitslast-ressourcenoptimierung für datenbank-managementsysteme
DE112021002572T5 (de) Multikriterielles optimieren von anwendungen
CN113826120B (zh) 神经网络的数据集相关的低秩分解
DE112021003262T5 (de) Erkennen von quelldatensätzen, die zu einem transferlernverfahren für eine zieldomäne passen
DE112020003744T5 (de) Durch dienstqualitätskriterien vorgegebenes automatisiertes betriebsdatenmanagement
DE102021127254A1 (de) Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern
DE112021003583T5 (de) Sprachenübergreifendes transferlernen ohne trainingsbeispiele
DE112021005782T5 (de) Korrigieren von Antwortpannen
DE112021001163T5 (de) Dynamisches erstellen von facetten unter verwendung von graphpartitionierung
DE112020002344T5 (de) Feature engineering zur optimierung von neuronalen netzwerken
DE112021006215T5 (de) Automatisierte Deep-Learning-Architekturauswahl für Zeitreihenvorhersage mit Benutzerinteraktion
DE112021004234T5 (de) Einsetzen von metalernen zum optimieren der automatischen auswahl von pipelinesdes maschinellen lernens
DE112021005569T5 (de) Kontradiktorisches, halbüberwachtes one-shot-lernen
DE112020005306T5 (de) Implementierung von arbeitslasten in einer multi-cloud-umgebung
DE102021130359A1 (de) Ressourcenzuordnung auf der grundlage eines kontextbezogenen szenarios
DE112021003184T5 (de) Ermittlung von laufzeitumgebungen für software-container
DE102021129175A1 (de) Automatisches erweitern eines programmdatenspeichers

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence