246
4 Systemsoftware
bewegen sich im Bereich von 185 kB (dietlibc) bis 560 kB (uClibc). Im Vergleich
dazu beträgt die typische Größe der glibc 7,9 MB (alle Werte beziehen sich auf die
x86-Versionen)16. Abb. 4.15 gibt einen Überblick über die Größen verschiedener
libc-Varianten und damit übersetzter Programme.
Neben der C-Bibliothek kann auch die Funktionalität, Größe und Anzahl der
mit dem Betriebssystem mitgelieferten Systemprogramme an die Anforderungen
der jeweiligen Anwendung angepasst werden. Diese Programme werden in Linux
zur Steuerung des Systemstarts und -betriebs sowie zur Systemüberwachung benötigt, z.B. in Programmen zum Einbinden eines Dateisystems, zur Konfiguration
von Netzwerkschnittstellen oder zum Kopieren von Dateien. Wie glibc enthält auch
ein Linux-System selbst eine Menge an Programmen, die für eine große Anzahl
verschiedener Anwendungsfälle gedacht sind, in den meisten Fällen aber für eingebettete Systeme nicht notwendig sind.
Eine Alternative zu dieser Menge an diversen Programmen ist BusyBox, eine
Software, die eine Reihe von vereinfachten essentiellen Unix-Werkzeugen in einer
einzigen ausführbaren Datei vereint. BusyBox wurde speziell für eingebettete Systeme mit sehr begrenzten Ressourcen entwickelt. Sie reduziert den zusätzlichen
Speicherbedarf des ausführbaren Dateiformats und ermöglicht, dass Code von mehreren Anwendungen ohne Verwendung einer Bibliothek geteilt wird. Ein Vergleich
von BusyBox mit weiteren Ansätzen, eine Menge an kleinen Werkzeugen für den
Systembetrieb zur Verfügung zu stellen, findet sich unter [531].
4.4.2 Echtzeiteigenschaften
Eine der komplexesten Herausforderungen bei der Anpassung eines AllzweckBetriebssystemkerns für eingebettete Systeme ist die Einhaltung von Echtzeiteigenschaften. Wie bereits in Abb. 4.3 dargestellt, ist ein verbreiteter Ansatz hierzu,
den Linux-Kern und alle Linux-Prozesse als dedizierte Task eines darunterliegenden Echtzeitbetriebssystems auszuführen, die nur aktiv ist, wenn keine Echtzeittask
Rechenzeit benötigt. Für Linux existieren verschiedene Implementierungen, die diesen Ansatz realisieren. RTAI (real-time application interface) [138] basiert auf
dem Adeos-Hypervisor17, der als Linux-Kernerweiterung implementiert ist. Adeos ermöglicht es, verschiedene priorisierte Domänen, wovon eine der Linux-Kern
selbst ist, zeitgleich auf derselben Hardware auszuführen. Darauf basierend stellt
RTAI eine Diensteschnittstelle (engl. Application Programmer Interface (API)) zur
Verfügung, die z.B. die Steuerung von Unterbrechungen und Systemzeitgebern ermöglicht. Xenomai [182] wurde einige Jahre lang gemeinsam mit RTAI entwickelt, bis es im Jahr 2005 ein eigenständiges Projekt wurde. Es basiert auf einem
abstrakten „nucleus”-Echtzeitkern, der Funktionalitäten wie Echtzeit-Scheduling,
Zeitgeber, Speicherverwaltung und virtuelle Dateisysteme zur Verfügung stellt. Die
16 Die Werte entstammen einem umfassenden Vergleich verschiedener libc-Varianten von Eta Labs,
verfügbar unter http://www.etalabs.net/compare_libcs.html.
17 Siehe http://home.gna.org/adeos/.
Précédent

- 266/485

Suivant