DE69429204T2 - Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk - Google Patents
Ablaufssteuerungsverfahren und -gerät für ein KommunikationsnetzwerkInfo
- Publication number
- DE69429204T2 DE69429204T2 DE69429204T DE69429204T DE69429204T2 DE 69429204 T2 DE69429204 T2 DE 69429204T2 DE 69429204 T DE69429204 T DE 69429204T DE 69429204 T DE69429204 T DE 69429204T DE 69429204 T2 DE69429204 T2 DE 69429204T2
- Authority
- DE
- Germany
- Prior art keywords
- processing
- time
- thread
- subprocess
- real
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 59
- 238000004891 communication Methods 0.000 title claims description 28
- 238000012545 processing Methods 0.000 claims description 231
- 230000006870 function Effects 0.000 claims description 39
- 230000007246 mechanism Effects 0.000 claims description 33
- 230000000903 blocking effect Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 14
- 238000013459 approach Methods 0.000 description 12
- 230000000694 effects Effects 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 230000009365 direct transmission Effects 0.000 description 6
- 241001522296 Erithacus rubecula Species 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 208000037824 growth disorder Diseases 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
Description
- Diese Erfindung betrifft allgemein den effizienten Entwurf und Betrieb von Kommunikationsnetzwerken und, insbesondere, Ablaufsteuerungsmechanismen zur Verwendung in Stationen, die mit einem Kommunikationsnetzwerk verbunden sind. Ein Netzwerk besteht aus einem Kommunikationskanal und einer Anzahl von Stationen, die mit dem Kanal verbunden sind. Information wird über den Kanal in Datenframes oder -paketen übertragen, wobei die Pakete Anfangsblöcke haben, die zulassen, dass eine jeweilige Station den Zielort der Daten bestimmt.
- Jede Station muss eine Anzahl von Aufgaben und Unteraufgaben in bezug auf ein Senden und Empfangen von Datenpaketen durchführen. Allgemein können sich diese Aufgaben und Unteraufgaben zeitlich überlagern, und die Durchführbarkeit von jeder von ihnen kann von der Beendigung einer anderen abhängig sein. Darüber hinaus haben die in einer Station durchgeführten Funktionen, gleichgültig ob sie abhängig oder unabhängig sind, typischerweise relative Prioritäten. Da eine Station nur einen Prozessor zum Durchführen aller Stationsaufgaben und - unteraufgaben aufweisen kann, ist eine Ablaufsteuerung dieser Aufgaben und Unteraufgaben der Station ein kritischer Aspekt von Netzwerkoperationen. Eine Ablaufsteuerung im Endsystem muss die Anforderungen erfüllen, die vom Netzwerk erwartet werden: die Netzwerkprotokolle, die Regeln zum Zugreifen auf den Kanal, und so weiter, und zwar primär bezüglich eines Durchsatzes und einer Latenz.
- Als sich Computernetzwerke entwickelt haben, sind verschiedene Ansätze bei der Auswahl eines Kommunikationsmediums, einer Netzwerktopologie, eines Nachrichtenformats und von Protokollen für einen Kanalzugriff verwendet worden. Einige dieser Ansätze haben sich als Standards ergeben, und ein Modell für Netzwerkarchitekturen ist vorgeschlagen und weithin akzeptiert worden. Es ist als das Referenzmodell des offenen Kommunikationssystems (OSI = Open System Interconnection) des internationalen Normenausschusses (ISO = International Standards Organisation) bekannt. Das OSI-Referenzmodell ist selbst keine Netzwerkarchitektur. Vielmehr spezifiziert es eine Hierarchie von Protokollschichten und definiert die Funktion einer jeweiligen Schicht im Netzwerk. Jede Schicht in einem Computer des Netzwerks betreibt eine Konversation mit der entsprechenden Schicht in einem anderen Computer, mit welchem eine Kommunikation stattfindet, gemäß einem Protokoll, das die Regeln dieser Kommunikation definiert. In Wirklichkeit wird Information von Schicht zu Schicht in einem Computer nach unten transferiert bzw. übertragen, und dann durch das Kanalmedium und zurück bis zu den aufeinander folgenden Schichten des anderen Computers. Jedoch ist es für Zwecke eines Entwerfens der verschiedenen Schichten und eines Verstehens ihrer Funktionen einfacher, jede der Schichten derart zu betrachten, als ob sie mit ihrem Gegenstück auf derselben Ebene an der entfernten Maschine kommuniziert. Jedoch sind bei der vorliegenden Erfindung die Daten von Interesse, die von einer Schicht zur nächsten an derselben Maschine fließen, und die Ablaufsteuerung von Aktivitäten jeder dieser Schichten in derselben Maschine.
- Die niedrigste Schicht, die durch das OSI-Modell definiert ist, wird die physikalische Schicht genannt und betrifft ein Senden roher Datenbits über den Kommunikationskanal und ein Sicherstellen, dass die Datenbits ohne Fehler empfangen werden. Ein Entwurf der physikalischen Schicht enthält in Abhängigkeit von dem Medium, das für den Kommunikationskanal verwendet wird, Probleme einer elektrischen, einer mechanischen oder einer optischen Ingenieurtätigkeit. Die Schicht, die der physikalischen Schicht am nächsten ist, wird die Datenverbindungsschicht genannt. Die Hauptaufgabe der Datenverbindungsschicht besteht im Transformieren der physikalischen Schicht, welche eine direkte Schnittstelle zum Kanalmedium bildet, in eine Kommunikationsverbindung, die Kommunikationsdienste zur nächsthöheren Schicht liefert, die als die Netzwerkschicht bekannt ist. Die Datenverbindungsschicht führt solche Funktionen durch, wie ein Strukturieren von Daten in Pakete oder Frames und ein Anbringen von Steuerinformation an die Pakete oder Frames, wie beispielsweise Prüfsummen zur Fehlererfassung und Paketnummern.
- Obwohl die Datenverbindungsschicht primär unabhängig von der Art des physikalischen Übertragungsmediums ist, sind bestimmte Aspekte der Datenverbindungsschichtenfunktion vom Übertragungsmedium abhängiger. Aus diesem Grund ist die Datenverbindungsschicht bei einigen Netzwerkarchitekturen in zwei Unterschichten aufgeteilt: eine logische Verbindungssteuerungs-Unterschicht, die alle Funktionen mit mittlerer Unabhängigkeit der Datenverbindungsschicht durchführt, und eine Medienzugriffssteuerungs-(MAC-)Schicht. Diese Schicht oder Unterschicht bestimmt, welche Station einen Zugriff zum Kommunikationskanal erlangen sollte, wenn es einen Wettstreit um ihn gibt. Es ist wahrscheinlicher, dass die Funktionen der MAC-Schicht von der Art des Übertragungsmediums abhängig sind.
- Von diesem Hintergrund ausgehend wird erkannt werden, dass jede Station eine Anzahl von Haushaltsaufgaben auf einer fortlaufenden Basis durchführen muss, um einen effizienten Betrieb der Station und des Netzwerks sicherzustellen. Pakete von vom Netzwerk empfangenen Daten müssen sofort verarbeitet werden, um einen Verlust von empfangenen Paketen zu vermeiden oder zu minimieren. Eine Verarbeitung enthält nicht nur ein Ausgeben der Pakete zu einem Stationsspeicher, sondern ein Übertragen bzw. Transferieren der Pakete von der niedrigsten Protokollschicht durch verschiedene höhere Schichten. Pakete von Daten zur Übertragung auf das Netzwerk müssen ebenso verarbeitet werden, d. h. durch die Protokollschichten transferiert und möglicherweise auf das Netzwerk übertragen werden. Eine Verarbeitung von Datenpaketen kann auch ein Untersuchen und Modifizieren von Paket-Anfangsblöcken enthalten. Zusätzlich kann es eine Anzahl von anderen Typen von Funktionen geben, die die Station durchzuführen hat, und zwar in Abhängigkeit von den Aktivitäten, für welche die Station entworfen ist. Beispielsweise kann eine Station ein Datenserver bzw. Fileserver für das Netzwerk sein, der Massenspeichervorrichtungen handhabt, und auf welches andere Stationen einen Zugriff über den Datenserver haben. Oder die Station kann ein Endgerät oder eine Workstation sein, durch welches bzw. welche ein Anwender auf das Netzwerk zugreift. Zusammenfassend hat jede Station Empfangspakete und Sendepakete zu verarbeiten und kann eine Anzahl von anderen Aufgaben durchführen müssen.
- Einige der Stationsfunktionen werden typischerweise in einem Stationsadapter durchgeführt, einer Vorrichtung, die eine Schnittstelle zwischen einem Netzwerk- Kommunikationskanal und einem Hostsystembus der Station zur Verfügung stellt. Der Adapter enthält einen Paket-Pufferspeicher, in welchem Empfangspakete vor einer Übertragung zu einem Hostsystemspeicher temporär gespeichert werden, der auch mit dem Bus verbunden ist, und in welchem Sendepakete nach einer Wiedergewinnung bzw. einem Auslesen aus dem Hostsystemspeicher und bevor sie auf das Netzwerk übertragen bzw. gesendet werden, temporär gespeichert werden. Der Adapter kann seinen eigenen Prozessor haben oder kann eine Hardware- Zustandsmaschine zum Handhaben einiger seiner Funktionen verwenden. Andere Stationsfunktionen können durch den Hostprozessor selbst durchgeführt werden. Ungeachtet dessen, wo bei der Station die verschiedenen Verarbeitungsfunktionen durchgeführt werden, gibt es fast immer ein Problem einer Ablaufsteuerung dieser Funktionen auf eine geeignete effiziente Weise. Das Problem besteht einfach darin, wie Verarbeitungsbetriebsmittel richtig zuzuteilen sind. Wenn eine Station mit sehr vielen Verarbeitungsbetriebsmitteln versehen wäre, gäbe es kein signifikantes Ablaufsteuerungsproblem. Normalerweise gibt es jedoch eine Kostenbeschränkung, die Verarbeitungsbetriebsmittel gering hält, und das Ablaufsteuerungsproblem reduziert sich normalerweise auf eine Frage eines Zuteilens eines einzelnen Prozessors zum Handhaben mehrerer Aufgaben so effizient wie möglich.
- Typischerweise werden Ablaufsteuerungsmechanismen in einem Netzwerk- Stationsprozessor oder -adapterprozessor mit Unterbrechung betrieben, was einfach bedeutet, dass der Prozessor von Zeit zu Zeit durch Ereignisse unterbrochen wird, wenn sie sich ereignen. Beispielsweise wird dann, wenn ein Empfangspaket vom Netzwerk-Kommunikationskanal gelesen werden muss, eine Hardware- Unterbrechung erzeugt, und sie unterbricht, was auch immer gerade stattfindet, zugunsten der normalerweise wichtigeren Empfangspaket-Verarbeitung. Ein unterbrochener Prozessor muss den Kontext seiner aktuellen Verarbeitungsaufgabe sichern, die Ursache der Unterbrechung bestimmen, zu einer neuen Aufgabe schalten und nach einer Wiederherstellung des Kontextes zur Zeit der Unterbrechung später zur unterbrochenen Aufgabe zurückkehren. Eine Ablaufsteuerung ist in einem Hostprozessor oft komplexer, der sich zusätzlich zu Kommunikationsfunktionen um solche Aktivitäten wie eine Platten-Eingabe/Ausgabe, einen Datendienst bzw. Datenservice und eine Anwendungsprotokollverarbeitung kümmern muss.
- Ein mittels einer Unterbrechung betriebener Ablaufsteuerungsmechanismus hat zugeordnete Unterbrechungsprioritäten, die normalerweise festgelegt sind. In den meisten Systemen ist die höchste Priorität in Übereinstimmung mit einem Empfangen von Paketen bei der niedrigsten Netzwerk-Protokollschicht gebracht. Dann bekommen die Netzwerk-Protokollschichten auf den nächst höheren Ebenen eine Priorität, das empfangene Paket zu verarbeiten. Wenn diese Aufgaben eine Steuerung abgeben, bekommen die niedrigsten Schichten einer Paketübertragungsaktivität eine Priorität. Einige dieser Paketempfangs- und -sendeaufgaben können nicht unterbrechbar sein, was heißt, dass sie zu einer gewissen Stelle einer Beendigung oder einer teilweisen Beendigung laufen müssen, bevor eine andere Aufgabe eine Steuerung erhält. Oft laufen sie zu einer Beendigung, was eine Verarbeitung von in einem Burst empfangenen mehreren Paketen enthält.
- Es gibt vier zugehörige Probleme, die bei jedem Netzwerkstations- Ablaufsteuerungsmechanismus vermieden oder minimiert werden sollten: Empfangen einer Direktübertragungsverriegelung, Senden einer Verkümmerung, ein nicht akzeptierbarer Paketverlust und eine nicht akzeptierbare Latenz zur Ausgabe eines ersten Pakets in einem langen Burst von empfangenen Paketen. Ein Empfangen einer Direktübertragungsverriegelung ist ein Zustand, der dann entsteht, wenn ein System mit Feld-Empfangsunterbrechungen so vorbelegt ist, dass es unfähig ist, den Prozess zum Ausgeben der Pakete zu der Anwendung zu beenden, welche der Endempfänger ist. Erklärt man eine andere Art, kann der Prozessor dann, wenn die Verarbeitung und Ausgabe von Empfangspaketen länger als die Zeit zwischen einem Empfang von aufeinanderfolgenden Paketen dauert, nur ein Verarbeiten von Paketen bei niedrigeren Netzwerkschichten beenden, und er macht keinen ausreichenden Fortschritt bei der höheren Schicht. Ein Empfangen einer Direktübertragungsverriegelung resultiert normalerweise im nächsten angegebenen Problem, nämlich einem Senden einer Verkümmerung. Ein typischer Ablaufsteuerungsansatz stellt eine Empfangsverarbeitung höherer Priorität zur Verfügung, lässt ein Empfangen zum Unterbrechen einer anderen Aktivität zu und lässt zu, dass eine Empfangsverarbeitung bis zu einer Beendigung läuft, bevor eine andere Aufgabe begonnen wird. In einem System, das diesen Ansatz verwendet, wird ein Fortschritt beim Verarbeiten von Sendepaketen nur dann gesichert, wenn der Paketempfangsprozess beendet ist. Somit werden in einem Zustand eines Empfangens einer Direktübertragungsverriegelung, oder auch dann, wenn der Prozessor Empfangspakete nur relativ beschäftigt verarbeitet, die Aufgaben in bezug auf ein Senden, und auch eine Verarbeitung einer höheren Schicht von Verarbeitungsbetriebsmitteln abgezogen.
- Eine mittels einer Unterbrechung betriebene Verarbeitung ohne unterbrechende Priorität von Empfängen bei den niedrigsten Netzwerkschichten fügt auch eine Latenz zu einer Ausgabe von Paketen zu ihrem Zielort hinzu und kann einen exzessiven Paketverlust einführen. Eine Latenz zum Ausgeben des Pakets zur Anwendung in mittels einer Unterbrechung betriebenen Systemen entsteht aufgrund des Verarbeitungszusatzes, der zum Bedienen einer Unterbrechung und zum Sichern des Kontextes einer bereits in Arbeit befindlichen Verarbeitung nötig ist. Zusätzlich machen die höheren Schichten aufgrund einer Priorität für diese Unterbrechung keinen rechtzeitigen Fortschritt, wenn sie keine gerechte gemeinsame Nutzung von Verarbeitungsbetriebsmitteln bekommen, und eine Latenz zum Ausgeben des Pakets wird noch größer. Ein Paketverlust resultiert dann, wenn ein Empfangen einer Direktübertragungsverriegelung dem Zustand vorausgeht, dass kein Fortschritt beim Verarbeiten von bereits empfangenen Paketen gemacht wird, und neu ankommende Pakete aufgrund eines Fehlens an Puffern, um diese Pakete zu der nächsthöheren Schicht in eine Warteschlange zu bringen, fallengelassen werden müssen.
- Es wird aus dem Vorangehenden erkannt werden, dass es noch eine signifikante Notwendigkeit für eine Verbesserung bezüglich Ablaufsteuerungsmechanismen für Kommunikationsfunktionen eines Netzwerkstations-Betriebssystems gibt. Ablaufsteuerungsmechanismen sind sowohl in der Hostsystem-Verarbeitungseinheit als auch im Prozessor des Adapters, der den Host mit dem Netzwerk verbindet, nötig. Insbesondere ist das, was benötigt wird, ein Ablaufsteuerungsansatz, der alle der oben erörterten Probleme betrifft. Die vorliegende Erfindung erfüllt diese Notwendigkeit.
- Die europäische Anmeldung 0 527 392 A2 nach dem Stand der Technik lehrt eine unterbrechende und nicht unterbrechende Ablaufsteuerung und eine Ausführung von Programm-Teilprozessen in einem Mehrprogrammbetrieb-Betriebssystem. Ein gegenwärtig ausführender Teilprozess kann unerwünschterweise durch einen verfügbaren Teilprozess höherer Priorität von einer anderen Abwicklerklasse unterbrochen werden. Ein Teilprozess kann unter bestimmten Umständen auch gewollt auf eine Steuerung seines Prozessors verzichten.
- Die IEEE-Veröffentlichung nach dem Stand der Technik mit dem Titel "Performance Considerations in Designing Network Interfaces" aus IEEE communications Journal, vol. 11, no. 2, Februar 1993, lehrt einen Ansatz für den Entwurf von Ablaufsteuerungen bzw. Abwicklern an einer Netzwerkschnittstelle. Insbesondere sind Entwurfsprobleme angesprochen, die die Durchführbarkeit einer Netzwerk- Eingabe/Ausgabe stark beeinflussen, und die Netzwerkschnittstelle zum 100 Mb/s- FDDI-Tokenring.
- Die vorliegende Erfindung besteht in einem neuen Ablaufsteuerungsverfahren und einer neuen Ablaufsteuerungsvorrichtung zur Verwendung in Stationen eines Kommunikationsnetzwerks. Die Erfindung eliminiert in der Praxis ein Empfangen einer Direktübertragungsverriegelung und ein Senden einer Verkümmerung, verbessert eine Leistungsfähigkeit bezüglich eines Paketverlustes und einer Latenz und induziert ein größeres Maß an Gerechtigkeit beim Zuteilen von Verarbeitungsbetriebsmitteln zu verschiedenen Aufgaben.
- Die Erfindung in ihrer allgemeinen Form besteht in einem Verfahren zum Steuern des Ablaufs mehrerer Verarbeitungsausgaben, wie es allgemein im Anspruch 1 wiedergegeben ist. Die Erfindung besteht auch in einer Vorrichtung zum Steuern des Ablaufs mehrerer Verarbeitungsaufgaben, wie es allgemein im Anspruch 12 wiedergegeben ist. Wie es hierin nachfolgend detaillierter beschrieben ist, weist ein bevorzugtes Verfahren der Erfindung die folgenden Schritte auf: Aufteilen von Verarbeitungsaufgaben in Verarbeitungs-Teilprozesse, von welchen jeder strukturiert ist, um für eine begrenzte Zeit auszuführen, bevor er einer Unterbrechung durch einen anderen Verarbeitungs-Teilprozess unterzogen wird; wiederholtes Bestimmen, wann eine Arbeit durch irgendeinen der Verarbeitungs-Teilprozesse durchzuführen ist; wiederholtes Postieren irgendeiner durchzuführenden Arbeit zu geeigneten der Verarbeitungs-Teilprozesse; Auswählen eines Verarbeitungs- Teilprozesses, der durchzuführende Arbeit hat; Aufrufen des ausgewählten Verarbeitungs-Teilprozesses; und Ausführen des ausgewählten und aufgerufenen Verarbeitungs-Teilprozesses. Die meisten der drei Prozesse sind als Echtzeitteilprozesse kategorisiert, die vor einem Übergeben einer Steuerung für bis zur ausgewählten maximalen Zeit ausführen. Ein Maß für die maximale Ausführungszeit in einem Teilprozess wird durch Zählen bis zu einer ausgewählten Anzahl von Einheiten erhalten, die durch den Teilprozess verarbeitet werden. Das Verfahren fährt fort durch Wiederholen der Schritte zum Auswählen, zum Aufrufen und Ausführen für andere Verarbeitungs-Teilprozesse.
- Die maximale Anzahl von Einheiten, die jedes Mal durch einen Echtzeitteilprozess verarbeitet werden, wenn er aufgerufen wird, wird die "Gewichtung" des Teilprozesses genannt. Ein Assoziieren unterschiedlicher Gewichtungen mit unterschiedlichen Echtzeitteilprozessen lässt zu, eine Aktivität gegenüber einer anderen zu favorisieren.
- Bei einem Ausführungsbeispiel der Erfindung enthält der Schritt zum Bestimmen, wann eine Arbeit durch irgendeinen der Verarbeitungs-Teilprozesse durchzuführen ist, ein Abfragen aller Verarbeitungsaufgaben. Ein alternativer Ansatz enthält ein Ermöglichen von Unterbrechungen für Aufgaben höherer Priorität, die eine andere Verarbeitung temporär unterbrechen. Wenn Unterbrechungen verwendet werden, enthält das Verfahren ein Bedienen der Unterbrechungen so schnell wie möglich. Weiterhin wird die Anzahl von solchen Unterbrechungen, die in irgendeiner Einheit einer Zeit zugelassen sind, durch potentielles Sperren der Unterbrechungen, wenn eine vordefinierte Grenze einer Anzahl von Unterbrechungen in einem Intervall überschritten wird, streng gesteuert. Zeitaufwendige Unterbrechungsbedienungsfunktionen werden zur Ausführung in Verarbeitungs-Teilprozessen verzögert, wo sie mit den anderen Teilprozessen für Verarbeitungsbetriebsmittel konkurrieren müssen.
- Gemäß einem Aspekt der Erfindung enthält der Schritt zum Aufteilen der Verarbeitungsaufgaben in Verarbeitungs-Teilprozesse ein Bilden von Echtzeit- Verarbeitungs-Teilprozessen zur Ausführung von zeitkritischen Funktionen, wobei jeder Echtzeitverarbeitungs-Teilprozess strukturiert ist, um für eine Zeit auszuführen, die durch eine maximale Anzahl von verarbeiteten Einheiten bestimmt ist; und ein Bilden wenigstens eines Verarbeitungs-Teilprozesses für allgemeine Zwecke zur Ausführung von Funktionen, die bezüglich einer Ausführungszeit weniger beschränkt sind. Jeder Verarbeitungs-Teilprozess für allgemeine Zwecke ist strukturiert, um für eine vorausgewählte minimale Zeit auszuführen, wenn es nötig ist, während welcher der durch andere Teilprozesse nicht unterbrechbar ist, und um darauffolgend in einem unterbrechbaren Mode auszuführen, wenn es nötig ist. Während der Zeit, während welcher er nicht unterbrechbar ist, ist ein Teilprozess für allgemeine Zwecke wie ein Echtzeitteilprozess. Dies kann sein, um eine gewisse Verarbeitung für Aufgaben für allgemeine Zwecke zu garantieren, wie beispielsweise für Anwendungen, so dass sie einen Fortschritt machen. Wenn ein Teilprozess für allgemeine Zwecke eine zu einer Echtzeit-Aufgabe gehörige Funktion (z. B. Senden eines Pakets) durchführen muss, kann er das Paket zu einem Echtzeitteilprozess in eine Warteschlange bringen.
- Der Schritt zum Auswählen eines Teilprozesses zur Ausführung enthält ein Auswählen derjenigen aus den Teilprozessen, die eine Arbeit postiert haben, auf einer Round-Robin-Basis. Ein Aufrufen des ausgewählten Teilprozesses enthält ein Schalten des Kontextes zum Verarbeiten vom zuvor ausführenden Teilprozess zum ausgewählten Teilprozess und ein Übertragen einer Verarbeitungssteuerung zum ausgewählten Teilprozess. Eine Teilprozessauswahl wird bei einem gegenwärtig bevorzugten Ausführungsbeispiel auf einer Round-Robin-Basis durchgeführt; d. h. jeder Teilprozess wird für eine Ausführung in einer Folge angesehen, einschließlich des Teilprozesses oder der Teilprozesse für allgemeine Zwecke. Wenn ein Teilprozess keine Arbeit postiert hat, d. h. er zur gegenwärtigen Zeit nicht nötig ist, prüft der Auswahlprozess den nächsten Teilprozess, der an der Reihe ist.
- Beim gegenwärtig bevorzugten Ausführungsbeispiel der Erfindung enthält der Schritt zum Postieren irgendeiner durchzuführenden Arbeit zu geeigneten Verarbeitungs-Teilprozessen ein Einstellen oder Postieren eines Flags für jeden Verarbeitungs-Teilprozess, der eine durchzuführende Arbeit hat. Dieses Flag wird gesetzt, wenn einer Unterbrechung begegnet wird, aber keine andere Arbeit wird für die Unterbrechung durchgeführt. Ebenso kann diese bestimmte Unterbrechung, bis das Flag rückgesetzt wird, nicht wieder freigegeben werden. Die Arbeit wird auf irgendeine Weise im Adapter oder in den Treiberpuffern in eine Warteschlange gebracht.
- Gemäß einem weiteren Aspekt der Erfindung kann das Verfahren auch ein Begrenzen der Rate enthalten, mit welcher Unterbrechungen bedient werden können, indem Unterbrechungen von Zeit zu Zeit temporär gesperrt werden. Dies erlegt der Priorität eine Beschränkung auf, die einer Unterbrechungsverarbeitung eigen ist, oder einen Mangel an Steuerung, die einer prioritätsgesteuerten auf einer Unterbrechung basierenden Verarbeitung eigen ist.
- Die Erfindung kann auch in bezug auf eine neue Vorrichtung zum Steuern des Ablaufs mehrerer Verarbeitungsaufgaben für eine verbesserte Leistungsfähigkeit in einer Netzwerk-Kommunikationsstation ausgedrückt werden. Die Vorrichtung weist folgendes auf: eine Gruppe von ausführbaren Verarbeitungs-Teilprozessen, einschließlich Echtzeit-Verarbeitungs-Teilprozessen, die strukturiert sind, um für eine ausgewählte maximale Zeit auszuführen, die durch Zählen einer ausgewählten Anzahl von verarbeiteten Einheiten bestimmt ist, und wenigstens eines Verarbeitungs- Teilprozesses für allgemeine Zwecke, der strukturiert ist, um in einem nicht unterbrechbaren Mode für eine ausgewählte minimale Zeit auszuführen, wenn es nötig ist, und um darauffolgend, wenn es nötig ist, in einem unterbrechbaren Mode auszuführen. Zwei andere nötige Elemente der Vorrichtung sind ein Teilprozess- Postierungsmechanismus einschließlich einer Einrichtung zum wiederholten Bestimmen, wann eine Arbeit durch irgendeinen der Verarbeitungs-Teilprozesse durchzuführen ist, und einer Einrichtung zum wiederholten Postieren irgendeiner durchzuführenden Arbeit zu geeigneten der Verarbeitungs-Teilprozesse; und eine Teilprozess-Ablaufsteuerung zum Auswählen und Aufrufen von Verarbeitungs- Teilprozessen, die eine durchzuführende Arbeit haben.
- Der Teilprozess-Postierungsmechanismus kann entweder eine Einrichtung zum Abfragen aller Verarbeitungsaufgaben enthalten, oder ein Unterbrechungssystem, das eine Verarbeitung temporär unterbrechen kann, wenn eine Verarbeitungsaufgabe eine durchzuführende Arbeit hat. Das Unterbrechungssystem verwendet eine Einrichtung zum Bedienen einer minimalen Unterbrechung zum Verarbeiten von Unterbrechungen so schnell wie möglich, so dass die zeitaufwendigeren Unterbrechungsbedienungsfunktionen zur Ausführung in Verarbeitungs-Teilprozessen verzögert werden.
- Die Teilprozess-Ablaufsteuerung der Vorrichtung enthält eine Einrichtung zum Auswählen aus den Echtzeitteilprozessen und den Teilprozessen für allgemeine Zwecke, die eine Arbeit postiert haben, auf einer Round-Robin-Basis; und eine Einrichtung zum Aufrufen des ausgewählten Teilprozesses durch Schalten des Kontextes zum Verarbeiten vom zuvor ausführenden Teilprozess zum ausgewählten Teilprozess und durch Übertragen einer Verarbeitungssteuerung zum ausgewählten Teilprozess. Beim illustrativen Ausführungsbeispiel der Erfindung enthält die Einrichtung zum wiederholten Postieren irgendeiner durchzuführenden Arbeit zu geeigneten Verarbeitungs-Teilprozessen eine Einrichtung zum Setzen oder Postieren eines Flags für jeden Verarbeitungs-Teilprozess, der eine durchzuführende Arbeit hat. Wie es oben erörtert ist, hat jeder Teilprozess eine zu ihm gehörende Gewichtung; und die Gewichtung wird dazu verwendet, die Zeit zu bestimmen, die im Teilprozess vor einem Abtreten bzw. Übergeben einer Steuerung zu einem anderen Teilprozess verbraucht wird.
- Vor einem Eintreten in einen Echtzeitteilprozess löscht die Ablaufsteuerung bzw. der Abwickler automatisch das Flag, das eine Arbeit anzeigte, für die es nötig war, durch diesen Teilprozess durchgeführt zu werden. Die Echtzeit-Dienstroutine, die ein Postieren des Flags veranlasst, das anzeigt, dass eine Arbeit anhängig ist, muss prüfen, um zu bestimmen, ob es Arbeit gibt, die tatsächlich anhängig ist, um verarbeitet zu werden, da es möglich ist, dass die Arbeit der entsprechenden Unterbrechung bereits während des vorherigen Aufrufs des Echtzeitteilprozesses durchgeführt wurde.
- Es wird aus dem Vorangehenden erkannt werden, dass die vorliegende Erfindung einen signifikanten Fortschritt bei Ablaufsteuerungsmechanismen zur Verwendung in Kommunikations-Netzwerkstationsprozessoren darstellt, einschließlich Hostprozessoren und Prozessoren in Netzwerkadaptern. Andere Aspekte der Erfindung werden aus der folgenden detaillierten Beschreibung, genommen in Zusammenhang mit den beigefügten Zeichnungen, offensichtlich werden.
- Fig. 1 ist ein Blockdiagramm, das eine Netzwerkstation zeigt, die über einen Adapter mit einem Kommunikationsnetzwerk verbunden ist;
- Fig. 2 ist ein Blockdiagramm, das die Prinzipien des Ablaufsteuerungsmechanismus der vorliegenden Erfindung zeigt;
- Fig. 2A und 2B zeigen jeweils einen Echtzeitverarbeitungs-Teilprozess und einen Verarbeitungs-Teilprozess für allgemeine Zwecke;
- Fig. 3 ist ein Ablaufdiagramm, das die Funktionen eines Echtzeitabruf- Teilprozesses oder eines Echtzeitprozessors für denselben Zweck zeigt;
- Fig. 4 ist ein Ablaufdiagramm, das die Funktionen einer Verarbeitungsroutine zum Bedienen einer minimalen Unterbrechung zeigt; und
- Fig. 5 ist ein Ablaufdiagramm, das die Funktionen einer Ablaufsteuerung für einen Kern-Teilprozess zeigt, die in Fig. 2 erscheint.
- Wie es in den Zeichnungen zu Illustrationszwecken gezeigt ist, betrifft die vorliegende Erfindung Betriebssystem-Ablaufsteuerungsmechanismen zur Verwendung in Kommunikations-Netzwerkstationen. Obwohl der Mechanismus der Erfindung auf verschiedene Typen von Netzwerkprotokollen anwendbar ist, wird er zu Illustrationszwecken in bezug auf ein Tokenring-Netzwerk beschrieben, wie beispielsweise eines, das den Protokollen für eine faserverteilte Datenschnittstelle (FDDI) folgt.
- Eine typische Netzwerkstationskonfiguration ist in Fig. 1 gezeigt und enthält einen Netzwerkadapter, der durch ein Bezugszeichen 10 gezeigt ist, der zwischen einem Tokenring-Netzwerk 12 angeschlossen ist, das derart gezeigt ist, dass es vom faserverteilten Datenschnittstellen-(FDDI-)Typ ist, und einen Systembus 14. Der Systembus 14 hat eine Zentralverarbeitungseinheit (CPU) 16 und einen Systemspeicher 18 mit ihm verbunden. Der Adapter 10 verarbeitet Datenpakete, die vom Netzwerk 12 empfangen werden und speichert sie für eine darauffolgende Verarbeitung durch die CPU 16 im Systemspeicher 18.
- Der Adapter 10 enthält eine FDDI-Schnittstelle 20, einen Paketspeicher 22, eine Systembus-Schnittstelle 24, eine Paketspeicher-Steuerung 26 und einen Adapterprozessor 28. Empfangene Datenpakete werden temporär im Paketspeicher 22 gespeichert und später unter der Steuerung des Adapterprozessors 28 zum Systemspeicher 18 geliefert. Die Rate, mit welcher empfangene Pakete vom Netzwerk 12 angenommen werden müssen, ist über die Steuerung des Adapters hinausgehend, und herkömmlicherweise wird der Ablauf einer Operation des Prozessors 28 auf einer unterbrechungsgesteuerten Basis gesteuert, um sicherzustellen, dass einer Verarbeitung des empfangenen Verkehrs eine Priorität zugeteilt wird. Bei diesem Beispiel führt die CPU 16 eine Datenserverfunktion durch, was bedeutet, dass sie Daten in einer großen Massenspeichervorrichtung, wie beispielsweise einer Festplatte 30, speichert und wiedergewinnt, und diese Funktion für mehrere Anwenderstationen (nicht gezeigt) durchführt, die mit dem Netzwerk 12 verbunden sind.
- Die Prinzipien der vorliegenden Erfindung finden Anwendung bei Ablaufsteuerungsproblemen, auf die man sowohl im Adapterprozessor 28 als auch in der Host- CPU 16 trifft. Der Netzwerkadapter 10 verarbeitet Empfangspakete durch Anordnen von ihnen im Systemspeicher 18. Danach wird die CPU 16 an einer Empfangspaketverarbeitung auf verschiedenen Netzwerkebenen beteiligt, und wird auch an einer Sendepaket-Verarbeitung beteiligt, die möglicherweise Sendepakete im Systemspeicher anordnet, und zwar zur Wiedergewinnung und zur Übertragung durch den Netzwerkadapter 10. Darüber hinaus wird erkannt werden, dass die Aufteilung von Empfangsverarbeitungs- und Sendeverarbeitungsaufgaben zwischen dem Adapter 10 und der CPU 16 eine derartige ist, die auf eine Anzahl von Arten durchgeführt werden kann. Die Adapterfunktionen könnten durch die CPU 16 durchgeführt werden, aber in den meisten Fällen macht ein separater Adapter mehr Sinn, da die Adapterfunktionen sehr abhängig vom Kommunikationskanal sind. Die CPU 16 kann zusätzlich beim Ausführen von Datenserverfunktionen beteiligt sein. In jedem Fall führen sowohl der Adapterprozessor 28 als auch die CPU 16 eine Empfangsverarbeitung und eine Sendeverarbeitung aus irgendeiner Ebene durch, sowie auch andere Typen von Hintergrundverarbeitung, die durch die Station erforderlich ist. Daher finden gleiche Prioritätsbetrachtungen Anwendung auf sowohl den Adapterprozessor 28 als auch die CPU 16.
- Wie es im Hintergrund-Abschnitt dieser Beschreibung erörtert ist, wird eine Priorität zum Verarbeiten in Netzwerkstationen typischerweise durch ein System von Hardware-Unterbrechungen bestimmt, von welchen die Prioritäten festgelegt und zugunsten einer Empfangspaket-Verarbeitung sind. In einigen Situationen kann es nicht möglich sein, eine auf einer Unterbrechung basierende Lösung zu vermeiden, und zwar aufgrund von Beschränkungen, die durch das Prozessor-Betriebssystem auferlegt sind oder aufgrund von anderen Gründen. Jedoch ist es selbst bei einem auf einer Unterbrechung basierenden Ablaufsteuerungsmechanismus möglich und wünschenswert, die Rate zu begrenzen, mit welcher Unterbrechungen akzeptiert bzw. angenommen werden. Eine Lösung besteht im Kalibrieren der Anzahl von Empfangspaket-Warteschlangeneinträgen, die an der Schnittstelle zwischen der Datenverbindungsschicht und der Netzwerkschicht vorgesehen sind. Ein Empfangen einer Direktübertragungsverriegelung kann dann durch Sperren von Unterbrechungen für eine kurze Zeitperiode vermieden werden, während welcher eine Verarbeitung bei höheren Schichten (z. B. der Netzwerkschicht) einen Fortschritt macht und möglicherweise Puffer für die niedrigeren Ebenen (z. B. der Datenverbindungsschicht) freigibt, so dass Unterbrechungen dann erneut freigegeben werden können. Zum Vermeiden eines Empfangens von Direktübertragungsverriegelungen, zum Reduzieren einer Latenz und für eine Gerechtigkeit beim Zuteilen von Verarbeitungsbetriebsmitteln wird eine Unterbrechungsverarbeitung modifiziert, um die in Unterbrechungsdienstroutinen durchgeführte Arbeit auf einer extrem kleinen Menge zu halten. Das übrige der für diese Aufgabe erforderlichen Dienstarbeit wird mit einer niedrigeren Priorität durchgeführt, wo es eine Konkurrenz mit einer anderen Aktivität geben wird, und daher ein höheres Maß an Gerechtigkeit zwischen den konkurrierenden Aufgaben. Selbst eine Sendepaket-Verarbeitung kann gerechter um einen Zugriff zu Verarbeitungsbetriebsmitteln konkurrieren, wenn die Unterbrechungsdienstroutinen weitmöglichst verkürzt werden. Selbst mit diesen Verbesserungen garantiert jedoch ein auf einer Unterbrechung basierender Ablaufsteuerungsmechanismus nicht einen gerechten Zugriff auf Verarbeitungsbetriebsmittel durch alle Verarbeitungsaufgaben, bis nicht andere Verbesserungen zur Ablaufsteuerungen implementiert sind.
- Eine Alternative zu einer auf einer Unterbrechung basierenden Ablaufsteuerung ist ein Abrufansatz, wobei ein Paketverarbeitungstreiber auf Pakete "hört", die zu senden und zu empfangen sind, und daher die Verarbeitungsmenge bei niedrigeren Schichten steuern kann, sowie einen gewissen Gerechtigkeitspegel zwischen einem Senden und einem Empfangen von Paketen sicherstellen kann. Ein Nachteil besteht darin, dass es aufgrund der Abrufverzögerung eine erhöhte Latenz bei einer Verarbeitung des Pakets geben kann. Jedoch kann die Gesamtleistungsfähigkeit und die Durchschnittslatenz aufgrund der besseren Steuerung einer Verarbeitung auf den niedrigeren Ebenen mit einer Abrufstruktur verbessert werden, und zwar insbesondere dann, wenn das System stark belastet ist. Eine geeignet entworfene Abrufstruktur kann die Zeitmenge steuern, die jede Schicht oder Unterschicht vor einer Übergabe zu einer anderen Aufgabe ausführt, und kann die maximale Latenz steuern, die eine empfangene Anfrage antrifft.
- Ein weiterer Vorteil eines Abrufens gegenüber einem auf einer Unterbrechung basierenden Mechanismus wird in schnelleren Systemen angetroffen. Der relative Zusatz für eine Unterbrechungsverarbeitung erhöht sich, wenn Systeme schneller werden, weil für eine gegebene Erhöhung bezüglich einer Prozessorgeschwindigkeit die Zeitmenge zum Ausführen einer Unterbrechungsdienstroutine (einschließlich Hardware-Latenzen, die oft diejenigen sind, die sich nicht beschleunigen), nicht so sehr wie die Zeit zum Ausführen einer typischen Befehlssequenz kleiner wird. Zusätzlich müssen dann, wenn schnellere RISC-Maschinen (Maschinen mit reduziertem Befehlssatz) verwendet werden, viel mehr Register gesichert und wiederhergestellt werden, wenn Unterbrechungen verarbeitet werden, so dass sich der Zusatz beim Kontextschalten wesentlich erhöht.
- Das hier beschriebene Ausführungsbeispiel versucht, die Merkmale von beiden dieser Ablaufsteuerungsansätze zu verwenden, um überlegenere Ablaufsteuerungsmechanismen zum Unterstützen von Kommunikationsaufgaben zur Verfügung zu stellen. Wie es hierin beschrieben ist, sind Echtzeit- Verarbeitungsaufgaben derart vordefiniert, dass sie aus einer Anzahl von Echtzeitverarbeitungs-"Teilprozessen" ausgebildet sind, von welchen jeder einer Ablaufsteuerung unterzogen wird, wenn es nötig, und zu einer letzten oder mittleren Beendigungsstelle ohne Unterbrechung oder Preemption läuft. Der wichtigste Aspekt eines Teilprozesses besteht darin, dass er definiert ist, vor einem Übergeben einer Steuerung zu einer Teilprozess-Ablaufsteuerung für eine begrenzte Zeit läuft, aber für eine Durchführbarkeit bzw. Leistungsfähigkeit und eine Annehmlichkeit die begrenzte Zeit nicht durch eine Zeitgeberunterbrechung gemessen wird. Vielmehr ist jeder Teilprozess definiert, um eine ausgewählte Anzahl von Einheiten an Arbeit, wie beispielsweise Pakete, zu verarbeiten, und diese Anzahl von Einheiten ist derart berechnet worden, dass sie äquivalent zu einer erwünschten Laufzeit für den Teilprozess ist. Eine Berechnung der Anzahl von Einheiten zur Verarbeitung, oder die "Gewichtung" des Teilprozesses, basiert auf Durchsatzanforderungen relativ zu den anderen Teilprozessen und möglicherweise auf Latenzbetrachtungen. Alternativ dazu könnte ein Takt feiner Granularität zum Steuern der Teilprozess- Ablaufsteuerung verwendet werden, und zwar auf Kosten eines Taktunterbrechungs-Verarbeitungszusatzes. Der Ablaufsteuerungsmechanismus hat drei Grundkomponenten: eine Gruppe von vordefinierten Verarbeitungs-Teilprozessen, einen Teilprozess-Postierungsmechanismus, der bestimmt, welche Arbeit durchzuführen ist, und die Arbeit zu dem geeigneten Teilprozess oder zu den geeigneten Teilprozessen "postiert", und eine Kernteilprozess-Ablaufsteuerung, die bestimmt, welcher Teilprozess als nächstes einen Zugriff zu Verarbeitungsbetriebsmitteln erhalten wird.
- Der Teilprozess-Ablaufsteuerungsmechanismus ist diagrammäßig in den Fig. 2, 2A und 2B gezeigt. Wie es in Fig. 2 gezeigt ist, ist der Mechanismus in einen Echtzeitbereich 40 und einen Bereich 42 für allgemeine Zwecke unterteilt. Der Echtzeitbereich enthält eine Gruppe von Echtzeitverarbeitungs-Teilprozessen 44, von welchen jeder eine begrenzte Menge an Verarbeitung für eine bestimmte Aufgabe durchführt, wie beispielsweise ein Verarbeiten von Empfangspaketen zwischen einer Schicht und einer anderen. Jeder Echtzeitteilprozess 44 ist für die Periode nicht unterbrechbar, in der er arbeitet, und seine Betriebsperiode wird dadurch vorbestimmt, dass zugelassen wird, dass nur eine ausgewählte Anzahl von Einheiten verarbeitet wird. Beispielsweise kann beim Verarbeiten von Empfangspaketen ein Teilprozess darauf beschränkt sein, eine ausgewählte Anzahl von Paketen zu verarbeiten, bevor er eine Steuerung zu einer Kernteilprozess-Ablaufsteuerung 46 übergibt.
- Innerhalb des Echtzeitbereichs gibt es auch einen Echtzeitteilprozess- Postierungsmechanismus 48, dessen Besonderheiten nachfolgend weiter beschrieben werden. Die Funktion des Postierungsmechanismus 48 besteht im Bestimmen, ob irgendeine Arbeit durch die verschiedenen Teilprozesse durchgeführt werden muss, und im "Postieren" der Arbeit zu den geeigneten Teilprozessen. Eine Art, dies durchzuführen, besteht für den Postiermechanismus 48 im Setzen von Echtzeitteilprozess-Flags 50, die dazu verwendet werden, zu bestimmen, ob die Teilprozesse 44 ausgeführt werden sollten oder nicht.
- Fig. 2A stellt allgemein die durch einen Echtzeitteilprozess durchgeführten Schritte dar. Wie es im Block 52 gezeigt ist, wird der Teilprozess ausgeführt, um eine vorausgewählte maximale Anzahl von Einheiten zu verarbeiten, wie beispielsweise Pakete von Daten. Dann wird, wie es im Block 54 gezeigt ist, eine Steuerung zur Kernteilprozess-Ablaufsteuerung 46 übergeben. Wenn einer der Teilprozesse 44 eine Ausführung beendet, weil er die erforderliche maximale Anzahl von Einheiten verarbeitet hat, setzt der Teilprozess sein eigenes Teilprozess-Flag 50, um sicherzustellen, dass ein Rücksprung durchgeführt wird, um eine Verarbeitung bei diesem Teilprozess bei der nächsten Round-Robin-Ablaufsteuerungsauswahl dieses Teilprozesses fortzuführen. Wenn eine Verarbeitung im Teilprozess zu einer Beendigung läuft, und nicht deshalb, weil die maximale Anzahl von Einheiten verarbeitet worden ist, wird das Teilprozess-Flag nicht gesetzt, und die Teilprozess- Ablaufsteuerung überträgt Verarbeitungsbetriebsmittel zu einem anderen Teilprozess.
- Die Kernteilprozess-Ablaufsteuerung 46 ist eine spezielle Aufgabe, zu welcher eine Steuerung am Ende eines jeweiligen verarbeitenden Teilprozesses übertragen wird. Die Ablaufsteuerung ist einfach eine Round-Robin-Auswahlvorrichtung mit einer Kenntnis über alle Verarbeitungs-Teilprozesse und einem Zugriff auf die Echtzeitteilprozess-Flags 50. Wenn ein Verarbeitungs-Teilprozess beendet ist, wählt die Ablaufsteuerung 46 den nächsten in einer Reihe aus, der ein Flag gesetzt hat, um anzuzeigen, dass eine Verarbeitung benötigt wird. Fig. 5 zeigt die Grundschritte, die durch die Kernteilprozess-Ablaufsteuerung 46 durchgeführt werden. Nach einem Rücksprung von einem beendeten Verarbeitungs-Teilprozess, der bei 56 gezeigt ist, wählt die Ablaufsteuerung 46 den nächsten Teilprozess aus, der laufen muss (Block 58), und übergibt eine Steuerung zum nächsten Teilprozess (Block 60). Die Ablaufsteuerung 46 enthält wenigstens einen Zeitschlitz in ihrem Round-Robin-System für den Bereich 42 für allgemeine Zwecke.
- Der Echtzeitbereich 40 enthält Teilprozesse 44, die an einem Empfangen und einem Senden von Paketen beteiligt sind, und einige Datenserveraufgaben, wie beispielsweise ein Verarbeiten von Plattenspeicherzugriffsanfragen, die erfüllt werden können, ohne auf einen Zugriff auf die Platte 30 selbst zu warten. Dies nimmt an, dass die Platte 30 einen zugehörigen Cachespeicher (nicht gezeigt) hat, in welchem häufig verwendete Datensegmente von der Platte gespeichert sind. In vielen Fällen können Anfragen zum Lesen von Plattendaten durch Lesen von Daten aus dem Plattencache erfüllt werden. Gleichermaßen kann ein Cachespeicher für Plattenschreibanfragen verwendet werden, und viele Anfragen zum Speichern von Daten auf der Platte können durch Schreiben zum Cachespeicher erfüllt werden; dann erfolgt ein späteres Schreiben des Cachespeichers zur Platte, wenn Zeit verfügbar ist. Somit können irgendwelche Plattenlese- und -schreiboperationen, die nur bei einem Cachespeicher beteiligt sind, als Echtzeitteilprozesse enthalten sein, da sie relativ wenig Zeit zum Ausführen dauern. Datenserverfunktionen, die einen Plattenzugriff erfordern, um Daten zu lesen, die nicht bereits in einem gelesenen Cachespeicher sind, oder um Daten zur Platte von einem Schreib-Cachespeicher zu schreiben, werden im Bereich 42 für allgemeine Zwecke durchgeführt, der Aktivitäten enthält, die im allgemeinen in bezug auf die Zeit "ungebunden" sind, die sie zum Ausführen dauern.
- Für eine Gerechtigkeit einer Betriebsmittelzuteilung ist dem Bereich 42 für allgemeine Zwecke wenigstens ein Zeitschlitz in dem Round-Robin-Zuteilungsschema zugeteilt, das durch die Kernteilprozess-Ablaufsteuerung 46 verwendet wird. Der Bereich 42 für allgemeine Zwecke ist derart gezeigt, dass er einen einzelnen Teilprozess 62 hat, aber es wird verstanden werden, dass es mehrere Teilprozesse für allgemeine Zwecke geben kann und dass es sein kann, dass der Bereich für allgemeine Zwecke seine eigene Ablaufsteuerung enthalten muss, um eine Verarbeitungszeit zwischen diesen mehreren Teilprozessen zuzuteilen.
- Der Teilprozess 62 für allgemeine Zwecke für eine vorausgewählte minimale Zeit ausgeführt, wie es im Block 64 angezeigt ist, und übergibt dann eine Steuerung zur Kern-Ablaufsteuerung 46, wie es im Block 66 angezeigt ist. Wenn der Teilprozess 62 für allgemeine Zwecke initiiert wird, werden die aktuellen minimalen Anforderungen aller Aktivitäten des Bereichs für allgemeine Zwecke betrachtet, und die minimale Teilprozess-Ausführungszeit wird basierend auf diesen Anforderungen berechnet. Nach der minimalen Ausführungszeit kann der Teilprozess 62 für allgemeine Zwecke damit fortfahren zu laufen, kann aber unterbrochen werden, wenn irgendeine Arbeit für einen Echtzeitverarbeitungs-Teilprozess ankommt. Der Teilprozess 62 für den Bereich für allgemeine Zwecke kann seine minimale Ausführungszeit durch eine Anzahl von verarbeiteten Einheiten bestimmt haben, oder kann eine Zeitgeberunterbrechung verwenden, um seine minimale Ausführungszeit zu beenden. Nachdem der Teilprozess 62 für allgemeine Zwecke in seine unterbrechbare Stufe eintritt, kann eine Unterbrechung mittels einer Hardware- Unterbrechung erfolgen, oder einer periodischen Zeitgeberunterbrechung, die prüft, um zu bestimmen, ob irgendwelche Echtzeitaufgaben anhängig sind, oder mittels eines Abrufens, das vom Bereich 42 für allgemeine Zwecke für irgendwelche Echtzeitaufgaben initiiert wird.
- Der Echtzeit-Postierungsmechanismus 48 kann eine von zwei Formen annehmen: eine Abruftechnik oder durch eine beschränkte Verwendung von Unterbrechungen. Der Abrufansatz erfordert, dass ein separater Echtzeitteilprozess verwendet wird, um alle Stationsschnittstellen für eine durch die Verarbeitungs-Teilprozesse 44 durchzuführende Arbeit zu prüfen. Dem Abrufteilprozess kann eine spezielle Priorität in der Kernteilprozess-Ablaufsteuerung 46 zugeteilt sein. Der Ansatz ist in Fig. 3 gezeigt und enthält die Schritte zum Abrufen aller Schnittstellen für eine durch die Echtzeitteilprozesse durchzuführende Arbeit, wie es in einem Block 70 gezeigt ist, und dann zum Postieren irgendeiner Arbeit zu den Teilprozessen durch Setzen geeigneter Echtzeitteilprozess-Flags 50, wie es in einem Block 72 gezeigt ist. Wenn der Postierungsmechanismus ein Verarbeitungsteilprozess ist (und nicht ein bestimmter Prozessor), dann übergibt der Mechanismus eine Steuerung zur Teilprozess-Ablaufsteuerung 46, wie es in einem Block 74 gezeigt ist. Ein bestimmter Prozessor, der die Abrufaufgabe durchführt, kann lediglich eine Schleifenbildung durch die Schritte halten, wie es durch die gestrichelte Linie 76 gezeigt ist.
- Dieser Abrufansatz ist oft geeignet, wenn es eine große Menge von Verarbeitungsbetriebsmitteln gibt oder wenn ein separater Prozessor zur Abrufaufgabe bestimmt werden kann. In einem Einzelprozessorsystem mit beschränkteren Betriebsmitteln kann eine Verwendung eines Abrufteilprozesses zum Postieren von Arbeit zu den Echtzeitverarbeitungs-Teilprozessen eine Latenz beim Empfang einer Anfrage einführen, und zwar insbesondere dann, wenn es viele Echtzeitelemente gibt, die abzufragen sind, und wenn der Bereich für allgemeine Zwecke aktiv ist. Die Latenz kann durch öfteres Abrufen (durch Zuteilen einer höheren Priorität in der Teilprozess-Ablaufsteuerung zum Abrufteilprozess) reduziert werden, aber dies erhöht auch eine Zusatznutzung der Verarbeitungsbetriebsmittel.
- Eine attraktivere Technik einer Echtzeitteilprozess-Postierung wird gegenwärtig bevorzugt, und diese besteht im vernünftigen Verwenden von Unterbrechungen. Jede Echtzeitunterbrechung führt nur die minimale Aktion durch, die zum Erkennen der Unterbrechung und zum Postieren der durchzuführenden Arbeit zu einem geeigneten Echtzeitteilprozess nötig ist, wie es in einem Block 40 angezeigt ist (Fig. 4). Dann bringt die Unterbrechungsdienstroutine eine Steuerung zur unterbrochenen Verarbeitung zurück, wie es in einem Block 82 angezeigt ist. Eine Verwendung einer Unterbrechung zum Aufzeichnen kritischer Echtzeitereignisse, wie beispielsweise des Empfangs eines Pakets, hält eine Latenz niedrig, da es keine Abrufverzögerung gibt. Da diese Unterbrechungsdienstroutinen minimale Aktionen durchführen, haben wir nicht viel an Kontext (d. h. Register), der zu sichern und wiederherzustellen ist. Daher hat der Kontext-Umschaltzusatz einen minimalen Einfluss auf eine Latenz. Wenn einmal die Unterbrechung erkannt wird, fährt eine Verarbeitung auf eine normale Weise unter Verwendung des Schemas von Verarbeitungs-Teilprozessen fort, die durch die Kernablaufsteuerung gesteuert werden.
- Die Ausführungszeit oder "Gewichtung", die jedem Echtzeitteilprozess zugeteilt ist, und zwar in bezug auf die Anzahl von verarbeiteten Einheiten, hängt von zwei Faktoren ab. Der erste Faktor besteht in den Durchsatzanforderungen für den Echtzeitverarbeitungs-Teilprozess. Beispielsweise kann ein Echtzeitverarbeitungs- Teilprozess, der eine Schnittstelle zu einer Verbindung höherer Bandbreite bildet, wie beispielsweise zum FDDI-Netzwerk, eine größere Gewichtung als ein Echtzeitteilprozess haben, der eine Schnittstelle zur einer Verbindung mit niedrigerer Geschwindigkeit bildet, wie beispielsweise dem Ethernet. Der zweite Faktor, der die Auswahl von Gewichtungen des Echtzeitteilprozesses beeinflusst, besteht in der Latenzanforderung der Teilprozesse. Ein Berücksichtigen dieses zweiten Faktors ist bei der gegenwärtigen Entwicklungsstufe exklusiver. Es ist klar, dass eine Ablaufsteuerung für eine letzte Frist für die verschiedenen Teilprozesse eine Rolle bei der gesamten Ablaufsteuerung spielen sollte, aber gegenwärtig ist die Auswahl von Teilprozessgewichtungen zum Optimieren eines komplexen Systems noch großenteils eine Sache einer intuitiven Einstellung dieser Werte. Die folgenden Absätze diskutieren einige spezifische Beispiele dafür, wie Gewichtungen für Echtzeitteilprozesse zu berechnen sind.
- Wenn die Teilprozesse definiert werden können, dass sie erwünschte Durchsätze haben, und eine Latenz nicht berücksichtigt wird, können die Teilprozessgewichtungen derart berechnet werden, dass sie proportional zu den Durchsätzen sind. Das bedeutet, dass die Gewichtung für einen Teilprozess i derart berechnet wird, dass sie proportional zum erwünschten Durchsatz des Teilprozesses i geteilt durch die Summe der erwünschten Durchsätze aller Echtzeitteilprozesse ist. Der erwünschte Durchsatz kann auf irgendeinen nominalen Durchsatz normalisiert werden, wie beispielsweise denjenigen für die langsamste Netzwerkverbindung. Beispielsweise dann, wenn es drei Teilprozesse gibt (für eine Ethernettreiber/Protokoll-Verarbeitung, eine FDDI-Verarbeitung und eine Plattenuntersystemverarbeitung) mit relativen Durchsätzen von 1, 10 und 5, können die Gewichtungen jeweils als 1/16, 10/16 und 5/16 gewählt werden. Wenn die Ablaufsteuerung 16 Zeitschlitze in einem vollständigen Zyklus ihres Betriebs bzw. ihrer Operation hat, werden die Echtzeitteilprozesse jeweils 1/10 und fünf Zeitschlitzen zugeteilt. Wenn die Verarbeitungskapazität des gesamten Systems bekannt ist, wie beispielsweise in Paketen pro Sekunde, dann kann auch die Anzahl von Paketen, die pro Einheitszeit in jedem Teilprozess verarbeitet werden, berechnet werden. Wenn die Systemkapazität C Pakete/Sekunde ist, können die Gewichtungen proportional als C*1/16, C*10/16 und C*5/16 gewählt werden.
- Wenn eine Protokollverarbeitung als gemeinsamer Teilprozess für sowohl Ethernet als auch FDDI durchgeführt wird, würde dies einen vierten Teilprozess zum Beispiel hinzufügen. Unter der Annahme, dass der Protokollverarbeitungs-Teilprozess einen relativen Durchsatz von 11 Einheiten eines Durchsatzes hat, der durch Ethernet und FDDI gemeinsam erzeugt wird, sind die Gewichtungen der vier Teilprozesse 1/27, 10/27, 5/27 und 11/27.
- Beim Fortfahren mit diesem Beispiel ist angenommen, dass es eine Notwendigkeit zum Erfüllen von "weichen" Echtzeitverarbeitungsanforderungen (in bezug auf ein Erfüllen einer Endfrist zum Ausführen einer Aufgabe) gibt. Und zwar insbesondere dann, wenn angenommen ist, dass es eine ausreichende Pufferung (sagen wir 100 Puffer) zum Vermeiden eines exzessiven Fallenlassens von Paketen aufgrund dessen gibt, dass die Puffer gefüllt sind. Weiterhin ist beim Beispiel angenommen, dass es für den Ethernetverkehr eine weiche Frist von x Zeiteinheiten gibt, vor welcher ein ankommendes Paket bedient werden muss. Dann kann für ein ankommendes Paket vom Ethernet die Latenz im schlechtesten Fall berechnet werden. Wenn ein erstes Paket empfangen wird und die Puffer nicht belegt, beträgt die Latenz für das Paket 27 Zeitschlitze. Der schlechteste Fall für eine Latenz tritt dann auf, wenn ein Paket von Interesse den 100-ten Puffer belegt, und die Latenz beträgt 27 · 100 Schlitze. Wenn diese Latenz zu hoch ist, kann eine von zwei Entwurfsänderungen durchgeführt werden: (a) ein Reduzieren des Ausmaßes an Pufferung für Ethernet-Pakete, so dass dann, wenn die garantierte Latenz für den schlechtesten Fall nicht erfüllt werden kann, das Paket fallengelassen wird, oder (b) ein Erhöhen der relativen Gewichtung für eine Ethernet-Verarbeitung verglichen mit den Gewichtungen der anderen Teilprozesse. Die letztere Änderung kann durch Verarbeiten von mehreren Paketen für jede Zeit bewirkt werden, zu welcher der Teilprozess aufgerufen wird, oder dann, wenn man an einer feineren Granularität für die Ansprechzeit interessiert ist, durch Verteilen der Ethernet- Teilprozessablaufsteuerung über mehrere Stellen in der Round-Robin- Ablaufsteuerung der Teilprozess-Ablaufsteuerung.
- Das vorangehende Beispiel hat der Einfachheit halber ein Berücksichtigen des Teilprozesses für allgemeine Zwecke weggelassen, welcher einen zusätzlichen Zeitschlitz in der Round-Robin-Ablaufsteuerung der Teilprozess-Ablaufsteuerung belegt.
- Bis zu einem gewissen Ausmaß können Latenzausgaben zum Bestimmen der geeigneten Teilprozessgewichtungen verwendet werden. Beispielsweise könnte dann, wenn es keine Latenzbeschränkungen von Belang gibt und das System eine Menge an Pufferung in den niedrigeren Schichten zur Verfügung stellt, der Entwurf alle Arbeit von mehreren Schichten, wie beispielsweise der Datenverbindungsschicht, der Netzwerkschicht und möglicherweise der Transportschicht, in einen Echtzeitverarbeitungs-Teilprozess verlegen. Dies würde das Ausmaß eines Kontextschaltens minimieren, das zum Verarbeiten eines einzelnen Pakets nötig ist. Andererseits sollte es dann, wenn eine Latenz von Belang ist oder wenn ein Paketverlust ein signifikanter Punkt ist, das Ziel sein, die Arbeit zum Verarbeiten eines Pakets in mehrere Echtzeitteilprozesse aufgeteilt zu haben. Die Arbeit zum Minimieren eines Paketverlusts kann in den ersten Echtzeitteilprozess verlegt werden, dem eine Gewichtung von mehreren Arbeitseinheiten zugeteilt ist. Jede Arbeitseinheit ist eine geringe Menge und beeinflusst eine Latenz nicht, bewegt aber das Paket in ein Gebiet mit einem relativ großen Ausmaß an Pufferung. Eine Verarbeitung in höheren Schichten wird dann in einem anderen Echtzeitteilprozess durchgeführt. In jedem Fall ist die Aufteilung von Arbeit in mehrere Teilprozesse und die Auswahl von Gewichtungen (von minimalen nicht unterbrechbaren Verarbeitungszeiten) für die Teilprozesse ein Entwurfsprozess, der stark von der verfügbaren Hardware, insbesondere einer Pufferung, und von der Art des Netzwerks und den Entwurfszielen, wie beispielsweise einem Minimieren einer Latenz und eines Paketverlusts und einer Gerechtigkeit einer Verarbeitung verschiedener Aufgaben, abhängt.
- Ungeachtet dessen, wie diese Entwurfsparameter ausgewählt werden, ist es ein wichtiger Aspekt der Erfindung, dass die Echtzeitteilprozesse allgemein nicht zu einer "Beendigung" laufen, was ungleich einem auf eine Unterbrechung basierenden System ist. Im Zusammenhang mit dieser Erfindung bedeutet ein Nichtlaufen zu einer "Beendigung" entweder (a) im Fall einer Verarbeitung einer Liste oder einer Warteschlange von Elementen ein Nichtfortführen, eine Steuerung zu halten, bis die gesamte Warteschlange geleert ist, oder (b) im Fall einer einzelnen langen Aufgabe, ein Nichtbeenden der Aufgabe vor einem Übergeben einer Steuerung. Weil die Echtzeitteilprozesse auf diese Weise beschränkt sind, wird die Möglichkeit eines Zustands eines Empfangens einer Direktübertragungsverriegelung praktisch eliminiert. Als Folge davon hat auch eine Verkümmerung von Sendeoperationen eine sehr niedrige Wahrscheinlichkeit. Und bei geeigneten Auswahlen von Echtzeitteilprozessen und ihren Gewichtungen können ein Paketverlust und eine Latenz auf einem akzeptierbar niedrigen Pegel gehalten werden.
- Der bei dieser Beschreibung als Illustration verwendete Datenserver erlegt zusätzliche Überlegungen auf. Der Datenserver kann noch Plattenunterbrechungen beim Verarbeiten seiner Plattenlese- und -schreibaktivitäten bei einer Anstrengung zum Garantieren einer niedrigen Latenz für die Datenserverfunktionen verwenden. Jedoch werden alle Platten-Eingabe/Ausgabe-Operationen mittels Echtzeitverarbeitungs-Teilprozessen oder Verarbeitungs-Teilprozessen für allgemeine Zwecke initiiert, und es ist möglich, den Plattenoperationen Anforderungen aufzuerlegen, wie beispielsweise ein Beschränken der Rate von Unterbrechungen von der Platte. Die Teilprozesse, die den Ablauf einer Plattenaktivität steuern, haben eine Kenntnis über die Datenserverfunktion, die zum Steuern der Rate von Unterbrechungen und zum Sicherstellen, dass die Kriterien der Gerechtigkeit für einen Zugriff auf Verarbeitungsbetriebsmittel erfüllt werden, verwendet werden kann.
- Die Verwendung von Unterbrechungen zum Verarbeiten einer Platten- Eingabe/Ausgabe (I/O) lässt die Verwendung von herkömmlichen Mechanismen zum Verarbeiten einer Platten-I/O zu, was eine niedrige Latenz für ein Reagieren auf eine Unterbrechung erfordert. Es kann sein, dass wir nicht die Zeit haben, wie sie durch eine Round-Robin-Ablaufsteuerung zum Verarbeiten einer Plattenunterbrechung erforderlich ist. Somit müssen wir dann, wenn wir nicht möchten, dass das Plattenuntersystem zu viele Verarbeitungsbetriebsmittel nimmt und somit unsere feinkörnige Steuerung zu Fall bringt, die Rate von Unterbrechungen von der Platte steuern. Dies wird erreicht, wenn alle Platten-I/Os von einem Echtzeitteilprozess ausgegeben werden, wie beispielsweise einer Verarbeitung eines empfangenen Pakets (oder von einer Gruppe von Echtzeitteilprozessen). Diese Teilprozesse können dann ein Konto darüber unterhalten, wie viele Platten-I/Os sie ausgegeben haben, und die Zeit berücksichtigen, die in der Plattenunterbrechungs- Dienstroutine verbraucht ist, wenn die Gewichtung berücksichtigt wird, die sie dem Echtzeitteilprozess zuordnen. Wenn die Platten-I/O auf eine ungebetene Weise ausgegeben wurde, werden wir die Verarbeitungszyklen nicht berücksichtigen können, die für diese Arbeit aufgewendet sind, und somit wären unsere Gewichtungszuordnungen (aufgrund dessen, dass einige der Verarbeitungszyklen nicht berücksichtigt sind) falsch. Ebenso kann es sein, dass eine Platten-I/O aufgrund von Zeitbeschränkungen (Deadlines bzw. Fristen) nicht in den Bereich für allgemeine Zwecke gebracht wird.
- Eine Variante des oben beschriebenen Teilprozess-Verarbeitungssystems verwendet ein anderes Schema zum Aufrufen der Teilprozesse. Die Verwendung eines separaten Teilprozesses für jede einzelne Aktivität ist nur dann sehr attraktiv, wenn der Zusatz zum Aufrufen und zum Steuern des Ablaufs eines Teilprozesses relativ gering ist. Jedes Schalten zu einem anderen Teilprozess enthält ein Schalten beim Verarbeiten eines Kontextes und einen zugehörigen Zusatz beim Aufrufen des neuen Teilprozesses. Bei einem alternativen Ausführungsbeispiel der Erfindung werden Teilprozesse keiner Ablaufsteuerung unterzogen, sondern werden von Echtzeit-Dienstroutinen aufgerufen. Die Dienstroutinen müssen strenge Regeln beachten, um sich auf eine gesteuerte Weise zu verhalten und um den nötigen Kontext für einen neu aufgerufenen Teilprozess zu bilden. Beispielsweise beginnt ein Teilprozess zum Verarbeiten von empfangenen Paketen typischerweise durch Empfangen einer Anzahl von Paketen und beendet dann ihre Verarbeitung und gibt sie aus, damit sie durch eine andere Routine verwendet werden. Somit muss die Routine keinerlei Kontext entdecken und ihn bei einer Beendigung auch nicht sichern. Im wesentlichen werden die Teilprozesse durch prozedurspezifische Aufrufroutinen aufgerufen, um ein zeitaufwendiges Kontextschalten zu vermeiden, das alle Kontextelemente enthält.
- Es wird aus dem Vorangehenden erkannt werden, dass die vorliegende Erfindung einen signifikanten Fortschritt auf dem Gebiet von Ablaufsteuerungsmechanismen für Prozessoren darstellt, die in Kommunikations-Netzwerkstationen verwendet werden. Eine Verwendung der Erfindung sorgt für eine verbesserte Leistungsfähigkeit des Systems unter einer normalen Belastung und für eine signifikant überlegene Leistungsfähigkeit unter Überlastbedingungen. Insbesondere eliminiert der Ablaufsteuerungsmechanismus der Erfindung in der Praxis Zustände eines Empfangens von Direktübertragungsverriegelungen und eine Verkümmerung von Sendungen. Darüber hinaus kann die Technik für eine gegebene Systemkonfiguration und Belastungsbedingungen optimiert werden, um eine Latenz und einen Paketverlust bei einem Empfang zu minimieren. Es wird auch erkannt werden, dass, obwohl ein Ausführungsbeispiel der Erfindung zu Darstellungszwecken detailliert beschrieben worden ist, verschiedene Modifikationen durchgeführt werden können.
Claims (17)
1. Computerimplementiertes Verfahren zum Steuern des Ablaufs mehrerer
Verarbeitungsaufgaben in einer Netzwerk-Kommunikationsstation, wobei das
Verfahren die folgenden Schritte aufweist:
Bilden einer Vielzahl von Verarbeitungs-Teilprozessen (44), von
welchen jeder strukturiert ist, um eine Verarbeitung von Aufgaben für
eine begrenzte Zeit auszuführen, bevor er einer Unterbrechung durch
einen anderen Verarbeitungs-Teilprozeß unterzogen wird, wobei jeder
Verarbeitungs-Teilprozeß eine Vielzahl von Teilprozeßeinheiten hat;
wiederholtes Bestimmen (46), wann eine Arbeit der
Verarbeitungsaufgaben durchzuführen ist;
Postieren (48) irgendeiner bestimmten Arbeit der
durchzuführenden Verarbeitungsaufgaben zu geeigneten der Vielzahl von
Verarbeitungs-Teilprozessen;
Auswählen eines Verarbeitungs-Teilprozesses, der eine
durchzuführende Arbeit hat;
Bestimmen einer begrenzten Zeit, die zum Beenden einer
ausgewählten Anzahl von ausgeführten Einheiten in verarbeiteten Aufgaben
des ausgewählten Verarbeitungs-Teilprozesses erforderlich ist;
Ausführen (52) des ausgewählten Verarbeitungs-Teilprozesses für
die begrenzte Zeit; und
Wiederholen des Auswählens (54) und des Ausführens für andere
Verarbeitungs-Teilprozesse.
2. Verfahren nach Anspruch 1, wobei der Schritt zum wiederholten Bestimmen,
wann eine Arbeit der Verarbeitungsaufgaben durchzuführen ist, ein zyklisches
Abfragen (70) aller Verarbeitungsaufgaben enthält.
3. Verfahren nach Anspruch 1, wobei der Schritt zum wiederholten Bestimmen,
wann eine Arbeit der Verarbeitungsaufgaben durchzuführen ist, folgendes
enthält:
Ermöglichen bzw. Freigeben von Unterbrechungen (80) für
Aufgaben höherer Priorität, wobei die Unterbrechungen eine Ausführung des
ausgewählten Verarbeitungs-Teilprozesses temporär unterbrechen,
wobei die Unterbrechungen anzeigen, daß eine Arbeit der
Verarbeitungsaufgaben durchzuführen ist; und
Bedienen jeder der Unterbrechungen (82) durch kurzzeitiges
Unterbrechen einer Ausführung des ausgewählten Verarbeitungs-
Teilprozesses und durch Ausführen eines zu jeder der Unterbrechung
gehörenden Teilprozesses.
4. Verfahren nach Anspruch 1, wobei der Schritt zum Bilden einer Vielzahl von
Verarbeitungs-Teilprozessen folgendes enthält:
Bilden wenigstens eines Echtzeit-Verarbeitungs-Teilprozesses zur
Ausführung von zeitkritischen Funktionen, wobei jeder Echtzeit-
Verarbeitungs-Teilprozeß strukturiert ist, um für eine Zeitperiode
auszuführen, die durch Zählen einer maximalen Anzahl von ausgeführten
Einheiten des Echtzeit-Verarbeitungs-Teilprozesses bestimmt ist; und
Bilden wenigstens eines Verarbeitungs-Teilprozesses für
allgemeine Zwecke, wobei der Verarbeitungs-Teilprozeß für allgemeine Zwecke
strukturiert ist, um für eine vorausgewählte minimale Zeit auszuführen,
während welcher er durch andere Teilprozesse nicht unterbrechbar ist,
und um darauffolgend in einem unterbrechbaren Mode auszuführen.
5. Verfahren nach Anspruch 1, wobei:
der Schritt zum Auswählen eines Verarbeitungs-Teilprozesses auf
einer Round-Robin-Basis durchgeführt wird; und
der Schritt zum Ausführen des ausgewählten Teilprozesses ein
Schalten des Kontextes einer Verarbeitung vom zuvor ausführenden
Teilprozeß zum ausgewählten Teilprozeß und ein Übertragen einer
Verarbeitungssteuerung zum ausgewählten Teilprozeß enthält.
6. Verfahren nach Anspruch 4, wobei:
der Schritt zum Auswählen eines Verarbeitungs-Teilprozesses ein
Auswählen eines Teilprozesses auf einer Round-Robin-Basis aus den
Echtzeit-Teilprozessen und den Teilprozessen für allgemeine Zwecke,
die eine Arbeit postiert haben, enthält; und
der Schritt zum Ausführen des ausgewählten Teilprozesses ein
Schalten des Kontextes zum Verarbeiten von dem zuvor ausführenden
Teilprozeß zum ausgewählten Teilprozeß und ein Übertragen einer
Verarbeitungssteuerung zum ausgewählten Teilprozeß enthält.
7. Verfahren nach Anspruch 1, wobei der Schritt zum Postieren irgendeiner
bestimmten Arbeit der durchzuführenden Verarbeitungsaufgaben zu geeigneten
Verarbeitungs-Teilprozessen folgendes enthält:
Einstellen eines Postierungs-Flags für jeden Verarbeitungs-
Teilprozeß, der eine durchzuführende Arbeit hat; und wobei
der Schritt zum Auswählen weiterhin ein Auswählen aus Echtzeit-
Teilprozessen und Teilprozessen für allgemeine Zwecke, die
Postierungs-Flags haben, enthält.
8. Computerimplementiertes Verfahren zum Steuern eines Ablaufs von
mehreren Verarbeitungsaufgaben in einer Netzwerk-Kommunikationsstation, wobei
das Verfahren die folgenden Schritte aufweist:
Bilden wenigstens eines Echtzeit-Verarbeitungs-Teilprozesses mit
einer Vielzahl von Teilprozeßeinheiten, wobei der Verarbeitungs-
Teilprozeß strukturiert ist, um für eine ausgewählte maximale
Zeitperiode auszuführen, die durch Zählen einer ausgewählten Anzahl von
ausgeführten Einheiten des Echtzeit-Verarbeitungs-Teilprozesses bestimmt
wird, und wenigstens eines Verarbeitungs-Teilprozesses für allgemeine
Zwecke, der strukturiert ist, um für eine ausgewählte minimale Zeit in
einem nicht unterbrechbaren Mode auszuführen;
wiederholtes Bestimmen, wann eine Arbeit der
Verarbeitungsaufgaben auszuführen ist;
Postieren irgendeiner bestimmten Arbeit der durchzuführenden
Verarbeitungsaufgaben zu geeigneten der Verarbeitungs-Teilprozesse;
Auswählen eines Verarbeitungs-Teilprozesses, der eine
durchzuführende Arbeit hat;
Ausführen des ausgewählten Verarbeitungs-Teilprozesses; und
Wiederholen der Auswahl- und Ausführungsschritte für andere
Verarbeitungs-Teilprozesse.
9. Verfahren nach Anspruch 8, wobei der Schritt zum wiederholten Bestimmen,
wann eine Arbeit der Verarbeitungsaufgaben durchzuführen ist, folgendes
enthält:
Ermöglichen von Unterbrechungen für Aufgaben höherer Priorität,
welche Unterbrechungen eine andere Verarbeitung temporär
unterbrechen; und
Verzögern zeitaufwendiger Unterbrechungsdienstfunktionen zur
Ausführung in Verarbeitungs-Teilprozessen, und welches weiterhin den
folgenden Schritt aufweist:
Begrenzen der Rate, mit welcher Unterbrechungen bedient
werden können, durch temporäres Sperren von Unterbrechungen
von Zeit zu Zeit.
10. Verfahren nach Anspruch 8, wobei:
der wenigstens eine Echtzeit-Verarbeitungs-Teilprozeß zur
Ausführung von zeitkritischen Funktionen ausgewählt wird; und
der wenigstens eine Verarbeitungs-Teilprozeß für allgemeine
Zwecke zur Ausführung von nicht zeitkritischen Funktionen ausgewählt
wird.
11. Verfahren nach Anspruch 8, wobei:
der Schritt zum Auswählen eines Verarbeitungs-Teilprozesses ein
Auswählen eines Teilprozesses auf einer Round-Robin-Basis aus den
Echtzeit-Teilprozessen und den Teilprozessen für allgemeine Zwecke,
die eine Arbeit postiert haben, enthält; und
der Schritt zum Ausführen des ausgewählten Teilprozesses ein
Schalten des Kontextes einer Verarbeitung vom zuvor ausführenden
Teilprozeß zum ausgewählten Teilprozeß und ein Übertragen einer
Verarbeitungssteuerung zum ausgewählten Teilprozeß enthält.
12. Vorrichtung (10) zum Steuern eines Ablaufs mehrerer Verarbeitungsaufgaben
in einer Netzwerk-Kommunikationsstation, wobei die Vorrichtung
gekennzeichnet ist durch:
eine Gruppe von ausführbaren Verarbeitungs-Teilprozessen (44),
die wenigstens einen Echtzeit-Verarbeitungs-Teilprozeß mit einer
Vielzahl von Teilprozeßeinheiten enthalten, wobei der wenigstens eine
Echtzeit-Verarbeitungs-Teilprozeß strukturiert ist, um für eine
ausgewählte maximale Zeitperiode auszuführen, die durch Zählen einer
ausgewählten Anzahl von ausgeführten Einheiten des
Echtzeit-Verarbeitungs-Teilprozesses bestimmt wird, und wenigstens einen Verarbeitungs-Teilprozeß
für allgemeine Zwecke (42), der strukturiert ist, um in
einem nicht unterbrechbaren Mode für eine ausgewählte minimale Zeit
auszuführen;
einen Teilprozeß-Postiermechanismus (48), der wiederholt
bestimmt, wann eine Arbeit der Verarbeitungsaufgaben durch irgendeinen
der Verarbeitungs-Teilprozesse durchzuführen ist, wobei der Teilprozeß-
Postiermechanismus irgendeine bestimmte durchzuführende Arbeit zu
geeigneten der Verarbeitungs-Teilprozesse postiert; und
eine Teilprozeß-Ablaufsteuerung (46), die Verarbeitungs-
Teilprozesse auswählt, die eine durchzuführende Arbeit haben, wobei
die Teilprozeß-Ablaufsteuerung zuläßt, daß ausgewählte Echtzeit-
Verarbeitungs-Teilprozesse für die ausgewählte maximale Zeit
ausführen, und zuläßt, daß der Teilprozeß für allgemeine Zwecke für die
ausgewählte minimale Zeit in einem nicht unterbrechbaren Mode ausführt.
13. Vorrichtung nach Anspruch 12, wobei der Teilprozeß-Postiermechanismus
folgendes enthält:
eine Einrichtung zum zyklischen Abfragen aller
Verarbeitungsaufgaben.
14. Vorrichtung nach Anspruch 12, wobei der Teilprozeß-Postiermechanismus
folgendes enthält:
ein Unterbrechungssystem, das eine Verarbeitung temporär
unterbrechen kann, wenn eine Verarbeitungsaufgabe durchzuführen ist; und
eine Serviceeinrichtung für eine minimale Unterbrechung zum
schnellen Verarbeiten von Unterbrechungen, wobei zeitaufwendige
Unterbrechungsdienstfunktionen für eine Ausführung in Verarbeitungs-
Teilprozessen verzögert werden.
15. Vorrichtung nach Anspruch 12, wobei:
der wenigstens eine Echtzeit-Verarbeitungs-Teilprozeß zur
Ausführung von zeitkritischen Funktionen ausgewählt wird; und
der wenigstens eine Verarbeitungs-Teilprozeß für allgemeine
Zwecke zur Ausführung von nicht zeitkritischen Funktionen ausgewählt
wird.
16. Vorrichtung nach Anspruch 12, wobei die Teilprozeß-Ablaufsteuerung
folgendes enthält:
eine Einrichtung zum Auswählen eines Teilprozesses auf einer
Round-Robin-Basis aus den Echtzeit-Teilprozessen und den
Teilprozessen für allgemeine Zwecke, die eine Arbeit postiert haben; und
eine Einrichtung zum Ausführen des ausgewählten Teilprozesses
durch Schalten des Kontextes zum Verarbeiten vom zuvor ausgeführten
Teilprozeß zum ausgewählten Teilprozeß und zum Übertragen einer
Verarbeitungssteuerung zum ausgewählten Teilprozeß.
17. Vorrichtung nach Anspruch 12, wobei die Einrichtung zum Postieren
irgendeiner bestimmten durchzuführenden Arbeit zu geeigneten Verarbeitungs-
Teilprozessen folgendes enthält:
eine Einrichtung zum Einstellen bzw. Setzen eines Postierungs-
Flags für jeden Verarbeitungs-Teilprozeß, der eine durchzuführende
Arbeit hat.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US3796293A | 1993-03-26 | 1993-03-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69429204D1 DE69429204D1 (de) | 2002-01-10 |
DE69429204T2 true DE69429204T2 (de) | 2002-07-25 |
Family
ID=21897303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69429204T Expired - Fee Related DE69429204T2 (de) | 1993-03-26 | 1994-03-18 | Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk |
Country Status (3)
Country | Link |
---|---|
US (1) | US6085215A (de) |
EP (1) | EP0617361B1 (de) |
DE (1) | DE69429204T2 (de) |
Families Citing this family (112)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69525556T2 (de) * | 1994-03-21 | 2002-09-12 | Avid Technology Inc | Gerät und Verfahren ausgeführt auf einem Rechner für Echtzeit Multimedia Datenübertragung in einer verteilten Rechneranordnung |
EP0732651B1 (de) * | 1995-03-15 | 2001-09-26 | Koninklijke Philips Electronics N.V. | Datenverarbeitungssystem zur Ausführung von Aufgaben verschiedener Prioritäten und dieses System enthaltendes Modem |
US6122514A (en) * | 1997-01-03 | 2000-09-19 | Cellport Systems, Inc. | Communications channel selection |
FR2759177B1 (fr) * | 1997-01-31 | 1999-04-23 | Sextant Avionique | Procede et dispositif de traitement de plusieurs applications techniques avec pour chacune d'elles la surete qui lui est propre |
US6055619A (en) * | 1997-02-07 | 2000-04-25 | Cirrus Logic, Inc. | Circuits, system, and methods for processing multiple data streams |
US5949994A (en) * | 1997-02-12 | 1999-09-07 | The Dow Chemical Company | Dedicated context-cycling computer with timed context |
US6212544B1 (en) | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
US6567839B1 (en) | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US6697935B1 (en) | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
US6490609B1 (en) * | 1998-01-09 | 2002-12-03 | Sun Microsystems, Inc. | Method, apparatus and computer program product for invoking a thread-unaware routine that uses an operation-dependent temporary data structure |
US6457064B1 (en) * | 1998-04-27 | 2002-09-24 | Sun Microsystems, Inc. | Method and apparatus for detecting input directed to a thread in a multi-threaded process |
GB2336919A (en) * | 1998-04-30 | 1999-11-03 | Ibm | Pre-emptive threading in a virtual machine |
JP2000010800A (ja) | 1998-06-19 | 2000-01-14 | Toshiba Corp | 計算機システムに於けるスレッド制御装置、及び同システムに於けるスレッド制御方法 |
JP3382176B2 (ja) * | 1999-03-26 | 2003-03-04 | 株式会社東芝 | 要求処理方法および要求処理装置 |
US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
FR2795537B1 (fr) * | 1999-06-24 | 2001-09-21 | Cit Alcatel | Procede d'execution d'une tache en temps reel par un processeur de traitement numerique du signal |
US6633942B1 (en) * | 1999-08-12 | 2003-10-14 | Rockwell Automation Technologies, Inc. | Distributed real-time operating system providing integrated interrupt management |
US6983350B1 (en) | 1999-08-31 | 2006-01-03 | Intel Corporation | SDRAM controller for parallel processor architecture |
US6427196B1 (en) * | 1999-08-31 | 2002-07-30 | Intel Corporation | SRAM controller for parallel processor architecture including address and command queue and arbiter |
US6668317B1 (en) * | 1999-08-31 | 2003-12-23 | Intel Corporation | Microengine for parallel processor architecture |
WO2001016702A1 (en) | 1999-09-01 | 2001-03-08 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
US6754690B2 (en) * | 1999-09-16 | 2004-06-22 | Honeywell, Inc. | Method for time partitioned application scheduling in a computer operating system |
US6687729B1 (en) * | 1999-12-20 | 2004-02-03 | Unisys Corporation | System and method for providing a pool of reusable threads for performing queued items of work |
EP1247195A4 (de) * | 1999-12-22 | 2005-01-05 | Ubicom Inc | System und verfahren zur auf befehlsebene arbeitenden multithreading in einem eingebetteten prozessor mit nullzeitkontextumschaltung |
US6532509B1 (en) | 1999-12-22 | 2003-03-11 | Intel Corporation | Arbitrating command requests in a parallel multi-threaded processing system |
US7308686B1 (en) | 1999-12-22 | 2007-12-11 | Ubicom Inc. | Software input/output using hard real time threads |
US7120783B2 (en) * | 1999-12-22 | 2006-10-10 | Ubicom, Inc. | System and method for reading and writing a thread state in a multithreaded central processing unit |
US6694380B1 (en) | 1999-12-27 | 2004-02-17 | Intel Corporation | Mapping requests from a processing unit that uses memory-mapped input-output space |
US6307789B1 (en) * | 1999-12-28 | 2001-10-23 | Intel Corporation | Scratchpad memory |
US6625654B1 (en) * | 1999-12-28 | 2003-09-23 | Intel Corporation | Thread signaling in multi-threaded network processor |
US6631430B1 (en) * | 1999-12-28 | 2003-10-07 | Intel Corporation | Optimizations to receive packet status from fifo bus |
US6661794B1 (en) | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
US6584522B1 (en) * | 1999-12-30 | 2003-06-24 | Intel Corporation | Communication between processors |
US7480706B1 (en) * | 1999-12-30 | 2009-01-20 | Intel Corporation | Multi-threaded round-robin receive for fast network port |
US6952824B1 (en) | 1999-12-30 | 2005-10-04 | Intel Corporation | Multi-threaded sequenced receive for fast network port stream of packets |
US6631462B1 (en) * | 2000-01-05 | 2003-10-07 | Intel Corporation | Memory shared between processing threads |
US6757897B1 (en) * | 2000-02-29 | 2004-06-29 | Cisco Technology, Inc. | Apparatus and methods for scheduling and performing tasks |
US7856633B1 (en) | 2000-03-24 | 2010-12-21 | Intel Corporation | LRU cache replacement for a partitioned set associative cache |
US7010612B1 (en) | 2000-06-22 | 2006-03-07 | Ubicom, Inc. | Universal serializer/deserializer |
US7047396B1 (en) | 2000-06-22 | 2006-05-16 | Ubicom, Inc. | Fixed length memory to memory arithmetic and architecture for a communications embedded processor system |
US6687903B1 (en) * | 2000-06-28 | 2004-02-03 | Emc Corporation | Inhibiting starvation in a multitasking operating system |
DE10039663C2 (de) * | 2000-08-14 | 2002-06-13 | Fraunhofer Ges Forschung | Verfahren und Vorrichtung zur Wiedergabe von Informationen |
US6865579B1 (en) | 2000-08-28 | 2005-03-08 | Sun Microsystems, Inc. | Simplified thread control block design |
US6728722B1 (en) * | 2000-08-28 | 2004-04-27 | Sun Microsystems, Inc. | General data structure for describing logical data spaces |
US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US7051330B1 (en) * | 2000-11-21 | 2006-05-23 | Microsoft Corporation | Generic application server and method of operation therefor |
EP1213648A1 (de) | 2000-12-05 | 2002-06-12 | Infineon Technologies AG | Verfahren zum Koordinieren von Aufgaben in einem GSM-Netzwerk |
FR2818769B1 (fr) | 2000-12-21 | 2004-06-18 | Eads Airbus Sa | Procede et systeme d'exploitation temps reel multitaches |
US6651158B2 (en) * | 2001-06-22 | 2003-11-18 | Intel Corporation | Determination of approaching instruction starvation of threads based on a plurality of conditions |
US20030023655A1 (en) * | 2001-07-26 | 2003-01-30 | Stepan Sokolov | Method and apparatus to facilitate suspending threads in a platform-independent virtual machine |
US20030037091A1 (en) * | 2001-08-09 | 2003-02-20 | Kozo Nishimura | Task scheduling device |
US6868476B2 (en) * | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
DE10160298A1 (de) * | 2001-12-07 | 2003-06-18 | Bosch Gmbh Robert | Verfahren und Vorrichtung zur Verarbeitung von Interrput-Signalen |
EP1324553A3 (de) * | 2001-12-31 | 2006-03-22 | Alcatel Canada Inc. | Verfahren und Vorrichtung zur Planung und Wartung von Ereignissen unter Benutzung einer Kalenderstruktur |
US7895239B2 (en) | 2002-01-04 | 2011-02-22 | Intel Corporation | Queue arrays in network devices |
US6934951B2 (en) * | 2002-01-17 | 2005-08-23 | Intel Corporation | Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section |
US7448036B2 (en) | 2002-05-02 | 2008-11-04 | International Business Machines Corporation | System and method for thread scheduling with weak preemption policy |
US7065596B2 (en) | 2002-09-19 | 2006-06-20 | Intel Corporation | Method and apparatus to resolve instruction starvation |
US20040064580A1 (en) * | 2002-09-30 | 2004-04-01 | Lee Booi Lim | Thread efficiency for a multi-threaded network processor |
US7177913B2 (en) * | 2002-12-05 | 2007-02-13 | Intel Corporation | Method, system, and program for adding operations identifying data packets to structures based on priority levels of the data packets |
US20040117793A1 (en) * | 2002-12-17 | 2004-06-17 | Sun Microsystems, Inc. | Operating system architecture employing synchronous tasks |
US7822950B1 (en) | 2003-01-22 | 2010-10-26 | Ubicom, Inc. | Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls |
JP2006521724A (ja) | 2003-01-28 | 2006-09-21 | セルポート システムズ インコーポレイテッド | セキュア・テレマティクス |
WO2004072834A1 (en) * | 2003-02-14 | 2004-08-26 | Whale Communications Ltd. | System and method for providing conditional access to server-based applications from remote access devices |
US8180943B1 (en) | 2003-03-27 | 2012-05-15 | Nvidia Corporation | Method and apparatus for latency based thread scheduling |
US7926104B1 (en) * | 2003-04-16 | 2011-04-12 | Verizon Corporate Services Group Inc. | Methods and systems for network attack detection and prevention through redirection |
US7000047B2 (en) * | 2003-04-23 | 2006-02-14 | International Business Machines Corporation | Mechanism for effectively handling livelocks in a simultaneous multithreading processor |
US20040216103A1 (en) * | 2003-04-24 | 2004-10-28 | International Business Machines Corporation | Mechanism for detecting and handling a starvation of a thread in a multithreading processor environment |
US7600229B1 (en) * | 2003-09-30 | 2009-10-06 | Emc Corporation | Methods and apparatus for load balancing processing of management information |
WO2005085994A2 (en) * | 2004-02-24 | 2005-09-15 | Koninklijke Philips Electronics N.V. | Multi-tasking data processing system |
US20060075404A1 (en) * | 2004-10-06 | 2006-04-06 | Daniela Rosu | Method and system for scheduling user-level I/O threads |
US7603673B2 (en) * | 2004-10-28 | 2009-10-13 | Intel Corporation | Method and system for reducing context switch times |
US20060150188A1 (en) * | 2004-12-21 | 2006-07-06 | Manuel Roman | Method and apparatus for supporting soft real-time behavior |
US7631130B2 (en) * | 2005-02-04 | 2009-12-08 | Mips Technologies, Inc | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
US7793160B1 (en) | 2005-03-29 | 2010-09-07 | Emc Corporation | Systems and methods for tracing errors |
JP2007026095A (ja) * | 2005-07-15 | 2007-02-01 | Matsushita Electric Ind Co Ltd | 並列演算装置 |
US7971205B2 (en) * | 2005-12-01 | 2011-06-28 | International Business Machines Corporation | Handling of user mode thread using no context switch attribute to designate near interrupt disabled priority status |
KR100848323B1 (ko) * | 2005-12-08 | 2008-07-24 | 한국전자통신연구원 | 임베디드 운영체제 커널의 실시간 성능을 향상시키는 방법 |
US20070168244A1 (en) * | 2006-01-19 | 2007-07-19 | International Business Machines Corporation | Methods and apparatus for coordinating and selecting protocols for resources acquisition from multiple resource managers |
US7444449B2 (en) * | 2006-02-09 | 2008-10-28 | Sony Ericsson Mobile Communications Ab | Method, computer program product and computer system for controlling execution of an interruption routine |
US8881169B2 (en) * | 2007-03-20 | 2014-11-04 | Fujitsu Mobile Communications Limited | Information processing apparatus for monitoring event delivery from plurality of monitoring threads |
US8027293B2 (en) | 2007-07-16 | 2011-09-27 | Cellport Systems, Inc. | Communication channel selection and use |
US9063778B2 (en) * | 2008-01-09 | 2015-06-23 | Microsoft Technology Licensing, Llc | Fair stateless model checking |
US8392924B2 (en) * | 2008-04-03 | 2013-03-05 | Sharp Laboratories Of America, Inc. | Custom scheduling and control of a multifunction printer |
US8102552B2 (en) * | 2008-04-03 | 2012-01-24 | Sharp Laboratories Of America, Inc. | Performance monitoring and control of a multifunction printer |
JP2009258937A (ja) * | 2008-04-16 | 2009-11-05 | Sony Corp | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
US8806180B2 (en) * | 2008-05-01 | 2014-08-12 | Microsoft Corporation | Task execution and context switching in a scheduler |
US8966490B2 (en) * | 2008-06-19 | 2015-02-24 | Freescale Semiconductor, Inc. | System, method and computer program product for scheduling a processing entity task by a scheduler in response to a peripheral task completion indicator |
US20110099552A1 (en) * | 2008-06-19 | 2011-04-28 | Freescale Semiconductor, Inc | System, method and computer program product for scheduling processor entity tasks in a multiple-processing entity system |
US9058206B2 (en) * | 2008-06-19 | 2015-06-16 | Freescale emiconductor, Inc. | System, method and program product for determining execution flow of the scheduler in response to setting a scheduler control variable by the debugger or by a processing entity |
US8572619B2 (en) * | 2010-01-28 | 2013-10-29 | Real Time, Inc. | System and method for integrating software schedulers and hardware interrupts for a deterministic system |
CN103262064A (zh) * | 2010-12-16 | 2013-08-21 | Et国际有限公司 | 分布式计算体系结构 |
US10514713B2 (en) | 2012-09-15 | 2019-12-24 | Ademco Inc. | Mailbox data storage system |
US9122255B2 (en) | 2012-09-15 | 2015-09-01 | Honeywell International Inc. | Remote access gateway configurable control system |
US10992494B2 (en) * | 2012-09-15 | 2021-04-27 | Ademco Inc. | Gateway round-robin system |
US9705962B2 (en) | 2012-09-15 | 2017-07-11 | Honeywell International Inc. | Asynchronous reporting system |
US9348644B2 (en) * | 2014-10-08 | 2016-05-24 | International Business Machines Corporation | Application-level dispatcher control of application-level pseudo threads and operating system threads |
US10348621B2 (en) * | 2014-10-30 | 2019-07-09 | AT&T Intellectual Property I. L. P. | Universal customer premise equipment |
US10257089B2 (en) | 2014-10-30 | 2019-04-09 | At&T Intellectual Property I, L.P. | Distributed customer premises equipment |
CN106354552B (zh) * | 2015-07-17 | 2019-08-06 | 宁波森浦融讯科技有限公司 | 并行计算任务分配方法和装置 |
US10275280B2 (en) | 2016-08-10 | 2019-04-30 | International Business Machines Corporation | Reserving a core of a processor complex for a critical task |
US10248457B2 (en) | 2016-08-10 | 2019-04-02 | International Business Machines Corporation | Providing exclusive use of cache associated with a processing entity of a processor complex to a selected task |
US10248464B2 (en) | 2016-10-24 | 2019-04-02 | International Business Machines Corporation | Providing additional memory and cache for the execution of critical tasks by folding processing units of a processor complex |
US10223164B2 (en) | 2016-10-24 | 2019-03-05 | International Business Machines Corporation | Execution of critical tasks based on the number of available processing entities |
CN110914802A (zh) * | 2017-06-30 | 2020-03-24 | Oppo广东移动通信有限公司 | 应用控制方法、装置、存储介质及电子设备 |
GB201717303D0 (en) * | 2017-10-20 | 2017-12-06 | Graphcore Ltd | Scheduling tasks in a multi-threaded processor |
GB2569098B (en) * | 2017-10-20 | 2020-01-08 | Graphcore Ltd | Combining states of multiple threads in a multi-threaded processor |
US10606641B2 (en) * | 2017-10-20 | 2020-03-31 | Graphcore Limited | Scheduling tasks in a multi-threaded processor |
JP7444566B2 (ja) * | 2019-09-12 | 2024-03-06 | ファナック株式会社 | サーボ制御装置、サーボ制御システム及びサーボ制御方法 |
CN112616192B (zh) * | 2020-12-04 | 2023-06-30 | 展讯通信(上海)有限公司 | 事件处理方法和装置 |
CN113032143B (zh) * | 2021-03-09 | 2022-10-18 | 西北工业大学 | 一种高性能计算用户配额的智能调优方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4736318A (en) * | 1985-03-01 | 1988-04-05 | Wang Laboratories, Inc. | Data processing system having tunable operating system means |
US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
IL93239A (en) * | 1990-02-01 | 1993-03-15 | Technion Res & Dev Foundation | High flow-rate synchronizer/schedular apparatus for multiprocessors |
US5272697A (en) * | 1990-02-23 | 1993-12-21 | At&T Bell Laboratories | Apparatus and method for time multiplexing a resource among a plurality of entities |
US5339415A (en) * | 1990-06-11 | 1994-08-16 | Cray Research, Inc. | Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system |
US5257372A (en) * | 1990-12-19 | 1993-10-26 | Cray Research, Inc. | Methods for efficient distribution of parallel tasks to slave processes in a multiprocessing system |
US5325525A (en) * | 1991-04-04 | 1994-06-28 | Hewlett-Packard Company | Method of automatically controlling the allocation of resources of a parallel processor computer system by calculating a minimum execution time of a task and scheduling subtasks against resources to execute the task in the minimum time |
US5210872A (en) * | 1991-06-28 | 1993-05-11 | Texas Instruments Inc. | Critical task scheduling for real-time systems |
US5247675A (en) * | 1991-08-09 | 1993-09-21 | International Business Machines Corporation | Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system |
US5386561A (en) * | 1992-03-31 | 1995-01-31 | International Business Machines Corporation | Method of integrated system load control through dynamic time-slicing in a virtual storage environment |
US5287508A (en) * | 1992-04-07 | 1994-02-15 | Sun Microsystems, Inc. | Method and apparatus for efficient scheduling in a multiprocessor system |
-
1994
- 1994-03-18 DE DE69429204T patent/DE69429204T2/de not_active Expired - Fee Related
- 1994-03-18 EP EP94104334A patent/EP0617361B1/de not_active Expired - Lifetime
-
1997
- 1997-11-17 US US08/971,788 patent/US6085215A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0617361A2 (de) | 1994-09-28 |
US6085215A (en) | 2000-07-04 |
EP0617361A3 (en) | 1996-04-17 |
DE69429204D1 (de) | 2002-01-10 |
EP0617361B1 (de) | 2001-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69429204T2 (de) | Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk | |
DE69130620T2 (de) | Datenübertragungsadapter und Verfahren zu dessen Betrieb | |
DE3751091T2 (de) | Übertragungsprotokoll zwischen Prozessoren. | |
DE69429279T2 (de) | Multiprozessor-programmierbares unterbrechungskontrollersystem mit prozessor-integrierten unterbrechungskontrollern | |
DE69702708T2 (de) | Verfahren und vorrichtung für klientverwaltete flusssteuerung in einem rechnersystem mit begrenztem speicher | |
DE69636029T2 (de) | Verfahren und Vorrichtung zur Datenübertragung | |
DE69024753T2 (de) | Tragbarer, Ressourcen teilender Datei-Server, der gemeinsame Routines benutzt | |
DE69614291T2 (de) | (n+i) Ein/Ausgabekanälesteuerung, mit (n) Datenverwaltern, in einer homogenen Software-Programmierbetriebsumgebung | |
DE60036465T2 (de) | Rechneradapterkarte für die kombinierung von eingang-/ausgangfertigstellungsberichten und verwendung derselben | |
DE69931052T2 (de) | Middleware-basiertes echtzeit-kommunikationssystem | |
DE69123334T2 (de) | Schlangenverwalterverfahren für ein elektronisches Mitteilungssystem | |
DE69514102T2 (de) | Verfahren und gerät zur verteilung von ereignissen in einem betriebssystem | |
DE3850881T2 (de) | Verfahren und Vorrichtung zur Nachrichtenübertragung zwischen Quellen- und Zielanwender durch einen anteilig genutzten Speicher. | |
EP0333123B1 (de) | Modular strukturiertes ISDN-Kommunikationssystem | |
DE19605093B4 (de) | Verfahren und Vorrichtung zum Einrichten und Verwalten einer Verbindung zwischen einem Client-Computersystem und jedem einer Mehrzahl von Server-Computersystemen | |
DE3884504T2 (de) | Eingabe-Dienstsubsystem zur dynamischer Arbeitsplanung für ein Computersystem. | |
DE68927375T2 (de) | Arbitrierung von Übertragungsanforderungen in einem Multiprozessor-Rechnersystem | |
DE69628798T2 (de) | Verfahren zur Übertragung von Multimediadaten | |
DE69428972T2 (de) | System und Verfahren für die Eigentumerverwaltung eines freigegebenen Synchronisationsmechanismus | |
DE69533680T2 (de) | Verfahren und Vorrichtung zur dynamischen Bestimmung und Zuteilung von Zugriffsguoten für ein gemeinsames Betriebsmittel | |
DE69735575T2 (de) | Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern | |
CN110113387A (zh) | 一种基于分布式批量处理系统的处理方法、装置及系统 | |
DE102008022080A1 (de) | Nachrichten-Warteschlangensystem für eine parallel integrierte Schaltkreisarchitektur und zugehöriges Betriebsverfahren | |
DE3751487T2 (de) | Verfahren zur Steuerung eines Datenübertragungspuffers. | |
DE102006019839A1 (de) | Zeitbewusste Systeme |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |