-
BEREICH DER ERFINDUNG
-
Die Beschreibung bezieht sich auf den Bereich der Middleware und insbesondere auf das programmatische Ermitteln eines Ausführungsmodus für eine Anforderungszuteilung unter Verwendung von historischen Maßzahlen.
-
DER ERFINDUNG ZUGRUNDE LIEGENDER ALLGEMEINER STAND DER TECHNIK
-
Wenn ein Anwendungsserver ausführbaren Code verarbeitet wie zum Beispiel eine Web-Anwendung (z. B. ein JAVA-Servlet oder eine JAVA SERVER PAGE) können in der Web-Anwendung ein oder mehrere Anforderungszuteilungen vorhanden sein. Diese Anforderungszuteilungen sind üblicherweise durch einen Funktionsaufruf ”include()” gekennzeichnet, der eine auszuführende Ressource wie zum Beispiel ein anderes Servlet oder eine Java-Serverseite (JAVA SERVER PAGE (JSP)) angibt. Die angegebene Ressource kann in einer von zwei Betriebsarten, asynchron oder synchron, ausgeführt werden. Die synchrone Ausführung führt oft dazu, dass der ausführbare Code blockiert (z. B. vorübergehend gesperrt wird), bis die Ausführung der angegebenen Ressource abgeschlossen ist, eine Situation, die in vielen Fällen ungünstig ist. Überdies kann die Ressource zusätzliche Anforderungszuteilungen enthalten, die andere Ressourcen ausführen können, was eine Ausführungskette zur Folge hat, die oftmals eine beträchtliche Latenzzeit in die Web-Anwendung einführt. Als Folge dieser Latenzzeit können somit mehrere Nachteile entstehen, zu denen nichtreagierende Anwendungen und/oder eine übermäßige Serverauslastung gehören können.
-
Eine Lösung zur Überwindung dieser Nachteile besteht in der Verwendung eines asynchronen Ausführungsmodus für die angegebene Ressource. Die asynchrone Ausführung ist jedoch mit einem Zusatzaufwand verbunden, beispielsweise der Bildung eines neuen Thread, der Platzierung von Markern in der Ausgabe und dem Austausch von Markern für eine server- oder clientseitige Aggregierung. In vielen Fällen kann dieser Zusatzaufwand die Latenzzeit noch vergrößern, was eine beträchtliche Verringerung der Leistungsgewinne, die die asynchrone Ausführung bietet, zur Folge haben kann. Die synchrone Ausführung einer Ressource kann zum Beispiel zu einer Latenzzeit von 10 ms führen, während die asynchrone Ausführung derselben Ressource aufgrund des von der asynchronen Ausführung eingeführten Zusatzaufwands (z. B. Kosten für die Einrichtung eines Thread) zu einer Latenzzeit von 20 ms führen kann.
-
Außerdem können die synchrone und die asynchrone Ausführung von Ressourcen in dynamischen Server-Umgebungen aufgrund von Änderungen bei der Verfügbarkeit der Ressourcen zu unterschiedlichen Ergebnissen führen. Da Web-Anwendungen gemeinhin in diesen Umgebungen eingesetzt werden, unterliegen die Web-Anwendungen Leistungsschwankungen. Um diese Probleme anzugehen, stellen Entwickler von Web-Anwendungen oftmals Vermutungen darüber an, welcher Ausführungsmodus die besten Ergebnisse hinsichtlich der Leistungsfähigkeit erzielen kann. Häufig haben diese Vermutungen nicht die optimalste Leistungsfähigkeit der Anwendung zum Ergebnis. Somit können viele Server-Umgebungen, die Web-Anwendungen ausführen, unter einer ineffizienten Nutzung der Ressourcen und einem beeinträchtigten Leistungsvermögen des Servers leiden -Faktoren, die eine Informationstechnologie-(IT-)Infrastruktur in unangemessener Weise belasten können.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Eine Ausführungsform der Beschreibung beinhaltet ein Verfahren zum Zuteilen einer Anforderung. Bei dem Verfahren kann eine Anforderungszuteilung, die in einem ersten ausführbaren Code während der Ausführungszeit ausgeführt werden soll, gekennzeichnet werden. Der Anforderungszuteilung kann ein eindeutiger Kennwert zugeordnet werden. Der eindeutige Kennwert der Anforderungszuteilung kann einen zweiten ausführbaren Code, der ausgeführt werden soll, kennzeichnen. Der erste und der zweite ausführbare Code können sich in einer Komponente eines Web-Behälters (Web container) befinden. Der Web-Behälter kann beliebige einer Vielfalt von Technologien nutzen, welche die Einbindung von Ressourcen gestatten. Beispielsweise kann der Web-Behälter einer Laufzeitumgebung wie zum Beispiel einer Laufzeitumgebung vom Typ J2EE zugeordnet werden. Vor der Ausführung des zweiten ausführbaren Codes kann ein Ausführungsmodus für den zweiten ausführbaren Code ermittelt werden. Diese Ermittlung kann die Auswertung von mindestens einer Leistungsmaßzahl oder aber einem Schwellwert beinhalten. Der Schwellwert kann mindestens ein von einem Benutzer festgelegter Wert oder aber ein programmatisch festgelegter Wert sein. Bei dem Ausführungsmodus kann es sich um einen asynchronen Ausführungsmodus oder um einen synchronen Ausführungsmodus handeln. Als Reaktion auf die Ermittlung des Ausführungsmodus kann die Anforderungszuteilung auf der Grundlage der Verwendung des ermittelten Ausführungsmodus ausgeführt werden. Der synchrone Ausführungsmodus kann dazu führen, dass der erste ausführbare Code ausgeführt wird und die Ausführung abschließt, bevor die Ausführung des zweiten ausführbaren Codes beginnt. Der asynchrone Ausführungsmodus kann dazu führen, dass der erste und der zweite ausführbare Code gleichzeitig ausgeführt werden.
-
Eine weitere Ausführungsform der Beschreibung kann ein System zum Zuteilen einer Anforderung einschließen. Das System kann eine Zuteilungs-Steuerkomponente enthalten, die eine Anforderungszuteilung, die einem ersten ausführbaren Code zugeordnet ist, kennzeichnen und ausführen kann. Die Zuteilungs-Steuerkomponente kann eine Komponente einer Transportkanalkette in einer Laufzeitumgebung sein. Die Transportkanalkette kann einer Transportschicht eines Open-System-Interconnect-(OSI-)Schichtenmodells zugeordnet sein. Bei der Laufzeitumgebung kann es sich um eine beliebige Umgebung handeln, welche die Einbindung von Ressourcen unterstützt. Zum Beispiel und in einer Ausführungsform kann die Laufzeitumgebung eine Laufzeitumgebung vom Typ JAVA 2 ENTERPRISE EDITION (J2EE) sein. Das System kann auch eine Anforderungszuteilung, die dem ersten ausführbaren Code zugeordnet ist, einschließen. Der Anforderungszuteilung kann ein eindeutiger Kennwert zugeordnet werden. Der eindeutige Kennwert kann eine eindeutige Ressource, die ausgeführt werden soll, kennzeichnen. Die Anforderungszuteilung kann die Ausführung der eindeutigen Ressource auslösen. Die eindeutige Ressource kann einen zweiten ausführbaren Code enthalten. Das System kann auch mindestens eine Leistungsmaßzahl enthalten, die der Anforderungszuteilung zugeordnet ist. Die Leistungsmaßzahl kann während der Ausführung der Anforderungszuteilung automatisch erfasst werden. Die Leistungsmaßzahl kann verwendet werden, um das Ausführungsverhalten der Anforderungszuteilung zu verändern. Ein Regelsatz kann vorhanden sein, der so konfiguriert ist, dass er mindestens eines von Folgendem, einen Schwellwert, einen Ausführungsmodus oder eine Ereignisbehandlungsroutine, die der Anforderungszuteilung zugeordnet ist, festlegt. Der Schwellwert kann eine von einem Benutzer festgelegte Einstellung oder ein automatisch ermittelter Wert sein. Bei dem Ausführungsmodus kann es sich um einen synchronen Ausführungsmodus oder um einen asynchronen Ausführungsmodus handeln. Der synchrone Ausführungsmodus kann dazu führen, dass der erste ausführbare Code in Folge mit dem zweiten ausführbaren Code ausgeführt wird, wobei der zweite ausführbare Code erst ausgeführt werden darf, wenn der erste ausführbare Code seine Ausführung abgeschlossen hat. Der asynchrone Ausführungsmodus kann dazu führen, dass der erste und der zweite ausführbare Code gleichzeitig ausgeführt werden.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Bevorzugte Ausführungsformen der vorliegenden Erfindung werden nun lediglich beispielhaft und mit Bezug auf die folgenden Zeichnungen beschrieben, bei denen:
-
1 ein Ablaufplan ist, der ein Verfahren veranschaulicht, welches einen Ausführungsmodus für eine Anforderungszuteilung unter Verwendung von historischen Maßzahlen gemäß einer Ausführungsform von erfindungsgemäßen Anordnungen, die hier beschrieben werden, programmatisch ermittelt;
-
2 ein Blockschaubild ist, das ein Segment eines ausführbaren Codes und ein Übertragungsmodell darstellt, um einen Ausführungsmodus für eine Anforderungszuteilung unter Verwendung von historischen Maßzahlen gemäß einer Ausführungsform von erfindungsgemäßen Anordnungen, die hier offengelegt werden, programmatisch zu ermitteln;
-
3 ein Blockschaubild ist, das ein System darstellt, um einen Ausführungsmodus für eine Anforderungszuteilung unter Verwendung von historischen Maßzahlen gemäß einer Ausführungsform von erfindungsgemäßen Anordnungen, die hier offengelegt werden, programmatisch zu ermitteln; und
-
4 ein Blockschaubild ist, das einen Satz von Schnittstellen darstellt, um einen Ausführungsmodus für eine Anforderungszuteilung unter Verwendung von historischen Maßzahlen gemäß einer Ausführungsform von erfindungsgemäßen Anordnungen, die hier beschrieben werden, programmatisch zu ermitteln.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die Beschreibung sieht eine Lösung vor, um einen Ausführungsmodus für eine Anforderungszuteilung während der Laufzeit unter Verwendung von historischen Maßzahlen programmatisch zu ermitteln. Das heißt, ein Anforderungszuteiler kann automatisch und auf intelligente Weise zwischen Zuteilungen von Verarbeitungsanforderungen (z. B. ”include()”) in einem synchronen Modus und in einem asynchronen Modus hin- und her-schalten. Jeder Anforderungszuteilung können ein eindeutiger Kennwert wie zum Beispiel eine Prozess-Kennung (Prozess-ID) oder ein einheitlicher Bezeichner für Ressourcen (Uniform Resource Identifier (URI)), historische Maßzahlen und ein Regelsatz zugeordnet werden. Bei jeder Ausführung der Anforderungszuteilung können historische Maßzahlen erfasst werden. Zu den Maßzahlen können, ohne auf diese beschränkt zu sein, die Ausführungsdauer und/oder die Ausführungshäufigkeit, die Auslastung des Prozessors, die Speicherbelegung, die Eingabe/Ausgabe in das beziehungsweise aus dem Netzwerk, die Anzahl der abhängigen Anforderungszuteilungen und dergleichen gehören. Unter Verwendung von historischen Maßzahlen können Regeln aufgestellt werden, um zu ermitteln, in welchem Modus die spätere Ausführung der Anforderungszuteilung stattfinden soll. Wenn die Dauer der synchronen Ausführung (z. B. 100 ms) einer Anforderungszuteilung zum Beispiel eine von dem Benutzer angegebene Dauer (z. B. 50 ms) übersteigt, kann die spätere Ausführung der Anforderungszuteilung im asynchronen Modus ausgeführt werden. Bei den Regeln, die zu der Anforderungszuteilung gehören, kann es sich um eine oder mehrere beliebig komplexe Regeln zur Ermittlung eines geeigneten Ausführungsmodus handeln. Als solches kann die Optimierung der Laufzeit von Web-Anwendungen weiter verbessert werden.
-
Der Fachmann wird als vorteilhaft erkennen, dass die vorliegende Erfindung als ein System, ein Verfahren oder ein Computerprogrammprodukt realisiert werden kann. Folglich kann die vorliegende Erfindung die Form einer ganz in Hardware realisierten Ausführung, einer ganz in Software realisierten Ausführung (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführung annehmen, die Software- und Hardware-Erscheinungsformen kombiniert, die hier alle allgemein als eine ”Schaltung”, ein ”Modul” oder ein ”System” bezeichnet werden können. Überdies kann die vorliegende Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren beliebigen physisch greifbaren Ausdrucksmedien realisiert werden kann, wobei sich in dem Medium ein von einem Computer nutzbarer Programmcode befindet.
-
Jede beliebige Kombination aus einem oder mehreren von einem Computer nutzbaren oder computerlesbaren Medien kann verwendet werden. Das von einem Computer nutzbare oder computerlesbare Medium kann zum Beispiel, ohne auf diese beschränkt zu sein, ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit sein. Zu konkreteren Beispielen (wobei die Liste keinen Anspruch auf Vollständigkeit erhebt) für das computerlesbare Medium würden folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine Diskette eines tragbaren Computers, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Nur-Lese-Speicher (CDROM), eine optische Speichereinheit oder eine magnetische Speichereinheit.
-
Das computerlesbare Medium kann ein nicht flüchtiges Speichermedium sein, in dem Daten in einer digital codierten Form gespeichert werden. Das computerlesbare Medium kann ein physisches, greifbares Speichermedium sein, das Informationen speichern kann, welche von einer Datenverarbeitungsvorrichtung entnommen werden können, um den Dateninhalt zu erhalten, der auf dem Speichermedium gespeichert wurde.
-
Computerprogrammcode zur Durchführung von Operationen der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen darunter eine objektorientierte Programmiersprache wie beispielsweise JAVA, Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache ”C” oder in ähnlichen Programmiersprachen geschrieben sein. Die Ausführung des Programmcodes kann 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 entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server erfolgen. Im letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jede beliebige Art eines Netzwerks, darunter ein lokales Netzwerks (LAN) oder ein Weitverkehrsnetz (WAN), verbunden werden oder die Verbindung kann über einen externen Computer (zum Beispiel über das Internet mittels eines Internet-Diensteanbieters) vorgenommen werden.
-
Die vorliegende Erfindung wird nachstehend mit Bezug auf Darstellungen in Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Darstellungen in den Ablaufplänen und/oder der Blockschaubildern sowie Kombinationen aus Blöcken in den Darstellungen der Ablaufpläne und/oder den Blockschaubildern mittels Computerprogrammbefehlen realisiert werden können. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputer, eines Computer für spezielle Anwendungen oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
-
Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand erzeugen, der Befehlsmittel enthält, die die Funktion/den Vorgang ausführen, welche beziehungsweise welcher in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben ist.
-
Die Computerprogrammbefehle können auch auf einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung geladen werden, um die Durchführung einer Reihe von Betriebsschritten auf dem Computer oder einer anderen programmierbaren Vorrichtung zu bewirken, um einen von einem Computer ausgeführten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ermöglichen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
-
1 ist ein Ablaufplan, der ein Verfahren 100 zum programmatischen Ermitteln eines Ausführungsmodus für eine Anforderungszuteilung unter Verwendung von historischen Maßzahlen gemäß einer Ausführungsform von erfindungsgemäßen Anordnungen veranschaulicht, die hier beschrieben werden. Bei dem Verfahren 100 kann eine Anforderungszuteilung, die einem gekennzeichneten ausführbaren Code (z. B. einem JAVA-Servlet) zugeordnet ist, welcher in einem Anwendungsserver (z. B. einem Anwendungsserver vom Typ JAVA 2 ENTERPRISE EDITION) ausgeführt wird, automatisch in einer von einer Maschine ermittelten Art und Weise ausgeführt werden. Unter Verwendung von historischen Maßzahlen kann die Ermittlung der Anforderungszuteilung während der Laufzeit durchgeführt werden, um einen Ausführungsmodus zu kennzeichnen: asynchron oder synchron. Bei dem ausführbaren Code kann es sich um eine oder mehrere Komponenten einer Web-Anwendung darunter Servlets, JAVA-Serverseiten, JAVA-Beans, JAVA-Klassen, Portlets und dergleichen, handeln, ohne auf diese beschränkt zu sein.
-
Ausführbarer Code kann zum Beispiel eine JAVA-Web-Anwendung sein, die einen dynamischen Web-Inhalt bereitstellt.
-
Das Verfahren 100 kann im Rahmen einer beliebigen Anzahl von geeigneten Systemen wie zum Beispiel dem System 300 durchgeführt werden. In der gesamten Beschreibung werden aus Gründen der Verständlichkeit und der Zweckmäßigkeit auf JAVA beruhende Umsetzungsbeispiele dargelegt. Der Umfang der Beschreibung ist in dieser Hinsicht nicht beschränkt, und die hier ausführlich beschriebenen erfindungsgemäßen Anordnungen können mittels beliebiger Technologien einer Vielfalt von Technologien (darunter auch Nicht-JAVA-Technologien) realisiert werden, solange die zur Realisierung genutzten Technologien die Einbindung von Ressourcen unterstützen. In einer Ausführungsform können zum Beispiel .NET-Technologien bei der Ermittlung eines Ausführungsmodus für eine Anforderungszuteilung unter Verwendung von historischen Maßzahlen verwendet werden, wie hier ausführlich beschrieben wird.
-
In der hier verwendeten Weise kann eine Anforderungszuteilung programmatische Befehle enthalten, die die Ausführung einer von einem Entwickler angegebenen Ressource gestatten. In einer Ausführungsform (z. B. einer auf JAVA beruhenden Ausführungsform) kann die Anforderungszuteilung ein Verfahren mit einer JAVA-Anwendungsprogrammierschnittstelle (Application Programming Interface (API)) wie zum Beispiel include() und forward() sein. Die Anforderungszuteilung kann mit Hilfe von einem oder mehreren Kennzeichnungsmechanismen, darunter, ohne auf diese beschränkt zu sein, eine Prozess-ID, eine automatischen/manuellen Code-Annotation, die Einbindung von Markern (Tags), eine Kennung in Form von einer Verweisadresse (Uniform Resource Locator (URL)), eine eindeutigen Pfadkennung, eine eindeutigen Abfragezeichenfolge und dergleichen eindeutig gekennzeichnet werden. Jeder Anforderungszuteilung können eine oder mehrere historische Maßzahlen und Einstellungen des Ausführungsmodus zugeordnet werden, was ein optimiertes Anforderungszuteilungsverfahren auf der Grundlage der Leistungsfähigkeit des Anwendungsservers ermöglicht.
-
Im Schritt 105 wird ein ausführbarer Code in einem Web-Behälter initialisiert. Der ausführbare Code kann eine Web-Anwendung sein, die in dem Web-Behälter ausgeführt wird. Bei dem Web-Behälter kann es sich um ein oder mehrere Konstrukte handeln, die in einem Anwendungsserver vom Typ JAVA 2 ENTERPRISE EDITION (J2EE) wie zum Beispiel einer JAVA VIRTUAL MACHINE (JVM) ausgeführt werden. Andere Server, wie zum Beispiel ein .NET-Server, können in Abhängigkeit von den Auswahlmöglichkeiten bei der Realisierung und einer Ziel-Realisierungsumgebung, in der das Verfahren 100 durchgeführt wird, anstelle des J2EE-Anwendungsservers verwendet werden. Im Schritt 110 wird eine Anforderungszuteilung, die dem initialisierten ausführbaren Code zugeordnet ist, gekennzeichnet. Der gekennzeichneten Zuteilung können eine oder mehrere Ressourcen, die ausgeführt werden sollen, zugeordnet werden. Bei den Ressourcen kann es sich um eine oder mehrere ausführbare Code-Objekte wie zum Beispiel Servlets, eine oder mehrere JAVA-SERVER-PAGE-(JSP-)Webseiten und dergleichen handeln. Im Schritt 115 kann das Verfahren, wenn es für die gekennzeichnete Zuteilung Maßzahlen gibt, zum Schritt 120 weiterschalten, andernfalls zum Schritt 155. Bei den Maßzahlen, die der gekennzeichneten Zuteilung zugeordnet sind, kann es sich um eine oder mehrere historische Maßzahlen handeln. Zu den Maßzahlen können, ohne auf diese beschränkt zu sein, die Ausführungsdauer und/oder die Ausführungshäufigkeit, die Komplexität, die Auslastung des Prozessors, die Speicherbelegung, die Eingabe/Ausgabe in das beziehungsweise aus dem Netzwerk, die Anzahl der abhängigen gekennzeichneten Zuteilungen und dergleichen gehören. Maßzahlen können beispielsweise die durchschnittliche Ausführungsdauer der gekennzeichneten Zuteilung über einen festgelegten Zeitraum beinhalten. Maßzahlen für jeden Ausführungsmodus einer gekennzeichneten Zuteilung können überdies erfasst werden, was Funktionen für eine optimale Entscheidungsfindung möglich macht. Das heißt, eine Auswertung von Maßzahlen für einen asynchronen Ausführungsmodus und für einen synchronen Ausführungsmodus kann durchgeführt werden, um Standardeinstellungen für eine Web-Anwendung festzulegen.
-
Im Schritt 120 kann das Verfahren, wenn historische Maßzahlen für die gekennzeichnete Zuteilung einen zuvor festgelegten Schwellwert überschreiten, zum Schritt 125 weiterschalten, andernfalls zum Schritt 140. Der Schwellwert kann zum Beispiel ein Zeitwert wie eine Ausführungsdauer sein. In einer Ausführungsform können die historische Ausführungszeit und Schwellwerte numerisch verglichen werden, um zu ermitteln, in welchem Modus die gekennzeichnete Zuteilung ausgeführt werden soll. In Fällen, in denen kein Schwellwert vorhanden ist, kann die gekennzeichnete Zuteilung unter Anwendung der Vorgehensweise mit der ”besten Vermutung” ausgeführt werden. Indem man beispielsweise ähnliche Zuteilungen auswertet, kann ein Schwellwert programmatisch abgeleitet werden, was eine intelligente Ausführung der gekennzeichneten Zuteilung ermöglicht. Im Schritt 125 wird ein Zuteilungsereignis bei einer Ereignisbehandlungsroutine verzeichnet. Im Schritt 130 wird die gekennzeichnete Zuteilung im asynchronen Modus ausgeführt, der die Ausführung eines nichtblockierenden Codes beinhalten kann. Das heißt, die Web-Anwendung kann weiterhin gleichzeitig mit der gekennzeichneten Zuteilung ausgeführt werden. Im Schritt 135 können Maßzahlen für die gekennzeichnete Zuteilung erfasst werden. Maßzahlen können mit Hilfe von einer oder mehreren Maßzahl-Erfassungskomponenten wie zum Beispiel Leistungsüberwachungsagenten erfasst werden. Zu Leistungsüberwachungsagenten können Auslastungs-Überwachungseinrichtungen, Werkzeuge zur Optimierung des ausführbaren Codes und dergleichen gehören, ohne auf diese beschränkt zu sein.
-
Im Schritt 140 kann die gekennzeichnete Zuteilung im synchronen Modus ausgeführt werden. Im Schritt 147 können Maßzahlen für die gekennzeichnete Zuteilung erfasst werden. Im Schritt 145 können Messdaten für die gekennzeichnete Zuteilung erfasst werden. In einer Ausführungsform können Messdaten die Blockierdauer der gekennzeichneten Zuteilung beinhalten. Im Schritt 150 kann das Verfahren, wenn die Ausführung der gekennzeichneten Zuteilung abgeschlossen ist, zum Schritt 157 weiterschalten, andernfalls kann das Verfahren zum Schritt 140 zurückkehren.
-
Im Schritt 155 wird die gekennzeichnete Zuteilung unter Verwendung von Standardeinstellungen ausgeführt und Maßzahlen, die der Zuteilung zugeordnet sind, können erfasst werden. Im Schritt 157 kann der Schwellwert auf der Grundlage von historischen Maßzahlen optional geändert werden. Eine Änderung kann beispielsweise das Erhöhen/Verringern der Schwellwerte im Laufe der Zeit einschließen. Das heißt, die Leistungsfähigkeit zur Laufzeit kann sich stetig verbessern, da historische Maßzahlen erfasst werden. Im Schritt 160 kann das Verfahren, wenn weitere Zuteilungen, die dem ausführbaren Code zugeordnet sind, zur Verarbeitung vorhanden sind, zum Schritt 110 zurückkehren, andernfalls kann es zum Schritt 165 weiterschalten. Im Schritt 165 kann die Ausführung des ausführbaren Codes beendet werden.
-
Es sollte sich verstehen, dass die offengelegten Schritte des Verfahrens 100 nicht als die Erfindung in irgendeiner Hinsicht einschränkende Schritte auszulegen sind. Das Verfahren 100 kann fortlaufend und in Echtzeit durchgeführt werden, was eine dynamische Optimierung eines jeden ausführbaren Codes bei schwankender Verfügbarkeit der Ressourcen des Anwendungsservers ermöglicht. Um eine Überoptimierung von Zuteilungen zu vermeiden, was die Leistungsfähigkeit beeinträchtigen kann, kann jede Anforderung von dem Verfahren 100 jedoch optional statisch festgelegt werden. In einer Ausführungsform kann das Verfahren 100 in Intervallen durchgeführt werden, wodurch die Datenverarbeitungsressourcen auf ein Mindestmaß beschränkt werden können.
-
2 ist ein Blockschaubild, das ein Segment 210 eines ausführbaren Codes und ein Datenübertragungsmodell 230 darstellt, um einen Ausführungsmodus für eine Anforderungszuteilung unter Verwendung von historischen Maßzahlen gemäß einer Ausführungsform von erfindungsgemäßen Anordnungen, die hier beschrieben werden, programmatisch zu ermitteln. In einem Fall kann das Segment 210 des ausführbaren Codes eine JAVA-Quellcodedatei sein. Es besteht die Möglichkeit, hier andere Arten von Segmenten 210 zu verwenden, die auf anderen (Nicht-JAVA-)Technologien beruhen, wobei in dieser Offenlegungsschrift ein auf JAVA beruhendes Beispiel verwendet wird, um ein Konzept zum Ausdruck zu bringen, das als von jeder bestimmten Ausführungssprache unabhängig auszulegen ist. In dem Segment 210 des ausführbaren Codes kann eine Anwendungsprogrammierschnittstelle (API) 212 für eine Anforderungszuteilung zulassen, dass eine Anforderungszuteilung auf der Grundlage von einer oder mehreren Bedingungen, zu denen verfügbare Ressourcen, die Leistungshistorie und dergleichen gehören, ohne auf diese beschränkt zu sein, automatisch in einer optimierten Weise ausgeführt wird. In einer Ausführungsform kann die API 212 eine Hüllenklasse sein, die einen vorhandenen Anforderungszuteiler umhüllt. In einer anderen Ausführungsform kann die API 212 ein direkter Ersatz für herkömmliche Anforderungszuteiler sein. Das heißt, vorhandener ausführbarer Code kann unverändert bleiben, während er gleichzeitig von Leistungsgewinnen der API 212 profitiert. In einer Ausführungsform kann ein Anforderungszuteiler 244 eine Komponente einer Transportkanalkette 240 sein, was die Ausführung einer Anforderungszuteilung in einem transparenten, dynamischen Modus erlaubt.
-
Unter Verwendung der API 212 kann es der Entwickler einer Anwendung gestatten, dass eine Anforderungszuteilung 214 in einem optimalen Ausführungsmodus zur Laufzeit auf der Grundlage der verfügbaren Datenverarbeitungsressourcen verarbeitet wird. In einer Ausführungsform kann die API 212 eine Komponente einer Web-Behälterplattform der Serie IBM WEBSPHERE sein. Ein Anwendungsentwickler kann zum Beispiel über eine oder mehrere Importanweisungen (z. B. ”importcom.ibm.Websphere.Webcontainer.RequestDispatch”) auf Anforderungszuteilungs-Funktionen zugreifen. Die Anforderungszuteilung 214 kann einen oder mehrere Parameter enthalten, um eine kundenspezifische Ausgestaltung der Ausführung zu ermöglichen. In einer Ausführungsform können Argumente (z. B. auto, 500 ms) einem Anwendungsentwickler ermöglichen, einen Teil des Verhaltens der Anforderungszuteilung zu steuern. Außerdem kann die API 212 Funktionen zulassen, um Anforderungszuteilungen programmspezifisch (natively) zu verwalten und zu überwachen, wodurch Entwickler den Ausführungscode und die Laufzeitumgebung weiterhin steuern können.
-
In einer Ausführungsform kann sich ein Anforderungszuteiler 244 in der Transportschicht 232 eines Open-System-Interconnect-Modells 230 befinden. Der Zuteiler 244 kann Anforderungen des HTTP 246 transparent empfangen und geeigneten Web-Behältern 242 zuteilen. Somit kann der Zuteiler 244 unabhängig von installierten Anwendungen und Anwendungsbeschränkungen arbeiten.
-
Hier vorgelegte Zeichnungen dienen lediglich der Veranschaulichung und sollten nicht als die Erfindung in irgendeiner Hinsicht einschränkend verstanden werden. In einer Ausführungsform kann die API 212 für den Anwendungsentwickler transparent sein, so dass die Syntax der Anforderungszuteilung identisch mit der herkömmlichen Syntax ist. Außerdem kann die API 212 eine Komponente eines Basispakets sein, das einer Web-Anwendung Funktionen automatisch zur Verfügung stellt. Das heißt, für den Entwickler der Anwendung besteht keine Notwendigkeit, die Funktionen der API 212 manuell zu importieren.
-
3 ist ein Blockschaubild, das ein System 300 darstellt, um einen Ausführungsmodus für eine Anforderungszuteilung unter Verwendung von historischen Maßzahlen gemäß einer Ausführungsform von erfindungsgemäßen Anordnungen, die hier beschrieben werden, programmatisch zu ermitteln. In dem System 300 kann der Anforderungszuteiler 340 gestatten, dass eine Zuteilung 326, die einem Servlet 324 zugeordnet ist, in einem automatisch ermittelten Modus ausgeführt wird. Der programmatisch ermittelte Modus kann ein synchroner Ausführungsmodus oder ein asynchroner Ausführungsmodus sein. In einer Ausführungsform kann der automatisch ermittelte Ausführungsmodus auf herkömmliche Weise durchgeführt werden. Das heißt, dass keine Änderung des Zuteilungsverhaltens und/oder des Zusatzaufwands erforderlich ist, um die Funktionen des Zuteilers 340 zu unterstützen. In einer Ausführungsform kann die Steuerkomponente 342 einen Ausführungsmodus für eine spätere Ausführung der Anforderungszuteilung 326 automatisch ermitteln. Somit kann jede Instanz der Zuteilung 326 als Reaktion auf die Verfügbarkeit der Ressourcen des Servers 320 in einem synchronen Modus oder in einem asynchronen Modus ausgeführt werden.
-
In der hier verwendeten Weise kann jedes Servlet 324 über eine Anforderungszuteilung 326 einer oder mehreren ausführbaren Ressourcen zugeordnet werden. Das Servlet 324 kann in einem Web-Behälter 323 eines Anwendungsservers 320 vom Typ JAVA 2 ENTERPRISE EDITION (J2EE) (oder in einem anderen Server-Typ in anderen in Betracht gezogenen Ausführungsformen) ausgeführt werden. Bei dem Web-Behälter 323 kann es sich um eine dynamische Laufzeitumgebung wie zum Beispiel eine Laufzeitumgebung vom Typ JAVA VIRTUAL MACHINE handeln. Das Servlet 324 kann zum Beispiel eine Web-Anwendung sein, die einem anfordernden Client 310 in einer Browser-Schnittstelle 312 auf dem Web beruhenden Inhalt (z. B. Web-Seiten) darstellen kann. Jeder Anforderungszuteilung 326 kann ein eindeutiger Kennwert wie zum Beispiel eine Prozess-ID oder ein eindeutiger Schlüssel und/oder eine Ressourcenkennung (z. B. Uniform Resource Locator) zugeordnet werden. In einer Ausführungsform kann der eindeutige Schlüssel ein automatisch erzeugter Wert (z. B. von der Zuteilungs-Steuerkomponente 342) oder ein manuell festgelegter Wert sein. In einem Fall kann der eindeutige Kennwert als Annotation (oder sogar als Kommentar zum Quellcode) gespeichert werden, der während der Kompilierungszeit entnommen werden kann.
-
Das Servlet 324 kann eine Anforderung 380 empfangen, welche die Ausführung einer Anforderungszuteilung 326 auslösen kann.
-
Wenn die Laufzeitumgebung 323 auf eine Anforderungszuteilung 326 trifft, kann die Zuteilung 326 ausgewertet werden, um festzustellen, welche Ressource auf der Grundlage einer vom Benutzer angegebenen Ressourcenkennung ausgeführt werden soll. In einer Ausführungsform kann der Zuteiler 340 die Ausführung der angegebenen Ressource mit einer anderen Laufzeitumgebung wie zum Beispiel Servlets, die in anderen Web-Behältern ausgeführt werden, aushandeln.
-
Der Anforderungszuteiler 340 kann die Zuteilung 326 auf der Grundlage von einer oder mehreren Regeln 346 und/oder Einstellungen eindeutig kennzeichnen und ausführen. Das heißt, der Zuteiler 340 kann so konfiguriert werden, dass er sich an die Verfügbarkeit der Ressourcen des Servers 320 (z. B. die Serverauslastung) anpasst. Der Anforderungszuteiler 340 kann die Zuteilungs-Steuerkomponente 342, die Maßzahl-Steuerkomponente 343, die Leistungs-Überwachungseinrichtung 344, die Regeln 346 und die Schnittstelle 352 enthalten. In einer Ausführungsform kann der Zuteiler 340 eine steckbare Erweiterung des Web-Behälters 323 sein. Die Einstellungen 348 können eine von einem Benutzer festgelegte Einstellung oder eine automatisch ermittelte Einstellung sein. Die Standard-Zeitüberschreitungswerte für Zuteilungen können zum Beispiel auf der Grundlage der Leistungsfähigkeit des Servlets 324 dynamisch festgelegt werden.
-
Die Zuteilungs-Steuerkomponente 342 kann die Zuteilung 326 verarbeiten und mit Hilfe historischer Maßzahlen 350 einen geeigneten Ausführungsmodus programmatisch ermitteln. Die Steuerkomponente 342 kann für die Kennzeichnung und/oder Ausführung von lokalen und fernen Ressourcen, die der Zuteilung 326 zugeordnet sind, zuständig sein. In Fällen, in denen die Verarbeitung von Ressourcen ressourcenfern erfolgt, kann die Steuerkomponente 342 die Anforderung an den fernen Prozessor weiterleiten, wo die Verarbeitung durchgeführt werden kann. In Fällen, in denen die Verarbeitung von Ressourcen lokal erfolgt, kann die Steuerkomponente 342 die Anforderungszuteilung 326 handhaben.
-
Die Maßzahl-Steuerkomponente 343 kann historische Maßzahlen, die dem Servlet 324 und/oder der Zuteilung 326 zugeordnet sind, erfassen. Maßzahlen können beispielsweise auf der Ebene des Servlets 324 erfasst werden, wodurch man Maßzahlen einer hohen Ebene erhalten kann. In einem Fall kann die Maßzahl-Steuerkomponente 343 Maßzahlen in Echtzeit oder nahezu in Echtzeit erfassen. Zum Beispiel kann die Steuerkomponente 343 so konfiguriert werden, dass sie die letzte X Anzahl von Zuteilungen 326 über die letzten Y Sekunden verfolgt, wobei X und Y vom Benutzer konfiguriert werden können. Überdies kann die Maßzahl-Steuerkomponente 343 zur Überwachung der Leistung des Web-Behälters 323 in Echtzeit verwendet werden, die über die Schnittstelle 352 dargestellt werden kann.
-
Zu den historischen Maßzahlen 350 können Informationen über die Ressourcen wie zum Beispiel die Latenzzeit, der Ausführungsmodus und die Speicherbelegung gehören. Historische Maßzahlen 350 können einer jeden Ausführung der Zuteilung 326 zugeordnet werden. In einer Ausführungsform können Maßzahlen für jeden Modus (z. B. den asynchronen und den synchronen Modus) berechnet werden, was die Auswertung einer Gesamt-Maßzahl für jeden Modus ermöglicht. Auf diese Weise kann die Steuerkomponente 343 einen geeigneten Ausführungsmodus für die Zuteilung 326 vor der Ausführung berechnen. In einer anderen Ausführungsform können die der Zuteilung 326 zugeordneten Maßzahlen 350 zusammengerechnet und mit einem Schwellwert (z. B. der Regel 360) im Regelsatz 360 verglichen werden. Die Speicherkosten in Verbindung mit einer asynchronen Ausführung können beispielsweise mit einem Speicherquotenwert (z. B.
-
Schwellwert) verglichen werden, um festzustellen, ob der Zusatzaufwand einer asynchronen Ausführung eine optimale Wahl ist. In einem anderen Fall kann der zeitliche Zusatzaufwand für das Einrichten/Löschen eines asynchronen Kontexts mit einem zuvor festgelegten Schwellwert verglichen werden, um festzustellen, welcher Modus (asynchron oder synchron) verwendet werden soll.
-
Der Regelsatz 346 kann eine oder mehrere beliebig komplexe Regeln für die Ermittlung des Ausführungsmodus einer Zuteilung 326 umfassen. Der Regelsatz 346 kann von einem Benutzer festgelegt und/oder heuristisch ermittelt werden. In einer Ausführungsform können mehrere Maßzahlen zusammen ausgewertet werden, um einen Ausführungsmodus zu ermitteln. Der Regelsatz 346 kann, ohne darauf beschränkt zu sein, einen Schwellwert, einen Ausführungsmodus und eine Ereignisbehandlungsroutine, die der Anforderungszuteilung zugeordnet ist, und dergleichen enthalten. Der Schwellwert kann beispielsweise eine von einem Benutzer festgelegte Einstellung oder ein automatisch ermittelter Wert sein. Der Regelsatz 346 kann des Weiteren die Art der zu verwendenden Aggregierung (z. B. serverseitig im Vergleich zu clientseitig) angeben, welche zur Vorbereitung der Anforderung 382 verwendet werden kann. Wenn die Ausführung der Zuteilung 326 abgeschlossen ist, kann die Anforderung 382 erzeugt und dem Client 310 über das Netzwerk 370 übermittelt werden.
-
Hier vorgelegte Zeichnungen dienen lediglich der Veranschaulichung und sollten nicht als die Erfindung in irgendeiner Hinsicht einschränkend verstanden werden. Bei dem System 300 kann es sich um eine oder mehrere Komponenten einer verteilten Datenverarbeitungsumgebung, Netzwerk-Datenverarbeitungsumgebung, einer Service Oriented Architecture (SOA) und dergleichen handeln. In einer Ausführungsform kann es sich bei dem System 300 um eine oder mehrere Komponenten eines Anwendungsservers vom Typ IBM WEBSPHERE APPLICATION SERVER handeln. In einer anderen Ausführungsform kann das System 300 eine oder mehrere Komponenten eines .NET-Rahmens (oder eines beliebigen anderen Rahmens, der die Einbindung von Ressourcen für Zwecke, die hier beschrieben werden, ermöglicht) enthalten.
-
4 ist ein Blockschaubild, das einen Satz von Schnittstellen 410, 430 darstellt, um einen Ausführungsmodus für eine Anforderungszuteilung unter Verwendung von historischen Maßzahlen gemäß einer Ausführungsform von erfindungsgemäßen Anordnungen, die hier beschrieben werden, programmatisch zu ermitteln. Die Schnittstellen 410, 430 können im Rahmen des Systems 300 dargestellt werden. In der Schnittstelle 410 können Anforderungszuteilungen in Verbindung mit einer oder mehreren Web-Anwendungen, die in Web-Behältern ausgeführt werden, im Bereich 412 dargestellt werden. Bei den Web-Anwendungen kann es sich um eine oder mehrere ausführbare Code-Einheiten wie zum Beispiel JAVA-Servlets, JAVA SERVER PAGES (JSP) und dergleichen handeln. In der Schnittstelle 440 können Maßzahlen, die der Anforderungszuteilung 412 zugeordnet sind, dargestellt werden.
-
In einer Ausführungsform kann die Darstellung von Anforderungszuteilungen und Maßzahlen 442 in Echtzeit stattfinden, so dass man schnell Momentaufnahmen der Ausführung erhalten kann.
-
Die Schnittstelle 410 kann die Verwaltung von einer oder mehreren in Ausführung befindlichen Anforderungszuteilungen und abhängigen Anforderungszuteilen gestatten. Die Schnittstelle 410 kann die Bereiche 412, 420 und die interaktiven Schnittstellenelemente 422, 430, 432 enthalten.
-
In der Schnittstelle 410 können Informationen, die zu einer Anforderungszuteilung 414 gehören, im Bereich 412 dargestellt werden. Informationen über die Anforderungszuteilung können die Prozess-ID, die Ausführungsdauer, den Ausführungsmodus und dergleichen, ohne auf diese beschränkt zu sein, beinhalten. Der Bereich 412 kann zum Beispiel jede Anforderungszuteilung und abhängige Zuteilung, die einem Servlet A zugeordnet sind, darstellen. In einer Ausführungsform kann ein Administrator Gruppen von Anforderungszuteilungen selektiv verwalten. Die Schnittstelle 410 kann zusätzliche Informationen wie zum Beispiel aktive Regeln, Leistungsmaßzahlen und dergleichen darstellen.
-
Informationen, die zu einer ausgewählten Anforderungszuteilung 414 gehören, können im Bereich 420 dargestellt werden. Durch eine Interaktion mit dem Schnittstellenelement 430 können beispielsweise Informationen in Verbindung mit einer Anforderungszuteilung dargestellt werden. In einem Fall kann der Bereich 420 eine Änderung von Werten einer Anforderungszuteilung wie zum Beispiel Zeitüberschreitungswerten, des Ausführungsmodus und dergleichen gestatten. Das heißt, eine manuelle Optimierung von Anforderungszuteilungen in Echtzeit kann durchgeführt werden, wenn sich eine automatische Optimierung als nicht erfolgreich erweist. In einer Ausführungsform kann die Schnittstelle 410 eine Funktion zur Verwaltung von Threads zulassen. Das Schnittstellenelement 432 kann es beispielsweise gestatten, dass eine ausgewählte Anforderungszuteilung beendet wird. Durch Interaktion mit dem Schnittstellenelement 422 kann die Prüfungsschnittstelle 440 dargestellt werden.
-
Die Schnittstelle 440 kann den Bereich 442 enthalten, der Maßzahlen darstellen kann, die einer ausgewählten Anforderungszuteilung 414 zugeordnet sind. Der Bereich 442 kann historische Maßzahlen wie zum Beispiel die Prozessornutzung, die Ausführungsdauer und die Speicherbelegung enthalten. Der Bereich 442 kann zum Beispiel die durchschnittliche Ressourcenauslastung einer Anforderungszuteilung unter Verwendung der erfassten historischen Maßzahlen darstellen. In einer Ausführungsform können die historischen Maßzahlen in mehreren Detaillierungsgraden dargestellt werden. Historische Maßzahlen können zum Beispiel auf der Grundlage von Zeitschritten von einem Tag, einer Woche, einem Monat und dergleichen dargestellt werden.
-
Hier vorgelegte Zeichnungen dienen lediglich der Veranschaulichung und sollten nicht als die Erfindung in irgendeiner Hinsicht einschränkend verstanden werden. In einer Ausführungsform kann es sich bei den Schnittstellen 410, 440 um einen oder mehrere Bildschirme eines Optimierungs-Tool vom Typ JAVA 2 ENTERPRISE EDITION handeln. In einer anderen Ausführungsform können die Schnittstellen 410, 440 eine Komponente einer integrierten Entwicklungsumgebung (integrated development environment (IDE)) sein. Bei den Schnittstellen 410, 440 kann es sich um eine grafische Benutzeroberfläche (GUI), eine sprachgesteuerte Benutzeroberfläche (VUI), eine Mehrmodenschnittstelle und dergleichen handeln. Zu Schnittstellenelementen in Verbindung mit den Schnittstellen 410, 440 können, ohne auf diese beschränkt zu sein, interaktive Schaltflächen, Aufklappmenüs, Optionsauswahlelemente und dergleichen gehören.
-
Die hier verwendete Terminologie dient lediglich dazu, bestimmte Ausführungsformen zu beschreiben und ist nicht als Einschränkung der Erfindung zu verstehen. Die Singular-Formen ”ein”, ”eine” und ”der”, ”die”, ”das” sollen in der hier verwendeten Weise auch die Plural-Formen einschließen, sofern der Kontext nicht eindeutig etwas anderes angibt. Des Weiteren versteht es sich, dass die Begriffe ”umfasst” und/oder ”umfassen”, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von angegebenen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten bezeichnen, das Vorhandensein oder das Hinzufügen von einem oder mehreren anderen/weiteren Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen der Vorgenannten jedoch nicht ausschließen.
-
Die entsprechenden Strukturen, Materialien, Vorgänge und Gleichwertiges von allen Mitteln oder Schritten sowie Funktionselementen in den nachstehenden Ansprüchen sollen jedwede Struktur, jedwedes Material oder jedweden Vorgang zur Ausführung der Funktion in Kombination mit anderen beanspruchten Elementen, die im Einzelnen beansprucht werden, beinhalten. Die Beschreibung der vorliegenden Erfindung erfolgte zum Zweck der Veranschaulichung und Erläuterung, erhebt jedoch keinen Anspruch auf Vollständigkeit und ist auch nicht als auf die Erfindung in der offengelegten Form beschränkt zu verstehen. Viele Ab- und Veränderungen sind für den Fachmann erkennbar, ohne vom Umfang der Erfindung abzuweichen. Die Ausführungsform wurde gewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung bestmöglich zu erklären und um anderen Fachleuten das Verständnis der Erfindung hinsichtlich verschiedener Ausführungsformen mit verschiedenen Änderungen, wie sie für die jeweilige vorgesehene Verwendung geeignet sind, zu ermöglichen.
-
Der Ablaufplan und die Blockschaubilder in den 1 bis 4 zeigen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Ablaufplan oder den Blockschaubild ein Modul, ein Segment oder einen Teil von Code darstellen, das beziehungsweise der einen oder mehrere ausführbare Befehle zur Ausführung der angegebenen logischen Funktion(en) umfasst. Es sei auch angemerkt, dass die in dem Block angegebenen Funktionen in manchen alternativen Ausführungsarten nicht in der in den Figuren angegebenen Reihenfolge auftreten können. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Man wird auch feststellen, dass jeder Block der Blockschaubilder/und oder der Darstellung in dem Ablaufplan sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder der Darstellung in dem Ablaufplan von Systemen, die auf Hardware für spezielle Anwendungen beruhen und die angegebenen Funktionen oder Vorgänge durchführen, oder von Kombinationen aus Hardware für spezielle Anwendungen und Computerbefehlen ausgeführt werden können.