RTOS-Grundlagen

Thread-orientiertes Design

| Autor / Redakteur: Mats Pettersson * / Holger Heller

Im Kernel eines Echtzeitbetriebssystems laufen alle Fäden zusammen: Die Grundlagen für ein funktionierendes Zwischenspiel von Threads und Schedulern.

Die Entwicklung von Embedded-Anwendungen stellt immer eine Herausforderung dar. Eine Möglichkeit, um die Komplexität einer Anwendung zu verringern, ist das Thread-orientierte Design und die Unterteilung eines Projektes in mehrere Teilstücke, sogenannte Threads.

Jeder dieser Threads ist für einen Teil der Anwendung verantwortlich. In einem derartigen System kann festgelegt werden, dass einige Threads Echtzeit-Anforderungen stellen, die schnell und richtig reagieren müssen. In einem kommerziellen Echtzeitbetriebssystem sind Funktionen, die Threads priorisieren sowie ein API (Application Programming Interface), das die Kommunikation zwischen den verschiedenen Threads vereinfacht, Bestandteil des Lieferumfangs. Damit erhält der Entwickler:

  • Ein Echtzeit-Verhalten von Threads mit hoher Priorität, welches nicht durch die Anzahl oder den Ablauf von weniger wichtigen Threads beeinträchtigt wird.
  • Eine Anwendung, die einfacher zu entwickeln und zu pflegen ist, denn die Entwicklung und Pflege einzelner Threads ist einfacher als die der Anwendung als Ganzes.
  • Viele verschiedene Anwendungsbestandteile, die sich leichter auf mehrere Entwickler verteilen lassen. Für die Kommunikation zwischen den verschiedenen Modulen / Threads sorgt ein fehlerfreies API.

Basis eines jeden RTOS: der Kernel

Ein kommerzielles Echtzeitbetriebssystem (RTOS) liefert nicht nur das Tool zur Erstellung und Priorisierung von Threads, sondern auch ein Mittel für die Kommunikation zwischen den Threads. Durch den Einsatz eines RTOS werden die Schnittstelle zwischen den verschiedenen Threads sehr präzise, was Zeit sowohl in der Entwicklung als auch in der Wartung der Anwendung spart.

Das Herzstück eines RTOS heißt Kernel. Ein API ermöglicht den Zugriff auf den Kernel, unter anderem um Threads zu erstellen. Ein Thread ist eine Funktion, die über einen eigenen Stack-Speicher und einen Thread Control Block (TCB) mit Informationen über den Zustand des Threads verfügt.

Der Kernel verfügt außerdem über einen Scheduler, der für die Ausführung der Threads entsprechend des Scheduling-Algorithmus verantwortlich ist. Der Hauptunterschied zwischen den Schedulern ist die Art, wie sie die Ausführungszeit unter den verschiedenen Threads verteilen. Präemptives Scheduling ist der beliebteste und am weitesten verbreitete Thread-Scheduling-Algorithmus für Embedded-Echtzeitbetriebssysteme.

Applikation in individuelle Threads aufteilen

Die meisten Kernels nutzen auch ein Systemzeit-Interrupt (System-Tick-Interrupt). In Echtzeitbetriebssystemen ohne Systemzeit ist ein grundlegendes Scheduling verfügbar, wenn auch ohne zeitbezogene Services, wie Thread-Sleep-API-Befehle. Die Systemzeit kann mit einem Hardware-Timer auf dem Embedded-Chip implementiert werden.

Viele Echtzeitbetriebssysteme verfügen über die Eigenschaft oder entsprechende Erweiterungsmöglichkeiten zur dynamischen Reprogrammierung der Timer-Interrupt-Frequenz. Auf diese Weise kann das System in den Sleep-Modus wechseln bis zum nächsten Timer-Ablauf oder externen Auslöser.

Inhalt des Artikels:

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 35359430 / Embedded Betriebssysteme)