8.5.2.1
Zeitbezogene Systemaufrufe
Die zeitbezogenen Systemaufrufe werden in folgenden Gruppen behandelt:
● Taskbearbeitung
● Zeitbezogene Taskkommunikation
● Timeout-Behandlung von Systemaufrufen
● Timeout-Behandlung von Geräten
Abschließend werden Hinweise zur Vermeidung einer Systemverklemmung (Deadlock)
gegeben.
Taskbearbeitung
WARTEND auf Neustart
RmRestartTask
dem Zustand RECHNEND in den Zustand WARTEND. Nach Ablauf eines spezifizierten
Zeitintervalls wird die Task wieder in den Zustand BEREIT überführt und beginnt dabei mit
den Parametern aus dem TCD neu.
Das Zeitintervall, nach dem sich
spezifiziert werden. Die Zeitrechnung bezieht sich dabei entweder auf den letzten
festgelegten Startzeitpunkt oder auf den aktuellen Zeitpunkt.
Die erste Zeiteinstellung wird bei zyklischen Tasks bevorzugt, wenn eine Task in
gleichmäßigen Abständen RECHNEND wird. Dabei ist zu berücksichtigen, dass die Startzeit
dem Zeitpunkt entspricht, zu dem die Task in den Zustand BEREIT kommt, jedoch nicht der
Zeitpunkt an dem ihr tatsächlich die CPU zugeteilt wurde.
Beispiel (eine Task, die alle 5 Minuten erneut gestartet werden soll):
Die Task wird um 11:00 zum ersten Mal gestartet, aber erst um 11:07 beendet. Nach dem
Abschluss erfolgt unverzüglich ein Neustart der Task, da die nächste geplante Startzeit
schon für 11:05 vorgesehen war. Hat die Task ihre Abarbeitung vor 11:10 beendet, muss sie
warten, bis sie erneut gestartet wird. Falls sie nach 11:10 beendet wird, erfolgt sofort ihr
Neustart usw. Während dieser Abfolge von Starts wird versucht, eingetretene
Verzögerungen wieder auszugleichen.
BEREIT für Neustart, schnelle Zykluszeiten
Mit der Funktionalität des schnellen Zyklus können unter RMOS3 bis zu fünf Tasks im
Raster von 10 Mikrosekunden gestartet werden. Damit können z.B. schnelle
Regelalgorithmen implementiert werden. Die Einstellung des gemeinsamen Grundzyklus für
10, 50, 100, 200 oder 500 Mikrosekunden erfolgt über den Aufruf
Timerinterupthandler installiert für den zyklischen Start der Tasks. Die Funktion
RmInitFastTask
im Zustand DORMANT befindliche Tasks im gewünschten Zeitintervall. Dieses Zeitintervall
ist taskspezifisch und ein ganzzahliges Vielfaches des eingestellten Grundzyklus. Die
Zeitrechnung für den zyklischen Start der Task bezieht sich dabei auf den letzten
festgelegten Startzeitpunkt, zu dem die Task in den Zustand BEREIT kommt.
RMOS3 V3.50 Benutzerhandbuch
Bedienhandbuch, 07/2012, A5E03692290-01
(Task beenden und nach Zeitintervall neu starten) überführt eine Task aus
RmRestartTask
startet bis zu fünf zuvor mit
Betriebssystem-Eigenschaften von RMOS3
8.5 Betriebsmittelverwaltung
richten soll, kann auf zweierlei Weise
RmInitFastTick
oder
RmCreateTask
RmCreateTaskEx
, der einen
erzeugte und
119