DE2507405C2 - Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks für Peripheriegeräte einer Datenverarbeitungsanlage - Google Patents

Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks für Peripheriegeräte einer Datenverarbeitungsanlage

Info

Publication number
DE2507405C2
DE2507405C2 DE19752507405 DE2507405A DE2507405C2 DE 2507405 C2 DE2507405 C2 DE 2507405C2 DE 19752507405 DE19752507405 DE 19752507405 DE 2507405 A DE2507405 A DE 2507405A DE 2507405 C2 DE2507405 C2 DE 2507405C2
Authority
DE
Germany
Prior art keywords
task
peripheral device
priority
tasks
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired
Application number
DE19752507405
Other languages
English (en)
Other versions
DE2507405A1 (de
Inventor
Jean Maurice Paris Finet
Tuong Duc Luu
Ngoc Luyen N'guyen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull SA
Original Assignee
Bull SA
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 Bull SA filed Critical Bull SA
Publication of DE2507405A1 publication Critical patent/DE2507405A1/de
Application granted granted Critical
Publication of DE2507405C2 publication Critical patent/DE2507405C2/de
Expired legal-status Critical Current

Links

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Bus Control (AREA)

Description

Die Erfindung betrifft eine Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks (Steuerprogramme) für Peripheriegeräte nach dem Oberbegriff des Patentanspruchs 1 sowie ein Verfahren zum Betreiben der Anordnung.
In Datenverarbeitungsanlagen für Mehrfachprogrammierung, wie sie z. B. aus der US-PS 36 65 415 bekannt sind, wird üblicherweise ein Eingabe/Ausgabe-Steuerprogramm oder Kanalprogramm (Task) verwendet, um die Arten von Übertragungen festzulegen, die 45 tionen eine nicht vernachlässigbare Zeit warten, bevor zwischen der Zentraleinheit und einem Peripheriegerät sie die Steuerung des Kanalprogramms haben, welches stattfinden sollen. Wenn das gerade ablaufende Pro- ihnen zugewiesen ist, was insbesondere dann der Fall ist, gramm eine Eingabe/Ausgabe-Operation auszuführen wenn diese Peripheriegeräte langsam sind, wünscht, bezeichnet bei diesem Schritt der Befehl die Aufgabe der Erfindung ist es deshalb eine Anordnung
Adresse des Peripheriegeräts, in welchem die Operation so nach dem Oberbegriff des Patentanspruchs 1 zu schafausgeführt werden soll, sowie die Adresse des entspre- fen. die Wartezeiten der Peripheriegeräte vermeidet chenden Kanalprogramms oder die Steuerbefehlsadresse. Die Adresse des Peripheriegeräts und die Adresse
des Steuerbefehls werden in ein Eingabe/Ausgabe-Register übertragen. Die Adresse des Peripheriegeräts 55
wird auf dem Datenübertragungsweg (»Bus«) übertragen, der die Peripheriegeräte mit der Zentraleinheit verbindet Das Peripheriegerät erkennt seine Adresse und
antwortet der Zentraleinheit, indem es seinen Zustand
meldet. Wenn das Peripheriegerät nicht verfügbar ist, 60 der Datenverarbeitungsanlage zu vergrößern, und in werden die Informationen über den Steuerbefehl und der die Verbindung zwischen der zentralen Datenverarüber die Nummer des Peripheriegeräts in eine War- beitungseinheit und den Peripheriegeräten über eine teschlange eingereiht, um in einem späteren Zeitpunkt Gerätesteuerung ausreichend »transparent« ist, um sawieder entnommen zu werden. Wenn das Peripheriege- gen zu können, daß die Ausführung der verschiedenen rät verfügbar ist, wird die Verbindung hergestellt und 65 Tasks durch die Gerätesteuerung gleichzeitig erfolgt, die Übertragung von Informationen initialisiert; das Ka- Deshalb werden die Tasks in zweckdienlicher Weise nalprogramm wird ausgelöst und die Ausführung jedes gleichzeitig räumlich und zeitlich verteilt. Die räumliche Steuerbefehls erfolgt im Takt der Abrufe des Periphe- Verteilung erfolgt in den geeigneten Speicherzonen,
und die Verbindung zwischen der zentralen Datenverarbeitungseinheit und den verschiedenen Peripheriegeräten transparent macht
Die Erfindung zielt insbesondere darauf ab, eine Datenverarbeitungsanlage zu schaffen, in der jede Gerätesteuerung gegenüber der zentralen Datenverarbeitungseinheit (CPU) und den Peripheriegeräten im Masterbetrieb arbeitet, um die Verarbeitungskapazitäten
während die zeitliche Verteilung erreicht wird, indem die Zeitpunkte der Auslösung und der Verkettung der Tasks untereinander festgelegt werden, wenn eine Unterbrechung erfolgt oder wenn eine Task beendet ist. Zur Verwirklichung dieser Ziele versieht die Erfindung die Gerätesteuerung PCUmit einer »Firmware«.
Die Firmware besteht einerseits aus einer Gruppe von Mikroprogrammen und von Tabellen oder Mikrobetriebssystemen MIOS (Abkürzung des angelsächsischen Ausdrucks »Microoperating systems«), die die Operationen in der Gerätesteuerung PCU koordiniert und optimiert, und andererseits aus einer Gruppe vor. Mikroprogrammen und von Tabellen zum Steuern der Peripheriegeräte. Die Gruppe der Mikroprogramme, die das Mikrobetriebssystem bildet, hat als Hauptaufgaben die Leitung eines multiprogrammierten Zeitgebers, die Verarbeitung der Unterbrechungen der Hardware und das Management der Tasks im Hinblick auf ihre Ausführung. Mit /4FP(Abkürzung des angelsächsischen Ausdrucks »Attachment firmware package«) wird die Gesamtheit der Mikroprogramme und Tabellen bezeichnet (wofür im folgenden der Ausdruck »Firmwaresystem AFP« verwendet wird), die für die Steuerung einer Gruppe von ausreichend homogenen Peripheriegeräten, wie beispielsweise eine Gruppe von Kartenlesern unterschiedlicher Art, erforderlich sind. Es gibt eine Firmware-Version, die jeder besonderen Konfiguration von an die Gcrätcstcücrüng PCUangeschlossenen Peripheriegeräten angepaßt ist. Jede Firmware-Version arbeitet unter der Überwachung des Mikrobetriebssystems MIOS. Ein Firmwaresystem AFP führt die durch das Mikrobetriebssystem MlOS oder durch die Kanalprogramme (über das Mikrobetriebssystem MIOS) erzeugten Steuerbefehle aus und berücksichtigt die Signale der Peripheriegeräte. Es enthält folgende Bestandteile:
!. einen oder mehrere Blöcke DACB zur Steuerung von Peripheriegerätenanschlüssen DA. Jeder Block DACB legt den Raum von Daten und den Raum von Mikroprogrammen fest, d. h. alle Hilfsmittel, die dem Firmwaresystem AFP zum Steuern der mit dem Peripheriegeräteanschluß verbundenen Peripheriegeräte zugeordnet sind.
2. eine Gruppe von Blöcken MCB zur Steuerung der Tasks. Jeder Block MCB steuert eine Task, die aktiviert wird, um die spezifischen Funktionen des Anschlusses auszuführen.
3. eine Gruppe von Mikroprogrammen. Die Mikroprogramme können Wiedereinsprungmikroprogramme sein, um ihre Aufteilung auf mehrere Tasks zu erleichtern.
4. Datenzonen, welche in bezug auf die verschiedenen Tasks des Firmwaresystems AFP ständige oder vorübergehende Daten enthalten.
Eine Task besteht aus einer Reihe von mikroprogrammierten Operationen, deren Ausführung den Ablauf einer Sequenz von Mikrobefehlen ohne Gleichzeitigkeit zur Folge hat Im Rahmen der Erfindung erscheint eine Task wie die potentielle Ausführung von zu der Aufgabe eines Firmware-Systems A FP gehörenden asynchronen spezifischen Funktionen mit Hilfe von Mirkobefehlen. Die Tatsache, daß einer Task entsprechende Mikrobefehle ausgeführt werden, bringt sie in den Zustand »im Ablauf begriffen«; man sagt dann, daß die Task aktiviert ist Eine Task kann entweder durch das Mikrobetriebssystem MIOS während des Eintretens eines oder mehrerer spezifischer Ereignisse oder auf Anforderung eines Firmwaresystems AFP aktiviert werden. Sie kann der einen oder anderen der beiden folgenden Klassen angehören. Die erste Klasse besteht aus Tasks EV\ und EV2, die die Eigenschaften haben, bei dem Eintritt von Ereignissen EV\ und EV2 (Ereignismeldung Nr. 1 und Nr. 2) automatisch ausgelöst zu werden und nicht durch andere Tasks adressiert werden zu können, d. h., daß die anderen Tasks nicht auf sie einwirken können. Die zweite Klasse wird als die Klasse der gewöhnlichen Tasks bezeichnet. Diese Tasks sind durch andere Tasks mit Hilfe von Blöcken MCB zur Steuerung von zugeordneten Tasks adressierbar. Der Name einer gewöhnlichen Task ist durch die Adresse ihres Blockes MCB festgelegt. Der Speicherplatz jedes Blockes MCB ist von dem Firmwaresystem AFP her bekannt; er ist in dem Zeitpunkt der »Assemblage« (vgl. die Definition im Glossar) festgelegt worden.
Es folgt die Beschreibung von Ausführungsbeispielen der Erfindung. In den Zeichnungen zeigt
F i g. 1 das Verarbeitungssystem, welches aus der Zentraleinheit CPU, der Gerätesteuerung PCU und verschiedenen Peripheriegeräteanschlüssen DA besteht,
F i g. 2 die Gerätesteuerung,
F i g. 3 in vereinfachter Form die Zustandsübergänge der verschiedenen Tasks,
F i g. 4 ein Funktionsdiagramm, welches die durch die Hardwareunierbrechüüg EV\ hervorgerufenen Wirkungen und die Wechselwirkungen des Mikrobetriebssystems MIOS und der Tasks zusammenfaßt,
F i g. 5 das Format eines Blocks DACB zur Steuerung eines Peripheriegeräteanschlusses,
F i g. 6 das Format eines Blocks MCB zur Steuerung von Tasks,
F i g. 7 eine Zone des Speichers M, welche die Formate der Wörter CPCW- TQHP und LCM angibt,
F i g. 8 das Format einer Tabelle zur Task-Zuteilung,
F i g. 9 das Format einer Taballe ALCT, die
F i g. 10a bis 10c ein Beispiel der Verkettung der Blökke MCB in einer Warteschlange der Bereit-Zustände, die
Fig. 11a bis lic eine Darstellung einer Verkettung der Blöcke MCBm der »TIMER«-Warteschlange,
F i g. 12 ein Diagramm, welches die Folge der Operation zeigt, die auszuführen sind, wenn ein Ereignis EV\ an einem Peripheriegeräteanschluß oder an dem TI MER eintritt,
F i g. 13 ein Diagramm, welches die Betriebsweise des Task-Dispatchers oder Task-Zuteilers veranschaulicht,
F i g. 14 ein Diagramm, welches den Mechanismus des Aufrufs einer Task EV2 veranschaulicht,
F i g. 15 ein Diagramm, weiches den Aufruf einer gewöhnlichen Task veranschaulicht,
F i g. 16 ein Diagramm, welches die Schritte zeigt, die für die Rückkehr zu einer unterbrochenen Task erforderllich sind,
Fig. 17 die Aktionen, die im Anschluß an einen Mikrobefehl »TERMINATE« ausgeführt werden,
Fig. 18 die Aktionen, die im Anschluß an einen Mi- krobefehl»ACTIVA TE« ausgeführt werden,
Fig. 19 die Aktionen, die im Anschluß an einen Mikrobefehl »SUSPEND« ausgeführt werden,
F i g. 20 die Aktionen, die im Anschluß an einen Mikrobefehl »RQT0« ausgeführt werden,
Fig.21 die Operation des Maskierers sämtlicher Tasks, bei welchem es sich nicht um die Task EVj handelt, in der Gerätesteuerung PCU,
F i g. 22 die Operation der entsprechenden Demaskie-
F i g. 23 die Operation des Maskierens des Signals EV2 eines Peripheriegeräteanschlusses,
F i g. 24 die Operation des entsprechenden Demaskierens des Signals EV2, und
F i g. 25 die Aktionen, die im Anschluß an den Mikrobefehl STDA ausgeführt werden.
F i g. 1 zeigt das Verarbeitungssystem, welches aus der Zentraleinheit (CPU) 100 besteht, die mit der Gerätesteuerung (PCU) 101 über die Schnittstelle PSI verbunden ist. Alle Informationen, die von der Zentraleinheit CPU ZM einem Peripheriegerät übertragen werden sollen, gehen durch die Schnittstelle PSl hindurch über die Gerätesteuerung PCU. Die Blöcke 102 bis 105 stellen verschiedene Peripheriegeräteanschlüsse dar, die mit der Gerätesteuerung (PCU) 101 und mit den zugeordneten Blöcken 106 bis 109 verbunden sind, welche die verschiedenen Peripheriegeräte Pi bis Pn darstellen.
Fig. 2 zeigt die Gerätesteuerung 101 von Fig. 1. In dieser Figur sind lediglich diejenigen Hardware-Bestandteile dargestellt, die für das Verständnis der Erfindung erforderlich sind. Eine ausführlichere Beschreibung dieser Gerätesteuerung findet sich in der gleichzeitig eingerichteten deutschen Patentanmeldung P 25 07 403 der Anmelderin. Die Gerätesteuerung PCU besteht aus einer Verarbeitungseinheit 200 (nachfolgend dem englischen Sprachgebrauch entsprechend auch als MPU bezeichnet), einer Schnittstellensteuereinheit 235 (nachfolgend auch als ICU bezeichnet), η Peripheriegeräteanschlußgattern (DAl1 bis DAl„)234, die jeweils mit dem entsprechenden Geräteanschluß DA verbunden sind und von denen allein die Anschlußgatter DA1\ und DAln dargestellt sind, aus ρ Gattern PSI, PSIi bis PSIp (lediglich ein PSAGatter 233 ist dargestellt) für den Dialog zwischen der Zentraleinheit CPU und der Gerätesteuerung PCU, und einem TIMER-Galter 236, welches zu regelmäßigen Zeiten eine TIMER-Unterbrechung EVi erzeugt.
Jedem Gatter ist eine Nummer zugeteilt. Den PSI-Gattern sind die Nummern 0 bis p— 1, den D/4/-Gattern die Nummern ρ bis p+n— 1 und dem TIMER-G&lter die Nr. ρ+π zugeteilt.
Die Verarbeitungseinheit 200 besteht hauptsächlich aus einem Speicher 202, in den die Mikroprogramme und die Tabellen des Mikrobetriebssystems MI0S sowie die Mikroprogramme und Tabellen jedes Firmwaresystems AFP eingetragen sind, aus einem Register (R0-SAR) 204, welches die Adresse des in dem Speicher 202 enthaltenen folgenden Befehls enthält, aus einem Register (R0R) 205. welches den Mikrobefehl, der gerade ausgeführt wird, enthält und die verschiedenen Übertragungen und Operationen der Verarbeitungseinheit 200 und der Schnittstellensteuereinheit 235 einer Verknüpfungsschaltung 206 steuert, welche die Adresse des folgenden Mikrobefehls aus den Daten berechnet, die durch den ausgeführten Mikrobefehl geliefert werden, oder aus prüfbaren Kippschaltungen, oder aus äußeren Ereignissen, die durch Hardware-Unterbrechungen einer Doppelregisterbank 210 gemeldet werden, welche in eine Bank URB von oberen Registern und in eine Bank LRB von unteren Registern unterteilt ist, die die Funktion von Arbeitsregistern haben, welche die Übertragung oder den Empfang von zu der Schnittstellensteuereinheit ICU gehenden oder von dieser kommenden Daten gestatten oder einen Austausch von Daten mit dem Speicher 202 oder mit der arithmetischen und logischen Einheit 211 oder mit dem Register (DNR) 208, welches die Nummer des Peripheriegeräteanschlusses speichert, an welchem eine Arbeit ausgeführt wird oder ausgeführt werden soll.
Die Auswahl der Bank von oberen Registern oder der Bank von unteren Registern der Doppelregisterbank 210 erfolgt mit Hilfe der Kippschaltung 217 (im folgenden auch als Kippschaltung UL bezeichnet). Wenn die Kippschaltung UL auf den Digitalwert 1 gesetzt wird, wird die obere Registerbank gewählt. Die Kippschaltung UL wird auf den den Digitalwert 1 gesetzt, wenn das Signal EVi*, welches den Eintritt eines Ereignisses EVi meldet, vorhanden ist. Dieses Verfahren ermöglicht, die Register der unteren Bank für die Ausführung der gewöhnlichen Tasks und die Register der oberen Bank für die Tasks EVi zu verwenden. Deshalb ist es während des Eintritts eines vorrangigen Ereignisses EVi nicht erforderlich, die Daten der unterbrochenen gewöhnlichen Task zu schützen, die in der unteren Registerbank sind. Um die unterbrochene gewöhnliche Task wieder aufzunehmen, wird die Kippschaltung UL auf Null zurückgestellt. Sie wählt die untere Registerbank aus, in der die Daten der gewöhnlichen Task aufbewahrt sind, die während der Unterbrechung vorhanden waren. Indem die Kippschaltung UL in den Zustand 1 gesetzt wird, wird das Signal EVi gesperrt, welches das Vorhandensein eines Ereignisses EV| an dem Eingang der UND-Schaltung 216 meldet und dadurch bewirkt, daß eine Task EVi durch eine andere Task EV, nicht unterbrochen werden kann. Die Kippschaltung 215 (die auch als Kippschaltung EE bezeichnet wird) ermöglicht, die Unterbrechungen EVi zu maskieren. Ihr Wert kann durch ein Mikroprogramm verändert werden; der Digitalwert 0 der Kippschaltung 215 verhindert die Übertragung des Signals EVu über die UND-Schaltung 216, damit die Task, die gerade ausgeführt wird, nicht unterbrachen wird.
Das Register 209 (auch als Register ADNR bezeichnet) ist ein Schutzregister für die Nummer des Peripheriegeräteanschlusses, wenn die Task, die gerade an dem entsprechenden Anschluß verarbeitet wird, unterbrochen wird. Es wird gleichzeitig mit dem Register DNR durch die Hardware geladen. Wenn die unterbrochene Task wiederaufgenommen wird, wird mit dem Inhalt des Registers ADNR das Register DNR durch die Hardware in Ausgangsstellung gebracht, was den Wiederan-Schluß des Peripheriegeräteanschlusses ermöglicht, wobei die Wiederaufnahme der unterbrochenen Task das Zurückstellen der Kippschaltung UL auf Null erfordert. Das Register 212 (auch als Register SP bezeichnet) ist der arithmetischen und logischen Einheit 211 zugeordnet. Es gestattet, während einer Operation in der arithmetischen und logischen Einheit ein Resultat Null oder einen Überlauf zu identifizieren.
Die Schnittstellensteuereinheit 235 besteht hauptsächlich aus einem Codierer 221, der mit Hilfe einer digitalen Verknüpfungsschaltung hergestellt ist und ermöglicht, die entsprechende Gatternummer jedes Signals EVi zu identifizieren, und der die Priorität dem Signal EV1 zuweist, daß an den DAI- oder ΉMER-Gattern mit der niedrigsten Nummer (das Γ/AiER-SignaI EVi hat die niedrigste Priorität) eines Decoders 222 für den Inhalt des Registers DNR vorhanden ist, um das DAl-, PSI- oder 7/AfE/?-Gatter auszuwählen, und aus einer ODER-Schaltung 220, die der Verarbeitungseinheit MPU das Vorhandensein eines Signals EVi meldet Das T/AfEÄ-Gatter 236 hat hauptsächlich die Aufgabe, aus dem Taktgeber 230 zu regelmäßiger Zeit ein Signal EV| zu liefern.
Die Signale EVj werden zu dem Codierer 221 über-
tragen, der in Binärform eine dem Signal EV, mit der höchsten Priorität entsprechende Codegruppe CEV1 abgibt. Diese Codegruppe CEV\ wird in das Register DNR geladen.
Wenn ein oder mehrere Signale EV\ an einem DAI- oder 77A/£7?-Gatter vorhanden sind, liefert die ODER-Schaltung 220 ein Signal EVu das, wenn die U N D-Schaltung 216 freigegeben ist, in ein Signal EV\ * zur Hardware-Unterbrechung der gerade ausgeführten Task umgewandelt wird, wenn eine vorhanden ist, und die Task EV] auslöst, die durch die sich in dem Register DNR befindende Codegruppe CEV\ angegeben wird.
Die Signale EVi werden zu dem Eingang der ODER-Schaltung 224 übertragen, die sich in dem Γ/ΜΕΛ-Gatter 236 befindet, dessen Ausgang mit dem Eingang der UND-Schaltung 223 verbunden ist und deren anderer Eingang durch das Signal »SELp+n« (Signal für die Auswahl des Γ/ΜΕΛ-Gatters, das von dem Decoder 222 kommt) freigegeben wird. Der Ausgang der UND-Schaltung 223 liefert ein Signal UEV15, welches in der UND-Schaltung 214 durch den Inhalt eines Mikrobefehls des Registers R0R getestet wird. Das PSAGatter 233 erzeugt ein Signal EV2 hauptsächlich dann, wenn ein Kanalprogramm wartet oder wenn ein Befehl in der Zentraleinheit wartet Das PS/-Gatter empfängt dann an dem Eingang der ODER-Schaltung 231 die Signale CPW und INW, die an dem Eingang der UND-Schaltung 232 freigegeben werden, wenn das PSAGatter durch den Decoder 222 ausgewählt wird.
Zusammenfassend kann gesagt werden, daß nur eine einzige Unterbrechung der Hardware vorhanden ist, die durch das Erscheinen zumindest eines Signals EV) an einem der DAI- und 77M£7?-Gatter bewirkt wird. Wenn die Unterbrechung auftritt und wenn sie nicht maskiert ist, bewirkt sie, daß die Kippschaltung 217 auf 1 gesetzt wird, daß der Inhalt des Registers (DNR)OOH in dem Register (ADNR)209 aufbewahrt wird, daß die Codegruppe CEV\ in das Register 208 übertragen wird, daß die Adresse für die Rückkehr zu der unterbrochenen gewöhnlichen Task in den Registers Re und Rf (nicht dargestellt) der Bank von oberen Registern der Doppelregisterbank 210 aufbewahrt wird, daß der Inhalt des Registers 212 in dem Register R 7 (nicht dargestellt) der Bank von oberen Registern eier Doppelregisterbank 210 aufbewahrt wird, die unbedingte Verzweigung durch das Mikrobetriebssystem MI0S zu der Startadresse der Task EVi, die aus dem Inhalt des Registers 208 berechnet wird, wobei der Ablauf der Task EVi unter der Steuerung des Mikrobetriebssysttem M/05 erfolgt. Die Rückkehr zu der unterbrochenen Task erfolgt ab dem Mikrobefehl RAI (Rückkehr nach Unterbrechung), der in dem A.biauf der Task EV* an^troffen wird und das Zurückstellen der Kippschaltung 217 auf Null, die Übertragung des Inhalts des Registers 209 in das Register 208 und die unbedingte Verzweigung zu der Adresse für die Rückkehr zu der gewöhnlichen Task, die unterbrochen worden ist, bewirkt, welche sich in den Registern Re und Rf der Bank von oberen Registern befindet, wobei der Inhalt des Registers 212 durch den Inhalt des Registers R 7 der Bank von oberen Registern der Doppelregisterbank 210 durch einen dem Mikrobefehl RAI vorangehenden Mikrobefehl in Ausgangsstellung gebracht wird. Die verschiedenen Operationen, die durch die Verarbeitungseinheit MPU ausgeführt werden, werden mit Hilfe von Mikrobefehlen verarbeitet die sich in dem Speicher 202 befinden. Das Format dieser Mikrobefehle ist fest und hat 16 Bits, von denen die vier ersten Bits die Operationscodegruppe darstellen. Die Operationscodegruppe kann eine der folgenden Bedeutungen haben: sie kann logische oder arithmetische Operationen oder Eingabe/Ausgabe-Operationen oder Schreib/Lese-Operationen in dem Speicher oder eine bedingte oder unbedingte Verzweigung mit oder ohne Schutz von Registerinhalten oder einen Zustandsübergang angeben, der an einer Task für das Task-Management auszuführen ist.
F i g. 3 zeigt in vereinfachter Form die Zustandsübergänge von verschiedenen Tasks, wobei die Zustände wie folgt definiert sind:
Man kann jeder Task in jedem Zeitpunkt eine Zustandsvariable zuordnen, die als vorhandener Ausführungszustand bezeichnet wird. Der vorhandene Ausführungszustand kann sein: in der Ausführung begriffen, unterbrochen oder inaktiv. Der Zustand »in der Ausführung begriffen« bedeutet, daß die Task gerade ausgeführt wird, wobei die Informationen, die durch den Ablauf der Task erzeugt werden, dann in den Registern der Gerätesteuerung PCU vorhanden sind. Der Zustand »unterbrochen« wird hervorgerufen, wenn die Task die Kontrolle über die Gerätesteuerung verliert, weil eine andere Task mit höherer Priorität in den Zustand »in der Ausführung begriffen« versetzt worden ist. Die unterbrochene Task wird zu einem späteren Zeitpunkt wieder gestartet. Die Informationen, die in den Registern während der Ausführung der Task vor ihrer Unterbrechung erzeugt werden, werden aufbewahrt (d. h. geschützt) und die Inhalte dieser Register werden in Ausgangsstellung gebracht, wenn die Task wieder gestartet wird. Der Zustand »inaktiv« gilt für eine Task, die noch nicht gestartet worden ist oder die beendet ist. Es ist auch möglich, jeder gewöhnlichen Task und in jedem Zeitpunkt eine Zustandsvariable zuzuordnen, die als angeforderter oder folgender Ausführungszustand bezeichnet wird, welcher zu einem der folgenden drei Fälle gehören kann: der Zustand »bereit«, der Zustand »wartend« oder der Zustand »nicht geplant«. Diese Ausführungszustände sind nur für die gewöhnlichen Tasks vorhanden und werden durch den zugeordneten Task-Steuerblock oder MCB gesteuert. Eine Task ist in dem Zustand »bereit«, wenn eine Anforderung ergangen ist, sie sobald wie möglich auszuführen. Der Block MCB, der diese Task steuert, ist in eine mit RQ bezeichnete Schlange eingereiht. Eine Task ist in dem Zustand »wartend«, wenn eine Anforderung mit dem Ziel ergangen ist, diese Task am Ende einer während der Anforderung festgelegten Zeit auszuführen; diese Task bleibt in dem Wartezustand, solange das Zeitintervall nicht abgelaufen ist Der Block MCB, der diese Task steuert, wird in eine mit TQ bezeichnete TIMER-Warteschlange eingereiht: Wenn die Zeit abgelaufen ist. bewirkt das Mikrobetriebssystem MI0S, daß er in die Warteschlange RQ der Zustände »bereit« eingereiht wird. Wenn eine Task weder in dem Zustand »bereit« noch in dem Zustand »wartend« ist, wird sie ais in dem Zustand »nicht geplant« befindlich bezeichnet Insbesondere geht eine Task, die die Schlange RQ verläßt, um in den vorhandenen Ausführungszustand »in der Ausführung begriffen« überzugehen, in den Zustand »nicht geplant« über. Die folgenden Zustände einer gewöhnlichen Task sind im Innern des zugeordneten Blockes MCB sichtbar. Sie können durch eine andere Task oder durch die Task selbst oder durch eine Entscheidung des Mirkobetriebssystem M10S modifiziert werden, wobei in den beiden ersten Fällen ein Task-Management-Mikrobefehl ausgeführt worden ist.
In F i g. 3 werden die gestrichelt dargestellten Über-
gänge durch das Mikrobetriebssystem MI0S oder durch die Hardware für die Tasks EVl festgelegt Die mit ausgezogenen Linier, dargestellten Übergänge werden durch Mikrobefehle ausgeführt, die folgende Bedeutungen haben. Der Mikrobefehl RAI ist der letzte Mikrobefehl einer Task EVf, der Ausführungszustand geht von dem Zustand »in der Ausführung begriffen« in den Zustand »inaktiv« über; er erlaubt, die unterbrochene Task wieder aufzurufen, nachdem die Unterbrechung ausgeführt worden ist. Der Mikrobefehl »TERMINATE« ist der letzte Mikrobefehl, der durch eine Task ausgeführt wird, bei welcher es sich nicht um eine Task EV\ handelt; der vorhandene Ausführungszustand geht von dem Zustand »in der Ausführung begriffen« in den Zustand »inaktiv« über; der folgende Ausfühi ungszustand, der nur für die gewöhnlichen Tasks festgelegt ist, wird nicht modifiziert.
Die folgenden Mikrobefehle modifizieren nicht den Zustand »in der Ausführung begriffen« einer Task, die sie ausführt Sie modifizieren den folgenden Zustand einer gewöhnlichen Task, die durch ihren Block MCB festgelegt wird. Der Mikrobefehl »ACTIVATE« ermöglicht, den Wert des folgenden Ausführungszustands einer Task in den Zustand »bereit« zu bringen, und zwar unabhängig von dem Zustand, in welchem sie sich vor diesem Mikrobefehl befindet Der Mikrobefehl RQT0 modifiziert den Wert des folgenden Zustands der betreffenden Task in folgender Weise:
— wenn der augenblickliche Wert des folgenden Ausführungszustands »nicht geplant« oder »wartend« ist, geht der Wert des folgenden Zustands auf »warcend« über und der Zeitpunkt, der den Übergang einer Task in den Zustand »bereit« festlegt wird in ihrem Block MCB gespeichert und durch das Mikrobetriebssystem MI0S benutzt;
— wenn der augenblickliche Wert des folgenden Ausführungszustands in dem Zustand »bereit« ist, wird sein Wert nicht modifiziert.
Der Mikrobefehl »SUSPEND«, gestattet, den Wert des folgenden Ausführungszustands in den Zustand »nicht geplant« zu bringen, und zwar unabhängig von dem Zustand, in welchem er sich vor diesem Mikrobefehl befindet.
Es gibt einen in Fig.3 nicht dargestellten Mikrobefehl STDA, der alle Tasks eines Firmwaresystems AFP annuliert.
Für das Unterbrechungssystem der Tasks gibt es zwei Klassen, von denen die eine den Unterbrechungen entspricht, die durch den Eintritt von Ereignissen EV\ hervorgerufen werden, und von denen die andere dem Auslösen der gewöhnlichen Tasks entspricht. Es gibt nur eine Stufe der Unterbrechung durch die Hardware, die den Tasks EVi vorbehalten ist. Allgemein können alle Tasks durch diese Stufe zwar unterbrochen werden, die Ausführung einer Task EVi kann jedoch nicht durch eine andere Task EVi derselben Stufe unterbrochen werden, wobei dieses Verbot durch die Hardware erfolgt, wie es in F i g. 2 die Zusammenschaltung der Kippschaltung 217 und der UND-Schaltung 216 zeigt. Wenn nämlich durch das Aufrufen einer Task EVi die Kippschaltung UL auf den Digitalwert 1 gesetzt worden ist und ihr Ausgang UL Null ist, wird der Eingang der UND-Schaltung 216 nicht mehr freigegeben, so daß jedes Erscheinen eines neuen Signals EVi somit auf den Ablauf der in der Ausführung begriffenen Task EVi keinen Einfluß hat, Es ist auch möglich, das Erscheinen der Signale EVi mit Hilfe eines Mikrobefehls zu maskieren, wenn die EU-Kippschaltung 215 auf dem Digitalwert Null ist oder in jedem DAZ-Gatter durch eine nicht dargestellte Kippschaltung El, die auf den Digitalwert 0 gesetzt ist Die andere Unterbrechungsstufe ist eine Firmware-Stufe. Jede gewöhnliche Task kann zwar durch eine gewöhnliche Task mit höherer Priorität oder durch eine Task EVj unterbrochen werden, eine gewöhnliche Task kann jedoch durch Mikrobefehle unun- terbrechbar gemacht werden; der Mikrobefehl MSKP erlaubt alle Task mit Ausnahme der Tasks EVi zu maskieren, so daß die in der Ausführung begriffene Task dann vorübergehend als Task der Stufe 2 und als durch eine andere gewöhnliche Task nicht unterbrechbare
is Task angesehen werden kann. Die Demaskierungsoperation erfolgt durch einen Mikrobefehl UMSP. Es besteht auch eine Möglichkeit eine Task EV2 zu maskieren, indem ein Mikrobefehl MSKE ausgeführt wird, wobei die Demaskierung mit Hilfe eines anderen Mikrobe- fehls EAfSEerfolgt
Das Funktioiisdiagramm von F i g. 4 faßt in schematischer Form die durch eine Hardware-Unterbrechung EV| hervorgerufenen Aktionen zusammen. Geht man in dem Diagramm fortschreitend von oben nach unten, so ergibt sich folgende Verkettung der Operationen zum Unterbrechen der Task, die in der Ausführung begriffen ist sofern es eine solche gibt, und folgende Analyse der Warteschlangen von Tasks auf jeder Prioritätsstufe im Hinblick auf das Auslösen einer Task mit höherer Priorität, wenn es eine solche gibt. Ein Ereignis EVi kann aus einem C /-Gatter oder aus einem Taktimpuls stammen, der zu einem festgelegten Zeitpunkt durch das 7WE/?-Gatter 236 von F i g. 2 geliefert wird, beispielsweise jede Millisekunde. Wenn das Ereig-
nis EVi aus einem Ä4/-Gatter stammt wird die in der Ausführung begriffene Task, wenn es eine solche gibt und wenn sie unterbrechbar ist, unterbrochen und die dem entsprechenden Peripheriegeräteanschluß DA zugeordnete Task EVi wird in dem Schritt 401 ausgelöst bis zur Ausführung des letzten Mikrobefehls RAI, der die Rückkehr zu der unterbrochenen Task bewirkt, wenn es eine solche gab. Das Ereignis EVi kann auch aus dem TIMER-Gauer stammen. In diesem Fall wird die Γ/MEÄ-Warteschlange wieder fortgeschrieben. Bei dieser Fortschreibung wird festgestellt, ob die Weckzeit des ersten Blocks MCB in der TWEÄ-Schlange gekommen ist. Schritt 402; wenn ja, wird dieser Block MCB in die Schlange der Zustände »bereit« eingereiht, Schritt 403, und die Weckzeit des Blocks MCB, der folgt, wird wieder fortgeschrieben, Schritt 404; wenn nein, handelt es sich um die Weckzeit des ersten Blocks MCB, die wieder fortgeschrieben wird. Wenn die Fortschreibung der Γ/Λ/EÄ-Warteschlange ausgeführt ist, testet ein Mikrobefehl den Eingang der UND-Schaltung 214 von Fig.2, um festzustellen, ob nicht zumindest ein Signal EV2 an einem der DAI- oder PS/Gatter vorhanden ist; danach wird die Warteschlange der Task EV2 abgetastet Schritt 405. Wenn ein Signal EV2 vorhanden ist, wird die entsprechende Task EV2 durch das Mikrobe triebssystem MIOS ausgelöst, Schritte 406 und 407. Ein Signal EV2 kann zu einem räumlichen Kanal einer Schnittstelle PSI gehören, der die Zentraleinheit mit der Gerätesteuerung oder mit einem £>/4/-Gatter verbindet, welches meldet, daß ein Ereignis in der Zentraleinheit oder in einen Peripheriegerät eingetreten ist.
Wenn der letzte Mikrobefehl einer Task EV2 ausgeführt ist, wird die Abtastprozedur der Task EV2 wieder begonnen, urr· festzustellen, ob es nicht eine auszulösen-
de andere Task FVi gibt Wenn es eine solche Task gibt, wird das vorhergehende Verfahren wiederaufgenommen, wenn nicht, werden die verschiedenen Prioritätsstufen der gewöhnlichen Tasks abgetastet, Schritt 407, indem mit der höchsten Stuft in der Reihenfolge abnehmender Prioritätsnummern begonnen wird und, wenn eine gewöhnliche Task auf einer Stufe angetroffen wird, wird dieselbe ausgelöst Schritt 408, und läuft Befehl für Befehl bis zu dem Befehl »TERMINATE« ab, welcher erlaubt, die Abtastprozedur der Tasks FVj wieder aufzunehmen.
Selbstverständlich ist es möglich, daß eine gewöhnliche Task durch das Auftreten eines Signals EV\ unterbrochen wird. In diesem Fall wird die Prozedur in dem Schritt 400 oben in dem Diagramm wieder aufgenommen. Die Abtastung der Warteschlangen, die soeben beschrieben worden ist und die in der Gerätesteuerung PCU ausgeführt wird, wird als Zuteilungsmechanismus der Tasks oder »Dispatcher« bezeichnet.
Die F i g. 5 bis 8 zeigen die Tabellen der Parameter, die sich in dem Speicher 202 von F i g. 2 befinden und die die für das Task-Management benutzten Bestandteile der Firmware bilden.
Fig.5 zeigt das Format eines Steuerblocks DACB eines Peripheriegeräteanschlusses. Ein Algorithmus erlaubt das Wiederauffinden der Adresse des zugeordneten Blocks DACBanhand der DAAGatter-Nummer. Jeder Block DACB nimmt einen Raum des Speichers 202 ein und kontrolliert die Operationen an dem zugeordneten DAI-GiUa. Das Wort 0 enthält die mit MSAx bezeichnete absolute Startadresse der Task FVi. Das Wort
1 enthält die absolute Adresse von Daten, die durch das Firmwaresystem AFP angegeben sind und die für die Ausführung einer Task EV\ erforderlich sind. Das Wort
2 enthält die absolute Adresse des Anfangs der Task EV^. Das Wort 3 enthält die absolute Adresse von durch das Firmwaresystem AFP angegebenen und für die Ausführung einer Task EV2 erforderlichen Daten. Das Wort 4 besteht aus einem mit FLC bezeichneten ersten Byte, welches die erste Digitalkanalnummer enthält, und aus einem zweiten Byte, welches die Anzahl der dem DA /-Gatter zugeordneten Digitalkanäle angibt (vgl. das Glossar für die Definition eines Digitalkanals). Das Wort 5 enthält die absolute Adresse FMCBA des dem DA /-Gatter zugeordneten ersten Blocks MCB. Das Byte 1 des Wortes 6 oder MCBNB enthält die Anzahl von dem DAAGatter zugeordneten Blöcken MCB. Das Byte 2 des Wortes 6 enthält die Bits E und 5 des Zustands des Peripheriegeräteanschlusses. Wenn das Bit E gleich 1 ist, ist das Ereignis EVj des DAAGatters maskiert. Wenn das Bit S gleich 1 ist. werden sämtliche Operationen an dem £M/-Gatter angehalten (es kann keine zugeordnete Task mehr ablaufen).
F i g. 6 zeigt das Format eines Tasksteuerblocks MCB. Jeder Block nimmt einen Raum des Speichers 202 von F i g. 2 ein und enthält die Informationen, die für das Management und die Ausführung der zugeordneten Task erforderlich sind. Ein Block MCB besteht aus acht Speicherwörtern, von denen jedes eine Abmessung von 16 Bits hat. Die Bits 0 bis 3 des Wortes 0 legen die eo Nummer des DAAGatters fest, mit welchem der Block MCB verb nden ist. Die Bits 8 bis 10 des Wortes 0 legen die Prioritätsstufe der Task fest, der der Block MCB zugeordnet ist. Die Bits 12 und 13 bzw. 7K?und /?(?des Wortes 0 legen den folgenden Ausführungszustand der Task fest. Das logische Produkt TQ ■ RQ hat folgende Bedeutungen:
TQ- RQ= 00; für die Task ist kein Zustand vorgesehen.
TQ ■ RQ = 01; die Task wartet in der TIMER-Warteschlange TQ.
TQ · RQ - 10; die Task ist in dem Zustand »bereit« in der Schlange RQ der »bereitw-Zustände.
Die mit NLPund PLPbezeichneten Wörter 1 und 2 werden weiter unten beschrieben.
Das Wort 3 hat für die vorliegende Erfindung keine Bedeutung.
Das mit ABSA bezeichnete Wort 4 gibt die Λη-fangsadresse der zugeordneten Task an.
Das Wort 5 oder ABWZA bezeichnet eine absolute Arbeitszonenadresse, die von der Task als Basisadresse benutzt wird.
Das mit TOM bezeichnete Wort 6 wird weiter unten beschrieben.
Das Byte 1 des Wortes 7 hat für die vorliegende Erfindung keine Bedeutung.
Die Bits 8 bis 15 des Wortes 7 geben ein mit YRE- DY bezeichnetes Feld an, welches die Gründe bezeichnet, aus denen die zugeordnete Task den Zustand geändert hat. Es wird in ein nicht dargestelltes Register R\ der Doppelregisterbank 210 von F i g. 2 geladen, wenn die Task gestartet wird.
Das Bit 11 oder das Bit A des Wortes 7 gibt an, daß der folgende Ausführungszustand der Task durch einen Mikrobefehl »ACTIVATE«, der durch das an diesen Block MCB angeschlossene Firmwaresystem AFP erzeugt worden ist, in den Zustand »bereit« übergangen ist.
Das Bit 12 oder Bit Tdes Wortes 7 gibt an, daß ein Mikrobefehl RQT0d\e Task in den Wartezustand versetzt hat, indem er ihr für den Übergang in den Zustand »bereit« eine Verzögerung gegeben hat, und daß die Verzögerung jetzt abgelaufen ist.
Die übrigen Bits des Feldes YREDY geben weitere Ereignisse an. So können sie anzeigen, daß ein Kanalprogramm von der Zentraleinheit CPU an einen bestimmten Digitalkanal abgegeben worden ist, wobei das Firmwaresystem AFP über dieses Ereignis unterrichtet wird und die erste Kanalbefehlseintragung CCE dieses Kanalprogramms zu verarbeiten beginnt; die Gerätesteuerung PCU wird über dieses Ereignis durch das Signal CPW an einem PSAGatter 233 von F i g. 2 unterrichtet. Die initialisierungssequenzen eines Programms sind in der deutschen Patentanmeldung P 24 55 529.5 beschrieben, die für die Priorität der französischen Patentanmeldung Nr. 7342 714 in Anspruch genommen worden ist. Es gibt auch noch ein weiteres Bit des Feldes YREDY, welches meldet, daß eine ABBRUCH-Ursache (vgl. das Glossar für die Definition) durch das Mikrobetriebssystem MlOS festgestellt worden ist und daß von dem Firmwaresystem AFP verlangt wird, die Operationen aufzugeben, d. h. das gerade ablaufende Kanalprogramm sofort anzuhalten.
Alle Informationen, die in einem Block MCB enthalten sind, werden allein mit Hilfe der Task-Management-Mikrobefehle modifiziert werden, die den Block über seine absolute Adresse adressieren werden.
F i g. 7 zeigt eine Zone des Speichers 202 von F i g. 2, welche die Formate der Wörter CPCW, TQHP und LCM angibt, deren Adressen im Speicher festgelegt sind. Das Wort CPCWgibt den Zustand der Task an, die in der Gerätesteuerung PCU'in der Ausführung begriffen ist. Die Zone Λ/PCbesteht aus drei Bits, die von dem Bit 0 bis zu dem Bit 2 gehen, und gibt die Stufe der Task
an, die in der Ausführung begriffen ist Ihre Abmessung von drei Bits erlaubt somit, sechs Stufen von gewöhnlichen Tasks festzulegen (0 ist nicht bestimmt, 1 ist dem Ereignis EV1 zugeordnet). Es ist offensichtlich, daß, wenn die Zone NPCn Bite enthielte, man 2"—2 Stufen von gewöhnlichen Tasks festlegen könnte. Das Bit M gibt an, daß die Sequenz maskiert ist d. h. daß die Task, die in der Ausführung begriffen ist vorübergehend der Stufe 2 angehört Das Bit L gibt an, daß die Task die Stufe 2 hat Das Bit D gibt an, daß der »Dispatcher« in der Ausführung begriffen ist Das Bit /»gibt an, daß eine Task in der Ausführung begriffen ist
Es ist festzustellen, daß die Bits M, L oder D Tasks mit Priorität entsprechen.
Das als »flag« oder Kennzeichen bezeichnete Bit F gibt an, daß zumindest eine Task seit dem letzten Übergang in den Dispatcher in die Warteschlange der »bereit«-Zustände gegangen ist Dieses Ereignis kann die Priorität der auszuführenden Tasks wieder in Frage stellen.
Das Wort TQHP legt den Kopf der TIMER-Warteschlange fest Wenn die TIMER-Warteschlange leer ist, ist der Inhalt des Wortes TQHP Null. Die TIMER-Warteschlange erlaubt die Tasks in der Reihenfolge ihrer Weckzeit zu bringen, wobei diese Warteschlange Prioritätsstufen nicht berücksichtigt.
Das Wort LCM legt die maximale Anzahl von Digitalkanälen in der Gerätesteuerung PCU fest.
Fig.8 zeigt das Format einer Tabelle des Dispatchers. Jeder Prioritätsstufe ist eine Tabelle zugeordnet, die sich in einer Zone des Speichers 202 von F i g. 2 befindet; ihre Adresse wird aus der Nummer der entsprechenden Stufe berechnet Sie enthält eine erste Zone RQHP, welche den Kopf der Schlange der Bereit-Zustände mit dieser Stufe angibt, eine zweite Zone RQTP, die den Schwanz der Schlange der Bereit-Zustände mit dieser Stufe angibt, eine dritte Zone, welche ein Bit B enthält das angibt, daß eine Task mit dieser Stufe zwar begonnen, aber noch nicht beendet worden ist. Der Mikrobefehl TERMINATE ist nicht ausgeführt worden. Die Zonen 4 und die folgenden Zonen sind Schutzzonen für die Inhalte der Register in der Gerätesteuerung PCU, wenn die Task durch eine Task mit höherer Prioritätsstufe unterbrochen wird. So bewahrt das Feld DAN den Inhalt des DNÄ-Registers 208 von Fi g. 2 auf, das Feld SP bewahrt den Inhalt des SP-Registers 212 von F i g. 2 auf, in welches die Operationsergebnisse eingereiht sind, die fünfte Zone bewahrt die Adresse des nächsten Befehls auf, der in dem Zeitpunkt der Unterbrechung durch die Task mit höherer Priorität auszu- führen war, die sechsten Zonen und die folgenden Zonen erlauben, den Inhalt der verallgemeinerten Register der unteren Registerbank der Doppelregisterbank 210 von F i g. 2 aufzubewahren (allein die gewöhnlichen Tasks können unterbrochen sein und arbeiten in der unteren Bank).
F i g. 9 zeigt eine feste Tabelle ALCTm dem Speicher 202 von Fig.2, die als Schnittstelle zwischen dem Mikrobetriebssystem MIOS und der den Peripheriegeräten zugeordneten Firmware dient. Jedem Digitalkanal LC ist eine Tabelle zugeordnet, die die Nummer der Schnittstelle DAI enthält, mit der dieser Digitalkanal LC verbunden ist, und die Adresse des ersten Blocks MCB, der diesem Digitalkanal entspricht.
Die Fig. 10a, b, c und die Fig. 11a, b, c zeigen die Schlangen RQ bzw. TQ. Das sind Zweirichtungsketten, d. h. daß jeder in der Kette enthaltene Block MCB die Kennzeichen enthält, welche erlauben, ihn mit dem ihm vorangehenden oder mit dem ihm folgenden Block MCB zu verbinden. Diese beiden Ketten sind dadurch gekennzeichnet daß sie beide einen Zeiger benutzen, um den ersten Block MCB zu bezeichnen, der aus der Kette entnommen werden kann. Durch den Inhalt der Zeiger kann angegeben werden, ob die Kette zumindest einen Block MCB enthält Wenn ein Block MCB in eine zuerst leere Kette eingegeben werden soll, gibt der Inhalt des Zeigers die Adresse dieses Blocks MCB an. Wenn ein Block MCB in eine Kette hineingeht die bereits mehrere Blöcke MCB enthält sollen die Zeiger NLPund PLP, die in dem ersten und zweiten Wort eines Blocks MCB enthalten sind, die Werte annehmen, welche für NLPerlauben, die Adresse des folgenden Blocks MCB wieder aufzufinden, und für PLP erlauben, die Adresse des vorangehenden Blocks MCB wieder aufzufinden. Wenn ein Block AiCS eine Kette verläßt, soll der Wert des Zeigers durch die Adresse des Blocks MCB, der dem die Kette verfassenden Block MCB in der Ausgabereihenfolge folgt verändert werden, und der Wert PLP des Blockes MCB, der folgt, soll wieder auf den neuesten Stand gebracht werden.
Fig. 10a zeigt eine Darstellung der Art der Verkettung, die für die Warteschlange RQ der Bereit-Zustände einer Stufe N benutzt wird. Die Ausgabe eines Blockes MCB folgt der Regel, daß, wer als erster eingegeben wurde, als erster ausgegeben wird, d. h„ daß für eine bestimmte Stufe N der erste aktivierte Block MCB als erster ausgeführt wird. Diese Schlange ist dadurch gekennzeichnet, daß sie einen Kopfzeiger RQHP und einen Schwanzzeiger RQTP enthält. Diese Zeiger nehmen eine Speicherzone ein, die durch die ersten und zweiten Wörter einer Tabelle der Stufe N des Dispatchers festgelegt ist, wie F i g. 8 angegeben. RQHP bezeichnet den ersten Block MCB der Schlange und RQTPden letzten. Jeder Block AiCS ist mit dem vorangehenden Block und mit dem folgenden Block in der oben bereits angegebenen Weise zwar verbunden, der Wert PLP des ersten Blocks AfCS und der Wert NLP des letzten gibt jedoch die Adresse des Zeigers RQHP in der Tabelle des Dispatchers der Stufe Nan. Fi g. 10b zeigt den Fall, in welchem kein Block MCB in der Schlange mit dieser Stufe verkettet ist, in welchem Fall der Wert von RQHP seine Adresse in der Tabelle des Dispatchers mit der Stufe N und der Wert von RQTP die Adresse von RQHP angibt. Fi g. 10c zeigt den Fall, in welchem ein einziger Block MCB in der Schlange verkettet ist. RQHP gibt dann die Adresse dieses Blokkes MCB, und NLPdie Adresse von RQHPan; PLPgM dann die Adresse von RQHP an und RQTP gibt die Adresse des Blocks AfCB an.
Fig. 1 la zeigt eine Darstellung einer Verkettungsart eines Blocks MCB in einer Γ/MEÄ-Warteschlange TQ. Diese Warteschlange ist kreisförmig und hat somit weder einen Kopf- noch einen Schwanzblock MCB. Die Blöcke AfCS sind in der Reihenfole des Weckens angeordnet, die in jedem Block AfCS in dem Wort 6 oder 7OAf (vgl. F i g. 6) angegeben ist. Jeder Block AfCS ist mit dem ihm vorangehenden Block AfCB durch die Angabe PLP des Wortes 2 des Blockes AfCB und mit dem ihm folgenden Block AfCB durch die Angabe NLP des Wortes 1 des Blocks AfCB verbunden. Der Zeiger TQHP zeigt immer auf den Block AfCB, dessen Weckzeit am nächsten ist. Ein Block AfCB kann durch einen Mikrobefehl »AKTIVATE« aus der 77M£7?-Warteschlange herausgezogen werden, wenn der Weckzeitpunkt gekommen ist oder bevor der Weckzeitpunkt gekommen ist; der Block MCB geht dann in die Schlange
der Bereit-Zustände. Der Block MCB wird aus der Schlange TQ durch einen Mikrobefehl »SUSPEND« ausgegeben. In allen Fällen wird der Zeiger TQHP auf die Adresse des Blocks MCB, der folgt, hinweisen, die in dem Wort NLP des ausgegebenen Blocks MCB angegeben ist; der Wert PLP des Blocks MCB, der folgt, wird mit dem Wert PLP des Worts PLP des abgegebenen Blocks MCB wieder auf den neuesten Stand gebracht Wenn es nur einen einzigen Block MCB in der Schl&nge TQ gibt, F ι g. 11 c wird der Inhalt des Zeigers TQHP bei der Abgabe dieses Blocks MCB auf Null gestellt, was gewöhnlich angibt, daß die Schlange 7Qleer ist
Wenn irgendein Block MCB die Kette verläßt, wird der Wert des Wertes NLPdes vorangehenden Blocks AiCS zu dem Wert des Worts NLP des abgegebenen Blocks MCB und der Wert PLP des folgenden Blocks MCB wird zu dem Wert des Worts PLP des abgegebenen Blocks MCB.
Wenn ein Block MCB in die TIMER-Warteschlange eingereiht ist und falls kein Block MCB in der Warteschlange vorhanden ist, weis«, der Zeiger TQHP auf die Adresse dieses ersten Blocks AfCS hin. Die Wörter NLP und PLP weisen dann auf sich selbst hin, F i g. 1 Ic. Wenn weitere Blöcke MCB in der Γ/AfEK-Warteschlange warten, wird dieser Block AfCS in Abhängigkeit von der Angabe des Inhalts in dem Wort 6 oder TOM des Blocks MCB hinter dem Block AiCS eingereiht dessen Weckzeit direkt unter ihm liegt Der Wert seines Wortes NLP nimmt den Wert des Wortes NLP des Blockes MCB an, der ihm vorangeht und der Wert seines Wortes PLP nimmt den Wert des Wortes PLP des Blocks AfCS an, der ihm folgt; der Wert des Worts NLP des Blocks AfCS, der ihm vorangeht, und der Wert des Worts PLP des Blocks AfCS, der ihm folgt, werden an der Adresse des Blocks AfCB geändert der gerade in die Kette eingegeben worden ist
Die zeitliche Verteilung der Tasks, so wie sie in den Wechselwirkungsprinzipien des Mikrobetriebssystems und der Tasks festgelegt und in dem Funktionsdiagramm von F i g. 4 dargestellt ist wird jetzt in der folgenden Beschreibung ausführlich erläutert In dieser Beschreibung wird der dynamische Betrieb des Systems mit Hilfe der Hardwaregerate und der Firmware (Mikroprogramme und Tabellen) erläutert die oben beschrieben worden sind. Fig. 12 ist ein Diagramm, welches die Folge der Operationen zeigt, die während einer Unterbrechung der Hardware auszuführen sind, d. h. wenn ein Ereignis EVi in einem Peripheriegeräteanschluß oder in dem »TIMER« eintritt. Wenn die Kippschaltung 215 (Kippschaltung EE) von F i g. 2 nicht durch ein Mikroprogramm auf NuI! gestellt worden ist, wird jedes Signal EVi, das an einem der OAI- oder Γ/AfEÄ-Gatter von Fig.2 erscheint der Verarbeitungseinheit MPU durch das Signal EVu an dem Ausgang der ODER-Schaltung 220 von F i g. 2 gemeldet. Das Signal £V,S bewirkt, daß die gerade ablaufenden Operationen durch die Hardware unterbrochen werden und daß die Hardware die Kippschaltung 217 (Kippschaltung UL) von F i g. 2 auf den Digitalwert 1 setzt, die die Bänke von oberen Registern der Doppelregisterbank 210 von Fig.2 auswählt. Ab diesem Zeitpunkt laufen alle Operationen in der oberen Bank ab. Sie bewahrt den Inhalt des Registers 204 (Register R0SAR) von Fig. 2 in den Registern Λ μ und Ä15 (nicht dargestellt) der oberen Registerbank der Doppelregisterbank sowie den gegenwärtigen Inhalt des Registers 208 (Register DNR) von F i g. 2 in dem Register 209 (Register ADNR)auf und lädt dann das Register DNR mit seinem neuen Wert und verzweigt zu einer festen Adresse in der Gerätesteuerung, bei welcher es sich um die Anfangsadresse einer Af/OS-Prozedur handelt die die Unterbrechung der Hardware berücksichtigt Das Mikrobetrisbssystem Af/0S liest dann in dem Schritt 1202 den Inhalt des Registers 208 von F i g. 2, welches über die Datenleitung CEV\ geladen worden ist die den Codierer 221 mit dem Register DNR verbindet Das Register DNR enthält dann die Nummer dss Gatters mit der höchsten Priorität unter allen denjenigen Gattern, die ein Signal EVi ausgesandt haben. Ausgehend von dieser Nummer sucht das Mikrobetriebssystem MI0S in dem Schritt 1203 eine Speicheradresse MS'A1 in dem Peripheriegeräteanschlußsteuerblock DACB, der dem ausgewählten DAI-Gatter entspricht.
Diese Speicheradresse bildet die Anfangsadresse der Task EVi, die in dem ausgewählten Peripheriegeräteanschluß ausgeführt werden soll. In dem Schritt 1204 von Fig. 12 wird der Inhalt des Registers 212 (Register SP) von F i g. 2 in einem besonderen Register R 7 (nicht dargestellt) der Bank von oberen Registern der Doppelregisterbank 210 von F i g. 2 aufbewahrt. In dem Schritt 1205 von Fig. 12 erfolgt eine Verzweigung zu der Adresse MSAu Wenn die Task EV, keine Γ/AfEÄ-Task EVi ist wird die Task EV1 des Firmwaresystems AFP, die dem ausgewählten Peripheriegeräteanschluß entspricht, ausgelöst (Schritt 1207). Sie wird durch den Mikrobefehl RAI beendet der die Kippschaltung UL auf . Null zurückstellt den Inhalt des Registers ADNR in dem Register DNR in Ausgangsstellung bringt und eine indirekte Verzweigung zu den Registern Äfund Äpder Bank von oberen Registern ausführt um die Adresse für die Rückkehr zu der unterbrochenen Task zu suchen. Wenn es sich um eine TIMER-Task EV1 handelt, bestehen die Schritte 1208 bis 1209 darin, festzustellen, ob nicht ein Block AfCS in der TIMER-Warteschlange (mit Bezug auf Fig. 12) vorhanden ist, für den die Zeit gekommen ist, in die Warteschlange der Bereit-Zustände überzugehen. In dem Schritt 1208 liest das Mikrobetriebssystem Af/05 das Wort TQHP (vgl. F i g. 7), welches eine feste Adresse im Speicher hat. Wenn der Inhalt dieses Worts leer ist, übergibt das Mikrobetriebssystem Af/0San den Schritt 1216 »Ist eine Task mit Priorität in der Ausführung begriffen?«. Wenn der inhalt des Worts TQHP nicht leer ist dann liest das Mikrobetriebssystem MI0S in dem durch TQHP(vgl. Fig. 11) angegebenen Block AfCS den Inhalt des Worts 6 oder ΓΟΛί (Schritt 1209) (vgl. F i g. 6).
Wenn der Inhalt des Worts TOAf nicht Null ist, verringert das Mikrobetriebssystem MI0S den Inhalt des Worts TOAf um Eins und übergibt die Kontrolle an den Schritt 1216. Wenn der Inhalt des Worts TOM gleich 0 ist, bedeutet das, daß die Zeit gekommen ist, daß ein Block AfCS der 77AfE/?-Warteschlange in die Warteschlange der Bereit-Zustände übergeht und dieser Block AfCS wird von der Warteschlange TQ abgegeben und in die Schlange RQ der Bereit-Zustände entsprechend seiner Prioritätsstufe eingereiht. Das Bit 7"<?oder Bit 12 des Wortes Null des entsprechenden Blocks AfCß (vgl. Fig.6) wird in dem Schritt 1211 auf Null gestellt, während das Bit RQ oder Bit 13 des Worts 0 dieses Blocks AfCS in dem Schritt 1212 auf Eins gestellt wird. In dem Schritt 1213 wird das Bit Foder Kennzeichen-Bit des Worts CPCW(F i g. 7) auf 1 gesetzt, um anzuzeigen, daß eine Task in die Schlange der Bereit-Zustände übergegangen ist. In dem Schritt 1214 wird das Bit Tm dem Byte YREDY des entsprechenden Blocks AfCS auf 1 gesetzt. Das Management der TIMER-Warteschlange
ist bereits Gegenstand der älteren deutschen Patentanmeldung P 23 48 822.4 der Anmelderin.
Das Mikrobetriebssystem MI0S überprüft danach in dem Schritt 1216, ob eine Task mit Priorität in der Ausführung begriffen ist. Zu diesem Zweck liest sie in dem Wort CPCWden Zustand der Bits D, L und Ai:
Wenn D=I, wird gerade der Dispatcher ausgeführt,
wenn L = 1, gehört die unterbrochene Task der Stufe 2 an,
wenn M= 1, ist die Sequenz maskiert und die Task gehört vorübergehend der Stufe 2 an. Somit wenn
D = 1 oder
L = 1 oder M = 1, hat die Task, die unterbrochen worden ist. Priorität und wird in dem Schritt 1218 wieder ausgelöst. Wenn die unterbrochene Task keine Priorität hat, besteht der Schritt 1217 darin, daß überprüft wird, ob eine Task EV2 vorhanden ist.
In F i g. 2 zeigt das Signal EV2J am Ausgang der UND-Schaltung 223 an, wenn das TIMER-CaUer ausgewählt ist, ob zumindest ein Signal EVi an einem der DAI- oder PSAGatter vorhanden ist (dieser Globaltest bringt einen Ausfuhrungszeitgewinn mit sich); oder ob das Bit F des Wortes CPCW1 ist, was offenbar der Fall ist, wenn das Mikrobetriebssystem MIOS die Operation flag -= 1 in dem Schritt 1213 ausgeführt hat, was aber nicht zwangsläufig gilt, wenn das Mikrobetriebssystem MIOS direkt von dem Schritt 1208 oder 1209 zu dem Schritt 1216 übergegangen ist
Der Test des Bits F erbringt ebenfalls einen Ausführungszeitgewinn (somit einem Gewinn an Leistungsfähigkeit des Mikrobetriebssystems MI0S), da die Schlangen von Bereit-Zuständen nur abgetastet werden, wenn die Priorität der in der Ausführung begriffenen Task wieder in Frage gestellt werden kann.
Bei F — 0 wird die unterbrochene Task wieder ausgelöst, Schritt 1218.
Wenn man nämlich nicht in dem Dispatcher (D = 0) ist, heißt das, daß eine Task in der Ausführung begriffen und unterbrochen worden ist. Der Dispatcher ist allein in bestimmten Punkten unterbrechbar, die genau festgelegt und als »Fenster« zum Durchlassen der Unterbrechungen EV] der verschiedenen Peripheriegeräteanschlüsse DA bezeichnet werden.
Bei F = 1, wird der Schritt 1300 ausgeführt. Er besteht aus dem Eintritt in den »Dispatcher« und der Analyse der verschiedenen Schlangen von Bereit-Zuständen jeder Prioritätsstufe.
Fig. 13 ist ein Funktionsdiagramm des Dispatchers. Durch den Eintritt in den Dispatcher wird das Bit D des Wortes CPSCW auf 1 gesetzt. Das Bit F des Wortes CPCW wird in dem Schritt 1302 auf Null riickgeseetzt und in dem Schritt 1313 überprüft das Mikrobetriebssystem MIOS, ob nicht zumindest eine Task EV1 wartet Wenn ja, wird das Register DNR auf Null zurückgestellt und das Mikrobetriebssystem MIOS prüft, ob nicht eine Task EV2 vorhanden ist, die DNR = 0 entspricht Wenn es keine Task EV2 gibt wird das Register DNR um 1 erhöht und nimmt somit den Wert DNR = 1 an und das Mikrobetriebssystem MIOS prüft erneut, ob nicht eine andere Task EV2 wartet, die diesem Wert des Registers DNR entspricht Wenn die Task EV2 nicht vorhanden ist wird der Inhalt des Registers DNR nochmals um 1 erhöht usw. bis zu dem Wert Q, der der Anzahl von mit der Gerätesteuerung PCU verbundenen Gattern entspricht (Q=n+p, wobei ρ die Anzahl von PSZ-Gattern ist, die von 0 bis p— 1 numeriert sind, und wobei π die Anzahl von DA /-Gattern ist, die von ρ bis ρ+η— 1 numeriert sind). Wenn eine wartende Task EV2 für einen Wert DNR <p—\ vorhanden ist, so gehört diese Task EV2 zu einem PSAGatter.
Das entsprechende Mikroprogramm wird dann in dem Schritt 1316 ausgelöst und durch den Befehl TER- MINATE beendet, dessen Konsequenzen in dem Diagramm von F i g. 17 dargestellt sind, in welchem der Anfangsschritt die Nummer 1700 trägt. Wenn eine Task EV2 für einen Wert p< DNR<p+n— 1 wartet gehört diese Task EV2 zu einem D,4/-Gatter: das entsprechende Mikroprogramm wird dann ausgelöst wenn das Bit E des Peripheriegeräteanschlußsteuerblocks DACB nicht gleich 1 ist, d. h. wenn die Task EV2 des entsprechenden Peripheriegeräteanschlusses DA nicht maskiert ist. Wenn das Bit E = 1 ist, kehrt das Mikrobetriebssystem MI0S zu dem Schritt 1307 zurück, der Inhalt des Registers DNR wird um 1 erhöht und die Abtastung der Tasks EV2 wird wiederaufgenommen. Wenn das Bit E=O ist, geht das Mikrobetriebssystem MIOS zu dem Schritt 140Oi von F i g. 14 über.
Wenn keine Task EV2 vorhanden ist geht das Mikrobetriebssystem MI0S zu dem Schritt 1309 über und überprüft, ob der Inhalt der Schlange der Bereit-Zustände mit dieser Stufe nicht leer ist. Zu diesem Zweck überprüft sie in der dieser Stufe entsprechenden Tabelle des Dispatchers (vgl. F i g. 8), ob der Inhalt RQHPdes Wortes 1 der Tabelle des Dispatchers mit dieser Stufe auf sich selbst hinweist, d. h. daß die Schlange leer ist Wenn die Schlange nicht leer ist gibt das Mikrobetriebssystem MIOS den Block AiCS ab, der am Kopf der Schlange der Bereit-Zustände mit dieser Stufe ist und löst die gewöhnliche Task aus, die dem Schritt 1500 entspricht (vgl. Fig. 15). Wenn die Schlange leer ist geht das Mikrobetriebssystem MIOS zu dem Schritt 1310 über, um zu überprüfen, ob eventuell ein Block AiCS in der Schlange der Bereit-Zustände mit der Stufe 3 vorhanden ist. Von der Stufe 3 bis zur Stufe 7 (oder 2"—1) arbeitet das Mikrobetriebssystem MIOS für jede Stufe JV in folgender Weise. In dem Schritt 1311 überprüft es das Bit S, welches in dem Wort 3 der Tabelle des Dispatchers mit der Stufe JV von F i g. 8 vorhanden ist. Wenn S = 1 ist bedeutet das, daß die Task mit der Stufe N zwar begonnen, aber nicht beendet worden ist. In diesem Fall geht das Mikrobetriebssystem MIOS zu dem Schritt 1600 (vgl. Fig. 16) über, d. h. Rückkehr zu der
so unterbrochenen Task, Wenn B = 0 ist: wird das Wort RQHP des ersten Worts der Tabelle des Dispatchers mit dieser Stufe getestet Wenn die Schlange der Bereit-Zustände (mit der Stufe JV) leer ist geht das Mikrobetriebssystem MIOS zu der Stufe JV+1 über, Schritt
1313. Wenn sie nicht leer ist wird die gewöhnliche Task, die dem ersten Block AiCS in der Schlange der Bereit-Zustände mit dieser Stufe entspricht in dem Schritt 1500 ausgelöst Diese Prozedur wird bis zu der Stufe N — 2"— 1 fortgesetzt Wenn das Mikrobetriebssystem MIOS keinen bereiten Block AiCS auf irgendeiner der Stufen gefunden hat kehrt es zu dem Schritt 1300 zurück und der Dispatcher wird wieder ausgelöst (Schritt 1314).
Fig. 14 ist ein Diagramm, welches den Auslösemechsnismus einer Task EV2 zeigt Das Auslösen einer Task EV2 beginnt mit dem Schritt 1400. Das Mikrobetriebssystem MIOS sucht ausgehend von dem Wert DNR, den es berechnet hat (Schritt 1307), die Start-
adresse MSA2 der Task EV2 in dem entsprechenden Peripheriegeräteanschlußsteuerblock (Wort 2 des Blocks DACB), Schritt 1401. Dann sucht es die Adresse der Arbeitszone WZA2 in dem Wort 3 des entsprechenden Blocks DACB, um sie in das nicht dargestellte Registerpaar R4R5 der unteren Registerbank der Doppelregisterbank 210 von F i g. 2 zu laden. Schritt 1402. In dem Schritt 1403 wird das Bit L des Wortes CPCW auf 1 gesetzt, um anzuzeigen, daß die Task, die ausgelöst wird, eine Task der Stufe 2 ist. In dem Schritt 1404 testet das Mikrobetriebssystem MI0S das Bit P des Wortes CPCW. Wenn P=O ist, war vor der Unterbrechung keine Task in der Ausführung begriffen und das Mikrobetriebssystem MI0S geht zu dem Schritt 1406 über. Bei P = J werden in dem Schritt 1405 die Inhalte der Register der unterbrochenen Task mit niedrigerer Priorität in der ihrer Stufe entsprechenden Tabelle des Dispatchers aufbewahrt (vgl. Fig.8). In dem Schritt 1406 wird das Bit D auf Null gesetzt, das Bit P wird in dem Schritt 1407 auf 1 gesetzt und die Stufe der Task, die in der Ausführung begriffen sein wird, wird in dem Schritt 1408 in die Zone NPCdes Wortes CPOVübertragen.
In dem Schritt 1409 wird das Bit B in der dieser Stufe entsprechenden Tabelle des Dispatchers auf 1 gesetzt, um anzuzeigen, daß die Task in der Ausführung begriffen ist. In dem Schritt 1410 wird die Kippschaltung 217 (Kippschaltung UL) von F i g. 2 auf Null rückgestellt und die Task EV2 wird in dem Sdiriii 1411 ausgelöst.
F i g. 15 ist ein Diagramm, welches die Schritte zeigt, die für das Auslösen einer gewöhnlichen Task der Stufe N erforderlich sind. Der Start ist der Schritt 1500. In dem Schritt 1501 wird die Task der Schlange der Bereit-Zustände entnommen, das Bit RQ des entsprechenden Task-Steuerblocks AiCS wird dann auf Null rückgesetzt In dem Schritt 1502 wird das Byte YREDYin dem Block MCB auf Null rückgestellt, der folgende Zustand dieser Task wird dann »nicht geplant«. In dem Schritt 1503 überprüft das Mikrobetriebssystem MIOS den Zustand des Bits 5 in dem entsprechenden Block DACB. Wenn S = 1 ist, wird der Peripheriegeräteanschluß gehalten, die Task wird gelöscht und das Mikrobetriebssystem MIOS kehrt zu dem Schritt 1315 zurück und die Prozedur von Fig. 13 wird von dem Schritt 1312 an wiederaufgenommen. Wenn das Bit S = 0 ist, wird die Nummer des DAAGatters, die in dem Byte 1 des Blocks MCB gefunden wird, in dem Schritt 1504 in das Register DNR geladen. Wenn es sich um eine Task der Stufe 2 handelt, führt der Test in dem Schritt 1505 zu dem Schritt 1411 und die Prozedur von F i g. 14 wird in dem Schritt 1403 ausgelöst.
Wenn die Task nichi der Siüfe 2 angehört, kehrt das Mikrobetriebssystem MlOS zu dem Schritt 1412 zurück und die Prozedur von F i g. 14 wird in dem Schritt 1404 ausgelöst
Fig. 16 ist ein Diagramm, welches die Schritte zeigt, die für die Rückkehr zu einer unterbrochenen Task erforderlich sind. Der Start der Prozedur ist in dem Schritt 1600 dargestellt In dem Schritt 160! testet das Mikrobetriebssystem M10S das Bit P des Wortes CPCW. Wenn P=I ist, ist die Task, die unterbrochen worden ist durch ein Γ/AifÄ-Ereignis EV\ unterbrochen worden, ihre Register werden nicht gelöscht und es erfolgt ein direkter Übergang zu dem Schritt 1603. Wenn P=O ist heißt das, daß die Task mit der höheren Priorität die die betreffende Task unterbrochen hatte, durch den Befehl TERMINATE beendet worden ist; der Inhalt der Register der unterbrochenen Task wird ausgehend von der Schutzzone der dieser Stufe entsprechenden Tabelle des Dispatchers in Ausgangsstellung gebracht; die Rückkehradresse wird in Ausgangsstellung gebracht. Das Bit D wird in demSchritt 1603 auf 0 gesetzt. Das Bit P wird auf 1 gesetzt und das Byte NPC des Wortes CPCW wird auf den entsprechenden Wert der Task gesetzt, die unterbrochen worden ist und die wieder ausgelöst wird.
Die Kippschaltung UL wird auf Null gesetzt. Die Rückkehr zu der unterbrochenen Task wird in dem Schritt 1604 ausgeführt (ihr vorhandener Ausführungszustand ist erneut »in der Ausführung begriffen«).
In F i g. 3 ist gezeigt worden, daß der Übergang einer Task von einem Zustand in einen anderen mit Hilfe von Mikrobefehlen erfolgt. Die Fig. 17 bis 20 geben genau die Aktionen an, die durch die Mikrobefehle hervorgerufen werden.
Fig. 17 ist ein Diagramm, welches die Prozedur zeigt, die durch den Mikrobefehl TERMINA TEm dem Schritt 1700 gesteuert wird. Die Bits P, M und L des Wortes CPCW werden in dem Schritt 1701 auf Null gesetzt. In dem Schritt 1702 wird das Bit B in der der Task der Stufe N entsprechenden Tabelle des Dispatchers auf Null gesetzt, die ihre Arbeit mit dem Befehl TERMINATE beendet hat. In dem Schritt 1704 wird die in der Ausführung begriffene Task aufgegeben und das Mikrobetriebssystem MIOS führt bei 1300 eine unbedingte Verzweigung zu dem ersten Schritt des Dispatchers aus.
Fig. 18 ist ein Diagramm, weiches die Prozedur zeigt, die durch den Mikrobefehl ACTIVATE in dem Schritt 1800 gesteuert wird. Der Schritt 1801 besteht darin, das Bit RQ zu testen. Wenn RQ - 1 ist, befindet sich der Block MCB bereits in der Schlange der Bereit-Zustände und das Mikrobetriebssystem Ai/0Sgeht direkt zu dem Schritt 1807 über. Wenn RQ = 0 ist, testet das Mikrobetriebssystem M10S das Bit TQ. Wenn TQ = 1 ist, wird der Block MCB in dem Schritt 1803 aus der TIMER-Warteschlange ausgegeben, das Bit TQ wird in dem Schritt 1804 auf Null zurückgestellt und in dem Schritt 1805 geht der Block MCB in die Warteschlange der Bereit-Zustände. Die Bits RQ und F (flag) werden in dem Schritt 1806 auf 1 gesetzt In dem Schritt 1807 wird das Bit 1 des Feldes YREDYauf 1 gesetzt, um anzuzeigen, daß der Block MCB aktiviert ist. Wenn in dem Schritt 1802 des Bit TQ den Wert 0 hätte, befände sich der Block MCB'm keiner Warteschlange und das Mikrobetriebssystem MI0S geht zu dem Schritt 1805 über, der Block MCB wird direkt in die Warteschlange der Bereit-Zustände gebracht. Der Schritt 1808 gibt das Ende der Prozedur und die Rückkehr zu der in der Ausführung begriffenen Task an, die den Mikrobefehl ACTI-
F i g. 19 zeigt die Aktionen, die durch einen Mikrobefehl SUSPENDm dem Schritt 1900 hervorgerufen werden. In dem Schritt 1901 testet das Mikrobetriebssystem MIOS den Zustand des Bits TQ des Blocks MCB. Wenn TQ = 1 ist, wird der Block MCB aus der TIMER-Warteschlange abgegeben. Wenn nicht, prüft das Mikrobetriebssystem MIOS in dem Schritt 1903, ob der Block MCB in der Warteschlange der Bereit-Zustände ist.
Wenn ja, wird der Block Λ/CS in dem Schritt 1904 aus der Warteschlange der Bereit-Zustände abgegeben.
Wenn nein, heißt das, daß der Block AiCS nicht geplant war, und die Prozedur wird angehalten.
F i g. 20 zeigt die Aktionen, die in einem Schritt 2000 durch einen Mikrobefehl RQT0 hervorgerufen werden. Der Schritt 2001 besteht darin, das Bit RQ des Blocks AiCS zu testen. Wenn RQ = 1 ist. war der Block MCB bereits in der Warteschlange der Bereit-Zustände. der
Mikrobefehl RQT0 hat in diesem Fall keine Auswirkung und die Prozedur wird angehalten — Schritt 2002.
Wenn RQ = 0 ist, geht das Mikrobetriebssystem MIOS zu dem Schritt 2003 über, der darin besteht, das Bit TQ zu testen. Wenn TQ « 1 ist, befindet sich der Block MCB in der Γ/ΛίΕΛ-Warteschlange und der Block MCB wird in dem Schritt 2004 aus der TIMER-Warteschlange abgegeben, damit TOAf in dem Wort 6 wieder auf den neuesten Stand gebracht wird, und wird wieder in die TIMER-Warteschlange in der dem neuen Wert von TOAi entsprechenden Reihenfolge eingereiht. Wenn TQ = 0 ist, wird der Block MCB in dem Schritt 2005 in die T/MfÄ-Warteschlange eingereiht, seine Weckzeit wird in der Zone TOM des Wortes 6 des Blocks MCB in dem Schritt 2006 angegeben und das Bit TQ wird auf 1 gesetzt; in dem Schritt 2007 werden die Aktionen beendet.
Die Fig.21 bis 24 zeigen die Aktionen, die während der Ausführung der Maskierungs- und Demaskierungsmikrobefehle hervorgerufen werden.
Fig.21 zeigt die Maskierung sämtlicher Tasks, bei welchen es sich nicht um die Task EV\ handelt. Dafür wird das Bit M des Wortes CPCW in dem Schritt 2101 auf 1 gesetzt (die Task wird dann vorübergehend als Task der Stufe 2 angesehen, die somit nicht durch eine andere gewöhnliche Task unterbrochen werden kann — vgl. die Task mit Priorität in F i g. 12).
F i g. 22 zeigt die entsprechende Demaskierung. Dafür wird das Bit M des Wortes CPCW in dem Schritt 2201 auf 0 gesetzt.
F i g. 23 zeigt die Maskierung einer Task EV2 des Peripheriegeräteanschlusses entsprechend dem Firmwaresystem AFP, welches diesen Mikrobefehl ausgeführt hat. Zu diesem Zweck wird das Bit £des Blocks DACB entsprechend dem Inhalt des Registers DNR in dem Schritt 2301 auf 1 gesetzt.
Fig.24 zeigt die entsprechende Demaskierung; für diesen Zweck wird das Bit Fin dem Schritt 2401 auf Null gesetzt.
Fig.25 zeigt die Aktionen, die durch den Mikrobefehl STDA hervorgerufen werden, um alle Operationen in einem Peripheriegeräteanschluß anzuhalten. In dem Schnitt 2501 wird das Bit S des Wortes 6 des Blocks DACB auf 1 gesetzt, um anzuzeigen, daß der entsprechende Peripheriegeräteanschluß abgetrennt ist und daß es an diesem Peripheriegeräteanschluß keine Operationen mehr geben wird. Das Mikrobetriebssystem MIOS liest in dem Wort CPCW, welcher Stufe die Task angehörte, die in der Ausführung begriffen war, indem es den Inhalt der Zone NPCliest.
Die folgenden Schritte 2503, 2504, 2505, 2506 bestehen darin, die unterbrochenen Tasks der Stufe N+1 zu suchen, die zu dem Peripheriegeräteanschluß gehören, und das Bit B der Tabelle des Dispatchers der diesem Peripheriegeräteanschluß entsprechenden Stufe N+\ auf Null rückzustellen. Die Operation wird dann für alle anderen Stufen bis zu der Stufe 7 oder 2n— 1 fortgesetzt Wenn in dem Schritt 2504 N größer ist als 7 oder 2"—1 und wenn die Kippschaltung UL in dem Zustand 1 ist, was bedeutet, daß eine Task EV1 die Ausführung verlangt hat, geht das Mikrobetriebssystem MI0S zu dem Schritt 1219 — Eintragung in den Dispatcher — über, wenn nicht, geht das Mikrobetriebsystem M/05 zu dem Schritt 1700 über und beendet durch den Befehl TER MIN A TEdie Task, die die Ausführung verlangt hat.
Es ist durch diese Anordnung zu erkennen, daß alle Tasks, die in der Ausführung begriffen oder unterbrochen waren (diejenigen, die das Bit S=I für diesen Peripheriegeräteanschluß hatten), sofort beseitigt werden. Weiter oben ist gezeigt worden, daß die anderen Tasks (diejenigen, die in den Warteschlangen RQ und TQ waren) in dem Zeitpunkt ihrer Auslösung beseitigt werden (vgl. Schritt 1503).
Die Beschreibung, die von der Hardware/Firmware-Anordnung nach der Erfindung gegeben worden ist, ist nur ein Aspekt von möglichen Ausführungsformen und es ist klar, daß sich dem Fachmann im Rahmen der Erfindung weitere Ausführungsmöglichkeiten bieten.
Glossar
Firmware:
Anordnung, die hauptsächlich aus einem Speicher, der beim Lesen nicht gelöscht wird, oder Festspeicher und seinen zugeordneten Schaltungen besteht, der zum Speichern der Mikroprogramme für die Steuerung der sich wiederholenden Funktionen dient, wie beispielsweise zur Steuerung der Peripheriegeräte.
Hardware:
umfaßt alle räumlichen Bestandteile des Rechners, unabhängig davon, welches Gerät, Organ oder welehe Anordnung benutzt wird.
Bit:
bezeichnet eine Binärziffer.
Byte:
bezeichnet eine Binärziffer, die aus mehreren Bits besteht.
DA:
Abkürzung des angelsächsischen Ausdrucks »Device Adapter«; Bezeichnung für einen Geräteanschluß.
DAI:
Abkürzung des angelsächsischen Ausdrucks »Device Adapter interface«: Bezeichnung für eine Geräteanschlußschnittstelle.
PSI:
Abkürzung des angelsächsischen Ausdrucks »Peripheral Subsystem interface«: Bezeichnung für eine Schnittstelle zwischen der Gerätesteuerung und dem Eingabe/Ausgabe-Steuerungssystem der Zentraleinheit.
MPU:
Abkürzung des angelsächsischen Ausdrucks »Multiprocessing peripheral unit« oder mikro programmierte Einheit für die Steuerung der Peripheriegeräte.
/CLi:
Abkürzung des angelsächsischen Ausdrucks »Interface control unit«; Bezeichnung für eine Schnittstelle zwischen der Verarbeitungseinheit MPU und verschiedenen PSI- und D/U-Schnittstellen.
Assemblage:
Verfahren, das darin besteht, die Teile ein und desselben Programms oder von mehreren Programmen, die zusammen oder aufeinanderfolgend ausgeführt werden sollen, zusammenzufassen.
Dispatcher:
Task-Zuteiler.
Digitalkanal:
Die Zugriffsart, die benutzt wird, um eine Eingabe/ Ausgabe-Operation zwischen der Zentraleinheit und einem Peripheriegerät auszuführen, wird als Kanal bezeichnet Der Kanal besteht aus einem räumlichen Kanal, welcher die Hardware-Hilfsmittel zum Verbinden des Eingabe/Ausgabe-Steue-
27 28
rungssystems der Zentraleinheit mit dem Peripheriegerät enthält, und aus einem Digitalkanal, welcher die Gesamtheit der Mittel umfaßt, die zum Ausführen einer Eingabe/Ausgabe-Operation erforderlich sind. Die Eingabe/Ausgabe-Operation ist durch ein Kanalprogramm festgelegt. Der Digitalkanal kann gleichzeitig nur ein einziges aktives Kanalprogramm haben. Die Nummern von Digitalkanälen können von dem Kanal benutzt werden, um die Speicherung der verlangten Parameter zu dirigieren und um eine gleichzeitige Ausführung einer Anzahl von Kanalprogrammen aufrechtzuerhalten. Unter dem Gesichtspunkt der Software werden die Geräte durch eine Eingabe/Ausgabe-Steuerungssystem-Nummer, eine Nummer des is räumlichen Kanals und eine Digitalkanalnummer bezeichnet Ein Kanalprogramm ist einem Gerät zugeordnet. Den Geräten werden Nummern von Digitalkanälen für Perioden der Konfiguration des Systems zugeordnet oder wenn dem System ein Gerät hinzugefügt ist. Es kann mehr als einen Digitalkanal pro Gerät geben. Der Digitalkanal kann ab dem Zeitpunkt als aktiv angesehen werden, in welchem das Kanalprogramm durch einen Software-Befehl initialisiert wird, bis zu seiner Beendigung. 2s ABBRUCH-UrsAche:
Das sofortige Anhalten der gerade mit einem Peripheriegerät ablaufenden Operationen kann durch irgendeinen der Bestandteile des Systems gefordert werden (die SW in der CPU oder die FW in der PCU oder die WlVder CPU oder der PIVJi
Hierzu 14 Blatt Zeichnungen
35
40
45
55
60
65

Claims (15)

Patentansprüche:
1. Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks (Steuerprogramme) für mehrere und verschiedene Peripheriegeräte, bei der eine Gerätesteuerung (PCU) einer Datenverarbeitungsanlage mit einer zentralen Datenverarbeitungseinheit (CPU) über eine Ein/Ausgabe-Schnittstelle (PSI) verbunden ist und außerhalb der zentralen Datenverarbeitungseinheit (CPU) angeordnet ist, wobei ein Taskunterbrechungsmechanismus verwendet wird, bei welchem sehr vorrangige Tasks, die bei der Ankunft von Unterbrechungssignalen (EVX, EV2) initiiert werden und durch andere Tasks nicht adressierbar sind, weniger vorrangige gewöhnliche Tasks unterbrechen, welche durch andere Tasks adressierbar sind, dadurch gekennzeichnet, daß die Gerätesteuerung (PCU) einen von der zentralen Datenverarbeitungseinheit (CPU) unabhängigen Prozessor (200,233,234,235,236) bildet, der gegenüber der zentralen Datenverarbeitungseinheit (CPU) im Masterbetrieb arbeitet, und einen Speicher (202) enthält, in den für die Tasks Mikroprogramme und folgende Steuerblöcke eingetragen sind: ein Steuerblock (CPCW) zum Kennzeichnen des Zustands der Task, die in der Ausführung begriffen ist, Tasksteuerblöcke (MCB) zur Steuerung der gewöhnlichen Tasks, die den Zustand jeder gewöhnlichen Task angeben, Peripheriegerätesteuerblöcke (DACB) für die Steuerung der sehr vorrangigen Tasks sowie eine Gruppe von Steuerblöcken, die Tabellen von Parametern enthalten, weicne für eine Task-Zuteilung erforderlich sind.
2. Anordnung nach Anspruch 1, dadurch gekennzeichnet, daß j^der Tasksteuerblock (MCB) zur Steuerung von gewöhnlichen Tasks jede zugeordnete gewöhnliche Task durch drei mögliche Zustände mit Hilfe von Bits TQ und RQ kennzeichnet, wobei RQ= 1 bedeutet, daß die Task vorübergehend im Wartezustand im Innern einer Warteschlange (Tl-MER-Warteschlange) ist, wobei TQ= 1 bedeutet, daß die Task vorübergehend in dem Bereitzustand ist und daß sie in eine Warteschlange der Bereitzustände eingereiht ist, und wobei TQ-O und RQ=O bedeuten, daß kein Zustand für diese Task vorgesehen ist.
3. Anordnung nach den Ansprüchen 1 und 2, dadurch gekennzeichnet, daß jeder Tasksteuerblock (MCB) zur Steuerung von gewöhnlichen Tasks ein Kennzeichen-Wort (TOM) enthält, welches die Weckzeit der zugeordneten Task für ihre Einreihung in die Warteschlange der Bereitzustände angibt, die ihrer Prioritätsstufe entspricht, und daß die Einreibung mit Hilfe von Kennzeichen-Wörtern (RQHP und RQTP) des Kopfes bzw. des Schwanzes der Warteschlange der Bereitzustände ausgeführt wird, die sich in der Task-Zuteilungstabelle der betreffenden Prioritätsstufe befinden, und mit Hilfe der Inhalte der Wörter (NLPund PLP), die jeden Tasksteuerblock mit dem ihm folgenden bzw. mit dem vorangehenden Block verbinden.
4. Anordnung nach Anspruch 1, dadurch gekennzeichnet, daß jeder Peripheriegerätesteuerblock (DACB) enthält: eine erste Speicherzone, die die b5 Startadresse (MSA 1) für die Ausführung des Task enthält, die zu einem Signal eines an dem betreffenden Peripheriegeräteanschluß eingetretenen Ereignisses (EVi) gehört; eine zweite Speicherzone, die das Kennzeichen einer Arbeitsspeicherzone (WZA 1) für die Ausführung des Task enthält, die dem Ereignis (EVt) entspricht; eine dritte Speicherzone, die die Startadresse (MSA 2) für die Ausführung der Task enthält, die zu einem Signal eines weiteren Ereignisses (EVt) gehört, welches an dem entsprechenden Peripheriegeräteanschluß eingetreten ist; eine vierte Speicherzone, die das Kennzeichen einer Arbeitsspeicherzone (WZA 2) für die Ausführung der Task enthält, die dem weiteren Ereignis (EV2) entspricht; eine fünfte Speicherzone, die die Nummer (FLC) des Digitalkanals enthält, der dem Peripheriegeräteanschluß zugeordnet ist, sowie die maximale Anzahl (LCNB) von Digitalkanälen, die mit dem Anschluß verbunden sind: und eine sechste Speicherzone, die die Bits E und S des Zustands des Peripheriegeräteanschlusses enthält, wobei das Bit E= 1 bedeutet, daß alle weiteren Ereignisse (EV2), die an dem Peripheriegeräteanschluß vorkommen könnten, maskiert sind, und wobei das Bit S= 1 bedeutet daß alle Operationen an diesem Peripheriegeräteanschluß angehalten sind.
5. Anordnung nach Ansprüchen 1, 3 und 4, dadurch gekennzeichnet, daß der Speicherblock (CPCW) zum Kennzeichnen des Zustands der Task, die :n der Ausführung begriffen ist, enthält: ein Wort (NPC) mit η Bits, welches die Prioritätsstufe der in der Ausführung begriffenen Task angibt, wobei die gewöhnlichen Tasks 2n—2 Prioritätsstufen haben und wobei die Tasks, die den Ereignissen EV\ entsprechen, die Prioritätsstufe 1 und diejenigen, die den weiteren Ereignissen EV2 entsprechen, die weiteren Prioritätsstufen haben; ein Bit M für eine maskierte Sequenz, welches, wenn es Eins ist, die in der Ausführung begriffene Task vorübergehend auf die Prioritätsstufe 2 bringt; ein Bit D, welches, wenn es Eins ist, angibt, daß die Speicherblöcke abgefragt werden, welche die Task-Zuteilungstabellen enthalten; ein Bit P; welches angibt, daß eine Task in der Ausführung begriffen ist; und ein Bit F, welches angibt, daß eine Task in eine Warteschlange der Bereit-Zustände eingereiht ist.
6. Anordnung nach einem der Ansprüche 1 bis 5, gekennzeichnet durch mehrere PeriDheriegeräteanschlüsse (DAI)und durch einen Zeitgeber(230), welche sehr vorrangigen Ereignissen entsprechende Signale (EV]) liefern, die zu den Eingängen eines ODER-Gliedes (220) übertragen werden, um in einer Verarbeitungseinheit (MPU) der Gerätesteuerung ein Signal (EV\s) zur sehr vorrangigen Unterbrechung zu erzeugen, und zu den Eingängen eines Codierer (221) übertragen werden, der an seinem Ausgang in Binärform die Nummer der Einheit mit der höchsten Priorität abgibt, welche das Signal (EV)) ausgesandt hat, wobei der Ausgang des Codierers mit den Eingängen eines Registers (DNR) verbunden ist, in welchem das Resultat der Codierung gespeichert wird, damit es durch die Verarbeitungseinheit (MPU)(Hr die Berechnung der Adresse des entsprechenden Peripheriegerätesteuerblocks (DACB) wieder verwendet werden kann.
7. Anordnung nach Anspruch 6 dadurch gekennzeichnet, daß jeder Peripheriegeräteanschluß (DAI) und die Ein/Ausgabe-Schnittstelle (PSI) jeweils ein Signal (EVi) liefert, wenn sie durch einen mit dem Register (DNR) verbundenen Decoder (222) ausgewählt werden und wenn eines der weiteren Ereignis-
se (EVj) an dem entsprechenden Anschluß eintritt, wobei die Auswahl von der Verarbeitungseinheit (MPU) aus erfolgt, indem bei jedem Auswahlzyklus der Inhalt des Registers (DNR) beginnend mit dem Wert 0 bis zu dem Wert N~ 1 um Eins erhöht wird (wobei TV die Anzahl von mit der Gerätesteuerung verbundenen Einheiten DAl, PSI ;»t), und wobei die Signale (EV2) zu den Eingängen eines ODER-Gliedes (224) übertragen werden, dessen Ausgang an die Verarbeitungseinheit (MPU) ein Unterbrechungssignal (EV2s) abgibt, wenn der Inhalt des Registers (DNR) ein Signal (EV2) an einem der Peripheriegeräteanschlüsse (DAI) oder der Ein/Ausgabe-Schnittstelle (PSI) ausgewählt hat
8. Anordnung nach Anspruch 6, dadurch gekennzeichnet, daß jeder Tasksteuerblock (MCB) eine Speicherzone (DA), die die Nummer des dem Tasksteuerblock entsprechenden Peripheriegeräteanschlusses angibt, eine Speicherzone (ARSA), die die Startadresse der zugeordneten Task angibt, eine Speichezone (ABWZA), die die Adresse der Arbeitszone festlegt, welche für die Ausführung der Task erforderlich ist, und eine Speicherzone (YREDY) enthält, die die Gründe bestimmt, aus denen eine Task in die Warteschlange der Bereitzustände eingereiht worden ist.
9. Verfahren zum Betreiben einer Anordnung nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, daß jegliches Signal (EV\), welches an einem Peripheriegeräteanschluß erscheint, bewirkt, daß ein Register (DNR) durch eine Verarbeituiigseinheit (MPU) der Gerätesteuerung (PCU) gelesen wird, wobei das Register (DNR) die Nummer des Peripheriegeräteanschlusses enthält, an welchem das Signal (EVi) erschienen ist, und die Bezeichnung des entsprechenden Peripheriegerätesteuerblocks, in welchem sich die Startadresse (MSA 1) der Task befindet, die dem Ereignis zugeordnet ist, welches ein genanntes Signal (EVi) erzeugt hat.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß ein genanntes Signal (EV\), welches während des Eintritts eines sehr vorrangigen Ereig-
wird, das Auslösen der dem Ereignis entsprechenden Task bewirkt, und daß ein genanntes periodisches Signal (EVi), welches aus dem Zeitgeber (230) stammt, das Fortschreiben der 77M£/?-Warteschlange durch die Verarbeitungseinheit bewirkt, die den Inhalt einer Speicherzone (TQHP) liest, wenn der Inhalt der Speicherzone nicht leer ist, während die Verarbeitungseinheit den Inhalt des Kennzeichen-Wortes (TOM) in dem ersten Tasksteuerblock (MCB)) zu der 77M£/?-Warteschlange liest und aus der Warteschlange die Task abgibt, wenn der Inhalt des Kennzeichen-Wortes (TOM)\zzr ist, indem sie in dem entsprechenden Tasksteuerblock das Bit RQ in den Zustand 1 setzt, um anzuzeigen, daß die genannte Task in die Warteschlange der Bereitzustände gebracht worden ist, worauf die Verarbeitungseinheit die Bits F und T auf Eins setzt, und zwar in dem Speicherblock, welcher den Zustand der Task enthält, die in der Ausführung begriffen ist, um anzuzeigen, daß eine Task soeben in die Warteschlange der Bereitzustände gegangen ist, und in dem Wort YRE- DY, welches in der letzten Speicherzone des Task-Steuerblocks (MCB) enthalten ist, um anzuzeigen, daß diese Task durch das Signal (EV\) des Zeitgebers in die Warteschlange der Bereitzustände gebracht worden ist
11. Verfahren nach den Ansprüchen 9 und 10, dadurch gekennzeichnet, daß das Signal (EVx) des Zeitgebers bewirkt, daß durch die Verarbeitungseinheit die Bits D, L und Aides Speicherblocks (CPCW)zum Kennzeichen des Zustands der Task gelesen werden, die in der Ausführung begriffen ist, wobei, wenn die Bits D, L oder M in dem Zustand 1 sind, das heißt wenn die Task die Prioritätsstufe 2 hat bzw. vorübergehend der Prioritätsstufe 2 angehört, die Task vorrangig ist und wieder ausgelöst wird, und andernfalls die Task nicht vorrangig ist und die Verarbeitungseinheit den Zustand des Bits Fliest, und wenn das Bit F= 1 ist, zumindest eine Task, die gewartet hatte, in den Bereitzustand versetzt wird, wobei die Priorität tier in der Ausführung begriffenen Task wieder in Frage gestellt wird, während die Verarbeitungseinheit dann die Task-Zuteilung auslöst, um die Leitungen (EV2) der Peripheriegeräteanschlüsse und gegebenenfalls die verschiedenen Warteschlangen der Bereitzustände für jede Prioritätsstufe abzutasten.
12. Verfahren nach den Ansprüchen 9 und 10, dadurch gekennzeichnet, daß zur Task-Zuteilung in einem ersten Schritt festgestellt wird, ob ein Signal (EV2) an einem Peripheriegeräteanschluß wartet, dann, indem aufeinanderfolgend der Inhalt des Registers (DNR) ab dem Wert 0 um Eins erhöht wird, gegebenenfalls bis zu dem Wert Q, festgestellt wird, an welchem Peripheriegeräteanschluß das Signal (EV2) erschienen ist; wenn das erste Signal (EV2) gefunden ist, der Zustand des Bits Ein dem Peripheriegeräteanschlußsteuerblock (DACB) überprüft wird; wenn £=0 ist, die diesem Ereignis (EV2) entsprechende Task ausgelöst wird; wenn E= I ist, die Task nicht ausgelöst, der Inhalt des Registers (DNR) um Eins erhöht und das vorgenannte Verfahren wieder aufgenommen wird, bis der Inhalt des Registers (DNR) den Wert Q erreicht; wenn in diesem Schritt das Signal (EV2) nicht an dem entsprechender. Peripheriegeräteanschluß vorhanden ist in dem Speicherblock, welcher die Tabellen zur Taskzuteilung enthält, geprüft wird, ob zumindest eine Task in der Tabelle der Prioritätsstufe 2 vorhanden ist indem der Inhalt des Zeigers (RQHP)gesucht wird, der auf die Task hinweist, die sich am Kopf der Warteschlange auf dieser Prioritätsstufe befindet, und diese Task ausgelöst wird; wenn der Zeiger auf sich selbst zeigt, auf dieser Stufe keine Task vorhanden ist; es geprüft wird, ob nicht in der Task-Zuteilungstabelle eine Task der Prioritätsstufe 3 vorhanden ist; die vorhergehende Operation mit der Prioritätsstufe 3 wieder aufgenommen wird, usw. für jede Prioritätsstufe bis zu der Prioritätsstufe 2n— 1, wobei η die Abmessung in Bits des Stufenkennzeichen-Bytes ist, sofern auf irgendeiner Prioritätsstufe keine Task gefunden worden ist; wenn auf irgendeiner Prioritätsstufe das Bit B der Task-Zuteilungstabelle, die dieser Prioritätsstufe entspricht, in dem Zustand 2 angetroffen wird, eine Task auf dieser Prioritätsstufe unterbrochen und durch die Verarbeitungseinheit sofort wieder ausgelöst wird; wenn in dem Schritt des Lesens der Prioritätsstufe 2"— 1 keine Task auf dieser Stufe vorhanden ist, die Task-Zuteilung zu dem ersten Schritt der Auswahl eines Signals (EVi) zurückkehrt.
13. Verfahren nach einem der Ansprüche 9 bis 11, dadurch gekennzeichnet, daß die Startadresse (MSA 2) einer Task (EVj) in der Verarbeitungsein-
2ί> 07 405
riegeräts, bis der letzte Steuerbefehl ausgeführt worden ist. Die Initialisierung einer Übertragung von Informationen kann auch in der anderen Richtung stattfinden. Die Peripheriegeräte geben dann Dienstanforderungen ab. Die Zentraleinheit stellt unter sämtlichen Dienstanforderungen diejenige mit der höchsten Priorität fest. Wenn dieser Schritt beendet ist, wird die Verbindung zwischen dem Peripheriegerät mit der höchsten Priorität und der Zentraleinheit hergestellt. Das Peripheriege-
heit aus dem Inhalt des sich in der Verarbeitungsein· heit befindenden Registers (DNR) erhalten wird, der das Berechnen der Adresse des entsprechenden Peripheriegeräteanschlußsteuerblocks (DACB)gestattet, in welchem sich die Startadresse (MSA 2) einer Task (EV2) befindet, sowie das Berechnen der für seine Ausführung erforderlichen Arbeitsspeicherzonenadresse (WZA 2).
14. Verfahren nach einem der Ansprüche 9 bis. 11,
dadurch gekennzeichnet, daß zum Auslösen einer io rät gibt dann eine Übertragungsanforderung ab, die ängewöhnlichen Task der Prioritätsstufe Ndie Verar- gibt, ob es sich um eine Eingabe- oder Ausgabeübertragung handelt. Die Übertragung wird ausgeführt und es können sich an sie weitere Übertragungen anschließen oder nicht. Das Ende der Austauschvorgänge wird 15 durch ein Dienstanforderungsendesignal ausgedrückt.
In einer mehrfach programmierten Datenverarbeitungsanlage, welche mehrere Peripheriegeräte enthält, erfolgt die Verkettung der Eingabe/Ausgabe-Operationen durch einen Mechanismus von Unterbrechungen. Die Unterbrechung erfolgt im allgemeinen am Ende der Ausführung einer Task in einem Peripheriegerät, obwohl es andere Unterbrechungsursachen geben kann. Wenn eine Unterbrechung festgestellt wird, ist es üblich, daß das Betriebssystem die aktiven Tasks überprüft, die bereit sind, ausgeführt zu werden. Das System übergibt dann die Steuerung der Task mit der höchsten Priorität, indem es die Arbeit genau angibt, die das Betriebssystem ausführen soll. Wenn diese Task mit der höchsten Priorität ausgeführt ist, übergibt das System die Steue-
führt, welches an einem Peripheriegeräteanschiuß 30 rung einer anderen Task, die eine höhere Priorität als wartet, die übrigen auszuführenden Tasks hat, usw. Auf den
Stufen der weniger vorrangigen Tasks sind Vorsichtsmaßnahmen getroffen, um ihnen die Steuerung des Verarbeitungssystems zu geben, wenn sie eine ausreichend lange Zeit auf ihren Ausführungszeitpunkt gewartet haben.
Die Einführung der Kanalprogramme in die Verarbeitungseinheiten (US-PS 34 00 371) erlaubt, die Zentraleinheit von dem Management der Peripheriegeräte vollkommen unabhängig zu machen. Dieses System sllcin erlaubt aber nicht das gleichzeitige Management der Peripheriegeräte. Wenn eine Task vor der Ausführung der folgenden Task beendet werden soll, können bestimmte Peripheriegeräte in bestimmten Konfigura-
beitungseinheit das Bit RQ des entsprechenden Tasksteuerblocks (MCB) auf Null rückstellt, um die Task der Warteschlange der Bereitzustände zu entnehmen, und das letzte Byte (YREDY)des Tasksteuerblocks auf Null rückstellt, woraufhin die Verarbeitungseinheit den Zustand des Bits 5 in dem entsprechenden Peripheriegerätesteuerblock (DACB) liest; wenn S= 1 ist, der entsprechende Peripheriegeriiteanschluß angehalten und die Task beendet wird, indem in der dieser Stufe entsprechenden Tabelle zur Task-Zuteilung das Bit B auf 0 gesetzt wird; wenn S=O ist, die Nummer des Peripheriegeräteanschlusses in das Register (DNR) geladen und die Task der Prioritätsstufe Λ/ausgelöst wird.
15. Verfahren nach einem der Ansprüche 9 bis 12, dadurch gekennzeichnet, daß jede Ausführung eines Task-Endes die Task-Zuteilung zu dem ersien Schritt zum Auswählen eines Signals (EV2) zurück-
DE19752507405 1974-02-20 1975-02-20 Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks für Peripheriegeräte einer Datenverarbeitungsanlage Expired DE2507405C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR7405793A FR2261565B1 (de) 1974-02-20 1974-02-20

Publications (2)

Publication Number Publication Date
DE2507405A1 DE2507405A1 (de) 1975-08-21
DE2507405C2 true DE2507405C2 (de) 1985-05-23

Family

ID=9135198

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19752507405 Expired DE2507405C2 (de) 1974-02-20 1975-02-20 Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks für Peripheriegeräte einer Datenverarbeitungsanlage

Country Status (5)

Country Link
JP (1) JPS6049936B2 (de)
DE (1) DE2507405C2 (de)
FR (1) FR2261565B1 (de)
GB (1) GB1493878A (de)
NL (1) NL7501983A (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ZA79113B (en) * 1978-01-24 1980-03-26 Plessey Handel Investment Ag Real-time data processing system for processing time period commands
JPS54144150A (en) * 1978-04-28 1979-11-10 Nec Corp Information processing system
CH637228A5 (fr) * 1980-03-27 1983-07-15 Willemin Machines Sa Dispositif de commande d'une machine ou d'une installation.
DE3176724D1 (en) * 1980-11-20 1988-06-01 Ibm A process management system for scheduling work requests in a data processing system
US5129078A (en) * 1988-08-19 1992-07-07 Groves Stanley E Dedicated service processor with inter-channel communication features
JP7171360B2 (ja) 2018-10-19 2022-11-15 伸和コントロールズ株式会社 空気調和装置、空気調和装置を具備する基板の浮上式搬送ユニット、並びに基板の浮上式搬送用空気の供給方法

Also Published As

Publication number Publication date
JPS50152636A (de) 1975-12-08
FR2261565B1 (de) 1977-09-16
NL7501983A (nl) 1975-08-22
JPS6049936B2 (ja) 1985-11-06
DE2507405A1 (de) 1975-08-21
FR2261565A1 (de) 1975-09-12
GB1493878A (en) 1977-11-30

Similar Documents

Publication Publication Date Title
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
EP0006164B1 (de) Multiprozessorsystem mit gemeinsam benutzbaren Speichern
DE1774296C2 (de) Restruktuierbare Steuereinheit für elektronische Digitalrechner
DE2856483C2 (de)
DE2209282C3 (de) Datenverarbeitungsanlage
DE2161886C2 (de) Befehlsausführungseinheit in einer elektronischen Datenverarbeitungszentrale für die gleichzeitige Verarbeitung mehrerer Befehle
DE2456578C2 (de) Datenverarbeitungsanlage
DE2839726A1 (de) Datenverarbeitungsanlage mit verteilter steuerarchitektur in einem multiprozessor-system
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE2054068A1 (de) Mit Programmverschachtelung arbei tendes Datenverarbeitungssystem zur gleichzeitigen Verarbeitung mehrerer Programme
DE2507403A1 (de) Geraetesteuerung
DE3114921C2 (de) Mikroprogramm-Speicheranordnung
DE1774870C3 (de) Einrichtung zur Adressierung einer Speicherzelle eines Speichers in einer Datenverarbeitungsanlage
DE1499206C3 (de) Rechenanlage
DE1909477A1 (de) Speichersteueranlage fuer ein Multiprogramm-Datenverarbeitungssystem
DE2507405C2 (de) Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks für Peripheriegeräte einer Datenverarbeitungsanlage
DE2364323C2 (de) Verfahren zur Behandlung von Unterbrechungsbedingungen in einer Datenverarbeitungsanlage
DE2720842C3 (de) Datenübertragungssystem
EP0010135B1 (de) Mikroprogrammgesteuerte Ein-/Ausgabeeinrichtung und Verfahren zum Durchführen von Ein-/Ausgabeoperationen
DE2359037C2 (de) Rechenanlage
DE2551793C2 (de) Indirekt gesteuerte Vermittlungsanlage, insbesondere Fernsprechvermittlungsanlage, und Verfahren zu deren Betrieb
DE2359036C2 (de) Vorrichtung zum Koppeln eines Zentralspeichers mit mehreren Rechenanlagen
EP0108416B1 (de) Vorrichtung zur Steuerung des Kanalstarts bei einer integrierten mikroprogrammierten Vorrichtung mit mindestens zwei unabhängigen Kanälen zum Handhaben von Informationen und Verfahren zu ihrem Betrieb
DE1449542C (de) Datenverarbeitungsanlage zur gleich zeitigen Ausfuhrung mehrerer Programme
DE2321232C3 (de) Schaltung zur Übertragung der Adresse einer perlpheren Einheit

Legal Events

Date Code Title Description
OGA New person/name/address of the applicant
8110 Request for examination paragraph 44
D2 Grant after examination
8364 No opposition during term of opposition