Navigation



Die innere Struktur von RTOS-UH

Wenn in diesem Text von Input/Output (I/O) und von Schnittstellen die Rede ist, ist damit das I/O gemeint, was wesentlich länger als ein Prozessorbefehl dauert (Festplatten, Netzwerk, Serielle- und parallele Schnittstellen, etc.), nicht jedoch digitales oder analoges I/O.

Hinweis: Der Event-Scheduler betreut die auf Hochsprachebene (PEARL90/C) auf Interrupts eingeplanten Tasks, nicht jedoch Interrupts für I/O-Dämonen. Der Clock-Scheduler betreut die für Zeitpunkte eingeplanten Tasks.

Grundsätzliches

  1. Prozesse zweiter Art (Nutzerprogramme und [I/O-]Dämonen) laufen im User-Mode des Prozessors, Prozesse erster Art (Traps, Interrupt-Service-Routinen (IRSR), Dispatcher und Scheduler) im Supervisor-Mode.
  2. Ruft ein Prozeß zweiter Art einen Trap auf, läuft dieser im Supervisor-Mode, aber das auf den Systemstack gerettete Statusregister hat das Supervisor Bit gelöscht. Der sogenannte "Outer-State" ist in diesem Fall der User-Mode. Die Unterscheidung, welchen Zustand der unterbrochene Prozeß hat, ist für das Anlaufen der beiden Scheduler und des Dispatchers von großer Bedeutung.
  3. Die systemeigenen Datenstrukturen, die als Ketten oder Ringe verwaltet werden, dürfen nur von Traps manipuliert werden. Denn dann ist der Trap selbst im Supervisor-Mode, der "Outer-State" ist der User-Mode. Dadurch ist garantiert, dass sowohl vor Aufruf des Traps als auch nach Beendigung des Traps die Strukturen konsistent sind.
  4. Es gibt globale Zellen, in denen abgelegt ist, ob einer der beiden Scheduler oder der Dispatcher laufen muß. Wünscht eine IRSR einen Dispatcherstart, muß sie das "Dispatcher-Call-Flag (DPC-Flag)" setzen. Für die Scheduler gibt es je nach Prozessorfamilie ein leicht unterschiedliches Verhalten:

    Ist eine zeitliche Einplanung fällig (wird von der Timer-IRSR festgestellt), wird in der 68xxx-Familie das DPC-Flag von der Timer-IRSR gesetzt und der Clock-Scheduler angesprungen. Entsprechendes gilt für den Event-Scheduler.

    Da beim PowerPC der Interruptausstieg hardwareabhängig ist, setzt eine IRSR lediglich das DPC-Flag und das Flag für den gewünschten Scheduler und verzweigt am Ende in den Dispatcher.

  5. RTOS-UH ist frei von Polling-Schleifen, da es komplett interruptgetrieben arbeitet.
  6. Der wichtigste Dämon im RTOS-UH ist der Error-Dämon. Er ist immer im Dispatcher-Ring, seine Adresse ist allen Traps und IRSRs bekannt. Der Error-Dämon verfügt über einen Ringpuffer, in den Traps und IRSRs Aufträge ablegen können, die sie nicht selbst erledigen dürfen. Typisch sind z.B. Fehlermeldungen von Traps und Aktivierung von Tasks durch IRSRs.

    Nach Abarbeitung eines Auftrags prüft der Error-Dämon bei gesetzter Interruptsperre des Prozessors, ob weitere Aufträge anliegen. Bei gefülltem Ringpuffer arbeitet er im User-Mode weiter, anderenfalls begibt er sich in den Zustand "zur Fortsetzung eingeplant".