DE69429204T2 - Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk - Google Patents

Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk

Info

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
Application number
DE69429204T
Other languages
English (en)
Other versions
DE69429204D1 (de
Inventor
Kadangode K Ramakrishnan
Dennis Ting
Lev Vaitzblit
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cabletron Systems Inc
Original Assignee
Cabletron Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cabletron Systems Inc filed Critical Cabletron Systems Inc
Publication of DE69429204D1 publication Critical patent/DE69429204D1/de
Application granted granted Critical
Publication of DE69429204T2 publication Critical patent/DE69429204T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling 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

    HINTERGRUND DER ERFINDUNG
  • 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.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • 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.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 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.
  • BESCHREIBUNG DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS
  • 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.
DE69429204T 1993-03-26 1994-03-18 Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk Expired - Fee Related DE69429204T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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