CH633643A5 - Verfahren zur blockierungsfreien verzahnten simultanverarbeitung mehrerer aufgaben mittels mehrerer programme in einer datenverarbeitungsanlage. - Google Patents

Verfahren zur blockierungsfreien verzahnten simultanverarbeitung mehrerer aufgaben mittels mehrerer programme in einer datenverarbeitungsanlage. Download PDF

Info

Publication number
CH633643A5
CH633643A5 CH1024978A CH1024978A CH633643A5 CH 633643 A5 CH633643 A5 CH 633643A5 CH 1024978 A CH1024978 A CH 1024978A CH 1024978 A CH1024978 A CH 1024978A CH 633643 A5 CH633643 A5 CH 633643A5
Authority
CH
Switzerland
Prior art keywords
task
tasks
waiting
processing
register
Prior art date
Application number
CH1024978A
Other languages
English (en)
Inventor
Paul Rudolf Roever
Original Assignee
Ibm
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ibm filed Critical Ibm
Publication of CH633643A5 publication Critical patent/CH633643A5/de

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)

Description

Die Erfindung soll nachfolgend anhand von Ausführungsbeispielen im einzelnen beschrieben werden. Die folgenden Beispiele basieren auf Instruktionen für IBM-System-360-Maschinen, wie sie im eingangs genannten US-Patent 3 400 371 erwähnt sind. 55
weisadresswert j, der als Adresswert unter anderem angibt, dass die ihm zugeordnete Aufgabe aktiv ist, d.h. Aufgabe g wartet nicht auf eine andere Aufgabe. Die N Aufgaben heissen a, b, c... f und die (N +1 )-ste Aufgabe ist Aufgabe j. Wird nun das Feld mit sich selbst [log2(N+1)] mal übersetzt, dann zeigt ein Wert der von j verschieden ist eine Schleife an. Da jedoch bekannt ist, dass eine Schleife nicht vorliegt, sollte nach [log2(N+l)]=log28=3 Übersetzunen, der Vektor ausschliesslich Werte enthalten, die gleich j sind.
Hinweisadressen Position
Hinweisadresse Position
Hinweisadresse Position jcdefgjj j abcdefg
.jefgjjjj j abcdefg
1.1.1.1.1.1JJ jabcdefg
= t^x) 1. Übersetzung
= t3(x) 2. Übersetzung
: t4(x) 3. Übersetzung
Die Übersetzung eines jeden Feldes t'(x) nach ti+1(x) wird für jede Registerposition r, die eine Hinweisadresse p enthält, vorgenommen durch Substitution des Inhalts g der Position p als neuer Inhalt der Position r, wobei r, p, g grösser oder gleich Null und kleiner oder gleich N sind.
Wird dieses Prinzip auf die verschiedenen Übersetzungen des Beispiels 1 angewendet, so zeigt sich im Feld t(x), dass die Position «a» die Hinweisadresse «b» enthält. Position b jedoch enthält den Wert «c». Der neue Wert, der im Feld t*(x) in Position «a» kommt, ist also «c». Dadurch verschwindet die Hinweisadresse «f» von Position «e» in t(x). Der neue Wert «g», der in t*(x) nach «e» kommt, ist der Wert, der in t(x) in Position «f» stand. Die Substitutionen sind leicht zu verfolgen und ergeben das Resultat j in der 3. Übersetzung.
Beispiel 2
Angenommen die Aufgaben a, b, c... h warten folgender-massen aufeinander:
I I
b e
t a
c t g
Beispiel 1
Es sei angenommen, dass die Aufgaben a, b, c, d, e, f, g fol-gendermassen aufeinander warten:
Hinweisadressen eaefjbccb
Position abcdjefgh
Hinweisadressen bbbcjbbbb
Position abcdjefgh
Hinweisadressen bbbbjbbbb
Position abcdjefgh
Hinweisadressen bbbbjbbbb
Position abcdjefgh
Hinweisadressen bbbbjbbbb
Position abcdjefgh
= t(x)
= t^x) 1. Übersetzung = t3(x) 2. Übersetzung = t4(x) 3. Übersetzung = t5(x) 4. Übersetzung
■f-g
J
Im Registerfeld wird das wie folgt dargestellt:
Hinweisadressen Position jbcdefgj jabcdefg
= t(x)
Position j ist die beliebig gewählte Position mit dem Hin-
60 In diesem Beispiel ist N+1 =9 und [log2(N +1)]=4. Position j wurde absichtlich mitten in die Reihe der Registerpositionen eingesetzt, um zu zeigen, dass ihre beliebige Stellung das Resultat nicht beeinflusst. Bei der zweiten Übersetzung zeigt das Auftreten eines ungleich-j-Resultates eine Schleife an. Dabei ist 65 interessant, dass alle Positionen ungleich-j-Hinweisadressen enthalten. Weiter ist zu bemerken, dass das nach der zweiten Übersetzung vorliegende Resultat in nachfolgenden Übersetzungen nicht ändert und somit [log2<N+1)] ein oberer Grenz-
633 643
4
wert und nicht notwendigerweise die Anzahl der Übersetzungen darstellt.
Beispiel 3
g I
Hinweisadressen Position
Hinweisadressen Position
Hinweisadressen Position
Hinweisadressen Position jffejgdc jabcdefg jddgjcjg jabcdefg jjjgjgjg jabcdefg jjjgjgjg jabcdefg fortschreitet, erfolgt daher mit grösster Wirkung. Als nächstes muss durch Prüfung des Hinweiswertes in der Position der Aufgabe B festgestellt werden, ob eine Blockierung vorliegt (sofern in Position von A feststellbar) oder nicht (sofern 0). 5 Zeigt sich keine Blockierung so darf Aufgabe A auf Aufgabe B warten, nachdem die Aufgabenpositionen neu zugeordnet wurden so, dass wiederum für jedes Paar p, q von Aufgaben, worin A und B enthalten sind und wobei p auf q wartet, q eine niedrigere Position einnimmt als p.
10 Nachfolgend soll die Funktion der Übersetzungsinstruktion (Translate) erläutert werden. Das Verfahren kann auf einem IBM System/360 Digitalrechner angewendet werden. Ein derartiger Rechner ist im schon genannten US-Patent 3 400 371 beschrieben. Die Translate Instruktion ist dort in Kolonne 90, 's Zeile 25-52 erwähnt. Sie benützt ein Format, das in Kolonne 88, Zeile 16-56 erwähnt ist. Die zugehörigen Microcode Logic ist in Figuren 5NA1 bis 5NA3 dargestellt.
Die Translate Instruktion als Funktion auf Maschinenebene = t2(x) 1. Übersetzung ist festgelegt in: IBM 360 und 370, Principles of Operation,
20 IBM-Druckschrift GA22-6821-8 und GA22-7000-4,9. Ausgabe, November 1970 respektive 4. Ausgabe, September 1974. Die = t3(x) 2. Übersetzung Instruktion hat folgenden Aufbau:
= t(x)
= t4(x) 3. Übersetzung
25
Dieser Fall zeigt zwei Gruppen von Aufgaben, wovon lediglich die Aufgaben c, e und g in einer Warteschleife stehen. Für N+l =8 wird also log2(N+1)=3. Ungleich-j-Hinweisadressen 30 sind nach der dritten Übersetzung stabilisiert. Offensichtlich ist Aufgabe g wenigstens ein Glied in der Warteschleife.
In einem Betriebssystem, das die Zuordnung von Verarbeitungsmitteln zu Aufgaben überwacht, ist bekannt, Blockierungen zu vermeiden, durch prüfen, welche Auswirkungen es hat, 35 wenn eine Aufgabe, die ein nicht erhältliches Verarbeitungsmittel verlangt, in den Wartezustand versetzt wird. Entsteht daraus eine Blockierung dann geht die Aufgabe nicht weiter.
Eine Abwandlung der Methode bewirkt, dass eine Schleife mittels einer geringeren Zahl von Übersetzungen entdeckt 40 wird, indem die Hinweisadressen, welche bestimmte Aufgaben angeben, bestimmten Registerpositionen derart zugeordnet werden, dass für jedes Paar von Aufgaben p, q, worin eine Aufgabe p auf eine Aufgabe q wartet, der Aufgabe q eine numerisch niedrigere Position als der Aufgabe p im Register 45 zugeordnet wird. Die Positionszuordnung wird vor der Übersetzung vorgenommen. Im vorliegenden Verfahren wird j immer der Wert 0 zugeordnet. Die Registerposition 0 hat daher stets den Wert 0.
Betrachtet man diese Abwandlung genauer, so zeigt sich, so dass für alle Paare von Aufgaben p, q, worin p auf q wartet, folglich p eine niedrigere Position wie q hat. Nun können folgende Schritte unternommen werden, um eine Blockierung festzustellen, wenn eine zuvor aktive Aufgabe A auf eine Aufgabe B wartet. Zunächst wird festgestellt, ob die Aufgabe B eine niedrigere 55 Registerposition als A einnimmt. Ist dies der Fall, dann kann keine Blockierung entstehen, weil die Kette von Hinweisadressen sich nicht schliessen kann. Demzufolge darf die Aufgabe A auf die Aufgabe B warten und ihre Position wird auf die Position der Aufgabe B hinweisen. 60
Hat jedoch Aufgabe B eine numerisch höhere Position als Aufgabe A, dann wird zwecks Entdeckung einer Blockierung die Hinweisadresszahl von A vorübergehend als Wert in die Position von A eingesetzt. Nun ergibt eine einzige Übersetzung des Registerinhalts mit sich selbst ein stabiles Resultat. Der 6.5 Grund dafür liegt darin, dass alle Registerpositionen Werte enthalten, die auf niedrigere Positionen hinweisen. Die Übersetzung, die nun von niedrigeren zu höheren Registerpositionen
Field
TR
List
Addn of
Addn of
OP. Code
Size
Operand 2
Operand 1
Byte Position
0
8
16 20
32 36 47
Die Acht-Bit-Bytes des ersten Operanden werden durch die Adresse des zweiten Operanden als Argumente zum Hinweis auf die Liste bezeichnet. Jedes Acht-Bit-Funktionsbyte aus der Liste ersetzt das entsprechende Argument im ersten Operanden. Die Bytes des ersten Operanden werden eins um das andere zur Übersetzung ausgewählt, von links nach rechts fortschreitend. Jedes Argumentbyte wird zur ursprünglichen Adresse des zweiten Operanden addiert. Die Addition folgt den Regeln der Adressenarithmetic, wobei das Argumentbyte, ein Acht-Bit-Byte, als ganze Zahl ohne Zeichen behandelt wird. Die Summe bildet die Adresse des Funktionsbytes, welche dann das ursprüngliche Argumentbyte ersetzt.
Bevor das Ausführungsbeispiel im einzelnen beschrieben wird, muss die Frage gestellt werden, worin die wesentliche Eigenschaft oder Natur des iterativ angewendeten Übersetzungsschritts liegt, der immer in sich geschlossen sein sollte. Es ist festzustellen, dass eine Übersetzungstabelle, sofern keine ihrer Werte ausserhalb des Bereichs des Arguments liegt, eine endliche Funktion beschreibt, deren Potenzen sämtlich definiert sind. Der Ausdruck Potenzen einer Funktion bezieht sich auf die iterative Anwendung der Funktion, z.B. wenn f(f(f(x))), kurz geschrieben wird als f3(x). Für solche Funktionen folgt für jeden Wert von p innerhalb des Argumentenbereichs, dass die Sequenz f(p), P(p), f3(p)... periodisch wird für i^N, wobei N die Länge des Argumentbereiches ist.
Nach m Übersetzungen eines Feldes, das eine endliche Funktion von f darstellt, mit und in sich selbst, wird die Position p enthalten f£2m+e](p), wobei e^0.
' Da f(p) = f[2°+°i(p), ist der Ausdruck korrekt für m=0.
Der Herleitungsschritt von m nach m+1 kann durch ein Beispiel gezeigt werden. Es sei angenommen, dass die Gleichung richtig ist für m = 2, so dass in Position p steht ft4+aXp) = q und in Position q steht ft4+b3(q) = r. Nun ist ersichtlich, dass die nächste Übersetzung (m = 3) p ergeben wird, mit ff8+cXp).
Wenn nun p ^ q, so ergibt sich wenn Position p übersetzt wird f[4+b]{t4+a](p) = f[8+c](p) jst jedoch q < p, dann wurde Position q bereits übersetzt und enthält ft8+dl(q) sofern Position p verar-
beitet wurde, p enthält also ff8+d] ft4+a] (p) = fß+4+e] (p) = fts+c]
(p).
Die Werte, die die Sequenz f(p), f2(p)... annimmt, nachdem sie periodisch geworden ist, werden Endwerte der Position p genannt. Zu dieser Definition kann festgestellt werden, dass nach logî(N) Übersetzungen einer Tabelle mit und in sich selbst alle Positionen ihre Endwerte anzeigen. Dies folgt daraus, dass entsprechend der ersten Feststellung log2(N) Übersetzungen in einer Position p den Wert ftN+eXp) erzeugen und dass f'(p) periodisch ist wenn i ^ N.
Für die Feststellung von Blockierungen können Übersetzungsfelder oder Tabellen so benutzt werden, dass jede Aufgabe p, die auf eine Aufgabe t wartet, ausgedrückt wird als f(p)=t. Eine aktive Aufgabe p kann ausgedrückt werden als f(p)=j. wobei für j=0 dann f(p)=0 wird. Daraus können die Aufgaben auf die direkt gewartet wird und auch die Aufgaben auf die indirekt gewartet wird für eine Aufgabe p festgestellt werden als f(p), f*(p), f3(p).
Nach dieser Konvention ist eine Aufgabe dann aktiv oder wartet, möglicherweise indirekt, auf eine aktive Aufgabe dann und nur dann, wenn ihr einziger Endwert j beträgt. Der Wert j kann = 0 gesetzt werden. Das gilt für aktive Aufgaben weil j = f(p) = P(p) = f3(p) =... Es gilt ebenfalls für Aufgaben p, die auf eine aktive Aufgabe q warten, da für manche Werte i, f'(p) = q und j = f['+1Xp) = fP^Xp) = • • •
Da gemäss Definition eine Aufgabe dann und nur dann blockiert ist, wenn sie nicht aktiv ist und nicht auf eine aktive Aufgabe wartet, kann gesagt werden, dass eine Aufgabe dann und nur dann blockiert ist, wenn ihr einziger Endwert j beträgt. Wie oben gezeigt kann dies durch log2(N +1) Übersetzungen festgestellt werden. Eine Aufgabe ist dann und nur dann nicht blockiert, wenn nach log2(N+1) Übersetzungen ihre Position ein j Resultat enthält.
Wenn umgekehrt nach log2(N+1) Übersetzungen eine Position p einen Wert q, der verschieden von 0 ist enthält, ist die Aufgabe p blockiert und der Wert q ist einer ihrer Endwerte. Dies bedeutet, dass die Aufgabe p wartet, gegebenenfalls indirekt, auf die Aufgabe q und dass für gewisse i und d gilt q = f'(p) = ft'+%). Da f*(p) = q, gilt auch f^q) = q, was bedeutet, dass q auf sich selbst wartet, eventuell indirekt. In anderen Worten, die Aufgabe p ist entweder ein Glied einer Warteschlaufe oder sie wartet auf ein anderes Glied derselben. Die Aufgabe q ist Glied der Warteschlaufe. Obwohl eine Aufgabe mehrere Endwerte haben kann, warten zwei Aufgaben die denselben von null verschiedenen Endwert haben beide, eventuell indirekt, auf dieselbe Aufgabe, da f eine Funktion ist.
Wie schon erwähnt ist es vorteilhaft, das vorliegende Verfahren als Sequenz von Instruktionen in einer Datenverarbeitungsanlage als Teil eines Betriebs- oder Datenbanksystems anzuwenden. Darauf wird nun näher eingegangen.
Ein Datenbank-Überwachungssystem kann zusammen mit einem Betriebssystem benützt werden, das die üblichen Möglichkeiten der Datenverwaltung sowie der Verwaltung von Zusatzspeichern aufweist und die üblichen Programmspra-chenkompiler enthält. Ein solches System ist die Konversationelle Überwachung, wie sie in der IBM-Druckschrift «Virtual Machine Facility/370; Command Language Guide», No. GC20-1804,5. Auflage, May 1975, beschrieben ist.
Ein Datenbanksystem kann zur Transaktionsüberwachung eingerichtet sein. Dazu gehört beispielsweise die Zuteilung von Verarbeitungsmitteln sowie deren Zulassung und Wiederbereitstellung. Auch eine Sperrenüberwachung ist vorhanden. Die Sperrenüberwachung prüft die Verträglichkeit erwünschter Sperren. Die Blockierungsüberwachung bezieht sich lediglich auf die Feststellung blockierter Aufgaben. Beide wirken dahin, dass Aufgaben der Reihe nach behandelt werden durch Steuerung und Freigabe der seriell benutzbaren Verarbeitungsmittel pro Aufgabe. Im zuvor genannten CMS-Betriebssystem
633643
geschieht diese Steuerung durch die beiden Makroinstruktionen ENQ und DEQ.
Die ENQ-Makroinstruktion veranlasst das Steuerprogramm, die seriell arbeitenden Verarbeitungsmittel der Reihe nach den Aufgaben zur Verfügung zu stellen. Jedes Verarbeitungsmittel ist mit Namen bezeichnet. Das Steuerprogramm bringt den Namen mit einem bestimmten Verarbeitungsmittel in Verbindung. Der Zugriff zum Verarbeitungsmittel ist daher rein logisch und nicht physisch beschränkt. Das bedeutet, dass die Aufgaben ein seriell arbeitendes Mittel ohne die ENQ-Makroinstruktion benützen können und dabei die Zuverlässigkeit des Programms in Frage stellen.
Wenn eines der Verarbeitungsmittel nicht zur Verfügung steht, weil es in einer ausschliessenden ENQ-Anforderung und nicht in einer nachfolgenden DEQ-Anforderung genannt worden war und wenn es sich um eine unbedingte Anforderung handelte, dann wird die aktive Aufgabe in den Wartezustand versetzt, bis alle angeforderten Verarbeitungsmittel zur Verfügung stehen. Sofern die ENQ-Anforderung bedingt ist, kommt die aktive Aufgabe sofort an die Reihe. Wenn die Benützung eines Mittels symbolisch einer Aufgabe zugeordnet ist, bleibt sie bei dieser Aufgabe bis eines der Programme der Aufgabe eine DEQ-Instruktion enthält, die dasselbe Mittel anfordert.
Die ENQ-Makroinstruktion kann also dazu benützt werden, den Zustand eines Verarbeitungsmittels festzustellen. Das heisst festzustellen, ob es unmittelbar zur Verfügung steht oder benützt wird und ob eine Benützungsanforderung für die aktive Aufgabe in einer anderen ENQ-Makroinstruktion bereits vorliegt.
Die DEQ-Makroinstruktion wird dazu benützt, die Benützungsanforderung einer aktiven Aufgabe für ein oder mehrere seriell benützbare Verarbeitungsmittel zu beseitigen. Sie kann auch benützt werden, um festzustellen, ob die Anforderung einer aktiven Aufgabe vorliegt oder bewilligt wurde. Ein dazu vorgesehenes Register kann auf null gesetzt werden, wenn die Anforderung befriedigt wurde. Wenn in der Ausführung im Datenbanksystem eine Aufgabe ein Verarbeitungsmittel anfordert und der Anforderung nicht unmittelbar genügt werden kann, wird überprüft, ob die anfordernde Aufgabe in eine Blok-kierung gerät, wenn sie in Wartezustand versetzt wird. Ist dies der Fall, dann muss das Blockieren vermieden werden, indem z.B. die anfordernde Aufgabe zurückgeschaltet und neu gestartet wird.
Nun soll auf die Sperren und Freigabeüberwachung eingegangen werden. Die Aufgabenanforderung eines Verarbeitungsmittels wird durch eine ENQ-Makroinstruktion veranlasst und enthält eine acht Zeichen lange Bezeichnung der verlangten Mittels. Die Steuerung geht auf die Sperrenfreigabeüberwachung über. Diese stellt mittels der Aufgabensteuerblocks fest, ob die Bezeichnung des verlangten Mittels in der Reihe der Steuerblocks schon irgendwo erscheint. Ist dies der Fall, dann existieren schon aktive Aufgaben. Nun kann die Aufgabe in den Wartezustand versetzt werden. Bevor jedoch das Datenbanksystem vom CMS-Betriebssystem diese Versetzung verlangt, wird die Blockierungsüberprüfungsmethode angewendet, um festzustellen, ob die Versetzung der Aufgabe in den Wartezustand eine Blockierung bewirkt. Nebenbei sei bemerkt, dass wenn der Name des Verarbeitungsmittels nicht in der Liste erscheint, der anfordernden Aufgabe ein ausschliessliches Recht, d.h. eine Sperre über das Verarbeitungsmittel zuerkannt werden kann.
In der praktischen Ausführung gibt es für jedes Verarbeitungsmittel, das gerade besetzt ist, einen Informationsblock, der Warteschlangenelement (NQE) genannt wird. Jedes NQE enthält: 1. einen Namen mit 8 Zeichen, 2. die Kennzeichnung der benützenden Aufgabe, 3. einen Hinweis auf den Aufgaben-steuerblock, der die Ausführung bestimmt.
Eine bestimmte Anzahl von z.B. NQEs werden zu einer
5
5
10
15
20
25
30
35
40
45
50
55
60
65
633643 6
Gruppe vereinigt. Die Gruppen können durch geeignete Hin- gaben warten, heisst Warteliste (waitlist) und erscheint in weise (Pointers) aneinander gehängt werden. Diese Struktur Instruktion 0050. Ein Arbeitsfeld (worklist) ist in Instruktion erscheint in den Instruktionen 0052-0058 der Instruktionsfolge 0051 bezeichnet. Diese Daten sind in Tabelle 1 zusammenge-
in Tabelle 2. Das Vektorfeld der Aufgaben, die auf andere Auf- stellt:
Tabelle 1
WAITLIST 256 bytes
WORKLIST 256 bytes
NQEB NQ CHAIN ->
+
X
+
NQE NQ CHAIN
+
NQE NQE etc.
NQE
Jede ENQ-Instruktion soll die Sperre über ein Verarbei- So müssen beispielsweise Datenbestimmungen den Steuer- und tungsmittel anfordern und benutzt eine der NQE-Instruktionen.25 Operationsdaten vorausgehen. Die Befehle 50-57 sowie Die Anzahl der NQE-Instruktionen ist natürlich gleich der 544-557 und 565-570 sind in der PL/l-Sprache geschrieben.
Anzahl der zur Zeit benützter Sperren. Diese Sprache ist dargestellt in PL/1(F), IBM System/360 Ope-
Der Instruktionscode ist in Tabelle 2 wiedergegeben, deren rating System Language Reference Manual, IBM-Druckschrift Unterschrift den Zweck und die Wirkung angibt. Einerseits No. GC 28-82014,5. Auflage 1972. Die Befehle 571-580 sind, sind die Instruktionen beliebig numeriert, andererseits ist es 30 wie schon erwähnt, in der IBM-System-360-Assembler-Sprache klar, dass einzelne Instruktionen anderen vorausgehen müssen, geschrieben.
Tabelle 2
Feststellbefehle für ENQ, DEQ und Blockierung
Befehls-Nr. Befehl
0050 DECLARE WAITLIST (256) BINARY(8) BOUNDARY (BYTE);
0051 DECLARE WORKLIST (256) BINARY(8) BOUNDARY (BYTE);
0052 DECLARE 1 NQEB BASED (Rl),
0053 DECLARE 2 NQCHAIN POINTER,
0054 DECLARE 2 NQRESBINARY (15),
0055 DECLARE 2 NQE (25),
0056 DECLARE 3 NQNAME CHAR (8),
0057 DECLARE 3 NQOWNER BINARY (8) BOUNDARY (BYTE),
0058 DECLARE 3 NQDISPEL BINARY (8) BOUNDARY (BYTE),
Tabelle 3 ENQ-DEQ Logik
Befehls-Nr. Befehl
0544 ENQ:
0545 FREENQEB=0;
0546 Rl =ADDR(NQEB1);
0547 NQESRCH:
0548 DOI=l TO 25;
0549 IF NQNAME(I,1 )= ' FF' X & FREENQEB=0 THEN DO;
0550 FREENQE=1;
0551 FREENQEB=R1;
0552 END;
0553 ELSE DO;
0554 IF NQNAME(I)=RCBARG1 THEN DO;/*=ARE THE NAMES EQUAL*/
0555 IF RCBRTYPE=23 THEN GO TO DODEQ;
0556 WAITLIST(WUAID+ l)=NQOWNER(I);
0557 DEDISPL(CURRDE)='0'B
633643
Tabelle 4
Steuerungs-Übergang auf Blockierungs-Feststellogik
Befehis-Nr.
Befehl
0566
WORKLIST(1)=0;
0567
RS=WUIDS-1;
0568
J=R2,
0569
GENERATE SETS(WORKLIST,J,R2)
0570
REFS(MVC,TR,CLC,WAITLIST,DEADLOCK)
Tabelle 5
Blockierungs-Feststellogik
Befehls-Nr.
Befehl
0575
EX R2,TR Exécuté a «translation», length in R2
0576
SRAJ.l Shift rt. reg. J. by 1
0577
BNZ*,-8 Branch not zero
0578
BCTR R2,0 Decrement R2 by 1
0579
EX R2,CLC Exécuté compare logicai character
0580
BNE DEADLOCK Branch not equal (to zero)
Tabelle 6
Logik nach Feststellung
Befehls-Nr.
Befehl
0585
WUADE—DEDISPL(1 )= ' O' B;
0586
R15=ADDR(SWITCH);
0587
GEN CODE(BALR 14.15);
0588
R14=RCBSAVE(4)
0589
RETURN;
0590
END;
0591
END;
0592
END;
0593
IF NQCHAIN=0THEN DO:
0594
R1=NQCHAIN;
0595
GOTO=NQESRCH;
0596
END;
0597
IF RCBRTYPE=21 1 RCBRTYPE=23 THEN RETURN;
0614
GO TO DOENQ
0637
DEADLOCK:
0638
GENERATE;
0639
GETCB TYPE=RCB
0640
//
MESSAGE ID=
tt
0647
MVC MVC W0RKLIST(0), WAITLIST
0648
TR TR W0RKLIST(0), WORKLIST
0649
CLC CLC WORKLIST +1 (O), WORKLIST
Die Tabellen 2 bis 6 enthalten Segmente oder Folgen von Folge in Tabelle 5, die im Maschinencode des früher genannten fortlaufend numerierten Befehlen. Die Befehlsnummern sind US-Patentes geschrieben ist, sich auf die Blockierungsüberwa-relativ, d.h. dass die Nummern in Tabelle 2, die von 0050 bis 55 chung bezieht.
0058 laufen, gerade so gut von 1450 bis 1458 gehen könnten. Nachfolgend sollen einige der Befehle dieser Tabellen
Die Folge in Tabelle 3 sollte derjenigen in Tabelle 2 gleichen erläutert werden.
und ähnlich die Folgen in Tabellen 4,5 und 6. Wie bereits Der Befehl «RCBARGl » bezeichnet ein Arbeitsmittel das bemerkt, enthalten derzeitige Betriebssysteme und Datenbank- reserviert werden soll. Der Name ist völlig willkürlich gewählt, systeme Kompiler für höhere Programmsprachen sowie Bin- 60 da der Name allein die Reservierung veranlasst. Aufgaben, die der, die dafür sorgen, dass Programmfolgen, die in höheren dasselbe Verarbeitungsmittel benötigen, benützen dazu alle Sprachen, beispielsweise PL/1 geschrieben sind, ohne weiteres denselben Namen. Die anfordernde Aufgabe bekommt das in direkte Maschinenbefehle umgesetzt werden. Sowohl Kom- Verarbeitungsmittel zugeteilt, wenn dieses frei ist, andere Auf-piler als auch Verbinder sind wohl bekannt und haben mit der gaben werden nicht mehr zugelassen. Wenn das Mittel nicht vorliegenden Erfindung direkt nichts zu tun. Die detaillierten 65 frei war, dann hat bereits eine andere Aufgabe ein ENQ veran-Programmsequenzen sind hier lediglich des besseren Verständ- lasst. Die anfordernde Aufgabe wartet nun auf das Verarbei-nisses halber angegeben. Die Tabellen 2 bis 4 und 6 beziehen tungsmittel, bis dessen DEQ erfolgt. Wenn eine wartende Aufsich dabei auf die Sperren-Freigabeüberwachung, wogegen die gäbe mit einer anderen Aufgabe zusammen eine Blockierung
633643 8
veranlasst, wird die wartende Aufgabe zurückgestellt und wenn finden. 0554 bedeutet, dass, wenn der Name im NQE dem vermöglich neu gestartet. langten Namen gleich ist und wenn gemäss 0555 ein ENQ verWenn der Ausdruck «RCBARG2» nicht gleich null ist, wird, langt ist, dann muss gemäss 0556 die verlangende Aufgabe war-wenn eine Aufgabe auf ein Verarbeitungsmittel warten musste, ten. Die Aufgabennummer des Verarbeitungsmittel Eigentü-der Fertigstellungscode zurückgegeben, sofern das ENQ erfüllt s mer (NQOWNER) ist die Identifikation der Aufgabe, auf die ist. Ist «RCBARG2» gleich null, so wird der Fertigstellungs- gewartet werden muss. Sie wird in den Vektor der Warteliste code unterdrückt. WAITLIST eingesetzt, und zwar in der Stelle, die den
Nun werden die Vereinbarungen für ENQ/DEQ und für Anfordernden zugeordnet ist (WUAID+1). Schliesslich wird in Blockierungsfeststellung erläutert. Die Instruktionen 0050 bis der Anweisung 0557 die verlangende Aufgabe veranlasst zu 0058 in Tabelle 2 sind Verfahrensvereinbarungen in der PL/1- io warten. Wenn gewartet werden muss, ist es notwendig zu prü-Sprache. Eine Verfahrenvereinbarung muss eine Bezeichnung fen, ob eine Blockierung erfolgen würde, wenn die Aufgabe in haben, damit das gesamte Verfahren mittels dieser Bezeich- den Wartezustand versetzt würde.
nung oder des Verfahrensnamens aufgerufen werden kann. Die Nun geht die Steuerung auf die Blockierungsfeststellungslo-Instruktion «DECLARE» liefert die Information für den PL/1- gik über. Die Folge von PL/1-Anweisungen in Tabelle 4 bezieht Kompiler des Betriebssystems respektive der Datenbank, 15 sich auf diesen Übergang. In Anweisung 0566 wird die erste damit Speicherstellen für die im Verfahren benützten Namen Stelle der Arbeitsliste WORKLIST 1 auf null gesetzt. In den reserviert werden können. Der Befehl «DECLARE» beschreibt Anweisungen 0567 und 0568 wird die Zahl der möglichen Auf-die Einzelheiten der zu jeder Variablen gehörenden Daten. Ein gäbe (WUIDS-1) in ein beliebiges Register R2 und in Register J Name, der in DECLARE vorkommt, gilt als «vereinbart» und gesetzt. Dies ist der Binärwert (N) dessen log2 die Minimalzahl die Worte, mit welchen die Daten beschrieben werden, heissen 20 von Übersetzungsbefehlen TR bedeutet die benötigt sind, um Attribute. Die Bedeutung der Namen in den Befehlen 0050 bis eine Schleife festzustellen. Schliesslich bedingen die Anweisun-0056 ist aus Tabelle 1 ersichtlich. Der Name «NQOWNER» gen 0569 und 0570 das Vorhandensein der benötigten Daten bezieht sich auf die Aufgabe, die ein bestimmtes Verarbeitungs- und Maschinenbefehle in IBM System 360-370 Maschinenmittel verlangt. Der Ausdruck «NQDISTEL» besteht aus spräche für die Durchführung der Blockierungsfeststellung, wie einem Hinweis auf den Aufgabensteuerblock (TCB) der verlan- 25 sie in den Anweisungen 0574-0580 in Tabelle 5 angegeben sind, genden Aufgabe. Was die Blockierungsverhütung oder Behebung anbetrifft,
Der Abschnitt in Tabelle 2 wird entschlüsselt, um festzustel- sei daran erinnert, dass, wenn das Resultatfeld der Blockie-len, welche Möglichkeiten verlangt werden. Steht fest, dass rungsentdeckungslogik lauter Nullen enthält, keine Blockie-
eine Aufgabe ein Verarbeitungsmittel verlangt, so geht die rung vorliegt. Die Stellung von null verschiedener Bytes dage-
Steuerung auf Befehl 0544 in Tabelle 3 über. Nun wird die ENQ/ 30 gen dient dazu, Aufgaben zu identifizieren, die in der Blockie-DEQ-Logik erläutert. Wenn ENQ sich auf die Sperrenüberwa- rungsschleife liegen. Sollen alle Aufgaben im inneren Blockie-chung bezieht, wird es als Bezeichnung behandelt. Das bedeu- rungskreis festgestellt werden, so muss ein Wert des Resultats tet, dass die Bezeichnung auch ein Identifizierer ist, der als Vor- ausgewählt und durch den ursprünglichen Aufgabenwartevek-spann zu einer Anweisung geschrieben ist, damit während der tor verfolgt werden. Das kann von Vorteil sein, um die günstig-Ausführung die Steuerung über einen Hinweis auf ihre Bezeich- 35 ste Aufgabe zur Auflösung einer Blockierung auszuwählen. In nung auf diese Anweisung übertragen werden kann. Die der Sperren und Auflösungsüberwachung, die hier als beispiel-
Anweisung 0545 stellt das erste freie NQE in einer Gruppe von haftes Betriebssystem oder Datenbanksystem gewählt ist, kann NQEs dar. Die Adresse ist rückgestellt auf null. Wird ein freies eine Aufgabe die Reservation eines Verarbeitungsmittels erlan-NQE gefunden, so kommt seine Adresse anstelle der Null, z.B. gen, wenn dasselbe frei ist. Andere Aufgaben werden nicht FREENQEB=ADDRESS. Die Anweisung 0546 macht klar, 40 mehr zugelassen. Ist ein Verarbeitungsmittel nicht frei für eine dass die Adresse des ersten Blocks von NQE angenommen ist. anfordernde Aufgabe, dann steht bereits eine andere Aufgabe Die Anweisung 0547 enthält die Bezeichnung NQESRCH an. Die anfordernde Aufgabe wartet, bis keine Aufgabe mehr für die DO-Gruppe der Anweisungen 0548 bis 0552. Die DO- ansteht. Wenn das Warten eine Blockierung mit einer weiteren Gruppe hat die Funktion nachzusuchen, ob der Name des ange- Aufgabe auslöst, wird die anfordernde Aufgabe zurückgestellt forderten Verarbeitungsmittels im ersten Block von 25 NQEs 45 und wenn möglich neu gestartet. Das kann so ausgedrückt wer-genannt ist. Dementsprechend ist eine DO-Gruppe eine Folge den, dass, wenn das Warten einer Aufgabe eine Blockierung von Anweisungen, deren Anfang durch eine DO-Anweisung veranlasst, eben diese Aufgabe ausgewählt wird, um zurückge-und deren Ende durch eine END-Anweisung gebildet wird. stellt und neu gestartet zu werden.
Wird eine DO-Gruppe in einer IF-Anweisung als THEN-Wen- Im Zentrum der Ausführung der Blockierungsentdeckung dung benützt, so werden alle Anweisungen der DO-Gruppe 50 steht der Übersetzungsbefehl. Wie schon erwähnt, ist der ausgeführt, bevor ein Sprung gemacht wird oder es werden alle Befehl TRANSLATE ein System 360 Maschinenbefehl mit Anweisungen übersprungen und die ELSE-Wendung wird aus- einer spezifizierten Feldlänge, beispielsweise maximal 256 geführt. Wird eine DO-Gruppe als ELSE-Wendung benützt, so Bytes, die 256 Aufgaben identifizieren.
werden alle Anweisungen dieser Gruppe übersprungen, nach- Da die Anzahl der Aufgaben die auf Blockierung überprüft dem die THEN-Klausel ausgeführt ist. 55 werden sollen dynamisch variiert, beispielsweise N=15 zur Zeit
Mit Anweisung 0548 beginnt die Suche nach dem ersten 1 und N=150 zur Zeit 2, kommt der TRANSLATE-Befehl nicht Block von 25 NQEs. Die IF-THEN-Anweisung 0549 ist so zu unmittelbar vor. Er wird vielmehr veranlasst durch den EXE-verstehen, dass wenn der Name eines NQEs die spezielle CUTE-Befehl, der zu jeder Zeit die richtige Länge angibt. Der
Bezeichnung («FF»X) hat, dies bedeutet, dass das NQE nicht EXECUTE-Befehl erlaubt indirekt die Ausführung jedes belie-benütz ist und ein freies NQE noch nicht gefunden ist (FREEN- 60 bigen IBM-System-360-Befehls und kann bestimmte Eigen-QUEB=O), dann wird der DO-Teil der Anweisung ausgeführt. schaften dieses Befehls, beispielsweise die Länge der Qperan-
Der Ausdruck FREENQUEB=R1 in 0551, bedeutet, dass den, ändern. Der Befehl TRANSLATE (TR) benützt jedes Byte die NQE-Adresse aufgehoben wird. Wenn das verlangte Verar- des SOURCE-Feldes, um ein Byte der Zieltabelle zu bezeich-beitungsmittel momentan nicht reserviert ist, dann sollte dieses nen. Das aus der Zieltabelle ausgewählte Byte ersetzt den NQE benützt werden, um die Reservation auszudrücken. Die 65 Index in der SOURCE. Die Ausführung schreitet von links nach ELSE-DO-Anweisung 0553 bedeutet, dass wenn das NQE ein rechts, um jeweils ein Byte weiter, bis alle L-Bytes der reserviertes Arbeitsmittel angibt, etwas andereis getan werden SOURCE übersetzt sind. Die TRANSLATE-Tabelle, TARGET, muss. Dieses andere ist in den Anweisungen 0554 bis 0557 zu wird adressiert durch zuzählen jedes SOURCE-Bytes zu der
633643
Adresse des zweiten Operanden, d.h. zur ursprünglichen Adresse der Übersetzungstabelle. Diese allgemeine Funktion von TRANSLATE kann wie folgt erläutert werden:
Hinweisadressen Position
Hinweisadressen Position
Hinweisadressen Position
1430315256 0123456789
3649836 0123456
0536205 0123456
TARGET
SOURCE vor Übersetzung l0
SOURCE nach Übersetzung
Position 0 in der Source enthält den Hinweis 3. Darauf wird 15 Position 3 im Target nachgesehen und ihr Wert 0 als entsprechender Hinweis in Position 0 der Source nach der Übersetzung gesetzt. Das ist ersichtlich für Position 1, die den Hinweis enthält. Der Targetwert 5 von Position 6 wird nach der Übersetzung in Position 1 der Source gesetzt. Die übrigen Werte 20 kommen auf die selbe Art zustande. Im Gegensatz zum allgemeinen Fall wird bei der Blockierungsfeststellung der Befehl speziell verwendet. Dies darum weil Source und Target ein und dasselbe Feld sind. Das Feld, das in diesem speziellen Fall übersetzt wird, ist das Übersetzungsfeld für seine eigene Überset- 25 zung.
Die Blockierungsfeststellungslogik benötigt drei Arten von Maschinenverzweigungsbefehlen. Diese heissen BRANCH NOT ZERO (BNZ) und BRANCH NOT EQUAL (BNE), um die Steuerung zu übertragen. Im Fall der ersten Verzweigung geht 30 die Steuerung zurück auf den EXECUTE-Befehl. Im Fall der zweiten Verzweigung geht die Steuerung über auf eine Reihe von Befehlen zur Bearbeitung einer festgestellten Blockierung. Der Befehl BRANCH ON COUNT (BCTR) wird benützt mit der speziellen Nicht-Verzweigungsmöglichkeit und vermindert35 lediglich den Inhalt des Registers R2 um 1.
Der Befehl 0574 in Tabelle 5 ist die Ausführung des Übertragungsbefehls, durch welchen der Inhalt der Speicherstellen WAITLIST in den als WORKLIST bezeichneten Speicherstellen übertragen werden. Die Länge der Übertragung ist der 40 Wert von R2. Der Übertragungsbefehl steht in der Anweisung 0647. Die Anweisung 0575 bezieht sich auf die Durchführung des Übersetzungsbefehls, der selbst in der Anweisung 0648 zu finden ist. Die Anzahl der Übersetzung wird durch den Ausdruck log2 (N+1) gesteuert. Diese Funktion wird durch den SRA-Befehl in der Anweisung 0576 ausgelöst. Das heisst nach der Durchführung jedes Übersetzungsbefehls wird der Inhalt des J-Registers, um eine Position nach rechts verschoben. Der Wert dieses Registers wird durch den BNZ-Befehl in Anweisung 0577 überprüft. Ist der Wert ungleich 0 so ist eine weitere Übersetzung nötig, damit die Verzweigung zurück zur Anweisung 0575 erfolgt. Ist der Wert gleich null, dann ist 0578 die nächste auszuführende Anweisung. Der BRANCH-Befehl BCTR vermindert den Inhalt des Registers R2 aus Gründen der System-360-Befehlslänge. Die letzte Anweisung 0579 vergleicht das Resultat der Übersetzungsbefehle, um festzustellen, ob alle Elemente gleich null sind. Sind sie es nicht, dann veranlasst die Anweisung BNE (Verzweigung wenn unglich null) einen Sprung auf Anweisung 0637 (Tabelle 6), um die Blockierung aufzulösen. Übrigens ist Blockierung eine Bezeichnung und die Anweisungen 0638 bis 0644 machen ersichtlich, dass weitere Anweisungen nötig sind, um die Auflösung auch zu erreichen.
Zeigt das Resultat durchwegs Nullen und liegt somit einé Blockierung nicht vor, so wird die Adresse des Zuteilungsteuerblocks in Anweisung 0585 festgestellt, wie Tabelle 6 zeigt. Anweisung 0586 und 0587 führen die Steuerung auf eine andere Anweisung, damit die anfordernde Aufgabe in den Wartezustand versetzt werden kann.
Interessanterweise weist Anweisung 0592 zurück auf die Anweisung 0555 in Tabelle 3. Dies bedeutet, das kein NQE gefunden wurde und dass die Suche im gegebenen Block von 25 NQEs fortgesetzt werden muss. Die Anweisungen 0593 bis 0596 weisen darauf hin, dass ein NQE-Block durchsucht wurde. Sofern es einen weiteren Block gibt, muss nun zu Anweisung 0547, ebenfalls Tabelle 3, zurückgekehrt werden, um diesen Block zu durchsuchen. Die Anweisung 0597 bedeutet ein DEQ oder GATE. Auf ein DEQ hin wird ein Verarbeitungsmittel wieder zur allgemeinen Verfügung gestellt. Ein Gate verschafft keine Reservation auf ein Verarbeitungsmittel, aber verhindert weitere Verarbeitung, sofern eine Aufgabe eine Reservation verlangt hat. Dies kommt vor, wenn gewisse Aufgaben nicht verlangen, dass Verarbeitungsmittel exklusiv für sie reserviert werden, sondern dass auf sie nicht zugegriffen werden soll, bis eine gewisse andere Aufgabe sie reserviert hat.

Claims (3)

633643 2 PATENTANSPRÜCHE mes verstanden, der für die Ausführung einer Aufgabe notwen-
1. Verfahren zur blockierungsfreien verzahnten Simultan- dig ist. Dazu gehören der Hauptspeicher, Eingangs-Ausgangs-verarbeitung mehrerer Aufgaben mittels mehrerer Programme Vorrichtungen, die zentrale Verarbeitungseinheit, Datensätze in einer Datenverarbeitungsanlage, wobei jede zu lösende Auf- und Steuer- oder Verarbeitungsprogramme. Ein Systemprogabe auf höchstens eine andere Aufgabe warten muss, gekenn- 5 gramm besteht in dieser Hinsicht aus einer Anzahl von Überzeichnet durch folgende Schritte : wachungsroutinen, die auf der Datenverarbeitungsanlage
- Bildung eines Feldes aus N +1 Hinweisadressen in einem ablaufen, um z.B. sicherzustellen, in welcher Reihenfolge anste-Register, welche zusammen mit ihrer Stellung im Register die hende Aufgaben erledigt werden, dass Datensätze und Pro-Wartebeziehungen zwischen N Aufgaben angeben, wobei gramme auch für lange Zeit ordnungsgemäss gespeichert wer-einer Registerstelle j der Hinweisadresswert j zugeordnet ist; 10 den und dass sie vor unerwünschtem Zugriff oder unerwünsch-
- Übersetzung des Feldes mit sich selbst derart, dass in jede ter Benützung geschützt sind. Zudem haben sie gewisse Haus-Registerstelle r, die eine Hinweisadresse p enthält, der Inhalt g haltungs- und Überwachungsfunktionen.
der Registerstelle p gesetzt wird, wobei r, p und g grösser oder Verzahnte Datenverarbeitung (Multiprogramming), die gleich Null und kleiner oder gleich N sind; sich auf die gleichzeitige Ausführung mehrerer Programme
- Prüfung ob das Register eine nicht-j-Hinweisadresse enthält; '5 durch eine Datenverarbeitungsanlage bezieht, ist beispiels-
- bei Feststellung wenigstens einer nicht-j-Hinweisadresse weise mittels eines IBM System/360 Operating System mög-Wiederholung der Übersetzung und der Prüfung, bis die festge- lieh, wie es die IBM-Druckschrift GC28-6646, Form Nr. GA22-stellten nicht-j-Hinweisadressen von einer Iteration zur näch- 6822 beschreibt. Diese modernen Betriebssysteme erlauben es, sten unverändert bleiben, und die Mittel der Anlage wesentlich besser auszunützen. Wenn
- Anzeige dieses Resultates als Vorliegen einer Blockierung. 20 während der Ausführung eines Programmes ein Unterbruch
2. Verfahren nach Anspruch 1, wobei jede Aufgabe einen entsteht, beispielsweise um zusätzliche Daten in die Zentraleinaktiven Zustand oder einen Wartezustand annehmen kann, heit einzulesen, kann während dieser Zeit an einer anderen Aufgekennzeichnet durch gäbe weitergearbeitet werden. Die Zentraleinheit kann also ein
- anfordern eines bestimmten Verarbeitungsmittels durch eine anderes Programm ausführen oder mittels desselben Program-Aufgabe; 25 mes eine andere Aufgabe ausführen.
- feststellen, ob das Mittel zur Verfügung steht und wenn dies Beim Warten auf nacheinander zu benützende Mittel der der Fall ist, Reservieren des Mittels für die anfordernde Auf- Anlage kann eine Aufgabe dann blockiert sein und unendlich gäbe, andernfalls lange warten müssen, wenn sie in einer Warteschleife zusam-
- prüfen, ob ein Versetzen der Aufgabe in den Wartezustand men mit anderen Aufgaben festgefahren ist Unter diesen eine Blockierung mit anderen Aufgaben erzeugt und, wenn dies 30 Umständen hat jede Aufgabe für sich ein nicht vorberechtigtes der Fall ist, Verarbeitungsmittel reserviert, das von einer anderen Aufgabe
- rücksteilen und neu starten einer der Aufgaben, die den Blok- zur Lösung benötigt wird, z.B. wartet jede Aufgabe in der kierungskreis bilden. Schleife darauf, dass eine andere Aufgabe ihre Reservation
3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeich- abgibt. Die Anzeichen der Blockierung sind also gegenseitiger net, dass bei der Bildung eines Feldes von N+1 Hinweisadres- 35 Ausschluss, mangelnde Vorberechtigung und Warten auf Versen in einem Register die Aufgaben-Hinweisadressen in den arbeitungsmittel. Gegenseitiger Ausschluss bedeutet, dass eine Registerpositionen derart zugeordnet werden, dass für jede Aufgabe ausschliessliche Herrschaft über die nötigen Verarbei-Aufgabe x, die auf eine Aufgabe y wartet, x eine höhere Regi- tungsmittel beansprucht. Nicht Vorberechtigung bedeutet, sterposition einnimmt als y, wobei die Registerposition 0 den dass eine Aufgabe ein Verarbeitungsmittel nicht freigibt, bevor Wert 0 zugeordnet hat. 40 seine Benützung desselben beendigt ist. Warten auf Verarbei-
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, tungsmittel schliesslich entsteht, weil jede Aufgabe Verarbei-dass es zur Feststellung einer Blockierungsschleife höchstens tungsmittel reserviert hat, während sie darauf wartet, dass einmal wiederholt wird. andere Aufgaben ihre reservierten Verarbeitungsmittel freigeben.
45 Verschiedene Vorschläge zur Vermeidung von Blockierun-
gen sind schon bekannt, vergleiche Coffmann und Denning
«Operating Systems Theory», 1973, Prentice Hall, Seite 46. Die Vorschläge beziehen sich auf Verhütung, Entdeckung und Die Erfindung bezieht sich auf die Steuerung gleichzeitig Beseitigung sowie Vermeidung. Für nähere Ausführungen verablaufender Datenverarbeitungsaufgaben mittels mehrerer 50 gleiche A.C. Shaw, «The Logicai Design of Operating Programme und insbesondere auf die Feststellung blockierter Systems», 1974, Prentice Hall, Seiten 227-232 sowie 215-224. Aufgaben unter den auf die Verarbeitung wartenden Aufgaben. Shaw stellt fest, dass zur Vermeidung von Blockierungen die Der Ausdruck Datenverarbeitungsanlage bezieht sich im Anlage im allgemeinen so eingeschränkt wird, dass zu jeder nachfolgenden auf eine zentrale Verarbeitungseinheit mit Zeit nur eine Aufgabe überhaupt Verarbeitungsmittel benützen
Hauptspeicher, Eingangs- und Ausgangskanälen, Steuereinhei- 55 kann. Verzahnte Verarbeitung kann also zugelassen werden, ten, Direktzugriffsspeicher und anderen mit ihr verbundenen wenn jede Aufgabe die benötigten Verarbeitungsmittel bei Einheiten, wie sie beispielsweise im US-Patent 3 400 371 ihrer Entstehung meldet. Aufgaben mit ihnen zugeordneten beschrieben ist. Eine Aufgabe soll nachfolgend eine unabhän- Mitteln könnten dann nicht blockiert werden, weil sie nicht wei-gige Arbeitseinheit bezeichnen, die die Ausführungs- oder Ver- tere Mittel beanspruchen können und diese daher schliesslich arbeitungsmittel der Datenverarbeitungsanlage beansprucht. 60 wieder freigeben. Der Nachteil dieses Verfahrens liegt darin, Ein Aufgabensteuerblock ist die Zusammenfassung von Steuer- dass es voraussetzt, dass das Ausmass und die Reihenfolge der information, die sich auf eine Aufgabe bezieht. Sie enthält u.a. benötigten Mittel zum voraus vollständig festgelegt werden die vom Benützer zugeordnete Priorität sowie den Zustand der kann. Auch werden die Mittel dadurch für unnötig lange Zeiten Aufgabe, d.h. aktiv oder wartend. Im Wartezustand wartet eine festgelegt. Eine Aufgabe kann z.B. die Verarbeitungsmittel in Aufgabe auf die Ausführung anderer Aufgaben, worauf sie 65 der Reihenfolge a, b, c verlangen, wenn tatsächlich die Reihendann aktiv wird. folge b, c, a erforderlich ist. Auch ist das Mittel c vielleicht nur
Unter Verarbeitungsmittel wird nachfolgend jeder Teil im letzten Teil der Arbeitszeit erforderlich. Zur Beseitigung einer Datenverarbeitungsanlage oder eines Systemprogram- einiger dieser Nachteile vergleiche J.W. Havender, «Avoiding
3
633643
Deadlock in Multitasking Systems», 1968, IBM Systems Journal, Seite 74-84, wo eine «geordnete» Verarbeitungsregel angegeben wird. Nach Coffmann und auch Shaw ist es wichtig,
solche Blockierungen in der Anlage festzustellen. In seiner Schrift «System Deadlock», Computing Surveys, Juni 1971, Sei- 5 ten 67-78, untersucht Coffmann die Warterelationen zwischen den Aufgaben einschliesslich derer, in welchen Aufgaben auf zwei oder mehr Aufgaben warten. Im allgemeinen Fall ist nach Coffmann die nötige Zeit, um eine Blockierung bei N Aufgaben zu entdecken, proportional N2. Zudem ist die Entdeckungszeit i o eine lineare Funktion von N+(R- log R), wobei (R log R) die Zeit ist, die man benötigt, um R Verarbeitungsmittel zu sortieren. Schliesslich erfordert die Coffmannische Methode die Kenntnis der zur Entdeckungszeit vorhandenen Mittel zusätzlich zu Angaben betreffend die Aufgabenidentität, und ihre i 5 Warterelationen.
Obermarck beschreibt im IBM Technical Disclosure Bulletin, Band 12, Seiten 2338-2339, die Benützung einer Matrix, in der die Zeilen und Spaltenkoinzidenz zwischen einem Anfrager und einem Mitteleigentümer zusammen mit einem Tabellenein- 20 trag die Blockierung bestimmen. Auch P. Roever benützt eine Matrix, jedoch nur wenn die Aufgaben bereits in einer Schleife A—B—C—D—A warten, vergleiche IBM Technical Disclosure Bulletin, Band 16, Seiten 1243-1244.
Es ist ein Ziel der vorliegenden Erfindung, Blockierungen 25 unter N Aufgaben in einer Datenverarbeitungsanlage für verzahnte Simultanverarbeitung festzustellen. Dabei sollen hauptsächlich Angaben über die Warterelationen unter den Aufgaben benützt werden und weniger Information betreffend die Verarbeitungsmittel. Wo die Blockierungsentdeckung iterative 30 Operationen benötigt, ist es ein Ziel der Erfindung, die Zahl der Iterationen klein zu halten.
Die Ziele können erreicht werden durch ein Verfahren, in welchm die Warterelationen zwischen N Aufgaben so beschränkt sind, dass jede Aufgabe auf höchstens eine weitere 35 Aufgabe wartet. Dazu wird ein Feld von N+1 Hinweisadressen in einem Register erstellt, wobei die Hinweisadressen und ihre Stellung im Register die Wartebeziehungen zwischen den Aufgaben angeben und wobei einer beliebigen Registerstelle j der Hinweisadresswert j zugeordnet ist. Im nächsten Schritt wird 40 das Feld mit sich selbst derart übersetzt, dass in jede Registerstelle r, die eine Hinweisadresse p enthält, der Inhalt g der Registerstelle p gesetzt wird, wobei r, p und g grösser oder gleich Null und kleiner oder gleich N sind.
In den nachfolgenden Schritten werden die Register über- 45 prüft, um eine nicht-j-Hinweisadresse festzustellen und, sofern wenigstens eine solche Adresse festgestellt wird, die Schritte des Übersetzens und Feststellens zu wiederholen, bis der Satz von nicht-j-Hinweisadressen von einem Schritt zum nächsten unverändert bleibt. Dieses Resultat zeigt eine Blockierung an. 50
CH1024978A 1977-10-11 1978-10-03 Verfahren zur blockierungsfreien verzahnten simultanverarbeitung mehrerer aufgaben mittels mehrerer programme in einer datenverarbeitungsanlage. CH633643A5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/841,163 US4189771A (en) 1977-10-11 1977-10-11 Method and means for the detection of deadlock among waiting tasks in a multiprocessing, multiprogramming CPU environment

Publications (1)

Publication Number Publication Date
CH633643A5 true CH633643A5 (de) 1982-12-15

Family

ID=25284184

Family Applications (1)

Application Number Title Priority Date Filing Date
CH1024978A CH633643A5 (de) 1977-10-11 1978-10-03 Verfahren zur blockierungsfreien verzahnten simultanverarbeitung mehrerer aufgaben mittels mehrerer programme in einer datenverarbeitungsanlage.

Country Status (9)

Country Link
US (1) US4189771A (de)
JP (1) JPS5459046A (de)
AU (1) AU3719378A (de)
BR (1) BR7806706A (de)
CH (1) CH633643A5 (de)
ES (1) ES474067A1 (de)
FR (1) FR2435755A1 (de)
GB (1) GB1587508A (de)
IT (1) IT1159132B (de)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4488217A (en) * 1979-03-12 1984-12-11 Digital Equipment Corporation Data processing system with lock-unlock instruction facility
US4379326A (en) * 1980-03-10 1983-04-05 The Boeing Company Modular system controller for a transition machine
JPS56131097A (en) * 1980-03-18 1981-10-14 Nippon Steel Weld Prod & Eng Co Ltd Manufacture of wire containing flux for welding
FR2500659B1 (fr) * 1981-02-25 1986-02-28 Philips Ind Commerciale Dispositif pour l'allocation dynamique des taches d'un ordinateur multiprocesseur
US4494193A (en) * 1982-09-30 1985-01-15 At&T Bell Laboratories Deadlock detection and resolution scheme
JPS61233849A (ja) * 1985-04-08 1986-10-18 Hitachi Ltd デ−タベ−ス排他制御方法
US4791560A (en) * 1985-07-31 1988-12-13 Unisys Corporation Macro level control of an activity switch in a scientific vector processor which processor requires an external executive control program
US4847754A (en) * 1985-10-15 1989-07-11 International Business Machines Corporation Extended atomic operations
JPH0814795B2 (ja) * 1986-01-14 1996-02-14 株式会社日立製作所 マルチプロセッサ仮想計算機システム
US4809168A (en) * 1986-10-17 1989-02-28 International Business Machines Corporation Passive serialization in a multitasking environment
AU2130888A (en) * 1987-07-21 1989-02-13 Stellar Computer Inc. Detecting multiple processor deadlock
WO1990001252A1 (en) * 1988-08-03 1990-02-22 Stellar Computer Inc. Detecting multiple processor deadlock
JPH02113351A (ja) * 1988-10-24 1990-04-25 Nec Corp ファイル処理装置
CA2011807C (en) * 1989-03-20 1999-02-23 Katsumi Hayashi Data base processing system using multiprocessor system
US5070453A (en) * 1989-04-10 1991-12-03 At&T Bell Laboratories System and method for scheduling data transfers among a plurality of data processing units to avoid conflicting data requests
US5297283A (en) * 1989-06-29 1994-03-22 Digital Equipment Corporation Object transferring system and method in an object based computer operating system
CA2027934C (en) * 1989-12-22 1994-06-21 Cherie C. Barnes Accelerated deadlock detection in congested data transactions
US5280619A (en) * 1990-05-17 1994-01-18 Texas Instruments Incorporated System for accessing shared data using a serialization graph constructed from a history file showing completed locking dependencies between transactions
JPH0451335A (ja) * 1990-06-20 1992-02-19 Oki Electric Ind Co Ltd データベース処理装置
US5583992A (en) * 1990-09-14 1996-12-10 Kabushiki Kaisha Toshiba Computer network system for detecting global deadlock
US5349680A (en) * 1990-11-07 1994-09-20 Kabushiki Kaisha Toshiba Information processing apparatus for executing application programs under control of a system program
JPH05134886A (ja) * 1990-11-30 1993-06-01 Fujitsu Ltd デツドロツク検出方式
JPH04271453A (ja) * 1991-02-27 1992-09-28 Toshiba Corp 複合電子計算機
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
JP2566717B2 (ja) * 1992-03-30 1996-12-25 インターナショナル・ビジネス・マシーンズ・コーポレイション 条件付きオペレーション提供装置及び方法
DE69422743T2 (de) * 1993-03-30 2000-06-08 Fujitsu Ltd Endlosschleife-Erkennungsgerät
FR2718868B1 (fr) * 1994-04-18 1996-05-31 Bull Sa Procédé de détection d'interblocages dans les systèmes multiprocesseurs à mémoire partagée.
US7013305B2 (en) 2001-10-01 2006-03-14 International Business Machines Corporation Managing the state of coupling facility structures, detecting by one or more systems coupled to the coupling facility, the suspended state of the duplexed command, detecting being independent of message exchange
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
US20040139142A1 (en) * 2002-12-31 2004-07-15 International Business Machines Corporation Method and apparatus for managing resource contention
US7735089B2 (en) * 2005-03-08 2010-06-08 Oracle International Corporation Method and system for deadlock detection in a distributed environment
US9052967B2 (en) * 2010-07-30 2015-06-09 Vmware, Inc. Detecting resource deadlocks in multi-threaded programs by controlling scheduling in replay
WO2012060010A1 (ja) * 2010-11-05 2012-05-10 富士通株式会社 情報処理装置,情報処理装置の時刻設定方法,及び情報処理装置の時刻設定プログラム,並びに監視装置
CN104391754B (zh) * 2014-10-13 2017-08-25 北京星网锐捷网络技术有限公司 一种任务异常的处理方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3593300A (en) * 1967-11-13 1971-07-13 Ibm Arrangement for automatically selecting units for task executions in data processing systems
JPS5011021B1 (de) * 1968-01-22 1975-04-26
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
US4047161A (en) * 1976-04-30 1977-09-06 International Business Machines Corporation Task management apparatus

Also Published As

Publication number Publication date
IT7828127A0 (it) 1978-09-27
AU3719378A (en) 1979-12-20
FR2435755B1 (de) 1981-03-06
ES474067A1 (es) 1980-01-01
GB1587508A (en) 1981-04-08
FR2435755A1 (fr) 1980-04-04
IT1159132B (it) 1987-02-25
JPS5459046A (en) 1979-05-12
BR7806706A (pt) 1979-05-08
US4189771A (en) 1980-02-19

Similar Documents

Publication Publication Date Title
CH633643A5 (de) Verfahren zur blockierungsfreien verzahnten simultanverarbeitung mehrerer aufgaben mittels mehrerer programme in einer datenverarbeitungsanlage.
DE3781577T2 (de) Verwaltung der groesse und der anzahl der den prozessen zugeordneten speichersegmente in einer konfiguration fuer mehrfachverarbeitung.
DE69924857T2 (de) Programm-kode-umwandlung
DE68921906T2 (de) Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren.
EP0502857B1 (de) Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems
DE69730276T2 (de) Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes
DE69021659T2 (de) Verfahren und Vorrichtung zur reihenweisen Parallelprogrammfehlersuche.
EP0010198B1 (de) Vorrichtung zur Steuerung des Seitenaustausches in einem Datenverarbeitungssystem mit virtuellem Speicher
DE3852324T2 (de) Verfahren und System zur Netzwerkverwaltung.
DE68925646T2 (de) Pipeline-multiprozessorsystem
DE69209888T2 (de) Befehlablaufsteuerung für einen Rechner
DE69628965T2 (de) Verfahren und Gerät zum Verwalten von Beziehungen zwischen Objekten in einer verteilten Objektumgebung
DE102007025397B4 (de) System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
DE2054835C2 (de) Steuereinrichtung in einem Prozessor einer Mehrprozessor-Datenverarbeitungsanlage
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE2839726A1 (de) Datenverarbeitungsanlage mit verteilter steuerarchitektur in einem multiprozessor-system
DE10003015A1 (de) Die Erzeugung von Ereignis-Bedingungs-Aktions-Regeln aus Prozessmodellen
DE112012000303T5 (de) Dynamische binäre Optimierung
DE2720578A1 (de) Rechnersystem mit mehrprogrammbetrieb/mehrprogrammverarbeitung sowie verfahren zum betrieb eines solchen rechnersystems
DE2411963B2 (de) Datenverarbeitungsanlage
EP0635792A2 (de) Verfahren zur Koordination von parallelen Zugriffen mehrerer Prozessoren auf Resourcenkonfigurationen
DE3851014T2 (de) Eine Vielzahl an Regeln enthaltendes System mit einer vorausermittelten Inferenz-Strategie.
DE3855524T2 (de) Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator
DE10103070A1 (de) System und Verfahren zum Finden und Prüfen der Gültigkeit des neulichsten Vorabladevorgangs für einen gegebenen Prüfladevorgang
DE69626282T2 (de) Programmierbare vorrichtung und verfahren zum befehlsauffang

Legal Events

Date Code Title Description
PL Patent ceased