-
Die
vorliegende Erfindung hat ein Sicherungsverfahren zur Aufgabe, das
das Echtzeitausführen
von Multitasking-Anwendungen des Steuer- und Befehlstyps in einem
Steuersystem deterministisch macht, umfassend mindestens einen ersten
Taktgeber, der ein Unterbrechungssignal sendet, wenn eine einstellbare
Zeitmenge abgelaufen ist, eine zentrale Recheneinheit mit mindestens
einem Prozessor, der mindestens das Unterbrechungssignal des Taktgebers
empfangen kann, einen Hauptspeicher und eine Einheit von Controllern von
Peripheriegeräten
für die
Eingangs-Ausgangs-Steuerung des Steuersystems.
-
Bei
einem Multitasking-Verwaltungssystem verschiedener Verarbeitungen
(Eingänge-Ausgänge, Berechnungen
usw.) mit unterschiedlichen Zeitmaßstäben, die Daten austauschen
können,
mit Echtzeitsynchronisation und -Koordination aller Verarbeitungen,
ist es wünschenswert,
Verarbeitungen in Echtzeit deterministisch ausführen zu können, das heißt mit einer
Einmaligkeit und einer Invarianz des globalen Verhaltens aller Aufgaben,
die untereinander und mit der Umgebung in Wechselwirkung treten.
Es ist ferner wünschenswert, dass
das Durchführen
der Verarbeitungen in Echtzeit gesichert wird, das heißt, dass
es das Erfassen und das Absondern von Anomalien so aufweist, dass
die Unabhängigkeit
der verschiedenen Aufgaben in Bezug auf Versagensfälle sichergestellt
ist und bei Gegenwart von Betriebsanomalien gleichzeitig möglichst
deterministisch bleibt.
-
Man
kennt bereits zahlreiche Multitasking-Verwaltungssysteme. Diese
Verwaltungssysteme sind jedoch meistens asynchron und daher nicht
deterministisch. Ferner weisen solche Systeme eine Konzeption auf, die
das Ausbreiten bestimmter Ausfallsarten nicht verhindert.
-
Insbesondere
kennt man aus dem Dokument FR-A-2 771 828 ein Sicherungsverfahren
eines Multitasking-Rechners, der mit einem System zum Erfassen von
Ausfall durch zeitweiliges oder räumliches Partitionieren ausgestattet
ist, das jederzeit die Aufgabe, deren Ausführung zulässig ist, erkennt.
-
Gemäß diesem
Dokument, das ein System mit zyklischer Ablaufplanung betrifft,
wird das Partitionieren verwendet, um das Ausbreiten der Ausfälle zu beschränken, es
besteht dann aber keine Kommunikationen zwischen den Partitionen
mehr, das heißt,
dass es auf globaler Ebene keine Multitasking-Verwaltung mehr gibt.
Es existiert ferner immer noch eine Möglichkeit des Ausbreitens von
Ausfällen
innerhalb einer Partition, was es nicht erlaubt, eine maximale Absicherung
zu haben.
-
Das
Dokument FR-A-2 771 828 zeigt daher, dass das Erzielen eines Determinismus
einer Multitasking-Verwaltung zu widersprechen scheint.
-
Christophe
AUSSAGUES et al., „Guaranteeing
Timeliness In Safety-Critical Real-Time Systems" beschreibt ein Modellierungsverfahren
zum Garantieren des deterministischen Echtzeitausführens von
Multitasking-Anwendungen, das die folgenden Schritte aufweist: für jede der
Aufgaben Definieren der zulässigen
Verkettungen, die in einem Zustände-Übergänge-Graphen
ausgedrückt
werden, für
jede Aufgabe Definieren eines Anfangsknotens, ausgehend von den
Zustände-Übergänge-Graphen Aufbauen eines
SP-Graphen, der alle möglichen
Durchführungen
aller Aufgaben darstellt, und Analysieren des SP-Graphen, um zu
bestimmen, ob das deterministische Durchführen der Aufgaben garantiert
ist.
-
Die
vorliegende Erfindung zielt darauf ab, den Nachteilen des früheren Stands
der Technik abzuhelfen und es zu erlauben, über weiter integrierte, leistungsfähigere und
sicherere Steuersysteme zu verfügen.
-
Insbesondere
zielt die vorliegende Erfindung darauf ab, eine gesicherte Multitasking-Echtzeitausführung und
deterministisch durch einen Rechner mit Fehlerabsondern und Fehlertoleranz
zu erlauben.
-
Die
Erfindung zielt daher darauf ab, eine Sicherung sicherzustellen,
die einen hohen Grad an Determinismus der Echtzeitdurchführung von
Multitasking-Anwendungen sowohl für zyklische Aufgaben als für azyklische
Aufgaben mit expliziten Kommunikationen (datierte Meldungen) und
impliziten Kommunikationen (datierte Datenströme) sicherstellt.
-
Diese
Zielsetzungen werden dank eines Sicherungsverfahrens erreicht, das
die Durchführung
in Echtzeit von Multitasking-Anwendungen des Steuer- und Befehlstyps
in einem Steuersystem deterministisch macht, umfassend:
- – mindestens
einen ersten Taktgeber, der ein Unterbrechungssignal sh sendet,
wenn eine einstellbare Zeitmenge abgelaufen ist,
- – eine
zentrale Recheneinheit mit mindestens einem Prozessor, der zumindest
das Unterbrechungssignal sh des Taktgebers empfangen kann,
- – einen
Hauptspeicher und
- – eine
Einheit von Controllern von Peripheriegeräten für die Eingänge-Ausgänge-Steuerung des Steuersystems,
wobei
das Verfahren dadurch gekennzeichnet ist, daß es die folgenden Schritte
aufweist: - (a) für jede der Aufgaben einer gegebenen
Anwendung Speichern aller gestatteten Verkettungen ihrer Zeitsynchronisationspunkte,
die ein Abrufen einer Systemschicht erfordern, wobei sich diese
Verkettungen in einem Steuergraphen der Ausführung von Abrufen der Systemschicht
der betreffenden Aufgabe zeigen, wobei jeder Graph eine Einheit
von Knoten aufweist, die jeweils einem Abruf der Systemschicht des
Steuersystems entsprechen,
- (b) für
jeden Knoten des Steuergraphen jeder Aufgabe Speichern der Art des
Abrufens der Systemschicht und ihrer Abrufparameter, inklusive der
Zeitparameter, die die Aktualisierungen von Daten d(i) des „frühester Anfang" und von Daten f(i)
des „spätesten Endes" ermöglichen,
- (c) für
jede Aufgabe Speichern eines Anfangsknotens in dem zugehörigen Graphen,
- (d) für
die gegebene Anwendung und vor dem Starten der Echtzeitdurchführung gemäß einer
zeitgetakteten Betriebsart für
jede Aufgabe Initialisieren des Anfangsknotens und des Anfangszeitpunktes,
der den Anfangszustand der betreffenden Aufgabe darstellt,
- (e) für
die gegebene Anwendung und vor dem Starten der Echtzeitausführung gemäß einer
zeitgetakteten Betriebsart Initialisieren der Startreihenfolge jeder
der Aufgaben, wobei eine Vorab-Ablaufplanung der Listen der Aufgaben
im Bereich eines nuklearen Mikrokerns durchgeführt wird,
- (f) Aktivieren des ersten Taktgebers, um das Taktgeberunterbrechungssignal
sh zu senden, das ein Abrufen des Mikrokerns darstellt, zum ersten
Zeitpunkt der Anwendung für
das Starten der Ausführung
dieser Anwendung im zeitgetakteten Betrieb,
- (g) während
des normalen Betriebs, nach dem Aktivieren des ersten Taktgebers,
Veranlassen des Deaktivierens des ersten Taktgebers durch den Mikrokern
bei jedem Abrufen des Mikrokerns; bei einem Abrufen des Mikrokerns
durch die Systemschicht oder durch das Verarbeiten des Unterbrechungssignals
sh, Übergehenlassen
des Mikrokerns zu dem Schritt des Aktualisierens der Listen der
Aufgaben auf geordnete Weise gemäß den Zeitmerkmalen
der Aufgaben, nämlich
ihrem Datum d(i) des frühesten
Anfangs und ihrem Datum f(i) des spätesten Endes; nach dem Aktualisieren
der Listen Berechnenlassen durch den Mikrokern des kleinsten zukünftigen
Zeitpunkts, in dem eine Aufgabe wieder aktiviert wird, und Aktivierenlassen
des ersten Taktgebers durch den Mikrokern ausgehend von diesem kleinsten
zukünftigen
Zeitpunkt, um die Aufgabe zu wecken, und Verlassen des Mikrokerns,
- (h) bei dem Ausführen
einer Aufgabe Durchführen
eines Abrufens der Systemschicht nur, wenn ein Knoten des Steuergraphen
der Aufgabe erreicht ist, wobei das Argument die Nummer des Knotens
ist; Durchführen einer
Kontrolle beim Eintritt in die Systemschicht, um zu überprüfen, ob
gemäß dem Steuergraphen
der in Ausführung
befindlichen Aufgabe die Verkettung ausgehend von dem Knoten, der
dem vorhergehenden Abrufen der Systemschicht entspricht, zulässig ist,
um auf der Ebene der Systemschicht das Verarbeiten einer Anomalie
auszulösen,
wenn diese Verkettung nicht zulässig
ist, und das Aktualisieren der Zeitparameter der in Ausführung befindlichen
Aufgabe durchzuführen,
darunter das Datum d(i) des frühesten
Anfangs und das Datum f(i) des spätesten Endes, mit Hilfe von
Abrufen des Mikrokerns durch die Systemschicht und Fortsetzen der
normalen Ausführung
der laufenden Aufgabe, bis diese einen neuen Knoten ihres Steuergraphen
erreicht.
-
Insbesondere
wird das erfindungsgemäße Sicherungsverfahren
bei einem Steuersystem angewandt, das ferner eine Speicherschutzeinheit
zum Steuern der Adressierungszugriffsrechte aufweist, wobei die
Speicherschutzeinheit ausgehend von einer angeforderten Adresse
ad, die von der zentralen Recheneinheit geliefert wird, und von
Zugriffsrechten (C) der Ausführungskontexte
des Prozessors auf dem adressierbaren Speicherplatz, auf exklusive
Weise eine bestätigte
Adresse av erzeugt, die den Zugriff ermöglicht, oder aber in Richtung
der zentralen Recheneinheit ein Ausnahmesignal se einer nicht gestatteten
Adressierung sendet, wobei das Sicherungsverfahren ferner die folgenden
Schritte aufweist:
- (i) während einer Vorbereitungsphase
Speichern der Zugriffsrechte auf jedes der Speichersegmente für den Mikrokern
für eine
gegebene Anwendung sowie für
jede Aufgabe der Anwendung und ihre Verlängerung in der Systemschicht,
um einen ersten und einen zweiten Ausführungskontext zu bilden, je
nachdem, ob sich die Anweisungen in dem die Aufgabe darstellenden
Anwendung eigenen Code befinden oder ob sich diese Anweisungen in
dem generischen Code der Systemschicht, der die Verlängerung
der Aufgabe in der Systemschicht darstellt, befinden,
- (j) für
eine gegebene Anwendung und vor dem Starten der Echtzeitdurchführung gemäß einer
zeitgetakteten Betriebsart, Initialisieren des Kontextes des Mikrokerns
und des ersten und des zweiten Ausführungskontextes für jede Aufgabe
und für
ihre Verlängerung
in der Systemschicht,
- (k) bei dem Durchführen
einer Aufgabe Ausführen
eines Abrufs der Systemschicht mit Hilfe einer Anweisung zum Übergehen
auf einen privilegierten Ausführungsmodus,
der es ermöglicht,
vom Ausführungskontext
der Aufgabe auf den Ausführungskontext
ihrer Verlängerung
in der Systemschicht überzugehen,
und nach dem Prüfen,
ob die Verkettung ausgehend von dem Knoten, der dem vorherigen Systemabruf
entspricht, zulässig
ist, und nach Aktualisieren der Zeitparameter der Aufgabe mit Hilfe
von Abrufen des Mikrokerns durch die Systemschicht, Rückkehr in
den Code der Aufgabe mit Hilfe einer Rückkehranweisung in den nicht
privilegierten Modus, der es ermöglicht,
von dem Ausführungskontext
der Verlängerung
in der Systemschicht auf den Ausführungskontext der Aufgabe überzugehen.
-
Vorzugsweise
sind die Ausführungskontexte
jeder Aufgabe der Anwendung paarweise getrennt.
-
Gemäß einem
besonderen Merkmal des erfindungsgemäßen Verfahrens sind die Verlängerungen
der Ausführungskontexte
der Aufgaben der Anwendung in der Systemschicht für die Ausführungskontexte
der Aufgaben mit dem Code der Anwendung zum Schreiben nicht zugänglich.
-
Die
Codierung des Steuergraphen einer Aufgabe untersagt jeden Ausfall
aus gemeinsamer Ursache zwischen dem Ausführungssteuermechanismus einer
beliebigen Aufgabe der Anwendung und der Ausführung dieser Aufgabe selbst.
-
Das
erfindungsgemäße Verfahren
kann auch die folgenden Schritte aufweisen:
- (l)
während
einer Vorbereitungsphase für
eine gegebene Anwendung, für
alle gestatteten Verkettungen in jeder Aufgabe Speichern einer Zeitquote,
die eine Erhöhung
der maximal erforderlichen Ausführungszeit für den Übergang
von einem Knoten zum anderen in dem Steuergraphen der Aufgabe darstellt,
wobei jede dieser Zeitquoten die mit der Ausführung der der Aufgabe eigenen
Anweisungen verbrachte Zeit aber auch die bei der Ausführung des
generischen Codes der Systemschicht in Verlängerung der Aufgabe verbrachte Zeit
enthält,
- (m) während
des normalen Betriebs nach dem Aktivieren des ersten Taktgebers
bei einem Abrufen des Mikrokerns, das durch das zeitbedingte Unterbrechungssignal
sh ausgelöst
wurde und zum Deaktivieren des ersten Taktgebers führt, Ausführen einer
Prüfung,
um zu prüfen,
ob das zeitbedingte Taktgeberunterbrechungssignal sh, das das Abrufen
des Mikrokerns auslöst,
mit einem Verstoßversuch
gegen eine Zeitquote verbunden ist, und, wenn dies der Fall ist,
Veranlassen der Verarbeitung der Anomalie durch den Mikrokern, während, wenn
das zeitbedingte Unterbrechungssignal sh nicht mit einem Verstoßversuch
gegen eine Zeitquote verbunden ist, das Übergehen des Mikrokerns auf
den Schritt des Aktualisierens der Aufgabenlisten veranlaßt wird,
und nach dieser Aktualisierung der Aufgabenlisten, Veranlassen der
Berechnens durch den Mikrokern einerseits des kleinsten zukünftigen
Zeitpunkts, in dem eine Aufgabe geweckt werden soll, und andererseits
des zukünftigen
Zeitpunkts, ab dem die Zeitquote, die bei der Aktualisierung der
Listen bestimmt wurde, die der in Ausführung befindlichen Aufgabe
am Ausgang des Mikrokerns auferlegten Zeitquote entspricht, abgelaufen
ist, und Veranlassen des Aktivierens des ersten Taktgebers durch
den Mikrokern in dem kleinsten dieser zukünftigen Zeitpunkte, um, je
nach Fall, entweder die Aufgabe zu wecken oder einen Verstoßversuch
gegen eine Zeitquote, der eine Funktionsanomalie aufzeigt, zu erfassen
und Verlassen des Mikrokerns nach Aktivieren des ersten Taktgebers.
-
In
dem Fall, in dem ein zweiter Taktgeber in dem Steuersystem umgesetzt
wird, und gemäß einem
besonderen Merkmal der Erfindung, läßt man den Mikrokern auf diesen
zweiten Taktgeber zugreifen, um durch Vergleichen der Zeitsignale
das Verstreichen der getakteten Zeit durch den ersten Taktgeber
zu prüfen.
-
Das
erfindungsgemäße Sicherungsverfahren,
das angepaßt
ist, um das Ausführen
in Echtzeit kommunizierender Multitasking-Anwendungen des Steuer-Befehltyps
deterministisch zu machen, kann ferner die folgenden Schritte aufweisen:
- (n) in einer Vorbereitungsphase für jede der
Aufgaben einer gegebenen Anwendung Speichern aller zulässigen Verkettungen
ihrer Zeitsynchronisations- und Kommunikationspunkte mit den anderen
Aufgaben der Anwendung, die ein Abrufen der Systemschicht erfordern,
wobei sich diese zulässigen
Verkettungen in einem Steuergraphen der Ausführung von Abrufen der Systemschicht
der betreffenden Aufgabe zeigen, wobei jeder Graph eine Einheit
von Knoten aufweist, die jeweils einem Abrufen der Systemschicht
entsprechen,
- (o) für
jede Pufferzone, die für
einen Datenaustausch zwischen Aufgaben notwendig ist, Speichern
ihrer Lage oder Basisadresse unter Angabe ihrer Größe, der
Größe der Elemente,
die sie enthält,
sowie der Beziehungen zwischen den Pufferzonen, die es ermöglichen,
die für
die Kommunikationen erforderlichen Informationsübertragungen zu bestätigen,
- (p) für
jede Pufferzone Speichern der Anfangswerte ihrer Elemente,
- (q) für
die gegebene Anwendung und vor dem Starten der Echtzeitdurchführung gemäß einer
zeitgetakteten Betriebsart, Initialisieren der Werte der Elemente
der Pufferzone mit den vorher gespeicherten Werten,
- (r) bei der Ausführung
einer Aufgabe bei einem Abrufen der Systemschicht, wenn ein Knoten
des Steuergraphen der Aufgabe erreicht wird, und nach Überprüfung, ob
gemäß dem Steuergraphen
der in Ausführung
befindlichen Aufgabe die Verkettung ausgehend von dem Knoten, der
dem vorhergehenden Abrufen der Systemschicht entspricht, zulässig ist,
Durchführen
aufeinander folgender Aktualisierungen der Pufferzonen in Abhängigkeit
von der Art des vorher gespeicherten Abrufens durch die inkrementalen
Aktualisierungen und die für
die Zeitparameter der laufend ausgeführten Aufgabe erforderlich
sind, darunter das Datum d(i) des frühesten Anfangs und das Datum
f(i) des spätesten
Endes.
-
Gemäß einem
besonderen Merkmal der Erfindung gestattet man auf der Ebene der
Systemschicht das Teilen der alleinigen Pufferzonen durch die Verlängerungen
der Durchführungskontexte
der Aufgaben einer Anwendung, wobei eine gegebene Pufferzone für die dynamischen
Kommunikationen dem Senden von Meldungen entspricht, die sich nur
zwei Verlängerungen
von Ausführungskontexten
einer Aufgabe teilen können,
während
eine gegebene Pufferzone für
die statischen Kommunikationen, die einem datierten Datenfluß entsprechen,
mehr als zwei Verlängerungen
von Durchführungskontexten
einer Aufgabe geteilt werden, aber immer nur von der Eigentümeraufgabe
in der Verlängerung
ihres Kontexts in der Systemschicht geändert werden kann.
-
Das
erfindungsgemäße Sicherungsverfahren
kann bei Leitsystemanwendungen mit hohem Sicherheitskritizitätsgrad angewandt
werden.
-
Insbesondere
kann das erfindungsgemäße Verfahren
bei einem Leitsystem eines Niveaus der Sicherheitsklasse 1E für einen
Kernreaktor angewandt werden.
-
Weitere
Merkmale und Vorteile der Erfindung ergeben sich aus der folgenden
Beschreibung besonderer Ausführungsformen,
die beispielhaft unter Bezugnahme auf die anliegenden Zeichnungen
gegeben werden, in welchen:
-
1 eine
vereinfachte Darstellung der Architektur eines Steuersystems ist,
bei dem das erfindungsgemäße Sicherungsverfahren
angewandt werden kann,
-
2 eine
Skizze ist, die die Tiefenverteilung des Codes in Bezug auf eine
Systemschicht und einen Mikrokern mit dem erfindungsgemäßen Verfahren
zeigt,
-
3 ein
Organigramm ist, das der Verarbeitung eines Echtzeitaufgabenbeispiels
gemäß dem erfindungsgemäßen Sicherungsverfahren
entspricht,
-
4 ein
Steuergraph ist, der dem Organigramm der 3 entspricht,
-
5 ein
Beispiel für
ein Steuerungsdiagramm und dazugehörende Zeitwerte bei der Verarbeitung des
Echtzeitaufgabenbeispiels der 3 und der 4 gemäß dem erfindungsgemäßen Sicherungsverfahren
ist,
-
6 eine
Tabelle der Knoten des Steuergraphen der 4 ist, die
die Beschreibung der Operationen aufweist, die an den Daten des
frühesten
Anfangs d(i) und den Daten des spätesten Endes f(i) auszuführen sind,
-
7 ein
Organigramm ist, das der Verarbeitung eines Beispiels einer ersten
Echtzeitaufgabe entspricht, die dazu bestimmt ist, mit einer zweiten
Aufgabe zu kommunizieren, gemäß dem erfindungsgemäßen Sicherungsverfahren,
-
8 ein
Steuergraph ist, der dem Organigramm der 7 entspricht,
-
9 ein
Organigramm ist, das der Verarbeitung eines Beispiels einer zweiten
Echtzeitaufgabe entspricht, die dazu bestimmt ist, mit der ersten
Echtzeitaufgabe, die von dem Organigramm der 7 veranschaulicht
wird, zu kommunizieren,
-
10 ein
Steuergraph ist, der dem Organigramm der 9 entspricht,
-
11 ein
Beispiel für
ein Steuerungsdiagramm und dazugehörende Zeitwerte bei der Verarbeitung des
Beispiels kommunizierender Echtzeitaufgaben der 7 bis 10 gemäß dem erfindungsgemäßen Sicherungsverfahren
ist,
-
die 12 und 13 Tabellen
von Knoten der Steuergraphen der 8 und 10 sind,
die die Beschreibungen der Operationen enthalten, die an den Daten
des frühesten
Anfangs d(i) und den Daten des spätesten Endes f(i) und an den
Meldungen durchzuführen
sind, und
-
14 eine
ausführliche
Tabelle ist, die für
den Prozessor die Zugriffsrechte auf die Segmente des Speichers
in Zusammenhang mit einer Aufgabe, auf die Systemschicht und auf
den Mikrokern gemäß einem Beispiel
des erfindungsgemäßen Verfahrens
zeigt.
-
Zuerst
wird unter Bezugnahme auf 1 ein vereinfachtes
Typarchitekturbeispiel eines Steuersystems beschrieben, bei dem
das erfindungsgemäße Sicherungsverfahren
angewandt werden kann.
-
Das
Steuersystem weist mindestens einen ersten Taktgeber 14 auf,
der über
eine Leitung 22 ein Unterbrechungssignal sh sendet, wenn
eine programmierbare Zeitmenge abgelaufen ist. Eine zentrale Recheneinheit 10 weist
mindestens einen Prozessor auf, der Daten von einer Leitung 21 und
das Unterbrechungssignal sh von der Leitung 22 empfangen
kann.
-
Die
zentrale Recheneinheit 10 erlaubt über die Leitungen 23, 24 das
Senden von Adreßsignalen
an einen Hauptspeicher, der einen Totspeicher 12 und einen
Lebendspeicher 13 aufweist.
-
Der
Totspeicher 12 enthält
mindestens die Informationen (A), die die Programme der betreffenden
Anwendung und die Informationen (B), die die gleich bleibenden Daten
und Tabellen der Anwendung enthalten, aufweisen.
-
Der
Lebendspeicher 13 enthält
die variablen Arbeitsdaten der Programme der Anwendung.
-
Controller 11 bis 1N von
Peripheriegeräten 1 bis
N erlauben es, die Echtzeitverwaltung von Eingängen und Ausgängen des
Steuersystems sicherzustellen.
-
Ein
zweiter Taktgeber 15 kann umgesetzt werden, um eine zusätzliche
Kontrolle des guten Funktionierens des Taktgebers 14 durchzuführen.
-
Das
Steuersystem kann ferner eine Speicherschutzeinheit 16 aufweisen,
die es erlaubt, eine Kontrolle der Adressierungszugangsrechte sicherzustellen.
-
Ausgehend
von einer verlangten Adresse ad, die von der zentralen Recheneinheit 10 zu
der Speicherschutzeinheit 16 über die Leitung 23 geliefert
wird, und von Zugriffsrechten (C) der Ausführungskontexte des Prozessors
auf den adressierbaren Speicherplatz, die von einer Leitung 26 geliefert
werden, die den Totspeicher 12 mit der Speicherschutzeinheit 16 verbindet,
erzeugt diese Speicherschutzeinheit 16 exklusiv auf der Leitung 14,
die mit den Speichern 12, 13 verbunden ist, für die Peripheriegerätecontroller 11 bis 1N und
die Taktgeber 14, 15 eine bestätigte Adresse av, die den Zugriff
erlaubt oder über
eine Leitung 25 zu der zentralen Recheneinheit 10 ein
Ausnahmesignal se des nicht gestatteten Adressierens sendet.
-
Die
Speicherschutzeinheit 16 kann aus einem Mechanismus bestehen,
der in einer Standardspeicherverwaltungseinheit des Typs MMU („Memory
Management Unit")
gegenwärtig
ist, wobei die Speicherverwaltungseinheit selbst in den Prozessor
der zentralen Recheneinheit 10 eingebaut sein kann.
-
Der
Prozessor der zentralen Recheneinheit 10, der mindestens
ein Taktgeberunterbrechungssignal sh und ein Ausnahmesignal se des
nicht gestatteten Adressierens empfangen kann, besitzt einen privilegierten Ausführungsmodus,
für den
der Zugang durch eine Anweisung des Typs „Abrufen der Systemschicht" geschützt ist,
die zum Beispiel eine Abzweigungsanweisung („trap") sein kann.
-
Im
Allgemeinen betrifft die Erfindung ein Verwaltungssystem des Typs
zeitgesteuerte, deterministische gesicherte Echtzeit-Multitasking-Architektur
(„Time
Triggered Architecture")
mit expliziter (datierte Meldungen) und impliziter (datierte Datenströme) Kommunikation,
wobei der Rhythmus der Aufgaben zyklisch oder azyklisch sein kann.
-
Insbesondere
nimmt man gemäß dem erfindungsgemäßen Sicherungsverfahren
eine spezifische Verwaltung der Abrufe der Systemschicht des Steuersystems
vor (durch einen privilegierten Abrufausführungsmodus), wobei die spezifische
Verwaltung das Erfassen und Absondern von Fehlern mit einer deterministischen
und voraussehbaren Verhaltensgarantie erlaubt.
-
Erfindungsgemäß funktioniert
die Verwaltung der Abrufe der Systemschicht wie folgt:
- i. der einzige zulässige
Abruf der Systemschicht ausgehend von der betreffenden Anwendungsaufgabe
zu der Systemschicht besteht darin, sich auf den Knotenwechsel in
dem Steuergraphen der betreffenden Aufgabe zu beziehen,
- ii. die Systemschicht prüft
dabei, daß dieser
Abruf in Bezug auf den Ausführungspfad
des Steuergrafen, der in den konstanten Tabellen der Anwendung beschrieben
ist, zulässig
ist,
- iii. wenn der Abruf zulässig
ist, werden alle Operationen, die auf dem betreffenden Knoten von
der Systemschicht auszuführen
sind, durch die konstanten Tabellen der dazugehörenden Anwendung der Systemschicht
vorbestimmt.
-
Eine
Vorab-Ablaufplanung der Aufgabenlisten einer betreffenden Anwendung
erfolgt vor dem Echtzeitausführen
auf der Ebene eines nuklearen Mikrokerns, der anschließend, wenn
er von der Systemschicht während
der Echtzeitausführung
gerufen wird, ein gemäß den neuen
Zeitmerkmalen der Aufgaben, nämlich
ihr Datum des frühestes
Anfangs d(i) und ihr Datum des spätesten Endes f(i), die von
der Systemschicht berechnet werden, geordnetes Aktualisieren der
Aufgabenlisten durchführt.
-
Das
erfindungsgemäße Sicherungsverfahren
weist im Wesentlichen die folgenden Schritte auf:
- (a)
für jede
der Aufgaben einer gegebenen Anwendung Speichern aller zulässigen Verkettungen
ihrer Zeitsynchronisationspunkte gestatten, die einen Abruf einer
Systemschicht benötigen,
wobei diese Verkettungen einen Steuergrafen der Ausführung der
Abrufe der Systemschicht der betreffenden Aufgabe ergeben, wobei
jeder Graph eine Einheit von Knoten aufweist, die jeweils einem
Abruf der Systemschicht des Steuersystems entsprechen,
- (b) für
jeden Knoten des Steuergraphen jeder Aufgabe die Beschaffenheit
des Abrufs der Systemschicht und seine Abrufparameter speichern,
darunter die Zeitparameter, die die Aktualisierungen der Daten d(i) des „frühesten Anfangs" und f(i) des „spätesten Endes" erlauben,
- (c) für
jede Aufgabe einen Anfangsknoten (Knoten 0) in dem dazugehörenden Graphen
speichern,
- (d) für
jede gegebene Anwendung und vor dem Starten der Echtzeitausführung gemäß einer
zeitgetakteten Betriebsart für
jede Aufgabe den Anfangsknoten (Knoten 0) initialisieren, und den
Anfangsaugenblick, der den Anfangszustand der betreffenden Aufgabe
darstellt,
- (e) für
die gegebene Anwendung und vor dem Starten der Echtzeitausführung gemäß einer
zeitgetakteten Betriebsart die Startreihenfolge jeder der Aufgaben
initialisieren, indem eine Vorab-Ablaufplanung der Aufgabenlisten
auf der Ebene eines nuklearen Mikrokerns durchgeführt wird,
- (f) Aktivieren des ersten Taktgebers 14 zum Senden
des Taktgeberunterbrechungssignals sh, das einen Abruf des Mikrokerns
bildet, im ersten Zeitpunkt der Anwendung, zum Starten der Ausführung dieser
Anwendung in zeitgetaktetem Modus,
- (g) während
des normalen Betriebs und nach dem Aktivieren des ersten Taktgebers,
Auslösen
des Deaktivierens des ersten Taktgebers 14 durch den Mikrokern
bei jedem Abruf des Mikrokerns, bei einem Abruf des Mikrokerns durch
die Systemschicht oder durch die Verarbeitung des Unterbrechungssignals
sh den Mikrokern zu den gemäß den Zeitmerkmalen
der Aufgaben geordneten Aktualisierungsschritten der Aufgabenlisten
weitergehen lassen, nämlich
gemäß ihrem
Datum des frühesten
Anfangs d(i) und ihrem Datum des spätesten Endes f(i), den Mikrokern
nach dem Aktualisieren der Listen den kleinsten zukünftigen
Zeitpunkt berechnen lassen, in dem eine Aufgabe geweckt werden muß, und den
ersten Taktgeber 14 von dem Mikrokern ausgehend von diesem
kleinsten zukünftigen
Zeitpunkt aktivieren lassen, um die Aufgabe zu wecken und Verlassen
des Mikrokerns,
- (h) bei dem Ausführen
einer Aufgabe Durchführen
eines Abrufs der Systemschicht nur, wenn ein Knoten des Steuergraphen
der Aufgabe erreicht ist, indem als Argument die Knotennummer gegeben
wird, Durchführen
einer Prüfung
beim Eintritt in die Systemschicht, um zu prüfen, ob gemäß dem Steuergraphen der in
Ausführung
befindlichen Aufgabe die Verkettung, ausgehend von dem Knoten, der
dem vorhergehenden Abruf der Systemschicht entspricht, zulässig ist,
um auf der Ebene der Systemschicht die Verarbeitung einer Anomalie
zu starten, wenn die Verkettung nicht zulässig ist, und die Ausführung fortzusetzen,
wenn die Verkettung zulässig
ist, Durchführen
der Aktualisierung der Zeitparameter der in Ausführung befindlichen Aufgabe.
darunter das Datum des frühesten
Anfangs d(i) und das Datum des spätesten Endes f(i) mit Hilfe von
Abrufen des Mikrokerns durch die Systemschicht und normales Fortsetzen
der Ausführung
der laufenden Aufgabe, bis diese wieder einen Knoten ihres Steuergraphen
erreicht.
-
Wie
oben angegeben, kann das Steuersystem, bei dem das erfindungsgemäße Sicherungsverfahren angewandt
wird, eine Speicherschutzeinheit und Tabellen für die Zugriffsrechte zu jedem
der Segmente jedes Kontexts aufweisen, die vorbestimmt sind und
gegebenenfalls in den Totspeicher gegeben werden können. Für jeden
der Ausführungskontexte
erfolgt das Initialisieren des Tabellendeskriptors, der die Rechte
dieses Kontextes definiert, nur ein Mal bei der Initialisierungsphase
des ganzen Systems, und nach dieser Initialisierungsphase des Systems
hat keine der Verarbeitungen, die auf der zentralen Recheneinheit
abläuft,
diese Tabellen in ihrem Ausführungskontext.
-
Das
erfindungsgemäße Sicherungsverfahren
kann daher ferner die folgenden Schritte aufweisen, die sich zwischen
die oben definierten Schritte einfügen:
- (i)
während
einer Vorbereitungsphase, für
eine gegebene Anwendung die Zugangsrechte zu jedem der Speichersegmente
für den
Mikrokern und für
jede Aufgabe der Anwendung und ihre Verlängerung in der Systemschicht
speichern, so daß ein
erster und einer zweiter Ausführungskontext
gemäß den Anweisungen
gebildet werden, je nachdem, ob die Anweisungen in dem der Anwendung,
die die Aufgabe bildet, eigenen Code sind, oder ob diese Anweisungen
in dem generischen Code der Systemschicht sind, die die Verlängerung
der Aufgabe in der Systemschicht bildet,
- (j) für
eine gegebene Anwendung und vor dem Starten der Echtzeitausführung gemäß einer
zeitgetakteten Betriebsart, Initialisieren des Kontexts des Mikrokerns
und des ersten und des zweiten Ausführungskontextes für jede Aufgabe
und für
ihre Verlängerung
in der Systemschicht,
- (k) beim Ausführen
einer Aufgabe Durchführen
eines Abrufs der Systemschicht mit Hilfe einer Anweisung zum Übergehen
auf einen privilegierten Ausführungsmodus,
der es erlaubt, von dem Ausführungskontext der
Aufgabe auf den Ausführungskontext
ihrer Verlängerung
in der Systemschicht überzugehen,
und nach dem Prüfen,
ob die Verkettung ausgehend von dem Knoten, der dem vorhergehenden
Abruf des Systems entspricht, zulässig ist, und nach Aktualisieren
der Zeitparameter der Aufgabe mit Hilfe von Abrufen des Mikrokerns
durch die Systemschicht, Rückkehr
in den Code der Aufgabe mit Hilfe einer Anweisung zur Rückkehr in
den nicht privilegierten Modus, die es erlaubt, von dem Ausführungskontext
der Verlängerung in
der Systemschicht zu dem Ausführungskontext
der Aufgabe zurückzukehren.
-
Das
erfindungsgemäße Sicherungsverfahren
kann sich auch auf Zeitquoten beziehen und kann daher ferner die
folgenden Schritte aufweisen, die sich zwischen die oben definierten
Schritte des Basisverfahrens oder des modifizierten Basisverfahrens
einfügen,
um die Gegenwart privilegierter Ausführungsmodi zu berücksichtigen,
die einen Übergang
auf einen Ausführungskontext
der Verlängerung
einer Aufgabe in der Systemschicht erlauben:
- (l)
während
einer Vorbereitungsphase, für
eine gegebene Anwendung für
alle in der Aufgabe zulässigen Verkettungen,
Speichern einer Zeitquote, die eine Erhöhung der Ausführungszeit
bildet, die maximal zum Übergehen
von einem Knoten auf den anderen in dem Steuergraphen der Aufgabe
erforderlich ist, wobei jede dieser Zeitquoten die Zeit enthält, die
mit dem Ausführen
der der Aufgabe eigenen Anweisungen verbracht wird, aber auch die
Zeit, die bei der Ausführung
des generischen Codes der Systemschicht in Verlängerung der Aufgabe verbracht
wird,
- (m) während
des normalen Betriebs und nach dem Aktivieren des ersten Taktgebers 14,
bei einem Abruf des Mikrokerns, der von dem zeitbedingten Unterbrechungssignal
sh ausgelöst
wird und der das Deaktivieren des ersten Taktgebers 14 bewirkt,
Ausführen
einer Prüfung,
um sicherzustellen, ob das zeitbedingte Unterbrechungssignal sh,
das den Abruf des Mikrokerns auslöst, mit einem Verstoßversuch
gegen eine Zeitquote verbunden ist, und, wenn das der Fall ist,
den Mikrokern veranlassen, die Verarbeitung der Anomalie zu starten,
während,
wenn das zeitbedingte Unterbrechungssignal sh nicht mit einem Verstoßversuch
gegen eine Zeitquote verbunden ist, der Mikrokern veranlaßt wird,
zum Aktualisierungsschritt der Aufgabenlisten überzugehen, und, nach dieser
Aktualisierung der Aufgabenlisten, den Mikrokern einerseits den kleinsten
zukünftigen
Zeitpunkt, in dem eine Aufgabe geweckt werden muß, und andererseits den zukünftigen
Zeitpunkt, ab welchem die Zeitquote, die der Aufgabe, die am Ausgang
des Mikrokerns in Ausführung ist,
auferlegt wird, die bei der Aktualisierung der Listen bestimmt wird,
aufgebraucht ist, berechnen zu lassen, und den ersten Taktgeber 14 durch
den Mikrokern im kleinsten dieser zukünftigen Zeitpunkte aktivieren lassen,
um je nach Fall entweder die Aufgabe zu wecken oder einen Verstoßversuch
gegen eine Zeitquote zu erkennen, der auf eine Betriebsanomalie
hinweist, und Verlassen des Mikrokerns nach Aktivieren des ersten
Taktgebers 14.
-
Die
Aktualisierungsvorgehensweise der Aufgabenlisten der Anwendung auf
der Ebene des Mikrokerns kann auch wie unten angegeben erklärt werden,
wobei eine bevorzugte Ausführungsform
berücksichtigt
wird, bei der auf eine Zeitquote Bezug genommen wird, die der in
Verarbeitung befindlichen Aufgabe auferlegt ist, die aber auch für eine vereinfachte
Basisausführungsform
gelten kann, wenn man die Bezugnahme auf eine Zeitquote wegläßt.
-
Für jeden
Abruf des Mikrokerns bei der Ausführung und ungeachtet der Verlängerung
des Ausführungskontextes
der betreffenden Aufgabe in der Systemschicht, zählen zwei Parameter für die Aktualisierung der
Aufgabenlisten: das Datum d(i) des frühesten Anfangs und das Datum
f(i) des spätesten
Endes. Zwei Aufgabenlisten werden erzeugt: die Liste der in Frage
kommenden Aufgaben, die zur Ausführung
bereit sind, das heißt
die, deren Datum des frühesten
Anfangs d(i) in der Vergangenheit liegt, und die Liste der nicht
in Frage kommenden Aufgaben, die zur Ausführung oder zum Warten auf Wecken
nicht bereit sind, das heißt
die, deren Datum des frühesten
Anfangs d(i) in der Zukunft liegt. Die Liste der in Frage kommenden
Aufgaben wird gemäß den aufsteigenden
spätesten
Enddaten geordnet, die der nicht in Frage kommenden Aufgaben wird
gemäß den aufsteigenden
frühesten
Anfangsdaten d(i) geordnet. Für
jede wartende Aufgabe wird sichergestellt, daß sie beim Erreichen ihres
Datums des frühesten
Anfangs auf den Zustand „bereit" übergeht.
- α) Wenn beim
Abruf des Mikrokerns das Datum d(i) des frühesten Anfangs einer Aufgabe
in der Zukunft liegt, kommt die Aufgabe nicht in Frage und wird
daher in die geordnete Liste der nicht in Frage kommenden Aufgaben
transferiert. Dieses Datum erlaubt es, den nächsten Zeitpunkt zu berechnen,
in dem eine Aufgabe gemäß der Reihenfolge
der Daten des frühesten
Anfangs geweckt werden soll: das kleinste der zukünftigen
Daten des frühesten
Anfangs gibt den zukünftigen
Zeitpunkt an, in dem die nächste
betreffende Aufgabe in Frage kommt (um geweckt zu werden).
- ß)
Wenn hingegen beim Abruf des Mikrokerns das Datum d(i) des frühesten Anfangs
der betreffenden Aufgabe in der Vergangenheit liegt, kommt die Aufgabe
in Frage und wird in die geordnete Liste der in Frage kommenden
Aufgaben transferiert. Der Mikrokern gibt an die in Frage kommende
Aufgabe weiter, die das kleinste zukünftige Datum des spätesten Endes
gemäß der geordneten
Reihenfolge der Daten des spätesten
Endes hat, und berechnet den zukünftigen
Zeitpunkt, ab welchem die Zeitquote, die der ausgewählten Aufgabe
auferlegt ist, abläuft
(wobei sich die Quote aus dem Unterschied zwischen dem kleinsten
zukünftigen
Enddatum und dem gegenwärtigen
Zeitpunkt ergibt).
- γ) Wenn
der Abruf des Mikrokerns jedoch von dem Taktgeber 14 in
dem Fall eines Aktivierens aufgrund der auferlegten Zeitquote der
in Verarbeitung befindlichen Aufgabe ausgelöst wird, führt der Mikrokern zuerst die
Anomalieverarbeitungsaktion, die von der Anwendung vorgesehen wird,
aus, und dann die Aktionen α) und β).
-
Ausgehend
von diesen zwei Zeitpunkten (dem kleinsten zukünftigen Zeitpunkt des Weckens
einer Aufgabe und dem zukünftigen
Zeitpunkt des Ablaufens der der ausgewählten Aufgabe auferlegten Zeitquote)
aktiviert der Mikrokern dann den Taktgeber 14 so, daß er im
kleinsten dieser zwei Zeitpunkte aktiviert wird (entweder, um eine
Aufgabe im richtigen Zeitpunkt zu wecken oder um einen Verstoßversuch
gegen die Zeitquote zu erfassen, das heißt eine Funktionsanomalie).
Sobald der Taktgeber 14 aktiviert ist, verläßt man den
Mikrokern eventuell mit Umschaltung.
-
Während des
Ausführens
erfolgt daher der Wechsel der aktiven Aufgabe entweder durch zeitbedingte Unterbrechung
oder im Anschluß an
einen Knotenwechsel für
die aktive Aufgabe.
-
Die
zeitbedingte Unterbrechung kann als Ursprung entweder die Tatsache
haben, daß eine
wartende Aufgabe bereit wird (aufgrund des Zeittaktens), oder weil
die aktive Aufgabe ihre auferlegte Zeitquote aufgebraucht hat, und
in diesem Fall wird eine Sicherheitsprüfung durchgeführt.
-
Wenn
die aktive Aufgabe den Knoten in ihrem Steuergraphen wechselt, wird
entweder ihr Datum des spätesten
Endes zurückverlegt,
oder ihr Datum des frühesten
Anfangs wird zurückgeschoben.
In dem ersten Fall kann eine andere Aufgabe an ihrer Stelle aktiv
werden. In dem zweiten Fall wird die aktive Aufgabe in die Einheit
der wartenden Aufgaben gegeben, wenn ihr neues Datum des frühesten Anfangs
in der Zukunft liegt.
-
Die
Anzahl der Vorherbestimmungen ist endlich und abgegrenzt, und es
ist möglich,
analytisch ein maximales Limit der Anzahl der Vorherbestimmungen
zu berechnen.
-
Insofern
als die Zeitquoten aktualisiert und bei jedem Knotenwechsel geprüft werden,
kann man Anomalien rechtzeitig erkennen, um die Aufgabe unverzüglich abzusondern.
-
Insofern
als nur die in dem Steuergraphen möglichen Bewegungen akzeptiert
werden, ist es unmöglich,
daß eine
Aufgabe ein Zeitverhalten zeigt, das dazu führt, daß mehr Ressourcen verbraucht
werden (zum Beispiel Speicherressource für Kommunikationen) als statisch
mit Hilfe des gleichen Graphen geschätzt wurde.
-
Unten
wird unter Bezugnahme auf die 3 bis 6 eine
beispielhafte Ausführungsform
des erfindungsgemäßen Sicherungsverfahrens
mit einer bestimmten Echtzeitaufgabe beschrieben.
-
Gemäß diesem
Beispiel besteht die Funktion der Echtzeitaufgabe darin, einen Alarm
zu melden, wenn ein Meßwert
so ist, daß v
einen Schwellenwert s1 während einer Dauer t(v) überschreitet,
die selbst einen Schwellenwert s2 überschreitet.
-
3 stellt
ein Organigramm dar, das den Verarbeitungsprozeß der Aufgabe, die dem oben
genannten Beispiel entspricht, veranschaulicht.
-
Das
Bezugszeichen 101 bezeichnet einen Anfangsknoten oder Knoten
0, auf dessen Ebene die Systemschicht abgerufen wird.
-
Das
Bezugszeichen 102 entspricht einem ersten Schritt des Erfassens
des Meßwerts
v.
-
Das
Bezugszeichen 103 entspricht einem Test nach dem man zu
dem Anfangsknoten 101 und dann zum Schritt 102 zurückkehrt,
wenn v < s1, und man hingegen zum Knoten 1 mit dem
Bezugszeichen 104 und dann zum Schritt 105 weitergeht,
wenn v ≥ s1.
-
Auf
der Ebene des Knotens 104 wird die Systemschicht abgerufen,
und im Schritt 105 wird die Dauer t(v) berechnet.
-
Nach
dem Schritt 105 erlaubt ein Test 106 das Zurückkehren
zum Anfangsknoten 101, wenn t(v) < s2 und das Übergehen
zum Knoten 2 mit dem Bezugszeichen 107, wenn t(v) ≥ s2.
-
Nach
dem zweiten Knoten 107, in dem die Systemschicht abgerufen
wird, geht man zu dem Schritt 108 des Meldens des Alarms
weiter, und danach kehrt man zum Anfangsknoten 101 zurück.
-
4 stellt
der Steuergraf mit den Knoten 101, 104, 107 und
die dazugehörenden
Bögen dar,
die dem Organigramm der 3 entsprechen.
-
In
dem betrachteten Beispiel sind die Fristen, die zugeordnet werden,
um die Operationen „Erfassen v" (Schritt 102), „Berechnen
t(v)" (Schritt 105)
und „Melden
des Alarms" (Schritt 108)
die Folgenden sind:
- Erfassungsschritt 102: 1 Zeiteinheit
- Rechenschritt 105: 2 zusätzliche Zeiteinheiten
- Meldeschritt 108: 1 Zeiteinheit.
-
Für jeden
der Knoten 101, 104, 107 sind unten die
Dienstleistungen angegeben, die die Systemschicht leistet, und die
Operationen, die an den Daten di des frühesten Anfangs und Daten fi
des spätesten
Endes ausgeführt
werden, wobei man beim Initialisieren ein Datum d0 des
frühesten
Anfangs so hat, daß d(0)
= 0, und ein Datum f(0) des spätesten
Endes so hat, daß f(0)
= 1 Zeiteinheit.
-
-
6 präsentiert
eine Synthese einer Tabelle der Knoten 0, 1 und 2 mit der Beschreibung
der an dem Datum d(i) des frühesten
Anfangs und an dem Datum f(i) des spätesten Endes durchzuführenden
Operationen.
-
Ferner
kann der Steuergraph der Aufgabe, der in
4 veranschaulicht
ist, in Matrixform codiert werden und hat dann in dem oben genannten
Beispiel die folgende Form:
wobei
- mij
- = A wenn die Bewegung
des Knoten i zum Knoten j zulässig
ist
- mij
- = I wenn die Bewegung
von dem Knoten i zu dem Knoten j verboten
ist.
-
5 veranschaulicht
in Form eines Steuerungsdiagramms ein Umsetzungsbeispiel der oben
beschriebenen Echtzeitaufgabe und läßt dabei die dazugehörenden Zeitwerte
erscheinen. Die Ziffern von 1 bis 10 bezeichnen die reale Uhrzeit
in Anzahl von Zeiteinheiten ab dem Anfang des Betriebs im zeitgetakteten
Modus.
-
Das
erfindungsgemäße Sicherungsverfahren
kann auch das Echtzeitausführen
von Multitasking-Anwendungen, die durch Meldungen untereinander
kommunizieren, deterministisch machen.
-
In
diesem Fall weist das Verfahren die besonderen folgenden Schritte
auf, die sich zwischen die oben beschriebenen Schritte in dem Fall
eines Basisverfahrens mit Multitasking-Anwendungen ohne Anzeige
von Kommunikation zwischen Aufgaben einfügen:
- (n)
während
einer Vorbereitungsphase, für
jede der Aufgaben einer gegebenen Anwendung, Speichern aller zulässigen Verkettungen
und ihrer Zeitsynchronisations- und
Kommunikationspunkte mit den anderen Aufgaben der Anwendung, die
ein Abrufen der Systemschicht erfordern, wobei diese zulässigen Verkettungen
in einem Steuergraphen der Ausführung
des Abrufens der Systemschicht der betreffenden Aufgabe ausgedrückt sind,
wobei jeder Graph eine Einheit von Knoten aufweist, die jeweils
einem Abruf der Systemschicht entsprechen,
- (o) Speichern jeder Pufferzone, die für einen Datenaustausch zwischen
Aufgaben erforderlich ist, unter Angeben ihrer Größe, der
Größe der Elemente,
die sie enthält,
ihrer Lage oder Basisadresse sowie der Beziehungen zwischen den
Pufferzonen, die es erlauben, die für die Kommunikationen erforderlichen
Informationstransfers zu bestätigen,
- (p) für
jede Pufferzone Speichern der Anfangswerte ihrer Elemente,
- (q) für
die gegebene Anwendung und vor dem Starten der Echtzeitausführung gemäß einer
zeitgetakteten Betriebsart, Initialisieren der Werte der Elemente
der Pufferzone mit den zuvor gespeicherten Werten,
- (r) bei der Ausführung
einer Aufgabe, bei einem Abruf der Systemschicht, wenn ein Knoten
des Steuergrafen der Aufgabe erreicht wird und nach Prüfen, ob
gemäß dem Steuergraphen
der in Ausführung
befindlichen Aufgabe die Verkettung ab dem Knoten, der dem vorhergehenden
Abruf der Systemschicht entspricht, zulässig ist, Ausführen der
aufeinander folgenden Aktualisierungen der Pufferzonen in Abhängigkeit
von der Beschaffenheit des zuvor durch die inkrementalen Aktualisierungen
gespeicherten Abrufs und die für die
Zeitparameter der in Ausführung
befindlichen Aufgaben erforderlich sind, die das Datum d(i) des
frühesten
Anfangs und das Datum f(i) des spätesten Endes aufweisen.
-
Sind
der erste und der zweite Ausführungskontext
für jede
Aufgabe der Anwendung und ihre Verlängerung in der Systemschicht
definiert, liegen ferner die folgenden Besonderheiten vor:
Auf
der Ebene der Systemschicht gestattet man das Teilen der alleinigen
Pufferzonen durch die Verlängerungen
der Ausführungskontexte
der Aufgaben einer Anwendung, wobei eine gegebene Pufferzone für die dynamischen
Kommunikationen dem Senden von Meldungen entspricht, die sich die
zwei Verlängerungen
von Ausführungskontexten
einer Aufgabe nicht teilen können,
während
eine gegebene Pufferzone für
die statischen Kommunikationen, die einem datiertem Datenfluß entspricht,
von mehr als zwei Verlängerungen
von Ausführungskontexten
einer Aufgabe geteilt, aber immer nur von einem einzigen Kontext
geschrieben oder modifiziert werden kann.
-
Unten
wird unter Bezugnahme auf die 7 bis 13 ein
Anwendungsbeispiel des erfindungsgemäßen Sicherungsverfahrens auf
das Umsetzen von Echtzeitaufgaben beschrieben, die durch Meldungen kommunizieren.
-
Bei
diesem einfachen Beispiel besteht die ausgeführte Funktion darin, eine Alarmlampe
einzuschalten, wenn ein Meßwert
v so ist, daß v
einen Schwellenwert s1 überschreitet, und wenn die
Dauer t(v) des Überschreitens
des Schwellenwerts s1 durch den Meßwert v
selbst einen Schwellenwert s2 überschreitet.
-
Eine
Verarbeitungsaufgabe führt
daher das Erfassen von v aus und sendet bei Bedarf eine Meldung zu
einer Alarmaufgabe, die die angegebene Lampe einschaltet.
-
7 stellt
das Organigramm dar, das dem Ausführen der Verarbeitungsaufgabe
des betrachteten Beispiels entspricht.
-
Das
Bezugszeichen 111 bezeichnet den Anfangsknoten oder Knoten 0,
für den
die Systemschicht abgerufen wird.
-
Der
erste Schritt 112 ist ein Erfassungsschritt des Meßwerts v,
mit dem ein Test 113 verbunden ist, der den Wert v mit
dem Schwellenwert s1 vergleicht.
-
Wenn
v < s1,
kehrt man zum Anfangsknoten 111 zurück, während man, wenn v ≥ 1, der in 4 veranschaulichten
zum Knoten 1 bezeichnet mit dem Bezugszeichen 114 übergeht
und was zu einem Abrufen der Systemschicht führt.
-
Der
zweite Schritt 115, der auf den Knoten 114 folgt,
entspricht dem Berechnen der Dauer t(v).
-
Der
mit dem Schritt 115 verbundene Test 116 vergleicht
die Dauer t(v) mit dem Schwellenwert s2.
-
Wenn
t(v) < s2, kehrt man zu dem Anfangsknoten 111 zurück, während man,
wenn t(v) ≥ s2 ist, zu dem Knoten 2 bezeichnet mit dem
Bezugszeichen 117 zurückkehrt,
der zu einem Abrufen der Systemschicht führt.
-
Nach
dem Knoten 117 geht man zum dritten Knoten bezeichnet mit
dem Bezugszeichen 118 weiter, bei dem Abrufen der Systemschicht
und Ausführen
eines dritten Schritts erfolgt, der darin besteht, eine Alarmmeldung
zu senden, bevor man zum Anfangsknoten 111 zurückkehrt.
-
8 stellt
den Steuergraphen dar, der dem Organigramm der 7 entspricht,
mit den Knoten und zulässigen
Bögen.
-
9 stellt
das Organigramm dar, das dem Ausführen der Alarmaufgabe des betrachteten
Beispiels entspricht.
-
Das
Bezugszeichen 121 bezeichnet den Anfangsknoten oder Knoten
0, für
den die Systemschicht abgerufen wird.
-
Ein
Test 122 untersucht, ob eine Meldung empfangen wird.
-
In
dem Fall, in dem keine Meldung gegenwärtig ist, erfolgt der Übergang
zu einem Ausschaltschritt 123 der Alarmlampe und Rückkehr zum
Anfangsknoten 121.
-
Wenn
ein oder mehrere Meldungen gegenwärtig sind, erfolgt der Übergang
auf den ersten Knoten 124 mit Abrufen der Systemschicht
und Übergang
auf einen Schritt 125 des Einschaltens der Alarmlampe vor
einer Rückkehr
zu dem Anfangsknoten 121.
-
10 stellt
den Steuergraphen dar, der dem Organigramm der 9 entspricht,
mit den zulässigen Knoten
und Bögen.
-
In
dem betrachteten Beispiel sind die Fristen, die zum Durchführen der
Operationen „Erfassen
v", „Berechnen
t(v)", „Senden
Meldung", „Ausschalten", „Einschalten" den Schritten 112, 115, 118, 123 und 125 zugewiesen
sind, die Folgenden:
- „Erfassen
v": 1 Zeiteinheit
- „Berechnen
t(v)": 2 zusätzliche
Zeiteinheiten
- „Senden
Meldung": 1 Zeiteinheit,
die Meldung ist aber in 2 Zeiteinheiten verfügbar
- „Ausschalten": 1 Zeiteinheit
- „Einschalten": 1 Zeiteinheit.
-
Unten
werden für
jeden Knoten jeder dieser zwei Aufgaben der von der Systemschicht
geleistete Dienst und die Operationen, die an den Daten d(i) des
frühesten
Anfangs und den Daten f(i) des spätesten Endes (mit anfänglich d(0)
= 0 und f(0) = 1) sowie an dem Datum dV der Sichtbarkeit der Meldungen
durchgeführten
Operationen angegeben.
-
-
-
Die 12 und 13 stellen
jeweils für
die Verarbeitungsaufgabe und die Alarmaufgabe des betrachteten Beispiels
Tabellen der Knoten dar, die die Beschreibungen der an dem Datum
d(i) des frühesten Anfangs,
dem Datum f(i) des spätesten
Endes und dem Datum dV der Sichtbarkeit durchzuführenden Operationen aufweisen.
-
Die
Steuergraphen der Verarbeitungsaufgabe und der Alarmaufgabe können in
Matrixform wie folgt codiert sein:
wobei
- mij
- = A, wenn die Bewegung
von dem Knoten i zu dem Knoten j zulässig ist, und
- mij
- = I, wenn die Bewegung
von dem Knoten i zu dem Knoten j verboten ist.
-
11 veranschaulicht
in Steuerungsdiagrammform ein Ausführungsbeispiel der zwei kommunizierenden
oben beschriebenen Aufgaben und zeigt dabei die dazugehörenden Zeitwerte.
Die Zahlen 1 bis 10 bezeichnen die tatsächliche Uhrzeit in Zeiteinheiten
ab dem Anfang des Betriebs in zeitgetaktetem Modus.
-
Ein
einziger und alleiniger Meldungstyp wird in einer gegebenen Meldungsreihe
gespeichert. Ein Datum dV der Sichtbarkeit der Meldung wird mit
jeder gesendeten Meldung verbunden. Das Datum dV präzisiert den
zukünftigen
Zeitpunkt, ab welchem der Empfänger
die Meldung aufbrauchen kann. Das Aufbrauchen von Meldungen erfolgt
in der Reihenfolge des Sichtbarkeitsdatums dV, dann nach Sendernamen
und schließlich nach
Sendereihenfolge, was es erlaubt, die Meldungen für ihren
Gebrauch komplett zu ordnen.
-
Für jede Meldungsdatei
existiert eine Sendezone in dem Kontext jedes Senders und eine Empfangszone
für den
Eigentümer
der betreffenden Meldungsdatei.
-
Da
jeder Erzeuger (Sender) eine Sendezone hat, gibt es keine Konfliktprobleme
zwischen zwei Meldungssendungen durch zwei unterschiedliche Aufgaben.
-
Ferner,
und wie oben bereits angegeben, erlaubt das Speichersegmentieren
das Einschränken
der Auswirkung von Ausfällen
einer Aufgabe auf ihren eigenen Speicherraum. Das Ausbreiten eines
Ausfallens einer Aufgabe auf die anderen Aufgaben der Anwendung
ist daher unmöglich.
-
Der
Gebrauch des Speichersegmentierens erlaubt es ferner, die folgende
Eigenschaft zu erzielen: innerhalb eines Zeitintervalls des Zeittaktens
(TT) einer Aufgabe ist der Ausführungskontext
dieser Aufgabe zwischen dem Anfang einer neuen Anweisung und dem
Ende der vorhergehenden unveränderlich.
-
Das
Speichersegmentieren wird an die Systemschicht selbst angewandt,
um sie intern abzuschotten und den Mikrokern von dem Rest der Systemschicht
zu trennen.
-
Die
Speicherschutzeinheit 16 bildet den materiellen Mechanismus,
der es erlaubt zu prüfen,
daß die Speichersegmentierung
tatsächlich
vom Standpunkt der physikalischen Architektur her durchgeführt wird.
-
2 stellt
die Tiefenverteilung des ausgehend von dem Anwendungsniveau erzeugten
Codes mit Benutzerausführungsmodus 201 oder
nicht privilegiertem Modus bis zum Mikrokern 203 verlaufend über die Systemschicht 202 mit
privilegiertem Ausführungsmodus
dar.
-
Der
Zugang zu der Systemschicht 202 mit einem privilegierten
Ausführungsmodus
wird durch eine Abzweiganweisung des Typs „trap" geschützt, während der Übergang von der Systemschicht 202 auf
den Mikrokern 203 durch eine Anweisung des Bewegungstyps
ausgelöst
wird.
-
Der
Taktgeber 14 gewährleistet
das Zeittakten und gibt ein Taktgeberunterbrechungssignal sh aus, wenn
eine programmierte Zeitmenge abgelaufen ist.
-
In 2 sieht
man daher auf Anwendungsebene 201 den Code und die Daten
der verschiedenen Aufgaben, während
man auf der Ebene der Systemschicht 202 einerseits die
Verlängerungen
der Kontexte der Aufgaben in der Systemschicht und andererseits
den Code der Systemschicht findet. Auf der Ebene des Mikrokerns 213 findet
man die Daten und den Code des Mikrokerns für das Verwalten der Zuweisung
des Prozessors zu den Aufgaben und die Verwaltung der Zeit.
-
Unter
Bezugnahme auf 14 wird nun eine detaillierte
Tabelle der Rechte der verschiedenen Segmente in dem Fall eines
Umsetzungsbeispiels des erfindungsgemäßen Sicherungsverfahrens mit
segmentiertem Speicher gegeben.
-
Wie
bereits erwähnt,
weist eine Multitasking-Anwendung einen spezifischen Code, Aufgaben,
Ströme von
Zeitvariablen, Mailboxen auf, wobei eine Systemschicht die Informationstransfers
zwischen Aufgaben sicherstellt, einen Graphenausführer, der
die Bewegungen der Aufgaben in dem Anwendungscode steuert, und einen
Mikrokern, der die Zeitverwaltung und das Teilen des Prozessors
sicherstellt.
-
Der
Speicher ist in Segmente geteilt, die Zugangsrechte haben, die von
dem Ausführungskontext
des Prozessors abhängen.
-
Um
die Tabelle der 14 zu verstehen, werden die
folgenden Definitionen gegeben:
- .inst: Einheit aufeinander
folgenden Anweisungen im Speicher,
- .const: Einheit aufeinander folgender Daten mit konstantem Wert,
- .war: Einheit aufeinander folgender durch Anweisungen modifizierbarer
Daten,
- I: Recht zum Ausführen
der Anweisungen des Segments,
- M: Recht zum Modifizieren und Einsehen des Segments,
- C: das Recht des Zugreifens auf das Segment ist auf das Einsehen
beschränkt,
- R: der Zugang zu dem Segment wird verweigert.
-
Die
Segmente sind in Zonen gruppiert, je nach dem, ob sie für die Anwendung
spezifisch oder mit dem erfindungsgemäßen Modell auf dem Rechner 10 mit
seinem Prozessor verbunden sind.
-
Für jede Aufgabe
hat man die aufeinander folgenden Anwendungszonen CT, FT, BM, ME,
VT und PU. Die Beschreibung dieser Anwendungszonen ist die Folgende:
-
Aufgabenberechnunaszone CT:
-
- .const und .var: die Daten der Aufgabe, darunter der Stapel
in nicht privilegiertem Modus,
- .inst: die Berechnungen der Aufgabe
-
Aufgabenfunktionszone FT:
-
- .const: die Beschreibung des Funktionierens der Aufgabe
(Ausführungsgraph,
Beschreibung der Knoten, Fälligkeiten,
Erhöhungen
der Rechenzeiten durch die zentrale Recheneinheit usw.),
- .var: die Argumenteübergangszone
zu der Systemschicht,
- .inst: die Funktionen der Anfrage um Wechsel des Knotens bei
der Systemschicht.
-
Mailboxzone BM:
-
- .const: die Merkmale jeder Mailbox der Aufgabe, darunter
die Verbindungen mit den Sendezonen (ME-Zonen),
- .var: die Einheit der im laufenden Zeitpunkt für die Aufgabe
zugänglichen
Meldungen.
-
Meldungsspeicherzone ME:
-
- .const: die Beschreibung der Speicherzonen der von der Aufgabe
gesendeten Meldungen, die für
die Empfängeraufgaben
nicht sichtbar sind,
- .var: die Speicherzonen selbst.
-
Zeitvariablenzone VT:
-
- .const: die Beschreibung der Speicherzonen für die Aufgabe,
der Werte der Zeitvariablenströme,
die für
die Aufgabe sichtbar sind, darunter die Verbindungen mit den Zonen
des Erzeugers der Werte,
- .var: die Speicherzonen für
die Aufgabe der vergangenen sichtbaren Werte.
-
Zone PU:
-
- .var: die zeitweiligen für
den Prozessor erforderlichen Arbeitsdaten, der laufende Kontext
der Aufgabe, der Stapel in privilegiertem Modus.
-
Es
gibt ferner eine globale Anwendungszone, die den Aufgaben gemeinsam
ist, und die wie folgt beschrieben wird:
-
Globale Zone G:
-
- .const: die Beschreibung der globalen Konstanten der Anwendung
(Anzahl der Aufgaben, Referenzen der Deskriptoren von Aufgaben,
Beschreibung der Taktgeber usw.) und die Schnittstellenkonstanten
mit der Systemschicht.
-
Die
Systemschicht weist selbst eine Zone CS auf, die wie folgt beschrieben
wird:
-
Systemschichtzone CS:
-
- .const: für
Speicher,
- .var: leer (das Vergangene ist in dem Segment .var der Zone
PU gespeichert),
- .inst: die Anweisungen des Graphenausführers, der Verwaltung der Mailboxen,
der Bereitstellung der vergangenen Werte der Zeitvariablenströme und die
Verwaltungsanweisungen der Taktgeber und der Berechnung der Fälligkeiten.
-
Die
Transferzone TR, die für
die Systemschicht gemeinsam ist, ist wie folgt beschrieben:
-
Transferzone TR:
-
- .const: für
Speicher,
- .var: die Identifikation der aktiven Aufgabe,
- .inst: die Anweisungen zum Wechseln der Zugangsrechte zu dem
Speicher durch das Material und des Anschließens in der Systemschicht oder
dem Mikrokern.
- Der Mikrokern weist Zonen MN und RS auf, die wie folgt beschrieben
werden:
-
Zone MN:
-
- .const: für
Speicher,
- .var: die erforderlichen Daten für die Verwaltung des Materials
(Zeitverwaltung, Verwaltung der „trap"-Anweisungen usw.),
- .inst: die Verwaltungsanweisungen der Einheiten von Aufgaben,
die bereit oder in Ruhestellung sind, in Abhängigkeit von den Fälligkeiten,
zum Speichern und Wechseln des Materialkontextes, zum Verwalten
der Taktgeberunterbrechung aufgrund des abgelaufenen Nutzungsrechts
des Prozessors und Aktivieren des auf dem Rechner verfügbaren Speicherschutzes.
-
Zone RS:
-
- .const: für
Speicher,
- .var: leer,
- .inst: die Initialisierungsanweisungen des Rechners und der
Software, die ohne Schutz des Speichers ausgeführt werden.
-
In
einem gegebenen Zeitpunkt führt
der Prozessor Anweisungen entweder für Rechnung einer Aufgabe im
Anwendungscode (im nicht privilegiertem Modus) oder für eine Aufgabe
in der Systemschicht (im privilegierten Modus) oder in dem Mikrokern
aus.
-
Die
Tabelle der 14 präsentiert auf den Zeilen die
Segmente einer Aufgabe, dann die der Systemschicht und schließlich die
des Mikrokerns, wie sie oben definiert sind. Die Spalten stellen
die Zugangsrechte zu dem Speicher je nachdem dar, ob der Prozessor
Anweisungen des Anwendungscodes der Aufgabe (Spalte 301),
des Codes der Systemschicht für
die Aufgabe (Spalte 302), des Codes der Systemschicht für eine andere
Aufgabe (Spalte 303), des Codes für den Mikrokern nach dem Initialisieren
des Rechners (Spalte 304) ausführt.
-
Allgemein
kann der Speicher in Seiten geteilt werden, und eine Seite kann
schreibgeschützt
oder abwesend oder verfügbar
sein. Bei dieser Situation wird die Größe der Segmente auf ein Vielfaches
der Seite gerundet, .const und .var werden fusioniert und schreibgeschützt, und
die Seiten von Rechten R sind entweder abwesend oder aus der Beschreibung
genommen.