In zunehmenden Maße müssen Standardbetriebsysteme neben anderen Programmen auch zeitkritische Aufgaben bewältigen, z.B. im Home-Bereich Soft-Realtime Aufgaben wie das Rendern der Grafik bei Video-Spielen oder die Wiedergabe von Audio- und Videodaten auf PCs.
Auch im Embedded-Bereich fassen Standardbetriebssysteme wie Linux Fuß aufgrund ihrer umfassenden Funktionalität, der grossen Menge verfügbarer Software sowie der grossen Entwicklergemeinde, die auch Portierungen auf andere Plattformen vornimmt. Teilweise werden dadurch proprietäre Betriebssysteme verdrängt.
In dieser Arbeit wird gezeigt, welche Fortschritte der Linux-Kernel im Hinblick auf die Erfüllung zeitkritischer Aufgaben in den letzten Jahren gemacht hat und welche weiterführenden Konzepte vorhanden sind. Als wesentliche Ursache für Latenzzeiten in der Größenordnung von bis zu Hunderten von Millisekunden auf Intel-kompatibler PC-Hardware ist der nicht preemptive Kernel-Code aller Linux Kernel bis einschliesslich des Standardkernels 2.4 zu nennen. Bei der Entwicklung des Linux Kernels 2.6 verfolgten die Linux Kernel Entwickler 2 Richtungen, um die Preemptivität des Linux Kernels zu erhöhen: Die Nutzung einer Preemptionsperre nur für kritische Abschnitte anstatt einer globalen Preemptionsperre für den gesamten Kernel-Code und das Einführen von zusätzlichen Preemption Points in die verbliebenen kritischen Abschnitte. Damit ist der Linux Kernel 2.6 bis auf kritische Abschnitte preemptiv, sofern der Kernel mit der Option \"Preemptible Kernel\" compiliert wurde. In dieser Arbeit wird als weiteres Konzept zur Verbesserung der Preemptivität der \"Fully Preemptible Linux Kernel\" vorgestellt, bei dem die kritische Bereiche anstatt durch eine Preemptionsperre durch Mutexe, d.h. durch binäre Semaphore, geschützt sind. Die Lösung der dabei auftretenden Probleme führte in dieser Arbeit zu 2 GPL-Referenzimplementierungen, die 2004 als Patch für den Linux Kernel 2.4 und später für 2.6 veröffentlicht wurden. Diese Kernel Patches implementieren unterschiedliche Prioritätsvererbungsprotokolle, um Prioritätsinversion zu vermeiden. Einer der beiden Patches wurde 2004 von MontaVista Inc. in Kalifornien ausgewählt und in ihrem \"MontaVista Linux Open Source Realtime Projekt\" verwandt. Dies beeinflusste auch die Entwicklung des sog. Realtime(RT)-Patches durch die Kernel-Entwickler Ingo Molnar et al. für den Linux Kernel 2.6, die dasselbe Ziel verfolgen, einen voll preemptiven Linux Kernel zu schaffen. Teile der RT-Patches, wie z.B. ein Prioritätsvererbungsprotokoll für User- und Kernel Space, wurden 2006 mit Linux 2.6.18 bereits Bestandteil des Standard Vanilla Kernels. In dem Maße, in dem es gelingt, den Linux Kernel preemptiver zu machen, erscheint es auch sinnvoll, die Granularität der Linux-Zeitbasis über die 10 Millisekunden des periodischen Timerinterrupts des Standard Kernels 2.4 hinaus zu erhöhen. Der Standard Linux Kernel 2.6 hat - auf Intel kompatiblen PCs - bereits die Zeitauflösung - gegenüber Linux 2.4 - durch eine 10fach höhere Frequenz des Timerinterrupts auf 1 Millisekunde erhöht, was aufgrund des Overheads unter Performance-Gesichtspunkten eine einfache, aber nicht sehr effiziente Lösung darstellt. In der Arbeit wird - basierend auf dem UTIME Patch der Universität von KANSAS - ein anderer Ansatz vorgestellt, der eine noch wesentlich höhere Zeitauflösung und präziseres Scheduling für im Vorhinein bekannte Aufgaben/Tasks ermöglicht. Dieser Ansatz stützt sich ab auf den \"Time Stamp Counter\" (TSC), ein hochauflösendes Zähl-Register Intel kompatibler Prozessoren, das jeden Prozessortakt inkrementiert wird. 2001 wurde dazu in dieser Arbeit ein Patch für Linux 2.4 entwickelt und veröffentlicht, genannt \"Rapid Reaction Linux\". Der heute oft genutzte \"High Resolution Timer\" Patch für Linux 2.6, kurz HRT Patch, basiert auf einer ähnlichen Technik. Für die Patches notwendige Änderungen am Linux Kernel wurden so durchgeführt, dass das System Call Interface, nicht verändert wurde.
«In zunehmenden Maße müssen Standardbetriebsysteme neben anderen Programmen auch zeitkritische Aufgaben bewältigen, z.B. im Home-Bereich Soft-Realtime Aufgaben wie das Rendern der Grafik bei Video-Spielen oder die Wiedergabe von Audio- und Videodaten auf PCs.
Auch im Embedded-Bereich fassen Standardbetriebssysteme wie Linux Fuß aufgrund ihrer umfassenden Funktionalität, der grossen Menge verfügbarer Software sowie der grossen Entwicklergemeinde, die auch Portierungen auf andere Plattformen vor...
»