Proseminar Technische Informatik Eingebettete Systeme Echtzeitbetriebssysteme Markus Münchberg 20.6.2001 Inhaltsverzeichnis 1 Einführung 2 Aufgaben eines Betriebssystems 3 Aufbau eines Betriebssystems 3.1 3.2 3.3 3.4 3.5 Das Schichtenmodell . . . . . . . . . . . Taskmodell . . . . . . . . . . . . . . . . Unterbrechungskonzept bei Taskwechsel . Tasksynchronisation . . . . . . . . . . . POSIX 1.b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 4 4 6 7 8 9 4 Echtzeit in Betriebssystemen 11 5 Zusammenfassung 6 Ausblick 14 15 4.1 Anforderungen an ein Betriebssystem . . . . . . . . . . . . . . 11 4.2 Einige Echtzeitbetriebssysteme . . . . . . . . . . . . . . . . . . 12 4.3 Anwendungsbeispiele . . . . . . . . . . . . . . . . . . . . . . . 13 1 Kapitel 1 Einführung Ziel dieses Seminars soll es sein, Aufbau und Aufgaben eines Echtzeitbetriebssystems zu erläutern. Im Groben gesprochen, lassen sich heute übliche Betriebssysteme nach der Fähigkeit einteilen, Prozesse in einer vorgegebenen Zeitspanne auszuführen. Insbesondere bei eingebetteten Systemen sowie in der Automation ist Echtzeitfähigkeit oft an einem Betriebssystem das Wichtigste, damit diese Systeme zeitlich sicher gesteuert werden können. Ebenso wenn mehrere Systeme zusammen arbeiten müssen, sollten sie nicht nur zeitlich aufeinander abgestimmt sein, sondern auch miteinander kommunizieren können. Bei einem modernen Echtzeitbetriebssystem sollte die Portabilität auf verschiedene Systeme gegeben sein. Portabilität bezeichnet die Übertragbarkeit von Programmen auf andere Rechnersysteme. [2] Dadurch kann eine Anwendung einmal programmiert, auf den unterschiedlichsten Systemen angewendet werden. Je höher der Portabilitätsgrad, um so weniger müssen Programmänderungen dafür vorgenommen werden. Gerade in der fortschreitenden Dezentralisierung in allen Bereichen der Automatisierung ist eine schnelle Anwendungsentwicklung von groÿer Bedeutung. Ein Echtzeitbetriebssystem gilt nach DIN als echtzeitfähig, wenn es innerhalb einer benenn- und garantierbaren Zeit auf zufällige, externe Ereignisse reagieren kann. [3] Diese Norm sagt aber nichts über die Zeitlänge aus. Diese Zeitspanne kann im Prinzip über Minuten andauern wie die Steuerung von Pathnder auf dem Mars [7], aber im allgemeinen ist sie ein Bruchteil einer Sekunde lang. Oft muÿ ein Echtzeitsystem innerhalb von Mikrosekunden reagieren, um seine Anforderungen gerecht zu werden. Es wird zwischen harter und weicher Echtzeit unterschieden. Harte Echtzeit bedeutet, daÿ die Zeit unbedingt eingehalten werden muÿ, dagegen wird sie weich genannt, wenn eine Deadline verpasst werden darf. Oft wird ein weiches System als kein Echtzeitsystem angesehen, da die Forderung Deadlines einzuhalten, nicht gegeben ist. 2 Kapitel 2 Aufgaben eines Betriebssystems Ein Betriebssystem ist in erster Linie ein Programmsystem für die Task- und Betriebsmittelverwaltung. Zu den Betriebsmitteln gehört Hardware (Prozessor, Speicher, Peripheriegeräte...) und Software (Programme, Dateien, Variable, Daten...), die eine Task zur Ausführung benötigt. Wobei eine Task, kurz gesagt, als ein dynamisches Programm mit allen dazu benötigten Betriebsmitteln, gesehen werden kann. Die primären Funktionen eines auf Tasks basierenden Betriebssystems lassen sich in vier Blöcke einteilen. Dies sind: 1. Taskverwaltung Unterbrechungsverwaltung Prozessorzuteilung an eine Task Tasksynchronisation 2. Betriebsmittelverwaltung Arbeitsspeicherverwaltung (Binden, Laden) E/A-Verwaltung (Steuerung, Gerätetreiber) Dateiverwaltung (Externspeicherverwaltung) 3. Zuverlässigkeitsmaÿnahmen Beheben von Übertragungs- und Speicherfehlern 4. Schutzmaÿnahmen Berechtigungsliste von Betriebsmittel Paÿwörter 3 Kapitel 3 Aufbau eines Betriebssystems Zuerst wird in diesem Kapitel die Struktur (Schichtenmodell) eines modernen Betriebssystems erläutert. Da die Task dafür eine entscheidende Rolle spielt, muÿ sie und ihre möglichen Zustände erklärt werden. Desweiteren wird beschrieben, nach welchen Kriterien ein Betriebssystem ein Taskwechsel erfolgen lässt, und welche Möglichkeiten für die Tasksynchronisation existieren. Zum Schluÿ wird der IEEE-Betriebssystem-Aufrufstandard POSIX beschrieben. 3.1 Das Schichtenmodell Die allerersten und damit auch noch die einfachsten Betriebssysteme hatten den sogenannten monolithischen Aufbau. Es ist bei ihnen keine Struktur erkennbar. Diese Betriebssysteme sind noch nicht task-, sondern prozedurorientiert. Dies bedeutet, daÿ jede Prozedur jede andere aufrufen darf. Ein bekanntes Beispiel ist das OS/360 von IBM (1964). Dagegen sind moderne Betriebssysteme strukturiert aufgebaut, da sie hierarchische modulare Schichten besitzen. Mit Hilfe der Modulen werden die Anwendungs- und Erweiterungsmöglichkeiten stark vereinfacht. Eine Task ist die geeignetste Form für eine Modul in einem Betriebssystem, da nur Tasks das geeignete Abstraktionsniveau (Unterbrechungsverarbeitung, Prozessoraktivitäten) besitzen. Auch können Tasks gut ein Botschaftensystem realisieren, da sie autonom miteinander kommunizieren (kein Master/Slave). Besitzt ein Betriebssystem Schichten, so wird vor allem der Prüfaufwand erheblich verkleinert, weil es nun ein lineares und kein quadratisches Problem , wie in einem monolithischen System, darstellt. Ein hierariesches Echtzeitbetriebssystem ist durch mehrere Hierarchieschichten aufgeteilt. Eine Hierarchieschicht n besteht aus Tasks, die immer nur auf diejenigen 4 KAPITEL 3. AUFBAU EINES BETRIEBSSYSTEMS 5 Tasks in der direkt darunter liegenden Schicht n-1 oder den noch tieferen Schichten zugreifen können. Daraus leitet sich das sogenannte Schichtenmodell eines Betriebssystems ab. In diesem Modell besteht ein Betriebssystem aus Hierarchien von abstrakten Maschinen M und den dazugehörigen Taskschichten T . Eine abstrakte Maschine M deniert das Abstraktionsniveau einer ganzen Hierarchieschicht. Diese Architektur ist in Abbildung 3.1 am Beispiel des MINIX-Betriebssystems dargestellt. Die unteren Schichten M1 bis M3 bilden das Betriebssystem, und die oberste Schicht M4 besteht aus der Systemsoftware. Die Schicht M1 stellt sämtliche Funktionen der Taskverwaltung zur Verfügung und ist somit der Betriebssystemkern. M2 hat den Funktionsumfang der in dieser Schicht resultierenden Tasks T2 , wie den geräteunabhängigen E/A- oder den Treibertasks. Die Schicht M3 besteht aus der Datei- und Speicherverwaltung. Bei neueren Betriebssystemen wird versucht, möglichst viele Funktionen in die oberen Schichten zu verlagern, um damit die Maschinen M1 zu entlasten. Dies bringt den Vorteil, daÿ weniger Fehler in der Schicht M1 auftreten können und dadurch die Zielhardware M0 blockiert. i i i Abbildung 3.1: Taskschichten im Betriebssystem [10] KAPITEL 3. AUFBAU EINES BETRIEBSSYSTEMS 6 3.2 Taskmodell Unter einer Task versteht man ein laufendes oder ausführbares Programm, wenn dieses die dazugehörigen Werte der Betriebsmittel und der aktuellen Zustandvariablen besitzt. Die Zustandsvariablen einer Task bestehen aus den Daten von Programmzählern, Variablen und Registern. Der Unterschied einer Task zu einem Programm soll im folgenden anhand eines Beispieles gezeigt werden. Es gäbe einen Roboter T, der von einer Task gesteuert, und einen andern P, der von einem Programm gesteuert wird. Es sei ihnen die Aufgabe gestellt von A nach B zu gelangen. Roboter P ndet den Weg nur so, wie es ihm einprogrammiert worden ist. Das heiÿt: Wenn ein problematisches Hindernis auftritt, vermag er keinen alternativen Weg zu nden, sondern bleibt einfach davor stehen. Der Roboter T hingegen erprobt solange andere Wege, bis er ans Ziel gelangt ist. Roboter T verhält sich wie eine Task, die eine Aufgabe gestellt bekommt, die er lösen muÿ. Dazu gehört zum Beispiel auch eine angemessene Bewältigung von externen Ereignissen aus der Umwelt. So ist eine Task eine dynamische Einheit. Es gibt sechs verschiedene externe (globale) Zustände, die eine Task einnehmen kann: Existent Bereit: Sie ist lauähig, alle Betriebsmittel auÿer dem Prozessor wur- den ihr zugeteilt. Laufend: Bereit + Prozessor wurde zugeteilt Blockiert: Wartet auf ein Unterbrechungssignal oder auf die Zuteilung von Betriebsmitteln, um ihre Arbeit fortzusetzen. Beendet: Alle Anweisungen wurden abgearbeitet und ihre zugeteilten Betriebsmittel wurden abgegeben. Nicht Existent KAPITEL 3. AUFBAU EINES BETRIEBSSYSTEMS 7 Abbildung 3.2: Mögliche Taskzustände [9] 3.3 Unterbrechungskonzept bei Taskwechsel Das Unterbrechungskonzept (Taskwechsel) ist bei einem Echtzeitbetriebssystem sehr wichtig, da damit die Tasks mit der höchsten zeitlichen Priorität zuerst ausgeführt werden können, um so den Echtzeitanforderungen gerecht zu werden. Es gibt zwei verschiedene Strategien der Anordnung, die Taskwechsel in der Warteschlange bestimmen. Zum einen der Rundlauf, das heiÿt: Die Tasks werden nacheinander ausgeführt und ist deshalb für ein Echtzeitbetriebssystem absolut nicht tauglich. Zum anderen die von jedem Echtzeitbetriebssystem verwendete PrioritätStrategie, bei der jede Task eine Prioritätenklasse zugeordnet bekommt. Dies geschieht indem zunächst jeder Task des Betriebssystems oder der Benutzersoftware in eine Prioritätenklasse zugeordnet wird. Die Task mit der höchsten Priorität kommt zuerst zum Laufen. Wenn mehrere Tasks sich in einer Prioritätenklasse benden, so bilden sie eine Warteschlange. Wird die Warteschlange einer höheren Prioritätenklasse abgearbeitet, dann birgt dies die Gefahr in sich, daÿ die Tasks die in der Warteschlange einer niederen Prioritätenklasse anstehen, verhungern. Aus diesem Grunde verfolgen KAPITEL 3. AUFBAU EINES BETRIEBSSYSTEMS 8 die Betriebssystemhersteller noch andere Strategien des Taskwechsels. Sie berechnen die Taskprioritäten dynamisch, oder sie geben, wie z.B. bei dem VMS-Echtzeitbetriebssystem, das Modell der Taskprioritätenklassen auf. An dessen Stelle wird ein Modell gesetzt, bei dem jede Task eine eigene Priorität besitzt, die vom Ausführungszeitpunkt und der Bedeutsamkeit der Task abhängt. Eine Unterbrechung von Tasks kann verschiedene Ursachen haben. So kann eine externe Geräteunterbrechung vorliegen. Auch können Signale der internen Realzeituhr oder Fehler der Hardware einen Taskwechsel verursachen. Ebenso können interne Softwareunterbrechungen zu einem Wechsel von Tasks führen. Die Dauer eines Taskwechsel liegt bei etwa 120 Mikrosekunden. [9] 3.4 Tasksynchronisation Tasks müssen öfters synchronisiert werden. Der Grund ist der, daÿ Tasks um ihre Aufgabe auszuführen, auf meist nur exklusiv benutzbare Betriebsmittel Zugri haben. Als Beispiel eignet sich das Erzeuger/Verbraucher Problem. Die Korrelation zwischen Erzeuger-Task und Verbraucher-Task funktioniert mit Hilfe eines Zwischenpuers. Dabei gibt es zwei Bedingungen, die erfüllt sein müssen: Der Erzeuger darf ein Puerelement nicht füllen, bis es geleert wurde. Der Verbraucher darf erst dann ein Puerelement leeren, wenn es gefüllt wurde. Das einfachste Synchronisationskonzept ist das Semaphorprinzip aus dem Jahr 1965 und geht auf Dijkstra zurück. Ein Semaphor ist eine einzelne Synchronisationsbedingung mit einer elementaren Datenstruktur. Um eine Synchronisation zu ermöglichen, wird mittels eines Zählers festgelegt, welche Task in den kritischen Bereich eintreten darf (positiver Zähler), bzw. welcher der kritische Bereich verwehrt bleibt (negativer Zähler). Bei einem negativen Zählwert kann die Synchronistationsbedingung nur dadurch erfüllt werden, daÿ der Zugang zum kritischen Bereich für weitere Tasks verwehrt bleibt. Alle Tasks, die nicht eintreten dürfen, wechseln ihren Zustand von laufend zu blockiert. Diese Tasks werden dann mit Hilfe einer zweiten Zahl anstatt in die blockiert-Warteschlange in die spezielle Semaphorwarteschlange S-Schlange eingereiht. Dadurch hat das Betriebssystem den Überblick, welche Task auf die Erfüllung welcher Bedingung wartet. Wird nun solch eine Synchronisationsbedingung erfüllt, so muÿ das Betriebssystem die erste Task derjenigen KAPITEL 3. AUFBAU EINES BETRIEBSSYSTEMS 9 Semaphorwarteschlange S-Schlange wieder in den Bereit-Zustand versetzen. Dies birgt den entscheidenten Vorteil, daÿ die blockierte Task nicht mehr selber schauen muÿ, wann sie in den kritischen Bereich wechseln kann. Ein weiteres Synchronisationsprinzip ist der Monitor. Es eignet sich vor allem zur Verwaltung von Betriebsmitteln. Monitore funktionieren, indem nur eine Task oder ein anderer Monitor (verschachtelter Monitor) ihn aufrufen darf. Dadurch rufen einzelne Tasks sich nicht mehr gegenseitig auf, sondern nur den Monitor. Also werden die Daten von den Tasks entweder an den Monitor gesendet (SEND) oder aber gelesen (RECEIVE). Monitore werden fast in keinem Echtzeitbetriebssystem eingesetzt, da sie den Nachteil haben, sehr langsam zu sein. Der Botschaftentransport ist eines der wichtigsten Mittel für die Intertaskkommunikation bei verteilten Systemen. Gewöhnlich stellt das Betriebssystem hierfür zwei Operatoren zur Verfügung: SEND: Die Aufrufparameter der aufrufenden Task werden mit angegeben. (IN: Empfängertask-Indentikation, Botschaft) RECEIVE: Aufrufende Task erhält die Parameter wieder zurück. (OUT: Sendertask-Indentikation, Botschaft) In einem Botschaftensystem sind Sende- und Empfängertask autonom, daÿ heiÿt die Sendetask hat keine unmittelbare Kontrolle über die Empfängertask und natürlich auch umgekehrt. 3.5 POSIX 1.b Unix und deren Abkömmlinge haben eine groÿe Bedeutung bei den aktuellen Echtzeitbetriebssystemen. Gerade Linux hat in der Computergemeinde eine immer gröÿere Beliebtheit in den letzten Jahren erreicht. POSIX (Portable Operation System Interface Linux) ist ein IEEE Schnittstellen-Standard, der das Verhalten eines Satzes von Betriebssystem-Aufrufen deniert, die sich eng an den von UNIX verwendeten anlehnen. [1]Da POSIX nicht selbst ein Betriebssystem darstellt, sondern vielmehr eine formale Beschreibung einer Betriebssystemsform, ist es möglich, ein Programm, daÿ nur die von POSIX denierten Funktionen benutzt, auf einfache Weise zwischen verschiedenen Betriebssysteme (die POSIX konform sind) zu portieren. Dadurch ist gerade heute in der immer vernetzteren Welt, eine hohe Portabilität geliefert. Die von POSIX bereitgestellten Befehle sind UNIX-Befehle wie: KAPITEL 3. AUFBAU EINES BETRIEBSSYSTEMS 10 cd - change directory ls - list directory contents cp - copy rm - remove mv - move Seit dem Erscheinen von POSIX.1 kamen immer wieder einige neue Betriebssystembefehle dazu. Die neueste Version POSIX.4 (oder auch POSIX.1b) bietet auch den Befehlssatz der für Echtzeitanwendungen benötigt wird. Es bietet unter anderem Echtzeit Scheduling, Zeitmessung und asynchrone Warteschlangen für Signale. So sollte gerade dieser Standard in modernen Echtzeitbetriebssystemen verwendet werden, was leider noch nicht in allen der Fall ist. Kapitel 4 Echtzeit in Betriebssystemen In diesem Kapitel werden zuerst die Bedingungen eines Betriebssystems das Echtzeitfähig ist, erklärt. Anschlieÿend werden die Stärken von vier populären Echtzeitbetriebssysteme erwähnt. Am Schluÿ dieses Kapitels werden einige Beispiele für den Einsatz von Echtzeitbetriebssysteme aufgeführt. 4.1 Anforderungen an ein Betriebssystem Für ein Betriebssystem, das echtzeitfähig sein soll, müssen bestimmte Forderungen erfüllt sein. Ein Echtzeitbetriebsystem muÿ vorhersagbare Antwortzeiten garantieren. Es muÿ also bekannt sein, welche Task wie lange und wann ausgeführt wird. Das Betriebssystemverhalten muÿ bekannt sein. Dazu gehören: Taskverwaltung nach Echtzeitkriterien: Damit ist vor allem gemeint, wann welche Task ausgeführt wird. Dazu muÿ das Betriebssystem Tasksprioritäten setzen können und gegebenenfalls eine laufende Task wegen einer Task mit einer höheren Priorität unterbrechen können. Folglich muÿ diejenige Task gefunden werden, welche die Betriebsmittel am nötigsten braucht. Im Idealfall bekommt diejenige Task die Ressourcen, welche die nächste Deadline erreichen muÿ. Das Problem ist nur, daÿ viele Tasks Daten von anderen Tasks benötigen. Aus diesem Anlaÿ müÿen die anderen Tasks davor ausgeführt werden. Genau aus diesem Grund sollte ein gutes Echtzeitbetriebsystem eine ausgefeilte Taskplanung besitzen. Dies ist mit das Hauptkriterium eines Echtzeitbetriebssystems. Da dies zum Beispiel bei Windows von Microsoft fehlt, und so eine Task die Kontrolle über die Betriebsmittel für immer erhalten kann, ist dieses Betriebssystem nicht wirklich echtzeitfähig. 11 KAPITEL 4. ECHTZEIT IN BETRIEBSSYSTEMEN 12 Zeitliches Systemverhalten muÿ bekannt sein: Der Entwickler muÿ alle Zeiten, die das Betriebssystem benötigt, genau kennen, um Echtzeitanwendungen zu programmieren. Deshalb sollten die folgenden Angaben von dem verwendeten Echtzeitbetriebssystem in Verbindung mit der Hardware bekannt sein: 1. Interrupt Verzögerungszeit: Das ist die Zeitspanne zwischen Interrup und Tasklaufzeit. Obwohl dieser Wert von der Anzahl der im selben Moment eintretenden Interrups abhängt, muÿ er vorhersagbar sein. Natürlich muÿ er zeitlich zu der Anwendung passen. 2. Zeit für Systemaufruf: Zu jedem Systemaufruf muÿ die maximale Zeit bekannt sein. Diese sollte vorhersagbar sein. 3. Zeit für Interrupt: Die notwendige Zeit, um einen Interrup zu verarbeiten, muÿ auch bekannt sein. 4.2 Einige Echtzeitbetriebssysteme Es existieren viele verschiedene Echtzeitbetriebssysteme auf dem Markt. Einige sind auf spezielle Aufgaben ausgerichtet, aber es gibt einige sehr populäre, die für fast alle Situationen und Hardware benutzt werden können. Als Beispiele eignen sich diese bekannten Echtzeitbetriebssysteme sehr gut: QNX Neutrino /RTP [8] POSIX.1b Veränderliche grasche Oberäche Fast alle Linux Entwicklungs-Tools sind benutzbar OS-9 [6] Gute grasche Oberäche Sehr viele Utillities VxWorks [11] Sehr exibel Über 1800 Anwenderprogramme KAPITEL 4. ECHTZEIT IN BETRIEBSSYSTEMEN 13 Delta OS [4] Für weitverbreitete CPUs (Power PC, Intel x86) Robuster und skalierbarer Echtzeit-Kern Eine ausfürliche Liste von Echtzeitbetriebssystemen ndet sich in: [5] http://www.dedicated-systems.com/encyc/buyersguide/rtos/Dir228.html 4.3 Anwendungsbeispiele Echtzeitbetriebssysteme werden überall benötigt, wo bei einem System irgendeine zeitliche Anforderung existieren soll. Die Einsatzgebiete von Echtzeitbetriebssystemen sind sehr vielseitig, und sie werden auch in Systemen benutzt, bei denen es oft nicht vermutet wird. Beispiele für die Anwendung von Echtzeitbetriebssystemen sind: Automatisierte Fertigungsstraÿen Kreditkartensysteme Elektrische Fensterheber ABS, ESP in Automobilen Waschmaschinen Überwachungsfunktion auf einer Intensivstation Steuerung eines Kernkraftwerkes Buchungssysteme, z.B: Ticketverkauf bei einer Airline Steuerung von Raketen. Kapitel 5 Zusammenfassung Betriebssysteme sind in erster Linie für Betriebsmittel- und Taskverwaltung zuständig. Dies möglichst ezient auszuführen, ist bei Echtzeitbetriebssystemen, die ihre Aufgaben in einem, oft sehr kurzen zeitlichen Rahmen ausführen müssen, das entscheidende Kriterium. Um dem gerecht zu werden, muÿ ein Betriebssystem einen hierarchischen Aufbau besitzen, der zudem modular und taskorientiert implementiert ist. Dies wird durch Hierarchien von abstrakten Maschinen und zugehörigen Taskschichten erreicht. Eine sehr wichtige Rolle bei Echtzeitbetriebssystemen spielt die richtige Taskreihenfolge. Nur wenn die richtige Task zur richtigen Zeit ausgeführt wird, kann ein System optimal arbeiten. Daher sollte das Betriebssystem jeder Task eine Ausführungspriorität zuordnen. Dabei sollte aber auch beachtet werden, daÿ keine Task unausgeführt bleibt (verhungert). Zur Taskverwaltung gehören auch Taskwechsel und Tasksynchronisation (Semaphor, Monitor, Botschaften). Für den Benutzer eines Echtzeitsystems ist es von wesentlicher Relevanz, das genaue Verhalten des Betriebssystemes zu kennen. Dazu gehören vorhersagbare Unterbrechungs- sowie Systemaufrufzeiten. Ein Echtzeitbetriebssystem wird in erster Linie dazu verwendet, um zeitkritische Systeme sicher zu steuern. Da öfters ein Programm auf verschiedene Systeme verwendet werden muÿ, sollte dieses Programm portabel sein. Besonders hilfreich hierfür ist der POSIX 1.b Schnittstellenstandart. 14 Kapitel 6 Ausblick Die auf Echtzeitbetriebssystem-Kerne spezialisierten Hersteller werden zukünftig versuchen, noch kleinere, schnellere und funktionsfähigere Kerne zu produzieren. Um konkurrenzfähig zu bleiben, werden sie gezwungen sein, die Forschung insbesondere mit Blick auf die kleinsten eingebetteten Systeme voranzutreiben. Ein anderer Trend wird dahin gehen, die Betriebssysteme noch komfortabler für den Anwender zu gestalten. Um die immer komplexeren Systeme möglichst einfach zu steuern, müssen leicht zu handhabende multitaskfähige Echtzeitbetriebssysteme entwickelt werden. So wird die Portabilität zwischen oenen Systemen mit verschiedenen Betriebssystemen durch POSIX 1.b deutlich gesteigert. Was gegenwärtig nur wenige Betriebssysteme bieten, sollte in Zukunft durch neue Standards weite Verbreitung nden. Es sollte vor allem die Internetfähigkeit von Betriebssystemen ausgebaut werden. Die Verknüpfung von Echtzeit und Internet dürfte die gröÿte Herausforderung sein, die sich in den nächsten Jahren stellt. 15 Literaturverzeichnis [1] Groÿes Lexikon der Computerfachbegrie. Vaterstetten bei München, 1990. [2] Computer Lexikon. Düsseldorf, 1991. [3] M. Consee. Von Linux bis Cirrus, pages 8386. Design und Elektronik, 12 2000. [4] CoreTek Systems, Inc., 11th Floor, CEC Building, 6 South Zhongguancun Road, Beijing, Beijing, 100086, China. Delta OS. http://www.coretek.com.cn. [5] Dedicated Systems. Liste von Echtzeitbetriebssysteme. http://www.dedicated-systems.com. [6] Microware Systems Corporation, 1500 NW 118th Street, Des Moines, IA, 50325, United States of America. OS-9. http://www.microware.com. [7] NSSDC, NASA Goddard Space Flight Center, Greenbelt, MD 20771. Pathnder. [8] QNX Software Systems Ltd., 175 Terence Matthews Crescent, Kanatan, Ontario, K2M 1W8, Canada. QNX Neutino /RTP. http://www.qnx.com. [9] U. Rembold and P. Levi. Realzeitsysteme zur Prozessautomatisierung. Carl Hanser Verlag, 1995. [10] A. Tanenbaum. Betriebssysteme, Teil 1 und 2. Hanser Verlag, München, Wien, 1990. [11] Wind River, 500 Wind River Way, Alameda, California, 94501, United States of America. VxWorks. http://www.windriver.com. 16