DE10062063A1 - Verfahren, System, Programm und Datenstruktur zur Steuerung einer Warteschlange von Anforderungen unterschiedlicher Priorität - Google Patents

Verfahren, System, Programm und Datenstruktur zur Steuerung einer Warteschlange von Anforderungen unterschiedlicher Priorität

Info

Publication number
DE10062063A1
DE10062063A1 DE10062063A DE10062063A DE10062063A1 DE 10062063 A1 DE10062063 A1 DE 10062063A1 DE 10062063 A DE10062063 A DE 10062063A DE 10062063 A DE10062063 A DE 10062063A DE 10062063 A1 DE10062063 A1 DE 10062063A1
Authority
DE
Germany
Prior art keywords
entry
priority
queue
requests
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE10062063A
Other languages
English (en)
Other versions
DE10062063B4 (de
Inventor
Michael Thomas Benhase
James Chienchiung Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE10062063A1 publication Critical patent/DE10062063A1/de
Application granted granted Critical
Publication of DE10062063B4 publication Critical patent/DE10062063B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Abstract

Dargelegt werden ein Verfahren, ein System, ein Programm und eine Datenstruktur zur Steuerung einer Warteschlange von Anforderungen. Jede Anforderung wird einer Ebene aus einer Vielzahl von Prioritätsebenen zugeordnet. Eine Warteschlange wird generiert, einschließlich einer Vielzahl von Einträgen. Jeder Eintrag entspricht einer Prioritätsebene, und eine Vielzahl von Anforderungen kann bei einem Eintrag eingebracht werden. Wenn eine neue Anforderung, die eine zugeordnete Priorität hat, zur Einreihung in die Warteschlange empfangen wird, erfolgt eine Bestimmung eines Eintrags, auf den ein Zeiger verweist. Die der neuen Anforderungen zugeordnete Priorität wird mittels eines Wertes angepasst, so dass die angepasste Priorität einem Eintrag zugeordnet wird, der nicht der Eintrag ist, auf den der Zeiger verweist. Die neue Anforderung wird bei einem Eintrag eingereiht, welcher der angepassten Priorität zugeordnet ist.

Description

HINTERGRUND DER ERFINDUNG 1. Gebiet der Erfindung
Die vorliegende Erfindung bezieht sich auf ein System, ein Verfahren, ein Programm und eine Datenstruktur zur Steuerung der Warteschlangen von Anforderungen, die unterschiedliche Prioritätsebenen haben können.
2. Beschreibung verwandter Technik
In Servern auf dem bisherigen Stand der Technik empfängt der Server Eingabe/Ausgabe-Anforderungen (E/A-Anforderungen) von mehreren Clients und stellt die Anforderungen in der Reihenfolge des Eingangs zur Ausführung gegenüber dem Speichergerät in eine Warteschlange. In bestimmten Netzwerksystemen auf dem bisherigen Stand der Technik übermittelt der Client dem Server nicht die Priorität der E/A-Anforderung. Statt dessen bestimmt jeder Client intern die Prioritäten der Anforderungen und versendet die Anforderungen höherer Priorität vor seinen Anforderungen niedrigerer Priorität. Clients halten die Versendung der Anforderungen niedriger Priorität zurück, weil die Versendung von Anforderungen niedriger Priorität vor den Anforderungen hoher Priorität dazu führen kann, dass der Server die Anforderungen niedriger Priorität vor den Anforderungen hoher Priorität in die Warteschlange stellt, falls der Server die Priorität nicht kennt. Folglich schiebt der Client das Versenden der Anforderungen niedriger Priorität auf, bis alle Anforderungen hoher Priorität verschickt wurden. Diese Technik, bei der jeder Client individuell die Priorität der E/A-Anforderungen vergibt, ist aus mindestens zwei Gründen problematisch. Erstens kann ein Server fähig sein, E/A-Anforderungen, die unterschiedliche Serverressourcen nutzen, gleichzeitig zu verarbeiten. Somit kann der Server in der Lage sein, eine Anforderung hoher Priorität und eine Anforderung niedriger Priorität, die unterschiedliche Serverressourcen erfordern, gleichzeitig zu verarbeiten, wenn er hingegen nicht gleichzeitig zwei Anforderungen hoher Priorität verarbeiten könnte. Da die Clients die Verarbeitungskapazitäten und die Ressourcenverfügbarkeit des Servers nicht kennen, kann es sein, dass ein Client nur die Anforderungen hoher Priorität übermittelt und die Anforderungen niedriger Priorität zurückhält, wenn der Server die Leistung eigentlich durch die gleichzeitige Verarbeitung beider Anforderungen optimieren könnte. Des Weiteren kann es für den Server effizienter sein, eine Anforderung niedriger Priorität vor einer Anforderung hoher Priorität zu verarbeiten, wenn die Anforderungen hoher und niedriger Priorität in physikalisch angrenzenden Bereichen im Speichermedium gespeichert sind. Eine Verarbeitung der Anforderung niedriger Priorität vor der Anforderung hoher Priorität würde die Notwendigkeit vermeiden, die Speicheradresse der niedrigen Priorität zu suchen und zu ihr zurück zu gehen, wenn sich der Schreib/Lesekopf bereits neben der Position befindet.
Ein weiteres Problem bei der Prioritätenvergabe durch den Client besteht darin, dass es keine Ordnung der Anforderungen nach Priorität zwischen den einzelnen Clients gibt. Wenn beispielsweise Client A E/A-Anforderungen der Prioritäten 1 und 2 und Client B E/A-Anforderungen der Priorität 3 hat, und wenn beide ihre Anforderungen höchster Priorität senden, wird Client A die Anforderungen der Priorität 1 und Client B die Anforderungen der Priorität 3 schicken. Client A wird die Anforderungen der Priorität 2 zurückhalten, bis alle Anforderungen der Priorität 1 verschickt wurden. Wenn Client A die E/A-Anforderungen der Priorität 2 schickt, nachdem Client B die Anforderungen der Priorität 3 gesendet hat, wird der Server die Anforderungen der Priorität 3 zuerst verarbeiten. Diese Situation ist nicht optimal, weil der Server die Anforderungen der Priorität 3 von Client B vor der Verarbeitung der später versendeten Anforderungen der Priorität 2 des Client A fertigstellen wird.
Ausgehend von den oben genannten Unzulänglichkeiten, bei welchen den Clients die Möglichkeit eigener Prioritätenvergabe gestattet wird, sind Verfahren auf dem bisherigen Stand der Technik entwickelt worden, die es den Clients ermöglichen, zusammen mit einer E/A-Anforderung Informationen zur Priorität zu übermitteln. Zum Beispiel erlaubt die Standard-Schnittstelle Small Computer System Interface (SCSI) zwei Prioritäten (hoch und niedrig), und das ESCON (Enterprise System Connection) von IBM (International Business Machines)(ESCON ist ein eingetragenes Warenzeichen von IBM) gestattet dem Server, 256 unterschiedliche Prioritätsebenen zu übertragen. Beim SCSI verwaltet der Server eine Warteschlange für E/A- Anforderungen mit Anfang und Ende. Anforderungen hoher Priorität werden am Anfang der Warteschlange und Anforderungen niedriger Priorität am Ende der Warteschlange eingeordnet. Der SCSI-Server entfernt Anforderungen vom Anfang. Ein Problem beim Prioritätensystem auf dem bisherigen Stand der SCSI-Technik besteht darin, dass der SCSI-Server, wenn er einen langen Datenstrom von Anforderungen hoher Priorität empfängt, die Anforderungen niedriger Priorität möglicherweise sehr lange nicht erreicht; lange genug sogar, um das Zeitlimit der Anforderungen niedriger Priorität zu überschreiten, was auch als Blockierung bezeichnet wird. Auf dem bisherigen Stand der Technik des ESCON-Systems verwaltet der ESCON-Server eine separate Warteschlange für jede der 256 Prioritäten und greift auf E/A-Anforderungen aus der Warteschlange höchster Priorität zu, in der E/A-Anforderungen anstehen. Beim ESCON- wie beim SCSI-System kann ein ununterbrochener Strom von E/A-Anforderungen hoher Priorität die Verarbeitung der Anforderungen niedriger Priorität erheblich verzögern.
Eine Lösung dieses Problems der Blockierung von E/A- Anforderungen niedriger Priorität auf dem bisherigen Stand der Technik besteht in der Verschiebung der E/A- Anforderungen niedriger Priorität in eine Warteschlange höherer Priorität. Beispielsweise kann der Server Anforderungen niedriger Priorität in eine Warteschlange höherer Priorität verschieben, nachdem er eine vorher festgelegte Zahl von Anforderungen hoher Priorität in die Warteschlange gestellt hat. Dieses Verfahren arbeitet ziemlich effektiv, wenn es nur wenige Prioritätsebenen gibt. Wenn die Anzahl möglicher Prioritäten, die der Server verfolgt, zunimmt, kann jedoch die Verschiebung von Prioritäten von einer Warteschlange zur anderen, d. h. das Hineinstellen und Entfernen der E/A-Anforderungen aus den Warteschlangen, beträchtliche Speicherressourcen verbrauchen, bis hin zu einer wesentlichen Verschlechterung der Speicherleistung. Wenn der Server, zum Beispiel ein E/A- Prozessor, mehrere Prioritätswarteschlangen verwaltet, kann es sein, dass der Server die Anforderung niedriger Priorität jedesmal, wenn sich die Priorität der Anforderungen niedriger Priorität erhöht, verschieben muss. Wenn sich beispielsweise eine Anforderung niedriger Priorität in der Warteschlange der 256sten Priorität befindet, ist es denkbar, dass eine solche Anforderung vor ihrer Verarbeitung 255 Mal verschoben wird. Wenn zahlreiche Anforderungen verschoben werden, können die Speicheroperationen zur Verschiebung der A/E-Anforderungen zwischen den Warteschlangen, d. h. das Hineinstellen und Entfernen aus den Warteschlangen, die Gesamtspeicherleistung erheblich verschlechtern.
Somit gibt es auf dem bisherigen Stand der Technik mit zunehmender Zahl von Prioritätswarteschlangen, die vom Server verwaltet werden, eine zweifache Speicherbelastung. Erstens muss der Server zahlreiche Prioritätswarteschlangen verwalten, und zweitens gibt es eine beträchtliche Zunahme an Einordnungs- und Entfernungsoperationen, die nötig sind, um eine Anforderung niedriger Priorität von Warteschlange zu Warteschlange zu verschieben, während zur Vermeidung einer Blockierung die Priorität nach oben hin angepasst wird.
Folglich besteht in der Technik ein Bedarf an der Bereitstellung eines verbesserten Verfahrens zur Erhöhung der Priorität von E/A-Anforderungen niedriger Priorität, wenn ein Client die Priorität zusammen mit der E/A- Anforderung übermittelt, auf eine Art, die dem Speicher keine wesentlichen Belastungen auferlegt.
ÜBERBLICK ÜBER DIE BEVORZUGTEN AUSFÜHRUNGEN
Zur Überwindung der Einschränkungen des oben beschriebenen Stands der Technik legen die bevorzugten Ausführungen ein Verfahren, ein System, ein Programm und eine Datenstruktur zur Steuerung der Warteschlangen von Anforderungen dar. Jede Anforderung ist einer Ebene aus einer Vielzahl von Prioritätsebenen zugeordnet. Eine Warteschlange wird gebildet, die eine Vielzahl von Einträgen einschließt. Jeder Eintrag entspricht einer Prioritätsebene, und eine Vielzahl von Anforderungen kann bei einem Eintrag eingereiht werden. Wenn eine neue Anforderung, die eine zugeordnete Priorität hat, zum Einreihen in die Warteschlange empfangen wird, wird ein Eintrag bestimmt, auf den ein Zeiger verweist. Die der neuen Anforderung zugeordnete Priorität wird durch einen Wert so angepasst, dass die angepasste Priorität einem Eintrag zugeordnet wird, der nicht dem Eintrag entspricht, auf den der Zeiger verweist. Die neue Anforderung wird bei einem Eintrag eingereiht, welcher der angepassten Priorität zugeordnet ist.
In weiteren Ausführungen wird zur Verarbeitung eingereihter Anforderungen ein Eintrag festgelegt, bei dem Anforderungen eingereiht werden. Der Zeiger wird so modifiziert, dass er auf den festgelegten Eintrag verweist, und die Anforderungen, die an dem vom Zeiger angezeigten Eintrag eingereiht wurden, werden verarbeitet.
In weiteren Ausführungen umfasst die Prioritätsanpassung die Festlegung der Priorität eines vom Zeiger angezeigten Eintrags und das Hinzufügen der festgelegten Priorität zu der Priorität der Anforderung, um die angepasste Priorität zu ermitteln. In Ausführungen, bei denen der letzte Eintrag der Warteschlange auf den ersten Eintrag der Warteschlange verweist, wird bei der Prioritätsanpassung des Weiteren ermittelt, ob die angepasste Priorität größer ist als die Anzahl der Einträge in der Warteschlange. Falls das der Fall ist, wird die angepasste Priorität auf die angepasste Priorität mal Anzahl Einträge in der Warteschlange eingestellt.
Bevorzugte Ausführungen stellen ein Verfahren zur Warteschlangensteuerung von E/A-Anforderungen bereit, das die Priorität von neuen Anforderungen relativ zu gleichzeitig anstehenden Anforderungen niedrigerer Priorität wirksam verringert. Zur Vermeidung einer Blockierung von Anforderungen niedrigerer Priorität werden bei bevorzugten Ausführungen Prioritäten von neuen Anforderungen mittels mathematischer Operationen und Anpassung von Zeigern verändert, ohne dass Einträge, die bei niedrigerer Priorität eingereiht wurden, zu neuen Warteschlangen verschoben werden müssen. Dies stellt eine Verbesserung gegenüber den bisherigen Techniken dar, welche zur Vermeidung von Blockierungen erfordern, dass anstehende Anforderungen zwischen Warteschlangen verschoben werden, um die Priorität anzupassen. Die Warteschlange von bevorzugten Ausführungen kann zur Vermeidung von Blockierung sogar bei zahlreichen möglichen Prioritäten die Priorität anpassen, ohne die Speicherleistung wesentlich zu belasten und zu verschlechtern.
KURZE BESCHREIBUNG DER ZEICHNUNGEN
Es wird nun Bezug genommen auf die Zeichnungen, in denen Nummern als Referenz für die entsprechenden Teile stehen:
Fig. 1 stellt ein Blockdiagramm dar, das eine Datenverarbeitungsumgebung veranschaulicht, in der bevorzugte Ausführungen implementiert sind;
Fig. 2 veranschaulicht eine Warteschlangendatenstruktur zur Einreihung von E/A-Anforderungen entsprechend ihrer Priorität, in Übereinstimmung mit den bevorzugten Ausführungen der vorliegenden Erfindung;
Fig. 3 illustriert die Logik zur Entfernung und Verarbeitung von E/A-Anforderungen aus der Warteschlange, wie sie in Fig. 2 dargestellt ist, in Übereinstimmung mit den bevorzugten Ausführungen der vorliegenden Erfindung;
Fig. 4 veranschaulicht die Logik zur Einreihung von E/A- Anforderungen in die Warteschlange, wie sie in Fig. 2 dargestellt ist, in Übereinstimmung mit den bevorzugten Ausführungen der vorliegenden Erfindung;
Fig. 5a und b zeigen Beispiele dafür, wie Einträge eingereiht und aus der in Fig. 2 dargestellten Warteschlange entfernt werden, in Übereinstimmung mit den bevorzugten Ausführungen der vorliegenden Erfindung.
DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGEN
In der folgenden Beschreibung wird Bezug genommen auf die begleitenden Zeichnungen, die einen Teil des vorliegenden Dokuments darstellen und die verschiedene Ausführungen der vorliegenden Erfindung veranschaulichen. Es versteht sich, dass andere Ausführungen verwendet werden können und strukturelle Änderungen sowie Änderungen im Betrieb vorgenommen werden können, ohne vom Umfang der vorliegenden Erfindung abzuweichen.
Fig. 1 veranschaulicht eine Datenverarbeitungsumgebung, in der bevorzugte Ausführungen implementiert sind. Eine Vielzahl von Clientsystemen 2a, b und c übertragen E/A- Anforderungen über das Netzwerk 6 zum Server 4. Server 4 reiht die E/A-Anforderungen in die Warteschlangendatenstruktur 8 in Server 4, Speicher 10 ein. Der Server 4 verarbeitet die Anforderungen in der Warteschlangendatenstruktur 8 und führt die Anforderung gegenüber dem Speichersystem aus. Die Clients 2a, b und c können aus irgendwelchen Daten verarbeitenden Vorrichtungen zusammengesetzt sein, wie zum Beispiel einem Großrechner, der eine Daten verarbeitende Architektur einschließt, die in der Lage ist, Eingabe-/Ausgabe-Anweisungen (E/A-Anweisungen) zum Server 4 zu übertragen.
Der Server 4 kann aus jeder Art von Server-Vorrichtung bestehen, die fähig ist, Anforderungen von mehreren Clients zu verarbeiten. Der Server 4 kann einen ESCON-Director umfassen, der Anforderungen von mehreren Clients 2a, b und c empfängt und die Anforderungen zu einem oder mehreren Speicher-Controllern weiterleitet. In einer solchen Ausführung würde das Speichersystem 12 einen oder mehrere Speicher-Controller umfassen, wie zum Beispiel den IBM 3990 Speicher-Controller, beschrieben in der IBM-Publikation "IBM 3990 Storage Control Reference (Models 1, 2 and 3)", IBM- Dokument-Nr. GA32-0099-06 (Copyright IBM Corp. 1988, 1994), welche im vorliegenden Dokument durch Referenz in ihrer Gesamtheit enthalten ist, oder den Speicher-Controller und die Host-Architektur, beschrieben in den gemeinsam erteilten Patent-Anmeldungen "Method and System For Dynamically Assigning Addresses To An Input/Output Device" von Brent C. Beardsley, Allan S. Merritt, Michael A. Paulsen und Harry M. Yudenfriend, eingereicht am 7. Oktober 1998, mit der fortlaufenden U.S.-Patent-Nr. 09/167,782 und "System For Accessing An Input/Output Device Using Multiple Addresses" von Brent C. Beardsley, James L. Tskiyan, James McIlvain, Phillip R. Mills, Michael A. Paulsen, William G. Thompson und Harry M. Yudenfriend, eingereicht am 7. Oktober 1998, mit der fortlaufenden U.S.-Patent-Nr. 09/168,017, welche im vorliegenden Dokument durch Referenz in ihrer Gesamtheit enthalten sind.
Alternativ kann das Speichersystem 12 aus einem Speichermedium, wie zum Beispiel einem Direktzugriffsspeicher (DASD, direct access storage device) bestehen, welcher miteinander verbundene Festplattenlaufwerke, Bandarchive etc. umfasst. In solchen Ausführungen würde der Server 4 die zur Ausführung gegenüber dem Speichersystem 12 in die Warteschlangen eingereihten E/A-Anforderungen zuteilen, um die von den Clients 2a, b und c angeforderten E/A-Operation durchzuführen.
Fig. 2 veranschaulicht weitere Details der Warteschlangen- Datenstruktur 8, in der bevorzugte Ausführungen implementiert sind. Die Warteschlangendatenstruktur 8 umfasst einen Kreispuffer oder Ringpuffer für Einträge 1 bis n jeder Priorität sowie für einen Kopfeintrag 0. Zusätzlich zum Kopfeintrag 0 gibt es in der Warteschlangen Einträge für jede der möglichen n Prioritätsebenen, die vom System unterstützt werden. In einem ESCON-System zum Beispiel würde es 257 Einträge geben: einen für jede der möglichen 256 ESCON-Prioritätsebenen sowie einen zusätzlichen Eintrag. Jeder Eintrag enthält einen Zeiger oder Anker zu einer Warteschlange von E/A-Anforderungen mit der Priorität des Eintrags. Fig. 2 zeigt, dass die Einträge 2 und 4 E/A- Anforderungen haben, die in der Reihenfolge des Eingangs nummeriert sind. Eintrag 2 hat einen Zeiger 20 zu einer verbundenen Liste 22, die alle E/A-Anforderungen (E/A 1, 2 und 4) enthält, die eine dem Eintrag entsprechende Priorität, z. B. Prioritätsebene 2, besitzen. So besteht die verbundene Liste 22 aus einer einzeln verbundenen Liste, in der jede E/A-Anforderung einen Zeiger zur nächsten E/A- Anforderung in der Liste enthält. Ebenso hat Eintrag 4 einen Zeiger 24 zu einer verbundenen Liste 26, welche die dritte empfangene E/A-Anforderung (E/A 3) einschließt. Die anderen Einträge können auch jeweils auf eine verbundene Liste mit eingereihten E/A-Anforderungen zeigen, welche die Priorität besitzen, die mit dem Eintrag verbunden ist.
Fig. 3 veranschaulicht die im Server 4 implementierte Logik zur Verarbeitung von eingereihten E/A-Anforderungen der Clients 2a, b und c. Die Steuerung beginnt bei Kasten 100, wo Server 4 eine Operation zur Verarbeitung von E/A- Anforderungen der Warteschlange 8 einleitet und den Kopfzeiger 18 initialisiert (Kasten 102), so dass er auf Eintrag 0 verweist. Server 4 stellt fest (Kasten 104), ob der Eintrag, auf den der Kopfzeiger 18 verweist, auf eine verbundene Liste mit anstehenden E/A-Anforderungen zeigt. Wenn nicht, dann stellt Server 4 fest (Kasten 106), ob der aktuelle Eintrag der letzte, nte Eintrag in der Warteschlange 8 ist. Wenn ja, dann bewegt Server 4 den Kopfzeiger 18, so dass er auf den Eintrag 0 verweist (Kasten 108); ansonsten wird der Kopfzeiger hochgestuft (Kasten 110), so dass er auf den nächsten Eintrag in Warteschlange 8 zeigt. Auf diese Art stellt die Warteschlange 8 eine ringförmige Warteschlange dar, in welcher der letzte Eintrag zurück zum obersten Eintrag zeigt. Nach Erhöhung auf den nächsten Eintrag geht die Steuerung von Kasten 108 oder 110 zurück zu Kasten 106, um festzustellen, ob dieser Eintrag zu einer verbundenen Liste anstehender E/A-Anforderungen zeigt.
Wenn der Eintrag, auf den der Kopfzeiger 18 verweist, zu einer verbundenen Liste von E/A-Anforderungen zeigt, z. B. zu den Listen 20 und 24 in Fig. 2, dann beginnt bei Kasten 112 eine Schleife mit der Verarbeitung jeder E/A-Anforderung in der verbundenen Liste. Für jede E/A-Anforderung in der Liste greift Server 4 (Kasten 114) auf die E/A-Anforderung zu und teilt die E/A-Anforderung dem Speichersystem 12 zu (Kasten 116). Wenn es weitere E/A-Anforderungen gibt, geht Server 4 bei Kasten 118 zurück zu Kasten 112, um die nächste E/A-Anforderung in der verbundenen Liste zuzuteilen. Nach Zuteilung aller E/A-Anforderungen in der verbundenen Liste geht Server 4 von Kasten 118 zurück zu Kasten 106, um den Kopfzeiger 18 zur Berücksichtigung aller weiteren verbundenen Listen auf den nächsten Eintrag zu erhöhen.
Fig. 4 veranschaulicht die im Server 4 ausgeführte Logik zur Einreihung von E/A-Anforderungen in die Warteschlange 8. Die Steuerung beginnt bei Kasten 150 damit, dass Server 4 eine E/A-Anforderung mit der Priorität p von einem der Clients 2a, b oder c empfängt. Server 4 führt zur Anpassung der Priorität p der empfangenen Anforderung einen Algorithmus in einer Weise durch, welche die Priorität der empfangenen Anforderung wirkungsvoll reduziert und gleichzeitig die Priorität der bereits eingereihten E/A-Anforderungen in Relation zur empfangenen Anforderung erhöht. Dieser Algorithmus beinhaltet, dass der Server 4 die Priorität des Eintrags, auf den der Kopfzeiger 18 verweist, zur Priorität p der empfangenen E/A-Anforderungen addiert (Kasten 152), um die angepasste Priorität p' zu erhalten. Wenn p' größer ist als n, stellt Server 4 p' auf p mal (n + 1) ein (Kasten 156), was dem Ringcharakter der Warteschlange 8 entspricht. Server 4 stellt dann fest (Kasten 158), ob der Eintrag, welcher der angepassten Priorität p' entspricht, auf eine verbundene Liste zeigt. Wenn nicht, generiert Server 4 eine verbundene Liste (Kasten 160) und lässt den Eintrag, welcher die Priorität p' hat, auf die generierte verbundene Liste verweisen. Wenn es eine verbundene Liste gibt oder eine generiert worden ist, reiht Server 4 die E/A-Anforderungen am Ende der verbundenen Liste für den Eintrag p' ein.
Mit der Logik der bevorzugten Ausführungen werden aktuell eingereihte E/A-Anforderungen mit einer niedrigen Priorität nicht durch einen ununterbrochenen Strom von E/A- Anforderungen höherer Priorität blockiert. Der Grund dafür ist der, dass, während Server 4 eine verbundene Liste von E/A-Anforderungen bei einem Eintrag verarbeitet, alle neuen Anforderungen, sogar jene mit höchster Priorität, in einen Eintrag eingereiht werden, der auf den Eintrag des Kopfzeigers 18 folgt, den der Server 4 aktuell verarbeitet. Des Weiteren werden, da es einen zusätzlichen Eintrag, den Eintrag 0, gibt, neue E/A-Anforderungen nie in denselben Eintrag eingereiht, den Server 4 gerade verarbeitet, d. h. der Eintrag, auf welchen der Kopfzeiger verweist. Folglich wird ein ununterbrochener Strom von E/A-Anforderungen hoher Priorität den Server 4 nicht vom Abarbeiten der Einträge abhalten. Außerdem verringert die Logik von Fig. 4 automatisch die Priorität neuer Anforderungen durch Hinzufügen der Priorität des Kopfeintrags. Durch die Verringerung der Priorität aller neuen Einträge wird die Priorität der niedrigeren Einträge im Verhältnis dazu erhöht.
Fig. 5a und Fig. 5b zeigen ein Beispiel dafür, wie die Logik von Fig. 3 und Fig. 4 in einer Warteschlange mit 7 möglichen unterschiedlichen Prioritätsebenen arbeitet. Bezug nehmend auf Fig. 5a, enthält Warteschlange 200 drei E/A- Anforderungen, die Operationen OP 1, 2 und 3 mit der Priorität 5, 2 bzw. 7. In Fig. 5b beginnt Server 4 mit der Verarbeitung der Warteschlange 200 und verschiebt den Kopfzeiger zu Eintrag 2, welcher der erste zu verarbeitende Eintrag mit einer E/A-Anforderung (OP 2) ist. Wenn in Fig. 5b eine neue E/A-Anforderung (OP 4) mit der Priorität 3 empfangen wird, würde Server 4 gemäß der Logik von Fig. 4 die aktuelle Kopfzeigerposition 2 zur Priorität 3 von OP 4 addieren, um die angepasste Priorität 5 von OP 4 zu berechnen. Daraufhin würde Server 4 die OP 4 zur verbundenen Liste für Eintrag 5 hinzufügen. Auf diese Art stuft Server 4 die Priorität von OP 4 herunter. Wenn eine weitere E/A- Anforderung (OP 5) mit der Priorität 7 empfangen wird, während der Kopfzeiger auf Eintrag 2 steht, dann ergibt sich eine angepasste Priorität von 9, welche Server 4 veranlassen würde, die angepasste Priorität mit 8, d. h. der Anzahl Einträge plus 1, zu multiplizieren, um eine angepasste Priorität von 1 zu erhalten. Server 4 würde daraufhin OP 5 zu Eintrag 1 addieren, wie in Fig. 5b dargestellt. Außerdem wird die neue E/A-Anforderung bei Eintrag 0 in die Warteschlange eingereiht werden, wenn die angepasste, zum Kopfzeiger hinzu addierte Priorität über den letzten, nten Eintrag bis hin zum Eintrag 0 hinaus geht. Bezugnehmend auf Fig. 5b, wenn der Kopfzeiger beispielsweise auf Eintrag 7 steht und eine neue Anforderung die Priorität 1 aufweist, würde die angepasste Priorität 8 mal 8 oder 0 betragen, was dem ersten Eintrag, Eintrag 0, entspricht.
Die bevorzugte Logik und Warteschlangendatenstruktur stellt eine Technik zur Erhöhung von Prioritäten bereit, die keine Speicherarbeit zur Verschiebung existierender Einträge zwischen Prioritätswarteschlangen beansprucht. Die einzige Operation, die von der bevorzugten Logik zur Veränderung der Priorität von E/A-Anforderungen ausgeführt wird, ist ein einfacher Algorithmus zur Veränderung der Priorität des neuen Eintrags. Diese Veränderung der Priorität des neuen Eintrags verringert einerseits die Priorität des neuen Eintrags und erhöht andererseits die relative Priorität existierender eingereihter E/A-Anforderungen in einer Weise, welche verhindert, dass ein ununterbrochener Strom von E/A- Anforderungen hoher Priorität die aktuell anstehenden E/A- Anforderungen niedrigerer Priorität blockiert. Folglich bearbeitet die Warteschlangensteuerung der bevorzugten Ausführung Prioritäten, ohne die speicheraufwendigen Arbeitsschritte durchzuführen, welche in bisherigen Techniken zur Verschiebung anstehender Einträge zwischen Warteschlangen verwendet wurden.
Mit den bevorzugten Ausführungen kann das System so konstruiert werden, dass es jede Zahl von Prioritätsebenen unterbringt, ohne die Speicherleistung zu beeinflussen, da die Prioritätsanpassung es nicht erfordert, eingereihte Anforderungen niedrigerer Priorität zwischen verschiedenen Prioritätswarteschlangen zu verschieben. Dies reduziert die mit der Verwaltung zahlreicher Warteschlangen verbundenen Speicherverwaltungsoperationen. Somit gibt es bei der bevorzugten Technik keine Notwendigkeit zur Veränderung von Listen. Statt dessen wird die Prioritätsanpassung im Voraus durchgeführt, unter Verwendung einfacher Anpassungen und Zeiger, in Bezug auf eine einzelne Warteschlange.
Weitere Ausführungen verwenden ein Bitmap, um die Effizienz der Schritte 106 und 108 in Fig. 3 zur Hochstufung des Kopfzeigers 18 auf den nächsten Eintrag, einschließlich einer verbundenen Liste von anstehenden E/A-Anforderungen, zu erhöhen. In diesen Ausführungen wird ein Bitmap, das einen Wert für jeden Eintrag in Warteschlange 8 einschließt, verwaltet. Am Anfang sind die Bitmap-Einträge auf "aus" oder binäre Null eingestellt. Wenn eine E/A-Anforderung in eine verbundene Liste, auf die ein Eintrag verweist, eingereiht wird, wird der entsprechende Bitmap-Wert für diesen Eintrag auf "ein", d. h. binäre Eins, gestellt, wodurch er anzeigt, dass es anstehende E/A-Anforderungen für diesen Eintrag gibt. Wenn Server 4 zum nächsten Eintrag einschließlich einer auszuführenden verbundenen Liste von E/A-Anforderungen voranschreiten soll, wird Server 4 zuerst das Bitmap verarbeiten, um den ersten "Ein"-Wert zu ermitteln, der auf den Bitmap-Eintrag folgt, auf den der Kopfzeiger verweist. Daraufhin würde Server 4 diesen Bitmap-Wert "ein" für den ausfindig gemachten Eintrag in eine binäre Größe des Eintrags umwandeln, wobei er in der Technik bekannte Verfahren zur Bitmap-Kodierung verwendet. Somit würde Server 4 bei der Ermittlung eines zu verarbeitenden Eintrags, der auf eine verbundene Liste anstehender E/A-Anforderungen hinzeigt, das Bitmap verarbeiten, um direkt den nächsten Eintrag mit anstehenden E/A-Anforderungen zu ermitteln. Auf diese Art muss Server 4 nicht jeden Eintrag überprüfen, um schließlich einen Eintrag mit anstehenden Anforderungen ausfindig zu machen.
Schlussfolgerung
Die bevorzugten Ausführungen können als Verfahren, als Apparat oder als Herstellungsartikel implementiert werden, unter Verwendung von Standardprogrammierung und/oder technischen Verfahren zur Herstellung von Software, Firmware, Hardware oder einer beliebigen Kombination dieser Produkte. Der Ausdruck "Herstellungsartikel" (oder alternativ "Computerprogrammprodukt"), wie er im vorliegenden Dokument gebraucht wird, soll ein oder mehrere Computerprogramme und/oder Datendateien, die von einer oder mehreren computerlesbaren Vorrichtungen, Trägern oder Medien, wie z. B. magnetischen Speichermedien, "Floppydisk", CD-ROM, optischen Disks, holographischen Einheiten, flüchtigen oder nicht-flüchtigen elektronischen Speichern etc. zugänglich sind, umfassen. Des Weiteren kann der Herstellungsartikel die Implementierung der bevorzugten Ausführungen in einem Übertragungsmedium, wie beispielsweise Netzübertragungsleitungen, kabellosen Übertragungsmedien, Signalen, die sich durch den Raum verbreiten, Funkwellen, Infrarot-Signalen etc., beinhalten. Selbstverständlich wird der Fachmann viele Modifikationen erkennen, die an dieser Konfiguration gemacht werden können, ohne dass vom Umfang der vorliegenden Erfindung abgewichen wird.
Es wurden bevorzugte Ausführungen in Bezug auf die vom Server 4 ausgeführten Operationen beschrieben. Der Server kann jede Art von Verarbeitungseinheit umfassen, die in der Technik bekannt ist.
In bevorzugten Ausführungen teilt Server 4 dem Speichersystem 12 E/A-Anforderungen zu. Wenn das Speichersystem 12 aus einem oder mehreren Laufwerken besteht, wird Server 4 die E/A-Anforderung gegenüber dem Laufwerk ausführen. Wenn das Speichersystem 12 aus Speicher- Controllern besteht, wird Server 4 die Anforderung, inklusive des Datenvolumens, welches das Ziel der E/A- Anforderung darstellt, an den Speicherkontroller oder die Steuerungseinheit senden.
In bevorzugten Ausführungen übermitteln die Clients 2a, b und c die Priorität zusammen mit einer E/A-Anforderung. In weiteren Ausführungen kann der Server 4 einer E/A- Anforderung jedoch eine Standardpriorität zuweisen, wenn die Clients 2a, b und c die Priorität nicht liefern.
Es wurden bevorzugte Ausführungen in Bezug auf das Hineinstellen und Entfernen von E/A-Anforderungen aus einem Speichersystem 12 beschrieben. In alternativen Ausführungen kann jedoch die Warteschlange der bevorzugten Ausführungen verwendet werden, um jede Art von Arbeit oder Anforderungen einzureihen, die entsprechend einer Priorität verarbeitet werden sollen. Bevorzugte Ausführungen können die Steuerung von Warteschlangen aus anderen Arbeiten als E/A- Anforderungen umfassen.
Bevorzugte Ausführungen beschrieben einen Algorithmus zur Verringerung der Priorität einer neuen Anforderung um die Priorität eines Eintrags, auf den der Kopfzeiger verweist.
In alternativen Ausführungen kann die Priorität der neuen E/A-Anforderung auf alternative Weise erhöht werden, so dass die neue Anforderung bei einem Eintrag platziert wird, der nicht der Eintrag ist, den der Server gerade verarbeitet.
In bevorzugten Ausführungen wurde die Warteschlange als eine Ringwarteschlange beschrieben, in welcher der letzte Eintrag auf den ersten Eintrag verweist. In alternativen Ausführungen kann die Warteschlange aus verbundenen Listen bestehen, welche nicht ringförmig sind.
Zusammenfassend geben die bevorzugten Ausführungen ein Verfahren, ein System, ein Programm und eine Datenstruktur zur Warteschlangensteuerung von Anforderungen bekannt. Jede Anforderung ist einer Ebene aus einer Vielzahl von Prioritätsebenen zugeordnet. Eine Warteschlange einschließlich einer Vielzahl von Einträgen wird generiert. Jeder Eintrag entspricht einer Prioritätsebene, und eine Vielzahl von Anforderungen kann bei einem Eintrag eingereiht werden. Wenn eine neue Anforderung, die eine zugeordnete Priorität hat, zur Einreihung in die Warteschlange empfangen wird, wird ein Eintrag ermittelt, auf den ein Zeiger verweist. Die der neuen Anforderung zugeordnete Priorität wird mittels eines Wertes angepasst, so dass die angepasste Priorität einem anderen Eintrag, als dem vom Zeiger angezeigten, zugeordnet wird.
Die vorhergehende Beschreibung der bevorzugten Ausführungen der Erfindung wurde zum Zweck der Veranschaulichung und Beschreibung präsentiert. Es ist nicht beabsichtigt, eine erschöpfende Darstellung zu geben oder die Erfindung auf die genaue dargelegte Form zu begrenzen. Viele Modifikationen und Variationen sind möglich im Licht der obigen Ausführungen. Beabsichtigt ist, dass der Umfang der Erfindung nicht durch die genaue Beschreibung, sondern eher durch die dem vorliegenden Dokument angehängten Ansprüche begrenzt wird. Die obigen Spezifikationen sowie die Beispiele und Informationen liefern eine vollständige Beschreibung der Herstellung und Verwendung der erfindungsgemäßen Konstruktion. Da viele Ausführungen der Erfindung gemacht werden können, ohne vom Geist und Umfang der Erfindung abzuweichen, ist die Erfindung in den Ansprüchen, die dem vorliegenden Dokument angehängt sind, dargelegt.

Claims (31)

1. Verfahren zur Steuerung von Warteschlangen auszuführender Anforderungen, worin jede Anforderung einer Ebene von einer Vielzahl an Prioritätsebenen zugeordnet ist, in dem die Schritte enthalten sind:
Erzeugen einer Warteschlange einschließlich einer Vielzahl von Einträgen, worin jeder Eintrag einer Prioritätsebene entspricht und worin eine Vielzahl von Anforderungen bei einem Eintrag eingereiht werden kann;
Empfangen einer neuen Anforderung mit einer zugeordneten Priorität zur Einreihung in die Warteschlange;
Bestimmen eines Eintrags, auf den ein Zeiger verweist;
Anpassen der Priorität, die der neuen Anforderung zugeordnet ist, mittels eines Wertes, wobei die angepasste Priorität einem anderen Eintrag als den, auf den der Zeiger verweist, zugeordnet wird; und
Einreihen der neuen Anforderung bei einem Eintrag, welcher der angepassten Priorität zugeordnet ist.
2. Verfahren gemäß Anspruch 1, das außerdem umfasst:
Bestimmen eines Eintrags, bei dem Anforderungen eingereiht werden;
Verändern des Zeigers, so dass er auf den ermitteltem Eintrag verweist; und
Verarbeiten der Anforderungen, die an dem Eintrag eingereiht wurden, auf den der Zeiger verweist;
3. Verfahren gemäß Anspruch 2, wobei die Bestimmung des Eintrags, an dem die Anforderungen eingereiht werden, umfasst:
Erzeugen einer Datenstruktur zur Anzeige von Einträgen mit eingereihten Anforderungen; und
Verarbeiten der Datenstruktur zur Bestimmung eines ersten Eintrags mit eingereihten Anforderungen, der auf den Eintrag, auf welchen der Kopfzeiger verweist, folgt.
4. Verfahren gemäß Anspruch 2, wobei die eingereihten Anforderungen auf ein Speichersystem bezogene Eingabe/Ausgabe-Anforderungen (E/A-Anforderungen) beinhalten, und wobei die Verarbeitung der Anforderungen das Zuteilen der E/A-Anforderungen zur Durchführung der angeforderten E/A-Operation beinhaltet.
5. Verfahren gemäß Anspruch 1, wobei jeder Eintrag in der Lage ist, auf eine verbundene Liste zu verweisen, und wobei die Einreihung einer neuen Anforderung beim Eintrag das Hinzufügen der neuen Anforderung zu der verbundenen Liste, auf welche der Eintrag zeigt, welcher der Priorität zugeordnet ist, die der Anforderung zugewiesenen wurde, einschließt.
6. Verfahren gemäß Anspruch 1, wobei die Anpassung der Priorität Folgendes umfasst:
Bestimmen der Priorität des Eintrags, auf den der Zeiger verweist; und
Hinzufügen der ermittelten Priorität zur Priorität der Anforderung, um die angepasste Priorität zu ermitteln.
7. Verfahren gemäß Anspruch 6, wobei der letzte Eintrag der Warteschlange auf den ersten Eintrag der Warteschlange zeigt, und wobei die Anpassung der Priorität des Weiteren die Einstellung der angepassten Priorität auf die angepasste Priorität mal der Anzahl Einträge in der Warteschlange beinhaltet, falls die angepasste Priorität größer ist als die Anzahl Einträge in der Warteschlange.
8. Verfahren gemäß Anspruch 1, wobei die Warteschlange einen extra Eintrag einschließt, zusätzlich zu einem Eintrag für jede Priorität des Systems.
9. Verfahren gemäß Anspruch 8, wobei die neue Anforderung bei einem Eintrag eingereiht wird, welcher der angepassten Priorität entspricht und bei dem es sich nicht um den Eintrag handelt, auf den der Zeiger verweist.
10. System zur Steuerung von Warteschlangen auszuführender Anforderungen, wobei jede Anforderung einer von einer Vielzahl an Prioritätsebenen zugeordnet ist, das Folgendes umfasst:
Mittel zur Generierung einer Warteschlange einschließlich einer Vielzahl von Einträgen, worin jeder Eintrag einer Prioritätsebene entspricht und wobei eine Vielzahl von Anforderungen bei einem Eintrag eingereiht werden kann;
Mittel zum Empfang einer neuen, in die Warteschlange einzureihenden Anforderung, die eine zugeordnete Priorität hat;
Mittel zur Bestimmung eines Eintrags, auf den ein Zeiger verweist;
Mittel zur Anpassung der Priorität, die der neuen Anforderung zugeordnet ist, durch einen Wert, wobei die angepasste Priorität einem Eintrag zugeordnet wird, der nicht dem Eintrag entspricht, auf den der Zeiger verweist; und
Mittel zur Einreihung der neuen Anforderung bei einem Eintrag, welcher der angepassten Priorität zugeordnet ist.
11. System gemäß Anspruch 10, das des Weiteren Folgendes umfasst:
Mittel zur Bestimmung eines Eintrags, bei dem Anforderungen eingereiht werden;
Mittel zur Veränderung des Zeigers, damit er auf den bestimmten Eintrag verweist; und
Mittel zur Verarbeitung der Anforderungen, die bei dem vom Zeiger angezeigten Eintrag eingereiht wurden.
12. System gemäß Anspruch 11, wobei die Mittel zur Bestimmung des Eintrags, bei dem Anforderungen eingereiht werden, Folgendes umfassen:
Mittel zur Generierung einer Datenstruktur, die Einträge mit eingereihten Anforderungen anzeigt; und
Mittel zur Verarbeitung der Datenstruktur, um einen ersten Eintrag zu ermitteln, welcher auf denjenigen Eintrag mit eingereihten Anforderungen, auf welchen der Kopfzeiger verweist, folgt.
13. System gemäß Anspruch 11, wobei die eingereihten Anforderungen Eintrag/Ausgabe-Anforderungen (E/A- Anforderungen), bezogen auf ein Speichersystem, umfassen, und wobei die Mittel zur Verarbeitung der Anforderungen Mittel für die Zuteilung der E/A- Anforderungen zur Durchführung der angefragten E/A- Operation umfassen.
14. System gemäß Anspruch 10, wobei jeder Eintrag in der Lage ist, zu einer verbundenen Liste zu zeigen, und wobei die Mittel zur Einreihung einer neuen Anforderung bei dem Eintrag Mittel umfassen zur Hinzufügung der neuen Anforderung zu derjenigen verbundenen Liste, auf welche der Eintrag, welcher der Priorität zugeordnet ist, die der Anforderung zugewiesen wurde, zeigt.
15. System gemäß Anspruch 10, wobei die Mittel zur Anpassung der Priorität Folgendes umfassen:
Mittel zur Bestimmung der Priorität des Eintrags, auf den der Zeiger verweist; und
Mittel zum Hinzufügen der ermittelten Priorität zur Priorität der Anforderung, um die angepasste Priorität zu bestimmen.
16. System gemäß Anspruch 15, wobei der letzte Eintrag der Warteschlange auf den ersten Eintrag der Warteschlange zeigt, und wobei die Mittel zur Anpassung der Priorität des Weiteren Mittel beinhalten zur Einstellung der angepassten Priorität auf die angepasste Priorität mal der Anzahl Einträge in der Warteschlange, falls die angepasste Priorität größer ist als die Anzahl Einträge in der Warteschlange.
17. System gemäß Anspruch 10, wobei die Warteschlange einen Eintrag extra einschließt, zusätzlich zu einem Eintrag für jede Priorität im System.
18. System gemäß Anspruch 17, wobei die neue Anforderung bei einem Eintrag eingereiht wird, welcher der angepassten Priorität entspricht und nicht der Eintrag ist, auf den der Zeiger verweist.
19. Computerprogramm-Produkt mit einem computerlesbaren Speichermedium mit Computerprogramm, welches die Verarbeitungseinheit zur Durchführung der folgenden Schritte veranlasst:
Erzeugen einer Warteschlange einschließlich einer Vielzahl von Einträgen, wobei jeder Eintrag einer Prioritätsebene entspricht, und wobei eine Vielzahl von Anforderungen bei einem Eintrag eingereiht werden kann;
Empfang einer neuen Anforderung, die eine zugeordnete Priorität hat, zur Einreihung in die Warteschlange;
Bestimmung eines Eintrags, auf den ein Zeiger verweist;
Anpassung der dem neuen Eintrag zugeordneten Priorität mittels eines Wertes, worin die angepasste Priorität einem Eintrag zugeordnet wird, der nicht dem Eintrag entspricht, auf den der Zeiger verweist; und
Einreihung der neuen Anforderung bei einem Eintrag, welcher der angepassten Priorität zugeordnet ist.
20. Computerprogramm-Produkt nach Anspruch 19, dessen Computerprogramm die Verarbeitungseinheit zur Durchführung der folgenden Schritte veranlasst:
Bestimmung eines Eintrags, bei dem Anforderungen eingereiht werden;
Veränderung des Zeigers, damit dieser auf den bestimmten Eintrag verweist; und
Verarbeitung der Anforderungen, die bei dem Eintrag, auf den der Zeiger verweist, eingereiht wurden.
21. Computerprogramm-Produkt nach Anspruch 20, wobei die Bestimmung des Eintrags, bei dem Anforderungen eingereiht werden, Folgendes umfasst:
Generierung einer Datenstruktur zur Anzeige von Einträgen, die eingereihte Anforderungen enthalten; und
Verarbeitung der Datenstruktur zur Bestimmung eines ersten Eintrags, der auf denjenigen Eintrag folgt, auf welchen der Kopfzeiger verweist und der eingereihte Anforderungen enthält.
22. Computerprogramm-Produkt nach Anspruch 20, wobei die eingereihten Anforderungen Eintrag/Ausgabe- Anforderungen (E/A-Anforderungen), bezogen auf ein Speichersystem, umfassen, und wobei die Verarbeitung der Anforderungen das Zuteilen der E/A-Anforderungen zur Durchführung der angefragten E/A-Operation beinhaltet.
23. Computerprogramm-Produkt nach Anspruch 19, wobei jeder Eintrag in der Lage ist, zu einer verbundenen Liste zu zeigen, und wobei die Einreihung einer neuen Anforderung bei dem Eintrag das Hinzufügen der neuen Anforderung zu derjenigen verbundenen Liste beinhaltet, auf die der Eintrag, welcher der Priorität zugeordnet ist, die der Anforderung zugewiesen wurde, zeigt.
24. Computerprogramm-Produkt nach Anspruch 19, wobei die Anpassung der Priorität Folgendes umfasst:
Bestimmung der Priorität des Eintrags, auf den der Zeiger verweist; und
Hinzufügen der ermittelten Priorität zu der Priorität der Anforderung, um die angepasste Priorität zu bestimmen.
25. Computerprogramm-Produkt nach Anspruch 24, wobei der letzte Eintrag der Warteschlange zum ersten Eintrag der Warteschlange zeigt, und wobei die Anpassung der Priorität des Weiteren die Einstellung der angepassten Priorität auf die angepasste Priorität mal der Anzahl Einträge in der Warteschlange beinhaltet, falls die angepasste Priorität größer ist als die Anzahl Einträge in der Warteschlange.
26. Computerprogramm-Produkt nach Anspruch 19, wobei die Warteschlange einen Eintrag extra einschließt, zusätzlich zu einem Eintrag für jede Priorität im System.
27. Computerprogramm-Produkt nach Anspruch 26, wobei die neue Anforderung bei einem Eintrag eingereiht wird, welcher der angepassten Priorität entspricht und der nicht derjenige Eintrag ist, auf den der Zeiger deutet.
28. Speichervorrichtung, auf die eine Verarbeitungseinheit zugreifen kann, wobei die Speichereinrichtung eine Datenstruktur einschließt, die Folgendes umfasst:
eine Warteschlange einschließlich einer Vielzahl von Einträgen, in der es für jede Prioritätsebene einen Eintrag sowie mindestens einen zusätzlichen Eintrag gibt, und wobei eine Vielzahl von Anforderungen bei einem Eintrag eingereiht werden kann; und
einen Zeiger, der einen Eintrag in der Warteschlange adressiert, wobei eine Priorität, die einer neuen Anforderung zugeordnet ist, mittels eines Wertes angepasst wird, so dass die angepasste Priorität einem Eintrag zugeordnet ist, der nicht derjenige Eintrag ist, auf den der Zeiger deutet, und wobei die neue Anforderung bei einem Eintrag eingereiht wird, welcher der angepassten Priorität zugeordnet ist.
29. Speichervorrichtung von Anspruch 28, die des Weiteren eine Datenstruktur umfasst, welche Einträge, die eingereihte Anforderungen haben, anzeigt, wobei die Datenstruktur verarbeitet wird zur Bestimmung eines ersten Eintrags, der auf denjenigen Eintrag folgt, auf welchen der Kopfzeiger verweist, und der eingereihte Anforderungen zur Bearbeitung hat.
30. Speichervorrichtung gemäß Anspruch 28, die des Weiteren mindestens eine verbundene Liste umfasst, in der jeder Eintrag fähig ist, zu einer verbundenen Liste zu zeigen und in der die Einreihung einer neuen Anforderung bei dem Eintrag das Hinzufügen der neuen Anforderung zu derjenigen verbundenen Liste beinhaltet, auf die der Eintrag, welcher der Priorität zugeordnet ist, die der Anforderung zugewiesen wurde, zeigt.
31. Speichervorrichtung gemäß Anspruch 28, in welcher der letzte Eintrag der Warteschlange zum ersten Eintrag der Warteschlange verweist, und in der die Anpassung der Priorität des Weiteren die Einstellung der angepassten Priorität auf die angepasste Priorität mal der Anzahl Einträge in der Warteschlange beinhaltet, falls die angepasste Priorität größer ist als die Anzahl Einträge in der Warteschlange.
DE10062063A 2000-01-06 2000-12-13 Verfahren, System, Computerprogramm-Produkt und Speichervorrichtung zur Steuerung einer Warteschlange von Anforderungen unterschiedlicher Priorität Expired - Lifetime DE10062063B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/478,942 US6745262B1 (en) 2000-01-06 2000-01-06 Method, system, program, and data structure for queuing requests having different priorities
US478942 2000-01-06

Publications (2)

Publication Number Publication Date
DE10062063A1 true DE10062063A1 (de) 2001-07-19
DE10062063B4 DE10062063B4 (de) 2006-02-09

Family

ID=23902024

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10062063A Expired - Lifetime DE10062063B4 (de) 2000-01-06 2000-12-13 Verfahren, System, Computerprogramm-Produkt und Speichervorrichtung zur Steuerung einer Warteschlange von Anforderungen unterschiedlicher Priorität

Country Status (3)

Country Link
US (1) US6745262B1 (de)
JP (1) JP4028686B2 (de)
DE (1) DE10062063B4 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10260296A1 (de) * 2002-12-20 2004-07-08 Siemens Ag Steuerung der dynamischen Adressvergabe für Datenübertragung in Paketnetzen

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2001255441A1 (en) * 2000-04-17 2001-10-30 Circadence Corporation System and method for implementing application -independent functionality within a network infrastructure
US7412492B1 (en) 2001-09-12 2008-08-12 Vmware, Inc. Proportional share resource allocation with reduction of unproductive resource consumption
US7433962B2 (en) * 2002-02-28 2008-10-07 Real Enterprise Solutions Development B.V. Multi-user computer system with an access balancing feature
US7380248B1 (en) * 2004-02-26 2008-05-27 Sun Microsystems, Inc. Queue alerts
US7624396B1 (en) * 2004-02-26 2009-11-24 Sun Microsystems, Inc. Retrieving events from a queue
WO2005089239A2 (en) * 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method of providing a self-optimizing reservation in space of compute resources
WO2006053093A2 (en) 2004-11-08 2006-05-18 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US7356631B2 (en) * 2005-01-21 2008-04-08 Himax Technologies, Inc. Apparatus and method for scheduling requests to source device in a memory access system
CA2603577A1 (en) 2005-04-07 2006-10-12 Cluster Resources, Inc. On-demand access to compute resources
US7418531B2 (en) * 2005-05-04 2008-08-26 Pillar Data Systems, Inc. Quality of service for data storage volumes
US20070083482A1 (en) * 2005-10-08 2007-04-12 Unmesh Rathi Multiple quality of service file system
US7657671B2 (en) * 2005-11-04 2010-02-02 Sun Microsystems, Inc. Adaptive resilvering I/O scheduling
JP2007334641A (ja) * 2006-06-15 2007-12-27 Sony Corp 情報処理装置および方法、並びにプログラム
KR100798924B1 (ko) * 2006-09-29 2008-01-29 한국전자통신연구원 Mboa mac의 pca 구간에서 자원 분배 방법
US8156289B2 (en) * 2008-06-03 2012-04-10 Microsoft Corporation Hardware support for work queue management
US8121129B2 (en) * 2008-12-15 2012-02-21 International Business Machines Corporation Optimizing throughput of data in a communications network
US8490107B2 (en) 2011-08-08 2013-07-16 Arm Limited Processing resource allocation within an integrated circuit supporting transaction requests of different priority levels
US9591101B2 (en) * 2014-06-27 2017-03-07 Amazon Technologies, Inc. Message batching in a distributed strict queue
US9584593B2 (en) * 2014-06-27 2017-02-28 Amazon Technologies, Inc. Failure management in a distributed strict queue
US9577961B2 (en) * 2014-06-27 2017-02-21 Amazon Technologies, Inc. Input/output management in a distributed strict queue
US9575820B2 (en) * 2014-06-27 2017-02-21 Amazon Technologies, Inc. Client control in a distributed strict queue
US10025531B2 (en) 2015-09-10 2018-07-17 HoneycombData Inc. Reducing read command latency in storage devices
EP3679468A4 (de) * 2017-12-11 2021-04-07 Hewlett-Packard Development Company, L.P. Steuerereigniswarteschlangen
US10613998B2 (en) * 2018-07-30 2020-04-07 EMC IP Holding Company LLC Multi-level time decay storage queue

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4926418A (en) 1989-04-11 1990-05-15 International Business Machines Corporation Fairness algorithm for full-duplex buffer insertion ring
US5185861A (en) * 1991-08-19 1993-02-09 Sequent Computer Systems, Inc. Cache affinity scheduler
GB2304210B (en) * 1995-08-11 2000-02-16 Fujitsu Ltd Data receiving devices
US6487212B1 (en) * 1997-02-14 2002-11-26 Advanced Micro Devices, Inc. Queuing structure and method for prioritization of frames in a network switch
US5909594A (en) 1997-02-24 1999-06-01 Silicon Graphics, Inc. System for communications where first priority data transfer is not disturbed by second priority data transfer and where allocated bandwidth is removed when process terminates abnormally
US5924098A (en) * 1997-06-30 1999-07-13 Sun Microsystems, Inc. Method and apparatus for managing a linked-list data structure
US6317872B1 (en) * 1997-07-11 2001-11-13 Rockwell Collins, Inc. Real time processor optimized for executing JAVA programs
US6418517B1 (en) * 1997-08-29 2002-07-09 International Business Machines Corporation Optimized function execution for a multiprocessor computer system
US5960434A (en) * 1997-09-26 1999-09-28 Silicon Graphics, Inc. System method and computer program product for dynamically sizing hash tables
US6446225B1 (en) * 1998-04-23 2002-09-03 Microsoft Corporation Server system with scalable session timeout mechanism
US6003101A (en) * 1998-07-15 1999-12-14 International Business Machines Corp. Efficient priority queue
US6477144B1 (en) * 1998-09-10 2002-11-05 Nortel Networks Limited Time linked scheduling of cell-based traffic

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10260296A1 (de) * 2002-12-20 2004-07-08 Siemens Ag Steuerung der dynamischen Adressvergabe für Datenübertragung in Paketnetzen

Also Published As

Publication number Publication date
US6745262B1 (en) 2004-06-01
DE10062063B4 (de) 2006-02-09
JP4028686B2 (ja) 2007-12-26
JP2001222501A (ja) 2001-08-17

Similar Documents

Publication Publication Date Title
DE10062063B4 (de) Verfahren, System, Computerprogramm-Produkt und Speichervorrichtung zur Steuerung einer Warteschlange von Anforderungen unterschiedlicher Priorität
DE112010004931B4 (de) Mehrphasige Wiederherstellung von Dateisystemen mit Selektiver Bedarfsweiser Verfügbarkeit von Daten
DE69724846T2 (de) Mehrweg-Ein/Ausgabespeichersysteme mit Mehrweg-Ein/Ausgabeanforderungsmechanismus
DE112011101109B4 (de) Übertragung von Map/Reduce-Daten auf der Grundlage eines Speichernetzwerkes oder eines Speichernetzwerk-Dateisystems
DE112011104419B4 (de) Bereichsmigration für gepaarte Speicherung
DE112011102076B4 (de) Neuordnen des Zugriffs zum Verringern der Gesamtsuchzeit auf Bandmedien
DE112010003788B4 (de) Datenspeicherung
DE102012216568B4 (de) Scheduling und Managen von Rechentasks mit unterschiedlichen Ausführungsprioritätsstufen
DE19983026B4 (de) Brücke zwischen zwei Bussen mit einem Puffer mit einer einstellbaren Mindestspeicherraummenge für ein Akzeptieren einer Schreibanforderung und Verfahren hierzu
DE102013215535B4 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE112012004798B4 (de) Anpassung der Auslagerungsgeschwindigkeit auf Grundlage von Anforderungen an Lese- und Schreib-Antwortzeiten
DE69834026T2 (de) Verfahren und vorrichtung zur befehlswiedereinordnung und wiederherstellung von daten zur originalen befehlsreihenfolge
DE112010003794B4 (de) Datenspeicherung unter Verwendung von Bitmaps
DE60316141T2 (de) Echtzeit-speicherbereichsnetzwerk
DE10348326A1 (de) Permanentspeichervorrichtung, die an eine Kommunikationsverbindung angeschlossen ist
DE102005006176A1 (de) Transaktionsverarbeitungs-Systeme und -Verfahren, die einen Nicht-Platten-Dauerspeicher verwenden
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE112012002452T5 (de) Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten
DE112013003300B4 (de) Schrittweise Vorbereitung von Videos auf die Lieferung
DE102013209318B4 (de) Durchführen von asynchronen Löschscans mit Zwischenspeicherungs- und Auslagerungsvorgängen
DE112010003594T5 (de) Dynamische Ressourcen-Zuordnung für verteilte Gruppen-speichernetze
DE112018000900T5 (de) Verarbeiten eines Befehls zum Freigeben von Speicherplatz in einem Computersystem
DE112019000992T5 (de) Verwaltung virtueller Speicherlaufwerke in einem Datenspeichersystem
DE60211452T2 (de) DMA-Übertragung von Daten und Prüfinformation zu und von einem Datenspeicherungsgerät
DE10234138A1 (de) Verwalten einer Speicherkonkurrenz bei automatisierten Speichersystemen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)
R085 Willingness to licence withdrawn
R082 Change of representative

Representative=s name: PFENNING MEINIG & PARTNER GBR, DE

R081 Change of applicant/patentee

Owner name: GOOGLE INC., MOUNTAIN VIEW, US

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, N.Y., US

Effective date: 20120717

Owner name: GOOGLE INC., US

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, US

Effective date: 20120717

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, N.Y., US

Effective date: 20120717

R082 Change of representative

Representative=s name: PFENNING MEINIG & PARTNER GBR, DE

Effective date: 20120717

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

Effective date: 20120717

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R071 Expiry of right