Betriebssystem Neue Version von embOS verbessert Ausfallsicherheit

Segger embOS unterstützt jetzt auch MMU und MPU. Mit der Einrichtung nicht-privilegierter Tasks gibt es einen Schutzmechanismus, um das System vor Fehlern in einzelnen Tasks zu schützen.
Segger embOS unterstützt jetzt auch MMU und MPU. Mit der Einrichtung nicht-privilegierter Tasks gibt es einen Schutzmechanismus, um das System vor Fehlern in einzelnen Tasks zu schützen.

Das Echtzeit-Betriebssystem embOS unterstützt jetzt – je nach Prozessor – die Memory Protection Unit (MPU) oder die Memory Management Unit (MMU) des Mikrocontrollers. Dadurch verbessert sich die Zuverlässigkeit der Software.

Die neue Version des Betriebssystems heißt embOS-MPU und ist eine Erweiterung von Seggers Echtzeit-Betriebssystem embOS, das hohe Geschwindigkeit mit geringem Speicherverbrauch verbindet. Es nutzt je nach Verfügbarkeit die Memory Protection Unit (MPU) oder die Memory Management Unit (MMU) des Mikrocontrollers, um das System gegen unkontrollierte Threads zu schützen. So kann ein einzelner Thread nicht mehr das gesamte System zum Absturz bringen.

MMU und MPU

Die Memory Management Unit teilt den Speicher in Bereiche fester Größe auf (Paging), ordnet Prozessen solche Speicherbereiche zu und überwacht, ob die Prozesse auch wirklich nur die zugeordneten Bereiche nutzen. Außerdem übersetzt die MMU virtuelle Speicheradressen in physikalische Adressen. Überschreitet ein Prozess seine Grenzen, löst ein Sicherheitsmechanismus aus und andere Prozesse werden vor einer Fehlfunktion geschützt. All das erhöht aber auch den Verwaltungsaufwand und erzwingt zusätzliche Kontextwechsel. Einfachere Prozessoren haben deshalb nur eine Memory Protection Unit (MPU), die zwar die Speicherbereiche voneinander trennt, aber kein Paging und keinen virtuellen Speicher kennt.
 
Mit embOS-MPU lassen sich eine unbegrenzte Anzahl an privilegierten und unprivilegierten Tasks erstellen. Unprivilegierte Tasks werden dabei in Ihren Rechten eingeschränkt (Schreibrechte, Nachrichtenzugriff, etc.). Sollte ein unprivilegierter Task die ihm zugewiesenen Rechte überschreiten oder einen Systemfehler verursachen, wird dieser Task sofort beendet.
 
Für eine verbesserte Kontrolle kann der Entwickler auch eine Callback-Funktion installieren, die aufgerufen wird, wenn die oben beschriebene Ausnahme eintritt. Mit dieser Callback-Funktion lassen sich Logs erstellen und die Voraussetzungen für eine Wiederherstellung der vollständigen Systemfunktionen schaffen. Ebenso lässt sich damit die Performance graduell verringern oder das System in einer Weise herunterfahren, um weitere Fehler auszuschließen.