-
Diese Anmeldung beansprucht die Priorität der vorläufigen Anmeldung 62256212, eingereicht am 17. November 2015, deren Inhalt hier durch Bezugnahme vollständig mit aufgenommen ist.
-
Die vorliegende Erfindung bezieht sich auf Systeme für die Protokollanalyse für Anwendungen, Sensoren oder Instrumente.
-
Menschen kommunizieren über natürliche Sprache, Maschinen kommunizieren mit menschlichen Wesen und mit anderen Vorrichtungen über Protokollnachrichten. Täglich werden durch soziale Netzwerke, Bankensysteme, Gesundheitsfürsorgesysteme, intelligente Städte, loT-Vorrichtungen usw. zahlreiche Protokollnachrichten erzeugt. Administratoren sind daran interessiert, diese Protokollnachrichten zu analysieren, um künftige Ereignisse vorherzusagen, Anomalien zu detektieren oder Leistungsfähigkeitsprobleme zu suchen und zu beseitigen. Um ein Protokoll zu analysieren, müssen Anwender es zunächst parsen, um seinen Inhalt zu verstehen. Eine herkömmliche Art, die Protokolle zu parsen, ist, manuell einige reguläre Ausdrücke (regex) zu ersinnen. Da Protokolle unterschiedliche Formate aufweisen, ist dies tatsächlich schwer. Es gibt keine Vorkenntnis darüber, wie viele eindeutige Formate in den Protokollen vorhanden sind. Außerdem erzeugen Webserver und loT-Vorrichtungen täglich Millionen Protokolle. Um mit dieser Rate Schritt zu halten, sollte der Protokollparser in der Lage sein, in wenigen Stunden Millionen Protokolle zu behandeln.
-
Herkömmliche Systeme erfordern, dass durch den Anwender des Systems verschiedene Parameter eingestellt werden. Da der Anwender keine Vorstellung über den besten Wert dieser Parameter haben kann, ist dies problematisch. Außerdem ist es möglich, dass der Anwender mit der abschließenden Menge von Mustern nicht zufrieden ist, falls der Anwender einige Werte für diese Parameter einstellt und den gesamten Protokollanalysator ausführt. Die einzige Wahl, die er in einer solchen Situation hat, ist das Einstellen verschiedener Werte für die Parameter und das erneute Ausführen der gesamten Pipeline. Ferner dauert jede Runde der Ausführung wegen der langsamen Durchführung in herkömmlichen Systemen eine lange Zeit, so dass unter diesem Gesichtspunkt keine Flexibilität für die Nutzbarkeit bereitgestellt wird.
-
ZUSAMMENFASSUNG
-
Es werden Systeme und Verfahren zum Parsen von Protokollen von beliebigen oder unbekannten Systemen oder Anwendungen durch Erfassen heterogener Protokolle von den beliebigen oder unbekannten Systemen oder Anwendungen; Erzeugen eines Musters für jede eindeutige Protokollnachricht; Aufbauen eines Musterhierarchiebaums durch Gruppieren von Mustern auf der Grundlage von Ähnlichkeitsmetriken, wobei für jede Gruppe durch Kombinieren aller Bildungsmuster dieser Gruppe ein Muster erzeugt wird; und Auswählen einer Menge von Mustern aus dem Musterhierarchiebaum offenbart.
-
Vorteile des Systems können einen oder mehrere der Folgenden enthalten. Das System benötigt keine Eingabeparameter von einem Anwender. Es wird ein schneller und speichereffizienter Clusterungsprozess geschaffen, der speziell für durch Computerprogramme erzeugte Protokolle ausgelegt ist. Es wird ein schneller Mustererkennungsprozess geschaffen, der speziell dafür ausgelegt ist, mit durch Computerprogramme erzeugten Protokollen zu arbeiten. Der iterative Prozess kombiniert Clusterungs- und Mustererkennungsalgorithmen und erzeugt eine Hierarchie von Mustern. Aus dieser Hierarchie kann ein Anwender eine Menge von Mustern auswählen, um seine spezifischen Verwendungsfälle zu erfüllen. Das System detektiert in heterogenen Protokollquellen, die durch moderne Vorrichtungen erzeugt werden, automatisch Anomalien. Das System kann Protokolle, die durch Sensoren, durch Computersoftware oder durch das Internet of Things erzeugt werden, verarbeiten. Das System benötigt keine menschliche Eingabe oder eine vorhergehende Referenz üblicher Muster. Das System ist vollständig automatisiert und stützt sich auf nicht überwachte Algorithmen für maschinelles Lernen, um die Anwender über irgendwelche Anomalien in dem System zu warnen. Das Überwachen und Auslösen von Warnungen ist ein wesentlicher „Erstangriffs“-Mechanismus, um Probleme in großtechnischer Produktionssoftware schnell zu erfassen. Darüber hinaus ist es wichtig, das Symptom und seine potentiellen Ursachen so früh wie möglich zu lokalisieren. Das System stellt eine Plattform bereit, die Datenanalytik und Modelle eingliedern kann und die Warnungen, ihre potentiellen Ursachen unter Verwendung fortgeschrittener Techniken des maschinellen Lernens forcieren kann. Das System kann an irgendwelchen ungeänderten Protokollen ohne Vorkenntnis der Struktur ausgeführt werden.
-
Figurenliste
-
- 1 zeigt einen beispielhaften Musterentdeckungsprozess.
- 2 zeigt Einzelheiten eines beispielhaften präzisen Mustererzeugungsprozesses.
- 3 zeigt eine Darstellung, wie der Prozess eine Protokollnachricht tokenisiert.
- 4 zeigt die Einzelheiten eines beispielhaften Musterbaumaufbauprozesses.
- 5 stellt eine beispielhafte Zusammenführung zweier Muster dar.
- 6 zeigt einen iterativen Prozess mit Clusterung und Mustererkennung.
- 7 zeigt einen beispielhaften Musterbaum.
- 8 zeigt die Einzelheit des Musterauswahlprozesses.
- 9 zeigt einen beispielhaften Blockschaltplan für Hardware, die das System ausführt.
-
BESCHREIBUNG
-
1 zeigt einen beispielhaften Musterentdeckungsprozess. Das System behandelt das Problem der effizienten Erzeugung einer Menge regulärer Ausdrücke aus einer Menge heterogener Protokolle in der Weise, dass alle Protokolle richtig geparst werden können. In dieser Erfindung ist jeder reguläre Ausdruck als ein „Muster“ bezeichnet.
-
Nunmehr übergehend zu Fig. 1 führt das System in 101 eine Erhebung heterogener Protokolle aus. Dieser Schritt nimmt heterogene Protokolle von beliebigen/unbekannten Systemen oder Anwendungen. Protokolle enthalten unstrukturierten Textinhalt mit einem oder mehreren Feldern. Außerdem können sie Zeitstempel enthalten. Nachfolgend erfolgt in 102 eine präzise Mustererzeugung. Dieser Schritt erzeugt für jede eindeutige Protokollnachricht ein Muster. In 103 baut der Prozess einen Musterhierarchiebaum auf. Dieser Schritt gruppiert Muster von 102 auf der Grundlage von Ähnlichkeitsmetriken und erzeugt für jede Gruppe durch Kombinieren aller Bildungsmuster dieser Gruppe ein Muster. Dieser Schritt beginnt mit einem kleinen Ähnlichkeitsabstandsschwellenwert und erhöht ihn allmählich, so dass mehrere Muster zusammengeführt werden können. Für jeden Ähnlichkeitsabstandsschwellenwert erzeugt er eine Menge von Mustern, die folglich zusammengeführt werden, um weniger Muster zu erzeugen. Wenn nur ein einziges Muster verblieben ist, hält er an. Somit erzeugt er einen Musterbaum. In diesem Baum enthält die Endknotenebene alle präzisen Muster, während die Wurzelknotenebene nur ein einziges Muster enthält. Alle Zwischenknotenebenen enthalten Muster, die durch Zusammenführen mehrerer Muster von ihren unteren Ebenen auf der Grundlage des Ähnlichkeitsabstands aufgebaut werden.
-
Nachfolgend führt das System in 104 die Musterauswahl aus. In diesem Schritt werden aus dem in 103 erzeugten Musterbaum eine Menge von Mustern ausgewählt. In dem Musterbaum enthalten Endknotenebenenmuster keine Platzhalter, während Muster der oberen Ebenen Platzhalter enthalten können. Üblicherweise rufen Platzhalter einen Rechenorganisationsaufwand hervor, wenn Protokolle verarbeitet werden. Außerdem sind üblicherweise weniger Muster besser, da sie den Rechenorganisationsaufwand verringern. Zweifellos gibt es hinsichtlich des Rechenorganisationsaufwands zwischen Platzhaltern und der Anzahl von Mustern eine Abwägung. In Schritt 104 kann der Anwender eine Menge von Mustern, die vorgegebene Notwendigkeiten erfüllen, wählen.
-
Das System aus 1 behandelt sowohl das Skalierbarkeits- als auch das Flexibilitätsproblem mit einer vollständig neuen Vorgehensweise. Es behandelt in kurzer Zeit eine viel größere Anzahl von Protokollen, ohne viel Speicher zu verbrauchen, und wenn der Anwender mit der abschließenden Menge von Mustern nicht zufrieden ist, braucht er nicht das gesamte System erneut auszuführen. Außerdem benötigt das System keine Parameter, um Muster zu erzeugen.
-
Das System setzt eine spezielle Eigenschaft der durch Computervorrichtungen erzeugten Protokolle wirksam ein. Es nimmt an, dass die Protokolle nicht wie zufällige Sätze aus einem Geschichtenbuch sind. Sie werden durch ein Computerprogramm erzeugt. In jedem Anwendungsquellcode, der Protokolle erzeugt, gibt es einige spezifische Zeilen von Code, so dass sie alle durch eine Menge spezifischer Formate erzeugt werden. Das heißt, dass alle Protokolle, die durch dasselbe Format in dem Quellcode erzeugt werden, zueinander stark ähnlich sind. Falls angenommen wird, dass die beste Clusterung der Protokolle wäre, alle Protokelle, die einem Muster entsprechen, in demselben Cluster abzulegen, ist der Ähnlichkeitsabstand zwischen allen Protokollen innerhalb eines Clusters im Vergleich zu dem Abstand zwischen Protokollen über die Cluster sehr klein. Somit gibt es in dem Raum sehr dichte Cluster. Diese Eigenschaft von Protokollen hilft den Erfindern, einen einfachen und effizienten Prozess zur Clusterung und Mustererkennung zu entwerfen.
-
2 zeigt Einzelheiten eines beispielhaften präzisen Mustererzeugungsprozesses. In 201 erfolgt die Protokolltokenisierung. Es werden beliebige heterogene Protokolle (von 101) genommen und es wird eine Tokenisierung verarbeitet, um aus den Protokollen semantisch sinnvolle Token zu erzeugen. Der Prozess teilt jedes eingehende Protokoll auf der Grundlage einer Menge von Begrenzern (d. h. Leerraum, Komma usw.). Daraufhin detektiert der Prozess eine Menge vordefinierter Datentypen wie etwa Datum, Zeit, IP, und Zahl und ersetzt er den wirklichen Wert dieser Felder durch den Namen des Felds. Zum Beispiel ersetzt das System 09. 07. 2014 durch „Datum“, 192.168.32.10 durch „IP“ und „12523“ durch „Zahl“ usw. Diese Menge vordefinierter Typen kann auf der Grundlage der Anforderungen eines Anwenders geändert werden, da er den wirklichen Inhalt eines bestimmten Typs für wichtiger halten kann. 3 zeigt eine Darstellung, wie der Prozess eine Protokollnachricht tokenisiert.
-
In 202 erzeugt der Prozess durch Kombinieren aller seiner Token von 201 in einem einzigen Wort eine Kompaktsignatur für ein Protokoll und wendet er eine Funktion an, die für jedes eindeutige Wort einen eindeutigen Zahlenwert erzeugt. In 203 bestimmt der Prozess die Eindeutigkeit einer Kompaktsignatur. Der Prozess unterhält für alle eindeutigen Kompaktsignaturen einen Index. Jeder Indexeintrag enthält eine Kompaktsignatur als „Schlüssel“ und ihre zugeordneten Metadaten als „Wert“. Metadaten enthalten Protokolltoken und einen Zähler. Später erzeugt der Prozess aus diesen Token Muster für Protokolle. Das System schlägt diesen Index für jedes eingehende Protokoll unter Verwendung seiner Kompaktsignatur nach. Falls ein Zusammenpassen ermittelt wird, heißt das, dass das System bereits ein Protokoll, das dieses eingehende Protokoll umfasst, ermittelt hat, so dass der Prozess dieses Protokoll einfach verwirft und den Zähler um eins erhöht. Andernfalls speichert das System die Kompaktsignatur mit dem zugeordneten Token in einem Index und stellt es den Zählerwert auf eins ein. Die Speicheranforderung zum Erzeugen präziser Muster ist dieser Platz, der zum Speichern dieses Index notwendig ist. Außerdem hängt die Indexgröße nicht von der Gesamtzahl verarbeiteter Protokolle ab; vielmehr hängt sie von der eindeutigen Anzahl von Kompaktsignaturen ab.
-
4 zeigt die Einzelheiten eines beispielhaften Musterbaumaufbauprozesses. In 301 baut der Prozess für alle in 203 erzeugten eindeutigen Kompaktsignaturen unter Verwendung ihrer Protokolltoken einen Cluster auf. Jede Menge von Protokolltoken repräsentiert ein bestimmtes Protokoll. Von jetzt an bedeutet „Protokoll“ die entsprechenden in 201 erzeugten Token. Durch dasselbe Format erzeugte Protokolle weisen einen sehr kleinen Ähnlichkeitsabstand (in vielen Fällen null) auf und Protokolle, die durch andere Formate erzeugt werden, weisen üblicherweise größere Abstände auf. Die Eigenschaft ermöglicht eine sehr schnelle und speichereffiziente Clusterungsmethodik.
-
Nachfolgend ermittelt der Prozess in 301.a dichte Cluster. Der Prozess beginnt von dem ersten Protokoll und verarbeitet alle Protokolle einzeln, bis er zu dem letzten kommt, wobei während dieses Prozesses alle dichten Cluster erzeugt werden. Für jedes zu verarbeitende neue Protokoll vergleicht es der Prozess mit einer Menge repräsentativer Protokolle und ermittelt er ein repräsentatives Protokoll, das zu dem neuen Protokoll einen kleineren oder gleichen Abstand als MaxDist aufweist. MaxDist ist ein interner Parameter. Anfangs wird er auf einen sehr kleinen Wert (d. h. 0,0000001) eingestellt. Die Abstandsschätzformel ist in Schritt 301.d erläutert. Falls kein repräsentatives ermittelt wird, heißt das, das Protokoll, das verarbeitet wird, ist nicht ähnlich irgendeinem der bisher gesehenen Cluster, wobei der Prozess einen neuen Cluster erzeugen muss. Der Prozess erzeugt einen neuen Cluster, stellt sein Protokoll als das repräsentative für diesen neuen Cluster ein, erzeugt eine Mitgliedsliste und fügt ein neues Protokoll zu der Mitgliedsliste hinzu und stellt den Zählerwert des neuen Clusters auf den Zählerwert des neuen Protokolls (von 103) ein. Falls ein repräsentatives ermittelt wird, wird ein neues Protokoll zu seiner Mitgliederliste sowie der Zählerwert des neuen Protokolls (von 103) zu dem aktuellen Zählerwert des Clusters hinzugefügt.
-
In 301.b kann der Prozess die Geschwindigkeit unter Verwendung einer Early-Abandoning-Technik verbessern. Obgleich 301.a schnell ist, kann ihn eine zusätzliche Beschleunigungstechnik noch schneller machen. Das Early-Abandoning ist eine nützliche Technik, um die Ähnlichkeitssuche gemäß dem euklidischen Abstand zu beschleunigen. Um die dichten Cluster zu ermitteln, vergleicht der Prozess den Abstand zwischen einem neuen Protokoll und einem repräsentativen Protokoll mit MaxDist, um zu sehen, ob er das neue Protokoll in diesem Cluster ablegen kann. Da der Abstand zwischen zwei Protokollen wie der euklidische Abstand berechnet wird, werden Early-Abandoning-Techniken angewendet. Dadurch, dass zwei gegebene Protokolle Token für Token verglichen werden, falls der Prozess detektiert, dass der Abstand bereits den Schwellenwert überschritten hat, besteht keine Notwendigkeit, den Abstand vollständig zu berechnen, da diese zwei Protokolle nicht in dem MaxDist-Radius voneinander sind. Da die Anzahl der Token in einem Protokoll groß sein kann, hilft diese Technik erheblich, eine unnötige Berechnung zu vermeiden.
-
In
301.c führt der Prozess eine Protokollabstandsbestimmung aus. Der Abstand zwischen zwei Protokollen P und Q ist durch die folgende Formel bestimmt:
wobei P
i das i-te Token des Protokolls P ist und len(P) die Anzahl von Token des Protokolls P ist, während Q
i das i-te Token des Protokolls Q ist und len(Q) die Anzahl von Token des Protokolls Q ist. k
1 ist ein abstimmbarer Parameter. Standardmäßig ist k
1 auf 1 eingestellt, kann aber auf der Grundlage der Anforderung des Anwenders geändert werden.
-
In
301 wird eine schnelle Protokollmustererkennung ausgeführt. Nachdem der Prozess die Protokolle in Schritt
301 geclustert hat, erzeugt der Prozess für jeden Cluster ein Muster. In
301.d wendet der Prozess ein Zusammenführungsverfahren an. Unter der Voraussetzung, dass zwei Protokolle zusammengeführt werden sollen, ermittelt der Prozess ihre beste Ausrichtung. Die beste Ausrichtung zweier Protokolle ist diejenige, die nach dem Zusammenführen die minimale Anzahl von Platzhaltern und Variablen erzeugt. In dem Ausrichtungsprozess können zwischen die Token jedes Protokolls einige Leerräume eingefügt werden. Der Ausrichtungsalgorithmus stellt sicher, dass die Länge zweier Protokolle nach dem Einfügen der Leerräume gleich ist. Falls zwei Protokolle mit derselben Länge ermittelt werden, verarbeitet sie das Verfahren Token für Token und erzeugt es die Ausgabe. In
5 ist ein Beispiel gezeigt, das eine beispielhafte Zusammenführung zweier Muster darstellt. Der Fachmann auf dem Gebiet kann verschiedene Verfahren verwenden, um zwei Sequenzen auszurichten, von denen eines das Smith-Waterman-Verfahren ist, das zwei Sequenzen der Länge l1 und l2 in 0(11.12) Zeitschritten ausrichten kann. Somit ist die Zeitkomplexität der Zusammenführungsfunktion ebenfalls O(l1.l2).
-
Dieses Verfahren ist besser als UPGMA, da UPGMA eine sehr hohe Zeitkomplexität aufweist. Der Grund dafür ist, dass UPGMA die beste Reihenfolge zum Zusammenführen der Protokolle zu ermitteln versucht und dieser spezifischen Reihenfolge folgt, um das abschließende Muster zu erzeugen. Das schnelle und effiziente Clusterungsverfahren der Erfinder stellt sicher, dass Protokolle innerhalb jedes der dichten Cluster sehr ähnlich zueinander sind; somit spielt die Reihenfolge des Zusammenführens der Protokolle, um das Muster zu erzeugen, überhaupt keine Rolle. Um das Muster zu ermitteln, beginnt das System von dem ersten Protokoll, führt es mit dem zweiten Protokoll zusammen, führt es daraufhin das Ergebnis mit dem dritten Protokoll zusammen, wobei dies bis zum letzten Protokoll wiederholt wird. Dieselben Ergebnisse können erzielt werden, wenn das Zusammenführen in umgekehrter oder irgendeiner beliebigen Reihenfolge erfolgt. Da in diesem Verfahren keine Notwendigkeit besteht, das beste Verfahren zu ermitteln, ist es viel schneller als das UPGMA.
-
In 302 baut der Prozess einen Musterhierarchiebau auf: Um eine Hierarchie zu erzeugen, verwendet das System auf iterative Weise sowohl eine schnelle als auch eine effiziente Clusterung (301) und eine schnelle Mustererkennung (302). 6 zeigt diesen iterativen Prozess. Auf die gegebene Menge von Protokollen wird ein Clusterungsverfahren mit einem sehr kleinen MaxDist (d. h. 0,0000001) angewendet. Die Ausgabe der Clusterung ist eine Menge dichter Cluster, wobei jeder Cluster nur ein einzelnes Protokoll enthält. Da es in jedem Cluster nur ein Protokoll gibt, ist der Zusammenführungsschritt nicht notwendig und kann das Protokoll selbst als ein Muster dienen. Diese Muster sind die Endknoten (unterste Ebene) des Musterhierarchiebaums. Die Endknotenebene entspricht den präzisen Mustern. Um die anderen Ebenen der Hierarchie zu erzeugen, wird der MaxDist-Parameter des Clusterungsverfahrens um einen Schwellenwert alpha, der ein interner Parameter ist, erhöht und wird es an den durch den vorhergehenden Wert von MaxDist erzeugten Mustern ausgeführt. Mit anderen Worten, auf die Muster, die nun neue Cluster erzeugen, wird eine gelockerte Version des Clusterungsverfahrens (durch Verwenden eines größeren MaxDist) angewendet. Der Standardwert von alpha wird auf 0,3 eingestellt, kann aber auf der Grundlage von Anwenderpräferenzen geändert werden. Die Mustererkennung wird an allen Mustern ausgeführt, die miteinander geclustert werden, um allgemeinere Muster zu ermitteln. Diese Menge neuer Muster wird als eine neue Ebene zu der Hierarchie hinzugefügt. In jeder Iteration wird zu der Hierarchie eine neue Ebene hinzugefügt. Dies ist ein Verfahren von unten nach oben zum Aufbau der Musterhierarchie. Je höher in der Hierarchie, desto weniger Muster werden ermittelt, die allgemeiner als die Muster in den unteren Ebenen sind. Diese Struktur stellt Flexibilität bereit, um welche Ebene des Baums auch immer als die gewünschte Menge von Mustern zu wählen. 7 zeigt einen beispielhaften Musterbaum.
-
8 zeigt die Einzelheit des Musterauswahlprozesses. In
401 kann der Anwender unter der Voraussetzung, dass für eine Menge von Protokollen (von 103) eine Hierarchie von Mustern gegeben ist, an einer Ebene mit spezifischen Eigenschaften interessiert sein. Einige Anwender können bevorzugen, die minimale Anzahl von Mustern zu erhalten, während die anderen daran interessiert sein können, sehr präzise Muster zu erhalten, und sich nicht um die Anzahl der Muster kümmern können. Es gibt viele verschiedene Kriterien, die ein Anwender zur Auswahl einer Ebene verwenden kann, und eine allgemeine Formel zum Berechnen der Kosten einer Ebene der Hierarchie ist wie folgt:
wobei Sizei die Anzahl der Protokolle in dem Cluster i ist und WC
i, Var
i und FV
i in dieser Reihenfolge die Anzahl der Platzhalter, der variablen Token und der Festwerttoken in dem Muster des Clusters i sind. a
1, a
2 und a
3 sind abstimmbare Parameter, die in einer Weise eingestellt werden können, dass sie die Anforderungen des Anwenders erfüllen.
-
Tabelle 1 zeigt ein Beispiel der Kostenschätzung für Muster in
7.
Tabelle 1: Kostendarstellung für die Einstellung a1 = 1, a2 = 0 und a3 = 0 in Fig. 7.
Baumebene | Anzahl der Muster | Kosten |
1 (Endknoten) | 4 | 0 |
2 (Zwischenknoten) | 2 | 0 |
3 (Wurzelknoten) | 1 | 4 |
-
Falls ein Anwender keine Präferenzen hat, werden in 402 die Prozessmengen a1 = 1, a2 = 0 und a3 = 0 eingestellt, so dass als die abschließende Menge von Mustern die Ebene ohne Platzhalter mit einer minimalen Anzahl von Mustern ausgewählt wird. Zum Beispiel besitzt die Ebene 2 für 7 unter Verwendung von Tabelle 1 zwei Muster ohne Platzhalter, so dass diese zwei Muster von der Ebene 2 als die abschließende Menge von Mustern ausgewählt werden. Außerdem kann ein Anwender seine Präferenzen dadurch bereitstellen, dass er die maximale Anzahl erwarteter Muster spezifiziert. In diesem Fall wählt der Prozess die Ebene, die die minimale Anzahl von Platzhaltern enthält, ohne die erwartete Anzahl von Mustern zu übersteigen, aus. Zum Beispiel kann ein Anwender spezifizieren, dass höchstens 4 Muster erzeugt werden. In diesem Fall wählt der Prozess zwei Muster aus der Ebene 2 in 7 aus, da Tabelle 1 zeigt, dass es eine minimale Anzahl von Mustern erzeugt, während es den maximalen Mustergrenzwert von 4 des Anwenders nicht übersteigt. Außerdem kann der Anwender aus diesem Musterbaum irgendeine spezifische Ebene spezifizieren. Zum Beispiel kann ein Anwender die Ebene 1 auswählen wollen. In diesem Fall werden aus der Ebene 1 4 Muster als der abschließende Mustersatz ausgewählt.
-
Anhand der Zeichnungen, in denen gleiche Bezugszeichen dieselben oder ähnliche Elemente repräsentieren, und anfangs anhand von 9 ist ein Blockschaltplan, der ein beispielhaftes Verarbeitungssystem 100 beschreibt, auf das die vorliegenden Prinzipien angewendet werden können, in Übereinstimmung mit einer Ausführungsform der vorliegenden Prinzipien gezeigt. Das Verarbeitungssystem 100 enthält wenigstens einen Prozessor (eine CPU) 104, der über einen Systembus 102 mit anderen Komponenten funktional gekoppelt ist. Mit dem Systembus 102 sind ein Cache 106, ein Nur-Lese-Speicher (ROM) 108, ein Schreib-Lese-Speicher (RAM) 110, ein Eingabe/Ausgabe-Adapter (E/A-Adapter) 120, ein Tonadapter 130, ein Netzadapter 140, ein Anwenderschnittstellenadapter 150 und ein Anzeigeadapter 160 funktional gekoppelt.
-
Mit einem Systembus 102 sind durch den E/A-Adapter 120 eine erste Ablagespeichervorrichtung 122 und eine zweite Ablagespeichervorrichtung 124 funktional gekoppelt. Die Ablagespeichervorrichtungen 122 und 124 können eine Plattenablagespeichervorrichtung (z. B. eine magnetische oder optische Plattenablagespeichervorrichtung), eine magnetische Festkörpervorrichtung usw. sein. Die Ablagespeichervorrichtungen 122 und 124 können von demselben Typ einer Ablagespeichervorrichtung oder von unterschiedlichen Typen von Ablagespeichervorrichtungen sein.
-
Mit dem Systembus 102 ist durch den Tonadapter 130 ein Lautsprecher 132 funktional gekoppelt. Mit dem Systembus 102 ist durch einen Netzadapter 140 ein Transceiver 142 funktional gekoppelt. Mit dem Systembus 102 ist durch einen Anzeigeadapter 160 eine Anzeigevorrichtung 162 funktional gekoppelt. Mit dem Systembus 102 sind durch einen Anwenderschnittstellenadapter 150 eine erste Anwendereingabevorrichtung 152, eine zweite Anwendereingabevorrichtung 154 und eine dritte Anwendereingabevorrichtung 156 funktional gekoppelt. Die Anwendereingabevorrichtungen 152, 154 und 156 können eine Tastatur oder eine Maus oder ein Tastenfeld oder eine Bilderfassungsvorrichtung oder eine Bewegungserfassungsvorrichtung oder ein Mikrofon oder eine Vorrichtung, die die Funktionalität wenigstens zweier der vorhergehenden Vorrichtungen enthält, usw. sein. Natürlich können andere Typen von Eingabevorrichtungen ebenfalls verwendet werden, während der Erfindungsgedanke der vorliegenden Prinzipien aufrechterhalten wird. Die Anwendereingabevorrichtungen 152, 154 und 156 können derselbe Typ einer Anwendereingabevorrichtung oder unterschiedliche Typen von Anwendereingabevorrichtungen sein. Die Anwendereingabevorrichtungen 152, 154 und 156 werden zur Eingabe und Ausgabe von Informationen in das und aus dem System 100 verwendet.
-
Wie der Fachmann auf dem Gebiet leicht erkennt, kann das Verarbeitungssystem 100 natürlich weitere Elemente (nicht gezeigt) enthalten und können bestimmte Elemente weggelassen sein. Wie der Durchschnittsfachmann auf dem Gebiet leicht versteht, können z. B. verschiedene andere Eingabevorrichtungen und/oder Ausgabevorrichtungen in Abhängigkeit von der bestimmten Implementierung desselben in dem Verarbeitungssystem 100 enthalten sein. Zum Beispiel können verschiedene Arten drahtloser und/oder verdrahteter Eingabe- und/oder Ausgabevorrichtungen verwendet sein. Wie der Durchschnittsfachmann auf dem Gebiet leicht würdigen wird, können darüber hinaus ebenfalls zusätzliche Prozessoren, Controller, Speicher usw. in verschiedenen Konfigurationen genutzt sein. Diese und weitere Änderungen des Verarbeitungssystems 100 gehen für den Durchschnittsfachmann auf dem Gebiet mit den hier gegebenen Lehren der vorliegenden Prinzipien leicht hervor.
-
Selbstverständlich können die hier beschriebenen Ausführungsformen vollständig Hardware sein oder sowohl Hardware- als auch Softwareelemente, was Firmware, residente Software, Mikrocode usw. enthält, darauf aber nicht beschränkt, enthalten.
-
Ausführungsformen können ein Computerprogrammprodukt enthalten, auf das von einem computernutzbaren oder computerlesbaren Medium zugegriffen werden kann, das Programmcode zur Verwendung durch oder in Verbindung mit einem Computer oder irgendeinem Anweisungsausführungssystem bereitstellt. Ein computernutzbares oder computerlesbares Medium kann irgendeine Vorrichtung enthalten, die das Programm zur Verwendung durch oder in Verbindung mit dem Anweisungsausführungssystem, der Anweisungsausführungsvorrichtung oder der Anweisungsausführungseinrichtung speichert, übermittelt, ausbreitet oder transportiert. Das Medium kann ein magnetisches System, ein optisches System, ein elektronisches System, ein elektromagnetisches System, ein Infrarot- oder Halbleitersystem (oder eine magnetische Vorrichtung, eine optische Vorrichtung, eine elektronische Vorrichtung, eine elektromagnetische Vorrichtung, eine Infrarot- oder Halbleitervorrichtung oder eine magnetische Einrichtung, eine optische Einrichtung, eine elektronische Einrichtung, eine elektromagnetische Einrichtung, eine Infrarot- oder Halbleitereinrichtung) oder ein Ausbreitungsmedium sein. Das Medium kann ein computerlesbares Speichermedium wie etwa einen Halbleiter oder Festkörperspeicher, ein Magnetband, eine Computerwechseldiskette, einen Schreib-Lese-Speicher (RAM), einen Nur-Lese-Speicher (ROM), eine magnetische Festplatte und ein optische Platte usw. enthalten.
-
Ein Datenverarbeitungssystem, das zum Speichern und/oder Ausführen von Programmcode geeignet ist, kann wenigstens einen Prozessor, z. B. einen Hardwareprozessor, der mit Speicherelementen über einen Systembus direkt oder indirekt gekoppelt ist, enthalten. Die Speicherelemente können einen lokalen Speicher, der während der tatsächlichen Ausführung des Programmcodes genutzt wird, einen Massenablagespeicher und Cache-Speicher, die eine vorübergehende Speicherung wenigstens von etwas Programmcode bereitstellen, um die Anzahl, in der der Code während der Ausführung aus dem Massenablagespeicher ausgelesen wird, zu verringern, enthalten. Die Eingabe/Ausgabe- oder E/A-Vorrichtungen (einschließlich, aber nicht beschränkt auf, Tastaturen, Anzeigen, Zeigevorrichtungen usw.) können entweder direkt oder über Zwischen-E/A-Controller mit dem System gekoppelt sein.
-
Das Vorstehende ist in jeder Hinsicht als veranschaulichend und beispielhaft, aber nicht als einschränkend zu verstehen, wobei der Schutzumfang der hier offenbarten Erfindung nicht aus der ausführlichen Beschreibung, sondern vielmehr aus den Ansprüchen, wie sie in Übereinstimmung mit der vollen durch die Patentgesetze zugelassenen Breite interpretiert sind, bestimmt ist. Selbstverständlich sind die hier gezeigten und beschriebenen Ausführungsformen nur veranschaulichend für die Prinzipien der vorliegenden Erfindung und kann der Fachmann auf dem Gebiet verschiedene Änderungen implementieren, ohne von dem Schutzumfang und von dem Erfindungsgedanken der Erfindung abzuweichen. Der Fachmann auf dem Gebiet könnte verschiedene andere Merkmalskombinationen implementieren, ohne von dem Schutzumfang und von dem Erfindungsgedanken der Erfindung abzuweichen.