-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft im Allgemeinen Datenverarbeitungssysteme und insbesondere Systeme und Verfahren für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus für parallele Operationen, die Sperren zwischen den mehreren Threads in einer Datenverarbeitungsumgebung erfordern.
-
Beschreibung des einschlägigen Stands der Technik
-
In der Gesellschaft von heute gehören Computersysteme zum Alltag. Computersysteme sind am Arbeitsplatz, zu Hause oder in der Schule zu finden. Computersysteme können Datenspeichersysteme oder Plattenspeichersysteme zum Verarbeiten und Speichern von Daten enthalten. In Anbetracht dessen, dass sich die Gesellschaft von heute ständig immer mehr auf Computer verlässt, musste sich die Computertechnologie an vielen Fronten weiterentwickeln, um mit den erhöhten Anforderungen Schritt halten zu können. Ein spezielles Fachgebiet von bedeutenden Forschungs- und Entwicklungsbemühungen ist Parallelismus, d. h. die parallele Ausführung von mehreren Aufgaben.
-
Zum Vereinfachen einer zunehmenden Parallelverarbeitung wurde eine Anzahl von Computer-Software- und Hardware-Technologien entwickelt. Von einem Software-Standpunkt aus wurden Multithread-Betriebssysteme und Kernel entwickelt, die es ermöglichen, dass Computerprogramme gleichzeitig in mehreren „Threads” ausgeführt werden, sodass mehrere Aufgaben im Wesentlichen zu derselben Zeit ausgeführt werden können. Threads stellen im Allgemeinen unabhängige Ausführungspfade für ein Programm dar. Für eine E-Commerce-Computeranwendung könnten zum Beispiel verschiedene Threads zu verschiedenen Kunden zugewiesen werden, sodass jede spezifische E-Commerce-Transaktion eines Kunden in einem separaten Thread bearbeitet wird. Von einem Hardware-Standpunkt aus sind Computer zunehmend auf mehrere Mikroprozessoren angewiesen, um eine höhere Arbeitslastkapazität bereitzustellen. Ferner wurden einige Mikroprozessoren entwickelt, die die Fähigkeit unterstützen, mehrere Threads parallel auszuführen, wobei effektiv viele derselben Leistungssteigerungen bereitgestellt werden, die durch die Verwendung mehrerer Mikroprozessoren erzielbar sind.
-
KURZDARSTELLUNG DER ERFINDUNG
-
In einer Ausführungsform wird ein Verfahren für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus bereitgestellt, der mindestens eine Prozessoreinheit in einer Datenverarbeitungsumgebung verwendet. In einer nur als Beispiel angeführten Ausführungsform wird gestattet, dass sich eine neue Aufgabe auf dem Sperrmechanismus in eine Warteschleife einreiht, wenn eine Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als ein vordefinierter Schwellenwerk für parallele Operationen ist, die Sperren zwischen den mehreren Threads erfordern.
-
In einer weiteren Ausführungsform wird ein Computersystem für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus bereitgestellt, der mindestens eine Prozessoreinheit in einer Datenverarbeitungsumgebung verwendet. Das Computersystem enthält ein computerlesbares Medium und einen Prozessor in betriebsfähiger Datenübertragung mit dem computerlesbaren Medium. In einer nur als Beispiel angeführten Ausführungsform gestattet der Prozessor, dass sich eine neue Aufgabe auf dem Sperrmechanismus in eine Warteschleife einreiht, wenn eine Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als ein vordefinierter Schwellenwert für parallele Operationen ist, die Sperren zwischen den mehreren Threads erfordern.
-
In einer weiteren Ausführungsform wird ein Computerprogrammprodukt für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus bereitgestellt, der mindestens eine Prozessoreinheit in einer Datenverarbeitungsumgebung verwendet. Auf dem computerlesbaren Speichermedium sind computerlesbare Programmcode-Abschnitte gespeichert. Die computerlesbaren Programmcode-Abschnitte enthalten einen ersten ausführbaren Abschnitt, der gestattet, dass sich eine neue Aufgabe auf dem Sperrmechanismus in eine Warteschleife einreiht, wenn eine Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als ein vordefinierter Schwellenwert für parallele Operationen ist, die Sperren zwischen den mehreren Threads erfordern.
-
Zusätzlich zu der vorgenannten beispielhaften Verfahrens-Ausführungsform werden weitere beispielhafte System- und Computerprodukt-Ausführungsformen bereitgestellt und sorgen für zugehörige Vorteile. Die vorgenannte Kurzdarstellung wurde bereitgestellt, um eine Auswahl von Konzepten in einer vereinfachten Form vorzustellen, die im Folgenden genauer unter „Ausführliche Beschreibung” beschrieben werden. Zweck dieser Kurzdarstellung ist nicht, Schlüsselmerkmale oder wesentliche Merkmale des beanspruchten Erfindungsgegenstands zu identifizieren, noch ist beabsichtigt, sie als Hilfe beim Festlegen des Schutzumfangs des beanspruchten Erfindungsgegenstands zu verwenden. Der beanspruchte Erfindungsgegenstand ist nicht auf Umsetzungen beschränkt, die einige oder alle Nachteile beheben, die unter „Hintergrund” angegeben wurden.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Damit die Vorteile der Erfindung leicht zu verstehen sind, wird unter Bezugnahme auf spezifische Ausführungsformen, die in den Zeichnungen im Anhang veranschaulicht werden, eine speziellere Beschreibung der oben kurz umrissenen Erfindung vorgelegt. Das Verständnis vorausgesetzt, dass diese Zeichnungen nur typische Ausführungsformen der Erfindung veranschaulichen und daher nicht als deren Schutzumfang einschränkend zu betrachten sind, wird die Erfindung mit zusätzlicher Spezifität und Ausführlichkeit unter Verwendung der begleitenden Zeichnungen beschrieben und erklärt, wobei:
-
1 ein Blockschaubild ist, das eine Datenverarbeitungssystem-Umgebung mit einer beispielhaften Speichereinheit veranschaulicht, in der Aspekte der vorliegenden Erfindung verwirklicht werden können;
-
2 ein Blockschaubild ist, das eine beispielhafte Hardware-Struktur eines Datenspeichersystems in einem Computersystem gemäß der vorliegenden Erfindung veranschaulicht, in der Aspekte der vorliegenden Erfindung verwirklicht werden können;
-
3 ein Ablaufplan ist, der ein beispielhaftes Verfahren für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus veranschaulicht, in dem Aspekte der vorliegenden Erfindung verwirklicht werden können; und
-
4 ein Ablaufplan ist, der ein weiteres beispielhaftes Verfahren für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus veranschaulicht, in dem Aspekte der vorliegenden Erfindung verwirklicht werden können.
-
AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
-
In einer Ausführungsform ist eine Architektur in einem Mehrprozessor-Computersystem eine dezentrale Architektur mit gemeinsam genutztem Arbeitsspeicher. Eine dezentrale Architektur mit gemeinsam genutztem Arbeitsspeicher enthält mehrere Knoten, in denen Prozessoren und Arbeitsspeicher liegen. Die mehreren Knoten tauschen Daten über ein dazwischengekoppeltes Netzwerk aus. Wenn er als Ganzes betrachtet wird, bildet der in den mehreren Knoten enthaltene Arbeitsspeicher den gemeinsam genutzten Arbeitsspeicher für das Computersystem. Verzeichnisse können zum Identifizieren verwendet werden, welche Knoten zwischengespeicherte Kopien von Daten besitzen, die einer bestimmten Adresse entsprechen. Kohärenz-Aktivitäten können über eine Überprüfung der Verzeichnisse generiert werden. In einer Ausführungsform sind dezentrale Systeme mit gemeinsam genutztem Arbeitsspeicher skalierbar und überwinden somit verschiedene Einschränkungen, die dezentralen Bus-Architekturen zugehörig sind. Da viele der Zugriffe des Prozessors in einem Knoten abgeschlossen werden, haben Knoten typischerweise viel geringere Bandbreiten-Anforderungen auf dem Netzwerk im Vergleich mit den Bandbreiten-Anforderungen, die eine gemeinsam genutzte Bus-Architektur in Bezug auf den gemeinsam genutzten Bus erfüllen muss, um eine vergleichbare Leistung zu erzielen. Die Knoten können bei hoher Taktfrequenz und Bandbreite arbeiten, wobei sie auf das Netzwerk bei Bedarf zugreifen. Weitere Knoten können dem Netzwerk hinzugefügt werden, ohne die lokale Bandbereite der Knoten zu beeinträchtigen. Mit logischer Partitionierung verwaltet eine gemeinsam genutzte Ressource, die als „Hypervisor” oder Partitionsmanager bezeichnet wird, die logischen Partitionen und vereinfacht die Zuordnung von Ressourcen zu verschiedenen logischen Partitionen. Zum Beispiel kann ein Partitionsmanager Ressourcen wie beispielsweise Prozessoren, Workstation-Adapter, Speichereinheiten, Arbeitsspeicherplatz, Netzwerk-Adapter usw. zu verschiedenen Partitionen zuordnen, um den relativ unabhängigen Betrieb jeder logischen Partition auf fast dieselbe Weise zu unterstützen wie ein separater physischer Computer.
-
Des Weiteren erfordern in einer Ausführungsform große Datenbanken und Internet-Transaktionsanwendungen parallele Server, die fähig sind, auf Maschinen mit zwanzig bis einhundert Prozessoren oder mehr ausgeführt zu werden. Des Weiteren kann in einer Ausführungsform eine parallele Programmierung auf gewisse Weise die Verwendung einer Sperre auf den untersten Ebenen umfassen. Sperren sind Primitive, die einen gegenseitigen Ausschluss bereitstellen, wodurch es Datenstrukturen ermöglicht wird, in konsistenten Zuständen zu bleiben. In einer Ausführungsform ohne Sperrmechanismus können mehrere Ausführungs-Threads gleichzeitig eine Datenstruktur modifizieren. Ohne einen sorgfältig durchdachten und für gewöhnlich komplexen sperrenfreien Algorithmus ist das Ergebnis normalerweise ein Absturz oder Hängen beim Eintreten nicht beabsichtigter Programmzustände. Da die Erstellung eines sperrenfreien Algorithmus extrem schwierig ist, verwenden die meisten Programme Sperren. Wenn eine Aktualisierung einer Datenstruktur langsam erfolgt, ist die bevorzugt gewählte Sperre ein Mutex (z. B. gegenseitiger Ausschluss) irgendeiner Art. Diese überträgt bei einer Sperrung die Kontrolle an das Betriebssystem. Damit wird gestattet, dass ein weiterer Thread ausgeführt wird und eventuell einen Fortschritt erzielt, während der erste Thread ruht. Diese Kontrollübertragung besteht aus einem Paar von Kontextwechseln, die eine ziemlich langsame Operation sind. Wenn also erwartet wird, dass die Sperrenhaltezeit kurz ist, dann dürfte dies nicht das schnellste Verfahren sein.
-
In einer Ausführungsform kann eine Spinlock-Operation (Warteschleifensperren-Operation) in parallelen Operationen verwendet werden, und die Spinlock-Operation kann Software-Sperren zugehörig sein, die von Programmen zum Sicherstellen verwendet werden, dass jeweils nur ein paralleler Prozess auf einen kritischen Bereich des Arbeitsspeichers zugreifen kann. In einer Ausführungsform können Spinlocks für einen gegenseitigen Ausschluss verwendet werden. Ein Spinlock ist eine Sperre, die veranlasst, dass ein Thread, der sie zu erlangen versucht, einfach in einer Warteschleife („spin”) wartet, während wiederholt geprüft wird, ob die Sperre verfügbar ist. Da der Thread aktiv bleibt, aber keine nützliche Aufgabe ausführt, ist die Verwendung einer derartigen Sperre eine Art von aktivem Warten. Sobald sie erlangt sind, können Spinlocks gehalten werden, bis sie explizit freigegeben werden, obwohl sie in einigen Umsetzungen automatisch freigegeben werden können, wenn der Thread, auf den gewartet wird (der die Sperre aufhält) blockiert oder „in den Ruhemodus geht”.
-
In einer Ausführungsform kann das Spinlock (z. B. ein Semaphor) als eine Variable oder ein Token umgesetzt werden, das einem gemeinsam genutzten Zeiger auf einer Datenstruktur zugehörig ist, und das von mehreren Threads gelesen werden kann, um zu bestimmen, ob der Zeiger gegenwärtig von einem der Threads verwendet wird. Sobald ein Thread ein Semaphor liest, das angibt, dass gegenwärtig kein anderer Thread den Zeiger verwendet, kann der Thread das Semaphor auf einen Wert setzen, der für alle anderen Threads angibt, dass der Zeiger gegenwärtig verwendet wird (ein Prozess, der als „Erlangen” eines Semaphors bezeichnet wird). Wenn daher ein anderer Thread auf die Datenstruktur zugreifen möchte, aber erkennt, dass das Semaphor von einem anderen Thread gehalten wird, muss dieser Thread warten, bis der andere Thread das Semaphor freigibt, um anzugeben, dass der Zeiger (und somit die Datenstruktur) wieder für andere Threads zugänglich ist. In einer Ausführungsform darf nur ein Thread ein Semaphor zu einem bestimmten Zeitpunkt halten.
-
Ferner reiht sich in einer Ausführungsform statt eines Kontextwechsels ein Spinlock in eine „Warteschleife” ein und prüft wiederholt, ob die Sperre aufgehoben ist. Das Spinning (Ablauf der Warteschleife) ist sehr schnell, sodass die Latenz zwischen einem Entsperren-Sperren-Paar klein ist. Durch Spinning wird jedoch keinerlei Arbeit ausgeführt, sodass es möglicherweise nicht so effizient wie ein ruhender Mutex ist, wenn die aufgewendete Zeit maßgeblich wird. Daher stellt die vorliegende Erfindung eine Lösung bereit, die (1) Datenverarbeitungseffizienz durch Verringern der Verschwendung von CPU-Zyklen erhöht, während das Spinning die gesamte Zeit über ausgeführt wird, und (2) gestattet, dass vermieden wird, dass die Aufgaben in einen Ruhezustand übergehen, und die Aufgabe immer wieder neu abgefertigt wird, wenn die Aufgaben nicht sofort eine Sperre erhalten können.
-
In der vorliegenden Ausführungsform wird somit ein Verfahren für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus bereitgestellt, der mindestens eine Prozessoreinheit in einer Datenverarbeitungsumgebung verwendet. In einer nur als Beispiel angeführten Ausführungsform wird gestattet, dass sich eine neue Aufgabe auf dem Sperrmechanismus in die Warteschleife einreiht, wenn eine Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als ein vordefinierter Schwellenwert für parallele Operationen ist, die Sperren zwischen den mehreren Threads erfordern. Es wird verhindert/unterbunden, dass die neue Aufgabe sich auf dem Sperrmechanismus in die Warteschleife einreiht, wenn die Anzahl der Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, gleich dem vordefinierten Schwellenwert oder größer als dieser ist. Die Anzahl der Aufgaben, die sich gegenwärtig auf dem Sperrmechanismus in einer Warteschleife befinden, wird erhalten, bevor gestattet wird, dass sich die neue Aufgabe auf dem Sperrmechanismus in eine Warteschleife einreiht. Die neue bzw. neuen Aufgaben schlagen fehl, wenn die Anzahl der Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, gleich dem vordefinierten Schwellenwert und/oder größer als dieser ist. Die neuen Aufgaben werden auf eine Abfertigungswarteschlange ausgelagert, wenn die Anzahl der Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, entweder gleich dem vordefinierten Schwellenwert oder größer als dieser ist. Der Sperrmechanismus wird aufgerufen, um zu bestimmen, ob die Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als der Tordefinierte Schwellenwert ist. In einer Ausführungsform setzt die vorliegende Erfindung den Sperrmechanismus um, um zu bestimmen, ob die Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als der vordefinierte Schwellenwert zuzüglich einer Sperre auf Ticket-Grundlage oder einer Sperre auf Warteschlangen-Grundlage ist. Der Sperrmechanismus ist ein neuer Lock-Try-Or-Spin-Mechanismus (Sperrversuch-oder-Warteschleifen-Mechanismus). Der Lock-Try-Or-Spin-Mechanismus reiht sich für die Sperre auf der Grundlage eines vordefinierten Schwellenwerts in eine Warteschleife ein und/oder lagert die Aufgabe in die Abfertigungswarteschlange aus. Dies ist eine Bezeichnung für die Hauptkonzepte der vorliegenden Erfindung, die eine ähnliche Aktivität wie ein herkömmlicher Try-Lock-Mechanismus (Sperrversuch-Mechanismus) aufweist, bei dem der Code mehrmals versucht, eine Sperre zu erhalten, und den Vorgang beendet, wenn er keine Sperre erhalten kann, wogegen der neue Lock-Try-Or-Spin-Mechanismus sich für eine Sperre in eine Warteschleife einreiht, wenn die vordefinierten Schwellenwertkriterien erfüllt sind, und sofort beendet, wenn dies nicht der Fall ist. In einer Ausführungsform ist eine Sperre auf Ticket-Grundlage ein Sperralgorithmus, der eine Art Spinlock ist, das „Tickets” verwendet, um zu kontrollieren, welcher Ausführungs-Thread in einen kritischen Abschnitt eintreten darf.
-
In einer Ausführungsform arbeitet die Ticket-Sperre wie folgt: es gibt zwei ganzzahlige Werte, die mit O beginnen. Der erste Wert ist das Warteschlangen-Ticket, der zweite ist das Ticket zum Entfernen aus der Warteschlange. Wenn ein Thread ankommt, erhält er automatisch ein Warteschlangen-Ticket und erhöht die Anzahl. Anschließend wird der Ticket-Wert (vor der Erhöhung) automatisch mit dem Ticket-Wert zum Entfernen aus der Warteschlange verglichen. Wenn sie identisch sind, wird dem Thread gestattet, in den kritischen Abschnitt einzutreten. Wenn sie nicht identisch sind, muss sich bereits ein anderer Thread in dem kritischen Abschnitt befinden, und dieser Thread muss in den aktiven Wartezustand oder Platz machen. Wenn ein Thread den durch die Sperre kontrollierten kritischen Abschnitt verlässt, erhöht er automatisch die Anzahl der Tickets zum Entfernen aus der Warteschlange. Damit wird dem nächsten wartenden Thread gestattet, in den kritischen Abschnitt einzutreten.
-
In einer Ausführungsform vermeiden die Spinlocks auf Warteschlangen-Grundlage eine Konkurrenzsituation durch eine Anordnung, in der sich jeder wartende Thread auf einer separaten lokalen Markierung im Arbeitsspeicher in die Warteschleife einreiht. Die Spinlocks auf Warteschlangen-Grundlage garantieren ein gerechtes Verhalten durch Verwalten einer Warteschlange von wartenden Threads und durch Vergabe der Sperre an den ersten wartenden Thread während einer Sperrenaufhebungsoperation. In einer Ausführungsform mit der Sperre auf Warteschlangen-Grundlage wird jeder Warteprozess mit seinem Vorgänger und Nachfolger in der Warteschlange verknüpft. Die Spinlocks auf Warteschlangen-Grundlage können auch als Try-Locks (Versuchssperren) bezeichnet werden und einen Prozess zulassen, um nach einer bestimmten Zeitdauer den Versuch abzubrechen, eine Sperre zu erhalten. Der Prozess kann anschließend einem anderen Codepfad folgen.
-
In einer Ausführungsform kann die vorliegende Erfindung Sperren auf Warteschlangen-Grundlage und/oder Ticket-Sperren verwenden, die angeben, wie viele Aufgaben sich auf einem Spinlock in einer Warteschleife befinden. In einer Ausführungsform für ein Test- und festgelegtes Spinlock können die Prozesse gegenseitig anonym sein. In einer Sperre auf Warteschlangen-Grundlage schließen sie sich nicht gegenseitig aus und jeder wartende Prozess wird mit seinem Vorgänger und Nachfolger in der Warteschlange verknüpft. Somit ist die vorliegende Erfindung mit den Sperren auf Warteschlangen-Grundlage fähig, zu erkennen/anzugeben, wie viele Aufgaben sich auf einer Sperre in einer Warteschleife befinden. Selbst ohne Sperren auf Warteschlangen-Grundlage erstellt die vorliegende Erfindung ein Spinlock, das angeben kann, wie viele Aufgaben sich auf einer Sperre in einer Warteschleife befinden. Zum Beispiel kann die vorliegende Erfindung mit Ticket-Sperren mindestens die zuletzt angegebene Ticketnummer und die aktuelle bereitgestellte Ticketnummer beobachten und sehen, wie viele Aufgaben sich in einer Warteschleife befinden.
-
Unterfolgender Bezugnahme auf 1 wird eine beispielhafte Architektur 10 einer Umgebung eines Datenverarbeitungssystems dargestellt. Das Computersystem 10 enthält eine Zentraleinheit (CPU) 12, die mit einem Datenübertragungsanschluss 18 und einer Arbeitsspeichereinheit 16 verbunden ist. Der Datenübertragungsanschluss 18 steht mit einem Datenübertragungsnetzwerk 20 in Verbindung. Das Datenübertragungsnetzwerk 20 und ein Speichernetzwerk können so konfiguriert sein, dass sie mit Servern (Hosts) 24 und Speichersystemen in Verbindung stehen, die Speichereinheiten 14 enthalten können. Die Speichereinheiten können Festplatteneinheiten (HDD), Solid-State-Einheiten (SSD) usw. enthalten, die in einer redundanten Anordnung von unabhängigen Platten (RAID) konfiguriert sein können. Die im Folgenden beschriebenen Operationen können auf einer oder mehreren Speichereinheiten 14 ausgeführt werden, die sich in dem System 10 oder anderswo befinden, und können mehrere Arbeitsspeichereinheiten 16 haben, die unabhängig von und/oder in Verbindung mit anderen CPU-Einheiten 12 arbeiten. Die Arbeitsspeichereinheit 16 kann Arbeitsspeicher als elektronisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM) oder eine Menge zugehöriger Einheiten enthalten. Die Arbeitsspeichereinheit 16 und die Speichereinheiten 14 sind mit der CPU 12 über ein Signalträgermedium verbunden. Außerdem ist die CPU 12 über den Datenübertragungsanschluss 18 mit einem Datenübertragungsnetzwerk 20 verbunden, das eine damit verbundene Vielzahl von weiteren Computer-Hostsystemen 24 aufweist. Außerdem kann die Arbeitsspeichereinheit 16 und die CPU 12 in jede Komponente des Datenverarbeitungssystems eingebettet und integriert sein. Jedes Speichersystem kann auch separate und/oder unterschiedliche Arbeitsspeichereinheiten 16 und die CPU 12 enthalten, die in Verbindung oder als separate Arbeitsspeichereinheit 16 und/oder CPU 12 arbeiten.
-
2 ist ein beispielhaftes Blockschaubild 200, das eine Hardware-Struktur eines Datenspeichersystems in einem Computersystem gemäß der vorliegenden Erfindung zeigt. Gezeigt werden Host-Computer 210, 220, 225, von denen jeder als eine Zentraleinheit zum Ausführen einer Datenverarbeitung als Teil eines Datenspeichersystems 200 arbeitet. Die Hosts (physische oder virtuelle Einheiten) 210, 220 und 225 können eine oder mehrere neue physische Einheiten oder logische Einheiten zum Erreichen der Zwecke der vorliegenden Erfindung in dem Datenspeichersystem 200 sein. Nur als Beispiel kann in einer Ausführungsform das Datenspeichersystem 200 als IBM® System StorageTM DS8000TM umgesetzt werden. Eine Netzwerkverbindung 260 kann eine Fibre-Channel-Struktur, eine Fibre Channel-Punkt-zu-Punkt-Verbindung, eine Fibre-Channel-über-Ethernet-Struktur oder Punkt-zu-Punkt-Verbindung, eine FICON- oder ESCON-E/A-Schnittstelle, irgendein anderer E/A-Schnittstellentyp, ein drahtloses Netzwerk, ein drahtgebundenes Netzwerk, ein LAN, ein WAN, heterogen, homogen, öffentlich (z. B. das Internet), privat oder eine beliebige Kombination davon sein. Die Hosts 210, 220 und 225 können lokal oder auf eine oder mehrere Positionen verteilt sein und können mit einem beliebigen Typ von Struktur (oder Strukturkanal) (nicht gezeigt in 2) oder Netzwerkadapter 260 zu einem Speicher-Controller 240 ausgestattet sein, wie beispielsweise Fbre-Channel-, FICON-, ESCON-, Ethernet-, Lichtwellenleiter-, drahtlose oder koaxiale Adapter. Das Datenspeichersystem 200 ist dementsprechend mit einer geeigneten Struktur (nicht gezeigt in 2) oder dem Netzwerkadapter 260 zum Übertragen von Daten ausgestattet. Das Datenspeichersystem 200 wird in 2 veranschaulicht und weist den Speicher-Controller 240 und einen Speicher 230 auf. In einer Ausführungsform können die hierin beschriebenen Ausführungsformen auf eine Vielfalt von Typen von Datenverarbeitungsarchitekturen anwendbar sein, wie beispielsweise in einer virtuellen Cluster-Verwaltungsumgebung unter Verwendung der verschiedenen hierin beschriebenen Ausführungsformen.
-
Um ein besseres Verständnis der hierin beschriebenen Verfahren zu unterstützen, wird der Speicher-Controller 240 in 2 als eine einzelne Verarbeitungseinheit gezeigt, die einen Mikroprozessor 242, einen Systemarbeitsspeicher 243 und einen nicht-flüchtigen Speicher („NVS”) 216 enthält, die im Folgenden ausführlicher beschrieben werden. Es wird angemerkt, dass in einigen Ausführungsformen der Speicher-Controller 240 mehrere Verarbeitungseinheiten aufweist, die jeweils ihren eigenen Prozessorkomplex und Systemarbeitsspeicher haben und durch ein dediziertes Netzwerk in dem Datenspeichersystem 200 miteinander verbunden sind. Der Speicher 230 kann eine oder mehrere Speichereinheiten aufweisen, wie beispielsweise Speicheranordnungen, die durch ein Speichernetzwerk mit dem Speicher-Controller 240 verbunden sind.
-
In einigen Ausführungsformen können die im Speicher 230 enthaltenen Einheiten in einer Schleifenarchitektur verbunden sein. Der Speicher-Controller 240 verwaltet den Speicher 230 und erleichtert die Verarbeitung von Schreib- und Lese-Anforderungen, die für den Speicher 230 bestimmt sind. Der Systemarbeitsspeicher 243 des Speicher-Controllers 240 speichert die Betriebssoftware 250, Programmanweisungen und Daten, auf die der Prozessor 242 zugreifen kann, um Funktionen und Verfahrensschritte auszuführen, die dem Verwalten des Speichers 230 zugehörig sind, und um die Schritte und Verfahren der vorliegenden Erfindung auszuführen. Wie in 2 gezeigt, kann der Systemarbeitsspeicher 243 auch eine Datenübertragung enthalten oder mit einem Zwischenspeicher 245 für den Speicher 230 in Datenübertragung stehen, der hierin auch als „Cache-Speicher” bezeichnet wird, um „Schreibdaten” und „Lesedaten” zu Puffern, die jeweils auf Schreib-/Lese-Anforderungen und deren zugehörige Daten verweisen. In einer Ausführungsform wird der Zwischenspeicher 245 in einer außerhalb des System-Arbeitsspeichers 243 befindlichen Einheit zugeordnet, wobei auf ihn jedoch weiterhin durch den Mikroprozessor 242 zugegriffen werden kann und er zusätzlich zu einem Ausführen der hierin beschriebenen Operationen zum Bereitstellen eines zusätzlichen Schutzes vor Datenverlust dienen kann.
-
In einigen Ausführungsformen wird der Zwischenspeicher 245 mit einem flüchtigen Arbeitsspeicher und einem nichtflüchtigen Arbeitsspeicher umgesetzt und für eine verbesserte Leistung des Datenspeichersystems 200 mit dem Mikroprozessor 242 über einen lokalen Bus (nicht gezeigt in 2) verbunden. Auf den in dem Datenspeicher-Controller enthaltenen NVS 216 kann durch den Mikroprozessor 242 zugegriffen werden, und er dient zum Bereitstellen von zusätzlicher Unterstützung von Vorgängen und der Ausführung der vorliegenden Erfindung, wie in weiteren Figuren beschrieben. Der NVS 216 kann auch als „permanenter” Zwischenspeicher oder „Cache-Arbeitsspeicher” bezeichnet werden und wird mit einem nicht-flüchtigen Arbeitsspeicher umgesetzt, der eine externe Stromquelle zum Beibehalten der darin gespeicherten Daten verwenden kann. Der NVS kann in und zusammen mit dem Zwischenspeicher 245 für alle Zwecke gespeichert werden, die geeignet sind, um die Ziele der vorliegenden Erfindung zu erreichen. In einigen Ausführungsformen versorgt eine Notstromversorgungsquelle (nicht gezeigt in 2) wie beispielsweise eine Batterie den NVS 216 mit ausreichender Energie, um die darin gespeicherten Daten im Fall eines Spannungsverlusts des Datenspeichersystems 200 beizubehalten. In bestimmten Ausführungsformen ist die Kapazität des NVS 216 kleiner oder gleich der Gesamtkapazität des Zwischenspeichers 245.
-
Der Speicher 230 kann physisch aus einer oder mehreren Speichereinheiten wie beispielsweise Speicheranordnungen bestehen. Eine Speicheranordnung ist eine logische Gruppierung von einzelnen Speichereinheiten wie beispielsweise eine Festplatte. In bestimmten Ausführungsformen besteht der Speicher 230 aus einer JBOD-(Just a Bunch of Disks)Anordnung oder einer RAID-(Redundant Array of Independent Disks)Anordnung. Eine Sammlung von physischen Speicheranordnungen kann ferner kombiniert werden, um eine Speicherbank zu bilden, die den physischen Speicher von der logischen Konfiguration löst. Der Speicherplatz in einer Speicherbank kann in logischen Datenträgern zugeordnet werden, die den Speicherort definieren, der in einer Schreib-/Lese-Anforderung angegeben wird.
-
In einer Ausführungsform kann das in 2 gezeigte Speichersystem einen logischen Datenträger oder einfach „Datenträger” enthalten, der verschiedene Arten von Zuordnungen aufweisen kann. Speicher 230a, 230b und 230n werden im Datenspeichersystem 200 als Speicherbänke gezeigt, und auf sie wird hierin als Speicherbank 230a, 230b und 230n Bezug genommen. Speicherbänke können für das Datenspeichersystem 200 lokal sein oder können sich an einem physisch entfernten Ort befinden. Mit anderen Worten, ein lokaler Speicher-Controller kann mit einem entfernt angeordneten Speicher-Controller verbunden sein und den Speicher an dem entfernt angeordneten Ort verwalten. Die Speicherbank 230a wird als mit zwei vollständigen Datenträgern 234 und 236 sowie einem teilweisen Datenträger 232a konfiguriert gezeigt. Die Speicherbank 230b wird mit einem weiteren teilweisen Datenträger 232b gezeigt. Somit wird der Datenträger 232 über die Speicherbänke 230a und 230b übergreifend zugeordnet. Die Speicherbank 230n wird als vollständig einem Datenträger 238 zugeordnet gezeigt – d. h. die Speicherbank 230n nimmt auf den vollständigen Speicher für den Datenträger 238 Bezug. Aus den vorgenannten Beispielen wird klar, dass eine Speicherbank so konfiguriert werden kann, dass sie einen oder mehrere teilweise und/oder vollständige Datenträger enthält. Datenträger und Speicherbänke können ferner in sogenannte „Spuren” unterteilt werden, die einen festen Speicherblock darstellen. Eine Spur ist daher einem vorgegebenen Datenträger zugehörig und kann einer vorgegebene Speicherbank zugeordnet werden.
-
Der Speicher-Controller 240 kann ein Parallelverarbeitungsmodul 255 (z. B. parallele Operationen verarbeitendes Modul), ein Sperrmodul 257 (z. B. ein Lock-Try-or-Spin-Modul), ein Aufgaben-Spinning-Modul 258 und ein Berechnungsmodul 259 sein (z. B. ein Berechnungsmodul zum Bestimmen der Spinning-Anzahl von Aufgaben). Das Parallelverarbeitungsmodul 255, das Sperrmodul 257, das Aufgaben-Spinning-Modul 258 und ein Berechnungsmodul 259 können ein vollständiges Modul, das gleichzeitig arbeitet, oder separate Module sein. Das Parallelverarbeitungsmodul 255, das Sperrmodul 257, das Aufgaben-Spinning-Modul 258 und ein Berechnungsmodul 259 können einen internen Arbeitsspeicher (nicht gezeigt) haben und können nicht verarbeitete, verarbeitete oder „halbverarbeitete” Daten speichern. Das Parallelverarbeitungsmodul 255, das Sperrmodul 257, das Aufgaben-Spinning-Modul 258 und ein Berechnungsmodul 259 können in Verbindung mit jeder einzelnen Komponente des Speicher-Controllers 240, den Hosts 210, 220, 225 und weiteren Speicher-Controllern 240 und Hosts 210, 220 und 225 arbeiten, die entfernt angeordnet über die Speicherstruktur 260 verbunden sein können. Das Parallelverarbeitungsmodul 255, das Sperrmodul 257, das Aufgaben-Spinning-Modul 258 und ein Berechnungsmodul 259 können ein strukturell vollständiges Modul sein oder können anderen einzelnen Modulen zugehörig und/oder in diesen enthalten sein. Das Parallelverarbeitungsmodul 255, das Sperrmodul 257, das Aufgaben-Spinning-Modul 258 und ein Berechnungsmodul 259 können sich auch in dem Zwischenspeicher 245 oder anderen Komponenten des Speicher-Controllers 240 befinden.
-
Der Speicher-Controller 240 enthält einen Steuerschalter 241 zum Steuern des Fibre Channel Protocol zu den Host-Computern 210, 220, 225, einen Mikroprozessor 242 zum Steuern aller Speicher-Controller 240, einen nicht flüchtigen Steuerungs-Arbeitsspeicher 243 zum Speichern eines Mikroprogramms (Betriebssoftware) 250 zum Steuern des Betriebs des Speicher-Controllers 240, einen Zwischenspeicher 245 zum temporären Speichern (Puffern) von Daten und Puffer 244 zum Unterstützen des Zwischenspeichers 245 beim Lesen und Schreiben von Daten, einen Steuerschalter 241 zum Steuern eines Protokolls zum Steuern einer Datenübertragung zu oder von dem Parallelverarbeitungsmodul 255, dem Sperrmodul 257, dem Aufgaben-Spinning-Modul 258 und einem Berechnungsmodul 259, in denen Informationen festgelegt werden können. Mehrere Puffer 244 können zum Unterstützen der Verfahren und Schritte wie hierin beschrieben umgesetzt werden.
-
In einer Ausführungsform werden die Host-Computer oder eine oder mehrere physische oder virtuelle Einheiten 210, 220, 225 und der Speicher-Controller 240 über einen Netzwerkadapter (dieser könnte ein Fibre Channel sein) 260 als Schnittstelle verbunden, d. h. über einen als „Struktur” bezeichneten Schalter. Der Mikroprozessor 242 kann den Arbeitsspeicher 243 so steuern, dass er Befehlsinformationen von dem Cluster-Host/der Knoteneinheit (physisch oder virtuell) 210 und Informationen zum Identifizieren des Cluster-Host/der Knoteneinheit (physisch oder virtuell) 210 speichert. Der Steuerschalter 241, die Puffer 244, der Zwischenspeicher 245, die Betriebssoftware 250, der Mikroprozessor 242, der Arbeitsspeicher 243, der NVS 216, das Parallelverarbeitungsmodul 255, das Sperrmodul 257, das Aufgaben-Spinning-Modul 258 und ein Berechnungsmodul 259 stehen miteinander in Datenübertragung und können separate Komponenten oder eine einzelne Komponente sein. Ferner können einige, wenn nicht alle der Komponenten wie beispielsweise die Betriebssoftware 250 in dem Arbeitsspeicher 243 enthalten sein. Alle Komponenten in den gezeigten Einheiten können miteinander verbunden sein und zu Zwecken, die für die vorliegende Erfindung geeignet sind, miteinander in Datenübertagung stehen.
-
Unter Bezugnahme auf 3 veranschaulicht ein Ablaufplan ein beispielhaftes Verfahren 300 für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus. Das Verfahren 300 beginnt (Schritt 302). Das Verfahren 300 gestattet, dass sich eine neue Aufgabe auf dem Sperrmechanismus in die Warteschleife einreiht, wenn eine Anzahl von Aufgaben, die sich auf dem Sperrmechanismus in einer Warteschleife befinden, kleiner als ein vordefinierter Schwellenwert für parallele Operationen ist, die Sperren zwischen den mehreren Threads erfordern (Schritt 304). Das Verfahren 300 endet (Schritt 306).
-
Unter Bezugnahme auf 4 veranschaulicht ein Ablaufplan ein weiteres beispielhaftes Verfahren 400 für eine effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus. Das Verfahren 400 beginnt (Schritt 402). Das Verfahren 400 setzt einen Lock Lock-Try-or-Spin-Mechanismus um oder ruft diesen ab (Schritt 404). Das Verfahren 400 erhält die Anzahl von Aufgaben die sich auf dem Lock-Try-or-Spin-Mechanismus in einer Warteschleife befinden (Schritt 406). Das Verfahren 400 ermittelt anschließend, ob die Anzahl von Aufgaben, die sich auf den Sperren in einer Warteschleife befinden (z. B. einem Lock-Try-or-Spin-Mechanismus), höher als eine vordefinierte Anzahl ist (z. B. N, wobei N mindestens ein Wert größer 0 sein kann, wie beispielsweise 1) (Schritt 408). Falls ja, fertigt das Verfahren 400 eine Aufgabe neu ab, wenn die Anzahl von Aufgaben, die sich auf dem Lock-Try-or-Spin Mechanismus in einer Warteschleife befinden, höher als eine vordefinierte Anzahl ist (z. B. N, wobei N mindestens ein Wert größer 0 sein kann, wie beispielsweise 1) (Schritt 410). Wenn die Anzahl von Aufgaben, die sich für den Lock-Try-or-Spin-Mechanismus in einer Warteschleife befinden, gleich der oder kleiner als die vordefinierte Anzahl ist, reiht sich die neue Aufgabe auf der Sperre in die Warteschleife ein (Schritt 412). Das Verfahren 400 endet (Schritt 414).
-
In einer Ausführungsform setzt die vorliegende Erfindung einen neuen Lock-Try-or-Spin-Mechanismus auf dem Spinlock um. Der neue Lock-Try-or-Spin-Mechanismus arbeitet wie folgt: 1) Wenn die Anzahl von Aufgaben, die sich auf dem Spinlock in einer Warteschleife befinden, größer als N ist (N kann 1 sein), gibt der Algorithmus eine Fehlerbenachrichtigung zurück. Wenn die Anzahl von Aufgaben, die sich auf dem Spinlock in einer Warteschleife befinden, gleich und/oder größer N ist (N kann 1 sein), gibt der Algorithmus an, dass sich die Aufgabe auf der Sperre in eine Warteschleife einreiht. Die Anzahl von Aufgaben, die sich bereits in einer Warteschleife befinden, kann von anderen Typen von Sperren (z. B. Ticket-Sperren) erhalten werden. Zum Beispiel kann die vorliegende Erfindung bei Ticket-Sperren angeben, wie viele Aufgaben/CPUs seit der letzten angegebenen Ticketnummer und aktuellen bereitgestellten Ticketnummer warten.
-
In einer Ausführungsform ruft die vorliegende Erfindung den Lock-Try-or-Spin-Mechanismus ab. Wenn der Lock-Try-or-Spin-Mechanismus nicht erfolgreich ist, beendet die vorliegende Erfindung den Prozessor, und die Aufgabe wird in die Abfertigungswarteschlange verschoben. Somit beseitigt die vorliegende Erfindung die Notwendigkeit, überhaupt zu warten, wie bei Sperren auf Warteschlangen-Grundlage. In einer Ausführungsform beseitigt die vorliegende Erfindung die Notwendigkeit, eine bestimmte Zeit zu warten, und bricht die Aufgabe in den Warteschlangen-Sperren ab, wodurch die Verschwendung von CPU-Zyklen beseitigt wird.
-
Des Weiteren beseitigt die vorliegende Erfindung die Notwendigkeit, dass sich jede Aufgabe in eine Warteschlange einreihen muss, wie bei Ticket-Sperren erforderlich, was bedeutet, dass CPU-Zyklen von anderen Aufgaben verwendet werden können. Somit kann der neue Lock-Try-or-Spin-Mechanismus zusätzlich zu Ticket-Sperren und/oder Sperren auf Warteschlangen-Grundlage umgesetzt werden.
-
Wie einem Fachmann klar sein wird, können Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Erfindung in der Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform {einschließlich Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte kombiniert, auf die alle hierin allgemein als „Schaltung”, „Modul” oder „System” Bezug genommen werden kann. Des Weiteren können Aspekte der vorliegenden Erfindung die Gestalt eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darin ausgeführten computerlesbaren Programmcode ausgeführt ist.
-
Jede Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein physisches computerlesbares Speichermedium sein. Ein physisches computerlesbares Speichermedium kann zum Beispiel ein elektronisches, magnetisches, optisches, Quarz-, Polymer-, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu Beispielen für ein physisches computerlesbares Speichermedium zählen eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein RAM, ein ROM, ein EPROM, ein Flash-Speicher, ein Lichtwellenleiter, ein CD-ROM, eine optische Speichereinheit, eine Magnetspeichereinheit oder jede geeignete Kombination des Vorgenannten, sie sind aber nicht darauf beschränkt. In dem Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes konkrete Medium sein, das ein Programm oder Daten zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung enthalten oder speichern kann.
-
In einem computerlesbaren Medium verkörperter Computercode kann unter Verwendung jedes geeigneten Mediums übertragen werden, einschließlich drahtlos, drahtgebunden, über ein Lichtwellenleiterkabel, Funkfrequenz (HF) usw. oder jede geeignete Kombination des Vorgenannten, ist aber nicht darauf beschränkt. Computercode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder statischen Sprache geschrieben werden wie beispielsweise der Programmiersprache „C” oder ähnlichen Programmiersprachen. Der Computercode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk oder Datenübertragungssystem verbunden werden, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), ein konvergentes Netzwerk, oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters), es ist jedoch nicht darauf beschränkt.
-
Aspekte der vorliegenden Erfindung werden im Vorgenannten unter Bezugnahme auf Veranschaulichungen des Ablaufplans und/oder der Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern und Kombinationen von Blöcken in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
-
Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, einschließlich Anweisungen, die die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegebene Funktion/Handlung umsetzen. Die Computerprogrammanweisungen können auch auf einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen Vorrichtung, die programmierbare Daten ausführt, oder anderen Einheiten zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Handlungen bereitstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
-
Der Ablaufplan und die Blockschaubilder in den vorgenannten Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Diesbezüglich kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. Es ist ebenfalls anzumerken, dass in einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge auftreten können als in den Figuren angegeben. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block in den Blockschaubildern und/oder in der Veranschaulichung des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder der Veranschaulichung des Ablaufplans durch spezielle Systeme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Handlungen ausführen, oder Kombinationen von spezieller Hardware und Computeranweisungen umgesetzt werden können.
-
Obwohl eine oder mehrere Ausführungsformen der vorliegenden Erfindung ausführlich veranschaulicht worden sind, wird für Fachleute offenkundig sein, dass an diesen Ausführungsformen Modifizierungen und Anpassungen vorgenommen werden können, ohne vom Schutzumfang der vorliegenden Erfindung abzuweichen, wie in den folgenden Ansprüchen dargelegt.