Betriebssystem-Eigenschaften von RMOS3
8.2 Multiprocessing unter RMOS3
Reentrantfähiger Code
Codeteile (z.B. Funktionen und Prozeduren), die von mehreren Tasks benutzt werden
können, werden als reentrant bezeichnet. Code, der reentrant geschrieben ist, legt alle
Daten und Variablen auf dem Stack an und darf nicht selbstmodifizierend sein. Dieser Code
kann dann von mehreren Tasks simultan benutzt werden, da jede reentrant geschriebene
Routine auf dem Stack der aufrufenden Task arbeitet (diese Eigenschaft ist z.B. für
Bibliotheksroutinen wichtig). Reentrant geschriebene Codeteile können die Wartbarkeit von
Applikationen verbessern, da eine einmal getestete Prozedur mehrmals verwendet werden
kann.
8.2.3
Taskverwaltung
Fünf Taskzustände
Eine zentrale Funktion des Betriebssystemkerns besteht in der Verwaltung von Tasks. Da
nicht alle Tasks gleichzeitig abgearbeitet werden können, befindet sich jede Task vom
Betriebssystem aus gesehen in einem von 5 Zuständen.
RECHNEND (RUNNING, ACTIVE)
Die Task hat einen Core zugeteilt bekommen, der Code wird ausgeführt. Die Task kann
allerdings jederzeit durch betriebssysteminterne CPU-Anforderungen (siehe unten),
verdrängt werden.
BEREIT (READY)
Die Task ist rechenbereit und wartet auf die Zuteilung eines Cores.
WARTEND (BLOCKIERT, BLOCKED)
Die Task wartet auf ein Ereignis oder auf einen Zeitpunkt. Typische Gründe für den Zustand
WARTEND sind mit einem WAIT-Parameter übergebene SVCs (Warten auf Beendigung
einer Ein-/Ausgabefunktion, Warten auf den Ablauf einer Pause und Warten auf das
Eintreffen einer Botschaft). Bei Eintritt des Ereignisses oder nach Ablauf der Wartezeit wird
die Task vom Betriebssystem wieder in den Zustand BEREIT gesetzt (passives Warten).
DORMANT (RUHEND, DORMANT)
Die Task ist im Betriebssystem mit allen notwendigen Teilen wie Codebereichen, Stack,
usw. bekannt, d.h. sie ist in der Taskverwaltungstabelle von RMOS3 eingetragen. Die Task
ist noch nicht durch einen SVC gestartet worden. Der Übergang einer Task vom Zustand
DORMANT in den Zustand BEREIT wird als Start der Task bezeichnet und durch einen SVC
eingeleitet. Dieser SVC kann von einer anderen Task, von einer Interruptroutine oder einem
Treiber kommen. Die Task belegt Code-, Datenbereiche und einen Stackbereich.
80
RMOS3 V3.50 Benutzerhandbuch
Bedienhandbuch, 07/2012, A5E03692290-01