DE2517297A1 - Einrichtung zum feststellen eines zu einem zu verhindernden endgueltigen stillstand fuehrenden systemzustandes - Google Patents

Einrichtung zum feststellen eines zu einem zu verhindernden endgueltigen stillstand fuehrenden systemzustandes

Info

Publication number
DE2517297A1
DE2517297A1 DE2517297A DE2517297A DE2517297A1 DE 2517297 A1 DE2517297 A1 DE 2517297A1 DE 2517297 A DE2517297 A DE 2517297A DE 2517297 A DE2517297 A DE 2517297A DE 2517297 A1 DE2517297 A1 DE 2517297A1
Authority
DE
Germany
Prior art keywords
event
semaphore
processes
waiting
system resource
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.)
Ceased
Application number
DE2517297A
Other languages
English (en)
Inventor
Charles W Bachman
Jacques Bouvard
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.)
Bull HN Information Systems Italia SpA
Original Assignee
Honeywell Information Systems Italia SpA
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 Honeywell Information Systems Italia SpA filed Critical Honeywell Information Systems Italia SpA
Publication of DE2517297A1 publication Critical patent/DE2517297A1/de
Ceased 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance

Description

Die Erfindung bezieht sich ganz allgemein auf Datenverarbeitungssysteme und im besonderen auf eine Einrichtung zum Verhindern eines endgültigen Systemstillstandes/ der auftreten würde, wenn einer oder mehrere Prozesse auf Ereignisse warten, die niemals auftreten. Elektronenrechner haben sich von der ersten Generation mit Elektronenröhren über eine zweite Generation mit Transistoren zu einer dritten Generation entwickelt, welche hauptsächlich integrierte Schaltungen aufweist. Zusammen mit diesen verschiedenen Hardware-Generationen gab es unterschiedliche Software-Generationen, wobei die erste im wesentlichen durch die Maschinensprache, Assembler und Subroutinen gekennzeichnet war eine zweite Generation sich durch hochentwickelte Maschinensprachen, Überwachungsprogramme und Makro-Assembler auszeichnete, während für die dritte Generation Betriebssysteme, Echtzeit/On-Line-Mehrfachprogrammsysteme sowie Datenmanagementsysteme kennzeichnend sind. Die ersten beiden Hardware/Software-Generationen waren in erster Linie auf Stapelbetrieb ausgerichtet, wo einzelne Jobs hauptsächlich nacheinander abgewickelt wurden, die dritte Generation ist ebenfalls stapelbetrieb-orientiert. Wegen der Mehr-
509 84 5/ 0765
2517296
fachprogrammierung können jedoch mehrere Jobs gleichzeitig parallel zueinander ausgeführt werden, und Eingangsinformationen können für die Verarbeitung aufgenommen werden, so wie sie entstehen.
Systeme der vierten Generation werden typischerweise als Kommunikations- und Steuersysteme bezeichnet, welche eine weit gefächerte Möglichkeit verschiedener Prozessoranwendungen haben und die in erster Linie durch übertragene Daten an Stelle von Programmen in Gang gesetzt werden, d.h., die Systemsteuerung erfolgt hauptsächlich durch Eingangsdaten statt durch Aktionen des Operators . Dabei geschieht die Zufuhr von Daten im Echtzeitbetrieb.
Die Datenverarbeitung bei Systemefi(er ersten Generation erfolgte relativ geradlinig ,, wobei der Job oder das Programm als Grundeinheit der Verarbeitung angesehen wurde. Für jeden durch einen Benutzer in Gang gesetzten Job oder eine Übertragung lief ein Programm mit wenig oder keinen Unterbrechungen bis der Job oder die übertragung beendet war. Viele geradlinige Jobs, solche wie das Compilieren und Ausführen von hochentwickelten Programmsprachen, wie FORTRAN, konnten als einzelner Prozeß ablaufen. Schwierigere Jobs erforderten Mehrfachaufgabenoperationen und ließen während des Ablaufs andere Prozesse entstehen. Ein Prozeß ist dabei als Konzept für die Ausführung einiger Aktivitäten anzusehen und sollte nicht mit dem Konzept eines Programms verwechselt werden, welches eine Prozeß- oder Aktivitätsbeschreibung ist und von einem oder mehreren Prozessen benutzt werden kann. Man kann sagen, daß entweder ein Prozeß oder ein Prozessor ein Programm ausführt (s. Begriffsliste). Das Konzept eines Prozesses als Grundeinheit der Verarbeitung wurde entwickelt, um ein Erfordernis von Mehrfachprogramm/Mehrfachverarbeitungsanlagen der dritten Generation zu erfüllen. In solchen Anlagen, wo viele Benutzer gleichzeitig Rechnerarbeit anfordern(ist es natürlich, sich Mehrfachprozesse vorzustellen, welche innerhalb des Rechner-
509845/0765
2517296
systems dessenSysteirtnittel benutzen möchten. Jeder Prozeß besteht aus einem Programm, d.h. einer geeordneten Sammlung von Befehlen und anderen mit den Befehlen verbundenen Daten, und wird von einem Prozessor ausgeführt, wobei eine Prozeßzustandsüberwachung den jeweils vorhandenen Zustand des Prozesses definiert. Der Prozeß läuft mit Daten ab, um einen Benutzerjob oder eine Phase eines solchen Jobs auszuführen. Wo viele solcher Prozesse gleichzeitig Anforderungen an das System stellen, wird die Aufgabe der Kommunikation zwischen solchen Prozessen und die Aufgabe der Steuerung und Zuordnung von Systemmitteln und Quellen zu den Prozessen insbesondere im Hinblick auf die Anforderungen der Rechnersysteme der vierten Generation äußerst komplex.
In einer Mehrfachprogramm/Mehrfachprozeßanordnung ist es wichtig, daß die Zusammenarbeit zwischen zwei oder mehreren Prozessen wirkungsvoll und schnell abläuft. Während in der Vergangenheit zahlreiche Lösungen für dieses Problem vorgeschlagen worden sind, ist die Technik der Interprozeß-Kommunikation und -Steuerung für solche Rechnersysteme der vierten Generation bis jetzt nicht völlig berücksichtigt worden. Die Bestimmung der für die Arbeit solcher Rechnersysteme der vierten Generation erforderlichen Konzepte wurde zumindest teilweise entwickelt und beschrieben von E.W. Dijkstra in der Arbeit "Cooperative Sequential Processes from Programming Languages" in der NATO Advanced Study Institute, herausgegeben von F. Genuys, Paris und veröffentlicht durch Academic Press, 1968. In dieser Arbeit postuliert Dijkstra ein Grundkonzept eines Semaphor für die Benutzung bei der Prozeßsynchronisierung sowie P- und V-Befehle, die mit Hilfe des Semaphor verarbeitet werden. Die Interprozeß-Kommunikation und die Prozeßsynchronisation wird dabei allein durch Software erreicht, wodurch nicht nur die Arbeitsgeschwindigkeit des Systems verringert, sondern auch die Wirksamkeit vermindert und der gesamte erforderliche Aufwand erhöht wird. Dijkstra liefert keine für eine wesentliche Anwendung von Rechnersysteme der vierten Gene-
5098AB/0765
2517296
ration erforderlichen Konzepte, weil er nur eine Grundvoraussetzung für die Prozeßsynchronisierung formuliert. Beispielsweise wird die Nachrichtenübertragung von einem Prozeß zu einem anderen in Dijkstra's Arbeit nicht erwähnt. Die Konzepte der P- und V-Befehle werden in jener Arbeit nur in allgemeinen Ausdrücken dargelegt und zeigen keine für Rechnersysteme der vierten Generation erforderlichen Konfigurationen. Zudem gibt Dijkstra nur eine Softwarebasis für die Deutung und Benutzung von P- und V-Befehlen an. Somit wurde die für Prozesse mit schnellem Zugriff zusätzlich zur systematischen Umordnung des Datenprozessors erforderliche Speicherorganisation nicht erörtert. Folglich fehlen bei Dijkstra nicht nur viele der aie Übermittlung und den Empfang von Daten durch den ablaufenden Prozeß notwendigen P- und V-Befehle, sondern man vermißt auch die Hardware/Firmwarebasis für eine Prozeßübertragung in Abhängigkeit von allen P- und V-Befehlen.
In einer Mehrfachprozeßanlage sind Interprozeß-Kommunikations- und Synchronisationseinrichtungen wichtig, um eine glatte Zusammenarbeit zwischen den nur lose verbundenen Prozessen zu erreichen. Einfache Hardwaremechanismen, wie beispielsweise nichtprogrammierte Sprünge und Unterbrechungen wurden anfänglich vorgesehen, um die Grundbedingungen des Systems zu erfüllen. Weiterentwickelte Einrichtungen wie Dijkstra's Semaphor-Technik [Y] wurden später eingeführt und in der einen oder anderen Form angewandt Qj] , [3] , [4] . Benutzerorientierte Softwaresteuerstrukturen, wie beispielsweise Ereignissteuerblocks, wurden ebenfalls vorgesehen, um in einer Mehrfachaufgaben-Anlage eine Kommunikation zwischen den einzelnen Aufgaben des Benutzers zu ermöglichen. Während sich diese Möglichkeiten und Einrichtungen für die Benutzung vieler spezieller Probleme als nützlich erwiesen haben waren sie nicht geeignet, eine breite und vereinheitlichte Interprozeß-Kommunikation zu schaffen, welche für allgemeine Systeme und Benutzeranforderungen bei asynchroner Verarbeitung geeignet wären. Unter asynchroner Verarbeitung wird hierbei die Ausführung
5098Λ5/0765
2517296
von Aktivitäten durch einen sequentiellen Prozeß in Abhängigkeit von Signalen verstanden, welche unabhängig vom Prozeß und somit asynchron durch irgendeinen anderen Prozeß oder ein Gerät erzeugt werden. Beispiele für diese Art von Verarbeitung umfassen die Behandlung von durch die Hardware erzeugten nicht-programmierten Sprüngen, welche das Auftreten eines Ausnahmezustandes,wie eines Maschinenfehlers, eines Programmfehlers, eines Überlaufs oder dergl. signalisieren; die Verarbeitung von durch die Hardware erzeugten Unterbrechungen, welche das Auftreten von wesentlichen externen Ereignissen kennzeichnen einschließlich der Erledigung eines Ein/Ausgabeübergangs, der Feststellung eines Ein/ Ausgabefehlers und den Ablauf eines Zeitgebers; die Verarbeitung von Softwareunterbrechungen, welche bei Feststellung unüblicher Ergebnisse innerhalb einer Prozedur entstehen, oder jene, welche durch Aufrufe an die Systemüberwachung ausgelöst werden; und die Verarbeitung von durch eine Softwareaufgabe bewirkten Aktivitäten in Abhängigkeit von Anforderungen, welche in einer Mehraufgaben-Anlage durch eine andere Aufgabe hervorgerufen werden.
Verschiedene Entwicklungstendenzen tragen zur wachsenden Bedeutung einer asynchronen Verarbeitung bei. Hierzu gehören der Trend des Rechneraufbaus zu Multiprozessoranlagen für zentrale und auch periphere Untersysteme. Typisch hierfür ist die Benutzung von mehreren zentralen Prozessoren oder getrennten Außenstellen- und Netzwerkprozessoren zur Erhöhung des Systemwirkungsgrades und der Systemzugängigkeit; der Trend zum verteilten Einsatz von Mehrfachprogramm- oder Zeitmultiplex-Betriebssystemen;
der Trend zu schnell ansprechenden On-Line-Anwendungssystemen mit einer breiten Vielfalt von Diensten für eine Benutzergemeinschaft.
Erforderlich ist deshalb für einen Rechner der vierten Generation ein System, welches automatisch die Prozeßkommunikation und die Prozeßsteuerung integriert, um hierdurch nicht nur den Wirkungs-
509845/0765
2517296
51-01339 Ge .
grad des Systems zu erhöhen, sondern auch eine genügende Flexibilität in der Behandlung unzähliger sich aus der übertragung von Informationen von einem Prozeß zu einem anderen und aus dem Management von Ereignissen und Nachrichten ergebenden Situationen zu gewährleisten. Hauptziel der Erfindung ist es, in einem Mehrprogramm-Datenverarbeitungssystem mit einer Vielzahl von Systemmitteln und Prozessen eine Möglichkeit vorzusehen, daß Prozesse auf ihnen zugeordnete jedoch nicht auftretende Ereignisse warten können, ohne daß hierdurch ein völliger Systemstillstand auftritt.
Die Lösung dieser Aufgabe gelingt durch die im Anspruch 1 gekennzeichnete Erfindung. Weitere vorteilhafte Ausgestaltungen der Erfindung sind den Unteransprüchen entnehmbar. In diesen ist ein wirkungsvolles System zur Feststellung eines endgültigen Systemstillstandes gekennzeichnet. Insbesondere sind Maßnahmen getroffen, um das Warten eines Anforderungsprozesses auf die Verfügbarkeit von Systemmitteln festzustellen und zu verhindern, falls die Systemmittel bereits durch einen anderen Prozeß beansprucht werden und dieser Prozeß selbst bereits direkt oder indirekt auf den ersten Prozeß wartet. Weiterhin behandeln die Unteransprüche die Erzeugung der erforderlichen Firmware und ein Verfahren zum Betrieb des erfindungsgemäßen Systems. Eine Hardware/Finneware-Einrichtung ist schließlich angegeben, welche auf schnelle und effiziente Weise das Aufsuchen der Steuertabellen und die Feststellung eines zu einem endgültigen Stillstand führenden Betriebszustandes gestattet.
Die Erfindung wird nachfolgend anhand in den Zeichnungen wiedergegebener Ausführungsbeispiele erläutert. Dabei zeigen die Figuren la, Ic bis le, Ig, lh, Ii und 11 Strukturdiagramme zur Erläuterung des Grundkonzepts der Erfindung, wobei sich die Regeln für die Erstellung solcher Programme aus der Literaturstelle (6) ergeben;
Figur la das Blockdiagramm eines Mehrfachprogrammsystems;
509845/0765
2517296
51-01339 Ge
Figur If eine Tabelle zur Klassifizierung von vier Ausführungsbeispielen der Erfindung;
Figuren Ib und Ii schematische Diagramme zur Darstellung der Feststellung des endgültigen Stillstandes mit exklusiver Zuordnung von Systemmitteln und Objekten aus einer entsprechenden Mehrobjekt-Systemmittelklasse; Figur 2b eine schematische Darstellung verschiedener Hardwarestrukturen;
Figur 3 die zugehörige Begriffsliste für die reservierten Speicherbereiche in den Registern gemäß Figur 2; Figur 4 ein schematisches Diagramm eines Prozeßsteuerblocks; Figur 5 ein schematisches Diagramm eines Systems zur Adressierung eines Prozeßsteuerblocks;
Figur 6 ein schematisches Diagramm der Systembasis des Rechnersystems gemäß der Erfindung;
die Figuren 7a und 7b schematische Darstellungen eines Stapelspeichersegments und eines Stapelspeicherrahmens; Figur 8 ein schematisches Diagramm eines Systems zur Adressierung von G-Segmenten und insbesondere der Warteschlange von Prozessen im GO-Segment; '
Figur 9 in auseinandergezogener schematischer Darstellung ein GO-Segment/ welches die Warteschlange eines Prozesses und das Prozeßverbinden veranschaulicht; die Figuren 10a bis 101 Blookdiagramme von Strukturen im Prozeßsteuerblock;
Figuren 11a bis Hr Blockdiagramme von Strukturen in der Systembasis;
Figur 12 ein schematisches Diagramm von Adressierschemata für Benutzer- und Systemsegmente/ welche die Systembasis und die Prozeßsteuerblock-Strukturen verwenden;
509-845/0765
2517296
die Figuren 13a bis 13c schematische Darstellungen der Steuereinheit;
die Figuren 14a bis I4i Flußdiagramme der. Zuteilereinheit in Form von Firmware;
Figur 15 eine auseinandergezogene Darstellung eines Semaphor-Descriptorsegments und seine Anordnung; die Figuren 16a bis 16p Blockdiagramme von Semaphor-Strukturen; Figur 17 ein schematisches Diagramm der Adressenentwicklung für das Semaphor;
Figur 18 in Form eines schematischen Diagramms die Beziehung zwischen dem SemaphorrDescriptorsegment und dem GO-Segment; die Figuren 19a bis 19b schematische Diagramme des Zwischenspeichers und der logischen Speichereinheit gemäß Figur 13, welche zugleich die Gesamtorganisation ihrer Wortstruktur erkennen lassen;
die Figuren 20a und 20b Flußdiagramme der in allen P- und V-Befehlen benutzten Semaphor-Descriptor-Abrufsubroutine; Figur 21 das Flußdiagramm eines P-Befehls aufgrund von Semaphoren ohne Nachrichten;
die Figuren 22a bis 22e Flußdiagramme des P-Befehls bei Semaphoren mit Nachrichten;
die Figuren 23a bis 23h Flußdiagramme von EVP-Subroutinen, welche sowohl von P als auch von V-Befehlen aufgerufen wurden, um den Prozeß vom Ablaufzustand in den Wartezustand zu überführen;
die Figuren 24a bis 24d Flußdiagramme der PMZ-Subroutine für die Zuführung einer Nachricht ohne Zutritt -zu einer Warteschlange;
die Figuren 25a bis 25i Flußdiagramme von V-Befehlen aufgrund eines Semaphor, wenn das SCT-FeId des Semaphor negativ ist; und die Figuren 26a bis 26f Flußdiagramme des V-Befehls aufgrund eines Semaphor, wenn das SCT-FeId des Semaphor positiv ' ist.
509845/0765
2517296
Da das für ein Ereignismanagementsystem in einem Großrechnersystem eingesetzte Instrumentarium notwendigerweise sehr komplex ist, wird zunächst zusammengefaßt der allgemeine Aufbau eines typischen Datenverarbeitungssystems beschrieben werden, bei dem die Erfindung vorteilhaft zum Einsatz kommen kann. Dabei werden auch die Grundkonzepte erläutert, auf denen die Erfindung basiert. Zunächst werden folglich die Grundvoraussetzungen und die herkömmliche Art der Prozeßsynchronisierung erläutert. Anschließend folgt eine Aufstellung der allgemeineren Voraussetzungen und erweiterten Möglichkeiten. Die grundlegenden ereignisbezogene^ durch bestimmte Attribute gekennzeichneten Aufbaueinheiten des Systems werden isoliert, gekennzeichnet und geordnet, und eine allgemeine Ereignismanagement-Strategie des Systems wird definiert. Schließlich wird die durch die Erfindung geschaffene Einrichtung anhand ihrer Anwendung bei typischen asynchronen Verarbeitungsvorgängen erläutert. Wie in der Literaturstelle (5) angegeben ist, enthalten die Überlegungen für den Einsatz solcher Anlagen zwei völlig verschiedene Betrachtungsweisen, nämlich einmal funktioneile Definitionen und zum anderen Hardwareüberiegungen. Die nachfolgende Beschreibung befaßt sich mit beiden, und zwar zunächst mit den funktioneilen Aspekten und später mit der Realisierung in Form von Hardware.
1. Grundvoraussetzungen
In ihrer elementarsten Form erlaubt die Interprozeß-Kommunikation einem Prozeß eine Variable einzustellen, deren Inhalt später von einem anderen Prozeß überprüft und zurückgestellt wird. In typischer Weise stellt das Setzen einer Variablen das Auftreten eines Ereignisses dar, das für den anderen Prozeß wichtig ist. Beispielsweise kann ein Prozeß Informationen, die für einen anderen Prozeß benötigt werden, in einen Pufferspeicher einsammeln. Sobald der Pufferspeicher gefüllt ist, wird eine gegenseitig anwählbare Variable gesetzt, welche anzeigt,
509845/0765
2517296
daß die Verarbeitung des Speicherinhalts beginnen kann. Das Grundelement einer Zwischenprozeß-Interkommunikation besteht also aus folgendem:
Das Auftreten eines Ereignisses bestimmt durch das Erscheinen eines Zustandes in einem ersten Prozeß (Ereignisgenerator) , welches für einen zweiten Prozeß (Ereignisverarbeiter) wichtig ist;
eine gegenseitig erreichbare Binärzustands-Variable (Ereignisvariable), die vom Ereignisgenerator einem EIN-Zustand geordnet wird und vom Ereignisgenerator überprüft und zu einem AUS-Zustand zurückgesetzt werden kann. Außerdem müssen diese Operationen nacheinander verlaufen und unteilbar sind;
ein Zusammenhang der Auswertung des Ereignisauftritts, welcher die Wichtigkeit des Ereignisses und die Art der auszuführenden Reaktion beschreibt.
Funktionell erfüllt der Ereignisgenerator-Prozeß zwei Hauptziele:
Die überwachung von Ereignisbedingungen und das Setzen der Ereignisvariablen,
während der Ereignisverarbeiter folgende Funktionen hat:
Ereignisermittlung, d.h. Feststellen und Rückstellen der
Ereignisvariablen sowie
Ereignisreaktion, d.h. die Ausübung irgendeiner Prozedur
als Folge des Auftritts des Ereignisses.
Ein Ereignismechanismus stellt e±n Verbindungs- und Synchronisierungsmittel zwischen den zusammenarbeitenden Prozessen dar. Der Auftritt von Ereignissen kann als Prozeßanforderungen aufgefaßt werden, welche an den Ereignisverarbeiter gerichtet sind und seine Aktivität steuern.
9845/0785
2517296
2. Grundlegender Synchronisiermechanismus
Die Ereignis-Detektorfunktion besteht aus der Feststellung des Auftretens eines Ereignisses und dem Einstellen der Ereignisvariablen. Wirksamkeit und Unterscheidungsvermögen sind zwei wichtige Eigenschaften dieses Mechanismus. Die Wirksamkeit des Detektormechanismus bezieht sich auf die mit der Feststellung eines Ereignisauftritts verbundenen Kosten. Genauer gesagt kann sie in Form der vom Ereignisverarbeiter während des Wartens auf den nächsten Ereignisauftritt verbrauchten Verarbeitungszeit gemessen werden;1 ai es en einfachen Testmechanismus überprüft der Ereignisverarbeiter periodisch die Ereignisvariable. Jedesmal wenn ein Ereignisauftritt festgestellt wird, führt der Ereignisverarbeiter die geeignete Reaktionsprozedur durch und kehrt dann zu seiner Testaktivität zurück. Dieses wiederholte überprüfen kann beträchtliche Mengen von Verarbeitungszeit ohne nützliche Ergebnisse verbrauchen. Ein wirksamerer Mechanismus wird dadurch erreicht, daß man außer der Möglichkeit,, den Auftritt eines Ereignisses zu überprüfen(eine weitere Möglichkeit, nämlich die auf ein Ereignis zu warten, vorsieht. In diesem Schema kann der Ereignisverarbeiter einen Ruhezustand einnehmen, bis das nächste Ereignis eintritt.
des Das Unterscheidungsvermögen Detektormechanismus ist - .
seine Fähigkeit, jeden einzelnen Ereignisauftritt festzustellen. Ein Ereignisauftritt könnte dem Detektor verborgen bleiben, falls sich mehrere Ereignisauftritte anhäufen. Mit dieser Situation erscheint das Ereignis mehr als einmal zwischen zwei aufeinanderfolgenden Überprüfungen. Verwendet man hier den Prüf/Warte-Mechanismus, so wird die Unterscheidung durch das Zeitintervall bestimmt, welches erforderlich ist, um dLe Reaktionsprozedur auszuführen. In vielen Fällen braucht jedoch die gesamte Reaktionsprozedur nicht vor dem nächsten Ereignis
509845/0765
2517296
auftritt abgeschlossen 2U sein. Zwei Arten von Reaktionsprozeduren lassen sich unterscheiden, nämlich Vordergrund- und Hintergrundprozedur. Die Vordergrundprozedur ist diejenige, welche vor dem nächsten Ereignisauftritt abgeschlossen sein muß. Eine Hintergrundprozedur^-kann in nicht-sequentieller Art in Bezug auf den Ereignisauftritt abgewickelt werden. Typischerweise stellt eine Vordergrundprozedur irgendeine kritische Aktivität dar, welche beendet sein muß, ehe das nächste Ereignis auftritt, während eine Hintergrundprozedur mehr nebenbei abläuft.
Verschiedene Mechanismen sind vorgeschlagen worden, um diese Gelegenheit zu nutzen. Das Verfahren mit einem nicht-programmierten Sprung oder einer internen Unterbrechung bewirkt, daß der Ereignisverarbeiter einen außerhalb der Räihe liegenden Aufruf an eine Vordergrundprozedur abgibt, so bald er einen Ereignisauftritt feststellt. Mit diesem Mechanismus wird die Unterscheidungsfähigkeit insofern verbessert, als die Leerlaufzeit auf die Dauer der Vordergrundprozedur beschränkt ist. Ein anderes wesentliches Merkmal des Systems nicht programmierter Sprünge besteht in seiner Fähigkeit, auf einen Ereignisauftritt auch dann zu reagieren, wenn der Ereignisverarbeiter diesen nicht speziell erwartet, d.h., weder gerade einen Prüfvorgang durchläuft noch sich im Wartezustand befindet. Diese Eigenschaft erweist sich als äußerst nützlich, da hierdurch ein Prozeß mehrere Ereignisvariablen verarbeiten kann.
Zur Veranschaulichung des Verfahrens mit nichtprogrammierten Sprüngen sei ein Nachrichtenleitungsprozessor betrachtet.
Ein Ereignisauftritt (Typ 1) besteht in der Ankunft eines neuen Zeichens in einem Einzeichen-Leitungspufferspeicher. Die Reaktion auf dieses Ereignis umfaßt den Abruf des Zeichens aus dem Pufferspeicher, die Bewertung und Umordnung des zeichens
509845/0765
2517296
und die Weitergabe des umgeordneten Zeichens an einen Nachrichtenpufferspeicherplatz. Es ist klar, daß bis zur Herausgabe des neu angekommenen Zeichens aus der Pufferspeicherzone das Risiko einer Zerstörung des Zeichens durch ein ankommendes neues Zeichen besteht. Andererseits besteht kein zwingender Grund, die Umordnung des Zeichens vor der Ankunft des nächsten Zeichens abzuschließen. Man kann folglich die Pufferspeicherentleerungsoperation als Vordergrundprozedur und die Bewertungs- und Umordnungsaktivität als Hintergrundprozedur abwickeln.
Es wird vorausgesetzt, daß der Detektormechanismus aus einem herkömmlichen Test/Wartevorgang ergänzt durch einen nichtprogrammierten Sprung besteht. Die Verarbeitung wird in eine Vordergruridprozedur (Puffer entleeren) unterbrochen, wenn ein Ereignisauftritt vom Typ 1 erscheint, d.h., wenn ein Zeichen ankommt, und in eine Hintergrund-Zeichenumordnungsverarbeitung, welche durch einen Zeichenauftritt vom Typ 2 ausgelöst wird, wenn ein Zeichen unbeeinträchtigt aus dem Pufferspeicher ausgespeichert worden ist. Nimmt man an, daß der Leitungsp^pzessor anfänglich einen Ereignisauftritt vom Typ 2 verarbeitet, so wird beim Ankommen des ersten Zeichens ein Ereignisauftritt vom Typ 1 festgestellt. Dieser veranlaßt den Ereignisverarbeiter zu einem nieinprogrammierten Sprung und läßt ihn einen Aufruf an die Vordergrundprozedur für die Entleerung des Pufferspeichers ausführen. Iplese Prozedur verschiebt das Zeichen aus dem Pufferspeicher in irgendeinen gesicherten Speicherbereich und signalisiert dann die erforderliche Hintergrundaktivität (Ereignisauftritt Typ 2). Bei Abschluß der Vordergrundaktivität kehrt der Ereignisverarbeiter zu seiner unterbrochenen Tätigkeit zurück. Wenn diese abgeschlossen ist, prüft er, ob ein anderes Ereignis vom Typ 2 vorliegt und findet den Ereignisauftritt vom Typ 2 in der Ereignisvariablen, stellt diese zurück und fährt mit der Hinter-
S09845/0765
2517296
grundprozedur fort. Wenn keine weitere Ankunft eines Zeichens einer Unterbrechung vor dem Abschluß der Hintergrundprozedur bewirkt, kehrt der Leitungsprozessor nach Abschluß seiner Tätigkeit zum Ereigniszustand Nr. 2 zurück und findet keine laufende Hintergrundaktivität (Ereignisauftritt Typ 2)-vor. Somit kehrt er in den Wartezustand zurück.
Wenn jedoch ein neues Zeichen vor dem Abschluß der Hintergrundreaktion in den Pufferspeicher einläuft, so wird ein weiterer Ereignisauftritt vom Typ l festgestellt, und es tritt erneut ein nichtprogrammierter Sprung (Trap) auf. Ein Implizit-Aufruf für eine Vordergrundreaktion wird selbsttätig erzeugt und unterbricht vorübergehend die Durchführung der Hintergrundprozedur. Der Ereignisverarbeiter übernimmt die Vordergrundprozedur, verschiebt das zweite Zeichen in den Sicherheitsbereich und kehrt dann zur Unterbrechungsstelle zurück, um erneut die Durchführung der Hintergrundprozedur aufzunehmen. Falls kein weiterer Ereignisauftritt erscheint, schließt der Leitungsprozessor die Hintergrundprozedur ab und kehrt zur Eingangsstelle zurück, wo er den zweiten Ereignisauftritt vorfindet. Es stellt diesen zurück und führt erneut die Hintergrundprozedur für die Verarbeitung des zweiten Zeichens aus. Eine Variante des nichtprogranimierten Sprungs ist die Unterbrechung oder externe Unterbrechung. Bei einem Unterb rech ungs schema wird die Vordergrundprozedur durch einen anderen Prozeß höherer Priorität ausgeführt, während der Ereignisverarbeiter vorübergehend ausgesetzt wird. Der Hauptunterschied zwischen nieinprogrammierten Sprüngen und Unterbrechungen liegt darin, daß die Durchführung von Hintergrund- und Vordergrundreaktionen innerhalb unterschiedlicher Prozeßteile stattfindet.
S098A5/0765
2517296
3. Der Semaphor-Mechanisinus
Der von Dijkstra (1) eingeführte Semaphor-Mechanismus führt zu zwei wichtigen Verbesserungen gegenüber den elementaren Prüf/Wartemöglichkeiten. Zum einen ist der Semaphor-Mechanismus symmetrisch. Ein Prozeß kann einen Ereignisauftritt bei derselben Ereignisvariablen sowohl hervorrufen als auch feststellen. Zum andern wird die selbe Ereignisvariable von einer Binärzustands-Variablen zu einer positiven ganzen Zahl verallgemeinert. Dies erlaubt die gleichzeitige Bereitstellung einer Vielzahl von Ereignisauftritten bis zu einem vorgegebenen Grenzwert. Die Ankündigung eines Ereignisauftritts wird mit Hilfe einer V-Operation erreicht, welche die Ereignisvariable schrittweise vergrößert. Die Feststellung eines Ereignisses geschieht mit Hilfe einer P-Operation, welche die Ereignisvariable feststellt und schrittweise verkleinert. Die V-Operation schickt ein Fehlersignal zurück, falls sie feststellt, daß sich die Ereignisvariable bereits beim maximalen Zählerstand befindet. Umgekehrt bewirkt die P-Operation, daß der sie hervorrufende Prozeß in den Wartezustand übergeht, falls die Ereignisvariable (Semaphor-Zählerstand) gleich Null ist. Dieser Wartezustand hält solange an, bis der nächste Ereignisauftritt dem Semaphor aufgegeben wird. Die Detektor-Unterscheidungsfähigkeit des Semaphor-Mechanismus ist unabhängig von der Häufigkeit der Ereignisauftritte. Solange der Vorrat nichtverarbeiteter Ereignisauftritte unterhalb des Maximalstandes liegt, wird kein Ereignisauftritt unbemerkt und unbearbeitet vorbeilaufen. Sobald jedoch dieser Vorrat den Grenzwert erreicht, wird der Ereigniseingabemechanismus gesperrt und bleibt dies bis die nächste P-Operation den tatsächlichen Zählerstand der Ereignisauftritte unter den Maximalwert für das Semaphor reduziert.
8'09S68/0768
2517296
4. Mehrfachereignis-Prozessoren
In der bisherigen Beschreibung wurden Situationen behandelt, bei denen ein einziges Paar asynchroner Prozesse vorhanden • . war, und zwar ein Prozeß, der einen Ereignisauftritt erzeugt und ein anderer, der ihn verarbeitet. Nunmehr soll die allgemeinere Situation untersucht werden, wo der gleiche Ereigniserzeuger über eine einzige Ereignisvariable mit mehreren Ereignis verarbeitern verbunden ist.' Hierzu sollen zwei Beispiele dienen, und zwar ein erstes mit einem einfachen Nachrichtenverarbeiter und einem zweiten mit einem allgemeineren Sys tentnittel^r Managementproblem.
Zunächst soll ein Prozeß betrachtet werden, der Nachrichten in einen Pufferspeicherbereich assembliert und wobei zwei identische Nachrichtenverarbeitungsprozesse eine gemeinsame Ereignisvariable haben. Nimmt man an, daß jeder Ereignisauftritt die Zugängigkeit einer neuen Nachricht in einem vorbestimmten Pufferspeicherbereich anzeigt, so besteht die Aufgabe darin, dafür zu sorgen, daß beide Nachrichtenverarbeiter in zusammenhängender Waise die Nachrichten verarbeiten. Dies bedeutet, daß die Nachrichten zwischen den beiden Prozessoren so verteilt werden müssen } daß jede Nachricht wenigstens einmal, aber insgesamt auch nicht mehr als einmal verarbeitet wird. Mit anderen Worten muß sichergestellt sein, daß der Zugriff zu einer Nachricht durch die Prozesse gegenseitig exklusiv ist. Im folgenden wird erläutert, wie der Semaphormechanisinus zur Erfüllung dieser Anforderung eingesetzt werden kann.
Es sei angenommen, daß die anfängliche Anzahl bereitgestellter Ereign.isauftritte, also von Nachrichten gleich drei ist und daß zur Zeit beide Nachrichtenverarbeitumjsprozesse gleichzeitig aktiviert sind. Ferner wird vorausgesetzt, daß während der
80 9 540/0765
2517296
Verarbeitung keine weitere Nachricht eintrifft. Zu Beginn jedes Nachrichtenverarbeitungsprozesses bewirkt dieser eine P-Operation. Diese ist gemäß Definition unteilbar und folglich wird die Ereignisfeststellung durch die beiden Prozesse nacheinander stattfinden. Der erste die P-Operation beginnende Prozeß findet einen Zählerstand 3, reduziert ihn auf 2 und gewinnt gleichzeitig damit Zugriff zur ersten Nachricht im Pufferspeicherbereich. Als nächstes führt der andere Prozeß die P-Operation durch und findet den Zählerstand 2, reduziert ihn auf 1 und erhält Zugriff zur zweiten Nachricht. Beide Nachrichtenverarbeitungsprozesse gehen dann unabhängig voneinander voran, bis ihre Verarbeitung beendet ist. Zu dieser Zeit kehren sie zum Semaphor zurück, um eine andere Nachricht sicherzustellen. Der erste das Semaphor erreichende Prozeß findet den Zählerstand 1, reduziert ihn auf O und erhält Zugriff zur dritten und letzten Nachricht und verarbeitet diese. Von diesem Zeitpunkt an wird jeder Prozeß, der zum Semaphor zurückkehrt, den Zählerstand 0 finden und damit in den Wartezustand übergehen. Damit ist die Bedingung erfüllt, daß jede Nachricht einmal und nur einmal verarbeitet *ird.
Dieses Beispiel veranschaulicht die Fähigkeit eines Semaphormechanismus eine strittige Situation zu lösen, die sich zwischen mehreren Prozessen ergeben hat, die Zugriff zu dem gleichen Systemmittel beanspruchen. Diese Fähigkeit ergibt sich aus der Unteilbarkeit der P-Operation. Tatsächlich ist zu jeder Zeit nur ein Prozeß in der Lage, die Zugängigkeit eines SystemmitteJsfestzustellen und Zugang hierzu zu bekommen. Im vorangehenden Beispiel waren die Anforderungen des Nachrichtenverarbeitungsprozesses nach Zuordnung von Systemmitteln nicht an eine bestimmte Nachricht gerichtet, sondern an jede für die Verarbeitung zur Verfügung stehende Nachricht. Die Ereignisvariable war mit der gesamten Klasse von Nachrichten-
509845/0785
2517296
Objekten verbunden und nicht mit einem bestimmten Mitglied dieser Klasse. Es ist ferner zu beachten, daß die Zugängigkeit eines bestimmten Nachrichtenobjekts ein nicht wiederkehrender Zustand war. Sobald eine Nachricht einem bestimmten Nachrichtenverarbeiter zugeordnet war, stand sie für keine andere Zuordnung mehr zur Verfügung. In diesem Fall stellt die Nachricht ein nicht wiederverwendbares Systemmittel dar.
5. Grundlegendes Systammlttel-Verwaltungsproblem
Nunmehr soll der Fall wiederverwendbarer Systemmittel betrachtet werden. Dies sind Systemmittel, die zu einer gegebenen Zeit jeweils nur von einem Prozeß eingesetzt werden können. Sie können jedoch freigegeben und einem anderen Prozeß zugeordnet werden. Eine gegenseitig exklusive Zuordnung ist erforderlich, so daß jeder Prozeß die vollständige Verfügung über den Zustand oder den Informationsinhalt eines Objekts erhalten kann.
Ein klassisches Beispiel zur Erläuterung dieser Anforderung stellt die Auftragseingabe dar. Entsprechend den von zahlreichen OntUne-Ein/Ausgabegeräten zur Verfügung gestellten Daten wird eine Lagervorratsdatei fortgeschrieben. Jedes Anschlußgerät (Terminal) wird von einem bestimmten Prozeß bedient. Um den Auftrag auszuführen, muß der Prozeß Zugriff zur Datensatzbasis des betreffenden Artikels haben, ihren Inhalt überprüfen und feststellen, ob der Vorrat ausreicht, um den Auftrag auszuführen. Ist dies der Fall, so wird der Datensatz entsprechend der bestellten Menge fortgeschrieben. Da mehrere andere Prozesse in nicht vorhersehbarer Weise versuchen können, gleichzeitig die Fortschreibung der Daten auszuführen, muß dafür gesorgt werden, daß keine Überschneidungen eintreten. Insbesondere darf in der kritischen Zeitspanne zwischen dem Zeit-
509845/0765
2517296
punkt, wo der Datansatz überprüft wird und dem Seitpunkt, wo sein Inhalt fortgeschrieben und der Datensatz in die Datei zurückgegeben wird nur ein Prozeß Zugriff zu einem gegebenen Datensatz haben". Eine gegenseitige Ausschlifßlichkeit des DatensatzZugriffes kann dadurch gewährleistet werden, daß man die Datensatzüberprüfung und Fortschreibung als kritischen Abschnitt im Sinne der Literaturstelle (1) abwickelt. Vor der überprüfung des Lagerbestandes fordert jeder Prozeß exklusive Zuordnung des entsprechenden Datensatzes an. Er erledigt dann die Fortschreibung, gibt den Datensatz in die Datei zurück und gibt die Datensatzzuordnung frei. In diesem Fall wird eine semaphor-ähnlicha binäre Ereignisvariable dem Datensatz als Systernmittelobjekt zugeordnet. Der Zugängigkeits zustand des Systemmittels wird durch den Wert der Ereignisvariablen dargestellt und zwar bedeutet "1", daß das Systemmittel zur Verfügung steht und "0", daß -Urs bereits einem anderen Prozeß zugeordnet ist. Eine Anforderung auf SystemmittelZuordnung enthält eine P-Operation für die Ereignisvariable, während die Systemiaittelfreigabe durch eine V-Operation der gleichen Ereignisvariablen erreicht wird. Diese Anordnung ist vollständig symmetrisch. Jeder Prozeß wirkt entweder als Ereignisverarbeiter, wenn er die Zuordnung eines Datensatzes anfordert oder als Ereigniserzeuger, wenn er ihn freigibt. Dieses Schema kann folglich verallgemeinert und zur Steuerung der Zuordnung von Systeramt^lii zwischen jeder beliebigen Anzahl von Prozessen angewandt v/erden, wobei die eine Ereignisvariable den Zustand der Zugängigkeit jedes wiederverwendbaren svsteromittel^ajekts darstellt.
5098 4 5/0 765
2517296
Grundlegender Ereignismanagement-Aufbau 1. Aufbaudefinition
An dieser Stelle erscheint es angebracht, das Verständnis des Ereignismechanismus in einer etwas formelleren Aufbaudefinition zusammenzufassen. Dem Vorschlag gemäß Literaturstelle (5) folgend sollen zunächst die in Betracht kommenden Systemelemente (entities) des Aufbaus identifiziert und gekennzeichnet werden. Es lassen sich sieben Systemelementklassen angeben, nämlich: System, Prozeß, Systemmittel blasse, Systemmittelobjekt, Ereignisvariable, Ereignisverarbeitungsanforderung und Ereignisauftritt. Tabelle 1 faßt diese Systemelemente und ihre Attribute zusammen.
Figur la zeigt ein Systemelement-Strukturdiagramm, welches die Beziehungen zwischen den Systemelementenklassen darstellt. Diese sind außerdem in Tabelle 2 beschrieben. Eine ausführliche Erklärung der in den Systemelementstrukturdiagrammen angewandten Zeichendarstellung ist in der Literaturstelle (6) angegeben. Kurz gesagt, stellt jedes Kästchen eine bestimmte Systemelementklasse dar. Die Beziehungen zwischen den Systemelementklassen werden als Einteilungsklassen, d.h. als Gruppen (set) gleichartiger Elemente dargestellt. Jeder Pfeil bezeichnet eine bestimmte Einteilungsklasse. Ein Auftritt einer Einteilungsklasse gehört zu einem einmaligen Auftritt eines Systemelements, welches zu der durch das Ende des Teils bezeichneten Klasse gehört. Der Auftritt einer Einteilungsklasse ist gleich 0, 1 oder entspricht den Auftritten mehrerer Systemelementmitglieder, die zu der durch die Pfeilspitze bezeichneten Klasse gehören. Die Einteilungsklassen sind durch Paare abgekürzter Systemelement-Klassennamen bezeichnet, und zwar in der Reihenfolge Eigentümer bis Mitglied. Beispielsweise bezeichnet "sys—pr" den Prozeßnamen-Raum. Es ist eine Einteilungsklasse, welche zu einem Systemelement gehört und jeden diesem System bekannten Prozeß
509 845/0765
2517296
umfaßt. In ähnlicher Weise bezeichnet "sys—ev" den ereignisvariablen Namen-Raum. Es bedeutet die Gruppe aller Ereignisvariablen in dem System.
Binäres Semaphor
Figur la stellt das grundlegende Systsnmittelmanagement dar. Wiederverwendbare Sys tan mitte lob j ekte werden unabhängigen Prozessen zugeordnet. Jedes Systsnmittelobjekt ist seiner eigenen Ereignisvariablen zugeordnet. Die Zugängigkeit eines Systemmittels (Hilfsmittel, Hilfsquelle) wird angezeigt durch die Anwesenheit eines Ereignisauftritts in der entsprechenden Ereignisvariablen. In diesem Fall kann nicht mehr als ein gleichzeitiger Ereignisauftritt pro Ereignisvariable vorhanden sein. Es besteht also eine "fi 1 Beziehung zwischen den Systemmittel-Objekten und den Ereignisvariablen. Im Augenblick werden hierbei Systemmittelklassen mit nur einem Systemmittelobjekt betrachtet. Die vier Systemelementklassen: Systemmittelobjekt, Systemmittelklasse, Ereignisvariable und Ereignisauftritt stehen folglich in einer "7:1 Beziehung zueinander. Dies ist im Diagramm durch eine enge Anordnung der entsprechenden Kästchen nebeneinander dargestellt. Nur eine Ereignisverarbeitungsanforderung pro Prozeß kann vorhanden sein. Folglich sind die Sys temelementenk lassen für den Prozeß und die Ereignisverarbeitungsanforderungen nach dem Prinzip ή ; 1 miteinander verbunden.
Diese vier Systemelemente stellen Konzepte dar, die im klassischen Semaphorprinzip verborgen sind. Die folgenden Schritte in der Entwicklung eines verallgemeinerten Semaphorprinzips erfordern die Aufgabe der so definierten 1:1 Beziehung und betonen ihre Wichtigkeit als unabhängige Konzepte.
509845/0765
Systemelementklassenname
Abkürzung Definition
Typische ereignisbezogene Attribute
cn σ co
Ereignisauftritt
EreignisVerarbeitungsanforderung
Ereignisvariable
evo
epd
ev
Prozeß
Systermiittelklasse
Systemmittelobjekt
System
rc
ro
sys Realisierung eines Ereigniszustandes
Anforderung eines Prozesses
für eine Ereignisfeststellung aufgrund einer
Ereignisvariablen
Zwischenprozeß-Kommunikations-
und Synchronisationsmöglichkeit
Ablaufendes Programm
Zeit des Auftritts
Prozedurname eines nicht programmierten Sprungs
Name
Zustand (erl./nicht erl.) laufende Nummer des anstehenden Ereignisauftritts
laufende Nummer des wartenden Prozesses
Name
Relative Priorität
Eingruppierung derr Systemmittel- Klassenname
Objekte mit gleichen Attributen Nummer des Objekts innerhalb der Klasse
Der Zuordnung zu einem Prozeß n, .
zugängiger Systemelementauftritt ut)3eKtname
Wurzel der Systemelementstruktur
ro co cn
Tabelle 1 Basis-Ereignismanagemenk Systemelementklassen
Name der Einteilungsklasse
Definition Zugehörigkeit
Ordnung
ev—epd
Auf ein Ereignis wartender Prozeß Manchmal
FIFO
pr—ro
cn sys—ev
CD
co
co sys—pr
cn
O
co
Einem Prozeß zugeordnetes Systemmittelobjekt
Namenraum für Ereignisvariable
Namenraum des Prozesses Manchmal
Immer
Immer
FIFO
Alphabetisch dem Namen nach
Alphabetisch dem Namen nach
Tabelle 2 - Basis-Ereignismanagement: Einteilungsklassen
25Ί7296
Der gestrichelte Pfeil "ev—epd" veranschaulicht das Konzept einer "Manchmal"-Beziehung. Er stellt die Gruppe von Ereignisverarbeitungsanforderungen dar und somit von Prozessen, welche auf eine Ereignisvariable warten. Ein gegebener Prozeß kann oder kann auch nicht auf eine Ereignisvariable warten und wird folglich in diese Gruppe eingereiht oder nicht. Die Ereignisverarbeitungsanforderung wird nur dann eingereiht, wenn der Prozeß gegenwärtig auf die Ereignisvariable wartet, welche durch den Eigentümer dieser Gruppe dargestellt wird. In ähnlicher Weise bezeichnet die Gruppe "pr—ro" eine Gruppe von Systemmittelobjekten, welche gegenwärtig einem Prozeß zugeordnet sind. Dies ist ebenfalls eine "Manchmal"-Beziehung. Wenn ein Systemmittelobjekt einem Prozeß zugeordnet ist, wird das Systernelement-Systemmittelobjekt in diese Gruppe eingefügt. Andernfalls wird es nicht eingefügt und das entsprechende Systemmittelobjekt steht auf Anforderung für eine Zuordnung zur Verfügung.
Diesem grundlegenden Ereignismanagement-Aufbau sind drei fundamentale Operationen zugeordnet, nämlich WARTEN, PRÜFEN und EINGEBEN. Diese Fundamentaloperationen werden unten in zwei verschiedenen Formen beschrieben. Zunächst sind sie in Worten beschrieben und dann in Form eines Algorithmus. Dieser Funktions-, definitionsalgorithmus ist in der Programmsprache PL/1 wiedergegeben und verwendet Standarddatenbasisfundamentaloperationen wie find next, find owner, empty u.s.w. für die Gruppenverarbeitung. Eine vollständige Definition dieser Fundamentaloperationen ist in der Literaturstelle (5) zu finden.
Die Fundamentaloperation "Warte auf eine Ereignisvariable" ist wie eine P-Operation. Sobald ein Prozeß eine solche Wartevariable herausgibt und ein Ereignisauftritt vorhanden ist, so wird d-as entsprechende Systemmittel dem Prozeß zugeordnet und der Prozeß entsprechend informiert. Dies schließt die Einfügung eines Syster«-
mittelobjekts in die zum Prozeß gehörige pr-ro-Gruppe ein. Andernfalls wird der Prozeß in die Gruppe ev—epd der auf eine Ereignisvariable wartenden Prozesse eingereiht.
509845/0765
2517296
Tabelle 3a ist die genaue Definition einer Fundamentaloperation "Warten auf eine Ereignisvariable" ausgedrückt als Funktionsdefinitionsalgorithmus.
Tabelle 3a - Funktionsdefinitionsalgorithmus für . "Warten auf eine Ereignisvariable"
wait_on_variable: procedure (p_code, p_evptr, p_prptr);
/· Diese Fundamentaloperation bewirkt, daß ein durch eine Ereignisvariable (p_evptr) dargestelltes Systemmittelobjekt einem Prozeß(p_prptr) zuzuordnen ist, vorausgesetzt, daß es nicht bereits einem anderen Prozeß zugeordnet ist. Andernfalls wartet der Prozeß, bis ihm das Systemmittel · zugeordnet werden kann. '/
■/' Bestimme, ob das Systemmittel bereits zugeordnet ist ·/ if inserted (p_evptr, "pr—ro")
then do;
/' Bestimme, ob das Systemmittel gegenwärtig vom Prozeß
beansprucht wiru '/
call findowner (prptr, "pr ro", p_evptr);
/' Bestimme, ob ein Warten einen unwiderruflichen
Ausfall bedeutet '/
if deadly_embrace (p_evptr, p_prptr) then do;
code = 3;
return;
end;
/' Lasse den Prozeß auf eine Ereignisverarbeitungsanforderung warten
call insert (p_prptr, "ev__epd", "before", p_evptr) ; code =0;
call process-dispatch (p_prptr); end wait on event variable;
509845/0765
2517296
Die Fundamentaloperation zur Überprüfung auf eine Ereignisvariable ist eine ähnliche Operation mit Ausnahme, daß der Prozeß nicht auf das Erscheinen eines Ereignisses wartet. Er wird nur davon informiert, ob das Ereignis eingetreten ist oder nicht und das Systemmittelobjekt wird zugeordnet. Der Funktionsdefinitionsalgorithmus für Prüfung auf eine Ereignisvariable ergibt sich aus Tabelle 3b.
Tabelle 3b - Funktionsdefinitionsalgorithmus für "Test auf Ereignisvariable"
test_on_event_variable: procedure (p_code, p_evptr, p_prptr);
/' Diese Fundamentaloperation verursacht die Zuordnung eines durch eine Ereignisvariable (p_evptr) dargestellten Sysfemmittelobjekts zu einem Prozeß (p_prptr), vorausgesetzt, daß sie nicht bereits zugeordnet ist. Andernfalls wird der Prozeß entsprechend informiert. '/
/' Bestimme, ob das Systemmittel bereits zugeordnet ist '/· if inserted (p_evptr, "pr__ro") then do;
/' assign resource to process '/
call insert (p_evptr, "pr_ _ro", "after",
p_prptr); p_code = 0; return; end;
/' Bestimme, ob das Systemmittelgegenwärtig von einem
Prozeß beansprucht ist '/
call findowner (prptr, "pr ro", p_evptr")
if prptr = p_prptr then p_code = 2;
eise p_code = 1; end test on event variable;
Im Zusammenhang mit dem in Figur la beschriebenen Aufbau ist die Fundamentaloperation "Setze auf Ereignisvariable" eine Art V-Operation, welche die Zuordnung des mi± der bestimmten Ereignisvariablen verbundenen "Systemmittels aufhebt. Die Operation
509845/0765
2517296
umfaßt die Entfernung des Systemmittels aus der "pr—ro"-Gruppe. Sofern die Gruppe wartender Prozesse für diese Ereignisvariable nicht leer ist ("ev—epd"), wird der Prozeß an der Spitze der Warteschlange entfernt und reaktiviert. Dieser Prozeß stellt den Ereignisauftritt fest und erhält Steuerbefugnis über das soeben freigegebene Systemmittel.Dies wird durch Einfügung dieses Systemmittels in die "pr—ro"-Gruppe dargestellt/ welche dem reaktivierten Prozeß zugehört, siehe Tabelle 3c.
Tabelle 3c - Funktionsdefinitionsalgorithmus für "Setze auf Ereignisvariable"
post_on_event_variable: procedure (p_code, p_evptr, p_prptr);
/' Diese Fundamentaloperation bewirkt die Freigabe-desr durch eine Ereignisvariable (p_evptr) dargestellten Systemmittels durch den Prozeß. (p_prptr) dem sie gegengegenwärtig zugeordnet ist. '/
/' überprüfe, daß das Systemmittel dem Prozeß gegenwärtig zugeordnet ist. '/
call findowner (prptr, "pr ro", p_evptr);
if prptr = p_prptr
then do;
p_code = 1;
return;
end;
/' Bestimme, ob ein Prozeß auf das Svstemmittel wartet ·'/ call findnext (prptr, "evepd", p_evptr, eos)? if eos
then do;
/· assign resource object to waiting process '/
call insert (p _evptr, "pr ro", "after", prptr);
/· dispatch waiting process '/
call remove (prptr, "ev epd");
call process_dispatch (prptr); end;
p_code =0;
end post_on_event_variable;
509845/0765
2517296
3. Stillstand-Betrachtungen
An früherer Stelle wurde die Benutzung eines Einzelereignismechanismus als Mittel für die Kommunikation zwischen mehreren Prozessen betrachtet. Beim oben beschriebenen Aufbau ist es jedem Prozeß gestattet/ mit verschiedenen Ereignisvariablen zusammenzuarbeiten. Dies führt zur Möglichkeit von Stillstandsituationen. Ein Stillstand ist eine Situation, wo einer oder mehrere Prozesse auf ein Ereignis warten, welches nicht eintreten kann. Ein Stillstand kann nur durch äußeren Eingriff , beispielsweise durch Entfernen eines oder mehrerer Prozesse vom System und durch Freigabe ihrer Systemmittel erfolgen. Die einfachste Stillstandssituation und auch die am leichtesten feststellbare ergibt sich, wenn ein Prozeß auf ein Systemmittel warten könnte, das ihm bereits zugeordnet ist. Da nur dieser Prozeß die Möglichkeit hat durch Freigabe dieses Systemmittels den angeforderten Zustand herbeizuführen, ist es klar, daß ein Stillstand eintreten müßte, wenn dieser Prozeß in den Wartezustand gelangen könnte. Dies ist natürlich ein trivialer Fall, der als Fehler zu behandeln ist. Die Warteanforderung sollte verbunden mit einer entsprechenden Information zurückgewiesen werden.
Eine ähnliche, aber weniger triviale Stillstandssituation erstreckt sich auf zwei oder mehrere Prozesse. Ein Stillstand kann sich entwickeln, wenn mehrere Prozesse auf die Zugängigkeit von Systemmittel warten können, welche bereits von einem Mitglied dieser Gruppe beansprucht werden. Auch hier ist eine Feststellung des Stillstandes einfach, obwohl nicht derart trivial wie im Falle eines einzelnen Prozesses. Unter Bezugnahme auf das Systemelementen-Strukturdiagramm gemäß Figur 1 wird ein Stillstand leicht festgestellt, wenn die "pr—ro" und die "ev—epd" Einteilungsklassenauftritte beim Durchgang in Richtung nach oben eine ringförmige oder geschlossene Schleifenstruktur offenbaren.
509845/0765
2517296
Figur Ib zeigt schematisch ein Beispiel für die Feststellung eines Stillstands. Der Prozeß Nummer 1 wünscht, daß ihm das SystemmittelA zugeordnet wird. Er erklärt diese Absicht durch Ausführung der Fundamentaloperation Warten auf eine Ereignisvariable. Diese Operation findet zunächst heraus, daß das SystemmittelA nicht verfügbar ist. Es ist dem Prozeß Nummer 3 zugeordnet. Auch andere Prozesse warten cTarauf. Darf der Prozeß 1 auch auf sie warten? Nicht in der dargestellten Situation, weil:
a) Das SystemmittelA ist dem Prozeß 3 zugeordnet (pr—ro set),
b) fler Prozeß 3 wartet auf die Hilfsquelle C (ev—epd set),
c) das Systemmittel C ist dem Prozeß 7 zugeordnet (pr—ro set),
d) der Prozeß 7 wartet auf die Hilfsquelle F (ev—epd set),
e) das .Systemmittel F ist dem Prozeß 1 zugeordnet (pr—ro set).
Würde man hier die Anweisung "Prozeß 1 wartet auf Systemmittel A*, hinzufügen, so ergäbe sich eine geschlossene Schleife. In diesem Fall erfordert sie, wenn man von der Möglichkeit eines schnellen Zwischenspeichers absieht, nur sechs Speicherabrufe, um die angeforderte Fundamentaloperation Warte auf ein Ereignis festzustellen und zurückzuweisen.
Die in Tabelle 3d wiedergegebene Prozedur bei einem unwiderruflichen Ausfall zeigt die PL/1 Älgorithmusbeschreibung des Stillstand-Feststellungsalgorithmus für das Semaphor gemäß Figur la.
509845/0765
2517296
Tabelle 3d - Prozedur für Stillstandsfeststellung
deadly embrace: procedure (p_evptr, p_prptr) returns (bit(l));
/' Diese Funktion prüft die Aufforderung eines Prozesses (p_prptr)f auf ein Ereignis (p_evptr) zu warten t und gibt ein positives Signal ("l"b) zurück, falls das Warten zu einem nicht widerrufbaren Ausfall führen würde. Andernfalls gibt sie ein negatives Signal ("0"b) zurück. ·/
call findowner (prptr, "pr ro", p_evptr);
if prptr = p_prptr
then return ("l"b); if inserted (prptr, "ey_ epd")
then return ("0"b);~
call findowner (p_evptr, "ev epd", prptr);
return (deadly embrace evptr, prptr); end simple_semaphore;
4. Allgemeiner Semaphor-Aufbau
Figur lc zeigt einen etwas allgemeineren Fall, wo Systemmittel-Objekte auf der Basis von Anforderungen zugeordnet werden, welche an eine Systemmittelklasse gerichtet sind. Jedes Systemmittelobjekt in der Klasse ist für den anfordernden Prozeß gleichermaßen annehmbar. Hier zeigt sich die erste Unterteilung der Vierergruppe ro/rc/evo/ev. Man muß hier Ereignisvariable und den zu einer Ereignisvariablen gehörenden Ereignisauftritt behandeln. Der Ereignisauftritt stellt immer noch die Zugängigkeit eines einzelnen Systenunittelobjekts innerhalb der entsprechenden Systemmittelklasse dar. Dies ist dargestellt durch das kombinierte ro/evo-Systemelement. Die rc—ro Gruppe definiert alle Systemmittelobjekte in einer Systemmittelklasse. Die ev—evo Gruppe bestimmt die "zu gegebener Zeit"-Beziehung zwischen der Ereignisvariablen und dem Ereignisauftritt. Die gegebene Zeit ist bestimmt als derjenige Zeitpunkt, wenn das Systemmittelobjekt nicht anderweitig zugeordnet und folglich verfügbar ist. Es liegt
509845/0785
2517296
immer noch eine -1 : 1 Beziehung zwischen der Systemmittelklasse und der Ereignisvariablen vor, wie dies durch das Kästchen rc/ev dargestellt ist. Auch zwischen der Ereignisverarbeitungsanforderung und dem Prozeß besteht wie das Kästchen epd/pr zeigt( eine 1 r 1 Beziehung. Die auf eine Ereignisvariable wartende Prozeßgruppe ev-pr bleibt bestehen. Gleiches gilt für die Systemmittelzuordnungsgruppe pr—ro.
In Verbindung mit Figur Ic wird die Operation SETZE eine Ereignisvariable eine implizite Operation. Sie wird als Teil der Systemmittelzuordnungsfreigabeoperation aufgerufen, welche auf ein bestimmtes Systemmittelobjekt gerichtet ist. Ein Ereignisauftritt wird derjenigen Ereignisvariablen übertragen, die mit der das freigegebene Systemmittelobjekt steuernden Systemmittelklasse zugeordnet ist. Dies wird durch Eingabe desjenigen Ereignisauftritt-Systemelements in die ev-evo Gruppe seiner Ereignisvariablen rückgemeldet, welche mit dem freigegebenen Systemmittelobjekt verbunden ist. Wartet ein Prozeß auf die Ereignisvariable, so wird das Systemmittelobjekt wiederum zugeordnet und der Prozeß wie .zuvor beschrieben, zugeteilt.
Die ausdrückliche Trennung der Ereignisvariablen von den Ereignisauftritt-Systemelementen führt dazu, daß ein Ereignis einen Zustand und eine Reaktion aufweisen kann, die bestimmte Systemelemente beinhaltet. Beispielsweise bezieht sich der Ereigniszustand auf die Verfügbarkeit irgendeines Mitglieds einer Systemk.lasse, während die Ereignisreaktion die Zuordnung eines bestimmten Systemmittelobjekts bedeutet.
Im folgenden wird vorübergehend nochmals das Nachrichtenmanagementproblem behandelt. Es wurde bereits ausgeführt, daß die Feststellung eines Ereignisauftritts die Zuordnung einer einzigen Nachricht zu einem die Nachricht verarbeitenden Prozeß nach sich zieht. Noch nicht beschrieben wurde,wie der Nachrichtenverarbeiter
509845/0765
2517296
von der Idendität der zugeordneten Nachricht informiert wird. Dies ist wegen der asynchronen Natur der übertragung der erforderlichen Nachricht keineswegs ein triviales Problem. Um es zu lösen, wird eine Erweiterung des Semaphormechanismus definiert, welcher es einer V-Operation ermöglicht, eine einmalige Nachricht mit beschreibender Information jedem Ereignisauftritt hinzuzufügen. Umgekehrt wird ein von einer P-Operation festgestellter Ereignisauftritt die entsprechende Nachricht an den sie liefernden Prozeß zurückgeben. Diese Information kann gespeichert werden, bis sie innerhalb des Ereignisauftritt-Systemelements benötigt wird. Im Semaphoraufbau gemäß Figur Ic muß der Stillstand-Feststellungsalgorithmus den Auftritt von drei Einteilungsklassen pr-ro, rc—ro und ev-epd überwachen, um festzustellen, ob ein wartender Prozeß eine geschlossene Schleife für alle Hilfsquellenobjekte erzeugen würde, was zu einem unwiderufliehen Ausfall führen müßte.
5. Semaphoraufbau mit nichtprogrammiertem Sprung
Es zeigt sich, daß der binäre und allgemeine Semaphorsteuermechanismus gemäß den Figuren la und Ic das Konzept der Vordergrundreaktion nicht berücksichtigt. Dieses Merkmal in den Semaphoraufbau einzuführen kann man die gleichen Systemelementklassen beibehalten, muß aber die Beziehungen zwischen den Klassen neu ordnen. Dies führt zur Definition mehrerer neuer Einteilungsklassen und funktioneller Fundamentaloperationen.
509845/0765
2517296
Figur 1d zeigt das Strukturdiagramm des Aufbaus eines Semaphormechanismus mit dem Merkmal des nicht programmierten Sprunges (Trap). Dieses Abfangsemaphor ist zu unterscheiden von dem binären und allgemein steuernden Semaphor, das in den Figuren 1a und Ic wiedergegeben ist. Es ist zu beachten, daß die Ereignisverarbeitungsanforderung, welche auf einer Eins-für-Eins-Basis mit dem Prozeß -Systemelement bestand, nunmehr entfernt und auf einer Einsfür .Eins-Basis mit der Ereignisvariablen neu zugeordnet wurde. Folglich ist die ev—epd Gruppe verschwunden und eine neue pr—epd1 Gruppe entstanden. Dies ist eine "Zu gegebener Zeit"-Gruppe, welche bedeutet, daß die Ereignisverarbeitungsaufforderung in der Rolle eines Mitgliedes zu gegebener Zeit in die Gruppe eingefügt wird. Dieser Zeitpunkt ist gegeben, wenn der Eigentümerprozeß aufgrund eines Abfangsemaphor eine Fundamentaloperation "Setze bei einem Ereignis einen nicht programmierten Sprung" durchführt. Es wurde also die pr-epd2 Gruppe hinzugefügt. Dies ist eine "Zu gegebener Zeit" Gruppe, wo die Einfügung einer Ereignisverarbeitungsaufforderung bedeutet, daß Ereignisauftritte warten, welche dem Prozeß noch nicht bekanntgeworden sind, weil sie zu einer Zeit auftraten, als der Prozeß eine Abfangprozedur ausführte und somit nicht unterbrochen werden konnte.
Der Einfluß des Abfangmerkmals auf den Ereignisangäbemechanismus kann wie folgt zusammengefaßt werden: Wird ein Ereignisauftritt dem Semaphor gemeldet, so wird der laufende Zustand des Ereignisverarbeitungsbefehls in Bezug auf seine Einordnung in die pr—epd1 Gruppe überprüft. Ist die Ereignisverarbeitungsauffordernung gegenwärtig in eine solche Gruppe eingeordnet, so läuft eine Sprungaufforderung ab und der Ereignisauftritt wird dem Prozeß zugeordnet, dem die pr-epd1 Gruppe zugehört. Das mit dem Ereignisauftritt verbundene Systemmittelöbjekt wird in die zu diesem Prozeß gehörige pr—ro Gruppe eingereiht. Läuft der Prozeß hingegen gerade nicht im Abfangmodus ab, so erfolgt ein Aufruf an diejenige Abfangprozedur, welche durch die Fundamentaloperation "Seite bei einem Ereignis einen nicht programmierten Sprung" bezeichnet ist.
509845/0765
2517296
Diese Prozedur führt jeweils diejenige Aktion durch, welche für die dem Ereignisauftritt zugeordnete vordergründige Aktivität bewirkt und führt dann den Prozeß aus den vorherigen Arbeitszustand zurück. Führt der Prozeß gegenwärtig eine Pbfeng-Prozedur aus, so wird der Ereignisauftritt in die epd—evo Gruppe eingefügt, wodurch kenntlich gemacht wird, daß die Abfangprozedur später ausgeführt werden kann.
Ist die Ereignisverarbeitunsaufförderung gegenwärtig nicht in eine pr—epd1-Gruppe eingereiht, so wird der nicht programmierte Sprung nicht eingeführt und der Ereignisauftritt wird in die ev—evo Gruppe statt in die epd—evo Gruppe eingefügt. Tritt das Ereignis mehrmals auf (Systemmittelobjekte werden von Prozessen freigegeben),so werden alle die freigegebenen Systemmittel darstellenden Ereignisauftritte in die ev—evo Gruppe eingefügt.
Sobald eine Fundamentaloperatiön "Setze bei einem Ereignis einen nicht programmierten Sprung" ausgeführt ist, wird der gegenwärtig in die ev—evo Gruppe eingefügte Ereignisauftritt entfernt und in die Gruppe epd-evo eingegeben. Die Anzahl der Ereignisauftritte, die entfernt und eingefügt werden können, wird durch einen Maximalzahl-Parameter des Ereignisverarbeitungsbefehls überwacht. Dieser Zählstand kann auf 1, 2 oder mehr gesetzt werden. Für jeden übertragenen Ereignisauf*ritt wird die Abfangprozedur ausgeführt. Jedoch wird jede Durchführung einer solchen Prozedur solange verzögert, bis die vorhergehende Ausführung abgeschlossen ist. Jede Abfangereignisverarbeitungsaufförderung mit unangemeldeten Ereignisauftritten wird in die Gruppe pr—epd2 eingefügt, so daß sie die Vervollständigung der gegenwärtig ablaufenden Abfangprozeduren abwarten können. Der normale Mechanismus zur Ereignisfeststellung wird mit einem Abfangsemaphor gesperrt. Es ist für den Prozeß nicht zulässig, auf ein solches Abfangsemaphor zu warten oder «s zu prüfen, wenn ihm durch die durch den nicht programmierten Sprung aufgerufene Prozedurdurchführung Ereignisauftritte zur Kenntnis gebracht worden sind.
Das folgende Beispiel veranschaulicht eine typische Anwendung des Abfangsemaphor. Betrachtet wird ein Prozeß P1, dessen Ablauf
509845/0765
2517296
durch wiederkehrende Ereignisauftritte gesteuert wird, welche einer Ereignisvariablen E1 auferlegt werden. Jeder Auftritt ist mit einer Nachricht verbunden, welche die Art des angeforderten Prozesses anzeigt. Im typischen Fall würde diese Verarbeitung als Durchschaltreaktion (gate) behandelt werden, so als ob ein einziges Semaphor benutzt würde. Obwohl der genaue Zeitpunkt jedes Ereignisauftritts nicht vorhergesagt werden kann, ist doch die Annahme vorhanden, daß ein solches Ereignis tatsächlich erscheinen wird. Es ist deshalb für den Prozeß angemessen, auf solche Ereignisauftritte zu warten. Nunmehr sei angenommen, daß eine Abfang-Ereignisvariable E2 mit einem Ereignis verbunden ist, dessen Auftritt möglich aber nicht wahrscheinlich ist. Dies kann z.B. eine Ausnahmesituation sein, welche eine dringende Reaktion in einem Teil des Prozesses P1 erfordert. Das Problem liegt darin, daß P1 nicht wirklich annehmen kann, daß E2 jemals auftritt und folglich nicht darauf warten sollte. Zusätzlich kann mit der Reaktion auf einen Auftritt von E2 eine gewisse Dringlichkeit verbunden sein,
welche andere in Verarbeitung befindliche Routinearbeit irgendwie gesichert werden sollte, beispielsweise diejenige, die mit dem Auftritt von E1 verbunden ist. Die Benutzung der Testoperation wäre in diesem Falle nicht ausreichend.
Die Benutzung eines Abfangsemaphor bietet hier eine klare Lösung dieses Zwiespalts. Die an E1 gemeldeten Auftritte werden wie zuvor bearbeitet. E1 wird als Durchschaltereignis behandelt. Der Prozeß P1 stellt durch eine Warteoperation die E1 auferlegten Auftritte fest und verarbeitet sie als durchgeschaltete Reaktion. E2 wird als Abfangereignis betrachtet. Seine Auftritte werden während der Abfangoperation festgestellt und mit Hilfe der speziellen Abfangprozedur verarbeitet. Durchschalte- oder Gatterereignisse werden nacheinander in einem Ereignisverarbeitungsprozeß verarbeitet, während Ausnahmeereignisse jeweils dann verarbeitet werden, wenn sie auftreten.
Ein Prozeß kann aufgrund einer Gatterereignisvariablen in einem Wartezustand sein und gleichzeitig eine wirksame Abfangereignisverarbeitungsanforderung in Verbindung mit einer oder mehreren
509845/0765
2517296
Abfangereignisvariablen haben.Wartet der Prozeß auf eine Gatterereignisvariable, so führt die Beaufschlagung einer Abfangereignisvariablen mit einem Ereignisauftritt dazu, daß der Ereignisauftritt der Ereignisverarbeitungsaufforderung zugeordnet wird, ein implizierter Aufruf an die Abfangprozedur herausgeht und der Prozeß reaktiviert wird. Er führt die Abfangprozedur durch und
wird
anschließend bei Rückkehr von der Abfangprozedur die Warteoperation eingeleitet.
Das früher beschriebene Beispiel eines Nachrichtenleitungsprozessors ist ein Fall für die Benutzung von zwei Ereignisvariablen; die eine Abfangereignisvariable wird festgelegt, während jeder Ereignisauftritt die Ankunft eines Bytes in einem Pufferspeicher definiert, das schnell entfernt werden soll. Eine durchgeschaltete Ereignisvariable wird festgelegt, während jeder Ereignisauftritt ein Byte definiert, welches aus dem Speicher entnommen wurde und auf die bei ihm erforderliche Aufbereitung wartet. Ein einziger Prozeß könnte die Vordergrundentleerung des Pufferspeichers mit einer Abfangprozedur und die Hintergrundaufbereitung mit einer Gatterprozedur erledigen. Die höhere Prozedur der Entleerung des Pufferspeichers wird durch eine unmittelbare Unterbrechung des Prozesses entweder im Wartezustand oder im Hintergrundauf bereitungszustand festgestellt, um die Abfangprozedur auszuführen, welche der Aufgabe.· den Puffer zu entleeren, zugeordnet ist. Ein einzelner Prozeß kann eine Anzahl von Fundamentaloperationen "Setze bei einem Ereignis einen nicht programmierten Sprung" für verschiedene Abfangereignisvariablen verfügbar haben und könnte gleichzeitig mehrere unterschiedliche Kommunikationspufferspeicher überwachen. Eine besonders wichtige Eigenschaft des Abfangsemaphor liegt in der Möglichkeit, für einen Prozeß seine normalen Aktivitäten abzuwickeln, während asynchron hierzu das Semaphor die Beaufschlagung mit Abfangereignisauftritten verfolgt. Die Operation "Setze bei einem Ereignis eine nicht programmierten Sprung" führt zur Markierung des laufenden Prozesses mit dem Semaphor als Kandidat für die Zuordnung potentieller Auftritte.
509845/0765
2517296
-2t-
6. Erweiterter Semaphor-Aufbau
Das bislang anhand der Figuren 1a und 1c beschriebene Gattersemaphor und das anhand von Figur 1d .erläuterte Abfangsemaphor sind in bestimmtem Sinn beschränkt. Der nächste Schritt sucht diese Beschränkung zu beseitigen. Das Gattersemaphor nimmt die Anforderung eines Prozesses nur dann an, wenn der Prozeß tatsächlich auf das Auftreten eines Ereignisses wartet. Folglich kann ein Prozeß nur dann versuchen, die Steuerverfügung über eine Hilfsquelle zu bekommen, wenn er hierauf wartet. Während des Wartezustandes kann er keine andere Verarbeitung durchführen. Wünscht er Steuerzugriff zu verschiedenen Hilfsquellen, welche von getrennten Semaphors überwacht werden, so kann er nicht auf beide oder alle gleichzeitig warten. Er ist gezwungen, den Zugriff zu den Hilfsquellen nacheinander vorzunehmen und dementsprechend auch die Verarbeitung, welche an sich parallel erfolgen könnte. In ähnlicher Weise ist das Abfangsemaphor oder Haltepunkt-Semaphor insofern begrenzt, als zu einer gegebenen Zeit jeweils nur ein Prozeß mit einer Abfang-Ereignisverarbeitungs-Aufförderung beaufschlagt sein kann. Dies bedeutet, daß die schnelle Verarbeitung von Abfangereignissen auf die Fähigkeit eines einfachen Abfangprozesses beschränkt ist, die Abfangprozedur auszuführen und dann zur Behandlung des nächsten Ereignisauftritts zurückzukehren. Diese beiden Probleme führen zu der gleichen grundlegenden Änderung der Steuerstruktur. Diese Änderung ist in Figur 1e dargestellt. In diesem Systemelementaufbaudiagramm ist das Ereignisverarbeitungs-Aufforderungs-Systemelement getrennt von beiden Systemelementen des Ereignisvariablen-Prozesses. Das Ergebnis bedeutet eine Vielfach-Zu-Vielfachbeziehung kann nunmehr bestehen zwischen dem Ereignisvariablen-Systemelement und dem Prozeß-Systemelement. Das Systemelementfireignisverarbeitungsanforderung bestimmt jetzt klar, daß ein Prozeß vom Ereignismanagementmechanismus verlangt, eine bestimmte Ereignisvariable zu übernehmen und in seinem Auftrag zu überwachen. Dieser Uberwachungsauftrag kann entweder im Abfangoder im Gatter-Modus erfolgen. Aus dem Gesichtspunkt der Gatter-Überwachung kann der Ereignismechanismus den Auftritt eines Ereignisses feststellen und es unverzüglich dem zuerst zugängigen
509845/0765
2517296
und nicht besetzten Systemelement für eine Ereignisverarbeitungsaufforderung zuordnen. Außerdem würde er sofort die zugehörigen Systemmittelobjekte dem anfordernden Prozeß zuordnen. Da gleichzeitig mehrere Anforderungen auf Ereignisverarbeitung anstehen können, können gleichzeitig Systemmittel aus mehreren verschiedenen Systemmittelklassen angesammelt werden. Außerdem hat der Prozeß die Freiheit, aktiv weiterzulaufen, bis er die Ergebnisse der Ereignisverarbeitungsanforderung vorliegen hat. Nur dann wartet er auf die Ergebnisverarbeitungsanforderung, so daß gewartet werden kann, falls das Ereignis nicht eingetreten ist oder weiterläuft, falls das Ereignis aufgetreten und ihm zugeordnet worden ist. Vom Standpunkt einer Abfangaufforderung ist es jetzt für mehrere Prozesse möglich, das gleiche Semaphcrmit Ereignisverarbeitungsaufforderungen zu beaufschlagen. Auf diese Weise können die Möglichkeiten der gleichzeitigen Verarbeitung durch unabhängige Prozesse zum Tragen gebracht werden und jede Abfangaufforderung höherer Priorität, die zu einem bestimmten Zeitpunkt vorhanden ist, ausführen.
Um diese Ereignisüberwachung einzurichten, wurde die Operation "Setze bei einem Ereignis einen Abfangpunkt" übereingehend verallgemeinert, daß eine Fundamentaloperation "Beginne mit der Ereignisverarbeitung" entweder mit oder ohne Abfangpunktoption entsteht. Da der Prozeß weiterarbeiten kann, braucht er auch eine Fundamentaloperation "Beende die Ereignisverarbeitung", um die Aufforderung abzugeben, wenn seine Aufgaben sich ändern. Diese die Ereignisverarbeitung beendende Operation gibt jeden Ereignisauftritt, der der Aufforderung zugeordnet war, frei und kehrt alle System-
mittelobjektzuordnungen um, welche stattgefunden haben. Die vollständige Trennung des Systemelements der Ereignisverarbeitungsaufforderung von den Systemelementen der Ereignisvariablen und des Prozesses verändert die Struktur der Klassen, zu denen sie gehören. Die ev—epd Gruppe aus den Figuren 1a und 1c sowie die pr—edp1 und die pr-epd2 Gruppe aus Figur 1d treten nunmehr alle auf, da das Semaphor entweder als Abfang- oder als Gattersemaphor wirken kann. Beide Gruppen wurden von der Gruppenzugehörigkeit zu gegebener Zeit zur geforderten Zugehörigkeit als Ereignisverar-
509845/0765
"τ ■
2517296
bei-tungsaufförderung umgewandelt,* wenn dies überhaupt existiert, .muß .:es"vin -beide Gruppen eingeführt· werden.· Eine neue Gruppe epd— ;pr" wurde "dort hinzugefügt, wo das Prozeß-Systemelement eine Zugehörigkeit zu: gegebener ^Zeit hattet Der Zeitpunkt ist gegeben,-wenn der Prozeß-auf eine Ereignisverarbeitungsaufforderung vom Gattertyp wartet. Tabelle 3 zeigt alle' Gruppen und ihre Definitionen im Bereich des erweiterten Semaphoraufbaus. -···--■■'' ■'■-:-'■'-'■"■■■'■
ϊ-5 «οι jco j^ffu.·!«;^1· id.-'·-
509845/0765
NAME
DEFINITION.
ZÜGEHÖRIGKEITSTYP ' , '.:■'■
TYPISCHE ORDNUNG
edp—pr
epd— evo
ev—epd
cn
ο
ev—evo
co
00 -
cn pr-r-epd1
O
CD
cn
pr-epd2
pr--ro
rc—ro
sys—ev
sys—pr
Prozeß wartet! auf Durchführung einer Ereignisverarbeitungsaufforderung manchmal
Ereignisauftritte sind einer Ereignis^
Verarbeitungsaufforderung zugeordnet,
wobei der Prozeß von der Zuordnung nicht
informiert ist ; ; ; _ „ manchmal
Ereignisverarbeitungsaufforderung anstehend
für eine. Ereignisvariable .; ; immer ·.;
Ereignisvariabie mit anstehenden Ereignisauftritten beaufschlagt aber nicht einem Ereignisverarbeitungsaufruf'zugeordnet manchmal
Herausgabe einer■Ereignisverarbeitung?auf-; T :'.;. . förderung durch einen^Prozeß, die gegen-, , wärtig bei einer,Ereignisvariablen ansteht < · immer
Ereignisverarbeitu'ngsaüfförderung mit nicht angekündigten Ereignisauf tr it ten,. ·■■ manchmal
Systemmittelobjekte dem"Prozeß zugeordnet manchmal
Systemmititelpbijekte in einer Systemmittel-;
klasse -, ^; ^■% y\ ;■; ;;-::; α ;..,. ,V :-^. .:;, ■. ο ' ■·. immer "·'·
Ereignisvariablen'im System ' immer
Prozeß im System % ':)'■■ '" immer
Tabelle 3 - Basisereignismanagement: Erweiterte Semaphor-Gruppenklassen
N/A
FIFO
FIFQ/PRIORITÄT
FIFO/LIFO/
PRIORITÄT
C
I
25 V
", FIFO 7296
FIFO
N/A
: N/A :
Name
- Name
sen
r .::/ "h^ . 2517296
Die Basisoperation zur Einleitung einer Ereignisverarbeitung ■' stellt den Anspruch eines Prozesse auf jeden Ereignisauftritt fest, der unter einer Ereignisvariablen zugängig werden kann. Zwei Optionen sind mit dieser Basisoperation gewährt. Die erste Option bezieht sich darauf, ob die Anforderung eine Abfangpunkt- ' anforderung oder eine Gatteranforderung sein wird. Die zweite • Option liefert die Spezifikation der Mehrfachauftritte des in , eine Wartqschlange für einen Piszeß einzureihenden Ereignisses. Tabelle . 4 A zeigt den Algorithmus zur Funktionsdefinition1 der Basisoperation für die Einleitung einer Ereignisverarbeitung in ; PL/1 Sprache. Die Prozedur zur überprüfung des Ereignisses bestimmt, ob irgendwelche Ereignisauftritte zugängig sind und ord- ;. net sie der Ereignisverarbeitungsaufforderung bis zu ihrem maxi-■ malen Auftrittszählerstand zu. Diese Prozedur teilt die Operation für die Einleitung einer Ereignisverarbeitung mit anderen i< Basisoperationen. -Tabelle 4B zeigt diese Prozedur. ·.■ .
:-;Tabelle 4A: Algorithmus für die Funktionsdefinition der Einleitung -'■ einer Ereignisverarbeitung '■;. :- h {
initiate_event_processing:.: procedure ' (p_code, p__evptr, p_prptr, >p_trap_procedure, p_max_occ_cnt) ; ; " -.·■■, ; -£ '■■■:■ ; ;
■/' Dies Algorithmus zur'Funktionsdefinition bewirkt, daß ein Prozeß (p_prptr) ein aktiver Kandidat für die Verarbeitung eines Ereignisauftritts wird, mit dem die Ereignisvariable P-evptr) beaufschlagt ist. Eine Abfangpunktoption kann durch Benennung einer Prozedur gekennzeichnet werden, welche von dem anfordernden Prozeß unmittelbar bei Feststellung eines Ereignisauftritts ausgeführt wird, sofern er nicht gegenwärtig eine Haltepunktprozedur ausübt. Der Parameter max-öcc_jcnt bestimmt die Maximalzahl von Ereignisauftritten, welche dem Prozeß zu gegebener. Zeit zugeordnet werden können >(epd__evo Gruppe) . :'/;. ^ * J ■"■ ί ■■ j>■''·>. ■■■
/' Prüfe ob der Prozeß mit einer Ereignisvariablen bereits aktiv
call findnext (epdptr, "pr_^epd", p_prptr, eos); if evptr = p_evptr
then do;
p_code "1;
return;
end;
call findnext (epdptr, "pr__epd", epdptr, eos); end;
509845/0765
2517296
/' Erzeuge einen Aufruf für eine Ereignisverarbeitung für den Prozeß und lege seine Attribute fest1/ - ·■■ .^/ · .
call create (epdptr, "epd"); ■ :..
epdptr - opd.trap " p_trap_pröcedure; · :-;:; ---r ' "■-.; : \ epdptr - epd.max_occ_cnt " p_max_occ_cnt; . . ,.....'■
/' Füge den Aufruf für eine Ereignisverarbeitung in die Gruppen
"ev epd und pr epd"ein'/ .. .., ..,. Λ . . : . .', .... .. .
call insert (epdptr,"ev epd", "before", p_evptr); ' \ ,
call insert (epdptr, "pr epd", "after", p_prptr);
/' überprüfe das Anfangsereignis '/ ' ' .
call evaluate_event (p-evptr); .
p_code =0; . ;
end initiate_event_processing; . ,
Tabelle 4B: Prozedur zur überprüfung eines Ereignisses
evaluate event" procedure (p_evptr);
/' Diese Prozedur wird aufgerufen, sobald ein Systemmittel freigegeben wird, eine Anforderung für eine Ereignisverarbeitung wird erzeugt, ein Prozeß testet die Ereignisvariable, ein Prozeß wartet',;, auf eine Ereignisvariable oder eine Abfangpunktprozedur wird abge-."'.':~: schlossen1/· \
/' Nachforschung nach einer nicht erledigten Aufforderung.zur Ereignisverarbeitung solange als ein Ereignisauftritt vorhanden ist.1/ call .findnext (epdptr, "ev__epd"., p_evptr .'ν .■'■, ■■,-... '■''.■■':■
do while (Aeos & Λ empty (p_evptr, "ev evo")) ; .
call--findnext (evoptr, "epd__evo", epd__evo", epdptr,Λeos_2) ;: - . i(:_do count " 1. .to eptptr- >epd.max_occ_cnt while ( eos_2).; ,,.,·. .,-.
call findnext (evoptr, =epd__evo", evoptr, eos_2); ί·ί«ό end;1 :: ·;τ:; ΐ·:'-;- ·■ -V:.-.'..-;^ ;>-^-^x .~Τ·;·.ν.ν ·'. :-..::\ ■■■■.■. ν.... ..-.■■· ■ ■„■■■> .■-,■■: .;&
ΐ1·;i:' - -/'-Bestimme ob der Maximalstand erreicht ist '/ ./ t-
,. ; dp while (count .-<epdptr .-.-!^ epd.max occ ent & Λ empty (ρ evptr,
"ev__evo")); " " -
--- call-findnext (evoptr, =ev__evo", p_ evptr, eos) ; ο -! ·-
--r-call. remove (evoptr, "ey_evo")-; ; . _ , ■/. ■ '..-..··, ■ : ;
■■:.·■!*·:ί./;1: Ordne dem Prozeß Systemmittel zu '/ .■·..-.
call findowner (ptptr,, "pr epdl" , epdptr) ;' . ,
"call insert (evoptr, "pr ro", "after" prptr);
/' Bestimme ob eine Abfangpunkt- oder eine Gatteraufförderung vorliegt1
if epdptr-> epd.trapΛ =" " then do"
/'Haltepunktanforderung '/
/' Bestimme obsidh der Prozeß gegenwärtig im Abfangpunktmodus abspielt '/
if prptr -s pr.status Λ = "trapped" then call trap (epdptr, evoptr); else do;
call insert (evoptr, "epd evo", "before" epdptr);
if inserted (epdptr, "pr_~epd2")
/' Informiere den Prozeß über den verzögerten
Haltepunkt '/
then call insert (epdptr, "pr epd2", "before 2,
9845/0765
251.7296
/' Bestimme pb der Prozeß zur Zeit wartet ?/; ^^.;, ::. . ;, ;
if empty (epdptr, "epd__pr") " ., · ;
~ /' Setze den wartenden Prozeß wieder in Gang und informiere über das Ereignis '/' -—·"".: ' ^
call findnext; (prptr, epd__pr, evoptr) ; -'-·; "■■ .'-■■■'
. call remove (prptr, (epd pr") ; .; ϊ --.^t ~■■'-. -u:n v^ -.
call dispatch_process prptr, evoptr); : ; · ^ ■ end; _ ·.
.else do; _ . ■ ■·■ . " /■ ,\ '■■. ; .^ · ..·'■■■··'.
/· Ordneden Ereignisauftritt der Anforderung von Ereignisverarbeitung zu1/
call insert (evopr, aepd evo" , "before" ,. epdptr) ;
count = count + 1;
call findnext?^(epdptr,v=ev__epd" , epdptr, epd ;" ; 5^-";1 '^' ■-.·■■■ ·
end evaluate_event;
Die,Fundamentaloperatipn zur Beendigung einer.Ereignisverarbeitung bewirkt, daß das die Ereignisverarbeitung anfordernde Systemelement gelöscht ;Und damit die-Überwachung der Ereignisyariablenvfür den Prozeß beendet ..wirdJ^Jeder Ereignisauftritt, der dem Prozeß zugeordnet wurde aber für den der Prozeß keine Ankündigung erhalten hat, wird zurückgegeben und anderen Anforderungen für: Ereignisverarbeitung zugängig gemacht. -Jedes durch den Ereignisauftrittv;gesteuerte Systemmittelobjekt wird freigegeben. Tabelle 4C zeigt den Algorithmus zur Funktionsdefinition einer Fundamentaloperation zur Beendigung der .Ereignisverarbeitung. Sie bezieht sich auf die Ereignisüberprüfungsprozedur gemäß Tabelle 4B, um festzustellen, daß jegliche zugängig gemachten.Ereignisauftritte wenn möglich nichtig sind. .
5098A5/0765
2517296
Tabelle 4C: Algorithmus zur Funktionsdefinition zur Beendigung einer Ereignisverarbeitung ' . ■■■:.■-....
terminate_event_processing: procedure (p_code, p-_epdptr, p_prptr) ;
/'■ Die gegenwärtig einer Aufforderung zur Ereignisverarbeitung zugeordneten Ereignisauftritte werden zusammen mit ihrem zugeordneten Systemmittelobjekt; freigegeben. Sie werden jedem anderen nicht bedienten Aufruf zur Ereignisverarbeitung in anderen Prozessen zugängig gemacht.'/ . . .„
/' Stelle fest, daß die angewählte Aufforderung zur Ereignisverarbeitung zum Prozeß gehört '/ ' : -
call findowner (prptr, "pr epd", p_epdptr);
if prptr = p_prptr '- ;" ^;.-' ' "'-.'. - ' . ' ■ :' · ■ ■";"■■" then do; ': . " . ■ \ : ^ - :\ . ■.
p_code = 1 . - ' " ■,■·■·.·
return;
end;
call findowner (evptr, "ev_ epd", p_epdptr);
/'Gib jeden nicht verarbeiteten Ereignisauftritt frei '/ . .·,., do while (Aeos) .
call remove (evoptr, "epd evo");
call insert (evoptr, "ev evo", "after", prptr; . ,
call remove (evoptr, "pr ro");
call findnext (evoptr, "epd evo", p_evptr, eos);
enc;
/' Lösche die Anforderung zur "Ereignis verarbeitung ■·/ -■';·· ^
call remove (p_epdptr, "ev epd"); -'■ .
call remove (p_epdptr, "pr epd");
call destory (p_epdptr, "epd");
/' überprüfe das Endereignis .'/ . ;
call evaluate_event (evptr) ; ·.; ,, : Λ . . ,:
p_code =0; . ;
end termiriate_event_processing;
Die Basisoperation Warten-auf-eine-Ereignisvariable für die, erweiterte Semaphorstruktur ist der gleichen Basisoperation für den binären und allgemeinen Samphoreaufbau sehr ähnlich. Der Haupt- ' unterschied besteht darin, daß der erweiterte Semaphoraufbau des dem Prozeß erlaubt, ein Systemmittel aufzunehmen, sobald es zu-' gängig wird. Damit ergibt sich eine größere Möglichkeit, daß bei der Ausübung der Warteoperation diese nicht zu warten braucht, weil das Systemmittelobjekt bereits zugeordnet ist. Der .Algorithmus zur Funktionsdefinition für das Warten-auf-eine-Ereignisvariabfe ergibt sich aus Tabelle 4D. Da das erweiterte Semaphor Systemmittelobjekte aus einer Systemmittelklasse zuordnet, wird eine Hinweisnachricht gegeben, um dem Prozeß etwas über den Hilfsmittelauftritt mitzuteilen. Dies war beim binären Semaphore nicht nötig, weil die Systemmittelklasse genau den gleichen Systemmittelauftritt hatte.
509845/0765
2517296
Tabelle'4D::Algorithmus für die Funktionsdefinition zum Warten-' auf-eine Ereignisvariable '
wait2on^event_variable: procedure (p^code, p_epdptr, p_prptr p-notification-message);
/' Diese Fundamentaloperation bestimmt, ob eine von einem Prozeß gegebene'Aufförderung zur Ereignisverarbeitung erledigt ist. Ist diese Aufforderung bedient, so wird der Prozeß entsprechend informiert, andernfalls wartet der Prozeß, bis diese Aufforderung bedient ,ist,1/ ,: ; , ■-.■·-■>-,·
/' Stelle fest, daß die Aufforderung zur Ereignisverarbeitung zum Prozeß gehört1/ . .·. . ... .. .
call findowner (prptr, "pr epd", p_epdptr);
if prptr = p_prptr . : :
then do;
p_code - 1 ; ..'·..
/' Bestimme, ob es sich um eine Aufforderung zur Gatter-Ereignisverarbeitung handelt '/
. if p_epdptr -> epd.trap = " "
■■ '..then do; ·'■'■. ■ ■/ ' . -'"■'■■'■ :-r-y■■■■·■■■:■-■: ■■■.,· -τ.. ■ . .·.
return? ' -:
/' Bestimme,, ob das Ereignis eingetreten ist './
if empty (p_epdptr, "opd evo")
/· Informiere über Ereignisauftritt '/ .. \ ,
call findnext (evoptr, "opd evo", p_epdptr, eos) ; ,
p_notification_message = evoptr-■?■ evo.message; '
call remove (evoptr, "epd evo"); ; - - ^ ;
/' Bestimme ob ein Warten zu einem unwiderruflichen Stillstand v führen würde '/if deadly_embrace (p_epdptr, p_prptr);
then return; ; -
/' Prozeß wartet auf Anforderung zur Ereignisverarbeitung '/
call insert (p_prptr, "epd pr", "before", p_epdptr);
call process_dispatch (prptr);
end wait_on_event_variable);
Der Algorithmus zur Feststellung eines unwiderruflichen Fehlers (deadlock) ist beim erweiterten Semaphor praktisch der gleiche wie beim allgemeinen Semaphor (Figur 1c). Er wird aufgerufen als Teil der Basisoperation Warten-auf-eine-Ereignisvariable, um sicherzustellen, daß der Prozeß nicht indirekt auf sich selbst wartet. Indem das Warten auf irgendein Mitglied der Klasse von
509845/0765.
2517296
Systemmitteln einschließt, werden die Möglichkeiten für einen unwiderruflichen Fehler reduziert. Jedoch muß die Möglichkeit überprüft werden.
Tabelle 4E: Funktion zur Feststellung eines unwiderruflichen eine Verriegelung bewirkenden Fehlers
deadly_embrace: procedure ((pjpdptr), (p_prptr>) returns (bit(1)); /' Diese Funktion bestimmt, ob wenigstens ein Systemmittelobjekt in einer Systemmittelklasse besteht, welches nicht . . direkt oder indirekt einen bestimmten Prozeß zugeordnet ist'1/
call findowner (evptr, "ev__epd" , p_epdptr) ;'"" '""' ' ""'■ :'L ·ν '.■ "'::-
call findnext (roptr, "rc ro, evptr, eos) ; ·..' ; . : , εαν
do while ( eos); ....·..-
call findowner prptr, "pr ro", roptr);
/' Bestimme ob der Prozeß Verarbeitung anfordert '/ . ; if prptr Λ = p_prptr ■',· ■.,·■ ..-..■■ ■; ·.·.:.. '-j·'.^.-··.·■ ; ■..-.■ ■■■ .■..:' ■ vy;. ■.■::..■.- ι-;..:τ.
then do;
V1 Bestimme ob der Prozeß läuft ·/ · ;'r- 7- ■»·'-·_ :■■■ ..;>;?;; ; if A. inserted (prptr, "epd__pr") ,:-:-v :y:c^^> A^v-. ■■■■ ;;;,·■;, vv-;; ^:
then return (o"b); ~ "
/'Bestimme ob der Prozeß auf den anfordernden Prozeß wartet1/ ~
call findowner (epdptr, "epd pr", prptr); : - .,^
. if A deadly_embrace ' (epdptr, p_prptr) ; ; """". ■■■:--.■■-■■■■■-■■ \-.v-*·
then return"("0"b) ; '.. ',; - ~ ..-: .,^--"Wlu^y^- ,^ΐνν.;: j^\
/'Nachsehen ob ein anderes Systemmi ttelob jekt, freigegeben ,, .,
werden kann '/ . - . :„ ...
call findnext (roptr, "rc ro", roptr ^i eos) ; ■'.-- ν -/ι;; ~< ..■;■·. ^sru, :h;
/' Unwiderrufliche Abschaltung durch alle. Systemmittelobjekte der Systemmittelklasse '/ ." ' -■ - .:: . .,... . .^.-. ..·.,·.>:;·.■.■. ...>.·./. ,^
esabla a derjenigen des Wartens auf eine Ereignisvariablej___mit--^er^Ausnahme, daß der Prozeß ein Signal "nicht gescheJxeir^^^fhält statt in.den .,r; Wartezustand überzugehen^t^jweirn^Has Ereignis nicht eingetreten ist. ;i Der Algorxjthjnue'-iiSrFunktionbestimmung für die Oberprüfungs-Basis- :
50 9 845/07 6
2517296
51-01339 Ge
Der.Firmware/Hardwaremechänismus gemäß der Erfindung überprüft die Anfrage eines Prozesses nach einem Systemmittelobjekt und. /■-bestimmt/ ob dieses Systemmittelobjekt zugängig ist oder nicht. Im einzelnen stellt der Mechanismus fest, wenn ein Systemmittelobjekt nicht zugängig ist, weil es gegenwärtig einem anderen Pτον zeß zugeordnet ist, der gegenwärtig direkt oder indirekt auf den Prozeß wartet, der die Anfrage gestellt hat. Wäre es den Prozessen möglich auf das gewünschte Systemmittelobjekt zu'warten( so ergäbe sich ein unwiderruflicher Stillstand, weil das Systemmittelobjekt nie von demjenigen Prozeß freigegeben werden könnte, der es t; ■ . gegenwärtig hält. Das Ergebnis eines solchen Stillstandzustarides wäre, daß der Prozeß selbst eine Arbeit aufweist, die unvollständig ■ist und ,auch nicht abgeschlossen werden kann, weil die beiden Prozesse und gegebenenfalls noch mehr Prozesse niemals ihre Aktivität wieder aufnehmen könnten. ,. V; V , , fl-E - , :
Es gibt"vier"verschiedene Fälle, die von einem Oberprüfüngsmechanismusauf unwiderruflichen Stillstand festgestellt werden müssen. Diese sind in der Tabelle gemäß Figur IF dargestellt. Der Zugrifftyp-Parameter ist längs der hprizohtalenÄbszisse angegeben, während der SystemmitteIklassen-Parameter längs der vertikalen,Koordinate aufgetragen ist. Es gibt zwei Kategorien von Zugriffstypen1 ; Die eine ist dann gegeben, wo ein exklusiver Zugriff * zu einem '.,ψ ;-.... Systemmittel erfolgt und der, andere wo der Zugriff mehreren Pro-.;-zessen gemeinsam zusteht. Es gibt auch zwei Kategorien.von System-, mittelklassen. Die eine hat nur einen Systemmittelauftritt und die andere kann viele Systemmittelauftritte aufweisen. Es ergeben sich also zwei Wahlmöglichkeiten für jede der beiden Variablen, · so daß vier verschiedene Fälle für einen möglichen unwiderruflichen Stillstand zu untersuchen sind: Der erste ist der binäre Semaphoraufbau für exklusiven Zugriff, der zweite der allgemeine Semaphoraufbau für exklusiven Zugriff, der dritte der binäre Semaphoraufbau für gemeinsamen Zugriff und der vierte der allgemeine Semaphoraufbau für gemeinsamen Zugriff.
5 0 9 8 A δ / 0 7 6 5 '
2517296 MS
Figur Ib zeigt schematisch die Feststellung eines zu einem toten Punkt führenden Kreislaufs mit exklusiver Zuordnung von Systemmitteln, wobei ein einziger Systemmittelauftritt innerhalb der Systemmittelklasse gegeben ist, also der obengenannte Fall 1. Das Datenstrukturdiägramm mit den logischen Systemelementen im Fall eines binären Semaphoraufbaus für exklusive Systemmittelzuordnung ist in Figur IG dargestellt. Diesen logischen Strukturen sind die Hardwarestrukturen der Figuren 16A und 16M zugeordnet. Der Firmwarealgorithmus für eine Stillstandsfeststellung für die logische Struktur gemäß Figur Ig ergibt sich aus Tabelle 4El bei Ausführung in der Steuereinheit gemäß den Figuren 13A bis 13C.
Das Datenstrukturdiägramm mit der Struktur der logischen Systemelemente für einen allgemeinen Semaphoraufbau bei exklusiver Systemmittelzuordnung ergibt sich aus Figur IH. Hierzu gehören die Hardwarestrukturen gemäß den Figuren 16E und 16F. Der Firmwarealgorithmus für die Stillstandsermittlung bei dieser Struktur ist in Tabelle 4E2 dargestellt, welche ebenfalls durch die Steuereinheit gemäß den Figuren 13A bis 13C ausgeführt wird.
Die Datenstruktur mit den logischen Systemelementen für den Fall eines binären Semaphoraufbaus für gemeinsame Systemmittelzuordnung ergibt sich aus Figur IJ. Die zugehörige Hardwarestruktur ist in den Figuren 16M» 16N und 160 wiedergegeben, während der entsprechende Firmwarealgorithmus sich aus Figur 4E3 ergibt.
In ähnlicher Weise zeigt Figur IL das Datenstrukturdiägramm für einen allgemeinen Semaphoraufbau mit gemeinsamer Systemmittelzuordnung. Die zugehörige Hardwarestruktur findet man in den Figuren 16E, 16P, 160 und 16M. Der Firmwarealgorithmus für die Steuereinheit gemäß den Figuren 13A bis 13C ist in Tabelle 4E4 wiedergegeben.
509845/0765
2517296
Figur Ib zeigt ein Beispiel für die Feststellung eines unwiderruflichen Stillstands (Deadlock) bei exklusivem Zugriff zu einem Systemmittel, d.h. im Fall 1. Der Prozeß Nummer. .1.möchte das Systemmittel A zugeordnet bekommen. Er erklärt seine Absicht, indem er eine Basisoperation "Warten auf eine Ereignisvariable" ausführt. Diese Fundamentaloperation findet zunächst, daß das Systemmittel A nicht verfügbar ist. Es ist dem Prozeß Nummer 3 zugeordnet. Weitere Prozesse warten auf dieses Systemmittel. Soll der Prozeß Nummer 1 ebenfalls warten dürfen? Nicht in der dargestellten Situation,weil:
a) das Systemmittel A ist dem Prozeß 3 zugeordnet (pr—ro Gruppe),
b) Prozeß 3 wartet auf Systemmittel C (ev—epd Gruppe),
c)' Systemmittel C ist dem Prozeß 7 zugeordnet (pr—ro Gruppe) ,
d) Prozeß 7 wartet auf Systemmittel F (ev—epd Gruppe) ,
e) Systemmittel F ist dem Prozeß 1 zugeordnet (pr—ro Gruppe).
Würde man hier die Anweisung "Prozeß 1 wartet auf Systemmittel A" hinzufügen, so ergäbe sich eine geschlossene Schleife. In diesem Fall sind nur sechs Speicherabrufe erforderlich, um die geforderte Fundamentaloperation "Warte auf ein Ereignis" zu entdecken und zurückzuweisen.
Figur IG ist ähnlich Figur 1ä, jedoch wurde das Konzept einer Systemmittelobjektzuordnung (roa) hinzugefügt. Die Elemente der Figuren 4 und IG sind mit den anderen Figuren wie folgt verbunden: Nachrichtensemaphor aus Figur IG mit Semaphor ohne Nachricht . in Figur 16A und Prozeßverbindung in Figur IG mit Prozeßverbindung gemäß Figur 16M. Die auf die Feststellung eines unwiderruflichen Stillstands gerichtete Prozedur gemäß Tabelle 4El liefert die Beschreibung des Algorithmus für die Feststellung eines unwiderruflichen Stillstands in PL/1-Programmsprache am Semaphor gemäß Figur IG (Fall 1).
509 8 45/0765
2517296
Tabelle 4El: Prozedur zum Festotellen eines unwiderruflichen Stillstands
Deadlock 1: procedure (p_evref, p_prref) returns (bit (I));
call findownerx(prref, "pr roa", p_evref);
if'prref = p_prref then return ("l"b);
else if insertedx(prref, "ev epd")
then do;
call findowner(evref, "ev__epd", prref); return(deadlockl (evref, p_prref) ; and;
eise return ("O"b); end deadlockl.
Fall 2 eines unwiderruflichen Stillstands für ein allgemeines Semaphor mit exklusivem Zugriff zu einem Systemmittelauftritt in einer Mehrfachauftrittsklasse bezieht sich auf die exklusive Zuordnung von SystemmittelZuordnungen zu einem Prozeß. In den Figuren IH und II zeigt die erstgenannte den Prozeß Pl, der auf eine Systemmittelklasse 1 warten möchte, die drei Systemmittelauftritte R , R2 und R3 aufweist. Wartet der Prozeß Pl auf eines dieser drei Systemmittel, so ergibt sich die Frage, ob gegenwärtig alle drei Systemmittel zu einem oder mehreren anderen Prozessen (P2, P3) zugeordnet sind, welche direkt oder indirekt auf den Prozeß Pl warten. Im Diagramm gemäß Figur II sind die Systemmittel R2 und R3 dem Prozeß P2 zugeordnet, der auf den Prozeß Pl wartet. Jedoch ist das Systemmittel R gegenwärtig dem Prozeß P3 zugeordnet, der auf eine andere Systemmittelklasse 3 wartet. Die Systemmittel R' , R1 2, R'3/ R14 der Systemmittelklasse 3 ihrerseits sind dem Prozeß P4 zugeordnet, der gegenwärtig nicht wartet. Folglich wird der Prozeß P4 die Systemmittelklasse 3 irgendwann freigebenf und es folgt kein unwiderruflicher Stillstand, wenn der Prozeß Pl auf die Systemmittelklasse 1 warten darf.
Figur IH zeigt für den Fall 2 ein Datenstrukturdiagramm ähnlich demjenigen von Figur IC des allgemeinen Semaphoraufbaus, jedoch
-509845/0765
2517296
ist das Konzept der SystemmittelZuordnung stärker hervorgehoben und das Konzept der Systemmittelobjektzuordnung dem Systemmittelobjekt des Systemmittelauftrittblocks hinzugefügt. Die Bedeutung des Strukturdiagramms ist die gleiche wie zuvor beschrieben. Für die Ausführung dieses Diagramms zeigen die folgenden Figuren die entsprechenden Hardwarestrukturen: Die Systembasis von Figur IH entspricht der Systembasis der Figur 6, das allgemeine Semaphor in Figur IH dem allgemeinen Semaphor von Figur 16E, die Prozeßverbindung derjenigen von Figur 16M und der Systemmittelauftritt demjenigen in Figur 16F.
Tabelle 4E2 zeigt in PL/1 Programmsprache die algorithmische Beschreibung der Prozedur zum Feststellen eines unwiderruflichen Stillstands bei einem allgemeinen Semaphoraufbau gemäß Figur IH.
Tabelle 4E2:
Deadlock2: procedure (p_evref, p_prref) returns (bit (I));
call findnext(roaref, "rc ro", P_evref, eos);
do while (^eos);
call findowner(prref, "pr roa", roaref);
if prref = p_prref then ;
else if inserted(prref, "ev__epd") then do;
call findowner(evref, "ev _epd", prref); if deadlock2(evref, p_prref); then;
else return ("0"b); end;
call findnext(roaref, "rc ro", eos);
end;
return("l"b);
end deadlock2.
509845/0765
2517296
Fall 3 behandelt das binäre Semaphor, wenn es für gemeinsame Zugriffssteuerung benutzt wird (vgl. Figur IJ). Die Schreibweise für einen gemeinsamen Zugriff läßt sich am besten anhand eines Beispiels erklären. Als Systemmittelobjekt wird eine Datei angesehen, die von mehreren Prozessen gemeinsam benutzt werden kann. Jedoch ist es schwierig das Fortschreiben der Datei zu steuern, wenn mehrere Prozesse die Datei auf den neuesten Stand bringen wollen. Folglich würde ein Prozeß, wenn er die Datei fortschreiben möchte auf exklusive Zugriffssteuerung übergehen, aber unter gemeinsamer Zugriffssteuerung für Leseoperationen .arbeiten. In ähnlicher Weise kann ein Datensatz als Systemmittelobjefct betrachtet werden, der mehrfach verschiedenen Prozessen zum lesen zugeordnet, aber exklusiv einem einzelnen Prozeß zum fortschreiben zugeordnet ist. Da ein Systemmittelauftritt .vielfach zugeordnet sein kann, ist ein getrenntes Hardwarestrukturelement erforderlich, um dies darzustellen. In Figur IJ läßt jede Zuordnung bei ihrem Entstehen ein Systemmittelobjektzuordnungselement in die Steuerdatenstruktur übertragen, was dort in zwei verschiedenen Gruppen eingefügt wird, wobei eine Gruppe ro roa die Systemmittelobjektzuordnung rückwärts mit dem bestimmten Systemmittelobjekt verbindet, welches durch die Zuordnung gesteuert wird, während die Gruppe pr__roa die Systemmittelobjektzuordnung mit einem bestimmten Prozeß verbindet, dem sie zugeordnet ist. Dies ermöglicht, daß einem Prozeß zu gegebener Zeit viele Systemmittelobjekte zugeordnet sind, während gleichzeitig irgendeine der Systemmittelzuordnungen zu vielen Prozessen zugeordnet sein kann. Hieraus ergeben sich drei Situationen, in denen eine Zuordnungsanforderung durch einen Prozeß sofort erledigt werden kann und drei weitere Situationen, wo der anfordernde Prozeß warten muß, ob sich nicht eine einen unwiderruflichen Stillstand ergebenden Situation einstellt. Diese Situationen sind in Figur IK dargestellt. Diese zeigt längs der Abszisse den Forderungsmodus, während die Koordinate den laufenden Zustand wiedergibt. Die unmittelbare Zuordnung einer Anforderung von einem anfordernden Prozeß kann erledigt werden, wenn der Anforderungsmodus
509845/0765
2517296
S3
entweder exklusiv oder gemeinsam ist und der gegenwärtige Zustand des angeforderten Systemmittelobjekts verfügbar ist und auch wenn der Anforderungsmodus des Prozesses gemeinsam ist, während das angeforderte Systemmittelobjekt gegenwärtig gemeinsam zugeordnet ist. Ist jedoch der Anforderungsmodus des Prozesses entweder exklusiv oder gemeinsam, wobei der gegenwärtige Zustand des angeforderten Systemmittelobjekts eine exklusive Zuordnung aufweist, und ist der Anforderungsmodus des Prozesses exklusiv} wobei der laufende Zustand des angeforderten Systemmittelobjekts gemeinsam zugeordnet ist, so muß eine überprüfung auf eventuellen unwiderruflichen Zustand durchgeführt werden. Falls sich hierbei ergibt, daß bei einer überführung des Prozesses in den Wartezustand kein unwiderruflicher Stillstand eintritt, so wird der Prozeß in den Wartezustand gebracht.
Beim Aufbau gemäß Figur IJ und der Situation gemäß Figur IK, v/o ein Prozeß gemeinsamen Zugriff anfordert und das Systemmittel gegenwärtig exklusiv zugeordnet ist, ergibt sich der logische Ablauf der Stillstandsüberprüfung ähnlich wie in Figur IB. Ist jedoch das Systemmittelobjekt gemeinsam verwendbar zugeordnet, so ist der Prozeß,dem es gegenwärtig zugeordnet ist* frei und wartet weder direkt noch indirekt auf den anfordernden Prozeß. Es kann deshalb notwendig sein, den Zustand vieler anderer Prozesse zu überprüfen, ehe das Warten des anfordernden Prozesses gestattet wird. Der Algorithmus zur Stillstandsüberprüfung in diesem Fall ergibt sich aus Tabelle 4E3, die Anordnung in Form von Firmware in der Steuereinheit der Figuren 13A bis 13C benutzt die Hardwarestrukturen der Figuren 16M bis 160 entsprechend den Beziehungen von Figur IJ.
509845/0765
2517296
Tabelle 4E3:
Deadlock3: procedure(p_evref, p_prref returns(bit(1));
call findnext(roaref, "ro roa", p_evref/ eos);
do while (Aeos);
call findowner(prref, "pr roa", roaref);
if prref = p_prref
then return .("l"b) ; else if inserted(prref, "ev__epd"); then do;
call findowner(evref, "ev epd",prref);
if deadlock3(evref, p_prref) then return ("l"b); else; end;
call findnext(roaref, "ro roa", eos);
end;
return("0"b);
end deadlock3.
Der vierte Fall einer Stillstandsüberprüfung bezieht sich auf ein allgemeines Semaphor für gemeinsamen Zugriff und ist in Figur IL wiedergegeben. Das allgemeine Semaphor stellt einen Aufbau für exklusiven oder gemeinsamen Zugriff zu irgendeinem von mehreren Systemmittelobjekten innerhalb einer Systemraittelklasse dar. Die Stillstandsüberprüfung ist hier besonders komplex, weil ein anfordernder Prozeß auf irgendein Systemmittelobjekt innerhalb der Systemmittelklasse warten möchte, was einerseits das Zugängigmachen erleichtert. Sind jedoch innerhalb der Systemmittelklasse keine Systemmittel zugängig, so muß die Stillstandsüberprüfung sicherstellen, daß wenigstens ein Systemmittelobjekt zugeordnet ist, welches in der Zukunft verfügbar gemacht werden kann, und dessen gegenwärtiger Zugriff nicht durch einen Prozeß gesteuert ist, der direkt oder indirekt auf den anfordernden Prozeß wartet. Figur IL zeigt, daß der Fall ähnlich ist wie Figur IH. Jedoch ist das Systemmittelobjekt-Zuordnungselement von dem Systemmittelauftritts-Systemelement getrennt und als unabhängiges Systemelement vorgesehen, welches in· die Gruppen
509845/0765
2517296
S5
ro roa und pr roa eingefügt werden kann. Eine zusätzliche
Hardwarestruktur gemäß Figur 16P ist erforderlich zusammen mit dem Firmwarealgorithmus,der Tabelle 4E4.
Tabelle 4E4:
Deadlock4: procedure(p_evref, p_prref) returns(bit(1));
call findnext(roref, "rc ro", p_evrf, eos);
do while (A eos); deadly = "0"b;
call findnext(roaref, "ro roa", roref, eos);
do while(A eos & λ deadly);
call findowner(prref, "pr roa", roaref);
if prref = p_prref
then deadly = "l"b;
else if inserted(prref, "ev epd")
then do;
call findowner(evref, "ev epd", prref);
if deadlock4(evref, p_prref)
then deadly ="l"b;
else call findnext(roaref, "ro roa", eos);
end;
else call findnext(roaref, "ro _roa", eos); end; ~
if/\deadly
then return ("0"b);
else call findnext(roref, "rc ro", eos);
end;
return("l"b); end deadlock4.
Die Basisoperation zur Prüfung einer Ereignisvariablen ist ähnlich derjenigen des Wartens auf eine Ereignisvariable, mit der Ausnahme, daß der Prozeß ein Signal "Nicht Geschehen" erhält, statt in den Wartezus'tand überzugehen, wenn das Ereignis nicht eingetreten ist. Der Algorithmus zur Funktionsbestimmung für die überprüfungs-Basisoperation ergibt sich aus Figur 4F.
509845/0765
2517296
Tabelle 4F: Algorithmus zur Funktionsdefinition für die überprüfung einer Ereignisvariablen
test_on_event_variable: procedure (p_code, p_epdptr, p_prptr; p-notification-message);
/'Diese Basisoperation bewirkt die Zuordnung eines durch eine Aufforderung (p_epdptr) zur Ereignisverarbeitung dargestellten Systemmittelobjekts zu einem Prozeß (p_prptr), vorausgesetzt daß es nicht schon zugeordnet ist. Andernfalls wird der Prozeß entsprechend informiert '/
/' Feststellen, daß die Aufforderung zur Ereignisverarbeitung zum Prozeß gehört '/
call findowner (prptr, "pr__epd", p_epdptr); if prptr = p_prptr then do;
p_code = 1; return; end;
/' Stelle fest, daß es sich um eine Anforderung zur Gatter-Ereignisverarbeitung handelt '/
if p_epdptr-> epd.trapA= " "
then do;
p_code = 3; return; end; /' Bestimme ob das Ereignis eingetreten ist '/
ifAempty (p epdptr, "epd evo")
then do;
/' Informiere vom Ereignisauftritt '/ call findnext (evoptr, =epd__evo", p_epdptr, eos); p_notification_message = evoptr-> evo.message;
call remove (evoptr, "epd evo");
p_code = 0; end;
else p_code = 2; end wait_on_event_assignment;
Die Basisoperation zur Freigabe einer SystemmittelZuordnung macht ein zugeordnetes Systemmittelobjekt zu anderen Anforderungen für die Ereignisverarbeitung verfügbar. Dies geschieht, indem zunächst das Systemmittelobjekt freigegeben wird und der Ereignisauftritt in die zur Ereignisvariablen gehörige Gruppe eingefügt wird. Sie prüft dann, ob irgendwelche Anforderungen zur Ereignisverarbeitung in der Warteschlange der Ereignisvariable unerledigt sind. Tabelle 4G zeigt den Algorithmus für die Funktionsdefinition zur Freigabeoperation. Einige Information kann mit Hilfe einer Mitteilungsnachricht zum nächsten Benutzer des Systemmittelobjekts übertragen werden.
509845/0765
-St»- 2517296
S\
Tabelle 4G: Algorithmus zur Funktionsdefiniti.cn für die freigäbe einer Systemmittelzuordnung
release_resource_assignment: procedure (p_code; p_roptr, p_prptr, p-notification-message);
/'Diese Prozedur löst die Zuordnung eines Systemmittels (p_roptr zur Zeit einem Prozeß p_prptr zugeordnet). Dies kann zum Auftreten eines Ereignisses führen, wenn die die Systemmittelklasse darstellende Ereignisvariable eine nicht bediente Anforderung zur Ereignisverarbeitung zeigt '/
/■ Stelle fest, daß das Systemmittel gegenwärtig einem Prozeß zugeordnet ist '/
call findowner (prptr, "pr ro", p_roptr);
if prptra = p_prptr then do; p_code = 1; return; end;
/' Gib Systemmittel frei '/
call remove (p_roptr, "pr ro");
/' Füge den Ereignisauftritt in "ev evo" ej.n '/
call findowner (roptr, "rc__ro", p_roptr);
call insert (p_roptr, "ev evo", "before", pr ptr) ;
p_ro_ptr ->evo.message = p-notification-message; call evaluate_event (roptr) ; end release_resource_assignment;
Beschreibung eines Ausführungsbeispiels
1. Allgemeines
Die Erfindung arbeitet mit einer Hardware-Anlage, welche durch ein Hardware/Firmware/Software-Betriebssystem koordiniert wird. In Figur 2a sind das Prozessor-Subsystem 101, das Speicher-Subsystem 102 und ein oder mehrere bis zu 32 Peripherie-Subr systeme 103 wiedergegeben. Das Prozessor-Subsystem enthält eine Zentraleinheit (CPU) 104 und bis zu vier Ein-/Ausgabe-Steuereinheiten (IOC) 105. Jedes periphere Subsystem besteht aus einer Peripherie-Steuereinheit (PCU) 106, einer Anzahl von Geräteadaptern (DA) 107, und bis zu 256 peripheren Ein-/Ausgabe-Geräten108. Das Speicher Subsystem 102 besteht aus einem bis vier Halbleiter-Speichermodulen mit je 32 bis 512 Kilobyte Speicherkapazität. Im Prozessor-Subsystem 101 führt die Zentraleinheit 104 die grundlegenden Verarbeitungsoperationen für das System durch und arbeitet mit dem Speicher 102 zusammen. Die
509845/0765
2517296 SZ
Die Ein/Ausgabe-Steuerung 105 steuert den gesamten Informationsaustausch zwischen dem Speicher-Subsystem 102 und den Peripheriegeräten 106.
A. Zentraleinheit
Die Zentraleinheit umfaßt einen Hauptspeichersynchronisierer 109, einen Pufferspeicher 110 sowie mehrere die Recheneinheit 111 bildende Elemente und wahlweise Emulatoren 112. Der Hauptspeichersynchronisierer 109 verhindert Schwierigkeiten bei der Benutzung des Hauptspeichers durch die Recheneinheiten 111, dem Pufferspeicher 110 und die Ein/Ausgabe-Steuerung 109. Die Synchronisierung erfolgt aufgrund von Prioritäten:Die Ein/Ausgabe-Steuerung hat die höchste Priorität gefolgt von Schreibvorgängen im Speicher (ausgelöst durch die Recheneinheit) und dann gefolgt von Leseoperationen im Speicher (übergabe in den Pufferspeicher). Die Zentraleinheit enthält ferner das Adressensteuerwerk (ACU) 131, welches die Hauptspeicheradressierung steuert, sowie den Assoziativspeicher (AS) 132, welcher zur Speicherung zuletzt im Hauptspeicher benutzter Adressen dient. Der Pufferspeicher 110 ist ein reiner Hochgeschwindigkeits-Pufferspeicher,. welcher einen ausgewählten Bereich des Hauptspeichers wiedergibt und mit der Recheneinheit im Austausch steht, um die mittlere Speicherzugriffszeit zu verringern. Bei jedem Lesevorgang im Speicher erfolgt ein Zugriff Yom Pufferspeicher und zum Hauptspeicher. Wenn sich die abzurufende Information bereits im Pufferspeicher befindet, wird der Lesevorgang im Hauptspeicher beendet und die Information aus dem Pufferspeicher abgerufen. Andernfalls wird der Hauptspeicher 102 ausgelesen. Jedesmal wenn dies erfolgt, ruft die Zentraleinheit 104 32 Bytes ab, welche die gewünschte Information enthalten. Diese bleibt für eine zukünftige Speicherbezugnahme im Pufferspeicher. Da dieser für Software durchlässig ist, kann das den Rechner steuernde Programm zu einer gegebenen Zeit nicht feststellen, ob die von ihm verarbeitete Information vom Pufferspeicher oder vom Hauptspeicher entnommen wurde.
509845/0765
2517296
Die Recheneinheit 111 erledigt alle Datenverarbeitung und Adressenerzeugung innerhalb der Zentraleinheit. Ein typischer Steuerspeicher 130 innerhalb der Recheneinheit 111 (vergleiche das Buch "Microprogramming: Principles and Practices von Samir S. Husson, Prenticse Hall, Inc.) enthält Firmware, die das System anlaufen läßt, die Zentraleinheit 104 und die Ein/Ausgabe-Steuerung 105 steuert und eine nicht dargestellte Befehlsgruppe dekodiert. Wahlweise kann der Steuerspeicher wissenschaftliche Befehle, Testroutinen, Emulationspakete oder Spezialzweckmerkmale liefern, welche die Möglichkeiten des Prozessor-Subsystems erweitern. Als weitere Option ermöglicht die Zentraleinheit die Emulation von anderen Systemen. Die Emulatoren 112 sind Teile von Firmware oder Software und in manchen Fällen Hardware.
B. Ein/Ausgabe-Steuereinheit
Die Ein/Ausgabe-Steuereinheit 105 des Prozessor-Subsystems bildet den Datenweg zwischen jeglichem peripheren Subsystem 103 und dem Speichersubsystem 102. Dieser Weg ermöglichst die Ingangsetzung peripherer Befehle und steuert die sich hieraus ergebende Datenübertragung. Eine Ein/Ausgabe-Steuereinheit kann üblicherweise bis zu 32 im einzelnen nicht dargestellte Kanalsteuereinheiten bedienen.
C. Peripherie-Subsysteme
In einem Peripherie-Subsystem 103 gemäß Figur 2 ist die Peripherie-Steuereinheit (PCU) 106 ein selbständiger Mikroprogramm-Prozessor, welcher die Belastung der Zentraleinheit 1O4 dadurch verringert, daß er während der Ein/Ausgabe-Operationen, die Ein/Ausgabe-Geräte 108 steuert. Die Peripherie-Steuereinheit 106 bewerkstelligt dies durch Ausführung von Befehlen in einem Kanalprogramm. Dieses Programm resultiert in arithmetischen, logischen, übertragungs-, Verschiebe-, und Verzweigungsoperationen, welche in der Peripherie-Steuereinheit durchgeführt werden. Es gibt verschiedene Arten von Peripherie-Steuereinheiten entsprechend der Art von Geräten, die gesteuert werden: Zum Beispiel Datensatzeinheit, Massenspeicher (Platte), Magnetband, Informationsübertragung usw.
509845/0765
2517296
Der Geräteadaptor 107 liegt zwischen jeder Peripherie-Steuereinheit und den Geräten, die sie steuert. Jeder Adaptor enthält vorgegebene Firmware und logische Schaltkreise, die zur Durchführung der Nachrichtenverbindung mit einem bestimmten Gerät erforderlich sind. Abhängig vom Typ steuert ein Geräteadaptor 107 ein oder mehrere Geräte.
Die Hauptfunktionen des Peripherie-Subsystems 103 sind folgende:
1. Umwandlung von CPU-Befehlen in eine Folge von für die entsprechenden Peripheriegeräte annehmbaren Kommandos.
2. Verdichten und expandieren von Daten in die von der Zentraleinheit oder geeigneten Peripheriegeräten erforderliche Form.
3. Informieren der Zentraleinheit über den Zustand des Subsystems und der unter seiner Steuerung befindlichen Geräte.
4. Unabhängige Einleitung und Durchführung von Fehler- und Wiederauffindungs-Prozeduren.
5. Ermöglichung von On-Iine-Diagosen ohne Beeinträchtigung der Möglichkeit der gemeinsamen Gerätebenutzung durch den zugeordneten Peripherie-Prozessor.
Eine Peripherie-Steuereinheit beseitigt für den Hauptspeicher Schwierigkeiten zwischen den ihm zugeordneten Geräten, jedoch löst die Ein/Ausgabe-Steuerung Schwierigkeiten zwischen den Peripherie-Steuereinheiten .
D. Speicher-Subsystem
Jeder Speichermodul 1-4 ist 4 oder 8 Bytes groß. Die Anzahl der Modulen, ihr Umfang und der Datenverlauf kann sich entsprechend dem Umfang des Rechners ändern. Die Speichermodule sind vierfach in solcher Weise durchschossen, daß vier Module der Reihe nach zugängig sind (Modul 1 enthält die ersten 8 Bytes, Modul 2 enthält die zweiten 8 Bytes usw). Das Durchschiessen verringert die Anzahl von Zugriffskonflikten zum Hauptspeicher und verringert damit auch die mittlere Speicherzugriffszeit. Der Speicher kann im Fall von Fehlern umgeordnet werden, d.h. Speicherblöcke innerhalb eines Moduls können ohne Zerstörung der benachbarten Adressierung
509845/0765
2517296
entfernt werden. Der Hauptspeicher 102 besteht aus einem kapazitiven Speichermedium in Form von Metalloxyd-Halbleiterchips (MOS), Dieses Medium arbeitet nach dem Wiederauffrischungsprinzip zur Aufrechterhaltung der Information. Jeder Speicherplatz wird typischerweise mindestens einmal alle 2 ms wieder aufgefrischt. Die Konstruktion gewährleistet, daß wenig Konflikte zwischen der Wiederauffrischzeitfolge und dem Speicherzugriff entstehen. Im Falle eines Konflikts hat die Wiederauffrischung Vorrang.
Ein Bereich am Anfang des Hauptspeichers ist für Hardware und Firmware reserviert. Die obere Grenze dieses Bereichs ist durch den Inhalt eines Grenzadressenregisters (BAR) bestimmt, welches für die System-Software sichtbar ist. Der Inhalt des Grenzadressenregisters wird bei der Ingangsetzung des Systems festgelegt. Der Speicherbereich unterhalb der im Grenzadressenregister festgelegten Adresse kann Ein/Ausgabe-Steuertabellen enthalten, die die Konfiguration des peripheren Subsystems, Firmware zur Steuerung der Zentraleinheit oder Mikroprogramme und Tabellen zur Emulation festlegen. Der Umfang des Bereichs unterhalb der genannten Adresse hängt von der Systemkonfiguration ab. Ob Mikroprogramme im Hauptspeicher oder im Steuerspeicher liegen, hängt ebenfalls vom Systemaufbau und der Anwendung des Systems ab.
2. Grundlegende Maschinenstrukturen
In dieser Hardware werden typischerweise drei grundlegende Datenstrukturen verwendet: Datenformate, für Software erkennbare Register und Befehlsformate.
A. Datenformate
Die Information wird zwischen dem Speicher und der Zentraleinheit in Vielfachen von 8 Parallelbits übertragen. Jede 8 Bit-Informationseinheit wird ein Byte genannt. Paritäts- oder Fehlerkorrekturdaten werden ebenfalls mit den Daten übertragen, können jedoch von der software nicht beeinflußt werden. In der nachfolgenden Beschreibung schließt der Ausdruck Daten die an sich
509845/0765
2517296
zugehörigen Paritäts- und Fehlerkorrekturdaten aus.
B. Bytes
Die Bits innerhalb eines Bytes werden von links nach rechts mit 0 bis 7 numeriert. Die Bytes werden getrennt oder in Gruppen verarbeitet. Zwei Bytes bilden ein Halbwort, vier Bytes ein Wort, acht Bytes ein Doppelwort und 16 Bytes ein Vierfachwort. Diese bilden die Grundformate für alle Daten einschließlich der Befehle.
C. Datendarstellung
Alle Daten liegen in binärer Form vor* aber können als binär, dezimal oder alphanumerisch erklärt werden. Datenbits werden in Vierergruppen als binär kodierte Dezimaldaten interpretiert; in Achtergruppen als alphanumerisch oder 16 bis 64 als Binärziffern. Die letzteren werden als Vorzeichen behaftet, Fest-, oder Fließzahlen in Binärdarstellung angesehen. Jeder Anzahl auseinanderfolgender Bits bis zu einem Doppelwort kann auch als Bitfolge (string) verarbeitet werden. Die Gruppe alphnumerischer Zeichen wird in EBCDIC dargestellt. Als alternativer Auswahlkode dient ASCII.
D. Byte-Adressen
Die Byte-Speicherstellen im Hauptspeicher sind mit Null beginnend fortlaufend numeriert. Jede Nummer stellt die Adresse des betreffenden Bytes dar. Eine Gruppe aufeinanderfolgender Bytes ist Halbwort-, Wort-, Doppelwort- oder Vierfachwort-zugeordnet, falls die Adresse des linken Bytes in einer Gruppe ein Vielfaches von 2, 4, 8 oder 16 ist. Sobald ein Halbwort, Wort, Doppelwort oder Vierfachwort derart angeordnet ist, kann die Einheit von dieser Adresse abgerufen werden. Der Speicherplatz von Daten im Hauptspeicher wird durch einen Datendescriptor bestimmt, welcher indirekt während der Adressenentwicklung entsteht.
509845/076
2517296
E. Erkennbare Register
Es befinden sich 33 für den Benutzer erkennbare Register in der Zentraleinheit 104 gemäß Figur 2a, deren Inhalt zusammen den Zustand der Zentraleinheit definiert. Es gibt vier Typen:
1. Generalregister
2. Basisregister
3. wissenschaftliche Register (als Option)
4. verschiedene Register
F. Generalregister
Die Generalregister (GR) 201 in Figur 2b werden für die Bearbeitung von Fest-Binärzahlen und Bitzeichenfolgen benutzt. Es gibt typischer Weise sechzehn 32 Bit Generalregister in der Zentraleinheit 104, welche mit GRO bis GR15 bezeichnet sind. Die Generalregister GR8 bis GR15 sind auch als Indexregister verwendbar. In diesem Fall werden sie später mit XO bis X7 bezeichnet. Das Indizieren erfolgt durch Benutzung des in einem Register enthaltenen ganzzahligen 32 Bit Zweier-Komplements.
G. Basisregister
Die Basisregister (BR) haben dasselbe Format als Befehlszähler (IC) und als Stapelspeicherregister 202 bis 203. Die Basisregister werden während der Adressenberechnung zur Bestimmung eines Teils des Speichers benutzt. Es sind Üblicherweise acht 32 Bit Basisregister mit der Bezeichnung BRO bis BR7.
H. Wissenschaftliche Register
Wissenschaftliche Register (SR) stellen eine als Option wählbare Ausrüstung für die Berechnung mit Fließ-Binärzahlen dar. üblicherweise sind vier wissenschaftliche Register vom 8 Byte-Typ vorhanden, die mit SRO bis SR3 bezeichnet werden. Die wissenschaftlichen Register haben das Format 204 bis 205 in Figur 2b.
509845/0765
2517296
I. Verschiedene Register
Es gibt fünf andere Register, nämlich:
Befehlszählwerk mit dem Format 202 bis 203; Statusregister mit dem Format 207; Stapelspeicherregister genannt T-Register; Grenzadressenregister mit dem Format 202 bis 203 und Hardware-Steuermaskenregister mit dem Format 208.
Das Befehlszählwerk (IC) ist ein 32 Bit-Register, welches die Adressen der auszuführenden Befehle enthält. Das Statusregister (STR) 207 ist ein 8 Bit-Register, welches die Tatsachen über die gegenwärtig ablaufende Prozedur aufnimmt, beispielsweise ob durch die jüngste Operation eine Bereichsunterschreitung erfolgt ist. Bei dem als T-Register bekannten Stapelspeicherregister handelt es sich um ein 32 Bit-Register, welches die Hinweisadressen zur Spitze eines der gegenwärtig aktiven Prozedur zugeordneten abzubauenden Speicherstapels enthält. Der Stapelspeicher liefert den Arbeitsraum sowie einen Mechanismus zur Sicherstellung örtlicher Variablen und zur Bereitstellung von Prozedur-Eingangsstellen und Rückkehrinformation. Das Grenzadressenregister (BAR) 206 ist ein 28 Bit-Register, daß die für die Software zugängige niedrigste absolute Hauptspeicheradresse angibt. Dieses Register wird während der Ingangsetzung des Systems geladen und kann von der Software nur einmal gelesen werden. Das Hardware-Steuermaskenregister 208 ist ein 8 Bit-Register, daß die Maschinenzustandsinformation aufnimmt .
J. Befehlsformate
Es gibt etwa 200 Befehle, obwohl auch mehr oder weniger benutzt werden können. Jeder Befehl hat eine von vier verschiedenen Längen aber hat immer eine geradzahlige Anzahl von Bytes. Befehle werden in aufeinanderfolgenden Speicherplätzen abgelegt. Die Adresse des am weitesten links stehenden Bytes ist ein Vielfaches von 2 und bildet die Adresse des Befehls. Die acht ersten Bits (und in
509845/0765
2517296
manchen Fällen die Bits 8 bis 11 oder 12 bis 15) eines Befehls stellen den Operationskode dar, während die restlichen Bits einem oder mehreren Operanden entsprechen. Ein Operand kann ein Registerbezeichner, ein Verschiebungsbezeichner, eine Adressilbe (logische Adresse), ein Literalwert oder einen unmittelbaren Literalwert darstellen. Typ und Anzahl der Operanden sind durch das Befehlsformat bestimmt.
3. Systemorganisation
A. Jobschritt und Task (Aufgabe)
Die vom Rechnersystem auszuführende Arbeit wird extern mit Hilfe der Jobsteuerspräche durch eine Reihe von Jobschritten bestimmt. Ein Jobschritt ist eine Arbeitseinheit, der die Hardware-Systemelemente zugeordnet werden. Typischerweise besteht ein Jobschritt aus verschiedenen Tasks. Ein Task ist die kleinste Einheit der vom Benutzer definierten Arbeit und besteht aus einem Fluß von Informationen, der ohne Parallelbetrieb verarbeitet wird.
B. Der Prozeß
Die für den Benutzer erkennbaren Konzepte von Tasks und Jobschritten werden in der Hardware durch einen Prozeß bzw. Prozeßgruppen dargestellt. Ein Prozeß ist als eine geordnete Folge von Befehlen definiert, welche asynchron durch die Zentraleinheit ausgeführt werden können, d.h. mehrere Prozesse können aktiv sein und Systemelemente gleichzeitig benutzen. Jedoch läuft zu jeder Zeit jeweils nur ein Prozeß. Eine Prozeßgruppe ist eine miteinander in Beziehung stehende Gruppe von Prozessen, welche zur Ausführung eines Jobschrittes erforderlich ist.
C. Prozeßsteuerblock und Systembasis
Da Prozesse die Steuerung durch die Zentraleinheit während ihrer Ausführung an verschiedenen Punkten aufgeben können, wird im Hauptspeicher ein Speicherbereich für den Prozeß zur Sicherung des Zustands der Zentraleinheit zugängig gemacht. Diese Zustande-
509845/0765
2517296
-SJ-
information wird zur Voreinstellung der Zentraleinheit benutzt, bevor ein Prozeß erneut die Steuerung der Zentraleinheit übernimmt. Diese Speichereinheit wird Prozeßsteuerblock (PCB) 400 (siehe Figur 4) genannt. Die Daten im Prozeßsteuerblock enthalten die Adressen von dem Prozeß zugeordneten Speicherbereichen(Adressenraum), den Inhalt aller zugehöriger Register und den Zustand des Prozesses. Somit dient der Prozeßsteuerblock als zeitweiliger Speicherbereich für die zum Ingangsetzen oder wieder Ingangsetzen eines Prozesses ohne Informationsverlust erforderlichen Informationen. Jeder Prozeßsteuerblock ist für die Hardware erkennbar und kann vom Betriebssystem über eine Gruppe von Hardwaretabellen, welche während der Systemvorbereitung entwickelt und während des Betriebes modifiziert werden, adressiert werden (Figur 5).
Es gibt einen absoluten Hauptspeicherbereich, der als Systembasis bezeichnet wird (Figuren 5 und 6). Dieser Bereich wird durch Firmware entwickelt und ist über das Basisadressregister (BAR) erreichbar, aus welchem gelesen aber in das nicht eingeschrieben werden kann. Die Systembasis 502 enthält eine Anzahl von Systemattributen, welche eine Jobschrittnummer unJeine Prozeßgruppennummer (J, P) für den laufenden Prozeß umfassen. Ein anderes Attribut in der Systembasis ist eine Hinweisadresse auf eine durch Hardware definierte Datenstruktur, die als J-Tabelle 503 bekannt ist. Diese Tabelle enthält eine Eingangsstelle für jeden gegenwärtig im System befindlichen Jobschritt. Jede Eingangsstelle in der J-Tabelle 503 zeigt auf eine zugehörige P-Tabelle 504 hin, die ebenfalls eine durch Hardware definierte Datenstruktur darstellt. Diese Tabelle bestimmt eine Prozeßgruppe und enthält eine Eingangsstelle für jeden Prozeß in der Prozeßgruppe. Jede P-Tabellen-Eingangsstelle zeigt auf einen Prozeßsteuerblock 400.
In Figur 5 liefert die durch die J-Zahl über den arithmetischen Teil.506 der Rechnereinheit 111 (siehe Figur 2a) indizierte Hinweisadresse Zugriff zu einer J-Tabelleneingangsstelle 503. Diese wiederum enthält eine P-Tabellenhinweisadresse, die wenn sie
5 09845/0765
2517296
durch die P-Zahl über die Recheneinheit 506 indiziert wird, Zugriff zu einer P-Tabelleneingangsstelle 504 liefert. Letztere enthält eine Hinweisadresse 507 auf den Prozeßsteuerblock des ablaufenden Prozesses. Somit hat das Betriebssystem Zugriff zum aktiven Prozeßsteuerblock und benutzt hierzu die Inhalte der Grenzadressenregister 501 und kann jeden anderen Prozeßsteuerblock erreichen, der durch seinen zugeordneten logischen Namen (JP) gegeben ist.
D. Speicher-Segmentierung
In einer Multiprozeßanlage befinden sich zu einer gegebenen Zeit viele Prozesse im Speicher. Diese Prozesse haben unterschiedlichen Umfang und unterschiedliche Anforderungen an den Speicher, wodurch ein SpeicherZuordnungsproblem entsteht. Die Hardware in Zusammenarbeit mit dem nicht dargestellten Betriebssystem löst dieses Problem durch dynamische Zuordnung von Speicherraum. Infolge der zufälligen Natur von Speicherraumbedarf wird der Speicherraum in Form von Segmenten unterschiedlicher Größe zugeteilt^und die Speicherzuordnung kann während der Laufzeit des Prozesses umorganisiert werden. Somit können einem Prozeß eine Anzahl nicht aneinandergrenzender Speichersegmente zugeteilt werden. Diese Art der SpeicherZuordnung nennt man Segmentierung. Sie stellt ein zusätzliches Problem insofern dar, als die Speicheradressen modifiziert werden müssen, wenn ein Teil oder der gesamte Prozeß umgespeichert wird. Um dieses Problem zu erleichtern, sieht das vorliegende System eine Technik vor, bei der die von einem Prozeß benutzten Adressen logische Adressen statt absoluter Hauptspeicheradressen sind. Diese logischen Adressen werden zur Entwicklung absoluter Adressen benutzt. Die Segmentierung ermöglicht ferner jedem Prozeß den Zugriff zu seinen eigenen oder ihm zugeordneten Speichersegmenten über ein System von Segmentdescriptoren. Durch Zugriff zu einem Segmentdescriptor kann ein Prozeß die Adresse eines Seg-*· ments erhalten. Segmentdescriptoren sind im Hauptspeicher untergebracht und werden vom Betriebssystem unterhalten.
509845/0765
2517296
-54-
Jeder Prozeß kann Zugriff bis zu 2068 Speichersegmenten haben. Normalerweise würde dies eine gleiche Anzahl von Segmentdescriptoren pro Prozeß erfordern. Da jedoch die Segmente gemeinsam benutzt werden können, teilt das Betriebssystem die Segmentdescriptoren in Segmenttabellen ein. Diese Gruppierung basiert auf der Zugriffsmöglichkeit durch einen Prozeß (Task)/ eine Prozeßgruppe (Jobschritt) oder generell, d.h. für das gesamte System. Jedem Prozeß können bis zu 15 Segmenttabellen zugeordnet sein. Diese Technik erfordert nur einen Segmentdescriptor für jedes Segment, das für den Pazeß über eine Segmenttabelle zugängig ist. Somit wird der für die Unterbringung der Segmentdescriptoren erforderliche Speicherraum verringert. Die' Speicherfortschreibung während der Umordnung wird reduziert und man erhält einen gewissen Programmschutz. Den Hauptmechanismus für den Programmschutz bildet das Ringsystem, welches Gegenstand älterer Anmeldungen ist.
Ein Prozeß muß bestimmen können, zu welchen Segmenten er Zugriff hat. Folglich versieht das System den Prozeß mit zwei Segmenttabellen-Wortanordnungen (STWA). Diese Anordnungen enthalten die Adressen aller Segmenttabellen, die dem Prozeß zugängig sind. Es sind zwei Segmenttabellen-Wortanordnungen pro Prozeß vorhanden, weil Segmentgrößen gegeben sind, nämlich groß und klein. Große
22 Segmente haben einen Maximalumfang von 2 Bytes, während kleine Segmente einen Maximalumfang von 2 Bytes aufweisen. Der Unterschied in Segmentumfang erfolgt in Schritten von 16 Bytes bis zum Maximalumfang. Ein System kann im typischen Fall bis zu 28 große Segmente und'2040 kleine Segmente aufweisen. Die Segmenttabellen-Wortanordnungen können vom Betriebssystem umgeschichtet werden. Deshalb muß ein Prozeß die absolute Adresse der ihm zugeordneten Segmenttabellen-Wortanordnungen kennen. Der Prozeßsteuerblock für einen Prozeß enthält zwei Worte, die diese Information enthalten und als Adressraumworte ASWO-1 bekannt sind (Figur 4). Jedes Wort zeigt auf eine Segmenttabellen-Wortanordnung STWA hin. Das Betriebssystem schreibt den Inhalt der Adressraumworte fort, sobald die zugehörigen Segmenttabellen-Wortanordnungen umgeschich-
5 0 9 8 4 5/0765
2517296
tet werden. Das Herabarbeiten längs einer Kette von Hinweisadressen und das Dekodieren des Segmentdescriptors ist eine Firmware-Funktion und ist, wenn sie einmal eingeleitet ist, nicht einmal für das Betriebssystem erkennbar.
Die Segmentierung definiert über 200 Millionen Bytes and Adressraum als für den Prozeß zugängig. Diese Menge überschreitet die Kapazität des Hauptspeichers. Deshalb wird in Verbindung mit dem Hauptspeicher ein Sekundärspeicher (Magnetplatten oder Trommel) eingesetzt. Das Betriebssystem erzeugt den Anschein, daß das System eine viel größeren Hauptspeicher hat als er tatsächlich zur Verfügung steht. Dieses Konzept nennt man virtuellen Speicher.
Zu jeder gegebenen Zeit kann sich ein definiertes Segment physikalisch im Hauptspeicher befinden oder nicht. Der Inhalt eines Segmentdescriptors zeigt an, ob das zugehörige Segment im Hauptspeicher liegt oder nicht. Die Hardware stellt jeden Versuch eines Prozesses fest, Zugriff zu einem Segment zu erhalten, was nicht im Hauptspeicher liegt, und informiert das Betriebssystem. Dieses läßt das gewünschte Segment aus dem Sekundärspeicher in den Hauptspeicher umladen. Sodann fügt das Betriebssystem die Speicheradresse des Segments in den Segmentdescriptor ein, der den einzigen Platz darstellt, wo die absolute Adresse eines Segments gefunden werden kann. Diese Operation ist für den Prozeß nicht erkennbar und somit ist ihm nicht bewußt, daß das Segment nicht im Hauptspeicher war bzw. in den Hauptspeicher umgeladen werden mußte.
Das bisher beschriebene Rechnersystem ergibt Daten und Prozedurschutz dadurch, daß Prozesse daran gehindert werden, sich gegenseitig zu stören oder in unerlaubter Weise den jeweils zugeordneten Adressenraum gemeinsam zu nutzen. Dieser Schutz wird durch eine Beschränkung der Adressierbarkeit mit Hilfe der erwähnten Speichersegmentierung und durch ein Ringsystem erreicht. Die Segmenttabellen isolieren den Adressenraum der verschiedenenProzesse im System. Die Prozesse benutzen während der Ausübung immer eine
509845/0765
2517296 \0
segmentierte Adresse. Diese besteht aus einer Segmentnummer und einer relativen Adresse innerhalb des Segments. Die Hardware überprüft,daß die vom Prozeß benutzte Adresse Teil des dem Prozeß zugeordneten Adressraum ist. Liegt die Adresse außerhalb des genannten Adressraums, so erscheint ein Ausnähmesignal Ein Preeß kann sich nicht auf Daten innerhalb des Adressraums eines anderen Prozesses stützen, weil die Hardware die Segmenttabellen des bezugnehmenden Prozesses verwendet. Somit ist keine Möglichkeit für einen Prozeß oder eine Prozeßgruppe gegeben, ein Systemelement zu verwenden, welches zu einer anderen Prozeßgruppe gehört.
Im allgemeinen ist eine Überlappung von Adressraum im System für diejenigen Segmente gegeben, welche von allen Prozessen gemeinsam benutzt werden. Diese gewissermaßen öffentlichen Segmente werden von Systemprogrammen erzeugt, welche überprüfen und eine Sicherung gegen Adressenkonflikte darstellen. Somit schützt die Segmentierung die Benutzerprogramme gegeneinander und schützt das Betriebssystem gegen die Benutzerprogramme. Segmente, welche von mehreren Prozessen gemeinsam benutzt werden, sind nicht geschützt gegen den Mißbrauch durch einen dieser Prozesse. Um dieses Problem zu lösen, wird ein Ringsystem verwendet, wobei Prozedur- und Datensegmente in vier Klassen oder Zonen eingruppiert sind. Die vier Ringzonen sind mit 0 bis 3 bezeichnet. Jeder Ring stellt einen bestimmten Grad von Systemprivileg dar, wobei die Zone 0, d.h. der innerste Ring,das höchste Privileg und die Zone 3, der äußerste Ring, das geringste Privileg aufweist. Jeder Prozedur im System ist eine minimale und eine maximale Ringnummer zur Ausübung zugeordnet, welche festlegt, wer die Prozedur aufrufen darf. Eine Prozedur ist eine Subroutine, die in der Lage ist, andere Prozeduren aufzurufen und ihnen Parameter zu überstellen. Die allgemeinen Regeln des Ringschutzsystems sind folgende:
1. Eine Prozedur in einen inneren Ring hat freien Zugang zu Daten in einem äußeren Ring. Umgekehrt kann eine Prozedur in einem äußeren Ring Daten in einem inneren Ring nicht erreichen.
509845/0765
2517296
2. Eine Prozedur in einem äußeren Ring kann in eine Prozedur in einem inneren Ring verzweigen; das umgekehrte ist jedoch nicht erlaubt.
3. Jedem Segment mit Daten sind zwei .Ringwerte zugeordnet, einer für Lesen (RD) und einer für Schreiben (WR). Diese Ringwerte bestimmen den maximalen Ringwert, in dem die Prozedur ausgeführt werden kann, wenn sie Daten entweder im Lese- oder im Schreibmodus erreicht.
Jedesmal wenn ein Prozedurbefehl ausgeführt wird, wird die Ringnummer der Prozedur (effektive Adressringnummer EAR) mit den dem Segment mit den angewählten Daten zugeordneten Ringnummern verglichen. Die effektive Adressringnummer stellt die Maximalzahl der Prozessringnummern im Befehlszähler und alle Ringnummern in den Basisregistern und Datendescriptoren im Adressierweg dar. Abhängig
vom Ergebnis des Vergleichs der Ringnummern wird entweder Zugriff zu den Daten gestattet oder verweigert. Wenn b.eispielsweise eine Systemtabelle existiert in einem Segment mit einer maximalen Schreibringnummer 3 und einer maximalen Leseringnummer 1, so kann die Benutzerprozedur im Ring 3 die Tabelle lesen, kann sie aber nicht fortschreiben. Gemäß Vereinbarung sind die Ringe 0 und 1 dem Betriebssystem vorbehalten, während die Ringe 2 und 3 für den Benutzer reserviert sind. Der Ring 0 enthält jene Segmente, die für den gesamten Systembetrieb kritisch sind. Ring 1 enthält die Menge der Systemsegmente, deren Fehler nicht zu einer unwiderruflichen Störung führen, sondern bereinigt werden könnte. Der Benutzer kann den Ring 2 für durchgeprüfte Programme und den Ring 3 für im Test befindliche Programme verwenden.
F. Prozedur-Aufrufe
Der Prozeduraufruf ist eine wichtige Funktion im System. Er wird dazu benutzt, Aufrufe von einer Prozedur zu einer anderen zu leiten, Benutzerprozeduren, Betriebssystemdienste in Anspruch zu nehmen und um eine Modularstruktur innerhalb des Betriebssystems zu ermöglich. Ein Prozeduraufruf wird durch Befehle bewirkt sowie durch ein " als Hardware angesehenes Systemelement,genannt •Stapelspeicher (Figur 7A). Ein Stapelspeicher ist ein Mechanismus,
509845/0765
2517296
welcher Daten aufnimmt, speichert und zurückliefert nach dem Prinzip, daß die zuletzt eingegebene Information zuerst ausgegeben wird. Stapelspeicher setzen sich aus besonderen Segmenten, genannt Stapelspeichersegmenten, zusammen. Ein solches besteht aus einer Anzahl aufeinanderfolgender Teile, genannt Stapelspeicherrahmen 701 (Figuren 7A und 7B), welche jeder Prozedur dynamisch zugeordnet werden. Der erste Stapelspeicherrahmen wird in den oberen Teil eines Segments geladen,und die nachfolgenden Stapelspeicherrahmen werden anschließend geladen. Der letzte geladene Stapelspeicherrahmen wird als Spitze des Stapelspeichers angesehen. Das T-Register 702 stellt die Spitze des Stapelspeichers für den laufend aktiven Prozeß fest. Ein virtuelles T-Register besteht im Prozeßsteuerblock aller Prozesse im System. Ein Stapelspeicherrahmen 701 in Figur 7B besteht aus drei Bereichen: Einem Arbeitsbereich 702, in dem die Variablen gespeichert werden, einem Sicherheitsbereich 703, welcher die Inhalte der Register sicherstellt,und einemKommunikationsbereich 704, in den Parameter zwischen den Prozeduren eingegeben werden. Vor einem Prozeduraufruf muß der Benutzer jene Register angeben, welche er sicherzustellen wünscht,und er muß in den Kommunikationsbereich diejenigen Parameter eingeben, welche der aufgerufenen Prozedur zugeführt werden sollen. Wenn der Aufruf erfolgt, so sichert die Hardware die Inhalte der Befehlszähler IC und bestimmter Basisregister, um eine Rückkehr aus der aufgerufenen Prozedur zu erleichtern. Jeder Prozeduraufruf erzeugt innerhalb eines Stapelspeichersegments 701 einen Stapelspeicherrahmen, und nachfolgend eingehende Aufrufe erzeugen zusätzliche Stapelspeicherrahmen. Jeder Austritt aus einer dieser aufgerufenen Prozeduren führt zur Löschung eines Stapelspeicherrahmens aus dem Stapelspeicher. Somit wird ein zeitlicher Ablauf der Aufrufe beibehalten, der ordnungsgemäße Rücksprünge erleichtert. Um einen Schutz zwischen in verschiedenen Ringen ablaufenden Prozeduren sicherzustellen, werden unterschiedliche Stapelspeichersegmente benutzt. Es gibt in jedem Prozeß jeweils ein Stapelspeichersegment für jeden Schutzring. Ein Prozeßsteuerblock enthält drei Stapelspeicherbasisworte,
509845/0765
2517296
welche auf den Anfang des Stapelspeichersegments für die Ringe O, 1 und 2 hinweisen,die dem Prozeß zugeordnet sind. Das Stapelspeichersegment für den Ring 3 kann durch einen Einwärtsruf nicht erreicht werden. Folglich wird seine Stapelspeicherstartadresse im Prozeßsteuerblock nicht benötigt.
4. Prozeßmanagement und Synchronisierung
Das System ermöglicht Multiprozeß-Operationen, welche von einem Betriebssystem gesteuert werden, das eine Kombination von Software, Hardware und Firmware benutzt. Die Software erzeugt und löscht Prozesse innerhalb des Systems, während Hardware und Firmware die Multiplexverarbeitung in der Zentraleinheit durchführen. Außerdem sorgt eine Kombination von Software, Hardware und Firmware für die Synchronisation zwischen den Prozessen. Prozesse werden normalerweise jedoch nicht immer zu Beginn und Ende von Ein/Ausgabe-Operationen inganggesetzt und angehalten, ferner während der Verarbeitung eines zugehörigen Jobs und zu anderen Zeitpunkten zu Zwecken, welche das Betriebssystem für notwendig hält. Deshalb ist ein Kommunikationssystem erforderlich, um miteinander in Beziehung stehende Prozesse wirksam zu starten und anzuhalten und die Information zwischen Ihnen zu vermitteln. Das Hardwaresystem liefert interne Nachrichten, genannt Semaphoren, um eine Kommunikationsverbindung zwischen den Prozessen herzustellen.
A. Prozess-Zustände
Ein Prozess kann sich zu einer gegebenen Zeit jeweils in einem von vier möglichen Zuständen befinden, nämlich laufend, vorbereitet, wartend oder ausgesetzt. Die Hardware nimmt diese vier möglichen Prozeßzustände zur Kenntnis und führt verschiedene Firmware-Prozeduren durch, um den Prozeß zuzuteilen, den Zustand zu ändern und die auf dem Prozeßzustand beruhenden Datenstrukturen beizubehalten. Der Prozeßsteuerblock enthält ein Statusfeld, welches den gegenwärtigen Zustand des zugehörigen Prozesses definiert. Ein
509845/0765
2517296
Prozeß befindet sich im ablaufenden Zustand, wenn er Steuerbefugnis über die Zentraleinheit hat. Dieser Zustand schließt die Versorgung der Zentraleinheit mit Adressenraum (Segmenttabellen) und einer Startadresse ein. Die Zentraleinheit führt dann die Befehle in den Prozedursegmenten des Prozesses aus. Das J-Tabellenwort des Brozeßnamens (logische Adresse) des Prozeßsteuerblocks für den laufenden Prozeß wird im laufenden Prozeßwort (BAR + 60) innerhalb der Systembasis aufbewahrt (Figur 6). Die in Figur 5 gezeigte Systembasis ist fast die gleiche wie in Figur 6, nur sind einige Einzelheiten weggelassen. Der Vorbereitungszustand entspricht im wesentlichen dem Ablaufzustand, mit der Ausnahme, daß der Prozeß keinen Steuergriff zur Zentraleinheit hat, weil diese den prozeß noch nicht wahrgenommen hat. Ein im Bereitschaftszustand befindlicher Prozeß erstrebt wie andere vorbereitete Prozesse und der gerade ablaufende Prozeß in Konkurrenz Steuerzugriff zur Zentraleinheit.
Ein Prozeß im Wartezustand kann nicht fortfahren, bis ein bestimmtes Ereignis auftritt, beispielsweise eine Nachricht über ein Semaphor eingeht. Ein wartender Prozeß befindet sich nicht in Zugriff skonkurrenz zur Zentraleinheit aber er kann hinsichtlich des erwarteten Ereignisses in Konkurrenz mit anderen wartenden Prozessen stehen.
Ein ausgesetzter Prozeß ist für eine durch die Software bestimmte Zeitspanne unterbrochen und wird später wieder aufgenommen. Die Entscheidung, den Prozeß anzuhalten und später wieder weiterlaufen zu lassen, liegt außerhalb des Prozesses. Somit ist ein ausgesetzter Prozeß nicht aktiv und kann keine Informationen über Ereignisauftritte empfangen und kann die Zentraleinheit nicht benutzen. Ein Prozeß wird unter den folgenden Bedingungen ausgesetzt:
1. In Ausführung eines Beendigungsbefehls, weil alle seine Funktionen erfüllt sind;
2. Als Folge eines Aussetzbefehls vom Betriebssystem und
3. Beim Auftreten eines Ausnahmezustands, wobei die Steuerung auf das Betriebssystem übertragen wird.
509845/0765
2517296
B. Prozeß-Zuteilung
Ein Prozeß geht während des Ablaufs aufgrund seiner Aktionen freiwillig von einem auf einen anderen Zustand über oder unfreiwillig aufgrund von Aktionen anderer Prozesse. Die als Zuteiler bekannte Zentraleinheit-Firmware steuert den übergang des Prozesses zwischen seinen Zuständen. Der Zuteiler benutzt eine Gruppe von Warteschlangen, um die Prozesse, die sich im Vorbereitungs- oder Wartezustand befinden, zu verteilen. Ausgesetzte Prozesse werden durch die Software gesteuert.
Unter Bezugnahme auf die Figuren 6, 8 und 9 ist zu bemerken, daß ein vorbereiteter oder wartender Prozeß durch einen Prozeßsteuerblock und eine besondere Warteschlangen-Eingangsstelle dargestellt wird, genannt Prozeßverbindung. Figur 9 zeigt eine auseinandergezogene Darstellung der Inhalte des GO-Segments 802 und enthält die Prozeßverbindungen 8O3a-8O3b sowie 8O3c-8O3g des aktiven Prozesses sowie die freien Prozeßverbindungen 8O5a-8O5c ausgesetzter Prozesse. Jede Prozeßverbindung gibt den Prozeß (J, P), die Prozeßpriorität und eine Hinweisadresse auf die nächste Prozeßverbindung in der Warteschlange an. Es gibt verschiedene Arten von Warteschlangen, beispielsweise die im Wartezustand befindliche Warteschlange 803-b und die im vorbereiteten Zustand befindliche Warteschlange 8O3c-g. Eine Hardwareeinheit ähnlich der J-Tabelle und unter der Bezeichnung G-Tabelle bekannt (Figuren 6 und 8J enthält die Hinweisadressen auf alle allgemeinen, d.h. systemweiten Segmente 8O2-8O2n. Das erste Element GO der G-Tabelle 801 weist auf das die Zuteiler-Warteschlange enthaltende Segment 802 hin. Eine G-Tabellenhinweisadresse zur G-Tabelle 801 findet sich in der Systembasis 502 in Figur 5. Auch die Systembasis weist eine Eingangsstelle auf, welche das interne Prozeß-Warteschlangenwort (IPQW) genannt wird und den Kopf 805 einer im vorbereiteten Zustand befindlichen Warteschlange 8O3c-8O3g im GO-Segment 802 identifiziert. Somit kann der Zuteiler alle vorbereiteten Prozesse überprüfen, indem er die vorbereitete Warteschlange 803c-803g abfragt. Wenn der gegenwärtig ablaufende Prozeß seinen
5098 4 5/0765
2517296
Zustand ändert, so entfernt der Zuteiler die Prozeßverbindung am Kopf der vorbereiteten Warteschlange und benutzt den J, P-Namen für den Zugriff des Prozeßsteuerblocks. Der durch diesen definierte Prozeß wird dann der als nächster ablaufende Prozeß.
Da mehr als ein Prozeß auf das gleiche Ereignis warten kann, besteht für jedes Ereignis eine Warteschlange wartender Prozesse 8O3a-3O3b. Die wartenden Prozesse sind ferner über im GO Segment liegende Prozeßverbindungen 805 miteinander verkettet. Eine Hinweisadresse zum Kopf einer wartenden Warteschlange ist in einem Semaphor 903 vorhanden. Es gibt eine Anzahl von Ereignissen, auf die ein Prozeß warten kann. Deswegen ist eine Anzahl von im Wartezustand befindlicher Warteschlangen vorhanden, von denen jeder ein Semaphor 903, 904 zugeordnet ist.
Die Anzahl der vorbereiteten oder wartenden Prozesse ändert sich dynamisch. Somit ändert sich auch die Anzahl der für die vorbereiteten und wartenden Warteschlangen erforderlichen Prozeßverbindungen. Diese Tatsache stellt für den Zuteiler ein Speichermanagementproblem dar. Dieses Problem wird durch eine andere Warteschiange gelöst, welche als Warteschlange 8O5a-c für eine freie Prozeßvarbindung bezeichnet wird. Diese Warteschlange verkettet alle Prozeßverbindungen im Segment GO, die nicht durch die vorbereiteten oder v/artenden Warteschlangen benutzt werden und kann als Erweiterung einer bestimmten Warteschlange vorbereiteter oder wartender Prozesse Verwendung finden. Eine Hinweisadresse 901 zum Kopf 902 der Warteschlänge 805 für freie Prozeßverbindungen befindet sich neben dem Anfang des GO Segments 802.
C. Prozeß-Synchronislerung
Eine Prozessynchronisierung ist erforderlich, um die Aktivitäten zweiter an derselben Aufgabe (Task) arbeitender Prozesse zu koordinieren. Sie wir durch den Einsatz der Semaphoren 903-904 erreicht, weiche Datenstrukturen darsteilen, die im Adressenraum
509845/0765
251729S
des Kommunikationsprozesses liegen. Ein Semaphor wird zur Signalisierung eines Ereignisauftrittes und zur Verarbeitung von Nachrichten-Warteschlangen benutzt. Ein Ereignis in diesem Sinn ist jede von einem Prozeß beobachtete Erscheinung, die für einen anderen Prozeß von Interesse sein kann. Das Ereignis kann beispielsweise im Abschluß einer asynchronen Operation oder in der Zugängikeit eines Systemmittels liegen. Ein Prozeß benutzt zwei Semaphoroperationen, um einen Ereignisauftritt zu signalisieren. Die eine Operation sendet ein Signal zu einen Semaphor, die andere nimmt das Signal von einem Semaphor auf. Die Sendeoperation wird oft V-Operation genannt, die Empfangsoperation heißt P-Operation. Die Sendeoperation erlaubt es, einem Prozeß Daten oder ein Signal auszusenden, daß Daten vorbereitet sind. DasSemaphor speichert das Signal, bis ein anderer Prozeß für die Aufnahme der Daten vorbereitet ist. Somit ist der abgebende Prozeß frei, weiterzuarbeiten, weil er die Daten abgegeben hat. Die Empfangsoperation prüft ein bestimmtes Semaphor und nimmt das Signal auf. Ist ein Signal vorhanden, se läuft der empfangende Prozeß weiter. Ist jedoch kein Signal am Semaphor, so geht der empfangende Prozeß in den Wartezustand über. Das Semaphor dient dann als Hinweisadresse zum Kopf einer Warteschlange. Der Prozeß bleibt in dem durch die Warteschlange am Semaphor bestimmten Wartezustand, bis ein anderer Prozeß ein Signal dem betreffenden Semaphor zusendet. Somit kann ein Semaphor ein Signal solange festhalten, bis ein Prozeß dieses Signal aufnimmt oder ein Semaphor kann einen Prozeß anhalten, bis ein Signal ihm"zugesandt wird.
Auch Nachrichten können von Prozeß zu Prozeß weitergeleitet werden. Eine Nachricht weist die gleiche Anwesenheits- oder Abwesenheitseigenschaft wie ein Signal und zusätzlich hierzu Information auf. Teil der Information wird von der Hardware geliefert und ein Teil durch die Prozedur des Prozesses, welcher die Nachricht aussendet. Eine Nachricht enthält den Prozeßnamen des aussendenden Prozesses. Somit können viele Prozesse Informationen durch ein
509845/0765
2517296
einziges Semaphor senden, versehen mit dem Namen des Absenders. Ein Nachrichten-Semaphor kann eine Warteschlange von Nachrichten aufweisen, die darauf warten, von einem Prozeß aufgegriffen zu werden. Wie bei Signal-Semaphoren ergeben sich ändernde Anforderungen an Speicherraum, wodurch ein Speichermanagementproblem entstehen kann. Auch hier wird das Problem durch eine Warteschlange freier Nachrichtenverbindungen gelöst. Diese Verbindungen befinden sich an einem bekannten Platz in einem Segment, welches leicht zu finden ist, wenn Nachrichtenverbindungen aufgenommen oder geliefert werden sollen. Da Semaphoren und die auf ihnen aufgebauten Warteschlangen von verschiedenen Prozessen gemeinsam benutzt werden, ist die gesamte Semaphorstruktur geschützt. Man erreicht dies durch Hardware und Software-Konventionen, welche den Zugriff zu jedem ein Semaphor enthaltenden Segments beschränken. Somit müssen Semaphore in Semaphor-Descriptorsegmenten liegen, von denen manche G-Segmente sein können, sofern Systemkommunikation notwendig ist. Jedoch sind alle G-Segmente mit Ausnahme des Segments GO Semaphor-Descriptorsegmente. Jeder Semaphordescripirr enthält eine Hinweisadresse auf ein Semaphor. Semaphoradressen werden mit Hilfe eines Semaphordescriptors entwickelt, wodurch ein zusätzlicher Schutz für das Semaphor gegeben ist. Ein Semaphorsegment kann logisch unter Benutzung einer Segmentnummer und einer relativen Lage innerhalb des Segments oder direkt durch Benutzung der G, D-Nummer adressiert werden.
E. Prozeßsteuerblock-Strukturen
Figur 4 zeigt das Format des Prozeßsteuerblocks (PCB) 400. Dieser ist ein Speicherbereich im Hauptspeicher, welcher einem Prozeß zugängig gemacht wird, um den Zustand der Zentraleinheit abzusichern. Die Adressierung des Prozeßsteuerblocks wurde oben bereits in Verbindung mit Figur 5 erläutert. Die Prozeßsteuerblock-Hinweisadresse 507 weist auf den Prozeßsteuerblock PCB im
9845/0765
2517296
Speicherplatz O in Figur 4 hin. Beim Fortschreiten in Richtung abwärts vergrößern sich die Speicherplätze, um jeweils 4 Bytes, während sie vom Speicherplatz O an aufwärts um 8 Bytes größer werden. Die unterhalb von Speicherplatz 0 liegenden Speicherplätze werden als positiv und die oberhalb liegenden als negativ gerichtet angesehen. Die aufwärts gerichteten Speicherplätze sind wahlweise vorgesehen und können in den Prozeßsteuerblock einbezogen werden oder nicht. Auch die Speicherplätze 148 bis 176 sind eine Option. Die Zahlen unter den Speicherplätzen geben die Verschiebung in Bytes gegenüber dem Bezugsspeicherplatz 0 des Prozeßsteuerbiocks an und sollten nicht mit den sonst üblichen Bezugszeichen verwechselt werden. Beginnend beim Byte 0 aufwärts bis aber ohne Einschluß von Byte 16 sind vier Prozeß-Hauptworte PMW 0 bis PMW 3 gespeichert, wobei jedes Prozeß-Hauptwort 4 Bytes lang ist. Das Prozeßhauptwort 0 besetzt die Bytes 0 bis 3 und besteht aus vier Teilen: Einem Fähigkeitsbyte, einem Prioritätsbyte, einem Zustandsbyte und einem Dacorerweiterungsbyte DEXT. In den Figuren 10a bis 1Od sind Einzelheiten des Prozeßhauptwortes PMW 0 dargestellt, wobei sich weitere Einzelheiten das Fähigkeitsbytes 1001 aus Figur 10b ergeben. Dort stellt das erste Bit 1005 das Berechnungsmodus-Bit dar, welches anzeigt, ob Zeitberechnungsfunktionen für den Prozeß durchgeführt werden oder nicht. Ist dieses Bit auf v0" gesetzt, so erfolgt für den Prozeß keine Zeitberechnungsfunktion, während eine solche stattfindet, wenn das Zeitberechnungs-Bit 1005 auf "1" steht. Das Bit 1006 für den wissenschaftlichen Modus wird auf 0 gesetzt, wenn eine Sicherstellung des wissenschaftlichen Registers der Anlage nicht vorgesehen ist und ein Sicherheitsbereich für das wissenschaftliche Register bei den Bytes 148 bis 176 in Figur 7 im Prozeßsteuerblock PCB nicht vorhanden ist. Steht das Bit 1006 für den wissenschaftlichen Modus auf "1", so ist die wissenschaftliche Option vorhanden und wird im Prozeß benutzt. Der Sicherheitsbereich der wissenschaftlichen Register wird, sofern nötig, zur Sicherstellung der Inhalte der wissenschaftlichen Register ausgenutzt. Das Bit 1007 für den Code-Modus zeigt an, ob eine Standard Code-Gruppe oder eine Kompatibilitätscode-Gruppe vom Prozeß benutzt wird, wobei "0"
'5098 4 5/0 76 5
2517296
bedeutet, daß eine Standardcodegruppe benutzt wird, während "1" in der dritten Bitstelle 1007 anzeigt, daß eine KombaÜbilltätscode-Gruppe Verwendung findet. Die üblichen Bits des Fähigkeitsbytes werden auf Null gesetzt.
Einzelheiten des Prioritätsbytes 1002 ergeben sich aus Figur 10c. Die ersten vier Bits 1008 werden zum Einstellen des Prioritätsgrades des Prozesses verwendet, der dem gegebenen Prozeßsteuerblock PCB zugeordnet ist. Jedem Prozeß ist einer von 16 Prioritätsgraden zugeordnet und wird dazu benutzt, miteinander in Konkurrenz stehende Prozesse zu ordnen, d.h. (a) zur Auswahl desjenigen der vorbereiteten Prozesse der zur Durchführung kommt, (b) für die Einordnung der Prozesse in Warteschlangen. Die Prioritäten nehmen von 0 bis 15 ab und für einen gegebenen Prioritätsgrad wird die FIFO Regel angewandt, d.h. der zuerst angekommene Prozeß wird als erster ausgegeben. Die nächsten vier Bits 1009 des Prioritätsbytes 1002 sind Nullen.
In Figur 1Od sind Einzelheiten des Zustandsbytes 1003 wiedergegeben. Es liefert Information in Bezug auf den mit dem Prozeßsteuerblock PCB 400 verbundenen Prozeß. Ist der Prozeß aktiviert, so wird das Aktivfeld-Bit A 1010 auf "1" gesetzt. Das Aussetzungsfeld S 1011 wird "1", wenn der Prozeß ausgesetzt ist. Das Unterzustandsfeld SS 1012 ist ein 2-Bitfeld und bestimmt die folgenden Unterzustände des Prozesses: (a) im Fall binär 00 ist der Prozeß inaktiv; (b) im Fall binär 01 wartet der Prozeß in der Warteschlange der vorbereiteten Prozesse (Q/PR/RDY); (c) im Fall 10 wartet der Prozeß auf ein Semaphor in einer Semaphor-Warteschlange (Q/PR/S); (d) im Fall binär 11 wird der Prozeß vom Prozessor ausgeführt. Das Mitte-Operationsfeld (MOI) 1013 wird auf "1", wenn mitten in der Operation eine Unterbrechung auftritt und wird während der Durchführung eines Befehls berücksichtigt, d.h. vor Abschluß des Prozesses. Das Dekorerweiterungsmodus-Bit EXTD 1014 steht auf "1", wenn der Prozeß in einem erweiterten Dekormodus arbeitet, d.h. in einem Emulationsmodus der Anlage. Die Bits 1015
509845/0765
2517296
und 1016 stehen auf "0". Das vierte Byte des Prozeß-Hauptwortes PMW-jO enthält die Dekorerweiterungsnummer und wird benutzt, wenn das System im Emulationsmodus arbeitet.
Das Prozeß-Hauptwort PMW 1 wird in den Bytes 4-7 des Prozeßsteuerblocks PCB gespeichert. Einzelheiten ergeben sich aus •Figur 1Oe. Das Zustandbyte 1016 ist das erste Byte im PMW 1 und speichert die Inhalte des Statusregisters. Das Multiprozessor-Byte MP 1018 ist wichtig für einen MultiprozessoraufbaU/ sonst ist dieses Feld "0". Das zweite und das vierte Byte im Prozeß-Hauptwort PMW 1 sind die MBZ Felder 1017 und 1019, welche bei Normalbetrieb Null sein müssen (must be zero).
Das Prozeß-Hauptwort PMW 2 belegt die Bytes 8 bis 11 des Prozeß-Steuerblocks und ergibt sich im einzelnen aus Figur 1Of. Das Feld von Bit 4 bis Bit 31 enthält den internen Namen SEG, SRA 1021 des Semaphors, mit dem der Prozeß-Steuerblock verbunden ist, wenn sich der Prozeß entweder im Warte- oder im ausgesetzten Zustand befindet. Das Feld 1023 für Ausnahmeklasse und Typ enthält Klasse und Typ der ünterbrechungsgleichen Ausnahme, die nach einem Ausnahmesignal den Prozeß in den ausgesetzten Zustand übergehen läßt. Das Feld 1022 von Bit 4 bis Bit 15 ist bedeutungslos, wenn sich der Prozeß in einem anderen Zustand als den oben erwähnten befindet.
Das Prozeß-Hauptwort PMW 3 belegt die Bytes 12 bis 15 im Prozeß-Steuerblock 400 und weist auf eine Dekorerweiterungstabelle hin. Figur 10g zeigt Einzelheiten, wobei, das Feld 1024, genannt DETSZ die Anzahl der Eingangsstellen in die Tabelle definiert und im Fall, daß dieses Feld gleich Null ist , dem Prozeß keine Dekorerweiterung gestattet ist. Das DETA Feld 1025 gibt die absolute Adresse der Dekorerweiterungstabelle in Einheiten von 16 Bytes an und ist nur dann wichtig, wenn das Feld DETSZ nicht gleich 0 ist. Die Dekorerweiterungstabelle besteht aus DETSZ-Eingangsstellen, von denen jede ein Byte lang ist. Der DEXT-Eingang
503345/076$
2517296
der Tabelle bestimmt die Fähigkeit des Prozesses im Dekorerweiterungsmodus DEXT zu arbeiten. Wenn dieses Byte gleich 0 ist, so ist der Dekorerweiterungsmodus nicht zulässig. Ist hingegen das DEXT-Byte gleich "1", so ist die Dekorerweiterungsnummer DEXT zulässig. Andere Werte als 0 und 1 sind für die Dekorerweiterungs-Tabellennummer 1004 unzulässig.
Die Bytes 16 bis 23 des Prozeß-Steuerblocks 400 enthalten zwei Adressraumworte ASW 0 und ASW 1, von denen jedes eine Hinweisadresse auf eine Anordnung von Segmenttabellenworten aufweist. Beide ASW 0 und ASW 1 haben das gleiche Format gemäß Figur 10h. Der Umfang der Anordnung von Segmenttabellenworten wird durch die Anzahl der Segmenttabellenworte in einer Anordnung bestimmt und umfaßt üblicherweise sechs ASW 0 und acht für ASW 1. Das STWSZ-FeId 1026 gibt den Umfang der Anordnung von Segmenttabellenworten an. Das Feld STWA 1027 für die Segmenttabellen-Wortanordnung enthält die absolute Adresse STWA der Anordnung in Einheiten von 16 Bytes, d.h. die absolute Adresse der Anordnung ist 16 mal STWA in Bytes.
Die Bytes 24 bis 27 im Prozeßsteuerblock beinhalten ein Ausnahmewort EXW, welches im einzelnen aus Figur 1Oi ersichtlich ist. Es enthält eine Hinweisadresse (SEG, SRA) 1029 zu einer Ausnahme-Klassentabelle, welche diejenige Aktion festlegt, welche ein Prozeß nach einem Ausnahnesignal entsprechend seiner im Prozeß-Hauptwort PMW. 2 gespeicherten Klasse durchführen muß (siehe Figur 1Of). Das MBZ-FeId 1028 des Ausnahmewortes EXW muß "0" sein.
Das Stapelspeicherwort SKW in den Bytes 28 bis 31 des Prozeß-Steuerblocks enthält den Wert der Spitze des T-Registers des Stapelspeichers des Prozesses, wenn dieser nicht im Ablaufzustand istfund ergibt sich im einzelnen aus Figur 1Oj. Die Bits 0 und 1 bestimmen das Hinweisfeld (TAG) 1030. Dieses TAG-FeId gibt durch seinen Inhalt des Descriptors an und muß für ein Stapelspeicherwort SKW gleich "0" sein. Die Bits 2 und 3 des SKW-Wortes enthalten das RING-FeId 1031, welches die der Segmentadresse des Stapelspeichers für Schutzzwecke zugeordnete Ringnummer enthält,
509845 /0 765
2517296
und muß in diesem Fall gleich "O" sein. Die Bits 4 bis 31 enthalten die Segmentnummer SEG. die relative Segmentadresse SRA 1032 und bilden ein Feld, welches das Segment in einer Segmenttabelle beschreibt sowie die relative Segmentadresse innerhalb des Segments. Das Stapelspeicherwort SKW wird jedesmal fortgeschrieben, wenn der Prozeß den Ablaufzustand verläßt. Des wird zur Wiederherstellung des T-Register-Inhalts verwendet, sobald der Prozeß anläuft. In diesem Fall werden das TAG-FeId 1030 und das RING-FeId 1031 überprüft, ob sie gleich "0" sind. Andernfalls tritt ein einen unzlässigen Prozeß-Steuerblock kennzeichnendes Ausnahmesigal auf.
ist
In den Bytes 32 bis 35 des Prozeß-Steuerblocks 400 das den Inhalt des Befehlsspeichers bezeichnende Wort ICW enthalten, welches manchmal auch als ICC bezeichnet wird. Figur 10k zeigt dieses Befehlszählerinhaltswort ICW, bei dem das TAG-FeId 1033 den Binärwert 00 haben muß, d.h. andere Werte als Null sind unzulässig. Das laufende RING-FeId 1034 belegt die Bits 2 und 3 und bestimmt die laufende Ringnummer des Prozesses, welche für die Bestimmung der Zugriffsrechte zum Hauptspeicher eingesetzt wird. Die Bits 4 bis 31 bestimmen die Segmentnummer SEG und die relative Segmentadresse SRA 1035, wodurch die Adresse des als nächster auszuführenden Befehls gegeben ist. Das Feld MBZ in den Bytes 36 bis 39 muß gleich "0" sein. Es wird jedesmal getestet, wenn der Prozeßsteuerblock von den Namen. J, P Zugriff erhält. Falls es nicht gleich "0" ist, tritt ein Signal für eine PCB-Ausnahme auf.
Die Stapelspeicher-Basisworte SBW 0-2 besetzen die Bytes 40τ51 im Prozeß-Steuerblock 400. Diese Worte haben gleiches Format und sind im einzelnen in Figur 101 dargestellt. Sie werden während der Stapelspeicheroperationen benutzt und bei jeder Benutzung muß ihr TAG-FeId 1036 und ihr RING-FeId 1037 gleich Null sein. Andernfalls entsteht ein Ausnahmesignal. Die Bits 4 bis 31 ent-.halten die segmentierte Adresse 1038 der ersten Bytes der Stapel-
509845/0785
2517296 5* W
speichersegment für die Ringe O, 1 bzw. 2. Bytes 52 bis 83 des Prozeß-Steuerblocks 400 bilden einen Speicherraum, welcher als Sicherstellungsbereich für die Basisregister dient und acht Worte umfaßt. Die Bytes 84 bis 147 bilden einen Sicherheitsbereich, der zur Sicherstellung der Werte aller Generalregister (16 Worte) dient. Schließlich sind auch die Bytes 148 bis 179 ein Sicherheitsbereich, der zur Sicherstellung wissenschaftliche^ Register (8 Worte) verwendet wird.
Fünf Doppelworte sind im Prozeß-1- Steuerblock 400 oberhalb der Adresse Null angeordnet und zwar für Zwecke der Zeitberechnung, wenn das Bit für den Zeitberechnungsmode im Prozeßhauptwort 0 gesetzt ist. Diese Worte liegen zwischen der Prozeßsteuerblockadresse minus 8 zur Adresse minus 40. Jedes Wort enthält ein Zeitintervall ausgedrückt in ms-Einheiten in seinen ersten 32 Bits, wobei die Bits 52 bis 6 3 mit Nullen gefüllt sind. Das Restzeit-Doppelwort RTO, bestehend aus den acht ersten Bytes oberhalb 0 im Prozeßsteuerblock enthält die Zeitmenge, welche tatsächlich vom Preozessor für den Prozeß aufgewandt wurde, ehe eine Zeitende-Ausnahme auftritt. Das RTO-Wort wird in folgender Weise fortgeschrieben: Jedesmal wenn der Prozeß den Ablaufzustand verläßt, wird der Stand des Prozeßzeitgebers im RTO-Wort gespeichert. Sobald der Prozeß wieder in den Ablaufzustand übergeht, wird der Prozeßzeitgeberstand aus dem RTO-Wort geladen.
Das Verarbeitungszeit-Berechnungs-Doppelwort RUA in den Bytes 7 bis 15 ist ein Zeitzähler, der die Gesamtmenge der Prozessorzeit angibt, während der sich ein Prozeß im Ablaufzustand befunden hat. Die berechnete Zeit ist diejenige, welche der Prozessor ausschließlich für den betreffenden Prozeß aufgewandt hat. Das RUA-Wort wird folgendermaßen fortgeschrieben: Jedesmal wenn der Prozeß den Ablaufzustand verläßt, wird der Prozeßzeitzähler PT abgelesen. Der Unterschied der Inhalte des RTO-Wortes und des Zeitzählers PT wird zum RUA-Wort addiert. Anschließend wird der Prozeßzeitgeberwert PT im RTO-Wort gespeichert. Die Zeit, während der ein Prozeß ausgesetzt ist, wird nicht berechnet. Die RTO- und
509845/076S
2517296
^ is
RUA-Worte werden auch dann forgeschrieben, wenn das Berechnungsmodus-Bit auf "0" gesetzt ist. Jedoch werden die später noch zu beschreibenden Wort CET, RTO und WTA im Prozeßsteuerblock nur dann angetroffen, wenn das Berechnungsmodus-Bit im Prozeßhauptwort PMW 0 auf "1" steht. Sie werden auch nur in diesem Falle fortgeschrieben.
Das Wartezeit-Berechnungswort WTA in den Bytes 12 bis 23 ist ein Realzeitzähler, welcher die gesamte Zeitdauer bestimmt, in der sich der Prozeß im Wartezustand befunden hat. Das WTA-Wort wird folgendermaßen fortgeschrieben: Jedesmal wenn der Prozeß den Wartezustand verläßt, wird der Stand TOD einer Tageszeituhr abgelesen und die Differenz zwischen TOD und dem Wert eines Wortes CET zum Wartezeit-Berechnungswort WTA hinzu addiert.
Das in den Bytes 24 bis 31 befindliche Doppelwort RTA für die Berechnung der Vorbereitungszeit, welches ebenfalls einen Realzeitzähler darstellt, bestimmt die gesamte Zeitdauer, über die sich der Prozeß im vorbereiteten Zustand befunden hat. Das RTA-Wort wird folgendermaßen fortgeschrieben: Jedesmal wenn der Prozeß den Vorbereitungszustand verläßt, wird der Wert TOD der Tageszeituhr abgelesen und ihr Inhalt abzüglich des Inhalts des CET Wortes zum RTA-Wort addiert. Das CET-Doppelwort in den Bytes 32 bis 38 gibt die Tageszeit an, zu der der Prozeß in einen der folgenden Zustände übergegangen ist: Vorbereitet, wartend, ablaufend und ausgesetzt. Es bezeichnet also die Eintrittszeit in den jeweils gerade vorhandenen Ist-Zustand.
Systembasis-Strukturen
Figur 6 zeigt das Format der Systembasis 600. Sie liegt im absoluten Hauptspeicher und wird von Firmware entwickelt, welche über das Grenzadressenregister BAR zugängig ist, das wie erwähnt, nur gelesen aber in das nicht eingeschrieben werden kann. Das Grenzadressenregister BAR liegt unterhalb eines Bereichs im Hauptspeicher, der für Hardware reserviert ist und trennt diesen Bereich von der Systembasis 600. Letztere enthält eine Anzahl von
50984 5/0 765
2517296
Systemattributen, welche eine Jobschrittnummer und eine Prozeßgruppennununer (JP) für den gerade laufenden Prozeß enthalten. Aus dem logischen Namen J, P des Prozesses wird die absolute Adresse des entsprechenden Prozeßsteuerblocks PCB abgeleitet. Umfang und Adresse der J-Tabelle sind durch die Inhalte des J-Tabellenworts (JTW) definiert. Dieses Wort befindet sich an der durch das BAR-Register bestimmten Adresse. Das Format des J-Tabellenworts ergibt sich aus Figur 11a. Der Umfang (JTSZ) 1101 oder die J-Tabelle 1204 in Figur 12 bestimmen die Anzahl der Eingangsstellen in die J-Tabelle 1204, welche bis 255 Eingänge haben kann. Das Umfangsfeld JTSZ 1101 ist ein 8-Bit positives ganzzahliges . Ein Ausnahmesignal tritt auf, falls J größer ist als JTSZ. Die absolute Adresse der J-Tabelle 1204 erhält man durch Multiplikation der J-Tabellenhinweisadresse 1102 mit 16. Die J-Tabelle 1204 enthält die J-Tabelleneingänge, deren Format aus Figur 11b ersichtlich ist. Jede J-Tabellen-Eingangsstelle bestimmt die absolute Adresse einer P-Tabelle 1205, die durch Multiplikation der P-Tabellenhinweisadresse 1104 mit 16 entsteht. Der Umfang (PTSZ) 1103 einer P-Tabelle definiert die Anzahl der Eingangsstelle in die P-Tabelle. Dieser Umfang ist ein positives 8-Bit ganzzahliges, welches typischerweise zwischen 0 und 255 liegt und die Anzahl der Eingangsstelle in die P-Tabelle angibt. Ein Ausnahmesignal, welches anzeigt, daß die Adresse außerhalb der P-Tabelle liegt, erscheint, falls P größer ist als PTSZ. Jede Eingangsstelle der P-Tabelle 1205 bestimmt die absolute Adresse eines Prozeßsteuerblocks 1206, indem man die Hinweisadresse 1107 des Prozeßsteuerblocks mit 16 multipliziert. Ein Anwesenheits-Indikator P 1105 gibt, wenn er auf "0" steht, das Fehlen des Prozeßsteuerblocks 1206 an. Ist der Prozeßsteuerblock vorhanden, so steht dieser Anwesenheitindikator auf "1". Ist dieser Indikator gleich "0", so tritt ein Ausnahmesignal auf, welches auf einen vakanten P-Tabelleneingang hinweist. Die Bits 1 bis 7 des P-Tabellenindikators (Figur 11c) müssen gleich 0 sein (MBZ-FeId 1106), andernfalls tritt ein einen unzulässigen Eingang zur P-Tabelle anzeigendes Ausnahmesignal auf.
509845/0765
2517296
-ν- n
An der Adresse BAR plus 4 der Systembasis 600 befindet sich das Format-Byte des G-Tabellenwortes (GTW), welches im einzelnen aus Figur 11d ersichtlich ist. Umfang und Adresse einer G-Segmenttabelle 1212 sind durch den Inhalt des G-Tabellenworts definiert. Der Umfang (GTSZ) 1108 der G-Tabelle 1212 bestimmt die Anzahl der Eingangsstellen in die G-Tabelle, die üblicherweise bis zu 255 Eingänge hat. Das Umfangsfeld GTSZ ist ein ganzzahliges positives 8-Bit-Feld. Ein Ausnahmesignal zeigt an, daß man sich außerhalb der G-Tabelle befindet, wenn die G-Nummer größer ist GTSZ. Die absolute Adresse der G-Tabelle erhält man durch Multiplikation der G-Tabellen-Hinweisadresse 1109 mit 16. Das Format der G-Segmenttabelleneingangssteile hat den Umfang zweier Worte (8 Bytes)1 und wird G-Segmentdescriptor genannt. Das Format eines solchen G-Segmentdescriptors ergibt sich aus den Figuren 11e und 11f. Alle G-Segmentdescriptoren sind gerichtet und folglich muß das Indirekt-Bit (I) 1111 gleich "0" sein, andernfalls ein Ausnahmesignal entsteht, welches einen unzulässigen Segmentdescriptor anzeigt. Der Anwesenheitsindikator P 1110 ist ein 1-Bit-Feld, welches, wenn es auf "1" steht, anzeigt, daß ein Segment im Hauptspeicher zu der Segmentnummer gehört, welche dem Descriptor entspricht. Hat der Anwesenheitsindikator den Wert "0", so ist kein Segment definiert und eine Bezugnahme auf diesen Segmentdescriptor bewirkt ein Ausnahmesignal dahingehend, daß dieses Segment fehlt. Das Verfügbarkeits-Bit A1112 ist ebenfalls ein 1-Bit-Feld, welches anzeigt, ob das Segment verfügbar ist oder nicht. Es wird nur überprüft, wenn dieses Segment definiert ist, d.h. wenn P gleich "1" ist. Andernfalls wird es vernachlässigt. Das Benutzungsanzeigefeld(Uli 113 läßt erkennen, ob das Segment angewählt wurde oder nicht. Wenn das Bit U auf "0" steht, erfolgte kein Zugriff zu diesem Segment. Andernfalls steht es auf "1". Das Beschriebenanzeigefeld (W) 1114 zeigt, ob in ein Segment eingeschrieben worden ist oder nicht. Steht es auf "0", so wurde nichts in das Segment eingeschrieben. Andernfalls steht es auf "1". Der Zugangsindikator (GS) 1115 eines G-Segmentdescriptors muß auf "01" stehen, andernfalls erscheint ein
S098AS/076S
2517296
ein Ausgangssignal, welches einen unzulässigen Segmentdescriptor anzeigt. Der Grund hierfür liegt darin, daß ein G-Segment immer Semaphoren enthält und Befehle für ein Semaphor erfordern, daß der GS-Code "01" ist. Umgekehrt gilt nicht, daß alle Semaphore in einem G-Segment liegen müssen. Die absolute Adresse der Basis eines Segments 1214 wird im G-Segmentdescriptor gemäß Figur 11e durch ein 24-Bit-Basisfeld 1116 definiert. Der Inhalt dieses Feldes wird mit 16 multipliziert, um die absolute Adresse zu erhalten. Das zweite Wort des G-Segmentdescriptors in Figur 11f umfaßt die Bit-Positionen 32 bis 63 in der G-Tabelle 1212. Das RSU-FeId 1117 mit den Bits 32 bis 39 ist für Software-Gebrauch reserviert und wird im allgemeinen ignoriert, wenn es wie im vorliegenden Fall als G-Segmentdescriptor benutzt wird. Das MBZ-FeId 1118 muß wiederum gleich "0" sein, da andererseits ein Ausnähmesignal auftritt, welches ein unzulässiges Segment anzeigt.
das MBZ-FeId 1118 die Bits 40 bis 51 belegt, setzt es das Umfangsfeld 1119, welches das Feld für ein kleines Segment ist. Somit müssen alle G-Segmenten zum kleinen Segmenttyp gehören. Der Segmentumfang 1119 ist ein 12-Bit ganzzahliges positives Feld, welches die Anzahl der Bytes im Segment festlegt. Der Segmentumfang ist in Vielfache von 16 unterteilt. Folglich kann der Segmentumfang für ein G-Segment 1214 den Wert von 2 Bytes (kleine Segmente) nicht überschreiten.
Im folgenden wird erneut auf die Systembasis 600 gemäß Figur 6 Bezug genommen. Es gibt dort neun Systemausnahmezellenworte, welche in den Plätzen zwischen BAR plus 8 und BAR plus 44 untergebracht sind. Das Format dieser EXC-Worte ergibt sich aus Figur 11g. Da wenn eine Systemausnahme auftritt für die Übertragung von Nachrichten zu bestimmten Prozessen Semaphore benutzt werden, sind die Hinweisadressen zu diesen Semaphoren in neuen Speicherplätzen des Speichers zu finden, wobei jeder dieser Speicherplätze eine Systemausnahmezelle genannt wird. Es ist jeweils eine pro Klasse von Systemausnahmen vorhanden. Das MBZ-FeId 1120 muß wiederum auf "0" stehen, weil sonst eine Systemüber-
509845/0765
2517296
prüfung erfolgt. Jede Ausnahmezelle EXC enthält den Systemnamen (G, D) 1121 bzw. 1122. Die Kanalausnahmezelle befindet sich in BAR plus 44 der Systembasis und hat ein Format, welches demjenigen der Systemausnahmezelle ähnlich ist. Sie enthält den Systemnamen G, D eines Semaphors, welches für die übertragung von Nachrichten zu bestimmten Prozessen benutzt wird, wenn das Kanalausnahmesignal auftritt.
Figur 11h zeigt das Format eines Internprozessor-Warteschlangenwortes IPQW, welches bei BAR plus 48 beginnt. Das IPQW-Wort zeigt auf den Kopf einer Warteschlange von im vorbereiteten Zustand befindlichen Prozessen (Q/PR/RDY), wie dies in Figur 9 durch die Bezugszeichen 905 und 805 angedeutet ist. Die Warteschlange im Vorbereitungszustand befindlicher Prozesse verbindet alle Prozesse, die im Vorbereitungszustand verharren. Sie wird durch den Kopf des Q/PR/RDY-Feldes 1124 (Figur 11h) des IPQW-Wortes angewählt, indem man auf die Spitze der Warteschlange der vorbereiteten Prozesse hinweist. Der Kopf des Q/PR/RDY-Feldes 1124 enthält eine 16-Bit positive ganze Zahl, welche die Verschiebung gegenüber der Basis des G-Segments Nummer 0, genannt das
es GO-Segment, gegenüber dem ersten Byte des Feld Q/PR/RDY darstellt. Ist dieses Bit-Feld gleich "0", so wird die Warteschlange als leer betrachtet. Das MBZ-FeId 1123 muß wiederum gleich "0" sein, da andernfalls ein Signal zur Systemüberprüfung erscheint.
An der Stelle BAR plus 52 der Systembasis 600 liegt der Platz für die anfänglichen und laufenden Wiederversuchsnummern, deren Format sich aus Figur 11i ergibt. Das NFS-FeId 1125 ist ein nicht funktionelles Speicherfeld und wird von der Systembasis nicht verwendet. Das Anfangsversuchsnummemfeld 1126 und das laufende Versuchsnummernfeld 1127 werden benutzt zur Steuerung, wie oft ein Befehl für einen automatischen Wiederversuch ausgeführt wird, ehe ein Maschinenfehler-Ausnahmesignal erzeugt wird. Diese Werte werden mit der gleichen Zahl durch einen nicht dargestellten Vfiederversuchs-Rückstellzähler geladen.
509845/0765
2517296 -a-90
Das in Figur 11 j dargestellte Ablaufprozeßwort RPW befindet sich im Speicherplatz BAR plus 56 der Systembasis und wird zur Speicherung des Namens des laufenden Prozesses und im Fall eines Monoprozessor-Aufbaus mit seiner Priorität benutzt. Die NFS-Felder 1128 und 1131 sind wiederum nicht funktionelle Speicherfelder und können für beliebige Zwecke eingesetzt werden, finden jedoch im allgemeinen keine Anwendung in der Systembasis. Der Prioritätsgrad eines laufenden Prozesses wird im PRI-FeId 1129 gespeichert. Ein asynchrones Abfangbit befindet sich im AB-FeId 1130, während ein asynchroner Abfangring im ARN-FeId 1132 liegt, der logische Name J, P des laufenden Prozesses ist im Fall eines Monoprozessor-Aufbaus im J, P-FeId 1133 abgelegt.
Ein Absolutisiertabellen-Hinweiswort gemäß Figur 11k liegt an der Stelle BAR plus 60 in der Systembasis 600 und wird beim anfänglichen Systemladen dazu benutzt, die absoluten Adressen im Anfangs-Systemladeprogramm ISL dadurch vorzubereiten, daß der Inhalt des Grenzadressenregisters BAR zu allen absoluten Adressen im ISL-Programm hinzugefügt wird. Die Absolutisiertabelle-Hinweisadresse 1135 bestimmt den Speicherplatz der nicht dargestellten Absolutisiertabelle. Ihr Umfang wird durch das ATSZ-FeId 1134 bestimmt.
Das Seriennummerwort der Zentraleinheit ist in Figur 111 dargestellt und besteht aus einem 4-Byte-Wort, welches im Speicherplatz BAR plus 64 liegt. Es enthält außer der Seriennummer der Zentraleinheit das Seriennummernfeld 1136 der Zentraleinheit. Figur 11m zeigt das die Obergrenze des Hauptspeichers bezeichnende Wort, welches im Speicherplatz BAR plus 68 abgelegt ist. Dieses Wort 1139 gibt die absolute Adresse des letzten zugängigen Wortes im Hauptspeicher an. In der Speicherstelle BAR plus 72 liegt das in Figur 11n dargestellte Wort, welches die Geräteknalnummer (CN) 1140 für das anfängliche Laden des Systems ISL und die Hardware-Gerätekanalnummer (CN) 1141 angibt.
509845/0785
2517296
Typ und Untertyp eines in dem Rechnersystem benutzten Gerätes wird durch ein Hardware-Gerätetypwort (Figur I1o) in den Feldern 1143 bzw. 1144 angegeben, während das RSU-FeId 1142 für Software reserviert ist. Dieses Wort findet sich in der Systembasis an der Stelle BAR plus 76. Ein ähnliches Wort von ähnlichem Format zeigt Figur 11p und enthält Typ und Untertyp des Gerätes, welches beim anfänglichen Laden des Systems benutzt wird. Dieses Wort befindet sich an der Stelle BAR plus 80.
der
Wenn bei einem Rechner Wiederstart-Knopf gedruckt wird, läuft eine simulierte V-Gperation für ein Semaphor ab und gelangt zum Vorbereitungszustand. Eine Hinweisadresse auf dieses Semaphor findet man an der Stelle BAR plus 84 der Systembasis und wird das Wiederstart -Zellenwort genannt. Sie hat das in Figur 11q dargestellte Format. Es ist dem der Systemausnahmezelle ähnlich und enthält den Namen G, D eines Semaphors im G-FeId 1149 bzw. B-Feld 1150. Das MBZ-FeId 1148 muß "0" sein. Sind in dem Computersystem mehr als ein Prozessor vorhanden, so ist in der Systembasis 600 an der Stelle BAR plus 88 ein Wort für Multiprozeß-Erweiterung vorgesehen. Dieses ist in Figur 11r dargestellt.
Beispiele für die Benutzung der Systembasis und des Prozeß-Steuerblocks
Figur 12 zeigt ein Ausführungsbeispiel, wie die Systembasis in Verbindung mit dem Prozeßsteuerblock für die Adressierung und den Zugriff zu einem Benutzersegment, einem Systemsegment oder einem Segment mit einer Warteschlange vorbereiteter Prozesse eingesetzt wird. Der Hauptspeicher 1200 hat einen für Hardware-Benutzung reservierten Teil 1203. Ein Grenzadressenregister BAR 1202 trennt die Systembasis 1215 von dem für Hardware reservierten Teil 1203 des Hauptspeichers. Das Grenzadressenregister BAR 1202 wird dadurch zur Adressierung von Größen in der Systembasis 1215 benutzt, daß man den Inhalt des Grenzadressenregisters der Verschiebung in vier Byte-Einheiten der gewünschten Größe
50 9845/0765
2517296
in der Systembasis hinzuaddiert. Diese Adresse weist dann auf das erste Byte der Größe in der gewünschten Systembasis hin. In Figur 12 weist das Grenzadressenregister 1202 auf das J-Tabellenwort JTW. Dieses Wort enthält eine Hinweisadresse, welche auf die J-Tabelle 1204 zeigt. Durch Indizieren zur J-Nummer gemäß Figur erhält man einen J-Tabelleneingang 1216. An diesem Eingang befindet sich eine P-Tabellenhinweisadresse, welche auf die absolute Adresse in der P-Tabelle 1205 hinweist. Durch Indizieren zur P-Nummer (siehe Figur 5) innerhalb der P-Tabelle 1205 erhält man die absolute Adresse des Prozeßsteuerblocks 1206. Wie bereits beschrieben, befinden sich im Prozeßsteuerblock 1206 zwei Adressraumworte ASW 0 und ASW 1. Die höherwertigen Bits des Segmenttabellennununernfelds STN im Basisregister 1201 werden für den Zugriff zu einem dieser beiden Adressenworte ausgenutzt, in diesem Fall zum Wort ASW 1, welches eine Hinweisadresse auf eine Segmenttabellen-Wortanordnung STWA aufweist, die zur Segmenttabellen-Wortanordnung STWA 1208 führt. Zusammen mit der Segmenttabellennummer STN des Basisregisters 1201 erfolgt ein Zugriff zu acht Sgmenttabellenworten in der Segmenttabellen-Wortanordnung 1208. Diese Segmenttabellenworte weisen auf eine der acht Segmenttabellen 1210. Die Segmenttabelleneingangssteile STE von der Basis 1201 wird dann für die Ausführung einer der 256 Eingangsstellen in der Segmenttabelle 1210 verwendet, wo sich ein Segmentdescriptor befindet. Letzterer wird dann für den Zugriff zum Benutzersegment 1211 eingesetzt.
Um Zugriff zu einem Systemsegment 1214 zu erhalten, das zur Speicherung von Semäphoren dient, wird ein G-Tabellenwort GTW in der Systembasis 1215 benutzt. Die Adresse des G-Tabellenworts erhält man durch Hinzufügen der Verschiebung des G-Tabellenwortes in der Systembasis zum Grenzadressenregister BAR 1202 (vgl. Figur 6). Das G-Tabellenwort GTW enthält eine G-Tabellenhinweisadresse auf eine G-Tabelle 1212. Durch Verwendung einer im System verfügbaren G-Nummer und Indizieren in die G-Tabelle erhält man Zugriff zu einem G-Segmentdescriptr, der zur Adressierung eines Systemsegments 1214 dient. In ähnlicher Weise wird die Systembasis für
509845/0765
2517296
den Zugriff zu einer Warteschlange von Vorbereitungszustand befindlichen Prozessen (Q/PR/RDY) 1213 verwendet, indem man ein internes Prozessor-Warteschlangenwort IPQW aufsucht, welches auf das Q/PR/RDY Segment 1213 hinweist.
G.-Steuerwerk
Die Figuren 13a bis 13c zeigen Einzelheiten desSteuerwerks. Dieses ist obwohl es getrennt von der Zentraleinheit CPU dargestellt ist, in Wirklichkeit ein Teil der Zentraleinheit und besteht aus einem Speichersteuerwerk (CSU) 1301, einem Steuerspeicher-Schnittstellenadapter (CIA) 1302 mit zugehörigen Untereinheiten, .edrnem Steuerspeicherlader (031^1303 sowie einer Steuer- und Ladeeinheit (CLU)1304. Das Speichersteuerwerk 1301 empfängt Mikrobefehle über die Steuer- und Ladeeinheit 1304 und den Steuerspeicher Schnittstellenadapter 1302 vom Steuerspeicherlader 1304. Unter normalen Betriebsbedingungen werden die Mikroprogramme während des Einleitungsvorgangs des Systems aus einer externen Quelle geladen und werden zur dauerhaften Steuerfunktion für die Maschinen. Jedoch hat das SpeicherSteuerwerk 1301 auch die Möglichkeit, neugeladen und inganggesetzt zu werden und zwar in einer Weise, welche eine Vielzahl von Zentraleinheit-Operationsmöglichkeiten vorsieht. Die folgenden Operationsmoden für die Zentraleinheit sind unter der Steuerwirkung des Speichersteuerwerks 1301 verfügbar:(a) Eigenbereichsmodus; (b) Emulationsmodus; (c) gleichzeitig Eigenbereich und Emulationsmodus; (d) Uberprüfungsmodus. Diese Fähigkeit ergibt sich, weil die Mikrobefehle im Speichersteuerwerk die Quelle von MikroOperationen sind, welche[zur Steuerung des Betriebs aller anderen Funktionseinheiten der Zentraleinheit dienen, beispielsweise der Emulator 1316, das Rechenwerk 1317, die Befehlsabrufeinheit IFU 1318, das Adressensteuerwerk ACU 1319 und die Datenverwaltungseinheit DMU 1321. Weiterhin sind innerhalb der Zentraleinheit 1306 die zuvor beschriebenen Generalregister 1307, Basisregister 1308, wissenschaftlichen Register 1309, T-Register 1310, Zustandsregister 1311, Befehlszähler IC 1312 und das Hardware-Steuermaskenregister 1313 dargestellt.
509845/0765
2517296
Im typischen Fall ist das Speichersteuerwerk CSU 1301 ein 9K bipolarer programmierbarem Festwertspeicher PROM in integrierter Schaltungstechnik Gnden mit einem Lese/Schreib-Direktzugriffsspeicher RAM.Sie haben überlicherweise eine Lesezykluszeit von 150 ns und eine Schreibzykluszeit von 450 ns. Jeder Speicherplatz des Steuerspeichers speichert ein 84 Bit Mikrobefehlswort und jedes Mikrobefehlswort steuert einen Zentraleinheitzyklus. Bei jedem Lesen eines Speicherplatzes im Speichersteuerwerk 1301 wird sein Inhalt durch Mikrobefehlsdekodierer dekodiert, welche ein Mikrooperations-Steuersignal erzeugen, von denen jedes eine bestimmte Operation innerhalb der Zentraleinheit auslöst. Durch gruppenweises Zusammenfassen von Stellen innerhalb jedes Mikrobefehlswortes erhält man Steuerspeicherfolgen, welche eine bestimmte Zentraleinheits-Operation oder einen Befehl ausführen. Da jeder Befehl durch die Zentraleinheit ausgelöst wird, benutzt man bestimmte Bits innerhalb des Operationskodes für die Bestimmung der Startfolge des Steuerspeichers. Durch überprüfung bestimmter Flip-Flops, welche durch Befehlsdekodierfolgen gesetzt oder rückgestellt werden, ist es dem Speichersteuerwerk möglich, erforderlichenfalls in eine spezielle Folge abzuzweigen.
Der Steuerspeicher-Schnittstellenadapter 1302 steht im Informationsaustausch mit dem Speichersteuerwerk 1301, der Datenverwaltungseinheit 1321, dem Adressensteuerwerk ACU 1319 und dem Rechenwerk 1317, um auf diese Weise den Betrieb des Speichersteuerwerks 1333 in Figur 13d zu bestimmen. Der Steuerspeicher-Schnittstellenadapter 1302 enthält ferner Logikschaltungen für die Modifizierung, überprüfung, Fehlerfeststellung in Steuerspeicheradressen und zur Erzeugung von Hardwareadressen. Letzteres wird allgemein für die Entwicklung einer Anfangsadresse einer Fehlerfolge oder für die Einleitungsfolge benutzt.
Die Datenverwaltungseinheit 1321 bildet die Schnittstelle »wischen Zentraleinheit 1306 und dem Hauptspeicher und/oder dem Pufferspeicher gemäß Figur 1. Die Datenverwaltungseinheit hat die Aufgabe festzustellen, welche Einheit die von anderen Einheiten
509845/0765
2517296
benötigten Informationen aufweist und diese Informationen zur richtigen Zeit in die Register der Zentraleinheit zu überführen. Die Datenverwaltungseinheit sorgt auch für die Maskierung bei bestimmten Schreiboperationen. Die Befehlsabrufeinheit IFU 1318 bildet Schnittstellen mit der Datenverwaltungseinheit 1321, dem Adressensteuerwerk 1319, dem Rechenwerk 1317 und dem Speichersteuerwerk 1301 und ist dafür verantwortlich, daß die Zentraleinheit mit Befehlen versorgt wird. Die Befehlsabrufeinheit hat jeweils vor Ablauf des gegenwärtigen Befehls den nächsten Befehl in ihren Registern bereit. Um dies zu ermöglichen, hat die IFU 1318 ein 12-Byte-Befehlsregister, welches normalerweise mehr als einen Befehl enthält. Zusätzlich fordert die IFU, gesteuert durch das Speichersteuerwerk CSU Informationen aus den Hauptspeicher an, ehe diese Information tatsächlich benötigt wird. Auf diese Weise schreibt sie ihr 12-Byte-Befehlsregister ständig fort. Befehle werden vorabgerufen mit Hilfe normaler Weise nicht benutzter Speicherzyklen. Die IFU dekodiert ferner jeden Befel und informiert andere Einheiten über Länge und Format des Befehls.
Das Adressensteuerwerk ACU 1319 steht über den CIA in Verbindung mit der IFU, dem ALU, der DMU und dem CSU. Das ACU 1319 ist für die gesamte Adressenentwicklung in der Zentraleinheit verantwortlich. Alle Operationen des Adressensteuerwerks einschließlich der übertragung zu, von und innerhalb des Steuerwerks werden durch Mikrobefehle des Speichersteuerwerks und durch logische Schaltkreise bewirkt. Der normale Zyklus des Adressensteuerwerks hängt von der Art der Adressen im Befehl ab und nicht von der Art der Befehle. In Abhängigkeit vom Adressentyp kann das Adressensteuerwerk unterschiedliche Operationen für jede Adresse innerhalb eines Befehls ausführen. Das Adressensteuerwerk enthält ferner einen Assoziativspeicher 1319a, welcher die Basisadresse der zuletzt benutzen acht Speichersegmente zusammen ihren Segmentnummern speichert. Jedesmal wenn ein Zugriff zu einem Speicher erfolgen soll, wird die Segmentnummer mit dem Inhalt des Assoziativspeichers verglichen, um festzustellen, ob die Basisadresse des Segments bereits entwickelt und gespeichert ist.
509845/0785
2517296
Befindet sich die Basisadresse im Assoziativspeicher 1319a,so wird sie für die absolute Adressenentwicklung benutzt, wodurch eine beträchtliche Zeitersparnis gegeben ist. Befindet sich die Basisadresse nicht im Assoziativspeicher 1319a, so wird sie durch Zugriff zu den Hauptspeichertabellen entwickelt. Jedoch wird nach der Entwicklung der Basisadresse des Segments diese im Assoziativspeicher zusammen mit ihrer Segmentnummer für spätere Bezugnahme abgelegt. Das Rechenwerk ALU 1317 arbeitet mit dem Adressensteuerwerk ACU, der Befehlsabrufeinheit IFU, der Datenverwaltungseinheit DMU und dem Speichersteuerwerk CSU zusammen. Seine Hauptaufgabe besteht in der Durchführung arithmetischer Operationen und Datenverarbeitungen, welche von der Zentraleinheit gefordert werden. Die Operationen des Rechenwerks sind völlig von Mikrobefehls-Steuersignalen aus dem Speichersteuerwerk 1301 abhängig. Dem Rechenwerk 1317 und dem Speichersteuerwerk 1301 zugeordnet ist ein Zwischenspeicher LSU 1315, welcher manchmal auch als interne Speichereinheit bezeichnet wird, Dieser Zwischenspeicher besteht im typischen Fall aus einem Festwertspeicher mit 256 Speicherplätzen und 32 Bits pro Speicherplatz sowie einer Auswahl- und Lese/Schreiblogik für diesen Speicher. Der Zwischenspeicher 1315 wird zum Abspeichern von Steuer- und Aufrechterhaltungsinformationen der Zentraleinheit verwendet. Zusätzlich enthält er Arbeitsplätze, die hauptsächlich zum vorübergehenden Speichern von Operanden und Teilergebnissen während der Datenverarbeitung dienen. Weiterhin ist dem Rechenwerk 1317 ein Hilfsspeicher 1317a zugeordnet, welcher im üblichen Fall 64 Flip-Flops zur Speicherung verschiedener Zustände des Rechnersystems enthält.
Die Zentraleinheit weist ferner eine Taktgebereinheit 1320 auf, die praktisch aus zwei Taktgebersystemen in einer Einheit besteht. Das erste Taktgebersystem erzeugt die Taktsignale zur Steuerung des Schnittstellenadapters 1302, während das zweite Taktsystem die Taktimpulse für die Operationen der Funktions-
509845/0765
2517296
einheiten innerhalb der Zentraleinheit liefert.
In Figur 13c ist das Format des Steuerspeicherworts 1325 wiedergegeben. Dieses ist ein 84-Bit-Wort und in die folgenden sechs Hauptfelder unterteilt:
a. Folgetypfeld 1326 (3 Bits)
b. Verzweigungs- und/oder Mikrobefehlsfeld 1327 (23 Bits)
c. Konstantenerzeugung und Bestimmung 1328 (14 Bits)
d. Daten zur Sammelschiene 1329 (8 Bits)
e. Mikrobefehle 1330 (32 Bits
f. Prüfung 1331 (4 Bits)
Das 3-Bit-E-Feld des Steuerspeicherworts 1325 wird als Folgesteuerfeld verwendet. Es sind üblicherweise sieben verschiedene Steuerfolgen vorhanden und eine für das gegenwärtige Rechensystem reserviert. Unter Bezugnahme auf Block 1335 in Figur 13b wird, wenn das E-FeId gleich 0, 1 oder 2 ist, das Verzweigungsfeld A. B, C, D, und L der Mikrobefehle 1325 benutzt, um die nächste Adresse zu erzeugen. Die ersten sechs Bits des KS-Register 1337 werden zusammen mit dem B-Feld benutzt, es ergibt sich ein C-Test, hieraus ein D-Test und das L-FeId liefert die nächste Adresse des nächsten Mikrobefehls, welche dann in das Adressenregister KS 1337 eingegeben wird. Ist das E-FeId auf binär 4 (siehe Block 1335) gesetzt, so wird die nächste ausgewählte Adresse vom Unterbrechungs-Rückkehrregister KA 1339 entnommen. Die Adresse im ΚΑ-Register ist diejenige, welche von der Logikschaltung zur Erzeugung der nächsten Adresse erzeugt wird, wenn eine Hardware-Unterbrechung auftritt. Ist das E-FeId auf binär 5 gesetzt, so wird eine Verzweigungsoperation benutzt, um eine Hilfsrückkehroperation von einer Mikroprogramm-Subroutine zu bewirken. Wenn dies erfolgt, werden die Inhalte der Rückkehrregister KR 1346 als die nächste Steuerspeicheradresse verwendet. Das Rückkehrregister 1346 wird dadurch geladen, daß ein Steuerspeicherbefehl herausgegeben wird, der die gegenwärtige Steuerspeicheradresse
509845/0765
2517296
im KS-Register 1337 zuzüglich 1 vom Fortschalter 1338 in das KR-Register 1346 überführt. Eine Möglichkeit für eine Einebene-Einfügungsroutine ist gegeben über ein KT-Rückkehrverzweigungsregister 1347. Jedesmal wenn das KA-Register 1346 geladen wird, wird der alte Inhalt dieses Register in das KT-Register 1347 überführt und jedesmal wenn ein Mikroprogramm-Rückkehrbefehl aufgerufen wird, wird der Inhalt des KT-Registers in das KR-Register eingegeben. Eine Möglichkeit für eine Einfügungssubroutine in der dritten Ebene wird durch das KU-Register 1340 und in der vierten Ebene durch das KV-Rückkehrverzweigungsregister 1349 dargestellt. Wenn das E-FeId des Steuerspeicherworts auf binär 6 steht, so ist das nächste adressierte Steuerspeicherwort gleich der gegenwärtigen Adresse im KS-Register 1337 plus 1 im Fortschalter oder Inkrementor 1338. Steht das E-FeId auf binär 7, so geht das Speichersteuerwerk 1301 in den Uberprüfungsmodus über und die nächste Adresse ist gleich der gegenwärtigen Adresse plus
Zusätzlich zur Folgesteuerung von Verzweigungen zur nächsten Steuerspeicheradresse gemäß Block 1335 ist im Block 1336 von Figur 13b eine durch Hardware erzeugte Folgesteuerung dargesteUt.Die Blocks 1335 und 1336 sind in Wirklichkeit Hardware-Register und derart aufgebaut, daß sie die verschiedenen Formen aufnehmen können, welche Mikrobefehle haben können. Die hardwarebestimmten Verzweigungen stellen übersteuernde Zustände dar, solche wie Fehler, Einleitung, Steuerspeicherabtastung usw., die das E-FeId unterdrücken und eine feste Adresse in das Steuerspeicheradressenregister KS1337 zwangsweise eingeben. Die Verzweigung erfolgt dadurch, daß eine Leitungsunterbrechung für eine Taktperiode stattfindet und die Adresse, welche an sich unter der Steuerung des E-Feldes erzeugt worden wäre, in das KA-Unterbrechungsrückkehrregister 1339 geladen wird.- Eine hardwaregesteuerte Adresse wird in das Steuerspeicheradressenregister eingegeben. Bestimmte durch Hardware oder Firmware erzeugte Unterbrechungen haben Priorität, wenn der ünterbrechungs-Blockier Flip-Flop gesetzt ist, der die
509845/0765
2517296
Durchführung zusätzlicher Unterbrechungen in ihrer Klasse verhindert, bis der unterbrechende Zustand erledigt ist. Eine FirWre-Mikrc—Operation besteht zur Steuerung der Rückstellung des Unterbrechungs-Blockier Flip Flops für jene Folgen, welche unter Firmware-Einfluß stehen. Diese Folgen bewirken automatisch eine Rückstellung des Blockier-Flip-Flops am Ende der Folge. Die nachstehend entsprechend ihrer Priorität aufgeführten Zustände bestehen in dieser Kategorier
(a) Laden des Steuerspeichers;
(b) Abtastung des Steuerspeichers
(c) Hardware-iehler;
(d) Software-Fehler;
Die verbleibenden Hardware-Zustände setzen den Unterbrechungsblockier Flip-Flop nicht, aber bewirken bei iherer Erzeugung eine sofortige Aktion. Die nachstehend entsprechend ihrer Priorität aufgeführten Zustände bestehen in dieser Kategorie:
(a) Einleitung;
(b) Soft-Freigabe;
(c) Eintritt in die Wartungsgruppe;
(d) Eintritt in den Wartungskanäl;
(e) Hardware-Ausgang.
Ein Einleitungssignal bewirkt, daß das Speicher-Steuerwerk 1301 zur Adresse binär 0 abzweigt, durch Hardware rückstellbare Fehler geklärt werden und eine Steuerspeicher-Ladeoperation gefolgt von einer Steuerspeicher-Abtastfolge unter Hardware-Überwachung ausgeführt werden. Außerdem wird die Systemeinleitung durchgeführt. Ein Signal-Softfreigabe läßt das CSU 1301 zur Adresse binär 0'abzweigen, klärt die durch Hardware zurückstellbaren Fehler und stellt den Unterbrechungsblockier Flip-Flop zurück. Ein Signal für den Eingang in die Wartungsgruppe bewirkt, daß das Speichersteuerwerk in die durch die Schalter auf der Artungstafel vorgegebenen Adressen abzweigt. Ein Signal zum Eintritt in den Wartungskanal läßt das Speichersteuerwerk zu einer Adresse abzweigen, welche über den Wartungskanal erzeugt wird. Die Adresse wird aus
509845/0765
2517296
der Wartungssaminelschiene QMB 1344 geladen, welche Teil des Wartungskanals ist. Ein Hardware-Ausgangssignal läßt das Speicher-Steuerwerk zur Binäradresse 2 abzweigen. Diese Folge wird als Wartungsmöglichkeit benutzt. Am Ende der Folge wird durch Herausgabe eines E-Feld-Verzweigungsbefehls eine Rückkehr inganggesetzt und das E-FeId auf binär 4 gesetzt.
Ein Steuerspeicherladesignal läßt das Speichersteuerwerk zur Adresse binär 0 abzweigen. Es schaltet außerdem CSU-Lesesyklus Flip-Flop und den Systemtaktgeber 1320 ab und führt das Speichersteuerwerk in den Ladezustand über. In diesem Zustand kann das Speichersteuerwerk aus dem Steuerspeicherlader CSL 1303, der Ein/ Ausgabesteuerung IOC 1305, dem Hauptspeicher 102 oder der Wartungstafel 1355 geladen werden. Erfolgt eine Ladung aus dem Lader CSL, so wird eine automatische Abtastung am Ende des Ladens bewirkt. Wird hingegen aus einem anderen Medium geladen, so kann eine Abtastung entweder durch Erzeugung eines Mikro-Operationssignals oder durch Einstellen des Abtastschalters auf der Wartungstafel erfolgen. Ein Steuerspeicher-Abtastsignal läßt das Speichersteuerwerk zur Adresse binär 0 abzweigen. Für die Dauer der Folge unterliegt die Abtastung der Steuerung durch Hardware. Während der Abtastung ist der Systemtaktgeber 1320 abgeschaltet und folglich werden keine Befehle oder Überprüfungen ausgeführt. Am Ende der Abtastfolge überträgt die Hardware den Inhalt des Unterbrechungsrückkehrregisters KA in das Adressenregister KS, der Systemtaktgeber wird wieder eingeschaltet und die Steuerung kehrt zur Firmware zurück.
Ein Hardware-Fehlersignal bewirkt eine Abzweigung in die Adresse binär 4. Im normalen Prozeßmodus aktiviert ein in irgendeiner Funktionseinheit der Zentraleinheit festgestellter Hardware-Fehler eine Hardware-Fehlerleitung. Die erzeugte Steuerspeicherfolge überprüft die Systemzustände im Hinblick auf die einzuleitende Aktion. Im Diagnosemodus sind von der Hardware feststellbare Fehlerzustände für die Mikrodiagnose erkennbar. Sie steuert
509845/0765
2517296
die einzuleitenden Aktionen. Ein Software-Fehlersignal andererseits läßt den Steuerspeicher zur Adresse binär 1 abzweigen. Diese Adresse stellt den Anfang einer Software-Fehlerberichtsfolge dar, die unter Mikroprogrammsteuerung steht.
In Figur 13c ist das E-FeId 1326 ein 3-Bit-Feld für den Verzweigungscode. Das Verzweigungs und/oder Mikrobefehlsfeld 1327 besteht aus den A, B, C, D und L Feldern (vgl. auch Block 1335 in Figur 13b), wobei das A-FeId die oberen sechs Bits der nächsten Adresse, das B-Feld die mittleren vier Bits der nächsten Adresse des Maskenfeldes an der 64-Weg-Verzweigung, das C-FeId ein 6-Bit-Prüffeld für einen von 64 Tests, das D-Feld ein weiteres 6-Bit-Prüffeld für einen von 64 Tests und das L-FeId das am niedrigst wertige Bit ist. Das K-FeId 1328 ist ein 14-Bit-Feld, von dem sechs Bits für ein Konstsntenfeld, vier Bits für ein Konstantenoder Steuerfeld und vier Bits für ein Steuerfeld für eine Konstante dienen. Das Feld 1329 für die Datenweitergabe zur Sammelschiene besteht au=? dem QA-FeId mit 4 Bits zur Steuerung des Informationsflusses zum QA-Teil der QMB Sammelschiene 1344, während das QB-FeId vier Bits zur Steuerung der Informationsweitergabe zum QB-Teil der QMB-Sammelschiene 1344 enthält. Das F-FeId 1330 ist ein 32-Bit-Feld und ist zur Erzeugung von Mikoroperations-Unterbefehlen kodiert. Das B-Feld 1331 besteht aus vier für Prüfzwecke reservierten Bits.
Im Betrieb werden die Mikrobefehlsworte in einer Steuerspeicheranordnung 1333 gespeichert. Während eines Betriebszyklus wird diese Steuerspeicheranordnung durch den Inhalt des KS-Adressenregisters 1337 adressiert. Hierdurch wird der Inhalt des adressierten Speicherplatzes in die Gruppe von Verriegelungsregistern 1337 eingegeben. Teile des Inhalts dieser Register werden in die Speicherregister innerhalb jeder der Funktionseinheiten der Zentraleinheit übertragen. Jede funktioneile Einheit enthält logische Dekodierschaltung zur Erzeugung der erforderlichen durch das Steuerspeicherwort definierten Unterbefehle und zwar unter den Steuereinfluß des Systemtaktgebers. Im allgemeinen wird die Dekodierung
509845/0765
2517296
innerhalb jeder funktioneilen Einheit durchgeführt und nicht zentral, damit die Dekodierzeit auf ein Minimum reduziert und die Anzahl der Leitungen für die übertragung von Befehlssignalen reduziert wird. Außerdem vermeidet man durch das Dekodieren innerhalb jeder Einheit Zeitgeberprobleme, welche sich aus unterschiedlichen Kabelverzögerungszeiten ergeben können. Schließlich brauchen diejenigen Signale nicht zum Steuerspeicherschnittstellenadapter 1302 zurückgeleitet werden, welche für bestimmte Zustände innerhalb der Funktionseinheit kennzeichnend sind und für die Erzeugung bestimmter ünterbefehls-Signale erforderlich sind. Ein typischer Dekodierer 1359 empfängt gemäß Figur 13b verschiedene Felder aus Mikrobefehlsworten und erzeugt Mikrobefehlssignale a, b, c, d, ...q, r. Ein typischer Mikrobefehlsdecoder 1359 erhält Befehle von einem Mikrobefehlswort. Das Feld des Mikrobefehlswortes wird dekodiert und stellt eine Mehrzahl von Teilen s, t, u, .... y, ζ auf des Potentional "1". Eine Matrix mit vorgegebenen Steuerleitungen ist an die s- bis z-Leitungen an den Punkten oC,ß,^"i - - · ' ^ angekoppelt. Wenn das Feld
eines Mikrobefehls dekodiert wird, geht eine der Leitungen s bis ζ auf hohes Potential. Da die in der Zeichnung durch Punkte - und griechische Buchstaben gekennzeichneten Verknüpfungspunkte sich kreuzender Leitungen eine Leitungskopplung darstellen, wird jedes sich längs einer horizontalen Leitung ausbreitende.· Signal an denjenigen Stellen, wo ein Kopplungspunkt angegeben ist, auf eine der vertikalen Leitungen a bis r übergehen. Jede der vertikalen Leitungen kann als Eingang zu einem der UND-Gatter 1360 1365 geführt werden. Weitere Eingangssignale können ebenfalls an die tUCHGatter 1360 bis 1365 geführt werden, einschließlich eines Taktsignals t vom zentralen Taktgeber» Folglich werden jeweils dann, wenn das Taktsignal den Wert "1" annimmt, jene Gatter durchgeschaltet, deren sämtliche Eingänge ein positives Eingangssignal haben. Diese Gatter liefern Mikrobefehlssignale an vorgegebene Funktionseinheiten innerhalb der Zentraleinheit. Beispielsweise wenn ein Befehl 1341 vom Leseverriegelungsregister 1357 dekodiert wird und eine horizontale Leitung auf "1" liegt, so werden die vertikalen Steuerleitungen a, b, c, und q ebenfalls positiv und die Gatter 1316, 1361, 1362 und 1364 werden beim Auftreten des
509845/0765
2517296
Taktsignals nacheinander durchgeschaltet. Folglich stellen die Kombinationen, in denen die vertikalen Steigleitungen mit der horizontalen Steuerleitung an verschiedenen, durch griechische Buchstaben gekennzeichneten Punkten gekoppelt sind, eine bleibende Schaltmatrix für die Zufuhr von Mikrobefehlssignalen an die Zentraleinheit dar und zwar für die Steuerung der Funktionseinheiten innerhalb der Zentraleinheit durch Mikrobefehle aus der Steuerspeicheranordnung 1333. Somit kann dauerhafte aber veränderbare Firmware in die Anlage eingebaut werden,indem lediglich die Folge der Mikrobefehle angegeben wird, welche als Fähigkeit des Rechnersystems benötigt wird.
Unter normalen Bedingungen werden Daten in die Steuerspeicheranordnung 1333 über ein Schreibdatenregister der Zentraleinheit,
welches auch unter der Bezeichnung , Internes Register YO 1343 eingegeben.
bekannt istf Ein Steuer-Flip-Flop bestimmt, ob in die obere oder in die untere Hälfte der Speicheranordnung eingeschrieben werden soll. Daten aus der Steuer- und Ladeeinheit CLU 1304 kommen am Adaptor CIA bzw. dem Speichersteuerwerk CSU über die Wartungssammelschiene QMB 1344 an und werden vorübergehend im internen Speicherregister YO 1343 aufbewahrt, ehe sie in die Steuerspeicheranordnung 1333 eingegeben werden. Das interne Register 1343 wird sowohl als örtliches Lese- als auch als örtliches Schreibregister verwendet. Der Multiplexer KQM 1345 kann entweder vom Wartungspult 1355 oder durch Mikrodiagnoseoperätionen gesteuert werden und liefert einen Ausspeicherungsweg aus den ihm angeschlossenen Registern. Ein Vergleichsregister KP 1350 wird in erster Linie für Wartungszwecke benutzt und zwar zusammen mit einer Vergleichslogik 1352 und einer Dekodierlogik 1351.
H. Zuteiler-Firmware zur Steuerung von Prozessen Der Zuteiler ist eine Firmware/Hardware-Einheit, deren Hauptzweck darin liegt, die verschiedenen Prozeßwarteschlangen zu verwalten und zwischen den Prozessen umzuschalten und umfaßt ferner die Fortschreibung der Prozeßwarteschlangen, der Prozeßsteuerblöcke,
dem des laufenden Prozeßwortes in der Systembasis und Register eines
509845/0765
2517296
neuen Prozesses. Er liefert ferner Nachrichten an einen Prozeß, der an einem Semaphor hierauf wartet (nach einer V-Operation, einer simulierten V-Operation für die Ein/Ausgabesteuerung oder für einen Ausnahmeverarbeiter). Er ordnet außerdem Nachrichten in Warteschlangen an einem Semaphor nach einer P-Operation ein, die eine Nachrichtenverbindung freigegeben hat, wenn ein Prozeß an einem Verbindungsfreigabe-Semaphor auf die Weitergabe seiner Nachricht wartet. Die Zuteilereinheit ruft ferner nach der Steuerungseingabe eines im Eigenbereichsmodus ablaufenden Prozesses oder nach einem Streit zwischen zwei Prozessen, wenn der Prozeß weiterläuft und sich im Eigenbereichsmodus befindet, die Firmware für Eigenbereichsbefehle auf. Er ruft darüberhinaus Firmware zur Dekorerweiterung auf für
(a) einen zeitweiligen Aufruf während der Steuerungswegnahme eines Prozesses, der in jener Dekorefweiterung abläuft;
(b) einen zeitweiligen Aufruf während der Steuerungsübernahme eines Prozesses, der in jener Dekorerweiterung abläuft;
(c) einen bestimmten Aufruf am Ende der Steuerungsübergabe eines Prozesses, welcher in der Dekorerweiterung abläuft; und
(d) einen bestimmten Aufruf nach einem Widerstreit, wenn der laufende Prozeß weitergeht und in diesem Dekorerweiterungsmodus abläuft.
Außerdem versetzt der Zuteiler das System in den Leerlauf, wenn kein laufender Prozeß vorhanden ist. Es gibt verschiedene Wege/ zum Zuteiler zu gelangen oder diesen zu verlassen:
(1) die Einleitungsprozedur SIP ergibt eine Eingangsstelle als letzten Schritt;
(2) der Start- und Aussetzbefehl führt zu einem Zugang zum Zuteiler;
(3) P- und V-Operationen ergeben Zugang zum Zuteiler. Die P-Operation nimmt eine Nachricht von einem Semaphor auf und wenn keine Nachricht vorhanden ist, geht der Prozeß in den Wartezustand über.
509845/0765
2517296 Jos
■%-
Kurz gesagt, istder Zuteiler der Hauptmechanismus, welcher die Prozesse verwaltet und damit auch die Prozeßsteuerblöcke,indem er entscheidet, welcher Prozeß ablaufen soll,und dann die erforderliche Aktion einleitet, beispielsweise eine Steuerungswegnahme für den gerade laufenden Prozeß. Dies bedeutet, daß er in den Prozeßsteuerblock alle Informationen, die für den laufenden Prozeß in Hardware-Registern Zwischenspeichern und dergl. enthalten sind, einschreibt. Außerdem führt zur Steuerungsübergabe an den neuen Prozeß, d.h. er schreibt aus dem Prozeßsteuerblock in die verschiedenen Hardware-Register,Zwischenspeicher und dgl. alle Informationen ein, welche für die Durchführung des neuen Prozesses erforderlich sind.
Eine Darstellung der vom Zuteiler ausgeführten Funktionen ergibt sich aus den Flußdiagrammen gemäß den Figuren 14a bis 14i. Beispielsweise ist der Block 1402 in Figur 14a eine Darstellung der von einem Zuteiler ausgeführten Funktion, wobei ein Mikroprogrammwort vom Speichersteuerwerk geliefert wird und nach Dekodierung im Dekoder 1359 die entsprechenden Teile der Zentraleinheit über eine geeignete Folge von Mikrobefehlssignalen 1360, 1361 usw. steuert, um das Internprozeß-Warteschlangenwort IPQW aus der Systembasis im Speichersubsystem 102 herauszunehmen und in den Zwischenspeicher 1315 zu übertragen. Gleichzeitig ruft der Zuteiler den GO-Segmentdescriptor (vgl. Figur 12) aus derjenigen T-Tabelle ab, auf welche das G-Tabellenwort GTW in der Systembasis hinweist. Die Bits 16 bis 31 des IPQW enthalten ein 16-Bit positives ganzzahliges, welches die Verschiebung von der Basis des GO-Segments zum Kopf (erstes Byte) der Warteschlange Q/PR/RDY vorbereiteter Prozesse darstellt. Sind die Bits 16 bis 31 des IPQW-Wortes gleich 0, so wird die Warteschlange als leer angesehen. Dies bedeutet, daß gegenwärtig kein Prozeß in der Warteschlange steht. Die nächste im Entscheidungsblock 1405 zu entscheidende Frage ist, ob ein Prozeß gegenwärtig abläuft. Hierzu wird festgestellt, ob der Vakanzinflikätor gesetzt ist oder nicht. Ist er gesetzt und ist, wie soeben festgestellt wurd, kein weiterer Prozeß
509845/076 5
2517296
-m-
in der Warteschlange, so geht die Anlage in den Leerlaufzustand 1406 über. Läuft jedoch gerade ein Prozeß ab und ist kein weiterer im Wartezustand, so nimmt der laufende Prozeß seinen Befehl 1407 auf.
Im Entscheidungsblock 1403 des Flußdiagramms (Figur 14a) wird der Kopf der durch das IPQW-Wort im GO-Segment angezeigten Warteschlange in den Zwischenspeicher übernommen, wenn ein positiv ganzteiliger Wert im Hinweisadressenbereich des IPGQ, d.h. in den ■* Bits 16-31 vorhanden ist. Um Widerholungen zu vermeiden, werden hier die Zwischenfunktionen des Zuteilers in Verbindung mit der Steuereinheit und der Zentraleinheit weggelassen. Es ist jedoch zu beachten, daß solche Zwischenfunktionen typischerweise vorhanden sind. Bis zu dieser Stelle ist bestimmt worden, daß irgendein Prozeß in der Warteschlange steht. Ehe weitere Aktionen eingeleitet werden können, ist eine Bestimmung nötig, ob gegenwärtig ein Prozeß in der Zentraleinheit abläuft. Dies wird mittels des Bestimmungsblocks 1410 getan. Läuft gegenwärtig kein Prozeß ab, so wird der Kopf der Warteschlange 1412 in Bearbeitung genommen. Ist jedoch ein Prozeß im Gange, so muß der Zuteiler bestimmen, ob der laufende Prozeß oder der Kopf der Warteschlange Priorität hat. Hierzu wird das Prioritäts-Byte des laufenden Prozesses CJP im laufenden Prozeßwort des Systembasis-Prozeßsteuerblocks 400 bei 1413 abgerufen. Eine Entscheidung wird bei 1414 gefällt, ob der laufende Prozeß CJP von geringerer Priorität ist als der an der Spitze der Warteschlange stehende neue Prozeß NJP. Hat der laufende Prozeß keine niedrigere Priorität als der neue, so behält der laufende Prozeß seine Steuerbefugnis über die Zentraleinheit und der Ausscheidungsanzeiger wird bei 1415 zurückgestellt. Dieser steht immer auf 0, sofern nicht ein oder mehrere neue Prozesse seit Beginn der letzten Befehlsausübung für den alten Prozeß in die Warteschlange eingereiht wurden und dadurch eine Konfliktmöglichkeit geschaffen worden ist. Nur in diesem Fall wird der Ausscheidungsanzeiger auf "1" gesetzt. Ehe der laufende Prozeß weitergehen und weitere Befehle ausführen kann, wird bestimmt,
5 0 9845/0765
2517296
ob er im Dekorerweiterungsmodus 1415 abläuft. Ist dies der Fall, so wird der nächste Befehl im Emulationsmodus, d.h. in der Dekorerweiterung ausgeführt. Läuft er hingegen nicht im Dekorerweiterungsmodus ab, so erfolgt die Ausführung des nächsten Befehls im Eigenbereichsmodus. Hat im Entscheidungsblock 1414 der neue Prozeß am Kopf der Warteschlange eine höhere Priorität als der alte, so wird dem laufenden Prozeß die Steuerungsbefugnis weggenommen und dem neuen Prozeß übertragen. Hierzu bewirkt eine Firmware-Prioritätsubroutine PRIQ 1418 die Einordnung des laufenden Prozesses CJP in die Warteschlange, indem die LIFO-Priorioritäts- und die bv-Prioritätsnummer zunächst unter der Steuerung der Firmware Subroutine RLLO 1419 den alten Prozeß absetzen. Die RLLO Subroutine bewirkt das Einschreiben der in den Generalregistern, Basisregistern, wissenschaftlichen Registern, T-Registern, Statusregistern Und im Befehlszählwerk enthaltenen Informationen des alten Prozesses zurück in die geeigneten Speicherbereich des Prozeßsteuerblocks im Hauptspeicher und bewirkt die Fortschreibung der VerarbeitungsZeitberechnung. Außerdem wird die DEXT-Nummer des Prozeßhauptwortes PMWO im Prozeßsteuerblock 400 bei 1420 forigeschrieben.
Der neue Prozeß NJP ist nunmehr für die Steuerungsübernahme vorbereitet. Das Grenzadressenregister- BAR wird abgerufen bei 1422, und das laufende Prozeßwort RPW wird von der Adresse BAR plus 56 der Systembasis bei 1423 abgerufen. Der Name des neuen Prozesses NJP wird zunächst in das laufende Prozeßwort RPW eingeschrieben und da diesser Name in der Prozeßverbindung PL der Warteschlange Q/PR/RDY steht, wird der Name in der Prozeßverbindung PL im Block 1424 in das laufende Prozeßwort eingegeben. Damit wird der neue Prozeß aus der Warteschlange der nunmehr laufende Prozeß und ist in der Lage, die Zentraleinheit zu steuern. Er wartet nicht länger in der Q/PR/RDY-Warteschlange und muß folglich aus dieser Warteschlange entfernt werden, indem sein Name an der Stelle 1425 aus der Prozeßverbindung PL dieser Warteschlange herausgenommen wird. Sobald dies erledigt ist, wird die Warteschlange durch eine Firmware-Subroutine UQLK bei 1425a fortgeschrieben. Die JP-Nummer des gerade aus der Anlage herausgenommenen Prozesses wird
509845/0765
2517296
- 9BD -
in eine Prozeßverbindung in der Q/PR/RDY-Warteschlange eingegeben, weil er nunmehr nicht langer die Anlage steuert, sondern bei 1426 auf sie warten muß. Zu diesem Zeitpunkt wird die übergabe der Steuerung der Zentraleinheit auf den neuen Prozeß und die Einordnung des alten Prozesses in die Warteschlange bewirkt, denn dort befindet sich der neue Prozeß in der Steuerbefugnis über die Zentraleinheit, der Vakanzanzeiger steht bei 1427 auf "0". Würde kein laufender Prozeß die Zentraleinheit steuern, so stünde der VakanzanztLger auf "1". Nunmehr ist die Zuordnung des Prozessors beendet, der neue Prozeß arbeitet jetzt mit der Zentraleinheit zusammen, und der alte Prozeß befindet sich in der Warteschlange. Noch ist jedoch der neue Prozeß noch nicht in der Lage abzulaufen, weil die Hardware der Zentraleinheit 1306 in Figur 13a wie z.B. die Generalregister 1307, die Basisregister 1308, die wissenschaftlichen Register 1309, das T-Register 1310, die Zustandsregister 1311 und der Befehlszähler 1312 vom Prozesteuerblock des neuen Prozesses erst mit Steuerinformationen versorgt werden müssen.
Hierzu steuert die Firmware-Subroutine 1430 die Zentraleinheit und ruft zunächst das PMW 3 vom Prozeßsteuerblock (Figur 4) in den Zwischenspeicher 1315 und anschließend das Prozeßhauptwort 0 ab. Das MBZ-FeId des PMW 0 wird bei 1433 überprüft und wenn es nicht gleich binär 0 ist, erscheint ein PCB-Ausnahmesignal, Ist jedoch das MBZ-FeId des PMW 0 gleich Null, so wird das PMW 1 bei 1434 abgerufen. Erneut wird das MBZ-FeId des PMW 1 überprüft, um festzustellen, ob es gleich 0 ist oder nicht. Ist es nicht gleich 0, so erscheint ein einen unzulässigen Steuerblock anzeigendes Ausgangssignal. Andernfalls geht der Zuteiler nach C über. Das Adressraumwort ASW 0 wird aus dem entsprechenden Speicher im PCB abgerufen und der Segmenttabellenwortumfang STWSZ bei 1437 überprüft, um festzustellen, ob er kleiner als 7 ist oder nicht. Ist er größer als 7, so entsteht ein PCB-Ausnahmesignal. Ist es kleiner oder gleich 7, so wird das ASW 1 bei 1438 aus dem PCB entnommen und sein STWSZ-FeId bei 1439 überprüft um festzustellen, ob
5 0 9845/0765
2517296
es kleiner oder gleich 8 ist oder nicht. Ist dieses Feld größer als 8, erscheint ein PCB-Ausnahmesignal. Ist STWSZ gleich oder kleiner als 8, so wird bei 1440 das Ausnahmewort EXW abgerufen und sein MBZ-FeId überprüft um festzustellen, ob es gleich 0 ist
en *
oder nicht. Ist es gleich 0, so entsteht ein ein unzulässigen PCB anzeigendes Ausnahmesignal. Ist es gleich 0, so wird das Stapelspeicherwort SKW bei 1442 abgerufen und sein MBZ-FeId bei 1443 überprüft. Ist das MBZ-FeId nicht 0, so erscheint ein PCB-Ausnahmesign; andernfalls wird das Befehlszählerwort ICW aus dem PCB abgerufen und in den Befehlszähler IC eingegeben und sein Hinweisfeld TAG bei 1445 überprüft, ob es gleich 0 ist oder nicht. Ist es nicht gleich 0, so erscheint ein Signal für einen unzulässigen PCB. Andernfalls wird das MBZ-FeId (Bits 0-31) bei 1446 abgerufen und bei 1447 überprüft, ob es gleich 0 ist oder nicht. Ist es nicht gleich 0, dann erscheint ein PCB-Ausnahmeslgnal; ist es jedoch gleich 0, so werden die Stapelspeicherbasisworte SBW 0, 1 und 2 bei 1448 abgerufen. Der Inhalt der acht Basisregister im Basisregister-Sicherheitsbereich des PCB wird bei 1449 abgerufen und in den Basisregistern 1308 der Anlage abgelegt. Dann werden die Inhalte der 16 Generalregister aus dem Generalregister-Sicherstellungsbereich des PCB bei 1450 abgeladen und in die Generalregister der Zentraleinheit bei 1307 eingegeben. Vor dem Abruf der wissenschaftlichen Register wird das Fähigkeitsbyte de PMW 0 überprüft, um festzustellen, ob der wissenschaftliche Modus benutzt wird oder nicht (1451). Wird der wissenschaftliche Modus verwendet, dann werden die Inhalte der wissenschaftlichen Register aus der entsprechenden Sicherstellungszone des PCB abgerufen und bei 1452 gespeichert. Die Firmware prüft anschliessend das Fähigkeitsbyte des PMW O, um festzustellen, ob der Berechnungsmodus angewandt wird (1453). Ist dies der Fall, d.h. steht das Fähigkeitsbyte auf binär 1, so besteht im PCB ein Berechnungswort und das Berechnungswort RTA für die Vorbereitungszeit wird fortgeschrieben. Anschließend überprüft die Firmware, ob die DEXT-Nummer auf 0 steht - (1454) . Ist dies nicht der Fall, so gibt sie an, daß . die Maschine' im Emulationsmodus arbeiten kann, d.h. die Dekorerweiterungsmöglichkeit benutzt wird. Dement-
509845/0765
2517296
sprechend wird die DEXT-Nummer des PMW 1 bei 1455 Überprüft, um festzustellen, ob sie größer oder kleiner als das DETSZ-FeId des Prozeßhauptwortes 3 ist. Ist sie größer, so erscheint bei 1456 eine PCB-Ausnahme. Ist die DEXT-Nummer kleiner als das DETSZ-FeId aber nicht gleich 0, dann läuft die Maschine in einem zulässigen Emulationsmodus ab und geht zu F über. Wenn im Entscheidungsblock 1455 das DEXT-FeId gleich 0 ist, so wird der Eigenbereichmodus ausgeführt und die Maschine ruft die· Segment-Tabellenworte STW bei 1457 ab. Das Restzeitwort RTO des Prozeß-Steuerblocks wird bei 1458 abgerufen und der Prozeßzeitgeber mit derjenigen Zeitspanne geladen, welche der laufende Prozeß im Arbeitszustand zubringen kann.
Bis zu diesem Zeitpunkt hat entweder(a)ein neuer Prozeß NJP die Steuerung der Zentraleinheit übernommen, falls ein alter Prozeß CJP .in der Maschine war und der neue Prozeß eine höhere Priorität als der alte hat, oder (b) es war kein alter Prozeß in der Zentraleinheit und der Kopfprozeß der Warteschlange wurde verarbeitet. Unter der Bedingung (a) wurde der alte* Prozeß aus dem laufenden Prozeßwort entfernt und in eine Prozeßverbindung PL in der Warteschlange eingegeben, während der neue Prozeß in der Prozeßverbindung Q/PR/RDY in das laufende Prozeßwort RPW eingefügt wurde und somit die Zustände der beiden Prozesse umgeschaltet worden. Der neue Prozeß wurde zum laufenden Prozeß und erhielt Steuerbefugnis über die Zentraleinheit, während der alte Prozeß diese Steuerbefugnis abgegeben hat. Dann erfolgt der Zugriff zum PCB des neuen Prozesses und die Information zur Durchführung des neuen Prozesses wurde in den Zwischenspeicher oder in die Registeranordnung des Adressensteuerwerks übertragen.
Falls gemäß Zustand (b) kein alter Prozeß die Zentraleinheit steuerte, wurde der Kopfprozeß der Warteschlange der vorbereiteten Prozesse zur Verarbeitung übernommen und der neue Prozeß zum laufenden Prozeß, weil der Zuteiler dieser von der Prozeßverbindung PL am Kopf der Warteschlange entnommen und in das RPW-Wort übertragen hat. Hierdurch entstand eine leere Prozeß-
509845/0765
2517296
Verbindung PL in der Warteschlange, die herausgenommen werden mußte.
Am Entscheidungsblock 1461 bestimmt die Firmware, ob ein laufender Prozeß Steuerbefugnis über die Zentraleinheit hatte und falls eine freie Prozeßverbindung FPLS bestand, erfolgte ein Zugriff hierzu und sie wurde in die Warteschlange eingereiht und der laufende Prozeß eingeschrieben. Wenn jedoch kein laufender Prozeß die Zentraleinheit steuerte, wird das PMW 0 des neuen Prozesses bei 1460 fortgeschrieben und erneut bei 1463 überprüft, ob ein laufender Prozeß in der Maschine ist. Ist dies nicht der Fall, so wird die Prozeßverbindung des neuen Prozesses, welcher sich in der Warteschlange befand un nun die Maschine steuert, bei 1466 aus der Warteschlange Q/PR/RDY herausgenommen und wird zu einem
FLSP
VerbindungsfreLgabesemaphor/und nunmehr in die Warteschlange freier Prozeßverbindungen (805 in Figur 9) eingereiht. Sie wird zu einem Teil der Warteschlange 1466a der freien Prozeßverbindungen. Die Inhalte der Grenzadressenregister BAR werden abgerufen bei 1464, und das laufende Prozeßwort RPW des neuen Prozesses, welcher nunmehr der laufende Prozeß ist, wird bei BAR plus 56 der Systembasis abgelegt und dadurch fortgeschrieben, daß die Identifizierung des neuen Prozesses bei 1465 in das laufende Prozeßwort RPW eingeschrieben wird. Der Vakanzindikator wird auf 0 gesetzt, wenn kein laufender Prozeß vorhanden war. Anschließend wird der Ausscheidungsindikator bei 1467 auf 0 gesetzt und der Segmentassoziator AS 132 in Figur/, der ein typischer inhaltsadressierbarer Speicher ist, wird bei 1471 gelöscht. Damit erreicht dex Prozeß den Prozeßmodus bei 1470. Dieser zeigt an, daß Ausnahmesignale durch den im Prozessor ablaufenden Prozeß und nicht durch das Betriebssystem verarbeitet werden. Die Firmware schreitet dann zu CAB 1480 fort und ein asynchrones Auffang-Bit AB wird bei 1481 überprüft, ob es auf binär 1 steht oder nicht. Steht das AB-Bit auf 1, dann erfolgt eine Überprüfung bei 1482, ob die Prozeringnummer PRN größer oder gleich der asynchronen Ringnummer ARN ist. Das Abfang-Bit AB und die Abfang-Ringnummer ARN befinden sich im Prioritäts-Byte des PCB jedes Prozesses und haben Bedeutung, wenn
5'0 9845/0765
2517296 Ul
sich der Prozeß im Verarbeitungszustand befindet. Sie werden aus dem RPW an der Stelle BRA plus 56 der Systembasis abgeleitet und zurückgestellt, weil der nächste Schritt 1484 zu einer asynchronen Abfangroutine führt, die jene Zustände berücksichtigt, welche veranlassen, daß das asynchrone Abfang-Bit oder die asynchrone Ringnummer in die erste Stelle eingegeben werden. Würden dies Bits nicht zurückgesetzt, so würde der nächste Firmware-Durchlauf anzeigen, daß irgendetwas falsch gelaufen ist, obwohl tatsächlich nichts falsch ist. Folglich würde immer die asynchrone Abfangroutine 1584 auftreten und niemals eine Durchführung erfolgen. In den Entscheidungsblocks 1481 und 1482 würde, wenn das AB-Bit nicht gesetzt ist oder das AB-Bit gesetzt und die Prozeßringnummern nicht größer als die asynchrone Ringnummer ist, die Firmware übergehen, zu bestimmen, in welchem Modus der Prozessor laufen würde, nämlich im normalen Modus oder im Emulationsmodus. Demzufolge wird die DEXT-Nummer überprüft ob sie auf 0 gesetzt ist und wenn nicht, läuft bei 1487 der Normalmodus der Maschine an. Ist jedoch die DEXT-Nummer nicht gleich O, so wird bei 1486 der Emulationsmodus eingeleitet.
Einzelheiten eines bevorzugten Ausführungsbeispiels
1. Wiederaufsuchung von Semaphoren
Es wurde bereits erläutert, daß Prozesse Programmsegmente und zusätzlich auch Datensegmente gemeinsam benutzen können. Aufgrund dieser Zwischenbeziehung müssen die Prozesse in der Lage sein, miteinander zu kooperieren und hierfür sind im System eine Gruppe von Prozeßsynchronisationsfunktionen vorhanden. Diese benutzen die Datenstruktur, welche Semaphor genannt wird. Ein Semaphor ist eine gemeinsam benutzte Datenstruktur, welche durch die Adressenbasis aller zusammenarbeitenden Prozesse angewählt wird. Da es sich um ein gemeinsam benutzte Datenstruktur handelt, wird ein Semaphor zur Verbindung eines Prozesses mit einem Ereignis oder einem Systemmittel benutzt, welches nicht gleichzeitig auftritt. Ein Ereignis ist irgendeine von einen Prozeß beobachtete Größe, welche für einen anderen Prozeß von Interesse sein kann. Ein Ereignis kann in der Fertigstellung einer asynchronen Operation
508845/07B5
2517296
oder in der Verfügbarkeit eines Prozeßmittels bestehen. Ein Ereignis kann entweder dadurch entstehen, daß ein anderer Prozeß bei einem bestimmten Ausführungszustand anlangt oder durch die Ankunft einer Nachricht. Ein Semaphor muß deshalb in der Lage sein, die Anwesenheit von Ereignissen oder auf Prozesse wartenden Systemmitteln zu speichern. Stattdessen kann ein Prozeß einen bestimmten Ausführungszustand erreichen, ehe das Ereignis eintritt. In diesem Fall muß das Semaphor in der Lage sein, den auf das Ereignis wartenden Prozeß zu speichern. Somit muß ein Semaphor die zweifache Fähigkeit der Speicherung der jeweils eher auftretenden Erscheinung, nämlich eines auf ein Ereignis wartenden Prozesses oder eines auf den Prozeß wartenden Ereignisses haben. Für eine vollständige Erläuterung der Semaphor-Technik wird zunächst ihre Beziehung und ihr Vorhandensein Systemmechanismus weiter ergänzt und anschließend die verschiedenen Datenformate von Semaphoren im einzelnen erläutert. Schließlich wird die Verwendung und die Betriebsweise im System erklärt.
In Figur 8 ist die physikalische Konfiguration des Hauptspeichers wiedergegeben, der eine logische Gruppierung von Segmenttabellen darstellt. Diese als G-Segmente bezeichneten Tabellen werden für die Speicherung von Semaphoren und zugehöriger Information verwendet. Sie sind in zwei vom Konzept her unterschiedliche Segmente unterteilt, nämlich ein GO-Segment und die übrigen eine Vielzahl von SD-Segmenten. Das GO-Segment wird zum Festhalten einer Vielzahl von Prozeßverbindungen PL und Prozeßverbindungssemaphoren PLS des Systems benutzt. Jede Prozeßverbindung enthält vier Felder, wobei das erste den Namen des Prozesses wiedergibt, das zweite die Priorität des Prozesses, das dritte eine Anschlußverbindung zur nächsten Eingangsstelle und das vierte eine relative Segmentadresse. Das Namensfeld ist ein JP-Name, der dem JP-Namen des Prozeßsteuerblocks entspricht. Demzufolge liefert jede Prozeßverbindung im GO-Segment ein aus zwei Worten bestehendes Einstandszeichen für den PCB, weil jede Prozeßverbindung auf den durch sie representierten PCB hinweist. Das Prioritätsfeld ist ein genaues Abbild des Prioritätfelds im PCB. .
509845/0765
2517296
- TsBS -
Das Verbindungsfeld wird zum Ordnen der Prozeßverbindungen in einerWarteschlange benutzt, damit der Zuteiler äie der Reihe nach überprüfen kann. Somit liefert das GO-Segment einen einfachen Mechanismus für den Zuteiler,alle gegenwärtig aktiven Prozesse zu überwachen, weil jeder Prozeß eine aus zwei Worten bestehende Prozeßverbindung hat, die ihn mit dem PCB verbindet.
Es wurde bereits erläutert, daß ein Prozeß sich in irgendeinem von vier Zuständen befinden kann, nämlich ablaufend, vorbereitend, wartend oder ausgesetzt. Alle Prozesse mit Ausnahme des laufenden Prozesses, die gegenwärtig aktiv sind, befinden sich im GO-Segment und zwar mit ihrem Prozeßnamen und mit einer Warteschlange, in der sich die Prozeßverbindung mit dem Prozeßnamen befindet. Somit sind diese Zustände nicht nur durch den Prözeßsteuerblock gekennzeichnet, sondern die Prozeßverbindungen des GO-Segments bewirken eine Warteschlangenorganisation derart, daß ein leichter Zugriff und eine Änderung durch den Zuteiler möglich.ist. Jeder gegenwärtig aktive Prozeß hat seinen Namen, in einer Prozeßverbindung und jede Prozeßverbindung ist Teil einer Vielzahl von Warteschlangen im GO-Segment. Somit kann der Prozeßname nur in einer Prozeßverbindung auftreten,und eine Prozeßverbindung kann zu jeder Zeit nur einer Warteschlange zugefügt werden. Alles was für den Zuteiler zur Änderung des Prozeßzustands erforderlich ist, ist eine übertragung der Prozeßverbindung auf eine andere Warteschlange, welche mit dem Prozeßzustand verbunden ist. Somit können durch Änderung der Beziehung der Prozeßverbindung im GO-Segment Zustandsänderungen leicht bewerkstelligt werden. Da sich nur ein Prozeß im Ablaufzustand befinden kann, ist für die Prozeßverbindung keine Warteschlangenorganisation erforderlich. Jedoch können sich eine Vielzahl von Prozessen im Eereitschafisi oder im Wartezustand befinden.
Außerdem gibt es mehrere verschiedene Wartezustände, die ein Prozeß einnehmen kann, weil ein Prozeß auf verschiedene Ereignisse warten kann. Es gibt nur eine Vorbereitungs-Warteschlange für für jene Prozesse, welche auf den Zugriff zu Systemmitteln der
509845/0765
2517296
virtuellen Maschine vorbereitet sind, aber eine Vielzahl von Warteschlangen für jene Prozesse, welche auf den Auftritt eines Ereignisses oder ein Systemmittel warten, um ihre Operation,beispielsweise Q/PR/S oder Q/PR/FLS fortzusetzen. Ein ausgesetzter Prozeß ist im Augenblick nicht aktiv und folglich besteht keine Warteschlange für solche ausgesetzten Prozesse.
Figur 9 zeigt in auseinandergezogener Darstellung ein GO-Segment. Es gibt nur ein GO-Segment im System. Es liefert alle Prozeßverbindungen, d.h. die aus zwei Worten bestehenden Einstandsinformationen für alle Prozesse, welche vom System verarbeitet werden können. Jeder Prozeß im Vorbereitungszustand ist mit den anderen Prozessen durch Verbindungsfelder in einer Warteschlange, genannt die Vorbereitungs-Warteschlange Q/PR/RDY gemäß 803c und d verbunden. Diese Vorbereitungswarteschlange muß in irgendeiner Weise begrenzt sein durch Kopf und Schwanz, d.h. durch die erste und die letzte Prozeßverbindung in der Warteschlange. Dies erreicht man durch das die nächste Prozeßverbindung kennzeichnende Feld. Der Schwanz der Warteschlange, z.B. 8O3d, identifiziert sich selbst, indem er als die nächste Verbindung kennzeichnendes Feld den Wert 0 hat. Der Kopf der Warteschlang Q/PR/RDY weist auf ein Feld im Systembasisbereich, nämlich ein Wort hin, welches das
interne Prozeß-Warteschlangenwort IPQW genannt wird. Dieses Wort IPQW enthält eine Hinweisadresse auf die Prozeßverbindung am Kopf der Warteschlange. Der Verteiler kann somit alle vorbereiteten Prozesse beobachten, indem er den Kopf der Warteschlange über das Wort IPQW feststellt und dann alle Prozeßverbindungen der Reihe nach durch ihre die nächste Verbindung anzeigenden Felder durchprüft. Wenn der gegenwärtig laufende Prozeß in einen anderen Zustand als den Wartezustand übergeht, wählt der Zuteiler die Prozeßverbindung am Kopf der Warteschlange Q/PR/RDY aus, entfernt sie von der Warteschlange und benutzt den JP-Namen zum Auffinden des Prozeßsteuerblocks. Dieser Prozeß wird dann der neue laufende Prozeß und geht vom Verbereitungszustand über Anweisungen des Zuteilers in den laufenden Zustand über.
509845/0785
2517296
Der im Ablaufzustand befindliche Prozess wird nicht durch eine Prozessverbindung im GO-Segment dargestellt. Stattdessem ist ein anderes Wort in dem Systembasisbereich, genannt das laufende Prozesswort RPW, welches zwei Felder aufweist. Das eine Feld ist ein JP-Name eines gegenwärtig ablaufenden Prozesses und das andere ist ein Abbild des Prioritätsfeldes im Prozess-Steuerblock jenes Prozesses. Ergibt sich eine Situation, in der der Zuteiler den Kopf der Vorbereitungswarteschlange mit dem gegenwärtig ablaufenden Prozess vergleicht, um feszustellen, ob der Prozess Steuerbefugnis über die Zentraleinheit haben wird, so würde er das RPW-Wort mit der Prozessverbindung vergleichen und dann voranschreiten. Prozesse im Wartezustand warten auf ein Signal oder eine Nachricht, daß ein bestimmtes Ereignis eingetreten ist. Da mehr als ein Prozess auf das gleiche Signal oder die gleiche Nachricht warten können, ist eine Warteschlange für solche Prozesse erforderlich. Folglich ist jeder Prozess im Wartezustand auch im GO-Segment durch eine Prozessverbindung aus zwei Worten dargestellt,und diese Prozessverbindungen sind untereinander in einer Wartcschlange verkettet. Da mehr als ein Semaphor wartende Prozesse aufweisen kann, können zahlreiche Warteschlangen durch Verkettungen von Prozessverbindungen im GO-Segment dargestellt sein. Zur Veranschaulichung sind zwei Warteschlangen von Prozessen, nämlich 8O3a-b und 8O3e-g gezeigt. Der Kopf jeder Warteschlange Q/PR/S ist durch sein eigenes Semaphor gekennzeichnet. Dies steht im Gegensatz zu einer Warteschlange im Vorbereitungszustand, die durch das interne Prozessorwarteschlangenwort in der Systembasis gekennzeichnet ist. Beide Warteschlangen C/PR/RDY und Q/PR/S sind Warteschlangen von Prozessverbindungen, welche durch die Zuteiler-Hardware und durch P- und V-Befehle verarbeitet werden, wenn ein Prozess seinen Zustand ändert. Der Verteiler oder der P- oder V-Befehl kann einen Prozess aus einer dieser Warteschlangen entfernen und in eine andere Warteschlange einfügen und der Zuteiler kann einen Prozess in den Ablaufzustand überführen und aus diesem heraustrenr nen.
50984S/0765
2517296
Die Prozessverbindungen für wartende Prozesse C/PR/S sind im Format.gleich wie die Prozessverbindungen für im Vorbereitungszustand befindliche Prozesse Q/PR/RDY, wobei der Schwanz der Warteschlange durch eine Prozessverbindung mit dem Wert Null im Feld für die nächste Verbindung gekennzeichnet ist. Eine Hinweisadresse auf den Kopf einer Warteschlange wartender Prozesse wird in einer speziellen Datenstruktur, genannt Semaphor, festgehalten, welche für die Signalisierung des Ereignisses dient. Dieses Semaphor, welches im einzelnen später noch beschrieben wird, enthält eine Kopf-Hinweisadresse PHCP auf eine Prozesswarteschlange, welche die Kopf-Prozessverbindung in der Warteschlange der am Semaphor wartenden Prozesse, z. B. Q/PR/S bestimmt.
Geht der Prozess vom vorbereiteten oder vom Wartezustand in den Ablaufzustand oder in den ausgesetzten Zustand über, so gibt er seine Prozessverbindung in das GO-Segment auf. Dieser Raum ist somit für irgendeine andere Verwendung freigeworden. Andererseits, v/enn ein ausgesetzter oder ein laufender Prozess in den vorbereiteten oder den V/arte zustand übergeht, so muß er eine Prozessverbindung im GO-Segment erhalten. Somit ergibt sich ein Speicherverwaltungsproblem in GO-Segment. Der Zuteiler muß in der Lage sein, aus zwei Worten bestehende Prozessverbindungen schnell zu erhalten und freizugeben. Hierzu enthält das GO-Segment noch eine weitere Warteschlange, welche automatisch durch Hardware verarbeitet wird. Diese Warteschlange enthält alle freien Prozessverbindungen, welche bei Einführung eines neuen Prozesses benutzt werden können. Kenn eine Prozessverbindung freigegeben wird, beispielsweise durch einen vorbereiteten oder wartenden Prozess, der ausgesetzt wird, so wird die freigegebene Prozessverbindung der Warteschlange freier Prozessverbindungen hinzugefügt. Wird eine neue Prozessverbindung benötigt, um einen Prozess darzustellen, .welcher in den Vorbereitungs- oder Wartezustand übergeht, so wird sie aus der Karteschlange freier Prozessverbindungen entnommen. Diese Aktionen werden in erster Linie
5098-45/0765
2517296
vom Zuteiler durchgeführt. Jedoch können P- und V-Befehle oder Start- und Aussetzungs-Befehle ebenfalls benutzt werden. Im GO-Segnient müssen zu jeder Zeit genügend Prozessverbindungen vorhanden sein, um die Hamen aller Prozesse festzuhalten, welche sich gegenwärtig im aktiven Zustand befinden.
Die freien Prozessverbindungen sind in der gleichen Weise miteinander verkettet, wie Q/PR/RüY und Q/PR/S und der Schwanz dieser Warteschlange wird durch eine Verbindung gekennzeichnet, welche im Feld für die nächste Verbindung den Wert Null hat. Der Kopf der Warteschlange freier Prozessverbindungen weist auf ein Feld in einer besonderen Datenstruktur hin, welche ein Prozessverbindungs-Semaphor.PLS 901 genannt wird, das im vorderen Teil des GO-Segments liegt. Dieses Semaphor für freie Verbindungen befindet sich an einem bekannten Platz im GO-Segment, so daß der Zuteiler beim Auffinden keine Schwierigkeiten hat. Alle Prozessverbindungen innerhalb des GO-Segments sind in irgendeiner Weise mit einer der Warteschlangen vorbereiteter Prozesse oder mit der Warteschlange freier Prozessverbindungen verknüpft. Ls ist jedoch zu beachten, daß nichts innerhalb der Prozessverbindung selbst die Warteschlange identifiziert, die sich darin befindet. Detrachtet man die Prozessverbindung im GO-Segment, so sieht man nur einen Prozessnamen, eine Priorität und ein Verbindungsfeld, welches einem zur nächsten Verbindung führt. Es gibt keine Rückwärtsverbindung oder andere identifizierende Information. Somit ist es bei Betrachtung der Prozessverbindungen unmöglich, den gegenwärtigen Zustand des Systems zu bestimmen.
Es ist bereits erwähnt worden, daß ein Semaphor auch die Fähigkeit zur Speicherung eines Ereignisses hat, welche· auf einen Prozess wartet, um mit ihm verbunden zu werden. Um dies zu erreichen, werden die übrigen G-Segmente benutzt. Die verbleibenden G-Segmente werden Semaphor-Descriptor-Segment· genannt
10S84S/076S
2517296
und bestehen aus Gn-Segmenten 8O2n. Ein Semaphor-Descriptor-Segment SD ist ein Segment, welches Semaphoren, sowie durch Semaphoren und Semaphor-Descriptoren gesteuerte Warteschlangen von Nachrichtenverbindungen enthalten kann. Semaphor-Descriptor-Segmente werden angewählt, wenn das normale Segment in der internen Adressenbasis eines Prozesses JP ein Semaphor-Descriptor-Segment hat, dessen GS-Bits gleich Ol sind. Diese GS-Bits werden nachstehend in Verbindung mit dem Zugriff zu Semaphor-Descriptor-Segmenten beschrieben. Außerdem können nicht zwei G-Segmente mit der gleichen absoluten Adresse anfangen. Demzufolge ist das GO-Segment das erste Segment, welches eine absolute Startadresse hat und die übrigen SD-Segmente, d. h. Gl bis Gn haben ihre eigenen absoluten Startadressen.
Der Aufbau eines Semaphor-Descriptor-Segments SD ergibt sich aus Figur 15. Seine ersten beiden Worte müssen das folgende 32-Bit-Format haben. Die ersten beiden Bits sind ein Hinweisfeld, welches, als 11-Bit codiert, einen sogenannten Hinweisfehler anzeigt. Diese Fehleranzeige ist lediglich ein Hardwaremechanismus für die Begrenzung des Zugriffs zu einem Wort des SD-Segments. Die nächsten beiden Bits, d. h. die Bits 2 und 3 haben die VR-Ringnummer, welche die maximale berechnete Ringnummer darstellt, die zur Durchführung einer V-Operatlon an einem Semaphor durch einen Semaphor-Descriptor im Segment zugelassen ist. Die nächsten beiden Bits, d. h. die Bits 4 und 5 stellen die Prozessringnummer PRN dar, welche die maximale berechnete Ringnummer ist, welche eine P-Operation an . einem Semaphor durch einen Semaphor-Descriptor im Segment durchführen kann. Die Bits 6 und 7 sind die IR-Ringnummer, welche die maximale berechnete Ringnummer ist, welche eine eingeleitete Semaphor-Zähloperation an einem Semaphor durch einen Semaphor-Descriptor im Segment gestattet. Die VR-, PR-, und IR-Werte eines Semaphor-Descriptor-Segments beziehen sich nicht notwendigerweise auf Semaphoren innerhalb dieses Segments, sondern
5 0 9 8 Λ B / 0 7 6 5
- 2517296
ΑΧΟ
nur auf die Semaphor-Descriptoren 1502, welche in diesem Segment liegen, d. h. auf Semaphoren, welche über diese Descriptoren zugängig sind. Die Semaphoren können in einem anderen Segment liegen als in dem Semaphor-Descriptorsegment. Die Bits 8 bis 15 müssen Null sein und heißen MBZ. Die Bits 16 bis 31 sind Hinweisadressen auf freie Verbindungs-Semaphore FLSP, welche die relative Adressenverschiebung im Semaphor-Descriptor-Segment darstellen. Die Hinweißadressen auf freie Verbindungs-Semaphore haben zwei Funktionen im System. Zuerst sind sie als obere Grenze der Adresse eines Semaphor-Descriptors im Semaphor-Descriptorsegment definiert, d. h. die relative Segmentadresse irgendeines Semaphor-Descriptors im Segment muß kleiner als FLSP sein. Erfüllt eine relative Adresse diese Bedingung nicht, so weist der Semaphor-Descriptor nicht auf ein Semaphor in diesem Segment hin. Zweitens weist die Hinweisadresse auf das Semaphor für eine freie Verbindung FLS hin. In Figur 15 bezieht sich die Nummer 1500 auf das erste Wort des Semaphor-Descriptor-Segments und die Nummer 1502 auf einen, aus einer Vielzahl von Semaphor-Descriptoren.
Die Hinweisadresse FLSP auf ein Verbindungsfreigabe-Semaphor im ersten Wort des Semaphor-Descriptor-Segments liefert die relative Adresse, welche auf das Verbindungsfreigabe-Semaphor 1504 hinweist, gefolgt von einem Semaphor-Descriptor 1502. Das Verbindungsfreigabe-Semaphor FLS steuert die Warteschlange freier Nachrichtenverbindungen Q/ML/FLS in diesem Segment, falls FLS existiert. Das Verbindungsfreigabe-Semaphor muß vorhanden sein, wenn das SD-Segment Semaphoren mit Nachrichten aufweist. Außerdem kann das FLS zum Festhalten von Prozessen dienen, d. h. Q/PR/FLS,wenn alle freien Nachrichtenverbindungen gegenwärtig in Betrieb sind. Sind keine Semaphor-Descriptoren vorhanden, so wäre 1502 nichtig. Gibt es keine freien Nachrichtenverbindungen, wäre das Semaphor FLS an der Stelle 1504 unnötig. Außerdem wäre
0 9 8 4 5/0765
2517296
bei diesem Zustand der Schritt 1506, welcher die Semaphoren innerhalb des Semaphor-Descriptor-Segments zeigt, ebenfalls nichtig.
In Figur 15 gibt die Ziffer 1506 den Speicherplatz der Semaphoren Die Semaphoren, die sich in diesem Teil des Speichers befinden, sind in den Figuren 16a und 16b beschrieben. Block 1506 enthält die Nachrichtenverbindungen und freien Nachrichtenverbindungen. Jede dieser Verbindungen ist im SD-Segment enthalten und zwar weitgehend in der gleichen Weise, wie die Prozessverbindungen im GO-Segment. Dieser Nachrichtenbereich kann auch andere Daten enthalten, wie jedes andere Segment, aber enthält normalerweise Nachrichten, welche mit den verschiedenen Semaphoren im Segment in Beziehung stehen. Jede Nachrichtenverbindung 1508 besteht aus vier Worten, welche die Nachricht gemäß 1508a bilden. Die ersten 48 Bits bilden den Hinweisbereich der Nachricht und die letzten 84 Bits bilden den eigentlichen Nachrichtenbereich. Der Hinweisbereich enthält 1-1/2 Worte, d. h. die Bits 0 bis 47, während der eigentliche Nachrichtenbereich den restlichen Raum der Verbindung, d. h. 2-1/2 Worte oder die Bits 48 bis 127. Das Nachrichten-Hinweisformat hat die Bits 0 bis 15 als Feld für die nächste Verbindung. Dieses Feld ist nur von Bedeutung, wenn eine Nachricht sich in der Nachrichtenverbindung befindet. Es enthält dann die relative Adresse der Verbindung zur nächsten Nachricht der Warteschlange im Semaphor-Descriptor-Segment, mit der Ausnahme, wenn diese Verbindung die letzte in der Warteschlange ist, und somit das Feld für die nächste Verbindung den Wert Null hat und damit das Ende der Warteschlange anzeigt. Die Bits 16 bis 23 sind das Begründungsfeld, welche den Grund für die Nachricht angeben. Es wird nur in jenen Situationen benutzt, wo ΙΟ-Nachrichten vorliegen, andernfalls ist es bedeutungslos. Die Bits 24 bis 27 geben den Prioritätsgrad der Nachricht MPL an. Dieses Feld wird in Verbindung mit Nachrichten-Semaphoren benutzt, wobei der niedrigste Wert des Nachrichtenprioritätsgrades der höchsten Priorität entspricht. Die Bits 28 bis 31 sind das Nachrichten-Hinweisfeld,
509845/0765
2517296
welches die Basisinformation über die Art der Nachricht enthält. Ein Nachrichten-Hinweisfeld 0000 zeigt an, daß die Nachricht durch P- oder V-Befehle erzeugt wurde. Bei einem Nachrichten-Hinweisfeld 1000 hat die Ein-/Ausgabesteuerung die Nachricht erzeugt. Die Bits 32 bis 48 sind ,der Name des Absenders. In Abhängigkeit von der Nachricht enthält dieses Feld den Namen JP des Prozesses,der die Nachricht absendet oder die Kanalnummer für Ein-/Ausgabenachrichten oder den Wert Null in allen anderen Fällen.
Nachrichten befinden sich in den Semaphor-Descriptor-Segmenten, aber nicht im GO-Segment. In Figur 17 ist die Beziehung der Nachrichtenverbindungen zum Semaphor und zum Verbindungsfreigabe-Semaphor bei 1508a und 15O8n dargestellt. Die Nachrichten befinden sich in den Generalregistern 0 bis 3 eines Prozeß-Steuerblocks. Wenn ein Prozeß eine V-Operation ausführt, speichert er die eigentliche Nachricht in den Generalregistern 1 bis 3 und die System-Hardware würde den Hinweisteil der Nachricht in den Generalregistern 0 und 1 erzeugen. Durch Verwendung von Generalregistern anstelle von Platz in einem Datensegment ist es für die Hardware leichter, die Nachricht abzusetzen. Befindet sich der Prozeß im Wartezustand, so sind seine Register leicht im Prozeß-Steuerblock zu adressieren und die Nachrichtenfelder sind besonders leicht in den Registern zu überprüfen, wenn der Prozeß erst einmal zum Ablaufzustand zurückkehrt.
Die Nachrichtenverbindungen und die freien Nachrichtenverbindungen werden auch in Warteschlangen organisiert. Wenn die Nachrichtenverbindungen mit einem Semaphor gekoppelt sind, so wird im Semaphor Q/M/S eine Nachrichtenwarteschlange hergestellt. Werden die Nachrichtenverbindungen gegenwärtig nicht verwendet, dann sind sie mit dem FLS-Semaphor 1504 verbunden und eine Warteschlange von Nachrichtenverbindungen ist am Verbindungsfreigabe-Semaphor Q/ML/FLS vorgesehen. Dessen Struktur ist, wenn keine Nachrichten vorhanden sind, analog derjenigen, des Q/PR/ PLS. Jedoch werden unten noch einige wichtige Unterschiede
509845/0765
2517296
erläutert. Das bisher Geschilderte bildet die grundlegende SpeicherZuordnung,in der das Semaphor besteht. Vor der Beschreibung der Betriebsweise der Strukturen nach den Figuren 9 und 15 entsprechend den Figuren 17 und 18 ist eine überprüfung der Datenstruktur jedes Semaphors vorgesehen.
In Figur 16 sind die Datenstrukturen beschrieben, welche die Verbindung von Prozessen und Ereignissen ermöglichen. Diese Figur zeigt acht Typen von Semaphoren, welche im zuvor beschriebenen System Verwendung finden^ und zwar: ein Semaphor 1600 ohne Nachricht in Figur 16a, ein Semaphor mit einer Nachricht 1602 in Figur 16b, wovon zwei Typen vorhanden sind, ein Prozeßverb indungs- Semaphor· 1901, welches im GO-Segment verwendet wird und in Figur 16c dargestellt ist, ein Verbindungsfreigabe-Semaphor 1504, das in den SD-Segmenten angewandt wird und in Figur 16d gezeigt ist, ein allgemeines Semaphor 1605, ein Abfang-Semaphor 1607, sowie ein erweitertes Semaphor 1609.
Es wurde bereits erwähnt, daß ein Semaphor einen Prozeß mit einem Ereignis oder einem Systemmittel verbindet. Wo das Semaphor nur dazu benutzt wird, um einen Ereignisauftritt anzuzeigen, aber nicht zur Übertragung von Informationen betreffend den Ereignisauftritt, wird ein Semaphor ohne Nachrichten-Datenstruktur gemäß Figur 16a benutzt. Beispielsweise ein Semaphor 1600 kann einem Ausgabegerät, wie einem Piattenspeicherantrieb; zugeordnet sein. Jede Information, welche die Verfügbarkeit des Plattenspeichers betrifft, beispielsweise die Anfor^· derung des Speichers oder die Anzeige, daß der Prozeß mit der Benutzung des Speichers fertig ist, würde einem bestimmten Semaphor 1600 signalisiert werden. Andere Semaphoren 1600 können zur Anzeige anderer Ein-/Ausgabe-Geräte oder anderer Größen dienen, welche anwesend oder nicht anwesend sind. Jede dieser Größen kann ihr eigenes Semaphor 1600 haben. Ein Semaphor 1600 besteht aus einem Doppelwort, d. h. aus 64 Bits und hat folgendes Format: die ersten vier Bits, d. h. die Bits 0 bis 3 sind
SO9845/07SS
2517296
das Ilinweisfeld STAG des Semaphors. Dieses wird in allen Semaphoren zur Kennzeichnung des bestimmten Semaphortyps verwendet. Für ein Semaphor ohne Nachricht hat das Hinweisfeld die Codierung 0000. Die Bits 4 bis 15 des Semaphors 1600 werden zur Anzeige des maximalen Zählerstands SMC des Semaphors benutzt. Das SMC-FeId zeigt die maximale Anzahl von Systemmitteln, welche auf dem Semaphor aufgebaut und mit diesem verknüpft werden können. Die Bits 16 bis 31 enthalten das Semaphor-Zählfeld SCT, welches zur Anzeige der tatsächlichen Anzahl von Prozessen oder der tatsächlichen Anzahl von Systemmitteln dient, welche am Semaphor warten. Dabei ist die Beziehung zwischen dem SMC- und dem SCT-FeId derart, daß der Wert des SCT-Feldes nie größer als der des SMC-Feldes sein kann. Die Bits 32 bis 47 bilden die Kopf-Hinweisadresse PQHP der Prozeßwarteschlange. Dieses ist eine relative Verschiebung von 16 Bit, welche auf den Kopf der Prozeßverbindung in dem zum Semaphor gehörigen GO-Segment hinweist. Die Kopf-Hinweisadresse für die Prozeßwarteschlange ist Null, wenn der SCT-Zählerstand gleich Null oder positiv ist, weil keine Prozesse am Semaphor warten und folglich keine Prozeßverbindung bestimmt werden muß. Ist der SCT-Zählerstand. negativ, dann weist das Feld PQHP auf den ersten Prozeß in der Warteschlange am Semaphor hin. Die Bits 48 bis 63 geben den Inhaber-Prozeßnamen TEP an. Dieses Feld enthält den JP-Namen des letzten Prozesses, der am Semaphor erfolgreich eine P-Operation durchgeführt hat. Dies bedeutet, daß das TEP-FeId den Namen des letzten Prozesses kennt, der vom Semaphor erfolgreich ein Systemmittel zugewiesen bekommen hat. Da nur eine Anzeige eines Ereignisauftritts, z. B. ein Signal gegeben wird, zeigt der TEP-Name den letzten Namen des Prozesses an, der ein Signal erhalten hat.
Um zu bestimmen, ob ein Semaphor die Anwesenheit von Ereignissen oder Systemmittel oder die Anwesenheit von Prozessen speichert, wird das SCT-FeId des Semaphors benutzt. Ist dieses Feld positiv, so zeigt der SCT-Wert die Anzahl der auf Prozesse wartenden
50 9845/0765
2517296
JiS
Systemmittel an. Ist umgekehrt SCT negativ, so gibt der absolute Wert der SCT-Feldes die Anzahl der auf Systemmittel wartenden Prozesse an. Ist das SCT-FeId gleich Null, so wartet gegenwärtig weder ein Prozess noch ein Systemmittel.am Semaphor. Das SCT-FeId wird in Verbindung mit den P- und V-Operationen am Semaphor benutzt, um entweder den Zählerstand zu erhöhen oder zu erniedrigen. Eine P-Operation, mit der ein Prozeß bei einem vorgegebenen Semaphor um ein Systemmittel nachsucht, stellt nach seiner Durchführung das SCT-FeId um eins zurück. Umgekehrt erhöht eine V-Operation, welche die Verfügbarkeit eines Systemmittels für das Semaphor kennzeichnet, das SCT-FeId des Semaphor um eins. Obwohl keine Nachrichten in einem Semaphor ohne eine Nachricht verbunden sind, trifft die grundlegende Vergrößerung und Verkleinerung durch V- und P-Operationen auf die SCT-Felder sowohl in Semaphoren mit Nachrichten, als auch solchen ohne Nachricht zu.
Wenn ins Einzelnegehende Information betreffend einen Ereignisauftritt übertragen werden soll, so verwendet man ein Semaphor 1602 mit Nachricht. Wie beim Semaphor ohne Nachricht, so ist auch jedes Nachrichten-Semaphor einem bestimmten Auftritt zugeordnet, beispielsweise einem Sozialversicherungsabzug oder einem Steuerabzug für eine Lohnabrechnung. Somit ist jedes Semaphor vorbestimmt und das Betriebssystem erzeugt die Adressensilbe, welche das bestimmte Semaphor lokalisiert, sobald das betreffende Ereignis auftritt.
Das Hinweisfeld STAG eines Nachrichten-Semaphors ist gebildet durch die Bits 0 bis 3. In Abhängigkeit von der Codierung zeigt das STAG-FeId an, von welchem von zwei Typen das Semaphor ist, nämlich entweder ein Nachrichtenverwaltungs-Semaphor oder ein Nachrichten-Semaphor. Für das Semaphor mit Nachricht zeigt das STAG-FeId die Art der Einreihung der Nachricht in eine Warteschlange an. Ist das STAG-FeId gleich 0001, so sind die Nachrichten nach FIFO-Art in die Warteschlange eingereiht. Hat das
509845/0765
_, 2517296
- JE» -
STAG-FeId den Wert 0010, so sind nur LIFO-Nachrichten am Semaphor in die Warteschlange eingeordnet. Ist das STAG-FeId gleich 0011, so ist sowohl FIFO, als auch LIFO Nachrichteneinordnung zulässig. Das Nachrichtenverwaltungs-Semaphor hat ein STAG-FeId 0101, welches anzeigt,daß die Einordnung der Nachrichten auf Grund der Priorität des Prozesses erfolgt und für jeden Prioritätsgrad die FIFO-Regel gilt. Das Nachrichtenverwaltungs-Semaphor ist somit vom Nachrichten-Semaphor durch die Verwendung von Prioritätsgraden unterschieden, so daß wichtige Nachrichten schneller übertragen werden können.
Im Wort 1602 bezeichnen die Bits 4 bis 15 den Maximalstand SMC des Semaphors und die Bits 16 bis 31 den tatsächlichen Stand SCT und stimmen mit dem Wort 1600 überein. Somit hat eine Nachricht, welche eine andere Datenform hat als das Signal, die gleiche Anwesenheits- oder Abwesenheitsqualität, wie ein Signal in einem Semaphor ohne Nachricht. Folglich wird das SCT-FeId in der gleichen Weise durch Nachrichten im Nachrichten-Semaphor beeinflußt, wie die Signale in einem Semaphor ohne Nachricht. Die Bits 32 bis 47 haben entweder eine Kopf-Hinweisadresse MQHP auf eine Nachrichtenwarteschlange oder eine Kopf-Hinweisadresse PQHP auf eine Prozeßwarteschlange. Ist der SCT-Zählerstand positiv, so wird eine Anzahl von Nachrichten in einer Warteschlange am Semaphor angezeigt. In diesem Fall weist die Kopf-Hinweisadresse auf die erste Nachricht in der Nachrichtenwarteschlange. Die Bits 48 bis 63 enthalten die Schwanz-Hinweisadresse MQTP der Nachrichtenwarteschlange, die auf die letzte Nachricht der Nachrichtenwarteschlange zeigt, falls der SCT-Stand positiv ist/ Ist er negativ, so gibt der Gesamtwert des SCT-Zählerstands die Anzahl der am Semaphor in einer Warteschlange eingereihten Prozesse wieder. In diesem Fall zeigt PQHP auf den Kopf der Prozeßverbindung und die Schwanz-Hinweisadresse der Nachrichtenwarteschlange ist gleich Null, weil offensichtlich keine Nachrichten vorhanden sind. Im Fäll, daß
0 984 5/0765
- i«r-
2517296
der Semaphor-Zählerstand gleich Null ist, sind PQHP, MWHP und MQTP ebenfalls alle Null, weil keine Nachrichten oder Prozesse zu identifizieren sind.
Die Semaphoren in den Figuren 16a und 16b stellen den Signalisierungsmechanismus für die Prozeßsynchronisation dar. Sie würden bei 1506 im SD-Segment untergebracht. Sie verursachen jedoch ein Problem, indem sie Speicherplatz für die Speicherung von Prozessen oder Nachrichten benötigen. Um dieses Speicherverwaltungsproblem zu lösen, sind Verbindungsfreigabe-Semaphoren gemäß Figur 16d und Prozeßverbindungs-Semaphoren gemäß Figur 16c vorgesehen. Jedes dieser Semaphoren steuert die zugängige Anzahl freier Nachrichtenverbindungen oder freier Prozeßverbindungen und wird nachstehend erläutert.
Figur 16c zeigt die Datenstruktur eines Frozeßverbindungs-Semaphors PLS 901. Es verknüpft alle nicht benutzten Prozeßverbindungen, d. h. jene Prozeßverbindungen ohne Prozeßname, Wenn der Zustand eines Prozesses in den Bereitschaftszustand übergeht, so wird die erste nicht benutzte Prozeßverbindung aus dem Prozeßverbindungs-Semaphor genommen. Diese Prozeßverbindung wird dann zusammen mit anderen Feldern mit dem Namen des neu aktivierten Prozesses versehen. Wird umgekehrt ein Prozeß ausgesetzt oder beendet oder in den Ablaufzustand gebracht, so wird der Prozeßname in der Warteschlangenverbindung entfernt und das verbindende Feld derart geändert, daß eine Verbindung zwischen allen nicht benutzten Prozeßverbindungen aufrechterhalten bleibt. Somit erlaubt die Organisation eine Steuerung der Prozeßverbindungs-Warteschlange, ohne Modifizierung irgendeines Verbindungsgliedes im GO-Segment, weil es einfach genug ist, den Inhalt des die nächste Verbindung kennzeichnenden Feldes zu ändern. Die Prozeßverbindungen werden also von Warteschlange zu Warteschlange übertragen. Da alle Prozeßnamen im GO-Segment gespeichert sind, ist das Prozeßverbindungs-Semaphor ein Sammelplatz für die
50984S/07 85
2517296
von neu in das System kommenden Prozessen benötigten Prozeßverbindungen. Außerdem enthält das Prozeßverbindungs-Semaphor eine Kopf-Hinweisadresse PLQP auf die Prozeßverbindungswarteschlange in den Bit-Positionen 48 bis 63, welche die relative Adresse der ersten Prozeßverbindung der Warteschlange in Bezug auf die Basis des GO-Segments darstellen. Jede Prozeßverbindung enthält ein Feld für die nächste Verbindung, welches mit dem Prozeßverbindungs-Semaphor verknüpf 11st.Somit werden beim Einführen und Beenden von Prozessen die Prozeßverbindungen im GO-Segment umgeordnetfaber es braucht nur die erste Prozeßverbindung bekannt sein, weil von dieser aus alle übrigen Prozeßverbindungen lokalisiert werden können.
Das Verbindungsfreigabe-Semaphor FLS gemäß Figur 16d ist analog zum Prozeßverbindungs-Semaphor aufgebaut, indem es alle nicht benutzten freien Nachrichtenverbindungen des Segments verbindet. Jedoch sind die freien Nachrichtenverbindungen nicht in GO-Segment enthalten, sondern in den zuvor beschriebenen SD-Segmenten. Das Verbindungsfreigabe-Semaphor hat eine Datenstruktur von drei Worten Länge und das folgende Format: die Bits O bis 3 sind ein Hinweisfeld STAG, welches die Art des Semaphors angibt. Für ein Verbindungsfreigabe-Semaphor hat dieses Feld den Wert 0000. Die Bits 4 bis 15 müssen Null sein. Die Bits 16 bis 31 sind der Zählerstand FLSCT des Verbindungsfreigabe-Semaphors und dieses Feld gibt die Anzahl der Prozesse aa, welche auf eine freie Nachrichtenverbindung warten, Q/PR/FLS. Dies ist eine negative Zahl, die verkleinert wird, wenn Prozesse mit dem Verbindungsfreigabe-Semaphor verknüpft werden. Ist die FLSCT-Nununer gleich Null, so warten keine Prozesse auf eine freie Nachrichtenverbindung. Die Bits 32 bis 47 sind die Kopf-Hinweisadresse PQHP der Prozeßwarteschlange, während die Bits 48 bis 63 die Hinweisadresse FLQP der Warteschlange für freie Nachrichtenverbindungen darstellen. Die Kopf-Hinweisadresse für die
50.9845/0765
2517296
Prozeßwarteschlange ist oben bereits in Verbindung mit Nachrichten-Semaphoren beschrieben worden, während die Kopf-Hinweisadresse auf eine Warteschlange für freie Nachrichtenverist bindungen eine Hinweisadresse auf die erste Verbindung, welche dem Verbindungsfreigabe-Semaphor zugeordnet ist. Die freien Nachrichtenverbindungen sind in LIFO-Ordnung miteinander verbunden, wobei ihr Feld für die nächste Verbindung hierzu verwendet wird. Die Bits 64 bis 71 müssen Null sein, während die Bits 72 bis 79 der globale Name (G-Name) des Verbindungsfreigabe-Semaphors sind. Die Bits 81 bis 95 sind der logische Kanalzählerstand CCT, welcher die Anzahl der auf eine freie Nachrichtenverbindung wartenden logischen Kanäle wiedergibt. Dies geschieht in ΙΟ-Operationen, wo ein Gerät über seinen logischen Kanal auf eine freie Nachrichtenverbindung wartet, um mit dem gegenwärtig ablaufenden Prozeß in Kommunikation zu treten.
Wird von einem Prozeß eine V-Operation an einem Semaphor mit Nachricht im Sl-Segment des Verbindungsfreigabe-Semaphors FLS durchgeführt, so wird die erste durch die FLQP-Hinweisadresse angezeigte Nachrichtenverbindung für die Speicherung der Nachricht verwendet. Die FLQP-Hinweisadresse wird dann derart geändert, daß sie auf die nächste verfügbare freie Nachrichtenverbindung hinweist. Wird umgekehrt eine P-Operation an einem Semaphor mit einer Nachricht im SD-Segment des Verbindungsfreigabe-Semaphors FLS durchgeführt, so wird die die Information zuvor enthaltende Nachrichtenverbindung freigegeben und kehrt in die mit dem Verbindungsfreigabe-Semaphor verbundene Warteschlange zurück. Nur wenn keine Nachrichtenverbindungen zur Verfügung stehen und eine Anforderung hierfür besteht, wird die PQHP-Hinweisadresse des FLS-Semaphor benutzt, weil diese anzeigt, daß ein Prozeß versucht hat, eine Nachricht zu liefern aber hierzu nicht im Stande war. Somit führt das Verbindungsfreigabe-Semaphor zu einer Lösung der Platzbeschränkungen eines
509845/0765
2517296
SD-Segments durch die Speicherverwaltung, welche alle zur Verfügung stehenden freien Nachrichtenverbindungen im Segment verfolgt.
Figur 16e zeigt das Format eines allgemeinen Semaphor 1605. Es ist ein Zweiwort-Format mit drei Hinweisadressen darin. Die erste ist eine Hinweisadresse 1614 zum nächsten verfügbaren Systemmittelauftritt und stellt die Eigentümerrolle des allgemeinen Semaphors in der (ev-evo) Gruppe dar. Sie ist entweder Null oder hat eine Segmentadresse des ersten verfügbaren Systemmittelauftritts. Eine andere Hinweisadresse 1615 zielt auf den ersten Systenunittelauftritt, d. h. sie zeigt die Eigentümerschaft der rc ro Gruppe aller Systemmittelauftritte, unabhängig
davon, ob sie zugängig sind oder nicht. Eine weitere Hinweisadresse 1616 ist auf die erste Ereignisverarbeitungsanforderung gerichtet, welche einen Prozeß darstellt, der auf den Eintritt eines Ereignisses wartet.
Die Systemmittelauftrittstruktur 1606 hat drei Hinweisadressen 1617 bis 1619. Die eine Hinweisadresse ist auf den nächsten verfügbaren Systemmittelauftritt gerichtet und ist Null, falls der Systemmittelauftritt selbst nicht zugängig ist. Eine zweite Hinweisadresse 1618 zielt auf den nächsten Systemmittelauftritt und die Gesamtgruppe von Systemmittelauftritten, welche durch das Semaphor gesteuert werden. Die dritte Hinweisadresse 1619 ist auf den Eigentümerprozeß gerichtet und ist gleich Null, falls der Systemmittelauftritt gegenwärtig nicht einem Prozeß gehört oder zugeordnet ist. In diesem Fall ist entweder die Hinweisadresse auf den nächsten verfügbaren Systemmittelauftritt oder die Hinweisadresse auf den Eigentümer des Prozesses gleich Null. Sie werden nie zur gleichen Zeit benutzt.
509845/0765
a« - 2517296
Die Steuerstruktur eines Abfang-Semaphors ist in den Figuren 16g und 16h wiedergegeben. Die erste zeigt ein Abfang-Semaphor 1607 mit fünf Hinweisadressen·, welche die im Datenstrukturdiagramm gemäß Figur Id beschriebenen Gruppen aufnehmen und ferner einen· Befehl zur Vorbereitung eines Stapelspeichers und einen Befehl zum Eintritt in eine Prozedur enthalten, die bei Einleitung einer Ereignisverarbeitung am Abfang-Semaphor eingegeben werden und zur Steuerung des Systems bei der Ausführung eines asynchronen Prozeduraufrufs dienen. Die erste Hinweisadresse 1621 zeigt zu dem zuerst zugängigen Betriebsmittelauftritt, die nächste Hinweisadresse 1622 auf den ersten Betriebsmittelauftritt, unabhängig davon, ob er zugängig ist oder nicht, die dritte Hinweisadresse 1623 verweist zum Eigentümerprozeß und ist gleich Null, wenn das Abfang-Semaphor gegenwärtig kein Ereignis für irgendjemanden überwacht, oder enthält die Hinweisadresse zum Prozeß,wlSnein Ereignis überwacht. Nur wenn diese Hinweisadresse einen von Null verschiedenen Wert hat, ist der Stapelspeichervorbereitungsbefehl in dem Befehl zum Eintritt in die Prozedur wirksam. Die vierte Hinweisadresse 1624 zeigt auf den zuerst wartenden Systemmittelauftritt aller Systemmittelauftritte, unabhängig davon, ob sie zugängig sind oder nicht. Die fünfte Hinweisadresse 1625 zielt auf den Eigentümerprozeß (pr— epd2) und ist gleich Null, wenn keine festgestellten Ereignisauftritte vorhanden sind und wenn sich der Eigentümerprozeß nicht im Abfangmodus befindet. Diese Hinweisadresse wird zum Festhalten von Informationen benutztjderart, daß, falls ein Abfangpunkt nicht unmittelbar ausgeführt werden kann, weil sich der Prozeß bereits im Abfangmodus befindet, er nachträglich ausgeführt werden kann. Außerdem ermöglicht sie der Abfangprozedur nachzusehen, ob andere Haltepunkte ausgeführt werden sollen.
Der Abfang-Systemmittelauftritt gemäß Figur 16h enthält vier Hinweisadressen und wird zusammen mit dem Abfang-Semaphor benutzt. Die erste Hinweisadresse 1628 weist auf den als nächsten
5 0 9845/0765
2517296
zugängigen Systemmittelauftritt hin, falls noch weitere bestehen, welche über die Abfangprozedur nicht bekanntgegeben wurden. Die zweite Hinweisadresse 1629 zielt auf den nächsten Systenunittelauftritt in der Gruppe aller durch das Abfang-Semaphor gesteuerten Systemmittelauftritte. Die dritte Hinweisadresse führt zum Eigentümerprozeß, dem gegenwärtig der Systemmittelauftritt zugeordnet ist, und die vierte Hinweisadresse zielt auf die nächste Ereignisverarbeitungsanforderung und hält die Hinweisadresse zum als nächsten wartenden Systemmitte lauf tritt. Warten bedeutet hierbei, daß er als Abfangpunkt bearbeitet werden sollte, aber der Prozeß gegenwärtig im Abfangmodus läuft und folglich der Haltepunkt in der Warteschlange festgehalten werden muß, bis der Prozeß zum Normalmodus zurückkehrt.
Die Figuren 161 bis 16L beziehen sich auf das erweiterte Semaphor, wobei Figur,161 die Datenstruktur des erweiterten Semaphors selbst wiedergibt und drei Hinweisadressen 1634 bis 1636 aufweisen. Die erste Hinweisadresse 1634 im Semaphor ist die Hinweisadresse zum zuerst verfügbaren Systemmittelauftritt, d. h. zu demjenigen Systemmittelauftritt, der zugängig ist; aber noch nicht einem Prozeß oder einer Ereignisverarbeitungsaufforderung zugeordnet wurde. Die zweite Hinweisadresse 1635 führt zum ersten Systemmittelauftritt aller durch das erweiterte Semaphor gesteuerten Systemmittelauftritte. Die Struktur gemäß Figur 16j der Anforderung für die Verarbeitung eines Durchlaß- oder Durchgangsereignisses enthält vier Hinweisadressen 1638 bis 1642. Die erste von diesen ist die Hinweisadresse 1638 auf die nächste Ereignisvariable derart, daß diese eine von vielen Ereignisverarbeitungsanforderungen ist, welche das gleiche erweiterte Semaphor überwachen. Die zweite Hinweisadresse 1639 zeigt zum ersten Prozeß, der auf einen Auftritt wartet und wird zur Weiterverfolgung des auf eine Ereignisverarbeitungsaufforderung wartenden Prozesses verwendet. Die nächste Hinweisadresse 1640 führt zum Eigentümerprozeß und zeigt an, welcher Prozeß
50 9845/0765
2517296
eine Ereignisverarbeitungsanforderung für die Ereignisvariable aufgestellt hat. Die vierte Hinweisadresse 1641 zeigt zum ersten der Systemmittelauftritte, die unter der Ereignisverarbeitungsaufforderung aufgenommen wurden und von denen der Prozeß bisher noch nicht informiert ist. Es ist das erste Glied der Gruppe epd—evo. In der Durchlaßverarbeitungsaufforderung 1610 befindet sich auch ein Maximum-Auftrittszähler, der die Maximalzahl der Auftritte definiert, welche vom System behandelt werden können, ehe die Ereignisverarbeitungsaufforderung selbst inaktiv wird.
Figur 16k ist ähnlich wie Figur 16j, hat aber eine zusätzliche Hinweisadresse 1648 zum Eigentümerprozeß und stellt die Einführung der pr epd2 Gruppe dar. Sie enthält die Hinweisadresse
zu den nächsten Ereignisverarbeitungsaufforderungen, welche warten, weil der Prozeß bereits im Abfangmodus abläuft und somit keinen Haltepunkt innerhalb eines Haltepunkts aufweisen kann. Außerdem hat die Abfangereignis-Verarbeitungsauffforderung 1611 zwei normale Befehle, deren erster ein Befehl zum Vorbereiten eines Stapelspeichers und deren zweiter ein Befehl zum Eintritt in eine Prozedur ist. Diese Befehle werden im Auftrag des Prozesses ausgeführt, welcher Eigentümer der pr epdl und auch der
pr epd2 Gruppen ist, wenn der Haltepunkt wirksam werden kann.
Der erweiterte Semaphor-Mechanismus ergibt sich aus Figur 16L und arbeitet in der gleichen Weise wie zuvor anhand von Figur 16H beschrieben.
Eine Prozeßverbindung 1613 wird mit allen Semaphoren benutzt und verknüpft alle Prozesse, welche auf eine Nachrichtenverbindung warten im Semaphor-Descriptorsegment, welches die Verbindungsfreigabe-Semaphoren enthält. Die Verbindungen liegen im GO-Segment, welches alle Prozeßwarteschlangen aufnimmt. Jede Verbindung 1613 besteht (vergleiche Figur 16M) aus zwei Worten.
509845/0765
2517296
Das erate Feld 1657 1st eine Hinweisadresse auf die nächste Prozeßverbindung oder ist gleich Null, wenn dies die letzte Verbindung in der Warteschlange ist. Das Prioritätsfeld 1659 enthält die Priorität des mit der Verbindung verknüpften Prozesses. Das AB-FeId 1660 ist ein asynchrones Abfangfeld, während das ARN-FeId 1662 das asynchrone Abfangringfeld ist. Das JP-FeId 1613 ist der logische Name des der Verbindung entsprechenden Prozesses, während die relative Segmentadresse 1664 des Semaphore diejenige relative Adresse eines Semaphore S ist, bei dem der Prozeß eine V-Operation auszuführen sucht.
Nach der bisherigen Beschreibung der Systemkonfiguration mit der das Semaphor zusammenarbeitet, folgt eine Analyse des Betriebs und der Funktion der Semaphoren. Zum Erleichtern des Verständnisses zeigt Figur 17 die Adressierung eines Semaphors und die Figuren 17 und 18 zusammen veranschaulichen verschiedene Semaphoren und die Warteschlangen, die mit ihnen verknüpft sein können.
In Figur 17 ist die Entwicklung des Platzes eines Semaphors über den oben anhand in Figur 5 beschriebenen Segmentmechanismus dargestellt. Die Semaphoren werden durch Prozeß-Synchronisier- und Multiplex-Befehle adressiert, d. h. durch P- oder V-Befehle, welche eine 20 Bit-Adressensilbe haben, deren Auflösung die Durchsicht der Struktur der Adressentabellen 503, 504 mit den JP-Nummern des laufenden Prozesses erfordert, um den Prozeß-Steuerblock 400 aufzufinden. Sodann werden die Segmenttabellen STN 1700 und die Segmenttabelleneingangsnummer 1702 zum Aufsuchen der Segmenttabelle benutzt, die einem Indexwert hinzugefügt wird, um schließlich die relative Segmentadresse SRA innerhalb des Semaphor-Segments aufzufinden. Anschließend erfolgt eine Berechnung der absoluten Adresse, welche den Speicherplatz des Semaphor-Descriptors liefert. Für andere Prozesse im System, denen ein Prozeß eine Semaphor-Adresse übertragen möchte und von dem der Prozeß anschließend eine Nachricht
509845/0765
2517296
über das Semaphor erhalten möchte, d. h. für ΙΟ-Prozesse ist die Adresse des Semaphor über die GD-Adresse gegeben, weil diese auf einer systemweiten Basis anwendbar ist, statt einer engeren JP-Prozeßbasis. Somit sind zwei Mittel zur Semaphor-Adressierung vorhanden. Dies ergibt sich, weil Semaphoren und die aus ihnen aufgebauten Strukturen notwendigerweise im gemeinsam benutzten Teil der Adressenbasis verschiedener Prozesse vorhanden sind und folglich durch beide Verfahren zugängig sein müssen.
Es wurde bereits in Verbindung mit Figur 16 erwähnt, daß es zwei Basis-Semaphoren gibt, welche über P- oder V-Befehle adressiert werden, d. h. Semaphoren 1600 ohne Nachricht und Nachrichten-Semaphoren 1602. Zunächst wird das Semaphor ohne Nachricht überprüft und anschließend das Nachrichten-Semaphor. Die Beschreibung trifft auf einen Zustand eine gewisse Zeit nach Ingangsetzung des Systems zu. Die Semaphor-Strukturen haben bereits einen bestimmten Entwicklungsstand erreicht, der in den Figuren 17 und 18 angedeutet ist.
Tritt ein neuer Prozeß in das System ein, d. h. ändert dieser sich vom ausgesetzten Zustand in den Berextschaftszustand, so wird der Name des Prozesses in eine Prozeßverbindung 8O5a-c des GO-Segments 802 eingeschrieben. Diese Prozeßverbindung erhält man von der mit dem Semaphor PLS 901 verbundenen Warteschlange, d. h. der Warteschlange auf freie Prozeßverbindungen. Somit würde die erste Verbindung, welche das Semaphor PLS anwählt, für den neuen Prozeßnamen Verwendung finden und das Semaphor PLS hätte seine Hinweisadresse PLQP geändert, um auf die nächste freie Verbindung in seiner Warteschlange hinzuweisen. Beispielsweise würde das Verschiebungsfeld in der Hinweisadresse PLQP in Figur 18 geändert, so daß es nicht mehr auf 805a, sondern 805b hinweist. Gleichzeitig wird die Verbindung 805a in die Bereitschaftswarteschlange Q/PR/RDY eingefügt, weil der Prozeß angelaufen und vorbereitet ist auf die Steuerung des Betriebsmittels der virtuellen Anlage. Wenn die Prozeßverbindung
509845/0785
2517296
805a in die Bereitschaftswarteschlange eingereiht wird, würde sie vom Zuteiler in Abhängigkeit von ihrer Priorität nach der LIFO-Ordnung eingereiht. Somit kann sie entweder der Kopf oder höchstens die sechste Position in der gegebenen Konfiguration der Bereitschaftswarteschlange sein.
Befindet sich der Prozeß erst einmal in der Bereitschaftswarteschlange, so wartet er bis er Steuerungsbefugnis zum zentralen Verarbeitungs-Subsystem erhält. Sobald dies erreicht ist, wäre er dann in der Lage, seine Prozedursegmente in der Zentraleinheit abzuwickeln einschließlich jeglicher Verbindungssignale über die P- oder V-Befehle. Im Fall der Ausführung eines P-Befehls an einem Semaphor ohne Nachricht, d. h. im Fall, daß ein Prozeß ein Signal von einem anderen Prozeß benötigt,ehe er weitergehen kann, würde der Systemmechanismus die Adressilbe verwenden, um das bestimmte Semaphor 1600 ohne Nachricht zu finden. Bei Lokalisierung dieses Semaphor wird das STAG-FeId überprüft, ob es 0000 ist, und das SCT-FeId wird daraufhin überprüft, ob der Zählerstand größer als Null, kleiner als Null oder gleich Null war. War das SCT-FeId größer als Null, so zeigt dies an, daß der zuletzt ablaufende Prozeß eine V-Operation am bestimmten Semaphor durchgeführt hat. Als Ergebnis zeigt das Semaphor ohne Nachricht an, daß ein bestimmtes mit ihm verbundene Systemmittel für den anfordernden Prozeß zugängig ist. Der Prozeß nimmt dann das angeforderte Systemmittel auf und ermöglicht die nachfolgenden Operationen. Zuerst würde er das SCT-FeId um eins verringern und damit anzeigen, daß er einen P-Befehl ausführt und anschließend würde er seinen Namen in das TEP-FeId eingeben und damit Besitzer des nachrichtenfreien Semaphors werden und anzeigen, daß eine erfolgreiche Operation am Semaphor aufgetreten ist. Nachdem das Semaphor seine Hinweisadresse PQHP geändert hat, läuft der Prozeß in seinem Ablaufzustand weiter.
509845/0765
2517296
Ist das SCT-FeId des nachrichtenfreien Semaphor 1600 kleiner oder gleich Null, so bedeutet dies,daß das dem Semaphor zugeordnete Systemelement nicht verfügbar ist. Der an einem nachrichtenfreien Semaphor einen P-Befehl ausführende Prozess geht in die Warteschlange Q/PR/S über, weil er die P-Befehle mangels zugängiger Systemelemente nicht ausführen kann. Er schert von selbst aus dem Ablaufzustand aus und verbindet sich mit dem nachrichtenfreien Semaphore Dieses Semaphor würde den Prozeß informieren, sobald das gewünschte Systemelement verfügbar wird. Somit geht der Prozeß durch seine eigene Ausführung eines P-Befehls vom Ablaufzustand in den Wartezustand über. Dies ist in Figur 17 bei 1600 dargestellt, wo dieser Fall zweimal aufgetreten ist und zwei Prozesse am nachrichtenfreien Semaphor warten. An der Stelle 1602 sieht man, daß die Kopf-Hinweisadresse PQHP der Prozeßwarteschlange auf den ersten Prozeß 1720 weist, der am Semaphor 1600 aufgebaut ist und dessen Feld für die nächste Verbindung auf den zweiten Prozeß 1722 am Semaphor hinweist. Dieser zweite Prozeß hat ein auf den nächsten Prozeß hinweisendes Feld vom Wert Null, was anzeigt, daß keine weiteren Prozesse am nachrichtenfreien Semaphor 1600 warten. Da sich der Prozeß selbst in die Warteschlange einreiht, verringert er sein SCT-FeId um einen Schritt, gibt aber seinen Namen nicht in das TEP-FeId, weil keine erfolgreiche Operation am Semaphor 1600 aufgetreten ist.
Hat der Prozeß an einem nachrichtenfreien Semaphor einen V-Befehl ausgeführt, d. h. hat er die Benutzung des Betriebsmittels beendet und ein entsprechendes Anzeigesignal an das Semaphor gegeben, so wird das SCT-FeId erneut hinsichtlich des Zustands des Semaphor überprüft. Hatte das Semaphor einen SCT-Zählerstand größer als Null, d. h. sind mehrere Systemmittel verfügbar, oder gleich Null, so wird der Zählerstand um eins erhöht, um anzuzeigen, daß die vom Prozeß benutzten Systemmittel für andere Prozesse zur Verfügung stehen. Der den V-Befehl ausführende Prozeß verbleibt dann im Ablaufzustand.
509845/0765
2517296
Ist jedoch der SCT-Zählerstand wie in Figur 17 gezeigt, kleiner als Null und damit zum Ausdruck gebracht, daß ein Prozeß in der Warteschlange Q/PR/S auf ein Systemmittel wartet, so würde die Aufgabe des Systemmittels über den V-Befehl den ersten mit dem Semaphor verbundenen Prozeß 1720 in die Warteschlange Q/PR/RDY einfügen und außerdem den SCT-Zählerstand um eins erhöhen. Der Zuteiler nimmt ein Signal von Semaphor und führt den Prozeßblock des am Semaphor wartenden Prozesses 1720 in den Bereitschaftszustand über. Er wird dann .über eine Warteschlange Q/PR/RDY eingeführt. Diese Warteschlange verbindet alle Prozesse im Bereitschaftszustand, d. h. die auf die Verfügbarkeit der Zentraleinheit warten. Die Prozesse befinden sich in der Reihenfolge ihrer Priorität in der Warteschlange und in jedem PrioritMtsgrad gilt die Regel FIFO oder LIFO. Die erstgenannte Regel trifft zu, wenn der Prozeß vor der Einreihung in die Warteschlange sich im Wartezustand befand, während die LIFO-Regel angewandt wird, wenn sich der Prozeß vor dem Einreihen in die Warteschlange im Ablaufzustand befunden hat. Der laufende Prozeß im Ablaufzustand würde dann hinsichtlich seiner Priorität im Vergleich zum Prozeß am Kopf der Bereitschaftswarteschlange überprüft. Der Kopfprozeß der Bereitschaftswarteschlange kann der zuvor am Semaphor wartende und in den Bereitschaftszustand überführte Prozeß sein- oder nicht". Ein- Test wird durchgeführt,- ob der laufende Prozeß oder der Prozeß am Kopf der Bereitschaftswarteschlange eine höhere Priorität hat. Derjenige mit der höheren Priorität geht in den Ablaufzustand über. Wird in Figur 17 am Semaphor 1600 eine V-Operation durchgeführt, so würde die auf die Prozeßverbindung 1720 hinweisende Kopf-Hinweisadresse anzeigen, daß der Prozeß derjenige ist, welcher das Signal empfangen soll. Die Prozeßverbindung 1720 wird dann in die Bereitschaftswarteschlange 803 eingereiht und der SCT-Zählerstand des Semaphor 1600 auf minus 1 (-1) erhöht. Außerdem würde· die Hinweisadresse PQHP des Semaphor 1600 anzeigen, daß die Prozeßverbindung 1722 der nächste Prozeß ist, der ein Signal erhält, wenn ein Systemmittel verfügbar wird.
509845/0765
2517296
Nachrichten-Semaphore 1602 sind in Figur 17 bei 1706 und in Figur 18 bei 1806 dargestellt. Wenn ein P-Befehl an einem Nachrichten-Semaphor ausgeführt wird, so wird das SCT-FeId hinsichtlich des Zustands des Semaphors überprüft. Ist der Zählerstand größer als Null, so zeigt dies eine Nachrichtenwarteschlange am Semaphor Q/M/S an. Dies ergibt sich, weil zuvor irgendein Prozeß eine V-Operation am Semaphor durchgeführt und somit eine Nachricht mit dem Semaphor verbunden hat und gleichzeitig seinen Zählerstand von Null auf eine positive Zahl vergrößerte. Da das Semaphor 1706 mit Nachrichten 1708 und 1710 verbunden ist, wird die Nachricht 1708 in das Generalregister des laufenden, den P-Befehl ausführenden Prozeß eingegeben. Zusätzlich zur Übertragung des Nachrichteninhalts gelangt die Nachrichtenverbindung 1708 in die Warteschlange am Verbindungsfreigabe-Semaphor Q/ML/FLS, weil die in der Nachrichtenverbindung 1708 befindliche Information freigegeben wurde. Der Zählerstand des Semaphor 1706 würde um eins erniedrigt auf (+1). Die Kopf-Hinweisadresse der Nachrichteswarteschlange wird geändert und zeigt an, daß die Nachrichtenverbindung 1710 die nächste mit dem Semaphor 1706 verbundene Nachricht ist. Die Schwanz-Hinweisadresse der Nachrichtenwarteschlange ändert sich nicht, weil 1710 die letzte Nachricht in der Nachrichtenverbindung ist. Wird jedoch eine weitere Nachricht zur Warteschlange Q/M/S am Semaphor 1706 hinzugefügt, so wird das SCT-FeId um eins erhöht und die Kopf-Hinweisadresse der Nachrichtenwarteschlange bliebe unverändert, während die Schwanz-Hinweisadresse auf die hinzuzufügende Nachricht gerichtet ist und die Nachrichtenverbindung nach der Regel FIFO in die Warteschlange eingereiht wird. Wird eine LIFO- oder Prioritätseinheihung angezeigt, so gibt die resultierende Warteschlange die geeignete Ordnung wieder.
Wird eine Nachrichtenverbindung zur Warteschlange Q/ML/FLS hinzugeführt, so erfolgt eine Überprüfung am FLS-Semaphor entsprechend dem SD-Segment bei 8O2n. Dieser Test bestimmt, ob ein Prozeß in der Warteschlange Q/PR/FLS wartet, d. h. ob ein Prozeß
509845/0765
2517296
auf eine freie Nachrichtenverbindung wartet. Da eine Nachrichtenverbindung durch den laufenden Prozeß freigegeben ist, kann, falls ein anderer Prozeß auf eine freie Nachrichtenverbindung gewartet hat, die Nachricht, welche dieser andere Prozeß enthielt nun in die freigegebene Nachrichtenverbindung eingegeben werden. In diesem Beispiel wird jedoch gezeigt, daß freie Nachrichtenverbindungen, z. B·. 1712, 1714 und 1716 verfügbar waren und deshalb kein Prozeß auf eine freie Nachrichtenverbindung wartet. Damit wird dieser Schritt nicht ausgeführt.
Ist der SCT-Zählerstand bei der Ausführung eines P-Befehls am Nachrichten-Semaphor kleiner als Null, so zeigt dies an, daß eine Warteschlange Q/PR/S bereits existiert. Folglich wird der die P-Operation ausführende Prozeß ebenfalls am Semaphor warten und sich selbst in die Warteschlange einreihen. In Figur 18 würde beim Nachrichten-Semaphor 1800 der Prozeß eine freie Prozeßverbindung vom GO-Segment 802 erhalten und sich selbst an die Prozeßverbindungen 1802 anschließen, welche mit dem Semaphor 1800 verknüpft sind und damit die von diesem Semaphor aufgebaute Warteschlange Q/PR/S verlängern. Ist der Zählerstand SCT Null wie beim Semaphor 1704 in Figur 17, so baut das Semaphor eine Prozeßwarteschlange Q/PR/S auf, weil die P-Operation den SCT-Zählerstand auf minus eins (-1) verringert und die Hinweisadresse PQHP des Semaphor 1704 ändert, um hierauf hinzuweisen. Abhängig davon, ob Prozeßverbindungen verfügbar sind oder nicht, gibt es Variationen dieser Prozedur, welche jedoch zur Erläuterung der vorliegenden Erfindung nicht beschrieben werden müssen.
Im Fall, daß ein Prozeß an einem Nachrichten-Semaphor eine V-Operation durchführt, trachtet der Prozeß im Ablaufzustand zu bleiben, aber er muß sich selbst von der Nachricht, die er enthält befreien. Diese Nachricht weist der Prozeßname des Prozesse* auf, der sie mit anderen Feldern übersandt hat. Folglich
509845/0765
2517296
können viele Prozesse Informationen über ein einziges Semaphor senden, versehen mit dem Namen des Absenders, vorausgesetzt, sie senden Nachrichten und nicht nur Signale. Diese Nachrichten sind untereinander verschieden und der Speicherraum 1508 des SD-Segments kann für ihre Ablage benutzt werden. Ist bei der Durchführung eines V-Befehls das SCT-FeId wie beim Semaphor 1800 in Figur 18 kleiner als Null, so wartet irgendein Prozeß 1802b auf eine Nachricht, welche übertragen werden soll. Folglich würde die Nachricht des den V-Befehl ausführenden Prozesses in den Prozeß-Steuerblock eingeschrieben, auf dem die Prozeßverbindung 1802 am Semaphor 1800 hinweist, an dem der V-Befehl ausgeführt wurde. Der die Nachricht empfangende Befehl geht dann in die Bereitschaftswarteschlange Q/PR/RDY 803 über und der laufende Prozeß, welcher den V-Befehl ausgeführt hat, bleibt im Ablaufzustand, falls er eine höhere Priorität hat als der Prozeß am Kopf der Bereitschaftswarteschlange. Der Zählerstand des Semaphor 1800 wird um eins auf minus 3 (-3) erhöht und die Hinweisadresse PQHP so geändert, daß sie auf die Prozeßverbindung 1802a zeigt.
Wäre der SCT-Zählerstand größer oder gleich Null wie bei den Nachrichten-Semaphoren 1704 und 1706 in Figur 17, so bedeutet dies, daß kein Prozeß auf Nachrichten wartet. Anders ausgedrückt warten Nachrichten auf Prozesse, mit denen sie verbunden werden sollen. Folglich bildet die vom laufenden Prozeß gelieferte Nachricht, falls sie dem Semaphor 1704 zugeleitet wird, eine Warteschlange Q/M/S oder wenn sie dem Semaphor 1706 zugeleitet wird, ein weiteres Glied in der dort bereits befindlichen Warteschlange Q/M/S. In beiden Fällen stellt der erste Firmware-Test fest, ob eine freie Nachrichtenverbindung von der Warteschlange Q/ML/FLS vorhanden ist. Da in diesem Fall drei freie Nachrichtenverbindungen, nämlich 1712, 1714 und 1716 verfügbar sind, kann der Prozeß seine Nachrichten über die Operation weitergeben. Als Ergebnis nimmt er die erste freie Nachrichtenverbindung 1712 und gibt an diese seine Nachricht ab.
509845/0765
2517296
Diese Verbindung wird dann mit der Warteschlange Q/M/S des adressierten Semaphor verbunden und der die V-Operation ausübende und die Nachricht liefernde Prozeß bleibt im Ablaufzustand. Das adressierte Semaphor würde sein SCT-FeId um einen Schritt erhöhen.
Sind jedoch wie in Figur 18 bei der Warteschlange Q/PR/FLS 1804 keine freien Nachrichtenverbindungen verfügbar, so kann der den V-Befehl ausführende Prozeß keine Nachrichten abgeben. Er muß in den Wartezustand übergehen, bis eine freie Nachrichtenverbindung zur Verfügung steht. In diesem Fall erhält man eine Prozeßverbindung vom GO-Segment 802, die mit dem Verbindungsfreigabe-Semaphor 15O6 bei 1804b verknüpft würde. Mit der Verbindung zum FLS-Semaphor ist angezeigt, daß keine freien Nachrichtenverbindungen verfügbar waren, als der Prozeß seine Nachricht abzusetzen suchte. Wird später eine freie Nachrichtenverbindung zugängig, so kann der Prozeß seine Nachricht absetzen und vom FLS-Semaphor entfernt werden. Die Figuren 17 und 18 müssen jedoch unterschiedlich betrachtet werden, weil das Verbindungsfreigabe-Semaphor mit Prozessen verknüpft ist, weil keine freien Nachrichtenverbindungen verfügbar sind, während in Figur 17 freie Nachrichtenverbindungen vorhanden sind, welche mit dem FLS-Semaphor verknüpft sind. Somit weist in Figur 17 das FLQP-FeId auf die erste verfügbare freie Nachrichtenverbindung, während in Figur 18 keine freien Nachrichtenverbindungen verfügbar sind und nur das PQHP-FeId verwendet wird. Letzteres weist auf den ersten mit dem FLS-Semaphor verknüpften Prozeß hin. .
Beide Figuren 17 und 18 zeigen mehr als ein Semaphor vom Nachrichtentyp. Da jedes Semaphor wartende Prozesse aufweisen kann, können zahlreiche Q/PR/S Warteschlangen vorhanden sein, von denen jede durch eine Warteschlange von Prozeßverbindungen im GO-Segment dargestellt wird. Dies ist graphisch in Figur 18 an
509845/0765
2517296
den Stellen 1802, 1804 und 1808 dargestellt, wo Prozeßverbindungen im GO-Segment mit den Semaphoren verbunden sind. Außerdem können andere SD-Segmente Semaphoren haben, die ebenso in der Lage sind, Prozeßverbindungen im GO-Segment zu verknüpfen.
Es wurde bereits erwähnt, daß ein Semaphor die zweifache Fähigkeit zur Speicherung des früheren Auftritts entweder eines auf ein Ereignis wartenden Prozesses oder stattdessen eines auf ein/Trozeß wartenden Ereignisses haben muß. Diese Konzepte sind durch die Warteschlangen Q/PR/S bzw. Q/M/S gekennzeichnet. Betrachtet man die Beziehung dieser Warteschlangen zum Semaphor, so ergibt sich, daß die Nachrichtenwarteschlange an einem Semaphor und die Prozeßwarteschlange an einem Semaphor sich diametral entgegenstehende Konzepte sind. Die Datenstruktur, d. h. das Semaphor hält entweder das eine oder das andere. Wenn ein Prozeß einen P-Befehl ausgeübt hat und kein Ereignis oder Systemelement zugängig ist, um die im P-Befehl gemachte Anforderung fertigzustellen, so baut das Semaphor eine Prozeßwarteschlange C/PR/S auf. Umgekehrt, wenn ein Ereignis oder ein Systemmittel auftritt und kein Prozeß hierauf wartet, dann baut das Semaphor eine Nachrichtenwarteschlange Q/M/S auf. Jede dieser beiden Warteschlangen wird durch das SCT-FeId im Semaphor angezeigt. Ist der SCT-Zählerstand positiv, so bedeutet dies, daß Nachrichten auf Prozesse warten und somit eine Nachrichtenwarteschlange am Semaphor vorhanden ist. Ist der SCT-Zähierstand des Semaphors negativ, so bedeutet dies, daß Prozesse auf Nachrichten oder Ereignisse warten und eine Prozeßwarte-: schlange am Semaphor besteht. Ist der Zählerstand gleich Null, so bedeutet dies, daß weder Prozesse noch Nachrichten warten und keine Warteschlangen bestehen.
Die Warteschlangen Q/ML/FLS und Q/PR/FLS finden sich üblicherweise einzeln am FLS-Semaphor 1506. Sind Nachrichtenverbindungen vorhanden, die nicht von einem Semaphor im SD-Segment benutzt
509845/0765
2517296
werden, dann hat das Verbindungsfreigabe-Semaphor eine Warteschlange mit freien Nachrichtenverbindungen. Dies wird durch eine Null im FLSCT-Zählerstand des FLS-Semaphor angezeigt und eine Hinweisadresse FLQP, die nicht gleich Null ist. Hat das Verbindungsfreigabe-Semaphor einen negativen FLSCT-Zählerstand, was bedeutet, daß keine freien Nachrichtenverbindungen verfügbar sind, so baut das Semaphor eine Prozeßwarteschlange Q/PR/ FLS auf und seine Hinweisadresse PQHP hat einen von Null verschiedenen Zählerstand.
Angesichts der begrenzten Nachrichtenverbindungen und freien Nachrichtenverbindungen in einem Semaphor-Descriptor-Segment muß irgendeine Vorkehrung getroffen sein, welche verhindert, daß ein Nachrichten-Semaphor alle freien Nachrichtenverbindungen besetzt. Dies erreicht man, daß jedes Nachrichten-Semaphor und jedes nachrichtenfreie Semaphor ein Maximal-Zählstandsfeld hat, wie dies in den Figuren 16a und 16b angegeben ist. Dieses Feld, d. h. die Bits 4 bis 15 begrenzen die Länge der Warteschlange, überschreiten mit dem Semaphor verbundene Nachrichten oder Signale, entsprechend dem Wert des SCT-Feldes, den SMC-Wert, so tritt ein Zustandsausnahmesignal auf. Dies dient nicht nur der Unterstützung der Speicherverwaltung, sondern stellt auch sicher, daß ein Semaphor nicht alle oder eine wesentliche Anzahl im System verfügbarer freier Nachrichtenverbindungen benutzt.
2. Allgemeine Beschreibung von P- und V-Befehlen
Es wurde bereits gezeigt, wie Prozesse in Form von Hardware dargestellt sind (Prozeß-Steuerblock), die Zustände, die sie einnehmen können und der Zuteiler, welcher für die Steuerung des Zustandes und der Verschiebung von Prozessen dient. Außerdem wurde die Prozeß-Synchronisierung einschließlich der Datenstruktur eines Semaphor erläutert. Zusammengehörig mit dem
509845/0765
2517296
Zuteiler und Semaphoren zur Steuerung der Prozeß-Synchronisierung sind Operationen am Semaphor. Zwei Grundoperationen am Semaphor sind erforderlich, wenn Prozesse das Semaphor als Signalisierungsmechanismus verwenden sollen. Die eine Operation, genannt die V-Operation oder der V-Befehl, sendet ein Signal zum Semaphor. Die andere Operation, genannt die P-Operation oder ein P-Befehl nimmt ein Signal vom Semaphor auf. Der V-Befehl kann als Sendeoperation angesehen werden, die durch den ausübenden Prozeß benutzt wird, der einige Daten oder Anforderungen hat und diese zu einem anderen Prozeß oder einer anderen Prozeßgruppe senden möchte. Der V-Befehl erlaubt es dem Prozeß Daten, d.h. Signale oder Nachrichten an eine Zwischenstelle, nämlich das Semaphor zu schicken. Das Semaphor speichert die Daten, bis ein anderer Prozeß bereit ist, diese aufzunehmen. In der Zwischenzeit kann der den V-Befehl ausübende Prozeß weiterarbeiten, da er seine Daten abgeliefert hat. Ein P-Befehl kann als Empfangsoperation angesehen werden, die von einem Prozeß ausgeführt wird, welcher Daten entweder von einem bestimmten Prozeß oder von mehreren Prozessen benötigt. Dieser P-Befehl erlaubt es dem Prozeß,die Daten, d. h. ein Signal oder eine Nachricht, von einem Semaphor zu empfangen. Sind die Daten vorhanden, so fährt der den P-Befehl ausführende Prozeß fort. Sind die Daten jedoch nicht am Semaphor gespeichert, so geht der den P-Befehl ausführende Prozeß in den Wartezustand über. Das Semaphor hält in diesem Fall,anstelle der Daten, den Prozeß fest. Der Prozeß verbleibt im Wartezustand am Semaphor bis ein anderer Prozeß den Grund für den Eintritt des Prozesses in den Wartezustand beseitigt, d. h. Daten für den Prozeß über das gleiche Semaphor liefert. Diese Aktion wird durch-einen V-Befehl erledigt.
Ein Prozeß, welcher Daten von einem anderen Prozeß benötigt, bevor er weiter laufen kann, versucht, die Daten durch Ausführung eines P-Befehls an einem zuvor vereinbarten Semaphor · zu erhalten. Umgekehrt versucht ein Prozeß, der Daten an einen
50 9 845/0765
2517296
anderen Prozeß liefert, ehe er weitergehen kann, Daten durch Ausübung eines V-Befehls am Semaphor abzugeben. Befindet sich der empfangende Prozeß im Wartezustand, so wird der Grund für den Wartezustand aufgehoben. Folglich ermöglicht ein V-Befehl es dem die Nachricht anfordernden Prozeß in den Bereitschaftszustand überzugehen. Die durch den V-Befehl zur Verfügung gestellten Daten werden im Prozeß-Steuerblock des anfordernden Prozesses gespeichert und anschließend überprüft, wenn der Prozeß vom Zuteiler in den Ablaufzustand überführt wird.
Da es zwei verschiedene Arten von Semaphoren, nämlich Nachrichten-Semaphore und nachrichtenfreie Semaphore gibt, bestehen auch zwei Arten von P- und V-Befehlen. Jede Art von P- und V-Befehlen kann durch ein Semaphor gleichen Typs ausgeführt werden. Deshalb muß jeder Befehl durch geeignete Hinweis-Bits einem Semaphor zugeleitet werden, d. h. P- und V-Befehle mit Nachrichten können nur an Semaphore mit Hinweis-Bits gerichtet werden, welche diese als Nachrichten-Semaphore ausweisen. P- und V-Befehle für nachrichtenfreie Semaphore dürfen nur an nachrichtenfreie Semaphore gerichtet werden. Zusätzlich hierzu müssen Nachrichten und nachrichtenfreie P-Befehle auch als P-Prüfbefehle ausgeführt werden. Ein Prüfbefehl ermöglicht es dem laufenden Prozeß weiterzulaufen, selbst wenn die durch den Befehl beabsichtigte Aktion nicht erreicht wurde. Somit gibt es vier P-Befehle. V-Befehle mit Nachrichten können um eine Warteschlangeneinordnung nach der LIFO oder FIFO-Regel ersuchen und können außerdem als V-Testbefehle ausgeführt werden. Damit gibt es vier Arten von V-Nachrichtenbefehlen zuzüglich eines V-Befehls ohne Nachricht, also insgesamt fünf V-Befehle. Die folgenden in den Flußdiagrammen gezeigten Abkürzungen werden zur Beschreibung dieser Befehle benutzt:
SEP ein P-Befehl an einem nachrichtenfreien
Sep.aphor. Dieser Befehl nimmt entweder ein Signal vom Semaphor auf oder läßt den
5693£5/076S
2517296
ablaufenden Prozeß in den Wartezustand übergehen und in die Warteschlange Q/PR/S eintreten.
SEPM Ein P-Befehl an einem Nachrichten-Semaphor.
Der Befehl nimmt entweder eine Nachricht vom Kopf der Q/M/S War te schlange am Semaphor auf oder bewirkt, daß der ausführende Prozeß in den Wartezustand übergeht und in die Warteschlange Q/PR/S eingereiht wird, Wenn eine Nachricht aus der Warteschlange Q/M/S herausgenommen wird, so wird die Nachrichtenverbindung zur Warteschlange Q/ML/FLS zurückgegeben und eine Prüfung des Zählerfeldes im FLS-Semaphor erfolgt. Befindet sich in der Warteschlange ein auf eine freie Nachrichtenverbindung wartender Prozeß , so wird dieser Prozeß in den Bereitschaftszustand überführt und es ihm erlaubt, den V-Befehl am FLS-Semaphor auszuführen.
SEPT Eine P-Testoperation am nachrichtenfreien
Semaphor. Dies ist der gleiche Befehl wie ein SEP, mit Ausnahme, daß ein Fehlschlag des Abrufes eines Signals vom Semaphor den ausführenden Prozeß nicht in den Wartezustand überführt.
SEPTM Eine P-Testoperation an einem Nachrichten-
Semaphor. Diese Operation ist die gleiche wie SEPM mit der Ausnahme, daß bei einem vergeblichen Versuch, eine Nachricht vom Semaphor zu erhalten, diese Operation den ausführenden Prozeß nicht in den Wartezustand überführt.
509845/0765
2517296
SEV Ein V-Befehl am nachrichtenfreien Semaphor.
Der Befehl liefert ein am Semaphor gespeichertes Signal. Hat das Semaphor eine auf das Signal wartende Prozeßwarteschlange Q/PR/ S, so erhält der erste Prozeß in der Warteschlange das Signal und geht vom Bereitschaftszustand in den Wartezustand über«
SEVF bzw. SEVL V-Befehle an einem Nachrichten-Semaphor.
Jeder Befehl liefert eine Nachricht an das Semaphor. Hat das Semaphor eine Warteschlange Q/PR/S wartender Prozesse, so erhält der erste Prozeß in der Warteschlange die Nachricht und geht vom Wartezustand in den Bereitschaftszustand über. Ist keine Warteschlange Q/PR/S vorhanden, so wird die Nachricht in eine Warteschlange Q/M/S eingereiht, und zwar entweder nach der Regel FIFO (SEVFj oder nach der Regel LIFO (SEVL). Ist keine Warteschlange Q/PR/S vorhanden und kann keine Nachrichtenverbindung gefunden werden, in den die Nachricht eingereiht werden kann, so geht der Prozeß in den Wartezustand über und wird in die Warteschlange Q/PR/FLS eingereiht. Der Befehlszähler des den V-Befehl ausübenden Prozesses bleibt auf seinem gegenwärtigen Zählerstand, so daß die Durchführung des V-Befehls erneut versucht wird, sobald sich der Prozeß wieder im Ablaufzustand befindet.
509845/0765
2517296
SEVTF bzw. SEVTL Ein V-Prüfbefehl an Nachrichten-Semaphoren.
Diese Befehle sind die gleichen wie SEVF und SEVL mit Ausnahme, daß bei vergeblicher Suche nach einer freien Nachrichtenverbindung in der Warteschlange des Verbindungsfreigabe-Semaphor der den V-Befehl ausübende Prozeß nicht in den Wartezustand übergeht.
Jeder der oben genannten Befehle versetzt bei seiner Durchführung das Speichersteuerwerk 130 in die Lage, bestimmte Gruppen
Die
von Funktionen auszuführen. Darstellung der verschiedenen Funktionen ergibt sich aus den Flußdiagrammen der Figuren 20 bis 26. Die Ausführung dieser Funktionen ist ähnlich derjenigen, die anhand von Figur 14 bezüglich des Zuteilers beschrieben wurde und benutzt die gleichen Operationskomponenten, die in Figur 13 dargestellt sind. Um die allgmeine übertragung von Informationen klarzustellen, werden nur die Hauptblöcke der Operationseinheiten beschrieben. Um Wiederholungen zu vermeiden, werden die Zwischenfunktionen des Speichersteuerwerks in Verbindung mit den P- und V-Befehlen und der Zentraleinheit weggelassen. Es ist jedoch zu beachten, daß solche Zwischenfunktionen, wie sie zuvor anhand von Figur 14 beschrieben worden sind, üblicherweise vorhanden sind.
Zusätzlich stellt Figur 19 mehr ins einzelne gehende Diagramme eines Teils des Rechenwerks 1315 in der Zentraleinheit CPU 104 von Figur 13 dar. Figur 19a veranschlaulicht die 256 Worte, welche im Zwischenspeicher innerhalb des örtlichen Speichers 1315 gespeichert sind, während Figur 19b einige der Arbeitsbereiche aus Figur 19a herausstellt, die sich besonders auf die Funktion der P- und V-Befehle beziehen. Jede dieser Einzeldarstellungen wird deutlich bei Betrachtung in Verbindung mit den Figuren 20 und 26, die eine Erklärung ihrer Rolle für die Gesamtfunktion der Zentraleinheit geben.
509845/0765
2517296
- TakS -
ASQ
3. Entwicklung eines Semaphor, sowohl für P- als auch V-Befehle.
Figur 20 zeigt die Funktionen der Semaphor-Descriptor-Abrufoperation, die durch jeden der P- und V-Befehle ausgeführt werden, während die Figuren 21 bis 26 die verschiedenen P- und V-Befehle und ihre Funktionen während ihrer Durchführung wiedergeben. In Figur 20 zeigt Block 2000 die Einrichtung einer Semaphor-Descriptor-Abrufroutine, welche durch jeden der zuvor erwähnten P- und V-Befehle eingeleitet wird. Jeder Befehl enthält einen Operationscode in den Bits 0 bis 7, einen Komplementärcode in den Bits 8 bis 11 und eine 20-Bit-Adressilbe in den Bits 12 bis 31. Der Operationscode zeigt dem System die Art der Befehle, d. h. ob P- oder V-Befehl und die Varianten hiervon. Der Komplementärcode zeigt eine spezielle Information über den Befehl, beispielsweise ob die Einreihung in Warteschlangen nach der LIFO- oder der FIFO-Regel erfolgt/ ob es sich um einen Testbefehl handelt usw. Die Adressensilbe identifiziert den Semaphor-^Descriptor. Die Lösung der Adressensilbe erfordert einen Suchvorgang durch die Struktur der Adressiertabellen mit den JP-Nummern des laufenden Prozesses, um den Prozeß-Steuerblock (siehe Figuren 4 und 17), anschließend die Segmenttabellennummer und die Segmenttabelleneingangsstelle auszuwählen, um die Segmenttabelle zu finden und möglicherweise das Indizieren oder indirekte Adressieren zum Auffinden der endgültigen relativen Segmentadresse SRA innerhalb des Segments. Schließlich erfolgt eine Berechnung der absoluten Adresse, welche den Speicherplatz des Semaphors im Speicher angibt. Somit entwickelt sich die Adressensilbe eines P- oder V-Befehls zur Adresse eines Semaphor-Descriptors.
Zusätzlich zum Abrufen und Prüfen des Semaphor-Descriptors ruft die Subroutine 2000 auch das adressierte Semaphor ab und ermöglicht eine Verzweigungsoperation entweder zum P- oder zum V-Befehljder an dem Semaphor ausgeführt werden soll. Vor der Ausübung der SF-Subroutine 2000 sind der Operationscode und der
509845/.1765
2517296
A5A
Komplementärcode analysiert worden derart, daß man weiß, daß ein Semaphor-Descriptor abgerufen werden soll. Im Schritt 2001 wird die Frage gestellt, ob ein Hardware-Gatter entsperrt ist. Das Hardware-Gatter ist Teil der Hardware-Steuermaske 1313 und definiert im gesperrten Zustand einen kritischen Systemzustand. Das Betriebssystem muß in einem kritischen Zustand sein, wenn Firmware-Verarbeitungen von Prozessen und Warteschlangen auftreten, weil jedes Unterbrechungsrisiko einen nicht wiederherstellbaren Verlust von Informationen innerhalb des Systems verursacht. Wenn das Hardware-Gatter den Wert 1 hat und anzeigt, daß Prozeßbewegungen und Warteschlangen sich in der Abwicklung befinden, so dürfen keine weiteren Befehle einschließlich der P- und V-Befehle ausgeführt werden, die mit der Ausführung der genannten Operationen kollidieren könnten. Ist die Antwort auf die Frage 2001 ja, so ist das Hardware-Gatter gesperrt und der Schritt 2002 wird ausgeführt. Dies ist eine Systemüberprüfung, welche im wesentlichen eine andere Operation feststellt, z. B. irgendeinen Ausnahmezustand, der normalerweise den ablaufenden Prozeß unterbrechen und den wesentlichen Ausnahmemechanismus in Gang bringen würde. Diese Systemüberprüfung, d. h. eine modellabhängige Diagnosefolge verhindert, daß das System in irgendeinem als zuträglich definierten Zustand arbeitet. Außerdem leitet jeder Versuch; einen Synchronisier- oder Prozeß-Steuerbefehl auszuführen, der den gegenwärtigen Prozeß nach auswärts speichert, zu einem Systemüberprüfungsschritt 2002. Die überprüfung des Hardware-Gatters im Schritt 2001 und die Systemüberprüfung im Schritt 2002 werden durch Hardware innerhalb der Befehlsabrufeinheit 1318 ausgeführt.
Die Schritte 2003 und 2004 sind Hardware-Prüfschritte, welche ebenfalls von der gleichen Einheit 1318 durchgeführt werden. Im Schritt 2003 wird die Frage geprüft, ob ein SECIN-Befehl ausgeführt wird oder nicht. Dieser SECIN-Befehl muß eine Prozeßringnummer gleich Null haben, um ausgeführt werden zu dürfen. Ist
50 9845/0765
2517296
- la» -
das Ergebnis ja, so prüft der Schritt 2004 die Prozeßringnummer des Befehls. Ist die Ringnummer nicht gleich Null, so erscheint eine Privileg-Befehlsausnahme 2004a. Für P- und V-Operationen ist die Antwort auf Frage 2OO3 nein und als Folge hiervon wird der Schritt 2005 ausgeführt, welcher fragt, ob eine Indizierung der Adressilbe des P- oder V-Befehls erforderlich ist.
An dieser Stelle tritt die normale Entwicklung der Adressensilbe des Befehls auf. Die relative Segmentadresse SRA und eine Segmentnummer SEG sind bestimmt worden. Die im Schritt 2005 gestellte Frage ist darauf gerichtet, ob ein Bit in der Adresssilbe eine Indizierung anzeigt. Ist die Antwort ja, so fügt der Schritt 2006 den Inhalt eines durch die Adressilbe angezeigten Generalregisters der relativen Segmentadresse SRA hinzu, ehe der tatsächliche Speicherabruf auftritt. Dies ergibt den Speicherplatz des ersten Wortes des SD-Segments 1500 in Figur 15. Im Schritt 2007 wird die übertragung des Wortes 1500 vom Hauptspeicher in den Zwischenspeicherplatz WCO in Figur 19b erledigt. Dieses erste Wort enthält das Hinweisfeld und das Ringfeld für die P- und V-Befehle und bestimmt, ob sie ausgeführt werden können oder nicht. Eine Abrufoperation vom Hauptspeicher 102 erfolgt über die Datenverwaltungseinheit DMU 1321 zum Rechenwerk ALU 1317. Umgekehrt läuft eine Hauptspeicherschreiboperation vom Rechenwerk 1317 über die Datenverwaltungseinheit 1321 zum Hauptspeicher 102.
Im Schritt 2008 werden vom Rechenwerk 1317 einige vorläufige Überprüfungen durchgeführt, um festzustellen, ob Zugriff zu einem zulässigen Semaphor-Segment erfolgte. Das GS-Bit im Segment-Descriptor muß gleich 01 sein. Das G bedeutet dabei, daß es sich um ein mit Hilfe eines Gatters durchlaßgesteuertes Segment handelt, während S angibt, daß es ein Semaphor-Segment ist. Somit muß das Semaphor-Segment-Bit gesetzt werden, um Zugriff zum Semaphor-Segment zu ermöglichen. Ferner wird überprüft,
509845/0765
2517296
ob die Segmenttabellennunimer STN größer oder gleich 8 ist, weil Semaphor-Segmente kleine Segmente haben, die dieser Beschränkung unterliegen. Eine dritte Überprüfung im Schritt 2008 fragt, ob die relative Segmentadresse SRA ein Vielfaches von 4 ist, weil die relative Segmentadresse auf einen wortbezogenen Descriptor mit 4 Bytes hinweist. Ist das GS-Bit nicht 01 und die Segmenttabellennunimer größer oder gleich 8, so wird eine einen unzulässigen Segment-Descriptor anzeigende Ausnahme-Subroutine 2008a eingeleitet. Ist die relative Segmentadresse SRA nicht ein Vielfaches von 4, so beginnt im Schritt 2008b eine Subroutine, welche einer unzulässigen Systemobjektadresse zugeordnet ist. Sofern nicht anders erwähnt, werden alle Prüfvorgänge, wie auch diejenigen der Schritte 2001 bis 2004 durch das Rechenwerk 1317 ausgeführt.
Im Schritt 2009 wird das erste Wort des. Semaphor-Segments SD, d. h. das Wort 1500 in Figur 15 überprüft. Dieses Wort wurde von dem soeben überprüften Segment-Descriptor identifiziert. Die Bits 0 und 1 des Anzeigefelds TAG werden dahingehend überprüft, ob sie den Wert 11 haben, die Bits 8 bis 15 im MBZ-FeId müssen alle Null sein und die Bits 16 bis 31 des FLSP-Feldes müssen ein Vielfaches von 8 sein, d. h. die letzten 3 Bits sind Null. Ist diese Datenstruktur nicht vorhanden, so wird in Schritt 2009 das Vorhandensein eines unzulässigen SD-Segments angezeigt. Andernfalls ist die Datenstruktur in Ordnung und der nächste Schritt 2010 läuft an.
Sobald das SD-Segment lokalisiert und festgestellt ist, daß das erste Wort in Ordnung ist, werden als nächstes die Speicherstelle des Semaphor-Descriptors- und der Inhalt im Hauptspeicher überprüft. Im Schritt 2010 wird die im Schritt 2006 entwickelte relative Segmentadresse SRA dahingehend überprüft, ob sie kleiner als die FLS-Hinweisadresse ist, d. h. die Bits 16 bis 31 des Wortes 1500. Dieses Erfordernis ist nötig auf Grund der Struktur des SD-Segments in Figur 15. Die Semaphor-Descriptoren,
509845/0765
2517296
welche über eine relative Verschiebung der relativen Segmentadresse adressiert werden, werden im Block 1502 gebildet. Die FLSP-Hinweisadresse weist auf den Elock 1504 hin, der in der Folge an einer höheren Adresse im Hauptspeicher liegt als der Semaphor-Descriptor im Block 150?. Deshalb muß die relative Segmentadresse SRA, die aus der Adressensilbe des P- oder V-Befehls entwickelt wurde, auf einen der Semaphor-Descriptoren in Block 1502 hinweisen, welcher.auf Grund des Aufbaus kleiner als die relative Adresse FLSP sein muß/ die den Block 1504 anwählt. Somit dient die liinweisadresse FLSP zwei Zwecken; der eine besteht in der Lokalisierung des Verbindungsfreigabe-Semaphor und der andere im Setzen der Obergrenze für den Semaphor-Descriptor 1502. Wenn diese Bedingungen nicht erfüllt sind, wird der Schritt 2010a ausgeführt, der eine Ausnahme-Subroutine darstellt, die anzeigt, daß eine unzulässige Systemobjektadresse entwickelt worden ist. Der Schritt 2010 leitet außerdem die Ringschutzüberprüfungen ein. Es wird überprüft, ob das effektive Adressringfeld EAR kleiner oder gleich dem XR-FeId ist, wobei das XR-FeId das erste Wort 1500 identifiziert und in Abhängigkeit davon, ob ein V-Befehl, ein P-Befehl oder ein SECIN-Befehl ausgeführt wird, entweder VR, PR oder IR ist. Sollte die effektive Adressringnummer EAR, welche die Ringnummer des Segments bildet, größer als das einzelne Ringschutzfeld sein, so wird im Schritt 2010b ein Ausnahmezustand signalisiert.
Im Schritt 2011 wird der Semaphor-Descriptor 1502 aus dem SD-Segment 8O2n des Hauptspeichers abgerufen und dem Zwischenspeicher 1900 im Speicherplatz WCl zugeführt. Schritt 2012 führt eine Anzahl von Prüfvorgängen mit dem Semaphor-Descriptor 1502 durch. Diese Prüfungen sind ähnlich denjenigen im Schritt 2008 bezüglich des Segment-Descriptors. Sie werden hinsichtlich des Anzeigefeldes IAG durchgeführt, dessen Bits 0 und 1 gleich 01 sein müssen, des Ringfeldes, dessen Bits 2 und 3 gleich 00 sein müssen, der STN-Bits 4 bis 7, die größer oder gleich 8 sein
509845/0765
2517296
müssen, und des SRA-Feldes mit den Bits 16 bis 31, die ein Vielfaches von 8 darstellen müssen. Das SRA-FeId des Semaphor-Descriptors 1502 zeigt auf das adressierte tatsächliche Semaphor. Da das Semaphor eine Doppelwortgröße ist, ist es erforderlich, daß es eine Doppelwortbegrenzung hat und folglich für die Adressierung ein Vielfaches von 8 haben muß. Ist irgendeiner dieser Tests erfolglos, so entsteht eine Ausnahme-Subroutine 2012a, die angibt, daß ein unzulässiges Segment-Descriptorformat festgestellt worden ist. Da die Ausnahme-Subroutinen mit einem erfolglosen Test verbunden sind, den das System in Ordnung bingen muß, werden diese Situationen im folgenden nicht weiter erörtert. , -
Liegt nunmehr der ordnungsgemäße Segment-Descriptor vor, so sind die nächsten Aktionen auf die Bestimmung des tatsächlichen Semaphors selbst gerichtet. Im Schritt 2013 wird gefragt, ob sich die Semaphor-Segmentnummer im Assoziativspeicher 1319a des Adressensteuerwerks 1319 befindet. Der Grund für diese Frage liegt darin, daß das Semaphor-Wort vom Hauptspeicher abgerufen wird. Befindet es sich jedoch innerhalb des Assoziativspeichers 1319a, so braucht kein Zugriff zum Hauptspeicher zu erfolgen. Ist die Antwort auf die Frage 2013 nein, so setzt der Schritt 2014 eine Subroutine SDF in Gang, welche den Segment-Descriptor in den Assoziativspeicher lädt. Im Schritt 2015 wird erneut eine überprüfung durchgeführt, ob das GS-Bit des neuen Segments gleich 01 ist. Im üblichen Fall wählt der Semaphor-Descriptor ein Semaphor im eigenen SD-Segment an. Jedoch kann dieser Zustand auch einmal nicht vorliegen und der Semaphor-Descriptor kann auf ein neues SD-Segment hingewiesen haben, so daß ein Test erfolgt, ob die GS-Bits gleich 01 sind.
Im Schritt 2016 wird das Schreiberlaubnis-Bit WP überprüft, um festzustellen, ob es gleich "1" ist und somit das Einschreiben in den Speicher erlaubt ist. Im Schritt 2017 wird das in den Segment-Descriptor eingeschriebene Eit (W-Bit) überprüft, ob
5 0 9 8 4 5/0765
2517296
es gleich "1" ist. Wird diese Frage bejaht, so erfolgt die Ausführung des Schrittes 2020. Ist hingegen die Antwort nein, so ruft Schritt 2018 eine Subroutine WUP auf, welche das W-Bit einschreibt und auf den neuesten Stand bringt. Dies erfolgt, weil eine Schreiboperation im Speicher ausgeführt wird und somit das W-Bit fortgeschrieben werden muß, falls dies noch nicht geschehen ist. Alle diese Operationen werden am Semaphor-Descriptor 1502 ausgeführt.
Es wurde bereits erklärt, daß zwei mögliche Verfahren zur Semaphoradressierung bestehen. Die eine Methode bedient sich der P- und V-Befehle. Das andere Adressierverfahren für Semaphoren ist im Schritt 2019 wiedergegeben und tritt bei Benutzung in den Entwicklungsprozeß, d. h. an diesem Punkt in das Flußdiagramm, ein. Die andere Methode ist eine IO-Geräteadressierung des Semaphors, welche eine absolute GD-Adresse liefert. Unabhängig davon, welches Adressierverfahren angewandt wird, ruft der Schritt 2020 beide Worte des Semaphor ab. Diese würden vom Assoziativspeicher 1319a abgerufen und in die Zwischenspeicherplätze WC 4 und WC5 eingegeben. Aus diesen Plätzen werden vom Rechenwerk 1317 verschiedene Tests hinsichtlich des Semaphors durchgeführt. Vor der Ausführung dieser Tests prüft Schritt 2021 den Operationscode und den Komplementärcode des Befehls, um festzustellen, ob es sich um einen SECIN-Befehl, d. h. einen Semaphor-Zähleinleitungsbefehl handelt. Ist dies der Fall, so wird eine Verzweigungsoperation zu einer den SECIN-Befehl vorbereitenden Subroutine ausgeführt. Ist dies hingegen nicht der Fall, d. h. handelt es sich um eine P- oder V-Operation, so prüft der Schritt 2023 das ETAG-FeId des Semaphor. Dieses Feld ist in Figur 16 wiedergegeben, wo die Operation mit verschiedenen Semaphoren durch P- und V-Befehle dargestellt ist.
509845/0765
2517296
Im Schritt 202 4 wird das SCT-FeId im Speicherplatz WC4 des Semaphor um 1 erhöht und in den Speicherplatz WC7 gebracht. Dies ist ein Vorbereitungsschritt, der sich aus der Tatsache ergibt, daß die Durchführung einer V-Operation für den Betrieb des Systems kritischer ist. Durch den Fortschaltschritt in 2024 wird die für eine V-Operation erforderliche Zeitübereinstimmung unterstützt. Ist der Vorbereitungsschritt falsch, so kann die sich mit dem P-Befehl befassende Subroutine diesen Zustand korrigieren. Im Schritt 2025 wird das SMC-FeId in das Rechenwerk 1317 gebracht, in der Annahme, daß eine V-Operation ausgeführt wird und hierfür das SCT-FeId mit dem SMC-FeId zu vergleichen ist. Zusätzlich wird ein Flip-Flop, genannt PMO in dem Rechenwerk 1317a gesetzt. Dieser Flip-Flop zeigt an, daß weder eine P-Operation noch das SCT-FeId gleich Null ist. Falls dieser Zustand nicht vorhanden ist, wird er später geändert.
An dieser Stelle sind die Funktionen für das Vorbereiten des P- oder V-Befehls erfüllt. Im Schritt 2026 wird der Befehl in der Befehlsabrufeinheit 1318 geprüft, um festzustellen, ob sein Operationscode und sein Komplementärcode eine V-Operation anzeigen. Wird diese Frage bejaht, so erfolgt eine Abzweigung zu einer V-Befehlsfolge 2027. Wird die Frage verneint, so führt eine Verzweigungsoperation zu der P-Befehlsfolge 2028.
Die Subroutine 2000 in Figur 20 hat den Segment-Descriptor, das erste Wort 1500 des Semaphor-Descriptor-Segments 8O2n, den Semaphor-Descriptor 1502 und das tatsächliche Semaphor 1506,bei dem die V- oder P-Operation auszuüben ist, abgerufen und überprüft. Demzufolge sind alle, Vorbereitungen für die ordnungsgemäße Ausführung eines dieser Eefehle erledigt und die Firmware zeigt an, daß der Befehl ordnungsgemäß ausgeführt werden kann.
509845/0788
2517296 45$
4. P-Eefehle
Nach Ausführung des Schrittes 2028 in Figur 20 folgt die Gruppe von Funktionen gemäß Figur 21. Diese Figur zeigt die allgemeinen Funktionen, welche zunächst bei einem P-Befehl ausgeführt werden und dann die Funktionen, welche sich aus einem P-Befehl an einem nachrichtenfreien Semaphor ergeben. Da die Antwort auf ■ die Frage in Schritt 2026 nein war, wird im Schritt 2101 der neue Semaphor-Zählerstand NSCT gleich dem alten Semaphor-Zählerstand minus 1 gesetzt. Dies ergibt sich, weil eine P-Operation Daten anfordert und der Semaphor-Zählerstand. anzeigen soll, daß eine Dateneinheit weniger am Semaphor vorhanden ist. Zusätzlich reversiert dieser Schritt den Vorbereitungsschritt 2024, indem das SCT-FeId um 1 erhöht worden war. Somit ergibt sich wieder das alte SCT-FeId, das im Speicherplatz WC4 abgelegt wirdfund es wird nicht das erhöhte, im Zwischenspeicher am Speicherplatz WC7 befindliche SCT-FeId entnommen. Dieses Feld wird dann um einen Schritt erniedrigt und gibt den neuen Semaphor-Zählerstand NSCT, der in den Speicherplatz WC7 des Zwischenspeichers eingegeben wird.
A. P-Befehle an nachrichtenfreien Semaphoren.
Im Schritt 2102 prüft man die Frage, ob dies eine P-Operation oder ein nachrichtenfreies Semaphor ist.. Dies ergibt sich, weil alle P-Befehle zuerst durch eine Subroutine 2028 analysiert werden. Im Schritt 2102 wird der Operationscode und der Komplementärcode jedes dieser Befehle erneut in der Eefehlsabrufeinheit 1318 überprüft, um festzustellen, ob eine Verzweigung nach Figur 22 und eine PM-Subroutine 2103 erfolgen sollte. Diese Verzweigung geschieht, wenn es sich um einen Befehl an einem Semaphor mit Nachrichten handelt. Zeigt der Test einen Befehl an einem nachrichtenfreien Semaphor an, dann wird der verbleibende Teil der PNM-Subroutine abgewickelt.
509845/0765
2517296
Nimmt man an, daß die Antwort auf die Frage 2102 nein lautet, so sind die durch diesen P-Befehl angeforderten Daten ein Signal, welches beispielsweise anzeigen kann, daß ein Systemmittel, etwa ein Magnetbandgerät oder ein Plattenspeicher, verfügbar ist. Schritt 2104 prüft das SCT-FeId des nachrichtenfreien Semaphor und fragt, ob das SCT-FeId einen Wert gleich oder kleiner Null hat. Wird diese Frage verneint, d. h. ist der Semaphor-Zählerstand größer als Null, wird damit angezeigt, daß für den den P-Befehl ausübenden Prozeß ein Systemmittel verfügbar ist, so beschreiben die Schritte 2105 bis 2114 die erfolgreiche Ausführung eines P-Befehls an einem Semaphor ohne Nachrichten. Schritt 2105 prüft das PQHP-FeId des nachrichtenfreien Semaphor, d. h. die Bits 32 bis 47 des Semaphors 1600, um festzustellen, daß es gleich Null ist. Dieser Zustand muß vorhanden sein, weil keine Prozesse mit dem Semaphor verknüpft sind. Ist dieser Zustand nicht gegeben, so erscheint ein Ausnahmesignal, welches einen unzulässigen Semaphor-Zustand 2105a anzeigt und das Speichersteuerwerk 130 bearbeitet diesen Ausnahmezustand.
Schritt 2106 fragt, ob es sich um einen Test-P-Befehl handelt. Wie bereits erläutert, ermöglicht ein Testbefehl es dem laufenden Prozeß,immer im Ablaufzustand zu bleiben. Da unter den jetzt bestehenden Bedingungen ein anderer als ein Prüfbefehl erfolgreich ausgeführt werden kann, weil das gewünschte Systemmittel am Semaphor zur Verfügung steht, so setzt der Prüfbefehl einen Zustandscode und wirkt dann als nicht-Prüfbefehl, um das Systemmittel zu empfangen. Dies ist in Schritt 2107 dargestellt, wo das SCT-FeId auf den Wert "1" geprüft wird. Ist dieser Zustand gegeben, dann ermöglicht Schritt 2108 die Übertragung des Zustandscodes Null an das Zustandsregister 1311. Ist das SCT-FeId nicht gleich 1, so bedeutet dies, daß es größer als 1 ist, weil im Schritt 2104 bestimmt wurde, daß das SCT-FeId größer als Null ist^ In diesem Fall wird Schritt 2109 ausgeführt, worin ein Zustandscode im Zustandsregister 1311 auf 2 gesetzt wird und angibt, daß mehr als ein Signal verfügbar ist.
509845/0 76 5
2517296
In beiden Fällen, d. h. unabhängig davon, ob es sich um einen Test-P-Befehl an einem nachrichtenfreien Semaphor oder lediglich um einen P-Befehl an einem Semaphor ohne Nachricht handelt, wird der Schritt 2110 durchgeführt. Da der SCT-Zählerstand des P-Befehls positiv ist, weiß man daß der P-Befehl erfolgreich am Semaphor ausgeführt werden kann. Somit versieht dieser Schritt die Zwischenspeicherregister WC4 und WC5 mit der Information, die schließlich in den Hauptspeicher einzugeben ist. Im Schritt 2110 hat das TEP-FeId, d. h. die Bits 48 bis 63 im Zwischenspeicherplatz WC5fden JP-Namen des Prozesses und führen den eingeschriebenen P-Befehl durch. Dies zeigt an, daß in Bezug auf das dem Semaphor zugeordnete Systemmittel, der dieses Systemmittel benutzende Prozeß einer mit dem JP-Namen im TEP-FeId ist. Gleichzeitig wird das im Schritt 2101 entwickelte NSCT-FeId aus dem Speicherplatz WC7 in den Zwischenspeicherplatz WC4 als SCT eingeschrieben* Somit werden beide Felder auf den neuesten Stand gebracht, woraus ersichtlich ist, daß eine erfolgreiche P-Operation vonstatten gegangen ist.
Im Schritt 2111 wird das Hardware-Gatter verriegelt und zeigt an, daß eine für das System kritische Operation mit einer unteilbaren Aktion auftritt. Im Schritt 2112 werden die einen erfolgreichen P-Befehl anzeigenden und in die Zwischenspeicherplätze WC4 und WC5 eingeschriebenen und auf den neuesten Stand gebrachten Felder des Semaphor über die Datenverwaltungseinheit 1321 in das SD-Segment im Hauptspeicher 102 übertragen. Diese Felder ersetzen die vorherigen Felder des Semaphor. Im Schritt 2113 wird das Hardware-Gatter entriegelt und zeigt an, daß der kritische Zustand vorüber ist und der Befehlszähler 1312 wird fortgeschaltet. Somit ist der nächste Befehl des ablaufenden Prozesses CJP ausgeführt.
War das SCT-FeId des nachrichtenfreien Semaphor im Schritt 2104 gleich oder kleiner als Null, so tritt ein Verzweigungsschritt 2115 auf. In diesem Zustand hat das durch den P-Befehl des
509845/0765
2517296
abrollenden Prozesses adressierte Semaphor kein Systemmittel festgehalten. Folglich ist ein P-Befehl,der ein Systemmittel anfordert, erfolglos. In Abhängigkeit vom P-Befehl wird die Durchführung des Prozesses entweder in den Wartezustand übertragen, d. h. er muß warten, bis das Semaphor ein Systemmittel empfängt oder er kann fortfahren, falls es sich um einen Prüf-P-Befehl handelt.
Im Schritt 2115 wird gefragt, ob das SCT-FeId gleich Null ist. Ist dies der Fall, so bedeutet dies, daß keine. Nachrichten oder Prozesse am nachrichtenfreien Semaphor warten und folglich prüft der Schritt 2117, ob die Kopf-Hinweisadresse der Prozeßwarteschlange gleich Null ist. Ist der SCT-Zählerstand ungleich Null, so bedeutet dies, daß sie kleiner als Null ist und Prozesse mit dem nachrichtenfreien Semaphor verbunden sind. In diesem Fall prüft Schritt 2116, ob die Kinweisadresse PQKP ungleich Null und ein Vielfaches von 8 ist. Sie muß ungleich Null sein, weil sie die erste mit dem Semaphor verknüpfte Prozeßverbindung angibt. Da die Prozeßverbindungen den Umfang von 8 Bytes haben, muß die Hinweisadresse POHP ein Vielfaches von 8 sein und auf das erste Byte der Prozeßverbindung hinweisen, welche die Information über den am Semaphor wartenden Frozeß hält.
Sind diese beiden Überprüfungen erfolgreich, so steht fest, daß das Semaphor geeignet ist. Schritt 2118 fragt, ob es sich um einen Prüf-P-Befehl handelt, der ausgeführt werden soll. Trifft dies zu, so wird gemäß Schritt 2119 ein Zustandscode "1" gesetzt. Dieser Zustandscode gibt an, daß bei Ausführung des P-Befehls der durchführende Prozeß in den Wartezustand übergegangen wäre. Somit erhält das Zustandsregister 1311 den Zustandscode "1". Zusätzlich wird Schritt 2120 ausgeführt, um den JP-Namen des letzten Prozesses zu bestimmen, der eine erfolgreiche P-Operation an diesem nachrichtenfreien Semaphor durchgeführt hat. Da in diesem Fall keine erfolgreiche P-Operation erfolgt ist, fügt der ausführende Prozeß seinen JP-Namen nicht in das TEP-FeId des
509845/0 765
2517296
Semaphor 1600 ein. Jedoch ist iir. Semaphor der Name des letzten erfolgreich eine P-Operation ausführenden Prozesses gespeichert, weil dieser Prozeß das vom laufenden Prozeß angeforderte Systemmittel hält. Der JP-Name im TEP-FeId des Semaphor wird dann in das Generalregister 0 (FRO) des laufenden Prozesses eingeschrieben. Dies ist im Schritt 2120 dargestellt/ wo der JP-Name in die letzten 16 Bits des GRO-Registers des ablaufenden Prozesses eingegeben wird. Die ersten 16 Bits sind Nullen. Hat der den P-Prüfbefehl ausführende Prozeß eine höhere Priorität als der Prozeß, welcher das Betriebsmittel hält und dessen JP-Name sich im TEP-FeId befindet, so kann der laufende Prozeß entscheiden, den das Betriebsmittel haltenden Prozeß auszusetzen. In jedem Fall wird der Befehlszähler 1312 fortgeschaltet und der nächste Befehl des laufenden Prozesses, der den P-Testbefehl ausgeführt hat, läuft im Schritt 2114 ab.
Wäre dies kein Prüfbefehl gewesen, d. h. hätte im Schritt 2118 der Operationscode angezeigt, daß dies ein P-Befehl an einem nachrichtenfreien Semaphor ist, dann wäre eine Subroutine E des VP 2121 abgelaufen, die den laufenden Prozeß in den Wartezustand überführt hätte. Damit ist der laufende Prozeß nicht länger im Ablaufzustand und eine Prozeßverbindung mit seinem JP-Namen wird mit dem Semaphor verbunden, das durch den P-Befehl adressiert wurde.
Vor der Betrachtung des Schrittes 2121 der den laufenden Prozeß in den Wartezustand überführt, muß die Abzweigungs-Subroutine PM 2103 aus der Frage im Schritt 2102 erläutert werden, weil diese die Subroutine für eine P-Operation an einem Semaphor mit Nachrichten abruft. Diese Subroutine hat ebenfalls eine Abzweigung nach E des VP 2121, wenn der ausführende Prozeß eines P-Befehls an einem Nachrichten-Semaphor in den Wartezustand gesetzt werden soll. Zu dieser Zeit wird auch die Abzweigung E der VP-Subroutine 2121 erklärt.
509845/0765
2517296
B. P-Befehl an einem Semaphor mit Nachrichten
Zeigt im Schritt 2102 der Operationscode an, daß der P-Befehl an einem Nachrichten-Semaphor stattfand, so erfolgt eine Verzweigungsoperation nach Figur 22a und Schritt 2200. In Figur 20 wurde das Semaphor bereits abgerufen und befindet sich in den Speicherplätzen WC4 und WC5 des Zwischenspeichers. Im Schritt 2200 wird gefragt, ob das SCT-FeId, d. h. die Bits 16 bis 31 kleiner als Null, mit anderen Worten, ob Prozesse mit dem Nachrichten-Semaphor verbunden sind (vergleiche Schritt 1602 in Figur 16). Stellt sich bei der Überprüfung des SCT-Feldes durch das Rechenwerk 1317 heraus, daß dieses kleiner als Null ist, so prüft Schritt 2201 die Hinweisadressen PQHP- und MQTP-Felder im Nachrichten-Semaphor, um festzustellen, ob sie in Ordnung sind. Die Schwanz-Hinweisadresse MQTP der Nachrichtenwarteschlange, d. h. die Bits 48 bis 63 müssen gleich Null sein, weil Prozesse und keine Nachrichten mit diesem Nachrichten-Semaphor verknüpft sind. Die Bits 32 bis 47 stellen die Kopf-Hinweisadresse der Prozeßwarteschlange dar und kennzeichnen den ersten Prozeß, der mit diesem Semaphor verbunden ist. Diese 16 Bits werden überprüft dahingehend, ob sie ungleich Null und ein Vielfaches von 8 sind. Der erstgenannte Test bestimmt, ob eine Prozeßverbindung, bestehend aus zwei Worten mit dem Semaphor verbunden ist und der letztgenannte Test zeigt an, daß die Hinweisadresse auf das erste Byte der beiden Worte in der Prozeßverbindung hinweist. Somit ist durch diese beiden Überprüfungen im Schritt 2201 festgestellt worden, daß eine Warteschlange Q/PR/S von Prozessen am Semaphor ansteht und daß die Angabe, wonach das SCT-FeId kleiner als Null ist, zu Recht besteht.
Im Schritt 2202 wird überprüft, ob es sich um einen Prüf-P-Befehl an einem Nachrichten-Semaphor handelt. Da ein Prüfbefehl den ausübenden Prozeß nicht in den Wartezustand versetzen kann,
509845/07B5
2517296 - iss -
ergibt sich die gleiche Situation wie beim Schritt 2118 in Figur 21. Somit wird das Zustandsregister 1311 auf einen Zustandscode von "1" gesetzt und zeigt an, daß der P-Befehl an einem Semaphor mit Nachricht nicht ausgeführt wird und der Befehlszähler des ausübenden Prozesses wird bei 2204 um 1 erhöht, wodurch der nächste Befehl des laufenden Prozesses ausgeführt werden kann.
Handelt es sich beim P-Befehl an einem Nachrichten-Semaphor nicht um einen Prüfbefehl, so würde der diesen P-Befehl einleitende ausführende Prozeß eine Nachricht benötigen. Da keine verfügbar ist, muß der gegenwärtig ablaufende Prozeß auf die Nachricht warten. Eine Subroutine E des VP 2121 versetzt den ausführenden Prozeß in den Wartezustand, wie dies bereits in Figur 20 gezeigt ist.
C. Überführung eines ausübenden Prozesses in den Wartezustand
In denjenigen Fällen, wo der laufende Prozeß seine Arbeit nicht weiterführen kann und in den Wartezustand überführt werden muß, wird das E-FeId der VP-Subroutine abgerufen. Somit werden zwei Situationen, welche nachrichtenfreie Semaphore 1600 und Nachrichten'-Semaphore 1602 betreffen, in der gleichen Weise behandelt, indem eine Warteschlange Q/PR/S gebildet wird. Später bei der Behandlung der V-Befehle wird gezeigt werden, daß das E-FeId der VP-Subroutine auch abgerufen wird, wenn keine freien Nachrichtenverbindungen verfügbar sind. In diesem Fall kann der Prozeß seine Nachricht nicht abgeben und wird folglich in eine Warteschlange Q/PR/FLS am FLS-Semaphor 901 eingereiht, welche auf eine freie Nachrichtenverbindung wartet. All diese Zustände führen dazu, daß die Firmware gemäß Figur 23 die gleichen Funktionen ausführt.
509845/0765
2517296 AUS
Da der ausübende, in den Wartezustand zu überführende Prozeß sich gegenwärtig im Ablaufzustand befindet, muß eine Prozeßverbindung vom PLS-Semaphor 901 erhalten werden, wie dies die Figuren 16c und 18 zeigen. In Figur 18 weist das PLS-Semaphor 901 im GO-Segment 802 auf die Prozeßverbindung 805a hin, die ihrerseits die verbleibenden Prozeßverbindungen der Reihe nach anwählt. Alle Prozeßverbindungen befinden sich in einer Warteschlange am Prozeßverbindungs-Semaphor 901. Im Schritt 2301 der Figur 23a erhält die APLS-Subroutine Zugriff zur Prozeßverbindung 805a am PLS-Semaphor 901. Diese APLS-Subroutine ist in Figur 23c dargestellt.
Der erste Schritt dieser Subroutine besteht darin, Zugriff zu einer FGO-Subroutine 2321 auszuführen. Diese Subroutine gemäß Figur 23d entwickelt die Adresse des PLS-Semaphor 901/ die eine Konstante ist, weil dieses Semaphor immer das erste Wort im GO-Segment darstellt. Der erste Schritt der FGO-Subroutine 2330 zeigt an, daß die Firmware eine Adresse erzeugt, d. h. eine Segmentnummer, welche das PLS-Semaphor im GO-Segment-Descriptor bezeichnet. Dies wird durch Auswahl eines Registers im Zwischenspeicherplatz WC9 und Erzeugung einer 12 Bit-Zahl wie folgt bewerkstelligt. Die ersten 4 Bits werden auf Olli gesetzt, womit angezeigt ist, daß dies eine G-Nummer ist. Die letzten 8 Bits werden auf Null gesetzt und lassen erkennen, daß dies das Null-Segment der G-Nummer darstellt. Diese Segmentnummer beschreibt den Speicherplatz des PLS-Semaphor im GO-Segment. Im Schritt 2331 wird diese Segmentnummer dann in den Assoziativspeicher 1319a überführt, um dort festzustellen, ob dieser den Segment-Descriptor der Segmentnummer und damit die Basisadresse des Segments aufweist. Beim Assoziativspeicher handelt es sich um einen Speicher mit schnellem Zugriff, der es dem System erspart, die Information im Hauptspeicher abrufen zu müssen. Im Schritt 2332 wird gefragt, ob der Assoziativspeicher 1319a die im Schritt 2330 aufgebaute Segmentnummer
509845/0765
2517296
enthält oder nicht. Ist diese Adresse im Assoziativspeicher enthalten, so fragt Schritt 2333, ob das eingeschriebene Bit im Segment-Descriptor gesetzt ist. Diese Überprüfung erfolgt, weil der laufende Prozeß in eine Warteschlange am Semaphor eingereiht werden soll und folglich das Einschreiben bestimmter Informationen, z. B. der Hinweisadresse auf die nächste Verbindung benötigt. Ist das Geschrieben-Bit noch nicht gesetzt, so erfolgt im Schritt 2334 eine Verzweigung zur SGW-Subroutine, wodurch das W-Bit sowohl in den Assoziativspeicher 1319a, als auch in den Hauptspeicher eingeschrieben wird. War das W-Bit jedoch bereits gesetzt, so besteht kein Anlaß zum Schreiben und folglich wird der Schritt 2335 ausgeführt.
Enthielt der Assoziativspeicher die im Schritt 2330 erzeugte Segmentnummer nicht, d. h. wurde im Schritt 2332 kein Verzweigungsvorgang eingeleitet, so wird die Subroutine FGSG 2336 ausgeführt, welche die Segmentnummer in den Assoziativspeicher eingibt, so daß beim nächstenmal, wenn die im Schritt 233O erzeugte Segmentnummer im Assoziativspeicher 1319a angewählt wird, ein Treffer gegeben ist, d. h. sich die Segmentnummer im Speicher befindet. Diese Subroutine setzt außerdem die U- und W-Bits der Segmentnummer im Assouiativspeicher und im Hauptspeicher. In allen Fällen wird der Schritt 2335 ausgeführt, der für spätere Benutzung die Segmentbasis und die Segmentgrenzen eingibt. Dieser Schritt überträgt im wesentlichen die Segmentbasisadresse und die Segmentgrenze des jetzt im Assoziativspeicher befindlichen Segment-Descriptors in das Arbeitsregister im Adressensteuerwerk 1319. Die Segmentgrenzen bezeichnen die Endadresse des Segments im Speicher. Die Ausnahmeroutine, welche anzeigt, daß man sich außerhalb des Segments befindet, wird ausgeführt, sobald die abzurufende Adresse größer als die Segmentgrenze ist.
509845/0765
2517296
Bei Abschluß des Schrittes 2335 erfolgt eine Rückkehr zur APLS-Subroutine in Figur 23c. Als nächster wird Schritt 2323 ausgeführt. Schritt 2322 zeigt eine Variante der APLS-Subroutine, die das Aufrufen der FGO-Subroutine nicht erfordert. Diese Situation ergibt sich, wenn vorher ein Zugriff zur Adresse des PLS-Semaphor erfolgt ist und somit die Benutzung der FGO-Subroutine redundant wäre. Mit jeder von beiden APLS-Subroutinen überträgt der Schritt 2323 das PLS-Semaphor zum Steuerwerk 1317, wo verschiedene Überprüfungen durchgeführt werden. Im Schritt 2324 werden die beiden Worte des PLS-Semaphor 901 gemäß Figur 16c geprüft. Das STAG-FeId mit den Bits 0 bis 3 wird dahingehend geprüft, ob sie alle "0" sind. Das SMC-FeId mit den Bits 4 bis 15 wird überprüft, um sicherzustellen, daß sie ebenfalls alle Null sind. Das MBZ-FeId mit den Bits 16 bis 31 wird auch geprüft, ob alle Bits 11O" sind. Schließlich wird das PLQP-FeId, welches auf die nächste Prozeßverbindung hinweist, überprüft, ob es erstens ein Vielfaches von 8 ist, weil alle Prozeßverbindungen die Länge von zwei Worten haben und zweitens, ob es nicht gleich Null ist, weil die PLQP-Hinweisadresse auf das erste Byte der Prozeßverbindung zeigt.
Sind diese Tests erfolgreich, so überprüft Schritt 2325 den Zugriff zur ersten Prozeßverbindung am Prozeßverbindungs-Semaphor, in dem ein Speicherabruf der 8 Bytes der Verbindung erfolgt. Ist die Verbindung nicht in einem zulässigen Speicher, so erscheint ein Ausnahmesignal auf Grund dieses Speicherabrufs. Ist der Test hingegen erfolgreich, so wird die absolute Adresse der Verbindung im Zwischenspeicherplatz W30 abgelegt. War die PLQP-Hinweisadresse gleich Null, so bedeutet dies, daß keine Prozeßverbindungen gegenwärtig zur Verfügung stehen. Alle im System vorhandenen Prozeßverbindungen sind mit Prozessen entweder im Warte- oder im Bereitschaftszustand verknüpft,und es sind keine weiteren Prozeßverbindungen für neu eintretende Prozesse verfügbar. In diesem Fall entsteht ein Ausnahmesignal 2325a,
'5 09845/0765
2517296
welches anzeigt, daß keine Prozeßverbindungen vorhanden sind. Falls diese sehr seltene Situation eintritt, können einige der bestehenden Prozesse ausgesetzt werden, damit ihre Prozeßverbindungen für das System frei werden. Wenn jedoch alle diese Überprüfungen erfolgreich sind, so wird die APLS-Subroutine abgeschlossen und man gelangt zurück zum Schritt 2302 in Figur 23a. In diesem Schritt wird gefragt, ob es sich um einen P-v Befehl handelt. Wird die Frage verneint, d. h. handelt es sich um einen V-Befehl, so wird die Subroutine MTT 2303 ausgeführt, welche den Nachrichtenkopf, gemäß Figur 15 schreibt. Im vorliegenden Fall ist jedoch die Antwort ja und die Subroutine PRIQ wird als nächster Schritt 2304 ausgeführt. Dieser bestimmt die Lage der Prozeßverbindung, welche mit dem gegenwärtig ausübenden Prozeß verbunden ist und der in den Wartezustand übergeleitet werden soll. Diese Einordnung erfolgt auf Prioritätsbasis in die Warteschlange am Semaphor. Die Prioritätseinordnung ist für alle Prozesse erforderlich, welche in die Warteschlange eingeordnet sind oder für Nachrichten an einem Semaphor, welches ein STAG-FeId aufweist, das eine prioritätsgemäße Einordnung in die Warteschlange anzeigt. Die PRIQ-Subroutine vergleicht die Priorität der Verbindung, entweder Prozeß- oder Nachrichtenverbindung mit den Prioritäten der am Semaphor in einer Warteschlange eingereihten Verbindungen und legt je nach Art der Prioritätseinreihung, d. h. entweder FIFO oder LIFO1 die Stellung fest. Anschließend benutzt die UQLK-Subroutine die von der PRIQ-Subroutine entwickelte Information und schreibt die neue Verbindung in die Warteschlange ein und ändert zusätzlich, falls erforderlich, Informationen der anderen Verbindungen.
Zur Erklärung wird die PRIQ-Subroutine für den Fall beschrieben, wo ein P-Befehl an einem Semaphor erfolglos war (vergleiche Figuren 20 und 21). Da die PRIQ-Subroutine 2304 eine Anzahl von Variablen betrifft,wird eine.allgemeine Schreibweise gegeben,
9845/0765
2517296
die nicht mit dem Ergebnis der Schreibweise im Flußdiagramm übereinstimmt. Beispielsweise steht die PL-Schreibweise in den Figuren 23e und 23f für eine in eine Warteschlange einzureihende Verbindung, wobei die Verbindung entweder eine Prozeßverbindung, oder eine Nachrichtenverbindung sein kann. Die Schreibweise QHP bedeutet die Verschiebung des Kopfes einer Warteschlange, welches die Hinweisadresse PQHP oder MQHP für das Semaphor sein kann. Die Schreibweise in der Subroutine 2304 (I) wird benutzt, um anzuzeigen, ob die Prioritätseinreihung gemäß FIFO oder LIFO benutzt werden soll und im Ergebnis wird ein Flip-Flop im Hilfsspeicher 1317a dementsprechend gesetzt. Die Schreibweise SNL ist das nächste Verbindungsfeld in der anzuwählenden Prozeßverbindung. Die erhaltene Prozeßoder Nachrichtenverbindung ist irgendwo in die Warteschlange eingereiht. Folglich besagt SNL die nächste Prozeß- oder Nachrichtenverbindung, die unmittelbar folgt. Der erste Verbindungsanzeiger gibt an, ob eine neue Verbindung am Kopf der Warteschlange eingeordnet werden soll. Wenn die Subroutine beendet ist und falls der erste Verbindungsanzeiger noch gleich "1" ist, so bildet die hinzugefügte Prozeß- oder Nachrichtenverbindung die Kopfverbindung der Warteschlange. ULK bedeutet eine Prozeß- oder Nachrichtenverbindung, welche unmittelbar der neuen Verbindung vorangeht, welche hinzugefügt wird. Ihr nächstes Verbindungsfeld wird zum Fortschreiben benötigt und zum Festlegen des Speicherplatzes der neu hinzugefügten Verbindung. Das nächste Verbindungsfeld der Verbindung ULK wird durch den Wert SREL des nächsten Verbindungsfeldes in ULK bestimmt. Falls es erforderlich ist, die Prozeß- oder Nachrichtenverbindung in die Mitte der Warteschlange einzufügen, wird die Verbindung unmittelbar vor der neu eingefügten Verbindung geändert und hat den Wert SREL. Außerdem weist die neu eingefügte Prozeß- oder Nachrichtenverbindung auf die nachfolgende Verbindung hin, welche zuvor durch ULK identifiziert wurde.
509845/0765
2517296
- LHr-
Zur Erläuterung der tatsächlichen durch die PRIQ-Subroutine 2304 ermöglichten übertragung wird nachfolgend auf Figur 18 Bezug genommen und insbesondere auf die Warteschlange Q/PR/S5 mit den dazugehörigen Prozeßverbindungen 1808a, 1808b und 1808c, In diese Warteschlange wird entsprechend der Priorität die Prozeßverbindung 805a vom PLS-Semaphor eingereiht. Die Prozeßverbindung 805a wird nachfolgend als Z bezeichnet und ihr nächstes Verbindungsfeld heißt SNL. Die Prozeßverbindung 1808a, 1808b und 1808c werden nachfolgend als Prozeßverbindungen A, B und C bezeichnet. Folglich hat die Prozeßverbindung A ein auf die nächste Verbindung hinweisendes Feld, welches auf B hinweist, während in der Prozeßverbindung B das auf die nächste Verbindung hinweisende Feld auf C gerichtet ist. In der letztgenannten Prozeßverbindung hat das auf die nächste Verbindung gerichtete Feld den Wert Null. Da die Priorität der Prozeßverbindung Z die Priorität des in den Wartezustand zu überführenden gerade ablaufenden Prozesses ist, sind die Lage der Prozeßverbindung in dieser Warteschlange, als auch die Änderungen, welche in den Prozeßverbindungen A, B, C und/oder im Semaphor S5 gemacht werden müssen, dargestellt. Schritt 2340 zeigt an, daß SNL gleich der Kopf-Hinweisadresse der Warteschlange ist, d. h. gleich der ersten Prozeßverbindung in der Warteschlange. Der erste Verbindungsanzeiger wird auf "1" gesetzt. Anschließend, wenn festgestellt ist, daß die erste Verbindung geändert werden muß, wird der erste Verbindungsanzeiger auf Null gesetzt. Die dem laufenden Prozeß zugeordnete Verbindung LK wird überprüft und ist das auf die nächste Verbindung hinweisende Feld der Prozeßverbindung A. Somit ist anfänglich LK die Prozeßverbindung A und ULK, d. h. die fortzuschreibende Verbindung würde ebenfalls die Prozeßverbindung A sein. Im Schritt 2341 wird gefragt, ob die Kopf-Hinweisadresse der Warteschlange gleich Null ist. Wird diese Frage bejaht, so deutet dies auf eine leere Warteschlange hin und Schritt 2342 folgt. Das auf die nächste Verbindung hinweisende Feld von Z, d. h. SNL wird auf Null gesetzt und zeigt
509845/0765
2517296
an, daß keine weiteren Verbindungen in der Warteschlange sind. Die Kopf-Hinweisadresse der Prozeßwarteschlange dieses Semaphor s wird geschrieben,derart, daß sie auf die Prozeßverbindung hinweist, welche in die Warteschlange eingereiht werden soll. Handelt es sich um eine Nachrichtenverbindung, so wird die Schwanz-Hinweisadresse der Nachrichtenverbindung auch derart eingestellt, daß sie auf die Nachrichtenverbindung hinweist, da sie die einzige Verbindung in der Warteschlange ist. Dies bedeutet das Ende der PRIQ-Subroutine im Schritt 2343. In diesem Beispiel würde die Verbindung Z, d. h. 805a die einzige Verbindung in der Warteschlange am Semaphor bilden.
In der zuvor beschriebenen Situation sind jedoch drei Prozeßverbindungen mit dem Semaphor S5 verknüpft und folglich ist die Antwort auf die Frage 2341 nein. Infolgedessen wird das erste Wort, d. h. das Wort 0 der Prozeßverbindung A abgerufen. Im Schritt 2345 fragt man, ob die Priorität der Prozeßverbindung Z kleiner als diejenige der Prozeßverbindung A ist. Wird diese Frage bejaht, d. h. ist die Priorität der Prozeßverbindung Z die höchste in der Warteschlange, so zeigt dies an, daß die Prozeßverbindung Z der Prozeßverbindung A vorangestellt wird. Damit ist die Position der Prozeßverbindung bestimmt. Anschließend läuft eine Subroutine UQLK ab, die diese Information, welche sich in den Zwischenspeicherplätzen WDB, WDC, WDD und WDE befindet, aufnimmt und das Semaphor auf den neuesten Stand bringt.
Ist jedoch die Priorität der Prozeßverbindung Z kleiner als · diejenige der Prozeßverbindung A, so läuft Schritt 2346 ab. Hier wird gefragt, ob die Priorität von Z gleich der Priorität von A ist. Tritt dieser Fall ein, dann fragt Schritt 2347, ob der I-Parameter im Schritt 2304 gleich "1" ist. Trifft dies zu, so wird angezeigt, daß eine Warteschlangeneinordnung gemäß LIFO erfolgt, d. h. bei gleicher Priorität wird die zuletzt eingegebene Information zuerst herausgenommen. Als Ergebnis wird die
509845/0765
2517296
Verbindung Z an den Kopf der Warteschlange gestellt und Schritt 2343 beendet die Subroutine. Wenn jedoch der I-Parameter nicht gleich "1" ist, so erfolgt die Warteschlangeneinordnung gemäß FIFO, d. h. die zuerst eingegebene Nachricht wird auch zuerst herausgenommen. Dann folgt Schritt 2348. Falls die Priorität der Prozeßverbindung Z kleiner als die der Prozeßverbindung A ist, würde Schritt 2348 automatisch ausgeführt, wie dies durch den fehlenden Weg vom Schritt 2346 angedeutet ist.
Somit wird sowohl für FIFO, als auch für Einreihung mit niedrigerer Priorität der Schritt 2348 fragen, ob die nächste Verbindung gleich Null ist. Diese Frage nimmt Bezug auf das, die nächste Verbindung anzeigende Feld von A. Wird die Anfrage bejaht, so zeigt dies an, daß keine weiteren Prozeßverbindungen mit der Warteschlange des Semaphor verknüpft sind, d. h. es befand sich nur eine Prozeßverbindung am Semaphor. Als Ergebnis wird die Z-Prozeßverbindung mit der A-Prozeßverbindung verknüpft und bildet das neue Endglied der Warteschlange. In diesem Zustand schreibt Schritt 2349 bestimmte Informationen in die Zwischenspeicherplätze WDB, WDC und WDD und zwar mit Hilfe der UQLK-Subroutine. Diese, mit Hilfe des Schrittes 2349 gespeicherte Information bedeutet folgendes. Das SNL-FeId der Verbindung Z würde auf Null gesetzt, weil keine weiteren Verbindungen in der Warteschlange sind. Das Feld SREL, das in der Verbindung A auf die nächste Verbindung hinweist, erhält einen Wert, der es zur Prozeßverbindung Z führt. Somit wird SREL zur einzureihenden Verbindung PL. Außerdem würde die erste Verbindung auf Null gesetzt und anzeigen, daß die erste Verbindung der Warteschlange nicht geändert wird. Schließlich wird die
Hinweisadresse MQTP des Semaphor im Fall einer Nachrichtenversie
bindung derart geändert, daß die Nachrichtenverbindung Z als die letzte Nachrichtenverbindung anzeigt. Jedoch wird im vorliegenden Fall überprüft, ob Z eine Prozeßverbindung und nicht eine Nachrichtenverbindung ist und demzufolge bleibt die Hinweisadresse MQTP gleich Null. Dies wird durch einen anderen
509845/0765
2517296
Flip-Flop im Assoziativspeicher 1317a angezeigt, der jeweils angibt, ob ein im Warte- oder Bereitschaftszustand befindlicher Prozeß oder eine Nachricht zur Warteschlange hinzugefügt wurde. Schritt 2343 zeigt das Ende von PRIQ.
Wenn jedoch das auf die nächste Verbindung hinweisende Feld nicht gleich Null ist, wie dies im gegenwärtigen Fall vorliegt, weil die Prozeßverbindungen B und C überprüft werden, so erfolgt Schritt 2350. Um den verschiedenen nun angewählten Verbindungen auf der Spur zu bleiben, wird die Verbindung A von LK in ULK geändert und die Verbindung B, welche die nächste Verbindung war, wird zur Verbindung LK, womit angezeigt ist, daß die Prozeßverbindung B zu überprüfen ist. Im Schritt 2351 wird das erste Wort der Prozeßverbindung B aus dem Hauptspeicher abgerufen und in den Zwischenspeicherplatz W32 übertragen. Das auf die nächste Verbindung hinweisende Feld der Prozeßverbine dung B wird überprüft, um festzustellen, ob es ein Vielfaches von 8 ist und ob es innerhalb des GO-Segments liegt. Dies erfolgt mit den Schritten 2351a bzw. 2351b. Liegen diese Bedingungen vor, so folgt Schritt 2353 in Figur 23f. Hier wird die Priorität der Prozeßverbindung Z mit derjenigen der Prozeßverbindung B verglichen. Ist die Priorität von Z kleiner als diejenige von B, so zeigt Schritt 2353 an, daß Z vor B aber nach A eingefügt ist. Als Ergebnis wird die Information in die Zwischenspeicherplätze WDB bis WDE eingefügt (Schritt 2349) und die Subroutine PRIQ ist mit dem Schritt 2343 abgeschlossen. Die Hinweisadresse auf die nächste Verbindung in der Verbindung A weist auf die Prozeßverbindung Z und die Hinweisadresse in der Prozeßverbindung Z auf die Prozeßverbindung B hin. Dies wird wie folgt erreicht. Das auf die nächste Verbindung hinweisende Feld SNL in der Verbindung Z erhält den Wert ULK, d. h. die Speicherplätze der Prozeßverbindung A. Somit zeigt nunmehr die Prozeßverbindung Z auf die Prozeßverbindung B. Das auf die nächste Verbindung hinweisende Feld SREL in A erhält den Wert von PL, d. h. den Speicherplatz der Prozeßverbindung Z. Außerdem bleiben die Hinweisadressen PQHP, MQHP und MQTP unverändert.
5 0 9845/0765
2517296
War die Priorität der Prozeßverbindung Z größer oder gleich derjenigen von B, so erfolgt ein Verzweigungsschritt 2354. Dies ist das gleiche wie im Schritt 2346, in dem gefragt wird, ob die Prioritäten gleich sind, entsprechend Schritt 2355 und 2347. Ist die Priorität von Z gleich derjenigen von B (Frage 2354) und zeigt der Flip-Flop im Rechenwerk 1317a an, daß die Einreihung nach dem Prinzip LIFO erfolgt, so wird der Schritt 2353 ausgeführt und die Information in den Zwischenspeicher eingeschrieben. Ist jedoch der I-Wert auf Null gesetzt und zeigt an, daß die Einreihung nach der Regel FIFO erfolgt oder ist die Priorität von Z kleiner als diejenige von B, so folgt Schritt 2356. Dieser stellt eine Rückkehr zur Schleife bei Schritt 2348 dar, um festzustellen, ob die Prozeßverbindung B die letzte in der Warteschlange ist. Trifft dies nicht zu, dann wird die Verbindung C im Schritt 2350 abgerufen und die Felder werden auf den neuesten Stand gebracht. Wenn die Priorität der Prozeßverbindung Z in Bezug auf die anderen Verbindungen in der Warteschlange bestimmt ist (1808a, 1808b und 1808c) f erhalten die Ubergangsregister die entsprechende Information aus den Zwischenspeicherplätzen VTOB bis WDE, welche anschließend über die UQLK-Subroutine in den Hauptspeicher eingeschrieben wird.
Somit bestimmt die PRIQ-Subroutine, wo im Fall von Q/PR/S oder Q/PR/FLS die Prozeßverbindung bzw. im Fall Q/M/S oder Q/ML/FLS die Nachrichtenverbindung in die Warteschlange eingereiht 1st. Die Subroutine speichert diese Information in den Übergangsregistern des Zwischenspeichers. Diese Übergangsregister werden später von der Subroutine UQLK angewählt und die Information anschließend in den Hauptspeicher eingeschrieben und mit allen Verbindungen in der Warteschlange verknüpft, so daß eine logische Reihenfolge entsteht.
Bei Abschluß der PRIQ-Subroutine erfolgt eine Rückkehr zum Feld E der VP-Subroutine 2121 in Figur 23a. Als nächster wird Schritt 2305 durchgeführt. Dabei wird die Prozeßverbindung 805a, welche
9845/0765
2517296
- 1Ä6* -
vom GO-Segment kam und den JP-Namen, den Prioritätswert und die relative Segmentadresse des gegenwärtig ablaufenden Prozesses aufweist, in die Prozeßverbindung 805a im Hauptspeicher eingeschrieben. Hat man eine Prozeßverbindung, so muß die dem gegenwärtig ablaufenden Prozeß zur Verfügung stehende Information derart gespeichert werden, daß bei Rückkehr in den Ablaufzustand kein Verlust an Gleichförmigkeit auftritt. Somit besteht der nächste Schritt tatsächlich in der Speicherung der laufenden Information, die dem ausübenden Prozeß zugängig ist. Dies erfolgt im Schritt 2306 entsprechend der Subroutine RLLO in Figur 23g. Sie überträgt die laufende Information in einen Prozeßsteuerblock gemäß Figur 4. Hierzu wird Schritt 2360 ausgeführt, der eine Subroutine URUA darstellt. Es handelt sich um eine Berechnungs-Subroutine, welche die Laufzeit des Prozesses fortschreibt, der den Ablaufzustand verlassen soll. Diese Subroutine zeigt die Menge der benutzten Rechnerzeit an und folglich den Geldbetrag, der dem Kunden in Rechnung gestellt wird.
Die Schritte 2361 und 2368 aktivieren die Inhalte der Generalregister in der Zentraleinheit 104 für die übertragung in den Prozeß-Steuerblock. Schritt 2361 überträgt den Inhalt der Zustandsregister 1311 in das Wort 4 des Prozeß-Steuerblocks. Schritt 2362 speichert den Inhalt des T-Registers 1310 in die Prozeß-Steuerblockadresse 28 um. Schritt 2363 berechnet die Segmentadresse des nächsten Befehls, der, im Register 1312 befindlich, weiterzugeben ist und überträgt diese Segmentadresse auf die Prozeß-Steuerblockadresse 32 gemäß Schritt 2364. Im Schritt 2365 werden die Basisregister 1308 in die Prozeß-Steuerblockadresse 52 bis 80 übertragen. Schritt 2366 gibt die Generalregister 1307 an die Prozeß-Steuerblockadressen 84 bis 144 weiter. Im Schritt 2367 erfolgt ein Zugriff zum Fähigkeits-Byte des Prozeß-Steuerblocks, und es wird überprüft, ob eine wissenschaftliche Fähigkeit ausgenutzt wurde. Ist dies der Fall, so
509845/0765
2517296
werden die wissenschaftlichen Register 1309 in die Prozeß-Steuerblockadressen 148 bis 176 eingegeben und die Abspeicherung der laufenden Information durch die Subroutine beendet. Ist jedoch von der wissenschaftlichen Fähigkeit kein Gebrauch gemacht worden, so ist die RLLO-Subroutine bereits beendet. Somit wird der laufende Zustand des ausübenden Prozesses, d. h. des Prozesses der im Ablaufzustand gewesen ist und nun in den Wartezustand überführt werden soll, in den Prozeß-Steuerblock übertragen. Wenn die vom Prozeß über den P-Befehl angeforderte Information verfügbar wird, wird der Prozeß nachfolgend wiederum in den Ablaufzustand überführt und es tritt kein Verlust an Kontinuität ein.
Mit dem Abschluß der Informationsübertragung in den Prozeß-Steuer block erfolgt ein Wiedereintritt in die Subroutine E des VP 2121 in Figur 23a. In dem als nächsten ausgeführten Schritt 2307 wird die Hardware-Gatterschaltung wie beschrieben verriegelt und zeigt an, daß das System einen kritischen Zustand erreicht hat. Während dieser Zeit erfolgt das Fortschreiben der Information im Hauptspeicher und außerdem der übergang des laufenden Prozesses in den Wartezustand. Im Schritt 2308 wird die Prozeßverbindung 805a aus dem PLS-Semaphor 901 im GO-Segment in die Warteschlange eingereiht und folglich freigegeben. Im Schritt 2309 wird das Zustands-Byte des Prozeß-Steuerblocks geändert, um anzuzeigen, daß der Prozeß sich nunmehr im Wartezustand, statt zuvor im Ablaufzustand, befindet. Dies zeigt sich in der PMW-Nummer 0 als Byte 3 in der Prozeß-Steuerblockadresse 0 gemäß Figur 4. Im Schritt 2310 wird in die Prozeß-Steuerblockadresse 8, d. h. in das PMW-Wort 2 die relative Segmentadresse und die Segmentnummer des adressierten Semaphor eingeschrieben. Dies versorgt den Prozeß-Steuerblock mit der zum Lokalisieren des Semaphors erforderlichen Information,an dem der Prozeß wartet. Anschließend wird Schritt 2311 in Figur 23h ausgeführt, der eine Subroutine UQLK ist. Zuvor zeigt die PRIQ-Subroutine an, wo die Prozeßverbindung in der Warteschlange am Semaphor
509845/0765
2517296
eingereiht ist. Die UQLK-Subroutine bewirkt eine Schreiboperation und bringt den Hauptspeicher auf den neuesten Stand, um hierdurch den Zustand des Systems zu berücksichtigen. Im Schritt 2370 in Figur 23h wird als erster Schritt der Subroutine UQLK das auf die nächste Verbindung hinweisende Feld SNL der Prozeßverbindung 805a erreicht und aus dem Zwischenspeicherplatz WDB in das auf die nächste Verbindung hinweisende Feld im Hauptspeicher übertragen. Im Schritt 2371 erfolgt eine überprüfung des auf die erste Verbindung hinweisenden Anzeigers, um festzustellen, ob er "1" ist, d. h. ob die fortzuschreibende Verbindung der Kopf der Warteschlange ist. Wird diese Frage bejaht, so führt Schritt 2372 zur Frage, ob der Kopf der Prözeßverbindung der Kopf der Bereitschaftswarteschlange Q/PR/RDY ist. Diese Frage erfolgt, weil der V-Befehl die PRIQ- und UQLK-Subroutinen benutzt, um einen Prozeß in diese Warteschlange einzureihen. Wird die Frage bejaht, so wird das IQW-Wort geändert, derart, daß es nunmehr auf den Speicherplatz der in Schritt 2373 eingeführten Prozeßverbindüng hinweist. Damit ist die UQLK-Subroutine beendet.
Im dargestellten Fall ist die Antwort jedoch nein und der Schritt 2375 fragt, ob es sich um eine Nachrichtenverbindung handelt. Wird dies bejaht, so wird die Kopf-Hinweisadresse der Nachrichtenwarteschlange im Schritt 2375 fortgeschrieben, wobei die Speicherstelle der Prozeßverbindung eingefügt und damit die Subroutine beendet wird. Wird die Frage hingegen verneint, dann wird eine Prozeßverbindung fortgeschrieben und Schritt 2377 bringt die PQHP-Hinweisadresse des Semaphor auf den neuesten Stand, wobei der Platz der Prozeßverbindung PL aus dem Zwischenspeicherplatz W31 kommt. Ist die. Antwort auf die Frage in Schritt 2371 nein, womit angezeigt ist, daß die anzuwählende Verbindung sich nicht am Kopf der Warteschlange befindet, so überträgt Schritt 2378 das auf die nächste Verbindung hinweisende Feld in den Hauptspeicher. Damit wird das SREL-FeId der Verbindung, welche auf die anzuwählende Verbindung hinweist,geändert und
509845/0765
2517296
das auf die nächste Verbindung hinweisende Feld SNL der erreichten Verbindung erhält das PL-Feld. Mit anderen Worten erhält das auf die nächste Verbindung hinweisende Feld der Prozeßverbindung Zj die der Warteschlange hinzuzufügen ist, den Wert SNL. Die Prozeßverbindung, welche die Prozeßverbindung Z kennzeichnet, wird zu SREL. Diese Information wird aus den Zwischenspeicherplätzen WDC bzw. WDE übertragen. Handelt es sich um eine Warteschlange Q/M/S, so wird auch die Hinweisadresse MQTP fortgeschrieben, womit die UQLK-Subroutine beendet ist.
In Figur 13 im Schritt 2312 wird das SCT-FeId oder,falls es sich um ein Verbindungsfreigabe-Semaphor handelt, das FLSCT-FeId in den Zwischenspeicherplatz WC4 eingeschrieben. Der NSCT-Zählerstand wurde im Schritt 2101 von Figur 21 zuvor bestimmt und im Zwischenspeicherplatz WC7 abgelegt. Im Schritt 2313 wird der gesamte in den Zwischenspeicherplätzen WC4 und WC5 gespeicherte Inhalt des Semaphor in den Hauptspeicher übertragen und auf diese Weise das Semaphor fortgeschrieben. Am Ende dieser Informationsübertragung wird das Hardware-Gatter im Schritt 2314 entsperrt und damit angezeigt, daß der kritische Zustand vorbei ist. Im Schritt 2315 wird das Vakanzgatter im Rechenwerk 1317a auf binär 1 gesetzt und zeigt an, daß der ausführende Prozeß . aus dem Ablaufzustand herausgenommen wurde. Im Schritt 2316 wird die Steuerung des Systems auf den Verteiler übertragen, der,wie in Figur 14 dargestellt,bestimmt, welcher Prozeß als nächster den Ablaufzustand einnimmt.
Damit ist die Subroutine E aus VP 2121, welche den Zustand des ausführenden Prozesses in den Wartezustand ändert, beendet. Der ausführende Prozeß hat, wie die Figuren 20 und 21 zeigen, versucht, einen P-Befehl an einem nachrichtenfreien Semaphor oder einem Nachrichten-Semaphor auszuführen. Da er hierzu nicht in der Lage war, kann der Prozeß nicht weiterlaufen bis ihm Daten zur Verfügung gestellt werden. Folglich geht er von selbst in den Wartezustand über.
509845/0765
2517296
— 17© —
Ih Figur 22a wurde im Block 2200 der SCT-Zählerstand getestet, ob er kleiner als Null ist und damit anzeigt, daß ein P-Befehl an einem Nachrichten-Semaphor den übergang des ausführenden Prozesses in den Wartezustand erforderte. Wird diese Frage verneint, so erfolgt ein Verzweigungsschritt 2205. Dieser fragt, ob das SCT-FeId gleich Null ist. Ist die Antwort hierauf ja, so tritt eine Verzweigung 2206 zur Subroutine PMZ gemäß Figur 24a auf.
509845/0765
2517296
D. Nachrichtenübertragung ohne Warteschlange
Die PMZ-Subroutine 2206 ist eine spezielle Subroutine, welche durch einen P-Befehl des Semaphores mit einer Nachricht aufgerufen wird, wenn das SCT-FeId des Semaphores gleich Null ist. In diesem Augenblick stellt die Subroutine fest, ob ein vorangegangener Prozess noch auf eine freie Nachrichtenverbindung wartet oder nicht, um seine Nachricht dem Semaphor aufzuschalten. Dies geschieht in dem Fall, wo alle freien Nachrichtenverbindungen zuvor benutzt worden sind und keine weiteren freien Nachrichtenverbindungen für die Ausführung von Prozessen zur Verfügung stehen, die ihrerseits die Lieferung von Nachrichten anstreben. In diesem Fall wird der ausgeführte Prozess, der die Nachricht zu liefern versucht, in den Wartezustand versetzt, falls er die Nachricht nicht abgeben kann. Der laufende, einen P-Befehl ausführende Prozess, der zunächst eine Nachricht anfordert, versucht zunächst festzustellen, ob die oben genannte Situation aufgetreten ist, bevor er sich selbst in den Wartezustand versetzt. Ist diese Situation aufgetreten, so wird der Prozess, der die Nachricht zu liefern versuchte, von seiner Nachricht befreit, wodurch die Behinderung der Prozessausführung entfällt und der den P-Befehl ausführende laufende Prozess empfängt die Nachricht, wodurch er in die Lage versetzt wird, im Ablaufzustand weiterzuarbeiten. Somit tritt in dieser besonderen Situation weder die Ausgabe der Nachricht durch einen früheren V-Befehl entsprechend einer Nachrichtenverbindung, noch ein Empfang der Nachricht von einem Semaphor durch den gerade laufenden Prozess auf, sondern es ergibt sich eine hybride Situation, in welcher der gerade laufende Prozess die Nachricht von einem im Wartezustand befindlichen Prozess über seinen PCB empfängt.
50 9 8 45/0765
2517296
Insbesondere werden im Schritt 24OO gemäß Figur 24a die Schwanz-Hinweisadresse der Nachrichten-Warteschlange (MQTP) und die Kopf-Hinweisadresse der Nachrichten-Warteschlange (MQHP) des Semaphors mit einer Nachricht getestet, um festzustellen, ob diese Null sind oder nicht. Wenn das SCT-FeId des Semaphors den Wert Null aufweist, müssen diese Zustände beide vorliegen, da andernfalls das Semaphor 24OOA einen illegalen Zustand aufweist. Nachdem dies festgestellt ist, wird im Schritt 2401 eine Subroutine für einen Verbindungs-Freigabe-Semaphor-Abruf (FLSC, dargestellt in Figur 24b) ausgeführt. Diese Subroutine ruft das Verbindungs-Freigabe-Semaphor auf und führt eine Reihe von Tests durch, um seinen Zustand festzustellen.
Gemäß Figur 24b wird im Schritt 2420 das erste Wort des Semaphor-Descriptor-Segmentes, welches die Verbindungs-Freigabe kennzeichnet, aus dem Hauptspeicher abgerufen und in den Festwert-Speicherplatz WD2 übertragen. Dieses erste Wort ist in Figur 15 als Nummer 1500 dargestellt. Im Schritt 2421 werden die folgenden Tests durch das ALU 137 hinsichtlich des ersten Wortes ausgeführt. Das liinweisfeld, d. h. die Bits O bis 1 werden dahingehend überprüft, ob sie den Wert 11 aufweisen; das MBZ-FeId mit den Bits 8 bis 15 wird überprüft, ob diese Bits alle Null sind und das FLSP-FeId mit den Bits 16 bis 31 wird dahingehend überprüft, ob diese ein Vielfaches von acht betragen, da sie auf das erste Byte in dem Verbindungs-Freigabe-Semaphor 1504 hinweisen, welches in der SD-Segmentausbildung gemäß Figur 15 dargestellt ist.
Im Schritt 2422 wird das Verbindungs-Freigabe-Semaphor, auf welches durch das FLSP-FeId hingewiesen wird und welches in den Figuren 16d durch 1504 dargestellt ist, abgerufen. Diese drei Worte werden sodann in den Zwischenspeicher-Speicherplätzen WCB, WCC und WCD entsprechend abgespeichert, so daß der folgende Test in dem Rechenwerk 1317 ausgeführt werden kann: Im Schritt 2423 wird das STAG-FeId mit den Bits 0 bis 3 daraufhin überprüft, ob
5 0 9845/0765
2517296
- 123 -
diese alle Null sind. Im Schritt 2424 wird das CCT-FeId mit den Bits 80 bis 95 und das FLSCT-FeId mit den Bits 16 bis 31 des FLS 1504 gemäß Figur 16 daraufhin überprüft, ob sie größer als Null sind. Es kann der Fall eintreten, daß weder das FLSCT-FeId noch das CCT-FeId größer als Null ist. Diese Felder werden gewöhnlich auf Null gesetzt, wenn freie Nachrichtenverbindungen verfügbar sind und sie werden negativ, wenn keine freien Nachrichtenver*- bindungen zur Verfügung stehen. Der Absolutwert dieser Felder zeigt die Anzahl der Prozesse an, die auf freie Nachrichtenverbindungen warten, z.B. die Anzahl der mit Q/PR/FLS verbundenen Prozesse. Der Test auf einen Wert größer Null dient daher der Bestimmung, ob die geeignete Codierung für das Verbindungs-Freigabe-Semaphor getroffen worden ist oder nicht.
Im Schritt 2425 wird das FLSCT-FeId daraufhin überprüft, ob es kleiner als Null ist, in welchem Fall das Q/PR/FLS mit einem Verbindungs-Freigabe-Semaphor verbunden ist. Ist dies der Fall, so wird im Schritt 2426 das PQHP-FeId mit den Bits 32 bis 47 überprüft, um festzustellen, ob es von Null verschieden ist und ein Vielfaches von acht darstellt. Ist das FLSCT-FeId gleich Null, welches die einzige andere Möglichkeit darstellt, so wird dadurch angezeigt, daß freie Nachrichtenverbindungen verfügbar sind. Als Folge dessen muß die PQHP-Hinweisadresse des Verbindungs-Freigabe- Semaphors gleich Null sein, was im Schritt 2427 überprüft wird. Sollte irgendeiner dieser Tests nicht erfolgreich verlaufen, so tritt ein illegaler Semaphor-Ausnahmezustand auf.
Im Schritt 2428 wird das SMC-FeId mit den Bits 4 bis 15 (in Figur 16c auch als MBZ-FeId bezeichnet) daraufhin überprüft, ob es Null ist. Dies ist eine dem Verbindungs-Freigabe-Semaphor anhaftende Beschränkung, da es niemals Nachrichtenverbindungen speichern kann. Mit dem FLS sind nur freie Nachrichtenverbindungen in einer Warteschlange verbunden. Als Folge davon wird das SMC-FeId auf Null gestellt, da das FLS niemals einen positiven Wert aufweisen darf.
509845/0785
2517296
Im Schritt 2429 gemäß Figur 24c wird die Warteschlangen-Hinweisadresse der Verbindungsfreigabe mit den Bits 48 bis 63, welche auf die erste freie Nachrichtenverbindung verweisen, geprüft/ um sicherzustellen, daß sie ein Vielfaches von acht ist, wenn das FLQP-FeId die erste freie Nachrichtenverbindung bestimmt, welche 4 Worte lang ist. Im Schritt 2430 wird das CCT-FeId mit den Bits 80 bis 95 daraufhin geprüft, ob es kleiner als Null ist. Zuvor wurde im Schritt 2424 geprüft, ob dieses Feld größer als Null ist, so daß im Fall einer Nein-Antwort der Test die Feldgröße mit Null bestimmt und somit das Ende der FLS-Subroutine 2431 vorliegt. Ergibt sich im Schritt 2430 eine Ja-Antwort, so wird im Schritt 2432 das MBZ-FeId mit den Bits 64 bis 71 geprüft, und es folgt das Ende der-FLSC-Subroutine. Die FLSC-Subroutine überprüft somit nicht nur das Verbindungs-Freigabe-Semaphor daraufhin, daß es sich in den vorgegebenen Entwurfsgrenzen gemäß Figur 16d bewegt, sondern sie speichert auch in den Zwischenspeicher-Speicherplätzen WCB, WCC und WCD die drei Worte des Verbindungs-Freigabe-Semaphors für einen weiteren Gebrauch ab.
Bei der vollständigen Ausführung der FLSC-Subroutine im Schritt 2401 gelangt zusätzlich der Schritt 2402 gemäß Figur 24a zur Ausführung. Im Schritt 2402 wird überprüft, ob das CCT-FeId kleiner als Null ist. Wird diese Frage mit nein beantwortet, so wird dadurch angezeigt, daß kein Eingabe/Ausgabe-Kanal auf eine freie Nachrichtenverbindung wartet. Im Schritt 2403 wird überprüft, ob das FLSCT-FeId gleich Null ist. Ist dies nicht der Fall, so wird dadurch angezeigt, daß ein Prozess Q/PR/FLS auf seine Ausführung wartet und als Folge hiervon wird im Schritt 2404 die SPLQ-Subroutine ausgeführt.
Die SPLQ-Subroutine veranlasst die freie Prozess-Verbindungswarteschlange zur Feststellung, ob in dem Q/PR/FLS ein Prozess abläuft, der die Ausführung einer V-Operation, z. B. die Abgabe einer Nachricht hinsichtlich des gleichen Semaphors, für welches der gerade laufende Prozess einen P-Befehl ausführt, z. B. die
509845/0765
2517296
Anforderung einer Nachricht verlangt. Es wird mit anderen Worten überprüft, ob die durch den P-Befehl angeforderte Nachricht zuvor abzusetzen versucht worden ist, dieser Versuch jedoch nicht erfolgreich war, da keine freien Nachrichtenverbindungen verfügbar waren. Diese Situation ergibt sich, wenn ein zuvor laufender Prozess eine Nachricht an das SD-Segment mit dem Verbindungs-Freigabe-Semaphor abzusetzen versucht hat. Der Prozess war jedoch nicht in der Lage, dies zu bewerkstelligen, da keine freien Nachrichtenverbindungen verfügbar waren. Als Ergebnis hiervon, wird der Prozess in den Wartezustand versetzt, und das E-FeId ' der VP-Subroutine an die Warteschlange Q/PR/FLS angebunden mit dem Ergebnis, daß er einige Zeit später die Nachricht zu dem geeigneten Semaphor übertragen kann. Es kann jedoch nunmehr die Situation vorliegen, in der der gerade laufende Prozess einen P-Befehl ausführt, der auf die gleiche Nachricht gerichtet ist. Mit der Subroutine SPLQ 2404 wird überprüft, ob diese Situation vorliegt.
Gemäß Figur 24d wird mit der SPLQ-Subroutine 2404 auf die Prozessverbindungen Bezug genommen, die an die Warteschlange Q/PR/ FLS angebunden sind, um festzustellen, ob die Verschiebefelder der Prozessverbindung, d. h. die Bits 48 bis 63 einer jeden Prozessverbindung mit dem Verschiebefeld des gerade laufenden Prozesses, der den P-Befehl ausführt gleich sind. Sind diese Verschiebefelder einander gleich, so wird die Nachricht von dem zuvor ablaufenden Prozess in den gerade ablaufenden Prozess überführt und der den P-Befehl ausführende, gerade laufende Prozess verbleibt im Ablaufzustand. Sind jedoch die Verschiebefelder einander ungleich, so wird der gerade laufende Prozess, der den P-Befehl ausführt, in den Wartezustand versetzt.
Gemäß Figur 24d veranlasst der Schritt 2440 den Anstoß eines Flip-Flops im Hilfsspeicher 1317a, welches anzeigt, daß auf die erste Verbindung in der Warteschlange Q/PR/FLS Bezug genommen
509845/0765
2517296
- IrTS -
. Dieses Flip-Flop legt fest, ob das PQHP-FeId des Verbindungs-Freigabe-Semaphors geändert werden soll oder nicht. Wenn der Schaltzustand des Flip-Flops gleich bleibt, so zeigt es an, daß die erste Prozessverbindung der Warteschlange Q/PR/ FLS ein Verschiebefeld übereinstimmend mit dem P-Befehl aufweist und somit seine Nachricht entnommen worden ist. Wird der Zustand des Flip-Flops geändert, so bleibt das PQHP-FeId des Verbindungs-Freigabe-Semaphors unverändert. Im Schritt 2440 werden ebenfalls PL- und UPL-Variablen ausgelöst. Diese Variablen werden in Speicherplätze W31 und WE8 des Zwischenspeichers eingeschrieben und kennzeichnen die Prozessverbindung sowie die ergänzte Prozessverbindung. Hinsichtlich der anfänglichen zu überprüfenden Prozessverbindung kennzeichnen die PL- und UPL-Variablen die Warteschlangen-Hinweisadresse der Prozessverbindung des gleichen Prozesses.
In den Schritten 2441 und 2442 werden die ersten und zweiten Worte der Prozessverbindung, welche die Kopf-Prozessverbindung der Warteschlange Q/PR/FLS darstellen, aus dem Hauptspeicher in das ALU 1317 abgerufen. Im Schritt 2443 wird das nächste Verbindungsfeld mit den Bits 0 bis 15 der Prozessverbindung dahingehend überprüft, ob es ein Vielfaches von acht darstellt, da jede durch es abgespeicherte Prozessverbindung aus zwei Worten besteht. Im Schritt 244 4 wird das D-Feld der Prozessverbindung, d.■h. die Bits 48 bis 63 mit dem SRA-FeId des gerade laufenden Prozesses verglichen, um festzustellen, ob sie gleich sind oder nicht. Sind sie nicht gleich, so wird im Schritt 2445 überprüft, ob das nächste Verbindungsfeld der Prozessverbindung gleich Null ist, d. h. ob weitere Prozesse mit Prozessverbindungen vorhanden sind, die an das Verbindungs-Freigabe-Semaphor angebunden sind. Ist das nächste Verbindungsfeld nicht gleich Null, so wird der Schritt 2446 ausgeführt, durch welchen der erste Verbindungsindikator auf Null gesetzt wird und wodurch angezeigt wird, daß
5098 45/0765
2517296
- i*7 -
das PQHP-FeId des Verbindungs-Freigabe-Semaphors keiner Änderung bedarf, da die Kopf-Prozessverbindung die gleiche bleibt. Zusätzlich wird die ergänzte Prozessverbindung UPL auf den alten Wert der Prozessverbindung PL eingestellt und in dem Speicherplatz WE8 des Zwischenspeichers abgespeichert und es wird nunmehr die Prozessverbindung PL geändert, so daß sie das nächste Verbindungsfeld bestimmt, welches die zweite an die Warteschlange Q/PR/FLS angebundene Prozessverbindung beinhaltet. Nachfolgend werden die Schritte 2441 bis 2444 hinsichtlich dieser zweiten Prozessverbindung erneut ausgeführt, um festzustellen, ob das in der Prozessverbindung enthaltene Verschiebefeld der relativen Segmentadresse (SRA) des gerade laufenden Prozesses gleich ist oder nicht, wobei dieser Prozess den P-Befehl ausführt.
Wird dieser Zustand festgestellt, d. h.;wird die Frage im Schritt 2444 mit ja beantwortet, so gelangt der Schritt 2447 zur Ausführung, wodurch ein Indikator im Hilfsspeicher 1317a auf Null gesetzt wird und dadurch anzeigt, daß eine Prozessverbindung mit dem gleichen Verschiebefeld festgestellt wurde und die ergänzte nächste Verbindung UNL der nächsten Verbindung in der Warteschlange gleichgesetzt ist. Das in dem Zwischenspeicher-Speicherplatz WE9 gespeicherte UNL-FeId gibt das nächste Verbindungsfeld der Prozessverbindung sofort frei, bevor das eine Verbindungsfeld zwecks Veränderung des Wertes der das gleiche Verschiebefeld aufweisenden Prozessverbindung herausgeholt wird. Die Warteschlange enthält somit eine fortlaufende Reihe von Hinweisadressen auf alle Prozessverbindungen, die an das Verbindungs-Freigabe-Semaphor angebunden sind. Wenn diese Vorgänge abgeschlossen sind, so wird das Ende der SPLQ-Subroutine im Schritt 2448 durchgeführt. Es sei hier vermerkt, daß der Schritt 2447 die Information für die UPLQ-Subroutine erzeugt, was weiter unten hinsichtlich des Einschreibens der neuen Information in die Warteschlange Q/PR/FLS beschrieben ist.
509845/0785
2517296
Wird das D-Feld der an die Warteschlange Q/PR/FLS angebundenen Prozessverbindungen nicht in Übereinstimmung mit dem SRA-FeId des gerade laufenden Prozesses, der den P-Befehl ausführt, angetroffen, so wird das Flip-Flop im Schritt 2449 auf 1 gesetzt, wodurch angezeigt wird, daß alle Prozessverbindungen der Warteschlange Q/PR/FLS geprüft wurden und keine gefunden worden ist, die die durch den P-Befehl" angeforderte Nachricht enthält. Daraufhin wird das Ende der SPLQ-Subroutine ausgeführt und die UPLQ-Subroutine schreibt die variablen UPL und PL nicht in die Warteschlange Q/PR/FLS.
Nach Ausführung der SPLQ-Subroutine 2404 wird der Schritt 2405 ausgeführt und es wird gefragt, ob der Prozess gefunden worden ist. Durch diese Frage wird festgestellt, ob der Prozess, welcher einen V-Befehl hinsichtlich des gleichen Semaphors aus dem der P-Befehl eine Nachricht anfordert, abgespeichert worden ist. Wird diese Frage mit ja beantwortet, d. h.;ist das Flip-Flop in der Stufe 2447 auf Null gesetzt, so wird im Schritt 2406 gefragt, ob dieser P-Befehl ein Testbefehl war und falls er dies war, so wird im Schritt 2407 ein Zustandscode im Statusregister 1311 auf Null gesetzt, wodurch angezeigt wird, daß der P-Befehl zur Ausführung gelangt. Unabhängig von der Beantwortung der Frage im Schritt 2406 wird im Schritt 2408 die Subroutine RNP aufgerufen, welche die Bereitschaft eines neuen Prozesses behandelt. Somit wird die Nachricht an den gerade laufenden, den P-Befehl ausführenden Prozess in Abhängigkeit davon weitergegeben, ob ein P-Testbefehl oder ein P-Befehl ausgeführt wurde. Zusätzlich wird der Prozess, welcher gerade dabei war, den V-Befehl zu verarbeiten, durch die Subroutine RNP 2408 in den Bereitschaftszustand überführt. Im Schritt 2409 ist eine Übertragung zu dem Zuteiler, wie er in Figur 14 beschrieben ist, dargestellt.
Wenn in Abhängigkeit von der im Schritt 2405 gestellten Frage kein Prozess gefunden worden ist, so wird im Schritt 2410 gefragt, ob ein P-Testbefehl vorlag. Ist dies der Fall, so wird
509845/0765
2517296
im Schritt 2411 ein Zustandscode im Statusregister 1311 auf gesetzt, was anzeigt, daß der Befehl nicht ausgeführt wird und im Schritt 2412 wird der Befehlszähler 1312 um 1 erhöht und der gerade laufende Prozess führt seinen nächsten Befehl aus.
Wenn im Schritt 2410 ein P-Befehl für ein Semaphor mit einer Nachricht vorlag und der gerade laufende Prozess keine Nachricht empfangen hat, so wird durch die VP-Subroutine 2121 gemäß Figur 23a eine Verzweigung nach dem E-FeId durchgeführt, welchcsden gerade laufenden Prozess in den Wartezustand versetzt und dem Zuteiler die Auswahl des neuen, in den Ablaufzustand zu versetzenden Prozesses erlaubt.
Wenn sich im Schritt 2403 ergibt, daß das FLSCT-FeId des Verbindungs-Freigabe-Semaphors den Wert Null aufweist, wodurch angezeigt wird, daß keine Prozessverbindungen auf das Verbindungs-Freigabe-Semaphor bestehen, so wird der Schritt 2413 ausgeführt, in welchem gefragt wird, ob ein Testbefehl vorliegt. Wird diese Frage mit ja beantwortet, so wird im Schritt 2414 wiederum ein .Zustandscode auf den Wert 1 gesetzt. Zusätzlich wird der Befehlszähler 1312 des gerade laufenden Prozesses, der den P-Befehl ausführt, im Schritt 2415 um 1 erhöht und es wird der nächste Befehl sodann im Schritt 2409 ausgeführt. Wird die Frage im Schritt 2413 mit nein beantwortet, d. h. liegt kein P-Testbefehl für das Nachrichten-Semaphor vor, so wird der gerade laufende Prozess in den Wartezustand versetzt, wie es durch das E-FeId der VP-Subroutine 2121 veranschaulicht wird.
Gemäß Figur 2 4a wurde als Antwortergebnis auf die Frage gemäß Schritt 2402 zunächst angenommen, daß diese Antwort nein war. Wurde diese Frage jedoch mit ja beantwortet, wodurch angezeigt wird, daß Prozesse vorliegen, die die Übertragung einer Nachricht von den Ein-/Ausgabe-Geräten anfordern, so gelangt die Subroutine 2416 zur Ausführung. Die Ausführung dieser Subroutine
509845/0765
2517296
beinhaltet im wesentlichen die gleiche Operation wie zuvor anhand der Nein-Antwort beschreiben, mit der Ausnahme, daß die Nachricht direkt von dem Ein-/Ausgabe-Gerät anstatt von der Warteschlange Q/PR/FLS gesendet wird. Stand keine Nachricht zur Abgabe bereit, so geht der gerade laufende Prozess in den Wartezustand über und wartet auf die Nachricht, die durch die Ausführung des P-Befehles angefordert wird.
E. P-Befehl für ein Semaphor mit einer Nachricht, wobei das SCT-FeId größer als Null ist.
Wenn im Schritt 2205 gemäß Figur 22a festgestellt wurde, daß das SCT-FeId des P-Befehles für ein Nachrichten-Semaphor ungleich Null war, d. h. daß das SCT-FeId größer als Null war, so ist es bekannt, daß die von dem laufenden Prozell angeforderte Nachricht verfügbar ist. Die Anforderung des P-Befehles wird somit befriedigt und der laufende Prozess kann weiter ausgeführt werden. Insbesondere wird in Abhängigkeit von der Frage im Schritt 2205 eine Verzweigung nach dem Schritt 2207 vorgenommen. Im Schritt 2207 wird gefragt, ob ein Testbefehl vorliegt. In diesem Punkt ist es bekannt, daß der P-Befehl ausgeführt werden kann, jedoch muß hinsichtlich eines Testbefehles ein Zustandscode gesetzt werden. Wenn diese Frage somit mit ja beantwortet wird, so wird im Schritt 2208 zusätzlich gefragt, ob das SCT-FeId des Semaphors mit einer Nachricht, auf welches der P-Befehl gerichtet ist, gleich 1 ist. Wird die Frage mit ja beantwortet, so wird ein Zustandscode von Null in dem Statusregister 1311 gesetzt; wird die Frage mit nein beantwortet, so wird ein Zustandscode von 2 in dem Statusregister 1311 gesetzt, wie dies durch die Schritte 2209 und 2210 entsprechend veranschaulicht ist. Diese Zustandscodes zeigen die Anzahl der Nachrichten der Nachrichtenwarteschlange des Semaphores Q/M/S an, auf die der P-Befehl gerichtet ist.
5 0 9 8 4 5/0765
25117296
4*0
Wird die im Schritt 2207 gestellte Frage mit nein beantwortet, bzw. liegt eine Ja-Antwort vor und ist der Zustandscode gesetzt, so wird der Schritt 2211 ausgeführt. In diesem Punkt ist es bekannt, daß eine Nachrichtenwarteschlange des Semaphores (Q/M/S) vorliegt und daß gewisse lests hinsichtlich des Semaphors ausgeführt werden müssen, um seine Legalität zu bestimmen. Im Schritt 2211 müssen sowohl die Nachrichtenwarteschlange-Kopf-Hinweisadresse MQHP und die Nachrichtenwarteschlange-Schwanz-Hinweisadresse MQTP des Semaphores ungleich von Null und einem Vielfachen von acht sein. Im Schritt 2212 wird die Nachrichtenverbindung, welche sich am Kopf der Q/M/S befindet, aus der Warteschlange ausgelesen und die Nachricht wird in die Generalregister 1307 der Zentraleinheit 104 übertragen. Somit ist die Nachricht in dem Generalregister 0 bis 3 des Prozesssteuerblockes, dessen Prozessverbindung an die Nachrichtenwarteschlange Q/M/S angebunden ist, diejenige, welche zu den Generalregistern des gerade laufenden, die Zentraleinheit steuernden Prozesses übertragen wird. Die Inhalte der Generalregister werden in die Speicherplätze 00 bis 03 des Zwischenspeichers gemäß Figur 19a übertragen.
Als nächster Schritt wird der Schritt 2401 gemäß Figur 22b ausgeführt, welcher die FLSC-Subroutine aufruft, die weiter vorne anhand Figur 24b beschrieben worden ist. Diese Subroutine ruft das Verbindungs-Freigabe-Semaphor ab und sichert seinen vorliegenden Zustand. Diese Subroutine wird ausgeführt, wenn eine Nachrichtenverbindung freigegeben worden ist und sie wird in der Warteschlange der freien Nachrichtenverbindungen abgelegt, auf die durch das Verbindungs-Freigabe-Semaphor FLS und die Warteschlange Q/ML/FLS hingewiesen wird. Im Schritt 2213 wird das hardwaremäßig vorhandene Gatter verriegelt, wodurch angezeigt wird, daß ein kritischer Zustand in dem System auftritt. Das Einschreiben des kritischen Zustandes in den Speicher wird durch die Subroutine RML im Schritt 2214 gemäß Figur 22e ausgeführt.
509845 /0765
2517296
Die Subroutine RML gibt die Nachrichtenverbindung frei, deren Nachricht auf den gerade laufenden und den P-Befehl ausführenden Prozess übertragen wird und sie ergänzt zusätzlich das Semaphor und die Warteschlange des Semaphors, welche zuvor die Nachrichtenverbindung enthielt. Dies wird durch die Schritte 2230 bis 2234 gemäß Figur 22e veranschaulicht. Insbesondere wird im Schritt 2230 die Nachrxchtenverbindung aus der Nachrichtenwarteschlange des Semaphores Q/M/S herausgeholt. Diese Entnahmeoperation verändert die Kopf-Kinweisadresse der Nachrichtenwarteschlange des Semaphors in dem Speicherplatz WC5 des Zwischenspeichers und schreibt sie in das nächste Verbindungsfeld der ersten Nachrichtenverbindung des Semaphors ein. Im Schritt 22 31 wird der erniedrigte Semaphorzählstand im Zwischenspeicher-Speicherplatz WC7 in den Zwischenspeicher-Speicherplatz WC4 übertragen, wodurch angezeigt wird, daß nunmehr eine Nachrichtenverbindung weniger an die Nachrichtenwarteschlange des Semaphores Q/M/S angebunden ist. Im Schritt 2232 werden die Inhalte der Zwischenspeicher-Speicherplätze WC4 und WC5 in den Hauptspeicher übertragen, so daß das Semaphor in dem Hauptspeicher nunmehr den laufenden Zustand aufweist. Der Speicherplatz im Hauptspeicher zeigt nunmehr an, daß eine Nachrichtenverbindung des Semaphors weniger vorliegt und dieses eine neue Kopf-Hinweisadresse der Nachrichtenwarteschlange besitzt, wodurch die erste Nachrxchtenverbindung bestimmt ist. Im Schritt 2233 wird die freie Nachrichtenverbindung im LIFO-Betrieb in die Warteschlange Q/ML/FLS eingereiht. Dies erfordert eine Änderung der FLQP-Hinweisadresse des Verbindungs-Freigabe-Semaphors, um auf diese Nachrichtenverbindung hinzuweisen, d. h. es wird nunmehr die Information von der FLSC-Subroutine im Schritt 2401 geschrieben. Zusätzlich wird der Inhalt des vorangegangenen FLQP-Feldes, der auf die erste Verbindung in der freien Nachrichtenverbindungs-karteschlange hinweist, in das nächste Verbindungsfeld der freien zu der Warteschlange Q/ML/FLS addierten Nachrxchtenverbindung übertragen. Auf diese Weise bleibt die logische Struktur der freien Nachrichtenverbindung intakt. Im Schritt 2234
50 9845/0765
2517296
wird das hardwaremäßig vorgesehene Gatter entriegelt, wodurch angezeigt wird, daß der systemkritische Zustand überwunden ist und es wird die RML-Subroutine zu Ende geführt.
Zurückkehrend auf den Schritt 2215 gemäß Figur 22b wird der Befehlszähler des gerade laufenden Prozesses um 1 erhöht. Normalerweise wird hiermit der P-Eefehl beendet, jedoch kann eine spezielle Situation auftreten, wenn eine freie Nachrichtenverbindung der Warteschlange Q/ML/FLS zur Verfügung gestellt worden ist und diese freie Nachrichtenverbindung die erste freie Nachrichtenverbindung in der Warteschlange darstellt. Diese Situation ergibt sich, wenn ein vorangegangener Prozess versucht hat, einen V-Befehl auszuführen, um eine Nachricht an das SD-Segment des Verbindungs-Freigabe-Semaphors zu liefern und dies nicht durchführen konnte.
Im Schritt 2216 wird überprüft, ob der neue Befehlszählerinhalt des Befehlszählers 1312 übergelaufen ist, wobei diese Prüfung nach jeder Erhöhung des Befehlszählerinhaltes durchgeführt wird. Liegt ein Überlauf vor, so wird im Schritt 2217 ein relativer Segmentadressenüberlauf angezeigt und die relative Segmentadresse des Befehlszählers auf einen Scheinwert von Null gesetzt und es wird zusätzlich ein Ausnahmezustand freigegeben, der ein überschreiten der Segmentgrenzen anzeigt. Dieser Schritt erscheint bei jeder Erhöhung des Befehlszählerinhaltes, z. B. im Schritt 2203.
Wenn im Schritt 2216 die Frage mit nein beantwortet wird, so findet im Schritt 2218 eine Überprüfung dahingehend statt, ob das CCT-FeId kleiner als Null ist. In diesem Fall muß auf das Verbindungs-Freigabe-Eeniaphor geachtet werden, um festzustellen, ob ein Ein-/Ausgabe-Gerät eine freie Nachrichtenverbindung in der Warteschlange Q/ML/FLS angefordert hat. Ist dies nicht der Fall, da z. B. der Zählerinhalt des CCT gleich Null ist, so wird
5 0 9845/0765
2517296
der Schritt 2220 in Figur 22c ausgeführt, in welchem überprüft wird, ob das FLSCT-FeId des Verbindungs-Freigabe-Semaphors gleich Null ist. Ist dies der Fall, so wird damit angezeigt, daß keinerlei Prozesse auf die gerade zu dem Verbindungs-Freigabe-Semaphor addierte freie Nachrichtenverbindung warten. Als Ergebnis hiervon wird der nächste Befehl 2221 des laufenden Prozesses ausgeführt. Wird die Frage im Schritt 2220 mit nein beantwortet, d. h. warten noch Prozesse auf die Ablieferung von Nachrichten, so wird im Schritt 2222 die System-Betriebsweise umgeschaltet. Durch Umschaltung der System-Betriebsweise wird erkannt, daß der Befehl ausgeführt ist. Wenn jedoch ein Fehler vorliegt, so wird der gerade ausgeführte Befehl als erfolgreich verarbeitet erkannt. Im Schritt 2223 wird die Subroutine FAR betreffend die Abruf- und Bereitschaftsadresse, wie sie weiter unten anhand von Figur 25b beschrieben wird, ausgeführt. Dadurch wird der vorangegangene, dem V-Befehl zugeordnete Prozess in der bereitgestellten Warteschlange C/PR/RDY ersetzt und es wird als Ergebnis der Zuteiler im Schritt 2224 angezeigt. War jedoch im Schritt 2218 das CCT-FeId kleiner als Null, da beispielsweise ein Lin/Ausgabe-Gerät eine Nachricht absetzen wollte und keine freien Nachrichtenverbindungen verfügbar waren, so wird der Schritt 2225 ausgeführt, der die System-Betriebsweise umschaltet, nachdem der Befehl ausgeführt ist. Im Schritt 2226 gemäß Figur 22d wird die RLCM-Subroutine aufgerufen, welche das Ein-/ Ausgabe-Gerät in die Lage versetzt, die gerade freigegebene Nachrichtenverbindung zu beanspruchen und im Schritt 2227 wird die System-Betriebsweise wiederum umgeschaltet, wodurch der nächste Befehl im Schritt 2228 ausgeführt werden kann. Somit sind in den Figuren 22b bis 22d nicht nur die P-Befehle in der Lage, die angeforderten Nachrichten zu empfangen, sondern es kann die freie Nachrichtenverbindung, welche zuvor die abgelieferte Nachricht speicherte, entweder zu dem Verbindungs-Freigabe-Semaphor oder zu dem Semaphor,bezüglich dessen die Ausführung des V-Befehles ohne Erfolg versucht wurde, übertragen werden.
50 9 845/0765
2517296
- MS, -
Auf diese Weise wird die P-Operation des Semaphors mit einer Nachricht und die verschiedenen Situationen vervollständigt, welche hinsichtlich des Zustandes des Semaphors und des Zustandes des Verbindungs-Freigabe-Semaphores auftreten können.
5. Befehle des Semaphors ·
Wenn in Figur 20b die im Schritt 2026 gestellte Frage mit ja beantwortet wird, d. h. wenn beispielsweise eine V-Operation ausgeführt worden ist, so tritt ein übergang zu der VN-Subroutine 2027 gemäß Figur 25a auf. Die folgende Beschreibung stellt eine Erläuterung verschiedener PermuLationen hinsichtlich eines V-Befehles dar, wobei dieser Befehl durch den laufenden Prozess ausgeführt wird.
Es sei hier in Erinnerung gerufen, daß in Figur 20 das Semaphor aufgerufen worden war und daß eine vorhergehende Bestimmung dahingehend gemacht worden war, daß eine V-Operation ausgeführt werden sollte. Im Schritt 2500 wird die Frage gestellt, ob das alte SCT-FeId, welches in dem Speicherplatz WC4 des Zwischenspeichers gespeichert ist, kleiner als Null ist, d. h.; ob an das abgerufene Semaphor angebundene Signale oder Nachrichten vorliegen. Diese Frage mißachtet somit den neuen Semaphor- Zählstand, der in Figur 20 vorausgesetzt wurde und der in einem Speicherplatz WC7 des Zwischenspeichers gespeichert ist. Wird die im Schritt 2500 gestellte Frage mit nein beantwortet, so addiert der V-Befehl wenn möglich ein anderes Signal oder eine andere Nachricht zu der Warteschlange des Semaphors.
Im Schritt 2501 werden der Operationscode und der Komplementärcode des V-Befehls überprüft, um festzustellen, ob ein V-Testbefehl ausgeführt werden muss.
Ergibt diese überprüfung, daß ein V-Testbefehl nicht vorliegt, so wird im Schritt 2502 überprüft, ob der maximale Semaphor-Zählstand (SMC) des
50 9845/0765
25Ί7296
- uu, -
Semaphors größer oder gleich dem neuen Semaphor-Zählstand ist, der im Schritt 2025 in den Zwischenspeicher eingespeichert wurde. Wenn der maximale Semaphor-Zählstand kleiner als der neue Semaphor-Zählstand ist, so wird dadurch angezeigt, daß in dem Semaphor mehr als durch das System erwartete Daten abgelegt worden sind und als Folge hiervon wird ein Ausnahmezustand in dem Schritt 2502a gesetzt. Wenn jedoch das Semaphor anzeigt, daß weitere Daten gespeichert werden können, so wird eine Verzweigung nach dem Schritt 2503 auf die Subroutine VP vorgenommen. Vor Erläuterung dieser Verzweigung sollen die Schritte 2504 bis 2507 erläutert werden.
Im Schritt 2504 wurde festgestellt, daß ein Testbefehl vorliegt. Sodann wird, wie im Falle des Schrittes 2502,überprüft, ob der maximale Semaphor-Zählstand des Semaphores größer oder gleich dem neuen Semaphor-Zählstand ist, wobei dieser neue Zählstand im Schritt 2025 errichtet wurde. Ist dies nicht der Fall, d. h. ist der neue Semaphor-Zählstand größer, so kann der. V-Befehl nicht ausgeführt werden. Als Folge hiervon wird ein Zustandscode von 3 in dem Statusregister 1311 im Schritt 2505 gesetzt und der Befehlszähler des laufenden Prozesses wird im Schritt 2506 um 1 erhöht, um dadurch den nächsten Befehl auszuführen. Wird die Frage im Schritt 2504 mit ja beantwortet, wodurch angezeigt wird, daß das Semaphor zusätzliche Daten speichern kann, so erfolgt eine Verzweigung auf die positive V-Subroutine im Schritt 2503. Die positive V-Subroutine gemäß Figur 26 ermöglicht das Hinzufügen zusätzlicher Nachrichten oder Signale zu dem Semaphor.
A. V-Befehl für Semaphors mit einem positiven SCT-FeId
Im Schritt 2600 wird der Operationscode und der Komplementärcode des V-Befehls in der Befehlabrufeinheit 1318 geprüft, um festzustellen, ob eine V-Operation hinsichtlich eines keine
5098 45/0765
2517296
Nachricht betreffenden Semaphores vorliegt oder nicht. Wird die Frage im Schritt 2600 mit ja beantwortet, so findet eine Verzweigung nach dem Schritt 2601 statt. Im Schritt 2601 wird der im Schritt 2024 gemäß Figur 20b entwickelte und erhöhte SCT-Zählerinhalt aus dem Speicherplatz WC7 des Zwischenspeichers wieder aufgesucht und in den Speicherplatz WC4 des Zwischenspeichers übertragen. Im Schritt 2602 wird das Hardware-Gatter verriegelt und im Schritt 2603 wird der erhöhte SCT-Zählerinhalt in das Semaphor im Hauptspeicher eingeschrieben, womit angezeigt wird, daß ein anderes Signal des Semaphors ohne eine Nachricht verfügbar ist. Im Schritt 2604 wird das Hardware-Gatter entriegelt, womit das Ende des kritischen Systemzustandes signalisiert wirdjUnd der Befehl wird vervollständigt.
Wenn jedoch im Schritt 2600 der V-Befehl ein Nachrichten-Semaphor betrifft, so wird der Schritt 2605 ausgeführt. Im Schritt 2605 wird überprüft, ob das SCT-FeId größer als Null ist. Es ist bereits festgestellt worden, daß der Semaphor-Zählerinhalt nicht kleiner als Null ist, so daß für den Fall, daß er auch nicht größer als Null ist, er gleich Null sein muß..Wird die Frage demnach mit,nein beantwortet, so werden im Schritt 2606 die Schwanz-Hinweisadresse der Nachrichten-Warteschlange MQTP und die Kopf-Hinweisadresse der Nachrichten-Warteschlange MQHP in den entsprechenden, durch den V-Befehl adressierten Feldern, des Nachrichten-Semaphors daraufhin überprüft, ob sie gleich Null sind, falls keine Nachrichten-Warteschlange des Semaphores Q/M/S vorliegen soll.
Wenn jedoch die Frage im Schritt 2605 mit ja beantwortet wird, d. h. wenn Nachrichten hinsichtlich des Semaphores vorhanden sind, so wird der Schritt 2607 ausgeführt, in welchem die MQTP- und MQHP-Felder dahingehend überprüft werden, ob sie ungleich Null sind und ein Vielfaches von acht darstellen, wie dies zuvor beschrieben worden ist. Wenn dieser Zustand vorliegt, so
509845/0765
2517296
wird im Schritt 2401 die FLSC-Subroutine ausgeführt. Diese Subroutine überprüft in der zuvor anhand von Figur 24b erläuterten Weise das Verbindungs-Freigabe-Semaphor und speichert seinen Inhalt in den Speicherplätzen WCB, WCC und WCD des Zwischenspeichers.
Bei der Zurückkehr von der Subroutine im Schritt 2608 wird die Operationsart überprüft. Liegt ein V-Befehl hinsichtlich eines Semaphores mit einer Nachricht, SEVFL, SEVTL vor, so wird der Schritt 2609 ausgeführt. Ist dies nicht der Fall, d. h. liegt beispielsweise ein Ein-/Ausgang«·Befehl, ein P-Befehl oder eine V-Ausnahme-Behandlungsoperation vor, so wird der Schritt 2608a und die Subroutine SVP ausgeführt. Diese Subroutine ermöglicht die Abgabe der Nachricht an das Semaphor.
Wenn jedoch ein V-Befehl hinsichtlich des auszuführenden Prozesses vorliegt, so wird im Schritt 2609 das FLQP-FeId des Verbindungs-Freigabe-Semaphores überprüft, um festzustellen, ob es gleich Null ist. Es sei hier festgestellt, daß sowohl das Semaphor, als auch das Verbindungs-Freigabe-Semaphor bei der überprüfung legale Darstellungen ergeben. Wenn die FLQP-Hinweisadresse nicht gleich Null ist, so wird dadurch angezeigt, daß noch freie Verbindungen verfügbar sind. Die nächste im Schritt 2610 gestellte Frage läuft daher darauf hinaus, ob ein V-Testbefehl vorliegt. Wird die Frage mit ja beantwortet, so wird im Schritt 2611 ein Zustandscode auf 2 gesetzt und in jedem anderen Fall, ganz gleich, ob ein V-Testbefehl vorliegt oder nicht, gelangt der Schritt 2612 gemäß Figur 26b zur Ausführung.
Im Schritt 2612 wird überprüft, ob die Nachrichtenverbindung innerhalb des SD-Segmentes liegt. Zu diesem Zeitpunkt ist das Verbindungs-Freigabe-Semaphor in der Lage, eine freie Nachrichtenverbindung freizugeben, um die Nachricht betreffend den den V-Befehl ausführenden laufenden Prozess einzuschreiben. Es wird
509845/0765
2517296
sodann eine Feststellung dahingehend gefordert, ob die freie Nachfichtenverbindung innerhalb der physikalischen Grenzen des SD-Segmentes liegt oder nicht. Liegt die Nachrichtenverbindung innerhalb des Segmentes, so wird die Priorität des laufenden Prozesses in den Bits 24 bis 27 in die freie Nachrichtenverbindung übertragen. Nachdem dies geschehen ist, wird im Schritt 2613 eine Subroutine TAML ausgeführt, welche den Zugriff zu der Nachrichtenverbindung überprüft Und im günstigen Fall die Nachrichtenverbindung in der Warteschlange des Semaphores Q/M/S abspeichert.
Die TAML-Subroutine ist in Figur 26c dargestellt und nimmt im Schritt 2630 eine Prüfung dahingehend vor, ob ein V-Befehl hinsichtlich des Semaphores mit einer Nachricht vorliegt, wobei die Nachricht in ihrer Priorität in die Warteschlange eingereiht ist. Bei dieser Prüfung wird das STAG-FeId des Semaphores im Speicherplatz WC4 des Zwischenspeichers überprüft. Wenn diese Prüfung ein Semaphor mit Priorität ergibt, so wird anschließend im Schritt 2631 das SCT-FeId geprüft, ob es gleich Null ist. Wenn der Zählstand des Semaphores nicht gleich Null ist, so wird dadurch angezeigt, daß Nachrichtenverbindungen bestehen, die an die Warteschlange des Semaphores Q/M/S angebunden sind, und es wird daher im Schritt 2304 gemäß Figur 23e Subroutine PRIQ ausgeführt. Die Subroutine PRIQ verwirklicht, wie zuvor erläutert, die Prioritätsabspeicherung der Nachricht in der Nachrichtenverbindung und überprüft die Gültigkeit der benachbarten Nachrichtenverbindung. Diese Information wird in den Speicherplätzen WDB bis WDE des Zwischenspeichers durch die PRIQ-Subroutine abgespeichert, so daß anschließend die UQLK-Subroutine die Information in den Hauptspeicher einschreiben kann.
509845/0765
2517296
Wenn die im Schritt 2630 gestellte Frage mit nein beantwortet wird, d. h. wenn beispielsweise kein mit Priorität in die Warteschlange eingereihtes Nachrichten-Semaphor vorliegt, oder wenn die im Schritt 2631 gestellte Frage mit ja beantwortet wird, d. h. wenn der SCT-Zählstand Null ist und somit anzeigt, daß keine Nachrichten in die Warteschlange des Semaphors eingereiht sind, so wird der tatsächliche Speicherplatz der Nachrichtenverbindung später bestimmt. Im Schritt 2632 wird die erste freie Nachrichtenverbindung des Verbindungs-Freigabe-Semaphors Q/ML/ FLS aus dem Hauptspeicher in das ALU 1317 gelesen. Diese freie Nachrichtenverbindung ist .diejenige, auf welche durch die FLQP-Hinweisadresse des FLS-Semaphors hingewiesen wird. Im Schritt 2633 wird das nächste Verbindungsfeld der freien Nachrichtenverbindung in den Speicherplatz W32 des Zwischenspeichers nach einem Test auf ein Vielfaches von acht übertragen. Dieses nächste Verbindungsfeld wird eventuell zurückübertragen und in die FLQP-Hinweisadresse des Verbindungs-Freigabe-Semaphors eingeschrieben. Anschließend bestimmt das FLS-Semaphor die zweite freie Nachrichtenverbindung als die am Kopf befindliche freie Nachrichtenverbindung der Warteschlange, da die erste freie Nachr richtenverbindung durch den V-Befehl benutzt wird. Anschließend an den Schritt 26 33 ist die Subroutine beendet und es findet eine Rückkehr zum Schritt 2614 gemäß Figur 26b statt.
Im Schritt 2614 wird auf die Subroutine MTT verwiesen, welche bereits.im Schritt 2303 gemäß Figur 23a erwähnt wurde. Die MTT-Subroutine veranlasst eine Bewegungsfunktion und bewirkt die Verschiebung einiger der Felder in der Nachricht nach einem zeitweiligen Speicherplatz in dem Arbeitsspeicher. Der Grund hierfür liegt darin, daß das erste eineinhalb Wort, z. B. die Nachrichtenkopfanzeige gemäß Schritt 1508 in Figur 15 aufgebaut werden muß. Die eigentliche Nachricht, welche aus den nächsten zweieinhalb Worten der Nachrichtenverbindung besteht, wird durch den laufenden Prozess erzeugt.
509845/076 5
2517296
Weiter werden im Schritt 2640 gemäß Figur 26d das STAG-FeId mit den Bits 0 bis 3 des Semaphors mit einer Nachricht überprüft. Wenn das STAG-FeId anzeigt, daß kein Semaphor mit Priorität vorliegt, so wird der Schritt 2641 ausgeführt, wodurch die Bits 28 bis 31 des MPL-Feldes der Nachrichten-Kopfanzeige auf den Wert 1111 gesetzt werden, welches anzeigt, daß keine Nachricht mit Priorität vorliegt. Wenn jedoch das STAG-FeId anzeigt, daß eine Nachricht mit Priorität vorliegt, so wird im Schritt 2642 aus dem Generalregister 0 (1309) die Priorität des den V-Befehl ausführenden Prozesses gelesen. Diese Priorität wird sodann in die Bits 24 bis 27 des Nachrichten-Prioritätsfeldes eingeschrieben. Zur gleichen Zeit wird hinsichtlich der Bits 28 bis 31 der Nachrichtenverbindung ein Test durchgeführt, um zu bestimmen, ob ein Wert von Null in diesen vier Bits vorhanden ist. Ist dies nicht der Fall, so liegt eine illegale Datendarstellung vor, wie dies durch den im Schritt 2642a erzeugten Ausnahmezustand angezeigt ist.
In jedem Fall wird im Schritt 2643 das Nachrichten-Hinweisfeld mit den Bits 20 bis 23 errichtet. In diesem besonderen Fall weisen die Bits des Nachrichten-Hinweisfeldes alle den Binärwert Null auf, da keine Ein-/Ausgabe-Operation vorliegt. Im Schritt 2643 wird ebenfalls der laufende Prozessname in die Bits 32 bis 47 eingeschrieben, wodurch der laufende Prozess angezeigt wird, der den V-Befehl ausgeführt hat. Im Schritt 2644 wird die durch den V-Befehl zu liefernde Nachricht in die Speicherplätze WE4 bis WE7 des temporären Speicherregisters übertragen. Die eigentliche Nachricht wird durch die nächsten zweieinhalb Worte innerhalb der Nachrichtenverbindung, d. h. durch die Bits 48 bis 127 beschrieben. Im Schritt 2645 wird die nunmehr im temporären Speicherregister vorhandene Nachrichten-Kopfanzeige in das Generalregister 0 und die ersten 16 Bits des Generalregisters 1 des laufenden Prozesses übertragen. Auf diese Weise ist die vollständige, an die Nachrichtenverbindung abzuliefernde Nachricht
509845/0765
2517296
nunmehr in den Generalregistern O bis 3 des Generalregisters 1309 vorhanden. Wenn festgestellt wurde, daß eine Nachrichtenverbindung nicht verfügbar war, so wird der gerade laufende Prozess in den Wartezustand versetzt, wobei seine Generalregister die Nachricht in den Generalregistern 0 bis 3 seines PCB speichern. Auf diese Weise wird durch die Subroutine MTT nicht nur die Nachricht errichtet, sondern auch sichergestellt, daß sie für einen weiteren Gebrauch gespeichert bleibt.
Nach der vollständigen Ausführung der MTT-Subroutine gelangt der Schritt 2616 gemäß Figur 26b zur Ausführung/Dieser Schritt bewirkt die Speicherung der absoluten Adresse der Nachrichtenverbindung. Wenn die relative Adresse durch die Kopf-Hinweisadresse der freien Verbindungswarteschlange FLQP gegeben ist, so wird die absolute Adresse aus dieser entwickelt und sodann in dem Speicherplatz W3Q des temporären Speicherregisters abgespeichert. Im Schritt 2617 wird die Subroutine TTM ausgeführt. Durch diese Subroutine wird die auf ein Doppelwort ausgerichtete Information innerhalb der Speicherplätze WE4 bis WE7 des temporären Speicherregisters in den Hauptspeicher übertragen. Die TTM-Subroutine legt somit die Nachrichtenverbindung in der absoluten Adresse im Hauptspeicher ab.
Die TTM-Subroutine ist in Figur 26c dargestellt und umfasst insbesondere den Schritt 2648, durch welchen das erste Doppelwort der Nachrichtenverbindung aus den Speicherplätzen WE4 und WE5 des temporären Speicherregisters ausgelesen und in den Hauptspeicher übertragen werden und sie umfasst weiterhin den Schritt 2649, in welchem aus den Speicherplätzen WE6 und WE7 des Zwischenspeichers das zweite Doppelwort der Nachrichtenverbindung in den Hauptspeicher eingeschrieben wird.
509845/0765
2517296 XOV
Nachdem die Nachrichtenverbindung mit der richtigen Information errichtet worden ist, wird im Schritt 2618 das Hardware-Gatter verriegelt, wodurch angezeigt wird, daß eine kritische Zustandsoperation ausgeführt werden soll und es wird im Schritt 2619 die QML-Subroutine ausgeführt, durch welche die innerhalb der TAML-Subroutine 2613 vorbereitete Nachrichtenverbindung übertragen wird. Der Grund für das Erfordernis zweier Subroutinen ist der, daß eine ungeteilte Operation für das Einschreiben in den Hauptspeicher erforderlich ist, was die Verriegelung des Hardware-Gatters nach sich zieht. Die Vorbereitung der Information ist keine kritische Operation und kann unterbrochen werden. Es wird somit eine getrennte Subroutine zur Prüfung der Information vor dem Einschreiben der Information in den Hauptspeicher durchgeführt und für den Fall des verriegelten Hardware-Gatters übernimmt die zweite Subroutine das eigentliche Einschreiben, wie aus dem Schritt 2619 der QML-Subroutine gemäß Figur 26f ersichtlich ist.
Insbesondere reiht die QML-Subroutine die freie Nachrichtenverbindung aus der Warteschlange Q/ML/FLS aus und reiht die befreite Nachrichtenverbindung in das Semaphor mit Nachrichten ein, indem es entweder zu der Warteschlange der Nachrichten des Semaphores Q/M/S die befreite Nachrichtenverbindung addiert oder die erste Nachrichtenverbindung hinsichtlich der Warteschlange des Semaphores bildet. Im Schritt 2650 wird somit die erste freie Verbindung des Verbindungs-rFreigabe-Semaphors aus der Warteschlange ausgereiht. Dies wird bewerkstelligt durch Übertragung des nächsten Verbindungsfeldes der gerade befreiten Nachrichtenverbindung aus dem Speicherplatz W32 des Zwischenspeichers in die FLQP-Hinweisadresse des FLS-Semaphors im Speicherplatz WCC des Zwischenspeichers. Im Schritt 2651 wird hinsichtlich des Semaphores, auf das der V-Befehl gerichtet ist, überprüft, ob dieses leer ist, bzw. ob frühere Nachrichtenverbindungen des Semaphores bestehen. Wird diese Frage mit ja beantwortet, was
509845/0765
2517296
bedeutet, daß das Semaphor keine zusätzlichen, an seine Warteschlange angebundenen Nachrichtenverbindungen aufweist, so wird im Schritt 2652 bestimmt, daß die Kopf-Hinweisadresse der Nachrichtenwarteschlange und die Schwanz-Hinweisadresse der Nach·?· richtenwarteschlange des Semaphores geändert werden sollen, um die relative Adresse der im Schritt 2650 bestimmten Nachrichtenverbindung anzuzeigen. Zusätzlich wird das nächste Verbindungsfeld dieser Nachrichtenverbindung auf Null gesetzt, da es die einzige Nachrichtenverbindung darstellt, die an die Warteschlange des Semaphores Q/M/S angebunden ist. Anschließend wird im Schritt 2653 das um 1 erhöhte SCT-FeId des Semaphores aus dem Speicherplatz WC7 des Zwischenspeichers abgerufen und in den Speicherplatz WC4 des Zwischenspeichers übertragen. Im Schritt 2654 werden die gesamten Inhalte der Speicherplätze WC4 und WC5 des Zwischenspeichers in die befreite Nachrichtenverbindung im Hauptspeicher übertragen (Schritt 2650). Auf diese Weise wird nicht nur die Nachricht in die Nachrichtenverbindung im Hauptspeicher eingeschrieben, sondern es wird auch das auf die Nachrichtenverbindung hinweisende Semaphor im Schritt 2654 ergänzt.
Wird die im Schritt 2651 gestellte Frage mit nein beantwortet, was bedeutet, daß zusätzliche, an das Semaphor angebundene Nachrichtenverbindungen bestehen, so wird im Schritt 2655 geprüft, ob hinsichtlich des Priorität aufweisenden Semaphores ein Befehl ausgeführt wird oder nicht. Ist dies nicht der Fall, so wird im Schritt 2656 die Frage gestellt, ob ein V-Befehl vorr liegt/der in FIFO-Betriebsart verarbeitet wird. Dies wird durch überprüfung des Operationscodes und des Komplementärcodes, d. h. der ersten 12 Bits des V-Befehls in der Befehlabrufeinheit 1318 festgestellt. Ergibt diese Prüfung, daß eine Einreihung in die Warteschlange nach FIFO-Betriebsart erfolgt, so wird hiermit angezeigt, daß die Nachrichtenverbindung die letzte innerhalb der Warteschlange ist. Im Schritt 2657 wird daher die Schwanz-Hinweisadresse der Nachrichtenwarteschlange des Semaphores ergänzt, und es wird das nächste Verbindungsfeld der in die Warteschlange des Semaphores einzureihendenNachrichtenverbindung auf
509845/0765
2517296 ΧΟΛ
Null gesetzt, da es das letzte innerhalb der Warteschlange ist. Sodann werden die Schritte 2653 und 2654 ausgeführt, wodurch sowohl das Semaphor, als auch die Nachrichtenverbindung ergänzt werden.
Wenn die im Schritt 2656 gestellte Frage mit nein beantwortet wird, so wird das Einreihen in der LIFO-Betriebsweise angezeigt, und es wird im Schritt 2658 die Kopf-Hinweisadresse der Nachrichtenwarteschlange des Semaphores ergänzt und die alte, in dem Semaphor enthaltene Kopf-Hinweisadresse der Nachrichtenwarteschlange in das nächste Verbindungsfeld der in die Warteschlange des Semaphores einzureihenden Nachrichtenverbindung übertragen..Dies ergibt sich, wenn die durch den V-Befehl des gerade laufenden Prozesses abzuliefernde Nachricht, die erste Nachricht für einen P-Befehl des gleichen Semaphores darstellt. Infolgedessen wird die Nachricht am Kopf der Warteschlange Q/M/S abgelegt. Anschließend werden die zuvor beschriebenen Schritte 2653 und 2654 ausgeführt.
Wenn im Schritt 2655 die Frage mit ja beantwortet wird, d. h. wenn eine Priorität die Einreihung in die Warteschlange erfordert, so ist die für die Einreihung in die Warteschlange erforderliche Information bereits durch die TAML-Subroutine 2613 gemäß Figur 26e und durch die durch diese Subroutine referierte UQLK-Subroutine 2311 gemäß Figur 23h entwickelt worden. Die UQLK-Subroutine bewirkt das Einschreiben dieser Information hinsichtlich der Prozess-Verbindungfelder in den Hauptspeicher. Diese Situation tritt auf, wenn es erforderlich ist, die Nachrichtenverbindung irgendwo in der Mitte der an das Semaphor angebundenen Nachrichtenwarteschlange abzulegen. Die UQLK-Subroutine 2311 ordnet die Nachrichtenwarteschlange entsprechend ihrer Priorität neu, so daß nachfolgend eine Anforderung nächster Verbindungsfelder erzeugt wird. In den Schritten 2653 und 2654 wird diese Information in die Speicherplätze des Hauptspeichers hinsichtf lieh des Semaphores, dessen Nachrichtenverbindungen über ihre
509845/0 7-6 5
2517296
Priorität in die Warteschlange einzureihen sind, übertragen.
Nach Beendigung der Subroutine QML ergibt sich aus Figur 26b, daß als nächster Schritt der Schritt 2620 auszuführen ist, welcher das Hardware-Gatter entriegelt und dadurch anzeigt, daß der kritische Systemzustand nicht mehr besteht. Nach dem Schritt 2620 zeigt der Schritt 2621 an, daß der Befehlszähler 1312 des laufenden Prozesses um 1 erhöht worden ist und der nächste Befehl im Schritt 2622 folgen kann.
B. V-Befehl hinsichtlich Semaphors mit Nachrichten, wenn keine freien Nachrichtenverbindungen verfügbar sind.
Wenn im Schritt 2609 gemäß Figur 26a die Frage mit ja beantwortet wird, d. h. wenn die FLQP-Hinweisadresse des FLS-Semaphors gleich Null war und somit angezeigt wurde, daß keine freien Verbindungen verfügbar sind, so wird anschließend im Schritt 2623 gefragt, ob ein Testbefehl vorliegt. Liegt ein V-Testbefehl vor, so bestimmt der Schritt 2624, daß ein Zustandscode im Statusregister 1311 auf den Wert 1 gesetzt wirdfund der Befehlszähler 1312 wird um 1 erhöht und der nächste Befehl im Schritt 2622 ausgeführt. Wenn die Frage im Schritt 2623 mit nein beantwortet wird, so hat der den V-Befehl ausführende Prozess seine Nachricht nirgendwo abzuliefern, da keine freie Nachrichtenverbindungen des Verbindungsfreigabe-Semaphores in dem SD-Segment gemäß Figur 15 verfügbar sind. Infolgedessen wird im Schritt 2625 das FLS-Semaphor in ein Semaphor mit einer Nachricht umgewandelt, wodurch es in die Lage versetzt wird, einen Prozess zu verarbeiten. Dies entspricht einem Semaphor mit einem negativen SCT-FeId, mit welchem ein P-Befehl ausgeführt wird. Der V-Befehl kann somit durch den gerade laufenden Prozess nicht ausgeführt werden und das Verbindungs-Freigabe-Semaphor speichert infolgedessen den gerade ausgeführten Prozess, der in den Wartezustand
509845/0765
2517296
übergeführt worden ist. Da dies eine typische P-Operation ist, wird im Schritt 2625 die Information des Verbindungs-Freigabe-Semaphors für die Übertragung freigegeben und es wird im Schritt 2121, welcher das E-FeId der VP-Subroutine darstellt, das FLS-Semaphor in der gleichen Weise wie ein Nachrichten-Semaphor mit einem P-Befehl behandelt. Im Schritt 2625 wird die Hinweisadresse FLSP des Verbindungs-Freigabe-Semaphores zur relativen Adresse des Semaphores umgewandelt. Der FLSCT-Zählstand, der Null
oder kleiner als Null gewesen ist, da zuvor keine freien Nachrichtenverbindungen verfügbar gewesen sind, wird nun um 1 erniedrigt, um anzuzeigen, daß das Verbindungsfreigabe-Semaphor
die absolute Zahl der FLSCT-Prozesse, welche nicht in der Lage waren, Nachrichten abzusetzen, speichert. Das Verbindungsfreigabe-Semaphor, welches in ein Semaphor umgewandelt wird, ist
ebenfalls graphisch dargestellt. Nach dem Schritt 2625 wird das E-FeId der zuvor anhand von Figur 23a erläuterten VP-Subroutine 2121 ausgeführt, welches im wesentlichen der Bildung einer Warteschlange von Prozessen hinsichtlich des Verbindungsfreigabe-Semaphores Q/PR/FLS dient, indem eine Prozessverbindung aus dem
GO-Segment gemäß Figur 17 genommen wird und der gerade laufende Prozess in den Wartezustand versetzt wird. Hierdurch werden die V-Befehle hinsichtlich eines ein SCT-FeId mit einem Wert größer als Null aufweisenden Semaphores beendet.
C. V-Befedhle hinsichtlich eines Semaphores mit einem negativen SCT-FeId.
Zurückkehrend zu Figur 25a wird im Schritt 2500 das alte SCT-FeId überprüft, ob es kleiner als Null ist. Ist dies der Fall, so wird hiermit angezeigt, daß vorangegangene Prozesse Daten
von dem Semaphor angefordert haben. Falls das Semaphor diese
Daten nicht aufwies, so wurden die Prozesse in den Wartezustand
509845/0765
2517296
— 130 —
versetzt, bis die Daten verfügbar waren. Nunmehr, wo ein V-Befehl hinsichtlich des Semaphores zur Ausführung gelangt, ist nicht nur der vorangegangene Prozess, dem die erforderlichen Daten zugeführt werden, um ihn aus dem-Wartezustand herauszuholen, sondern auch der gerade laufende Prozess in der Lage, seine Nachricht abzuliefern und somit im Ablaufzustand zu verbleiben. Somit werden durch die verbleibenden Teile von Figur 25 Funktionen beschrieben, welche sowohl von dem gerade laufenden Prozess, als auch von einem Prozess ausgeführt werden, der in den Wartezustand versetzt worden ist, da die Daten nicht verfügbar waren.
In den Schritten 2508 bis 2512 werden Semaphors mit und ohne Nachricht bereitgestellt und im Schritt 2513 wird die Information von dem gerade laufenden, den V-Befehl ausführenden, Prozess zu dem Prozess hinsichtlich des Semaphores übertragen, welches die Daten angefordert hat. Im Schritt 2508 wird überprüft, ob eine V-Operation hinsichtlich eines Semaphors ohne Nachricht vorliegt. Ist dies der Fall, wodurch angezeigt wird, daß eine Warteschlange von Prozessen hinsichtlich des Semaphores ohne Nachricht Q/PR/S vorliegt, so wird die Kopf-Hinweisadresse der Prozesswarteschlange des Semaphores im Schritt 2509 überprüft, um festzustellen, ob sie ein Vielfaches von 8 beträgt und ungleich Null ist oder nicht. Ist dies nicht der Fall, so wird im Schritt 2510 überprüft, ob ein V-Testbefehl hinsichtlich eines Semaphores mit einer Nachricht vorliegt. Liegt ein Testbefehl vor, so wird im Schritt 2511 ein Zustandscode auf-Null gesetzt, wodurch angezeigt wird, daß nicht nur das SCT-FeId negativ ist, sondern auch bei der Ausführung des V-Befehls ein Prozess in den Vorbereitungszustand versetzt worden ist. In jedem Fall, ganz gleich, ob ein Testbefehl vorliegt oder nicht, gelangt der Schritt 2512 zur Ausführung, in welchem überprüft wird, ob die Schwanz-Hinweisadresse der Nachrichtenwarteschlange gleich Null ist und ob die Kopf-Hinweisadresse
5098A5/0765
2517296
der Prozesswarteschlange aus den zuvor erwähnten Gründen ungleich Null ist und ein Vielfaches von acht beträgt.
Wenn sich die Datstellung des Semaphores als legal herausstellt, so wird im Schritt 2513 die den Abruf- und Bereitschafts-Prozess behandelnde FAR-Subroutine ausgeführt. Diese Subroutine liefert die Nachricht für den vordersten Prozess des Semaphors und vervollständigt somit den V-Befehl hinsichtlich des Semaphors mit einer Nachricht. Diese Subroutine verändert zusätzlich den PCB des Prozesses, dem die Nachricht zugeführt wird, so daß der Zuteiler diesen Prozess in der vorbereiteten Warteschlange ablegen kann.
Die FAR-Subroutine 2513 ist in Figur 25b dargestellt. Der erste Schritt der FAR-Subroutine dient dem Zugriff zu der FGO-Subroutine 2321, die zuvor anhand von Figur 23d beschrieben wurde. Die FGO-Subroutine entwickelt die Kopf-Hinweisadresse für das GO-Segment. Im Schritt 2520 wird zu der ersten Verbindung des den Prozess speichernden Semaphors Q/PR/S Zugriff genommen. Auf diese Weise wird die Kopf-Hinweisadresse der Prozesswarteschlange des Semaphores zu der von der FGO-Subroutine entwickelten Adresse addiert, um die erforderliche Prozessverbindung zu erzeugen. Es sei darauf hingewiesen, daß im Falle eines Verbindungsfreigabe-Semaphors die Prozessverbindung aus dem PQHP-FeId entwickelt wird, welches der Adresse des GO-Segmentes im Schritt 2520 hinzuaddiert wird. Anschließend wird im Schritt 2521 auf die Subroutine RNP Zugriff genommen, wodurch die FAR-Subroutine endet.
Die Subroutine RNP ist anhand des Schrittes 2521 in Figur 25c dargestellt. Sie bewirkt die Bereitstellung eines in dem Wartezustand befindlichen Prozesses. Diese Subroutine wurde ebenfalls in dem Schritt 2408 gemäß Figur 24a ausgeführt, wo ein an das
509845/0765
25172.96
- 2ΑΘ -
FLS-Semaphor angebundener Prozess seine Nachricht lieferte. Es sei in Erinnerung gerufen, daß die dortige Situation den gerade laufenden, einen P-Befehl ausführenden und eine Nachricht anfordernden Prozess betraf. Die Nachricht wurde nicht abgeliefert, da keine freien Nachrichtenverbindungen zu diesem Zeitpunkt verfügbar waren. Infolgedessen wurde die Nachricht übertragen und der Prozess, welcher nicht in der Lage war, seine Nachricht abzugeben, wurde sodann aus dem Wartezustand herausgenommen und in die bereitstehende Warteschlange eingereiht. Danach wurde die Erläuterung der Subroutine RMP unterbrochen.
Die RNP-Subroutine veranlasst infolge ihrer Zuteilfunktion die Abgabe der Steuerung des gerade laufenden Prozesses, wenn der Prozess am Kopf der Bereitschaftswarteschlange eine höhere Priorität aufweist. Figur 14 erläutert dies in näheren Einzelheiten.
Wenn die RNP-Subroutine einen anderen, als den gerade ablaufenden und im Ablaufzustand befindlichen Prozess behandelt, muss sie zuerst diesen anderen Prozess bestimmen. Es wird daher im Schritt 2522 die PCBA-Subroutine aufgerufen, welche in Figur 25a dargestellt ist. Diese Subroutine ruft die absolute Adresse des Prozess-Steuerblockes auf, der den im Wartezustand befindlichen Prozess enthält. Insbesondere wird im Schritt 2560 die P-Tabellen-Hinweisadresse unter Benutzung der J-Nummer abgerufen. Dies beinhaltet unter Bezugnahme auf die Figuren 5 und 17 die Entnahme der J-Tabelle aus dem Easissystem und die Indizierung der Tabelle mit der J-Nummer zur Entwicklung einer Hinweisadresse auf die P-Tabelle.
Im Schritt 2561 wird auf die Hinweisadresse der P-Tabelle Bezug genommen und die P-Nummer wird indiziert und zu der Kinweisadresse hinzuaddiert, um aus der P-Tabelle die Adresse des Prozess-Steuerblockes zu erzeugen. Die Adresse des Prozess-Steuerblockes wird sodann von dem Hauptspeicher in das Rechenwerk 1317
509845/0765
2517296
abgerufen. Im Schritt 2562 wird das erste Bit überprüft, um festzustellen, ob sich der Prozess-Steuerblock im Hauptspeicher befindet, d. h.^ daß es sich nicht um einen vakanten Prozess-Steuerblock handelt. Zusätzlich werden Tests hinsichtlich der Bits 1 bis 7 durchgeführt, um festzustellen, ob diese Null sind. Die verbleibenden Teile des ersten Wortes werden sodann im Schritt 2563 in dem Speicherplatz NJA des Zwischenspeichers abgespeichert, da diese 24 Bits die absolute Adresse des Prozess-Steuerblockes bilden (Figur 19a).
Nach Beendigung der Subroutine PCBA 2522 wird der Schritt 2523 gemäß Figur 25c ausgeführt. Im Schritt 2523 werden der Operar tionscode und der Komplementärcode des Befehls überprüft. Handelt es sich um einen Ein-/Ausgabe-Befehl, so gelangt der Schritt 2524 zur Ausführung, in welchem die eine Nachricht darstellenden Daten in die PCB-Adresse plus 84 gespeichert werden, welche die Adresse des Generalregisters.0 in dem PCB darstellt. Liegt ein V-Befehl hinsichtlich einer Nachricht oder V-Testbefehl hinsichtlich einer Nachricht vor, so wird im Schritt 2525 die in den Generalregistern GRO bis GR3 gespeicherte Information des laufenden Prozesses in den temporären Speicher mittels der Subroutine MTT übertragen, welche Subroutine in Figur 26d unter dem Schritt 2614 beschrieben ist. Im Schritt 2524 wird sodann die Nachricht wiederum in die PCB-Adresse plus 84 übertragen.
In jedem Fall wird im Schritt 2617 die Subroutine TTM ausgeführt, um die Nachricht in den Hauptspeicher einzuschreiben. Diese Übertragung erfolgt von den Speicherplätzen WE4 bis WE7 des temporären Speichers in den Prozess-Steuerblock.
Wenn der Test im Schritt 2523 hinsichtlich des Operationscodes ergab, daß ein V-Befehl hinsichtlich eines Semaphores ohne Nachricht vorlag, so besteht kein Erfordernis zur Speicherung von Nachrichten in dem Prozess-Steuerblock-Speicherplatz plus 84..
509845/0765
2517296
In jedem Fall wird jedoch der Schritt 2527 ausgeführt, welcher das interne Warteschlangenwort abruft, das den Kopf der Bereitschaftswarteschlange bestimmt. Es sei an dieser Stelle vermerkt, daß eine zusätzliche Eingangsstelle bei dem Schritt 2528 vorgesehen ist, welche Eingangsstelle die Verzweigung von einem Startbefehl darstellt. Der Startbefehl erfordert lediglich eine übertragung einiger Prozesse in die Bereitschaftswarteschlange und somit den Speicherplatz des IQW-Wortes.
Nach dem Abruf des internen Prozess-Warteschlangenwortes wird die Subroutine PRIQ 2304, welche in Figur 23e beschrieben wurde, ausgeführt. Diese Subroutine legt fest, wo der Prozess, der zuvor eine P-Operation hinsichtlich des Semaphores ausgeführt hat und der sich nunmehr im Wartezustand befindet, innerhalb der Bereitschaftswarteschlange Q/PR/RDY abzulegen ist. Die PRIQ-Subroutine überprüft die Priorität der Prozesse in der Bereitschaftswarteschlange mittels der Prioritätsfelder in den Prozessverbindungen zwecks Feststellung der Anordnung der Prozessverbindungen innerhalb der Bereitschaftswarteschlange. Durch die PRIQ-Subroutine wird keine tatsächliche Einschreibung in dem Speicher vorgenommen.
Im Schritt 2529 gemäß Figur 25d wird die UACW-Subroutine ausgeführt, durch welche die Berechnungsworte in dem Prozess-Steuerblock ergänzt werden. Diese Subroutine ermittelt die Gesamtzeit, den der Prozess im Wartezustand verbracht hat. Im Schritt 253O wird der Operatiohscode des V-Befehls in der Befehlabrufeinheit 1318 wiederum getestet, um festzustellen, ob ein Startbefehl ausgeführt worden ist. Lag ein Startbefehl vor, so wird eine Verzweigung nach dem Schritt 2531 vorgenommen, in welchem der Prozessname und das Prioritäts-Byte des ausgelösten Prozesses in einer Nachrichtenverbindung gespeichert werden. Im Schritt 2532 wird die Priorität des in dem PCB befindlichen Prozesses zu der Prozessverbindung übertragen. Durch diesen Schritt wird somit
509845/0765
2517296
das Prioritäts-Byte, welches im Falle einer Änderung der Priorität hinsichtlich des. aufgetretenen Prioritäts-Bytes aus dem Zwischenspeicher übertragen worden ist, ergänzt.
Handelt es sich jedoch nicht um einen Startbefehl, so wird der Prozess aus dem Wartezustand herausgeholt, da beispielsweise eine Prozessverbindung bereits existiert. Im Schritt 2533 wird somit die Priorität des Prozesses, welcher sich in dem durch die Prozessverbindung dargestellten Wartezustand befindet, in den Speicherplatz NJP des Zwischenspeichers übertragen. (Figur 19a). Diese Maßnahme ergibt sich, da die Priorität in dem Prozessverbindungsfeld eines Prozesses die letzte Version einer laufenden Priorität darstellt. Wenn somit eine Änderung der Priorität stattgefunden hat während sich der Prozess in dem Wartezustand befand, so wird dies nur durch das Prozessverbindungsfeld angezeigt.
Im Schritt 2534 gemäß Figur 25e wird der Operationscode erneut daraufhin überprüft, ob ein P-Eefehl hinsichtlich eines Semaphores mit einer Nachricht mit einem SCT-FeId gleich Null vorliegt, wobei dieser Befehl ein Testbefehl sein kann oder nicht. Dieser Test ergibt sich infolge der Verzweigung der PMZ-Subroutine gemäß Figur 24a, die die RNP-Subroutine im Schritt 2408 aufgerufen hat. Liegt ein P-Befehl vor, so wird im Schritt 2535 der Inhalt des Prozess-Steuerblockes des Prozesses, welcher sich im Wartezustand befand, d. h. der Wert in der Adresse +84 in die Generalregister GRO bis GR3 des gerade laufenden, den P-Befehl ausführenden Prozesses übertragen. Es sei in Erinnerung gerufen, daß der PCB des Prozesses in dem Wartezustand eine Nachricht aufweist,' wenn keine freien Nachrichtenverbindungen verfügbar sind. Infolgedessen wurde der Prozess an die Warteschlange Q/PR/FLS angebunden. Nunmehr wird ein P-Befehl ausgeführt und die PMZ-Subroutine stellt fest, daß die Verschiebefelder einander gleich sind. Daraufhin findet eine Übertragung der Nachricht von dem Prozess in der Warteschlange Q/PR/ FLS statt. Anschließend wird im Schritt 2536 das Hardware-Gatter
509845/0765
2517296
verriegelt, wodurch angezeigt wird, daß ein kritischer Zustand aufgetreten ist .und es wird im Schritt 2537 die UPLQ-Subroutine ausgeführt. Diese Subroutine entfernt eine Prozessverbindung und ergänzt somit die Warteschlange Q/PR/FLS, wie dies in Figur 25i dargestellt ist.
Im Schritt 2580 wird überprüft, ob der erste Verbindungsindikator gleich Null ist, d. h. ob dieser die entfernte Prozessverbindung betrifft. Ist dies der Fall, so werden im Schritt 2581 die Prozessverbindungen bestimmt, welche den Kopf der Warteschlange bildenfund es wird sodann die Kopf-Hinweisadresse der Prozesswarteschlange im Speicherplatz WE5 des Zwischenspeichers mit dem Inhalt des in dem Speicherplatz WE9 des Zwischenspeichers enthaltenen Inhalt des UNL-Feldes ergänzt. Bildet jedoch die entnommene Prozessverbindung nicht den Kopf der Warteschlange, so wird im Schritt 2582 festgestellt, daß die Kopf-Uinweisadresse der alten Pro^esswarteschlange der Kopf-Hinwelsadresse der neuen Warteschlange entspricht und das nächste Verbindungsfeld der herauszunehmenden Prozessverbindung in die unmittelbar vorangehende Verbindung zu übertragen ist. Die unmittelbar vorangehende Verbindung bestimmt somit diejenige Prozessverbindung, die zuvor durch die entnommene Prozessverbindung bestimmt worden war, wodurch eine logische Verbindung aller Prozessverbindungen in der Warteschlange Q/PR/FLS sichergestellt wird. Diese Verbindungsinformation wird durch die in den Speicherplätzen WE8 und WE9 des Zwischenspeichers gespeicherte Information gegeben, wobei diese Informationseinspeicherung durch die SPLQ-Subroutine erfolgt.
Wenn die Frage im Schritt 2534 mit nein beantwortet wird, was anzeigt, daß der spezielle Zustand nicht vorliegt, so wird eine Verzweigung nach dem Schritt 2538 ausgeführt. Da der Nein-Antwort eine Vielzahl von Befehlen zugeordnet sein können, wird
8-45/0765
2517296
im Schritt 2538 überprüft, ob ein Secin--, Start-, P- oder P-Test-Befehl hinsichtlich des Nachrichten-Semaphors vorliegt. Ist dies der Fall, so findet eine Verzweigung nach dem Schritt 2539 statt. Diese Verzweigung wird ausgeführt, da die Auflösung der Warteschlange Q/PR/S bzw. Q/PR/FLS bis zum Schritt 2555 verzögert wird. Wird jedoch die im Schritt 2538 gestellte Frage mit nein beantwortet, was im Falle des Auftretens von V-Befehlen der Fall ist, so wird im Schritt 2540 das Hardware-Gatter verriegelt und im Schritt 2541 die Prozessverbindung des Semaphors Q/PR/S bzw. O/PL/FLS aus der Warteschlange ausgereiht. Die Entnahmeverbindung wird der Warteschlange Q/PR/PLS hinzuaddiert. Im Schritt 2542 wird das adressierte Semaphor mit einem neuen SCT-FeId sowohl in den Zwischenspeicher, als auch in den Hauptspeicher eingeschrieben. Hierdurch wird der neue Zustand des Semaphors angezeigt. Der Schritt 2542. wird ebenfalls ausgeführt, wenn die PMZ-Subroutirie aufgerufen worden ist. Anschließend wird im Schritt 2543 das Hardware-Gatter entriegelt, wodurch angezeigt wird, daß die kritische nicht unterteilbare Operation vorüber ist.
Zu diesem Zeitpunkt weist der von dem Semaphor geführte Prozess die zuvor angeforderten Daten auf. Wenn jedoch ein P-Befehl nicht ausgeführt werden kann, so bleibt der Befehlszähler des gerade laufenden Prozesses auf dem gleichen Stand wie bei einem in den Wartezustand übergeführten Prozess. Der Befehlszähler zeigt somit an, daß der P-Befehl ausgeführt werden kann, wenn der Prozess in den Ablaufzustand zurückgeführt wird. Wenn der P-Befehl des Prozesses nunmehr ausgeführt worden ist, d. h. wenn er seine Nachricht erhalten hat, so muß der Befehlszählerinhalt, der in dem PCB gespeichert ist, um 4 erhöht werden. Ist dies geschehen, so startet der Prozess bei den nächsten Befehljder auf die Ausführung des P-Befehles folgt. In den Schritten 2544 bis 2547 wird hierbei eine Änderung des Inhalts des Befehlszählers bewirkt.
509845/0765
2517296
Im Schritt 2544 wird das MBZ-FeId des Befehlszählerwortes auf den Inhalt Null überprüft. Im Schritt 2545 wird zu der, in dem Befehlszähler gespeicherten relativen Segmentadresse die Zahl 4 hinzuaddiert, wodurch der Befehlszähler in die Lage versetzt wird, den nächsten auszuführenden Befehl zu bestimmen. Im Schritt 2546 gemäß Figur 25f wird diese neue Adresse für das Befehlszählerwort in den Prozess-Steuerblock des Prozesses eingeschrieben, der den P-Befehl ausgeführt hat und im Schritt 2547 wird geprüft, ob die erhöhte Adresse das Segment überschritten hat oder nicht. Diese Situation kann bei der Erhöhung des Befehlszählerinhaltes auftreten. Der aus dem Wartezustand zurückgeholte Prozess kann nun den Ablaufzustand einnehmen, sofern der Zuteiler ihn übertragen hat.
Der Schritt 2548 wird ausgeführt, wenn die Verzweigung von dem Schritt 2539 aufgetreten ist, bzw. nach Erhöhung des Befehlszählers des in dem Wartezustand befindlichen Prozesses. Im Schritt 2548 wird das einen kritischen Zustand anzeigende Hardware-Gatter erneut verriegelt und im Schritt 2549 wird das Zustands-Byte des gerade ergänzten Prozesses in den Vorbereitungszustand gesetzt, so daß der Zuteiler es in der Bereitschaftswarteschlange anordnen kann.
Im Schritt 2550 gemäß Figur 25g wird erneut überprüft, ob ein Startbefehl vorliegt. Ist dies der Fall, so wird im Schritt 2551 die die Information über den auszulösenden Prozess enthaltende Prozessverbindung der Warteschlange der Prozessverbindungen des Prozessverbindungs-Semaphors Q/PL/PLS entnommen und der Ausscheidungsindikator auf 1 gesetzt. Der Ausscheidungsindikator wird gesetzt, wenn ein oder mehrere neue Prozesse in der Bereitschaftswarteschlange seit Beginn des letzten, durch den laufenden Prozess ausgeführten Befehles angeordnet worden sind. Der Ausscheidungsindikator zeigt die Möglichkeit eines Konfliktes des am Kopf der Bereitschaftswarteschlange stehenden Prozesses mit dem im Ablaufzustand befindlichen laufenden Prozess
.509845/0765-
2517296
an. Anschließend wird im Schritt 2311 die Subroutine UQLK, die zuvor anhand Figur 23h beschrieben worden war, ausgeführt, welche die durch die PRIQ-Subroutine bestimmten Prozessverbindungen ergänzt. Im Schritt 2553 wird das Hardware-Gatter entriegelt, da die systemkritische Operation abgelaufen ist. Ebenso ist die RNP-Subroutine abgelaufen. Aus dieser Verzweigung ist somit ersichtlich, daß die RNP-Subroutine sowohl den laufenden, einen V-Befehl ausführenden Prozess, als auch einen Prozess ergänzt, der durch den gerade laufenden Prozess gestartet worden war.
Wenn jedoch die im Schritt 2550 gestellte Frage mit nein zu beantworten ist, so wird die gleiche Frage wie im Schritt 2534 im Schritt 2554 gestellt, d. h. es wird gefragt, ob ein SECIN-, ein P- oder ein P-Test-Befehl hinsichtlich eines Semaphors mit einer Nachricht mit einem SCT-Zählstand von Null vorliegt. Hinsichtlich der P-Befehle wurde die Einreihung in die Warteschlange bereits durch die UPLQ-Subroutine bewerkstelligt. Als Folge, hiervon wird eine Verzweigung nach dem Schritt 2552 ausgeführt, falls ein Prozess zu der Bereitschaftswarteschlange hinzuaddiert worden ist und es findet ein Vergleich der Prioritäten des gerade laufenden Prozesses mit dem Prozess am Kopf der Warteschlange Q/PR/Rpy statt. Hinsichtlich dieser Verzweigung ist somit ersichtlich, daß die RNP-Subroutine sowohl den gerade laufenden, den P-Eefehl ausführenden Prozess hinsichtlich eines Nachrichten-Semaphors, als auch einen Prozess im Wartezustand ergänzt, wobei der Prozess im Wartezustand an das Verbindungsfreigabe-Semaphor angebunden ist, falls keine freien Nachrichtenverbindungen verfügbar sind.
Wenn sich jedoch im Schritt 2554 herausstellt, daß der SCT-Zählstand ungleich Null ist und daher keinem der oben genannten Befehle entspricht, so wird der Schritt 2555 ausgeführt, durch welchen die neue Prozessverbindung der Warteschlange Q/PR/S
509845/0765
2517296
oder Q/PR/FLS entnommen wird,und es wird im Schritt 2556 der ergänzte SCT-Zählstand aus dem Speicherplatz WC7 des Zwischenspeichers abgerufen und in die Prozessverbindung eingegeben. Im Schritt 2557 wird geprüft, ob ein V-Befehl hinsichtlich eines Semaphores ohne Nachricht vorliegt oder nicht. Liegt ein solcher V-Befehl vor, so wird im Schritt 2558 der Name des gerade laufenden Prozesses aus dem Besitzerfeld des Semaphors, d. h. aus den Bits 48 bis 63 gemäß Figur 16 entnommen. Zusätzlich wird im Schritt 2558 das Semaphor mit der laufenden, in den Speicherplätzen WC4 und WC5 des Zwischenspeichers gespeicherten Information ergänzt, wobei diese Informationen den neuen ergänzten SCT-Zählstand, wie er im Schritt 2556 gebildet wurde und irgendwelche geänderten, früher aufgetretenen Warteschlangen-Hinweisadressen betreffen. Nachdem das Semaphor ohne Nachricht vollständig ergänzt ist, wird im Schritt 2552 der Ausscheidungsindikator auf 1 gesetzt, was anzeigt, daß ein neuer Prozess in die Bereitschaftswarteschlange eingegeben wurde, wenn der letzte Befehl des gerade laufenden Prozesses ausgeführt worden war. Die gleichen zuvor erwähnten Schritte, z. B. die Schritte 2311 und 2553 werden sodann ausgeführt und bewirken die Beendigung der RNP-Subroutine. Hinsichtlich dieser Verzweigung ist somit ersichtlich, daß die RNP-Subroutine sowohl den gerade laufenden, den V-Befehl ausführenden Prozess, hinsichtlich eines Semaphores ohne Nachricht, als auch einen Prozess im Wartezustand ergänzt, wobei der Prozess im Wartezustand an das Semaphor ohne Nachricht angebunden war.
Wenn jedoch die im Schritt 2557 durchgeführte Prüfung ergab, daß ein V-Befehl hinsichtlich eines Semaphores mit einer Nachricht vorlag, so wird ..im Schritt 2559 in das Semaphor im Hauptspeicher eine neue, die Warteschlange Q/PR/S verändernde Kopf-Hinweisadresse und ein neues Zählerfeld eingeschriebenfund es wird im Schritt 2552 die zuvor erläuterte Befehlsfolge ausgeführt. Hinsichtlich dieser Verzweigung ist somit ersichtlich,
5098A5/0765
2517296
daß die RNP-Subroutine sowohl den laufenden, den V-Befehl ausführenden Prozess hinsichtlich eines Nachrichten-Semaphor, als auch den Prozess im Wartezustand ergänzt, wobei der Prozess im Wartezustand an das Nachrichten-Semaphor angebunden ist.
Bei Beendigung der RNP-Subroutine erfolgt im Schritt 2514 eine Rückkehr zu Figur 25a, wobei der Befehlszählerstand für den gerade laufenden Prozess erhöht wird. Im Schritt 2515 wird der Zuteiler angewählt, wodurch der zuvor ergänzte Prozess nach der Bereitschaftswarteschlange übertragen werden kann und durch den Zuteiler festgelegt werden kann, welcher Prozess sich in dem Ablaufzustand befinden soll, d. h. auf den auf 1 gesetzten Ausscheidungsanzeiger ansprechen soll.
509845/0765
2517296
αϊ*
Begriffsliste
Absolute Adresse Die physikalische Adresse eines Hardwareby.tes im Hauptspeicher.
Adressenentwicklung Eine Hardwarefunktion, welche aus einer Anzahl von Adressenelementen eine absolute Adresse berechnet/die auf einen Speicherplatz im Hauptspeicher hinweist.
Adressierung Lokalisierung eines Objekts durch eine Anzahl virtueller logischer und physikalischer Mittel.
Adressenraum Eine Gruppe logischer segmentierter Adressen entsprechend einem Prozeß, welche die Zentraleinheit während der Durchführung des Prozesses in absolute Adressen umwandeln darf.
Adressenraumwort Eines von zwei Worten in einem Prozeßsteuerblock, welches auf die Segmenttabellen-Wortanordnung hinweist. Letztere definiert die dem Prozeß zugeordneten Segmenttabellen.
Adressensilbe Eine von der Hardware der Zentraleinheit feststellbare logische Adresse, normalerweise der Operand eines Befehls.
509845/0765
2517296
.no
Analysierer/Ubersetzer Derjenige Teil einer statischen Verbindungseinheit, die zunächst den Fluß der Steuersprache zur Verbindungseinheit hinleitet; bei fehlerfreier Steuersprache wandelt der Analysierer/Übersetzer diese in Tabellen und andere Strukturen für die Benutzung durch die statische Verbindungseinheit um.
Asynchrone Abwicklung Gleichzeitige Aktivierung von mehr als
einem Prozeß.
Hilfsspeicher Besteht aus 64 Flipflops zur Speicherung verschiedener Systemzustände und befindet sich im Rechenwerk.
Basisregister Das Hauptelement bei der Segmentadressierung, wird durch seine Nummer in jeder Adressensilbe angewählt.
Grenzadressenregister Ein sichtbares Hardwareregister, welches die niedrigste Speicheradresse definiert, die für die Firmware/Software zugängig ist.
Aufruf
Siehe Prozeduraufruf - Einwärtsaufruf, Auswärtsaufruf.
Zentraleinheit Teil des Rechners, welcher die Schaltkreise zur Steuerung der Interpretation und Ausübung von Befehlen enthält.
Kanal
Nachrichtenverbindung zwischen dem Prozessor-Untersystem und einem peripheren Untersystem. Es gibt physikalische und logische Kanäle. Ein physikalischer Kanal ist die Hardwareverbindung zwischen der Ein/Ausgabesteuereinheit IOC und der Pe-509845/0765
Kanaleingangsbefehl Kanalbe feh1swort
Kanalprogramm
2517296 .XU
ripheriesteuereinheit PCU. Ein logischer Kanal ist ein Softwareverbindungsweg zwischen dem Hauptspeicher und einem einzelnen Peripheriegerät.
Befehl in einem Kanalprogramm.
Ein Element eines Kanaleingangsbefehls. Zwei Kanalbefehlsworte bilden einen Kanaleingangsbefehl .
Eine Folge von Befehlen, welche die Durchführung einer bestimmten Ein/Ausgabeoperation durch ein Peripheriegerät bewirken.
Komplementärcode Ein Code in einigen Befehlen, der zusammen mit dem Operationscode die Funktion des Befehls definiert.
Compiliereinheit Der einzelne Objektcodemodul, welcher sich beim Compilieren oder Assemblieren einer Prozedur in einem Prozessor mit hoch entwickelter Programmsprache ergibt. Die Compiliereinheit ist eine nicht ausführbare Einheit, sie ist verbunden.
Gleichzeitigkeit
BedingungsfeId
(Condition Field) Offensichtliche Gleichzeitigkeit.
Ein 4-Bit-Feld in einem Verzweigungsbefehl. Jedes Bit in dem Feld entspricht der Einstellung eines Bedingungscodes in den Zustandsregisterbits 0 und 1.
Ausscheidungsanzeiger (Contest Indicator) Eine Hardwarestruktur im Hilfsspeicher, welche anzeigt daß ein neuer Eingangsbefehl in die Warteschlange eingereiht wurde und ggfs. einen Prioritätsinhalt hat.
509845/0765
üatenadreßraum
25Ί7296
Eine Gruppe logischer Datensatzadreaaan, welche für einen Prozeß über das Datenmanagement zugängig sind; er besteht aus vier Elementen: logischen Feldern, logischen Datensätzen, Datenbasisseiten und Dateien.
Datendeskriptor Eine Befehlsstruktur, welche bei der indirekten Adressierung für die Beschreibung einer bestimmten Datenbehandlung verwendet wird.
Decor
Die funktioneilen Eigenschaften oder der Aufbau eines Rechnersystems.
Deco re rwei te rungsmodus Ein Betriebsmodus, der den Betrieb des Systems im Emulationsmodus ermöglicht.
Deskriptor Ein 32- oder 64-Bit-Feld, welches bei der Adressenentwicklung jedes Datenfeldes benutzt wird. Es ist nur eine von vielen Hinweisadressen im vorliegenden Adressierungsschema.
Deskriptorblock Ein Datenblock, der eine beliebige Anzahl Verschiedenheit von Deskriptorerklärungen mit Ausnahme von Semaphor-Deskriptoren enthält. Keine anderen Daten sind erlaubt.
Geräteadapter Elektronische Schaltkreise zur Anpassung eines bestimmten Gerätes an ein Peripheriesteuergerät.
509845/0765
2517296
Geräteadapterschnittstelle
Schnittstelle zwischen einem Geräteadapter und seinem zugehörigen Peripheriesteuergerät.
Gerätesteuerung Eine Softwareeinheit zur Verarbeitung von gerätespezifischen Kenngrößen.
Zuteiler (Dispatcher)
Zuteilung Die Firmware, welche für die Zuteilung der Prozesse in der Zentraleinheit zuständig ist.
Ein Feld innerhalb des Befehlsformates oder eines Datendeskriptors, welches Information über die relative Lage eines Segments liefert.
Verschiebungsadressierung
Dynamische Adressierung
Aufbereiter (Editor) Eine Form indirekter Adressierung, bei der der Operand die Lage in Bezug entweder auf die Basis eines ünmittelbarsegments oder auf den laufenden Stellenzähler angibt.
Ein Adressierverfahren, welches während der Ausführung zu einer Auflösung von innerhalb der Prozeßgruppe festgelegten Bezugnahmen führt.
Derjenige Teil einer statischen Verbindungseinheit, der beliebige oder, alle Informationen formiert und herausgibt, die sich aus der Verbindung einer bestimmten Prozedur ergeben.
509845/0765
Effektive Adresse
2517296
Im Gegensatz zur physikalischen eine logische Adresse, welche aus einer Segmenttabellennummer, einer Segmenttabelleneingangsnummer und einer relativen Segmentadresse besteht. Diese Elemente weisen den Weg zu einem bestimmten Segmentdeskriptor, der schließlich auf das angewählte Segment hinweist.
Emulationsmodus Eine Rechnerbetriebsweise, bei der ein anderer Rechner in Gang gesetzt wird und die als im anderen Rechner ablaufend erscheint.
Ausnahme Eine Ausnahme tritt auf, wenn die Hardware das Vorhandensein eines Zustands feststellt, der eine besondere Bearbeitung erfordert.
Ereignis Irgendetwas, das in einem System von einem Prozeß festgestellt wird und für einen anderen Prozeß von Interesse sein kann.
Firmware Derjenige Teil eines Hardwareablaufs, der eine Art Mikroprogramm-Steuerung verwendet.
G, D-Name Der von der Hardware als Hinweis auf ein
Semaphor benutzte Name. Der G-Segmentname ist die Nummer des Eingangs in die G-Tabelle, welche den Segmentdeskriptor enthält; D ist die relative Adresse im Segment .
G-Segment Ein Segment, welches die Semaphoren enthält, die durch Verwendung des G, D-Namens und zugehörige SpeicherUmschichtungsmöglichkeiten (G-Tabelle) adressiert werden können.
0 9845/0765
2517296
G-Tabelle Eine Tabelle für die Speicherumschichtung (Lokalisierung eines G-Segments), wenn der G, D-Name benutzt wird.
Gattersteuerung (Gating) Eine Möglichkeit für die Steuerung des Zugangs zu Prozeduren in. eitlem Segment durch die Benutzung von Prozedurdeskriptoren.
Generalregister Ein zur Ausführung von Prozessen zur Verfügung stehendes 32-Bit Register, welches im allgemeinen binäre Daten oder Daten in Bitform einer Bitzeichenfolge enthält. Bestimmte Generalregister können für das indizierte Adressieren verwendet werden.(GR8 bis GR15).
Index
Eine Datenstruktur, welche vom System beibehalten und verarbeitet wird. Die Struktur erscheint dem Benutzer rur in Form eines Schlüssels, den er zum Zwecke des Zugangs oder der Positionierung zu einem bestimmten Datensatzvorgang angibt.
Indizieren Modifizieren einer Adresse durch vorzeichenbehaftete arithmetische Werte, indem etwas hinzugefügt wird.
Indexregister Ein Generalregister, welches zum Indizieren benutzt wird (GR8 bis GR15).
509845/0765
2517296
Indirekte Adressierung Ein Adressierverfahren, bei dem eine Adresse zur Erzeugung einer anderen Adresse statt für die Ermittlung der tatsächlichen Daten benutzt wird.
Indirekte Basisadressierung Die Art der indirekten Adressierung, bei der unter der angezogenen Adresse ein Datendeskriptor mit einerv-Basisregisternummer und einer Verschiebung gefunden wird.
Indirekte Segmentadressierung Die Art der indirekten Adressierung, bei der unter einer angewählten Adresse ein Datendeskriptor mit einer Segmentadresse gefunden wird.
Indirekter Segmentdeskriptor Eine Art von Segmentdeskriptoren, welche Information für die Adressierung eines anderen Segmentdeskriptors statt des Segments selbst enthält.
Befehl
Die dem Programmierer erkennbare Arbeitseinheit einer Zentraleinheit.
Befehlszählwerk Ein dem ablaufenden Prozeß zugeordnetes Register, welches die Segmentadressen des nächsten Befehls der auszuführenden Prozedur enthält.
Durchschießen (Interleave) Der aufeinanderfolgende Zugriff zu Speichermodulen, um die Speicherzugriffszeit zu verringern.
509845/0765
2517296
Unterbrechung
ünterbrechungsprozeß Einwärtsaufruf
Ein/Ausgabesteuergerät
Ein/Ausgabeprozessor
J.P.-Tabellen
Job
Job-Steuersprache Die Unterbrechung eines Prozesses in dem System infolge des Auftretens eines Ereignisses.
Ein Prozeß, der beim Auftreten einer Unterbrechung in Gang gesetzt wird.
Wenn eine innerhalb einer Ringzone ablaufende Prozedur den Ablauf einer Prozedur in einer niedrigeren Ringzone aufruft.
Eine Einheit, die die grundlegende Steuerung für ein spezielles Ein/Ausgabe-Untersystem bewirkt.
Potentiell asynchrone Systemprozesse, die in erster Linie mit der Bewegung von Daten zwischen peripheren Speichern oder Ein/Ausgabegeräten und dem Hauptspeicher beschäftigt sind.
Eine Sammlung logischer Adressen für die Lokalisierung eines Prozeßsteuerblocks.
Eine Arbeitseinheit des Syatems.
Eine Sprache zum Beschreiben eines Jobs und seiner Teile.
Job-Schritt Der Hauptteil eines Jobs, der zur Ausführung eines durch eine Anweisung in der Jobsteuersprache definierten Programms führt.
509845/0765
2517296
3**
Job-Schritt-Tabelle Eine Systemtabelle, welche für die Festlegung des ersten Teils eines Prozeßnamens, d.h. für die Lokalisierrung der Prozeßgruppentabelle benutzt wird.
Verknüpfter Modul (Linked Module) Der Ausgang der statischen Verbindungseinheit. Es ist eine konsolidierte Gruppe von Compiliereinheiten, deren Kreuzreferenzen durch die statische Verbindungseinheit gelöst worden sind.
Logischer Prozessor Eine Ansammlung von Hardwarehilfsmitteln und Steuerinformationen für die Ausführung eines Prozesses.
Hauptspeicher Der gesamte adressierbare Speicherraum, von dem her Befehle ausgeführt werden können oder von dem Daten unmittelbar in Register geladen werden können.
Magne tb ands teue rge rät Die Elemente eines Magnetbandgeräten zugeordneten perlpheren Untersystems.
Großspeicher-Steuergerät
Die Großspeichern zugeordneten Eleaente einer peripheren Untersystems.
Speichermanagement Betriebssystem-Möglichkeiten für die Zuordnung, Umordnung undFieigabe eines physikalischen Speichers.
Nachricht
(Message)
Die von einer Quelle oder zu einem Bestimmungsort hin übertragene Information, wobei weder Quelle noch Bestimmungsort eine Datei ist.
509845/0765
2517296
Mikrobefehl Das gleiche wie Mikrobefehlswort und Speichersteuerwort.
Mikroprogramm Eine Gruppe von Maschinencodes, die bei der Ausführung von Steuerfunktionen eines Prozessors verwendet werden.
Multiplex Die gemeinsame Benutzung von Hilfsmitteln wie z.B. eines Speichers; üblicherweise erreicht durch zeitliche Unterteilung.
Multi"Programmierung
Die gleichzeitige Ausübung von zwei oder mehreren Programmen durch einen einzigen Rechner.
Eigenbereichsmodus (Native Mode) Betrieb eines Rechners in seinem eigenen Wirkungsbereich.
Offset
Bei der Adressenentwicklung die Anzahl der Bytes nach dem Beginn eines Segments, bei dem ein adressierter Teil des Segments anfängt.
Betriebssystem Ein System grundlegender Software für die Unterstützung des wirkungsvollen Einsatzes der Benutzersoftware.
Auswärts-Aufruf Wenn eine Prozedur, die in einer Ringzone abläuft, eine andere Prozedur zur Ausführung in einer höheren Ringzone aufruft.
509845/0765
2517296
Peripheriesteuereinheit -Ein eigenständiger mikroprogrammierter
Prozessor, welcher Kanalprogramme für die Durchführung von Ein/Ausgabeoperationen ausführt.
Peripheriesystem-Schnittstelle Eine Standardschnittstelle für die übertragung und Steuerung zwischen eigenständigen peripheren Steuereinheiten und Ein/Ausgabeeinheiten.
Physikalische Datenstruktur Eine vollständige Definition derl*Datenorganisation, wie sie physikalisch auf einem Speichermedium aufgezeichnet ist.
Physikalische Ein/ Ausgabe
Derjenige Teil eines Betriebssystems, der die übertragung von Daten zwischen dem Speicher und peripheren oder Endgeräten in Gang setzt und steuert.
Physikalische Speicherung Die zur Datenspeicherung dienende Hardware. Sie setzt sich aus verschiedenen Arten von Aufzeichnungsmedien und der Schreib/Lesehardware zusammen.
P-Operation Ein Maschinenbefehl mit einem Semaphor, welcheö den Prozeß veranlaßt, den Wartezustand einzunehmen oder eine Nachricht zu empfangen.
Privilegierter Befehl Ein Befehl, der im Ring 0 ausgeführt werden muß.
Prozedur
Eine benannte Softwarefunktion oder ein Algorithmus, der von einem Prozessor ohne Gleichzeitigkeit ausgeführt werden kann: Eine Fortran-Subroutine, ein Coboi-Programm, eine interne Prozedur
509845/0765
2517296
in der Programmsprache I,
Prozeduraufruf Ein Mechanismus für die Erzeugung eines Stapelrahmens innerhalb eines Stapelsegments.
Prozedur-Deskriptor Ein Wort, das den Platz und die Eingangsstelle einer Prozedur enthält.
Prozedursegment Eine Art Segment, dessen Inhalt eine Prozedur, mehrere Prozeduren oder einen Teil einer Prozedur darstellt.
Prozeß
Die geordnete Ausführung von Befehlen durch einen Prozessor ohne Gleichzeitigkeit entweder zentral oder mit Ein/Ausgabe.
Prozeßadressenraum Speicheradressen, welche während eines bestimmten Prozesses angewählt werden können oder auf welche die Steuerung übertragen werden kann.
Prozeßsteuerblock Eine durch Hardware definierte und feststellbare Datenstruktur, welche die Informationen enthält, um jederzeit den Zustand eines Prozesses festsstellen ■ zu können.
Prozeßgruppe Eine Gruppe einander zugeordneter Prozesse, üblicherweise jene, welche zur Durchführung eines einzelnen Jobschrittes nötig sind.
509845/0765
2517296
Prozeßgruppenbildner (Process Group Builder)
P ro ζ e ß gruppen1ader (Process Group Loader)
Prozeßverbindung Derjenige Teil der statischen Verbindungseinheit, dessen Einsatz zum verknüpften Modul führt.
Eine Möglichkeit des Betriebssystems, welches die endgültigen Entscheidungen in einem verknüpften Modul herbeiführt und eine durchführbare Prozeßgruppe erzeugt, anschließend die Prozeßgruppe in den Speicher lädt und ihre Durchführung in Gang setzt.
Eine Eingangsstelle in einem vorbereiteten Prozeß oder eine wartende Prozeß-Warteschlange.
Prozeßzustand Der dynamische Zustand eines Zentraleinheit -Prozesses, beispielsweise laufend, vorbereitet, wartend oder ausgesetzt.
Prozeßumschaltung Die Hardwarefunktion, welche einen Prozeß von der Zentraleinheit abtrennt und einen anderen damit verbindet.
Prozeßsynchronisierung Die Funktion, welche die asynchrone Tätigkeit zwischen den Prozessen koordiniert. Diese Funktion enthält im allgemeinen Semaphoren und die P- und V-Operationen.
Prozessor
Eine Einheit, welche Daten empfangen und verarbeiten, Ergebnisse liefern und ihre Arbeitsfolge in Abhängigkeit von einem gespeicherten Programm steuern kann; allgemeiner Ausdruck "für Zentraleinheit, Peripherieprozessor oder Hard-
509845/0765
2517296
- 23Λ -
ware/Softwareprozessor.
Programm
Die Spezifikation von Prozedur bestimmenden und zugehörigen Informationen, die zur Lösung eines Problems nötig ist, d.h., die geordnete Ansammlung von Befehlen, welche vom Rechner ausgeführt wird, um einen Benutzerjob oder eine bestimmte Phase eines solchen Jobs zu erledigen.
Programmaus führung Die Aktivität eines Prozesses in Übereinstimmung mit der Programmspezifikation.
Schutzfunktion Die durch Hardware und Software gewährleistete Funktion, um gegenseitige Beeinträchtigung von Prozessen oder die unerlaubte gemeinsame Benutzung von Adreßraum zu verhindern.
P-Tabelle Eine durch Hardware definierte Datenstuktur mit Eingangsstellen, von denen jede auf den Ursprung eines Prozeßsteuerblocks hinweist. Die P-Tabelleneingangsstellen zeigen auch auf die gesamte Gruppe von Prozeßsteuerblöcken, die zu jeder gegebenen Zeit eine Prozeßgruppe enthalten. Man nennt sie auch Prozeßgruppentabelle.
Q/PR/RDY Die Warteschlange eines Prozesses ist vorbereitet.
509845/0765
2517296
Warteschlange
Eine geordnete Liste von Eingangsgrößen,' welche auf Informationen(einen Prozeß oder auf Zugang warten.
Vorberei tungs zus tand (Ready State) Ein Prozeßzustand, bei dem kein Prozessor zugeordnet ist, aber alle notwendigen Hilfsmittel mit Ausnahme des Prozessors für den übergang in den Ablaufzustand vorbereitet sind.
Relative Adresse Der Schrittweise definierte Platz eines Objekts in Bezug auf ein anderes.
Umordnung (Relocation) Die Verschiebung eines Segments von einem Platz im Hauptspeicher auf einen anderen einschließlich der Anpassung aller erforderlichen Bezugnahmen auf seinen vorhergehenden Standort.
Rücksprung Die Funktion und die Operationen, welche nötig sind, um die Tätigkeit einer Prozedur an einer Stelle wieder aufzunehmen, welche unmittelbar derjenigen Stelle folgt, wo sie in eine andere Prozedur übergegangen ist.
Ring
Ein Schutzattribut eines Segments, welches den Lese-,Schreib-und Ausführungszugriff eines Prozesses zu jenem Segment beschränkt. Der Ring stellt ferner den Grad dee Privilegs eines Prozesses für das Lesen, Schreibsi oder Durchführen von Operationen dar.
509845/0765
2517296
VbS*
Steuerungsübergabe (Rolling-in)
S te ue rungswegnahme (Rolling-out)
Durchführung der notwendigen Operationen, um die Steuerung eines Prozesses auf einen neuen Prozeß zu übertragen.
Durchführung der notwendigen Operationen, um die Steuerung eines Prozessors durch einen Prozeß zu beenden.
Laufender Zustand
Der dynamische Zustand eines an die Zentraleinheit angeschlossenen Prozesses, welcher gerade abläuft.
Zwischenspeicher (Scratch Pad Memory) 256 Speicherplätze im Rechenwerk zur Speicherung von Steuerinformationen für die Zentraleinheit, auch als örtlicher Speicher bekannt.
Ablaufplanung (Scheduling)
Wissenschaftliches Register
Segment
Bestimmung der Folge der einzelnen Operationen.
Ein 64-Bit-Register, welches bei der Verarbeitung von binären Fließkommazahlen verwendet wird. Beim vorliegenden System hat dieses in der wissenschaftlichen Option vier wissenschaftliche Register.
eher als Einheit behandelt wird.
Segmentierung Die Unterteilung des Hauptspeichers in logische Gruppen genannt Segmente an Stelle der Unterteilung in einen einzigen linearen Speicherraum.
509845/0765
2517296
Segmentbasis Der laufende Ursprung des Segments. Dies ist eines der Felder in einem Segmentdescriptorwort.
Segmentdescriptor Die Eingangsstelle in eine Segmenttabelle, welche die Kenngrößen eines Segments definiert oder auf einen Segmentdescriptor hinweist.
Segmentnummer Die Identifizierung eines bestimmten Segments bestehend aus einer Segmenttabellennummer, die eine der Segmenttabellen des Prozesses auswählt, und einer Segmenttabelleneingangssteile der ausgewählten Tabelle.
Relative Segmentadresse Während der Adressenentwicklung der endgültige Wert,der zur Segmentbasis zu addieren ist, um die absolute Adresse zu erhalten.
Segmenttabelle Eine Tabelle mit Segmentdescriptoren, welche die Adressierbarkeit eines Prozesses zu seinen Segmenten festlegt. Die Sammlung von Segmenttabellen eines Prozesses bestimmt den Adressenraum für jenen Prozeß.
Segmenttabelleneingangsstelle Eine Stelle in einer Segmenttabelle. Jede Segmenttabelleneingangsstelle ist ein Segmentdescriptor.
Segmenttabellenwort Der Eingang in eine Segmenttabellenwortanordnung, welcher auf die Segmenttabellen eines Prozesses hinweist. Die An-
509845/0765
2517296
Ordnung wird durch eines von zwei Adreßraumworten im Prozeßsteuerblock bezeichnet.
Semaphor
Datenstrukturen zur Steuerung des Informationsaustausches zwischen Prozessen,
Semaphorblock
Ein Datenblock, der nur Semaphor-Descriptorerklärungen enthält.
Stapelspeicher (Stack)
Ein Mechanismus, welcher Daten aufnimmt, speichert und ihre Wiedergewinnung ermöglicht nach dem Prinzip, daß die zuletzt eingegebene Information zuerst ausgegeben wird. Er besteht aus einer Anzahl benachbarter Teile, welche Stapelspeicherrahmen genannt werden.
Stapelspeicher-Aktivbereich
Derjenige Teil eines gerade in Betrieb befindlichen Stapelspeicherrahmens, welcher einen Hinweis auf einen Reservebereich, das Befehlszählwerk des Aufrufers, Parameterraum und örtliche Veränderliche enthält, kurz gesagt, die Daten des gerade ablaufenden Rahmens, welche mit größter Wahrscheinlichkeit für die Ausführung der aufgerufenen Prozedur nützlich sind.
S tape1spei eherbasisworte
Eine Gruppe von drei Worten in einem Prozeßsteuerblock, die die segmentierten Adressen der Stapelspeichersegmente für die dem Prozeß zugeordneten Ringe 0r 1 und 2 enthält.
5 0 9 8-4 5/0765
2517296
XVi
Stapelspeicherrahmen Ein fortlaufender Teil des Stapelspeichersegments , welcher die gespeicherten Daten für einen einzigen Prozeduraufruf enthält.
Stapelspeicherbetrieb Die Operationen zum Speichern und Wiedergewinnen von Informationen im und aus dem Stapelspeicher. In der Praxis die Verarbeitung von Hinweisadressen auf die in dem Stapelspeicher enthaltenen Informationen.
Stapelspeicher-Überlauf Der Versuch mehr Information in den Stapelspeicher einzuspeichern als in diesem Speicherraum vorhanden ist. Dieser Zustand wird von der Hardware festgestellt.
Stapelspeicherregister Siehe T-Register.
Stapelspeichersegment
Statische Verbindungseinheit
(Static Linking) Das Segment eines Prozesses, welches dessen Stapelspeicher enthält.
Ein Zwischenschritt zwischen dem Compilieren einer Quellenprozedur und der Ausführung der Objektform einer solchen Prozedur. Die Verbindung löst die externen Bezugnahmen auf und von dieser Prozedur.
Statusregister Ein 8-Bit Register, welches den Zustand der gerade ablaufenden Prozedur kennzeichnet.
Äuawärtsspeichern
{Swapping)
Die Entlastung des von einem Segment besetzten Hauptspeicherraums durch Umladen
3 0 9 8 4 5/0785
2517296
des Segments in einen Sekundärspeicher. Das tatsächliche Umschreiben in den Sekundärspeicher kann unterdrückt werden, falls das Segment seit dem letzten Auslesen nicht geändert worden ist.
Synchronisierung Eine feste zeitliche Zuordnung, beispielsweise die synchronisierte Durchführung von zwei oder mehr Prozessen.
Systembasis Ein fest vorgegebener Bereich im Hauptspeicher, der als Wurzel für alle Informationsstrukturen dient.
Task
Kleinste Einheit der vom Benutzer bestimmten Arbeit, welche nur aus einem einzigen Strom nicht gleichzeitig auftretender Befehle steht.
T-Register Ein für die Software sichtbares Hardwareregister, welches die segmentierte Adresse der Spitze eines Prozedurstapelspeichers enthält.
Aufzeichnungsgerät-Steuereinheit Die Elemente des peripheren Untersystems, die mit Aufzeichnungsgeräten wie Karten=- Stanzer und -Lesern, Streifen- Stanzern und-Lesern sowie Zeilendruckern in Verbindung stehen.
Benutzer-Prozeßgruppe Die interne Darstellung irgendeines Jobschrittes im Gegensatz zu einer Systemprozeßgruppe, die unabhängig von irgendeinem Job besteht.
509845/0765
2517296
Vakanzanzeiger Eine Hardwarestruktur, welche anzeigt, daß der Prozeß, welcher in der Zentraleinheit ablief, sich selbst ausgesetzt hat, d.h., daß kein gerade ablaufender Prozeß sich in der Zentraleinheit befindet. Er befindet sich dann in einem Hilfsregister des Rechenwerks.
Virtueller Speicher
V-Operation AbiÄag-Semäphor Ein Adressierverfahren, welches dem Programmierer eine Codierung ohne Rücksicht auf den physikalischen Umfang des Speichers erlaubt. Ein Virtualspeicher-Steuersystem sorgt für den Austausch von Segmenten zwischen dem Hauptspeicher und dem Sekundärspeicher.
Ein Maschinenbefehl für die Mitteilung des Abschlusses eines Ereignisses innerhalb des Prozesses. Eine V-Operation erfolgt auf ein bestimmtes Semaphor.
Semaphor mit nicht-programmiertem Sprung bzw. Haltepunkt.
509845/0765
2517296
Abkürzungen:
ACU (address control unit)
ALU (arithmetic and logic unit)
AS (address syllable)
ASW (address space word)
BAR (boundary addres s' re gi s te r)
BCD (binary coded decimal)
BR (base register)
CCE (channel command entry)
CCU (channel control unit)
CMRN (the callers maximum ring number)
CCW (channel command word)
CET (current state entry time)
CIA (control store interface adapter)
CJP (currently executing process)
CPU (central process unit)
CU (compilation unit)
CSU (control store unit)
D (displacement)
DMU (data management unit)
DA (device adapter)
EAR (effective address ring)
EXW (exeption word)
GR (general register)
GTW (G-table word)
IC (instruction counter)
IFU (instruction fetch unit)
Adressensteuerwerk Rechenwerk
Adreßsilbe
Adres s en raumwo rt Adressengrenzregister
Binär codierte Dezimalziffer
Basisregister Kanaleingangsbefehl Kanalsteuereinheit
maximale Ringnummer des Aufrufers
Kanalbefehlswort
Eingangszeit des laufenden Zustandes
Steuerspeicher-Schnittstellenadapter
gerade ablaufender Prozeß Zentraleinheit Compilereinheit Speichersteuerwerk Verschiebung Datenmanagementeinheit Geräteadapter effektiver Adreßring Ausnahmewort Generalregister G-Tabellenwort Be f eh 1 s ζ äh lwe rk Befehlsabrufeinheit
509845/0765
2517296
I/O (input/output) IOC (input/output controller) IPQW (internal process queue word)
IR (index register) ITBR (indirect to base register)
ITS (indirect to segment)
J (job)
JCL (job control language)
JTW (J-table word)
LCT (logical channel table)
LIFO (last-in-first-out)
LSU (local store memory or scratch pad memory)
MBZ (must be zero) MOS (metal oxide semiconductor) MAXR (maximum ring number)
MSC (mass storage controller)
MTC (magnetic tape controller)
NFS (non-functional status)
NPRN (new process ring number)
NJP (new process replacing the
currently executing process)
PCB (process control block)
PCT (physical channel table)
PCU (peripheral control unit)
PL/I (programming language/one)
PMW (process main word)
Eingabe/Ausgabe Ein/Ausgabe-Steuerung
Internprozeß-Warteschlangenwort
Indexregister
Register für indirekte Basisadressierung
indirekte Segmentadressierung
Job
Jobsteuersprache j-Tabellenwort
logische Kanaltabelle
zuletzt eingegeben/als erster entnommen örtlicher Speicher oder Zwischenspeicher muß Null sein
Metalloxyd-Halbleiter
maximale Ringnummer, bei der eine Prozedur ausgeführt werden kann. Sie wird im Segmentdeskriptor gefunden.
Großspeicher-Steuergerät Magnetbandgerätsteuereinheit
nicht-funktioneller Zustand
neue Prozeßringnummer
neuer Prozeß als Ersatz für den ablaufenden Prozeß Prozeßsteuerblock physikalische Kanaltabelle Peripheriesteuereinheit P rogrammsprache/1 Prozeßhauptwort
509845/0765
2517296
Q/PR/RDY (queue of processes ready)
RD RHU
RPW RSU
RTO SBW SEG SKW
EP
PD
STN STR STW STWA
WR WTA
(read ring)
(reserved for hardware use)
(running process word) (reserved for software use)
(ready time accounting)
(residual time out) (stack base word) (segment number) (stack word)
(segment containing entry point)
(segment containing procedure descriptor)
(scientific register) (segment relative address) (segment table entry)
(segment table number) (status register) (segment table word) (segment table word array)
(T-register, stack register) (unit record controller)
<write ring)
(waiting time accounting) Warteschlange des Prozesses vorbereitet
Lesering
reserviert für Hardwarebenutzung
laufendes Prozeßwort
reserviert für Softwarebenutzung
Bereitschaftszeitberechnung
Restzeitablauf
Stapelspeicherbasiswort Segmentnummer
Stapelspeicherwort
das Segment, welches die im Prozedurdeskriptor gefundene Eingangs s te He aufweist
Segment, welches den Prozedurdeskriptor aufweist wissenschaftliches Register relative Segmentadresse
Segmenttabelleneingangsstelle
Segmenttabellennummer Statusregister
Segmenttabellenwort
Segmenttabellenwortahordnung
T-register, Stapelspeicherregister
Aufzeichnungsgerät-Steuereinheit
Schreibring
Wartezeitberechnung
509845/0765
2517296
- 2*5- -
Literatur
1. Dijkstra, E.W., Co-Operating Sequential Processes. Programming Languages. F. Gennuvs, Ed. Academic Press. New York 1968. (Zuerst veröffentlicht als Report EWD, Department of Mathematics, technische Universität, Eindhoven, Niederlande, 1965).
2. Patil, S.S. Coordination of Asynchronous Events. Report MAC-TR-72. Project MAC, M.I.T., Cambridge, Massachusetts, Juni 1970.
3. Patil, S.S., Limitations and Capabilities of Dijksträ's Semaphore Primitives. Computation Structures Group, Memo No. 57, Project MAC, M.I.T., Cambridge, Massachusetts, Februar 1971.
4. Holt, A.W. and F. Commoner. Events and Conditions. Record of the Project MAC Conferences on Concurrent Systems and Parallel Computations. Association
for Computing Machinery, Juni 1970, Seiten 3-52.
5. Bachmann, C.W., Bouvard, J., Architecture Definition Technique: Its Objectives, Theory, Process Facilities and Practice. Proceedings of the 1972 ACM SIGFIDET Workshop, DATA DESCRIPTION, ACCESS AND CONTROL. Association for Computing Machinery, November 1972.
6. Bachmann, CW., Data Strucure Diagrams, DATA BASE (Quaterly Newsletter of ACM SIGBPD). Volume 1,
Nummer 2, Sommer 1969.
7. DT-OS 23 50 146
23 50 170 23 50 202 23 50 215
23 50 225
24 23 194 24 58 065 24 59 006
δ'Ο 9845/0785

Claims (11)

Patentansprüche
1. Mehrprogramm-Datenverarbeitungssystem mit einer Vielzahl von Systemmitteln und Prozessen, wobei jeder Prozeß sich im Ablauf-, Bereitschafts-, Warte- und Aussetz-Zustand befinden kann, gekennzeichnet durch ein Stillstand-Detektorsystem zur Feststellung einer Situation, in der wenigstens einer der Prozesses auf wenigstens ein für einen dieser Prozesse keinesfalls zur Verfügung stehendes Systemmittel wartet, und wobei das Stillstand-Detektorsystem folgende Einrichtungen aufweist:
(a) eine erste Einrichtung zur Anforderung der Zuordnung eines der Systemmittel im Auftrag eines der Prozesse zu diesem Prozeß;
(b) eine zweite mit der ersten Einrichtung verbundene Einrichtung zum Überführen des genannten einen Prozesses in den Wartezustand zwecks Warten auf das angeforderte genannte Systemmittel, falls dieses Systemmittel einem zweiten Prozeß zugeordnet und momentan nicht verfügbar ist;
(c) eine dritte mit den ersten und zweiten Einrichtungen verbundene Einrichtung zur Prüfung der Zugehörigkeitsbeziehung eines jeden auf das Systemmittel wartenden Prozesses und
(d) eine vierte mit den dritten Einrichtungen verbundene Einrichtung zur Feststellung, ob der zweite Prozeß auf ein zweites Systemmittel wartet, welches bereits dem ersten Prozeß zugeordnet ist.
5 0 9845/0765
2517296
51-01339 Ge ' ~
2. Systein nach Anspruch 1 , gekennzeichnet durch eine fünfte an die erste und zweite Einrichtung angeschlossene Einrichtung, welche der zweiten Einrichtung anzeigt, daß der erste Prozeß auf das erste Systemmittel wartet.
3. System nach Anspruch 2, gekennzeichnet durch eine sechste an die zweite, vierte und fünfte Einrichtung angeschlossene Einrichtung zur Verhinderung des Wartezustandes hinsichtlich des ersten Prozesses, sofern der zweite Prozeß bereits auf das zweite Systemmittel wartet, welches gegenwärtig dem ersten Prozeß zugeordnet ist.
4. System nach Anspruch 3,gekennzeichnet durch eine siebente an die dritte Einrichtung angeschlossene Einrichtung zum Hinweis aufVkitglieds-Systemelement eines Eigentümer-Systemelements.
5. System nach einem der Ansürche 1 bis 4, gekennzeichnet durch einen erweiterten Semaphormechanismus, dem ' ein Ereignis zugeordnet ist, dessen Auftreten der Feststellung einer Bedingung hinsichtlich eines Prozesses aus einer ersten Menge von Prozessen folgt, wobei diese Bedingung für irgendeinen Prozeß aus einer zweiten Menge von Prozessen von Bedeutung ist und durch ein Stillstand-Detektorsystem, das folgende Einrichtungen aufweist:
(a) eine achte Einrichtung zur Bildung eines Interesses an wenigstens einem Ereignisauftritt innerhalb der ersten Menge von Prozessen im Auftrag irgendeines zweiten Prozesses aus der Menge von Prozessen;
(b) eine neunte mit der achten Einrichtung verbundene Einrichtung zum Spezifizieren der den Ereignisauftritt bildenden Bedingung und
(c) eine zehnte mit der achten und neunten Einrichtung verbundene Einrichtung zum überwachen des Ereignisauftritts
509845/0 7 85
2517296
in irgendeinem Prozeß aus der ersten Menge von Prozessen im Auftrag irgendeines Prozesses aus der zwei-, ten Menge von Prozessen.
6. System nach Anspruch 5/gekennzeichnet durch eine elfte an die achte und zehnte Einrichtung angeschlossene Einrichtung, welche der achten Einrichtung anzeigt, daß der Ereignisauftritt in irgendeinem Prozeß in der ersten Menge von Prozessen nicht auftreten kann.
7. System nach Anspruch 6, gekennzeichnet durch eine zwölfte an die achte, zehnte und elfte Einrichtung angeschlossene Einrichtung zur Verhinderung der Bildung eines Interesses hinsichtlich des genannten in irgendeinem Prozeß aus der ersten Menge von Prozessen auftretenden Ereignisauftritts im Auftrag irgendeines Prozesses aus der zweiten Menge von Prozessen.
8. System nach einem der Ansprüche 1 bis 7 zur Feststellung der Bedingung, ob zwei oder mehrere Prozesse auf Ereignisse warten, die nicht eintreten können, gekennzeichnet durch
(a) eine dreizehnte Einrichtung zur Prüfung der Anforderung eines Prozesses innerhalb einer Prozeßmenge zwecks Zuordnung eines ersten Systemmittels innerhalb einer Menge von Systemmitteln und
(b) eine vierzehnte mit der dreizehnten Einrichtung verbundenen Einrichtung zur Bestimmung, ob das erste Systemmittel einem zweiten Prozeß innerhalb der Prozeßmenge zugeordnet ist, ob der zweite Prozeß bereits direkt oder indirekt auf ein zweites Systemmittel innerhalb der Systemmittelmenge wartet und ob dieses zweite Systemmittel gerade dem ersten Prozeß zugeordnet ist.
5 0 9845/0765
2517296
51-01339 Ge _
9. System nach einem der Ansprüche 1 bis 8, gekennzeichnetdurch
(a) eine fünfzehnte Einrichtung zur Anforderung der exklusiven Zuordnung irgendeines ersten Systemmittels im Auftrag irgendeines ersten Prozesses zu diesem ersten Prozeß;
(b) eine sechzehnte mit der fünfzehnten Einrichtung verbundene Einrichtung zum Registrieren der Zuordnung des ersten Systemmittels zu dem ersten Prozeß;
(c) eine siebzehnte mit der fünfzehnten Einrichtung verbundene Einrichtung, um dem ersten Prozeß die Zuordnung des ersten Systemmittels anzuzeigen;
(d) eine achtzehnte mit der fünfzehnten Einrichtung verbundene Einrichtung/ um den ersten Prozeß in den Wartezustand zu bringen und diesen zu veranlassen, auf die Verfügbarkeit und Zuordnung des ersten angeforderten Systemmittels zu warten, falls das erste Systemmittel, einem zweiten Prozeß zugeordnet und gegenwärtig nicht verfügbar ist;
(e) eine neunzehnte mit der sechzehnten Einrichtung verbundene Einrichtung zur Anforderung der Freigabe der Zuordnun des ersten Systemmittels durch den ersten Prozeß, welchem es gegenwärtig zugeordnet ist;
(f) eine zwanzigste mit den sechzehnten und neunzehnten Einrichtungen verbundene Einrichtung zur Veranlassung des ersten auf die Verfügbarkeit der Zuordnung des ersten Systemmittels wartenden Prozesses zur Einnahme des Bereitschaftszustandes, wenn das erste Systemmittel zur Zuordnung verfügbar wird;
(g) eine einundzwanigste mit den sechzehnten und achtzehnten Einrichtungen verbundene Einrichtung zur Prüfung der Systemmittel/Prozeß-Beziehung irgendeines gerade auf die Verfügbarkeit eines Systemmittels wartenden Prozesses und irgendeines gerade einem Prozeß zugeordneten Systemmittels;
509845/0765
2517296
51-01339 Ge ~ *fÖ ~
(h) eine zweiundzwareigste mit der einundzwanzigsten Einrichtung verbundenen Einrichtung zur Bestimmung, wann ein zweiter Prozeß auf die Verfügbarkeit eines zweiten Systemmittels wartet, wobei das zweite Systemmittel im
d i 3Γ G lc t
Augenblick-oder indirekt über dritte, vierte usw. Paare von Prozeß/Systemmittel-Wartezuordnungen dem ersten Prozeß zugeordnet ist, was zu einem endgültigen Stillstand führen würde und
(i) eine dreiundzwarzLgste mit der zweiundzwanzigsten Einrichtung verbundene Einrichtung, um dem ersten Prozeß die Stillstands-Feststellung und die Nicht-Zuordnung des ersten Systemmittels anzuzeigen.
10. System nach Anspruch 1 oder einem der folgenden, bei dem die Systemmittel für einen Prozeß einen gemeinsam zugeordneten, einen exklusiv zugeordneten oder einen verfügbaren Zustand aufweisen können, gekennzeichnet durch
(a) eine vierundzwanzigste Einrichtung zur Anforderung der gemeinsamen oder exklusiven Zuordnung irgendeines ersten Systemmittels im Auftrag irgendeines ersten Prozesses zu diesem ersten Prozeß;
(b) eine fünfundzwanzigste mit der vierundzwanzigsten Einrichtung verbundene Einrichtung zum Registrieren der exklu siven Zuordnung des ersten Systemmittels zu dem ersten Prozeß;
(c) eine sechsundzwanzigste mit der vierundzwanzigsten Einrichtung verbundene Einrichtung zum Registrieren der gemeinsamen Zuordnung des ersten Systemmittels zu dem ersten Prozeßp
(d) eine siebenundzwanzigste mit der vierundzwanzigsten Einrichtung verbundene Einrichtung, um den ersten Prozeß die Zuordnung des ersten Systemmittels anzuzeigen;
(e) eine achtundzwanzigste mit der vierundzwanzigsten Einrichtung verbundene Einrichtung; um den ersten Prozeß in den Wartezustand zu bringen und diesen zu veranlassen, auf die Verfügbarkeit und Zuordnung des ersten angeforderten Systemmittels zu warten, falls das erste Systemmittel
509845/0765
51-01339 Ge . 2517298
- 1#Γ-
XSO
einem zweiten Prozeß exklusiv zugeordnet und gegenseitig weder für eine exklusive noch für eine gemeinsame Zuordnung verfügbar ist;
(f) eine neunundzwanzigste mit der vierundzwanzigsten Einrichtung verbundene Einrichtung, um den ersten Prozeß in den Wartezustand zu bringen und diesen zu veranlassen, auf die Verfügbarkeit und Zuordnung des ersten angeforderten Systemmittels zu warten, falls das erste Systemmittel einen oder verschiedenen zweiten Prozessen gemeinsam zugeordnet und gegenwärtig für eine exklusive Zuordnung nicht verfügbar ist;
(g) eine dreißigste mit der fünfundzwanzigsten und sechsundzwanzigsten Einrichtung verbundene Einrichtung zur Anforderung der Freigabe der Zuordnung des ersten Systemmittels durch den ersten Prozeß, welchem es gegenwärtig zugeordnet ist;
(h) eine einunddreißigste mit der fünfundzwanzigsten, sechsundzwanzigsten und dreißigsten Einrichtung verbundene Einrichtung zur Veranlassung des ersten auf die Verfügbarkeit der Zuordnung des ersten Systemmittels wartenden Prozesses zur Einnahme des Bereitschaftzustandes, wenn das erste Systemmittel zur Zuordnung verfügbar wird;
(i) eine zwehnddreißigste mit der fünfundzwanzigsten, sechsundzwanzigsten, achtundzwanlgsten und neuundzwan&gsten Einrichtung verbundene Einrichtung zur Prüfung der Systemmittel/Prozeß-Beziehung irgendeines gerade auf die Verfügbarkeit eines Systemmittels wartenden Prozesses und irgendeines gerade einem Prozeß zugeordneten Systemmittels;
(j) eine dreiunddreißigste mit der zweiunddreißigsten Einrichtung verbundene Einrichtung zur Bestimmung, wann ein zweiter Prozeß auf die Verfügbarkeit eines zweiten Systemmittels wartet, wobei das zweite Systemmittel im Augenblick indirekt über dritte, vierte, usw. Paare von Prozeß/ Systemmittel-Wartezuordnungen dem ersten Prozeß zugeordnet ist, wobei diese Ringbeziehung zu einem endgültigen Stillstand führen würde und
509845/0765
2517296
51-01339 Ge'
(Jc) eine vierunddreißigste mit der dreiunddreißigsten Ein-. richtung verbundene Einrichtung, um den ersten Prozeß die Stillstands-Feststellung und die Nicht-Zuordnung des ersten Systemmittels anzuzeigen.
11. System nach den Ansprüchen 9 und 10,gekennzeichnet durch eine fünfunddreißigste Einrichtung zur Bestimmung/ ob ein erster wartender Prozeß auf ein spezifisches oder irgendein Systemmittel innerhalb einer spezifischen Systemmittelklasse wartet, wobei das spezifische Systemmittel oder alle Systemmittel innerhalb der spezifischen Systemmittelklasse für diesen ersten Prozeß verfügbar ist.
509845/0765
DE2517297A 1974-04-19 1975-04-18 Einrichtung zum feststellen eines zu einem zu verhindernden endgueltigen stillstand fuehrenden systemzustandes Ceased DE2517297A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/462,552 US4318182A (en) 1974-04-19 1974-04-19 Deadlock detection and prevention mechanism for a computer system

Publications (1)

Publication Number Publication Date
DE2517297A1 true DE2517297A1 (de) 1975-11-06

Family

ID=23836849

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2517297A Ceased DE2517297A1 (de) 1974-04-19 1975-04-18 Einrichtung zum feststellen eines zu einem zu verhindernden endgueltigen stillstand fuehrenden systemzustandes

Country Status (6)

Country Link
US (1) US4318182A (de)
JP (1) JPS50144355A (de)
CA (1) CA1216072A (de)
DE (1) DE2517297A1 (de)
FR (1) FR2423825A1 (de)
GB (1) GB1511282A (de)

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58203558A (ja) * 1982-05-21 1983-11-28 Hitachi Ltd 計算機・記憶装置へのフアイル割り当て方式
US4494193A (en) * 1982-09-30 1985-01-15 At&T Bell Laboratories Deadlock detection and resolution scheme
US4891749A (en) * 1983-03-28 1990-01-02 International Business Machines Corporation Multiprocessor storage serialization apparatus
US4587609A (en) * 1983-07-01 1986-05-06 Honeywell Information Systems Inc. Lockout operation among asynchronous accessers of a shared computer system resource
JPS61233849A (ja) * 1985-04-08 1986-10-18 Hitachi Ltd デ−タベ−ス排他制御方法
US4847754A (en) * 1985-10-15 1989-07-11 International Business Machines Corporation Extended atomic operations
US4775934A (en) * 1986-06-17 1988-10-04 Yeda Research And Development Co. Method for concurrent logic program
JPS6349945A (ja) * 1986-08-20 1988-03-02 Nec Corp デ−タ処理装置のプロセス・ロ−ルイン方式
US4829425A (en) * 1986-10-21 1989-05-09 Intel Corporation Memory-based interagent communication mechanism
US4823304A (en) * 1987-01-15 1989-04-18 International Business Machines Incorporated Method of providing synchronous message exchange in an asychronous operating environment
AU2130888A (en) * 1987-07-21 1989-02-13 Stellar Computer Inc. Detecting multiple processor deadlock
WO1989008883A1 (en) * 1988-03-14 1989-09-21 Unisys Corporation Record lock processor for multiprocessing data system
JPH02113351A (ja) * 1988-10-24 1990-04-25 Nec Corp ファイル処理装置
US5193188A (en) * 1989-01-05 1993-03-09 International Business Machines Corporation Centralized and distributed wait depth limited concurrency control methods and apparatus
US5133074A (en) * 1989-02-08 1992-07-21 Acer Incorporated Deadlock resolution with cache snooping
JPH0318935A (ja) * 1989-06-15 1991-01-28 Hitachi Ltd データリストに対するアクセスの直列化方式
CA2027934C (en) * 1989-12-22 1994-06-21 Cherie C. Barnes Accelerated deadlock detection in congested data transactions
US5583992A (en) * 1990-09-14 1996-12-10 Kabushiki Kaisha Toshiba Computer network system for detecting global deadlock
JPH05134886A (ja) * 1990-11-30 1993-06-01 Fujitsu Ltd デツドロツク検出方式
US5317737A (en) * 1991-07-29 1994-05-31 Ncr Corporation Method and apparatus for controlling a re-entrant synchronization lock tenure in a multiprocessor system
US5412788A (en) * 1992-04-16 1995-05-02 Digital Equipment Corporation Memory bank management and arbitration in multiprocessor computer system
FR2708766B1 (fr) * 1993-08-03 1995-09-08 Bull Sa Procédé d'analyse d'interblocages dans un système d'exploitation.
US5623670A (en) * 1995-02-17 1997-04-22 Lucent Technologies Inc. Method and apparatus for crash safe enforcement of mutually exclusive access to shared resources in a multitasking computer system
US5713017A (en) * 1995-06-07 1998-01-27 International Business Machines Corporation Dual counter consistency control for fault tolerant network file servers
US6532487B1 (en) 1995-12-04 2003-03-11 International Business Machines Corporation Method and system for managing semaphores in an object-oriented multi-tasking computer system
US7522931B2 (en) * 1998-06-05 2009-04-21 Netnumber, Inc. Method and apparatus for accessing a network computer to establish a push-to-talk session
SE521433C2 (sv) * 1998-07-22 2003-11-04 Ericsson Telefon Ab L M En metod för hantering av risken för en total låsning mellan samtidiga transaktioner i en databas
US6295284B1 (en) * 1998-12-23 2001-09-25 Qualcomm. Inc. Method and apparatus for providing fair access in a group communication system
US6681241B1 (en) 1999-08-12 2004-01-20 International Business Machines Corporation Resource contention monitoring employing time-ordered entries in a blocking queue and waiting queue
US6721775B1 (en) 1999-08-12 2004-04-13 International Business Machines Corporation Resource contention analysis employing time-ordered entries in a blocking queue and waiting queue
US6460124B1 (en) * 2000-10-20 2002-10-01 Wisconsin Alumni Research Foundation Method of using delays to speed processing of inferred critical program portions
US20030189940A1 (en) * 2001-07-02 2003-10-09 Globespan Virata Incorporated Communications system using rings architecture
US7120762B2 (en) * 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
JP2003162433A (ja) * 2001-11-27 2003-06-06 Fujitsu Ltd メモリシステム
US7703077B2 (en) * 2002-04-30 2010-04-20 Microsoft Corporation Programming model to detect deadlocks in concurrent programs
US7185033B2 (en) 2002-08-01 2007-02-27 Oracle International Corporation Buffered message queue architecture for database management systems with unlimited buffered message queue with limited shared memory
US7203706B2 (en) * 2002-08-01 2007-04-10 Oracle International Corporation Buffered message queue architecture for database management systems with memory optimizations and “zero copy” buffered message queue
US7185034B2 (en) * 2002-08-01 2007-02-27 Oracle International Corporation Buffered message queue architecture for database management systems with guaranteed at least once delivery
US7181482B2 (en) * 2002-08-01 2007-02-20 Oracle International Corporation Buffered message queue architecture for database management systems
US7360219B2 (en) * 2002-12-13 2008-04-15 Hewlett-Packard Development Company, L.P. Systems and methods for facilitating fair and efficient scheduling of processes among multiple resources in a computer system
US20040142563A1 (en) * 2003-01-16 2004-07-22 Applied Materials, Inc. Methods and systems for exchanging messages in a controller for a substrate processing system
US7984427B2 (en) * 2003-08-07 2011-07-19 International Business Machines Corporation System and methods for synchronizing software execution across data processing systems and platforms
US9053239B2 (en) 2003-08-07 2015-06-09 International Business Machines Corporation Systems and methods for synchronizing software execution across data processing systems and platforms
US8365193B2 (en) * 2003-08-14 2013-01-29 Oracle International Corporation Recoverable asynchronous message driven processing in a multi-node system
US7340569B2 (en) * 2004-02-10 2008-03-04 Wisconsin Alumni Research Foundation Computer architecture providing transactional, lock-free execution of lock-based programs
US7797669B1 (en) 2004-02-13 2010-09-14 Microsoft Corporation Analysis of distributed software systems via specification substitution
US7784062B2 (en) * 2004-06-18 2010-08-24 General Electric Company Event based operating system, method, and apparatus for instrumentation and control systems
US7590744B2 (en) * 2004-12-15 2009-09-15 Guard Insurance Group Remote communication system and method implementing a session server and one or more object servers
US20060130124A1 (en) * 2004-12-15 2006-06-15 Guard Insurance Group A Remote Communication System and Method Implementing a Session Server and One or More Object Servers
US7779418B2 (en) * 2004-12-30 2010-08-17 Oracle International Corporation Publisher flow control and bounded guaranteed delivery for message queues
US7818386B2 (en) * 2004-12-30 2010-10-19 Oracle International Corporation Repeatable message streams for message queues in distributed systems
US7735089B2 (en) * 2005-03-08 2010-06-08 Oracle International Corporation Method and system for deadlock detection in a distributed environment
US7496726B1 (en) * 2005-04-18 2009-02-24 Sun Microsystems, Inc. Controlling contention via transactional timers among conflicting transactions issued by processors operating in insistent or polite mode
US7318138B1 (en) 2005-08-30 2008-01-08 Symantec Operating Corporation Preventing undesired trespass in storage arrays
US8196150B2 (en) * 2005-10-07 2012-06-05 Oracle International Corporation Event locality using queue services
US7680793B2 (en) * 2005-10-07 2010-03-16 Oracle International Corporation Commit-time ordered message queue supporting arbitrary read and dequeue patterns from multiple subscribers
FR2903774B1 (fr) * 2006-07-17 2008-09-05 Renault Sas Procede de validation d'un diagnostic de fontionnement d'un dispositif.
US7861093B2 (en) * 2006-08-30 2010-12-28 International Business Machines Corporation Managing data access via a loop only if changed locking facility
US9027025B2 (en) * 2007-04-17 2015-05-05 Oracle International Corporation Real-time database exception monitoring tool using instance eviction data
US8060775B1 (en) 2007-06-14 2011-11-15 Symantec Corporation Method and apparatus for providing dynamic multi-pathing (DMP) for an asymmetric logical unit access (ALUA) based storage system
US9128895B2 (en) * 2009-02-19 2015-09-08 Oracle International Corporation Intelligent flood control management
US8521472B2 (en) * 2009-09-18 2013-08-27 International Business Machines Corporation Method to compute wait time
US9165086B2 (en) 2010-01-20 2015-10-20 Oracle International Corporation Hybrid binary XML storage model for efficient XML processing
US9038048B2 (en) * 2010-07-22 2015-05-19 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for protecting applications from races
US9454460B2 (en) 2010-07-23 2016-09-27 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for providing determinism in multithreaded programs
US8458530B2 (en) 2010-09-21 2013-06-04 Oracle International Corporation Continuous system health indicator for managing computer system alerts
JP5859472B2 (ja) * 2013-03-26 2016-02-10 株式会社日立製作所 プロセスの待ち行列を共有する複数のプロセッサを有する計算機、及び、プロセスディスパッチ処理方法
US20170149864A1 (en) * 2015-11-24 2017-05-25 International Business Machines Corporation Distributed applications management with dependent resilient distributed services
US10324796B2 (en) * 2016-08-11 2019-06-18 International Business Machines Corporation Stack detail recovery
US10540217B2 (en) 2016-09-16 2020-01-21 Oracle International Corporation Message cache sizing
US10635503B1 (en) * 2018-01-31 2020-04-28 EMC IP Holding Company LLC Systems and methods for semaphore synchronization
CN111090528B (zh) * 2019-12-25 2023-09-26 北京天融信网络安全技术有限公司 死锁确定方法、装置及电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3603935A (en) * 1969-05-12 1971-09-07 Xerox Corp Memory port priority access system with inhibition of low priority lock-out
US3641505A (en) * 1969-06-25 1972-02-08 Bell Telephone Labor Inc Multiprocessor computer adapted for partitioning into a plurality of independently operating systems
US3648252A (en) * 1969-11-03 1972-03-07 Honeywell Inc Multiprogrammable, multiprocessor computer system
US3648253A (en) * 1969-12-10 1972-03-07 Ibm Program scheduler for processing systems
US3665404A (en) * 1970-04-09 1972-05-23 Burroughs Corp Multi-processor processing system having interprocessor interrupt apparatus
US3676860A (en) * 1970-12-28 1972-07-11 Ibm Interactive tie-breaking system
US3676861A (en) * 1970-12-30 1972-07-11 Honeywell Inf Systems Multiple mask registers for servicing interrupts in a multiprocessor system
US3753234A (en) * 1972-02-25 1973-08-14 Reliance Electric Co Multicomputer system with simultaneous data interchange between computers

Also Published As

Publication number Publication date
JPS50144355A (de) 1975-11-20
US4318182A (en) 1982-03-02
FR2423825A1 (fr) 1979-11-16
FR2423825B1 (de) 1982-12-03
GB1511282A (en) 1978-05-17
CA1216072A (en) 1986-12-30

Similar Documents

Publication Publication Date Title
DE2517297A1 (de) Einrichtung zum feststellen eines zu einem zu verhindernden endgueltigen stillstand fuehrenden systemzustandes
DE2517171A1 (de) Datenverarbeitungssystem mit erweitertem semaphor-aufbau
US4395757A (en) Process synchronization utilizing semaphores
US4369494A (en) Apparatus and method for providing synchronization between processes and events occurring at different times in a data processing system
US4130867A (en) Database instruction apparatus for determining a database record type
US4394725A (en) Apparatus and method for transferring information units between processes in a multiprocessing system
US4044334A (en) Database instruction unload
DE69729822T2 (de) Echtzeit-Taskzuweiser
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
US4084224A (en) System of controlling procedure execution using process control blocks
US4025901A (en) Database instruction find owner
DE60217157T2 (de) Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts
DE2626703A1 (de) Intern programmierbares datenverarbeitungssystem
US4024508A (en) Database instruction find serial
DE2612139A1 (de) Ein/ausgang-steuerungssystem
DE3716229A1 (de) Mikroprozessorchip mit einem stapelrahmen-cache
EP0006164B1 (de) Multiprozessorsystem mit gemeinsam benutzbaren Speichern
DE3741850A1 (de) Ausfuehrungseinheit fuer einen i/o-prozessor
DE2411963B2 (de) Datenverarbeitungsanlage
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE19506734A1 (de) Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange
DE2714805A1 (de) Datenverarbeitungssystem
DE1437698A1 (de) Verfahren und Einrichtung zum UEbertragen von Informationen
DE1524102B2 (de) Elektronische, aus baueinheiten aufgebaute datenverarbeitungsmaschine
DE2517276A1 (de) Datenverarbeitungssystem

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8131 Rejection