Die Einhaltung von Fristen hängt von der Bewerbung ab, die Sie schreiben. Das RTOS bietet einfach Möglichkeiten, die Ihnen bei der Einhaltung von Fristen helfen. Sie könnten auch auf "bare metal" (ohne RTOS) in einer großen Hauptschleife programmieren und Ihre Fristen einhalten.
Bedenken Sie auch, dass ein RTOS im Gegensatz zu einem allgemeineren Betriebssystem nur eine sehr begrenzte Anzahl von Aufgaben und Prozessen ausführen kann.
Einige der Möglichkeiten, die ein RTOS bietet:
- Prioritätsbasierter Planer
- System Clock Interrupt Routine
- Deterministisches Verhalten
Prioritätsbasierter Planer
Die meisten RTOS haben zwischen 32 und 256 mögliche Prioritäten für einzelne Tasks/Prozesse. Der Scheduler führt die Aufgabe mit der höchsten Priorität aus. Wenn ein laufender Task die CPU aufgibt, läuft der Task mit der nächsthöheren Priorität und so weiter...
Die Aufgabe mit der höchsten Priorität im System erhält die CPU bis:
- er läuft bis zum Ende (d.h. er gibt freiwillig die CPU auf)
- eine Aufgabe mit höherer Priorität bereitgestellt wird; in diesem Fall wird die ursprüngliche Aufgabe durch die neue Aufgabe (mit höherer Priorität) vorgezogen.
Als Entwickler ist es Ihre Aufgabe, die Prioritäten der Aufgaben so zu setzen, dass die Fristen eingehalten werden können.
Systemtakt Unterbrechungsroutinen
Das RTOS bietet in der Regel eine Art Systemuhr (zwischen 500 uS und 100ms), mit der Sie zeitabhängige Operationen durchführen können. Wenn Sie eine Systemuhr von 1 ms haben und alle 50 ms eine Aufgabe ausführen müssen, gibt es in der Regel eine API, mit der Sie sagen können: "Wecke mich in 50 ms auf". Zu diesem Zeitpunkt würde die Aufgabe schlafen, bis das RTOS sie aufweckt.
Beachten Sie, dass das bloße Aufwachen keine Garantie dafür ist, dass Sie genau zu dieser Zeit laufen werden. Das hängt von der Priorität ab. Wenn gerade eine Aufgabe mit höherer Priorität läuft, kann es zu Verzögerungen kommen.
Deterministisches Verhalten
Das RTOS gibt sich große Mühe, um sicherzustellen, dass es bei 10 oder 100 Tasks nicht länger dauert, den Kontext zu wechseln, die nächsthöhere Priorität zu bestimmen usw..
Im Allgemeinen versucht der RTOS-Betrieb, O(1) zu sein.
Einer der wichtigsten Bereiche für deterministisches Verhalten in einem RTOS ist die Interrupt-Verarbeitung. Wenn eine Unterbrechungsleitung signalisiert wird, schaltet das RTOS sofort auf die richtige Unterbrechungs-Service-Routine um und bearbeitet die Unterbrechung ohne Verzögerung (unabhängig von der Priorität einer gerade laufenden Aufgabe).
Beachten Sie, dass die meisten hardwarespezifischen ISRs von den Entwicklern des Projekts geschrieben werden. Das RTOS könnte bereits ISRs für serielle Schnittstellen, die Systemuhr und vielleicht Netzwerkhardware bereitstellen, aber alles Spezielle (Signale von Herzschrittmachern, Aktoren usw.) wäre nicht Teil des RTOS.
Dies ist eine grobe Verallgemeinerung, und wie bei allem anderen gibt es eine große Vielfalt an RTOS-Implementierungen. Einige RTOS gehen die Dinge anders an, aber die obige Beschreibung sollte auf einen großen Teil der bestehenden RTOS anwendbar sein.
1 Stimmen
Es ist auch wichtig, den Unterschied zwischen einem "weichen" Echtzeitsystem und einem "harten" Echtzeitsystem zu beachten.