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 systemzustandesInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock 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;
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
für eine Ereignisfeststellung aufgrund einer
Ereignisvariablen
Zwischenprozeß-Kommunikations-
und Synchronisationsmöglichkeit
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
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;
then do;
/' Bestimme, ob das Systemmittel gegenwärtig vom Prozeß
beansprucht wiru '/
call findowner (prptr, "pr ro", p_evptr);
call findowner (prptr, "pr ro", p_evptr);
/' Bestimme, ob ein Warten einen unwiderruflichen
Ausfall bedeutet '/
if deadly_embrace (p_evptr, p_prptr) then do;
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;
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;
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
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);
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 ■·/ -■';·· ^
/' 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);
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.
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.
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.
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.
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;
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.
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.
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
.
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.
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.
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
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
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.
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.
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
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.
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.
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
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.
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.
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.
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.
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.
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
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.
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.
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
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.
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
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
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.
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.
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
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.
(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.
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)
(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.
(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
logische Kanaltabelle
zuletzt eingegeben/als erster entnommen örtlicher Speicher oder Zwischenspeicher
muß Null sein
Metalloxyd-Halbleiter
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
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
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)
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
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
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)
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)
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 |
-
1974
- 1974-04-19 US US05/462,552 patent/US4318182A/en not_active Expired - Lifetime
-
1975
- 1975-04-16 CA CA000224786A patent/CA1216072A/en not_active Expired
- 1975-04-18 DE DE2517297A patent/DE2517297A1/de not_active Ceased
- 1975-04-18 JP JP50047335A patent/JPS50144355A/ja active Pending
- 1975-04-18 FR FR7512259A patent/FR2423825A1/fr active Granted
- 1975-04-21 GB GB16318/75A patent/GB1511282A/en not_active Expired
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 |