Linux, RTOS oder was?
Die Qual der Wahl eines Betriebssystems
Lesedauer ca. 2 Minuten
Wenn die Frage "Linux, Windows oder OSX?" lauten würde, würde die nächste Frage sich sicher schnell auf die Zielgruppe und die Anwendungen beziehen, die auf dem Betriebssystem ausgeführt werden müssen.
Das liegt daran, dass die drei Vorgenannten allesamt so genannte Universal-Betriebssysteme ("General Purpose OSes") sind, und die Entscheidung für eines von ihnen, zumindest in einem Verbraucher-Kontext, mehr eine persönliche Präferenz als alles andere ist.
Da in diesem Artikel die Frage "Linux oder RTOS?" gestellt wird (wobei RTOS für "Realtime Operating System" steht), betrachten wir zunächst mal, welche Aspekte eines Betriebssystems für IoT-Gerät von Interesse sind:
Die zwei Kernfunktionen, die ein Betriebssystem ausführen muss, sind:
- Abstrahieren der Hardware und Bereitstellen von Diensten zum Vereinfachen der Entwicklung der Software, die auf dem Gerät läuft
- Bereitstellung einer Möglichkeit, mehrere Tasks oder Prozesse "gleichzeitig" auszuführen.
Was die Fülle der verfügbaren Betriebssysteme auszeichnet, ist die Verfügbarkeit von Treibern für bestimmte Hardware und auch die Art und Weise, wie die höhere Abstraktion den Anwendungsentwicklern in Form von Software-Frameworks oder Bibliotheken präsentiert wird. In Bezug auf die Fähigkeit, Tasks "gleichzeitig" auszuführen, gibt es nur einen Unterschied in der Art und Weise, wie dies geschieht, und meistens wird dies nur dann betrachtet, wenn bestimmte "harte" Timing-Anforderungen erfüllt werden müssen.
Linux hat eine lange Geschichte und eine breite Akzeptanz bei Hardwareherstellern, daher gibt es nur wenige Chips und Erweiterungsplatinen, für die kein Linux-Treiber verfügbar ist, der dann leicht durch einfaches Ändern einer Konfigurationseinstellung in Linux integriert werden kann.
Die meisten Echtzeit-Betriebssysteme, die für IoT geeignet sind (solche wie FreeRTOS oder ThreadX), haben das nicht. Die Treiber stammen von den Chipherstellern oder müssen von Grund auf neu geschrieben und dann vom Entwickler integriert werden.
Die Sache ist die: Linux (und alle anderen "General Purpose" Betriebssysteme) sind Multi-User-Systeme, die auf Computern laufen, auf denen Sie (fast) jede Anwendung installieren können, die für dieses Betriebssystem erstellt wurde. Außerdem können sie mehrere Anwendungen gleichzeitig ausführen. Während das für die Desktop- / Notebook- / Tablet- / Smartphone-Welt gut ist, hat es gewisse Hardware-Anforderungen zur Folge.
Jedes GPOS benötigt eine CPU vom Typ "Anwendungs-Prozessor" wie die Cortex A-Serie von ARM, die über eine Memory Management Unit (MMU) verfügt und in der Lage ist, jeder laufenden Anwendung ihren eigenen virtuellen Speicherbereich zur Verfügung zu stellen. Solche CPUs benötigen größere Mengen an DRAM-Speicher und sind viel energiehungriger als ihre Cortex M "Kollegen", so dass man sie nicht mehr als ein paar Tage mit einer Batterie betreiben kann. Mit dieser Tatsache und der Bauteile-Stückliste im Hinterkopf sollten man nun anfangen, sich zu fragen: Muss ich wirklich eine erweiterbare Anzahl von mehreren Anwendungen auf meinem IoT-Gerät ausführen?
Die Antwort sollte eigentlich nur dann "Ja" lauten, wenn Ihr Gerät eher eine Plattform ist, auf der Dritte ihre Anwendungen ausführen können sollen.
In jedem anderen Fall sollte ein IoT-Gerät eine ziemlich gut definierte Reihe von Funktionen haben, für die es gebaut wurde, und das ist die perfekte Anwendung für ein kleines RTOS, das sich nur um das Task-Scheduling kümmert. In Bezug auf den Treiber und den Framework-Teil, keine Sorge - es gibt auch hier viel Software, bloß anstatt diese nur beim Konfigurieren des Betriebssystems zu selektieren, müssen Sie alles in Ihrer IDE zusammensetzen. Auch wenn das vielleicht ein wenig mehr Arbeit macht, liegt ein Vorteil darin, dass die Entwickler wirklich darüber nachdenken müssen, was sie benötigen und damit die wichtigste IoT OS-Sicherheitsanforderung erfüllen: "unbenutzte Dienste von Anfang an deaktivieren".
Natürlich gibt es viele weitere Gründe, warum jemand mit dem einen oder anderen Typ von Betriebssystemen arbeiten sollte. Die Absicht in diesem kurzen Artikel ist es auch nur, zu betonen, dass die OS Wahl nicht leichtherzig getroffen werden sollte. Dass es in einem Team beispielsweise keinen Experten für eine bestimmte Technologie gibt, sollte auf keinen Fall der entscheidende Faktor sein