Das FDOS Betriebssystem Ein Einstieg in die Systemprogrammierung (5. Ausarbeitung) Von Stefan Tappertzhofen Auf der Basis einer Informatikfacharbeit (Grundkurs (GK), Jahrgangsstufe, Abgabetermin: 15. März 2002, Lehrer: Herr Warthmann) 12. Inhaltsverzeichnis 1. Seite Vorwort und Einführung 3 1.1. Definition eines Betriebssystems und einige Beispiele bekannter Systeme 1.2. Der Bootvorgang und der Bootsektor 1.3. Der Kernel als ein fundamentaler Bestandteil eines Betriebssystems 2. Zielsetzung und Eigenanteil 6 2.1. Die Realisierung des Bootsektors und des Dateisystems 2.2. Der Kernel mit einem eigenen Interrupt 3. Dokumentation und 9 Anwendungsmöglichkeiten 3.1. PC- und Systemstatus Abfrage und Informationen rund um das System 3.2. Dateisystem 3.3. Speicher- und Prozessmanagement 3.4. Weitere Programme 3.5. Die Konzeption eigener Mikroprogramme mit Hilfe des Kernels 3.6. Das System beenden 4. Reflexion 4.1. Hindernisse und Probleme die bei der Entwicklung des Systems auftraten 4.2. Mögliche Erweiterungen am System 4.3. Schlusswort 18 5. Anhang 5.1. Literatur- und Quellenverzeichnis 21 5. Überarbeitung (3.08.2003) (c) Stefan Tappertzhofen 2002 – 2003 Freigegeben nach GNU Lizenz Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 2 der Lizenz oder (nach Ihrer Option) jeder späteren Version. Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, dass es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License. Sie sollten eine Kopie der GNU General Public License zusammen mit diesem Programm erhalten haben. Falls nicht, schreiben Sie an die Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. Version 0.0.5, Copyright (C) 2002 Stefan Tappertzhofen Für FDOS besteht KEINERLEI GARANTIE; FDOS ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen. Das FDOS Betriebssystem 2 1. Vorwort und Einführung Betriebssysteme spielen im Umgang mit dem PC eine fundamentale Rolle. Trotzdem ist vielen PC Benutzern die Funktionsweise eines solchen Systems völlig unbekannt. Die Leistungen, die moderne Betriebssysteme heute vollbringen sind für den einfachen PC Nutzer schlichtweg unüberschaubar geworden. Ich versuche in meiner Ausarbeitung die Funktionsweise einfacher Betriebssysteme (um nicht den Rahmen der Ausarbeitung zu sprengen), dargestellt an einem Beispiel eines selbst entwickelten Betriebssystem mit ausgewählten Funktionen zu verdeutlichen. Dabei werde ich in vier Schritten vorgehen. Zum einen werde ich den Begriff des Betriebssystems erklären. Dies ist jedoch nicht so einfach. In der heutigen Zeit ist es schwierig bei Produkten wie Windows 2000 noch zwischen dem eigentlichen Betriebssystem und den mitgelieferten Anwendungsprogrammen zu unterscheiden. Aus diesem Grund lege ich meinen Schwerpunkt hauptsächlich auf „einfache Betriebssysteme“. Doch was ist ein „einfaches Betriebssystem“? Welchem Funktionsprinzip entspringt ein „einfaches Betriebssystem“ und gibt es überhaupt ein gewisses Prinzip, das alle System miteinander verbindet? Im zweiten Teil meiner Ausarbeitung werde ich genauer auf die Entwicklung meines Systems eingehen, welches ich komplett in Assembler programmiert habe um die Funktionsweise eines Betriebssystems zu erläutern. Die Dokumentation über mein Betriebssystem findet sich dann im dritten Teil. Ich werde hier auch etwas näher über verschiedene Funktionen (auf die ich später noch zu sprechen komme) des Kernels schreiben. Unter anderem zeige ich wie ein Anwender mit Hilfe des Kernels eigene Mikroprogramme entwickeln kann. Der vierte Teil meiner Ausarbeitung beinhaltet die Reflexion. Das Ziel meiner Reflexion soll die kritische Analyse meiner Arbeit, insbesondere der Programmierung sein. So werde ich unter anderem auf allgemeine und spezielle Probleme und mögliche Erweiterungen an meinem Betriebssystem eingehen. 1.1 Definition eines Betriebssystems und einige Beispiele bekannter Systeme Die Definition eines Betriebssystem ist nicht genau festgelegt. So beschäftigt sich Dr. Peter Schnupps „Standart Betriebssysteme“ (s. Quellen) im Grunde genommen die ganze Zeit mit der Klärung des Begriffs „Betriebssystem“. Laut der DIN Norm 44300 sind Betriebssysteme (engl. Operating System, kurz: OS) die „Programme Das FDOS Betriebssystem 3 eines digitalen Rechensystems, die zusammen mit den Eigenschaften der Rechenanlage die Basis der möglichen Betriebsarten des digitalen Rechensystems bilden und insbesondere die Abwicklung von Programmen steuern und überwachen“ (Schnupp, 1990, S. 16). Bei modernen Betriebssystemen, wie zum Beispiel Microsoft Windows XP, ist die Funktionsweise um ein Vielfaches komplexer als die Funktionsweise von einfachen Systemen wie MS-DOS, da diese Betriebssysteme dem Benutzer eine Vielzahl von beigelieferten Programmen (Dienste) anbieten. Doch was ist ein einfaches Betriebssystem? Da es keine genauen Definitionen hierfür gibt und sich jeder selbst seine eigene Meinung über einfache Betriebssysteme bilden kann, kann man diese Frage auch nicht so leicht beantworten. Damit der Begriff (einfaches Betriebssystem) aber in meiner Ausarbeitung mehr Substanz gewinnt bezeichne ich ein Betriebssystem als einfach, wenn man das eigentliche System klar von den beigelieferten Anwendungsprogrammen oder Diensten (sofern vorhanden) abgrenzen kann. Bei Betriebssystemen mit einer grafischen Oberfläche ist dies zum Teil nicht mehr der Fall. Die grafische Oberfläche von Microsoft Windows 98 zum Beispiel ist sehr stark vom Microsoft Internet Explorer 4.x geprägt. Doch der Internet Explorer ist kein Bestandteil des Systems, sondern nur ein Anwendungsprogramm. Da die klare Trennung zwischen System und Anwendungsprogramm in diesem Beispiel nicht gegeben ist, bezeichne ich MS Windows 98 auch nicht als einfaches Betriebssystem. Nach meiner Meinung ist jedoch die angesprochene Trennung bei Microsoft DOS in gewisser Weise schon vorhanden. Dieses Betriebssystem läuft auch ohne die beigelieferten Dienste (im Gegensatz zu Windows). DOS könnte man also schon eher als einfach bezeichnen. Alle Betriebssysteme lassen sich aber im Prinzip auf ein bestimmtes Aufgabenmuster zurückführen., so verwalten sie die Nutzung von Hardwareressourcen wie den Arbeitsspeicher, Peripheriegeräte und den Prozessor (engl. Central Processing Unit, kurz CPU). Daneben sind Betriebssysteme auch der Ausgangspunkt, von dem aus Anwendungsprogramme aufgerufen werden und der PC konfiguriert werden kann. Das am meisten verbreitete Betriebssystem ist heute immer noch Microsoft DOS, auf welches Microsoft Windows 95, 98 und ME noch aufbauen. Daneben finden sich auch einige andere Systeme wie Mac-OS, Linux, BeeOS und Windows NT. (vgl. „Betriebssystem“, MS Encarta 99). Das FDOS Betriebssystem 4 1.2 Der Bootvorgang und der Bootsektor Ich beschränke mich bei dem hier angesprochenen Bootvorgang nur auf den Bootvorgang einer bootfähigen Diskette, da der Bootvorgang einer Festplatte mitunter anders verlaufen kann. Beim Starten des Computers wird zuerst das BIOS (engl. Basic Input/Output System, dt.: Basis Ein- und Ausgabesystem) geladen, welches die Hardware und das System überprüft. Nun folgt der Bootvorgang. Das BIOS lädt den ersten Sektor (den Bootsektor) der Diskette in die Speicherstelle 0000:7C00h. Der Bootsektor ist immer 512 Byte groß (ein Sektor ist standardmäßig 512 Byte groß). Die Aufgabe des Bootsektors besteht nun darin den Kernel, auf den ich später noch eingehen werde, und eventuell anschließend eine Benutzerumgebung (UI, User Interface) zu laden, die es dem Benutzer ermöglicht Befehle an das System zu senden (vgl. tecChannel, „Der Bootvorgang, 2002). Normalerweise initialisiert der Bootsektor auch das Dateisystem. So finden sich in solchen Bootsektoren auch Diskettenspezifische Eigenschaften, die später für das Dateisystem von großer Wichtigkeit sind. (vgl. Zimmermann, „Organisation der Diskette unter DOS“, 2002) Aus der Sicht des Entwicklers ist es wichtig den Bootsektor nicht größer als 512 Byte werden zu lassen. Außerdem darf man die sogenannte Bootsignatur nicht vergessen, die den Sektor erst für das BIOS zu einem richtigen bootfähigen Sektor macht. Als Bootsignatur bezeichnet man die letzten 2 Bytes des Bootsektors. Für den Fall, dass der Bootsektor weniger als 510 Byte groß ist lässt man ihn auf 510 Byte füllen, damit die letzten 2 Byte auf jeden Fall die Bootsignatur bilden. (vgl. Marjamäki, 2002) 1.3 Der Kernel als ein fundamentaler Bestandteil eines Betriebssystems Der Kernel (auch Betriebssystemkern genannt) enthält eine Reihe von Funktionen, mit denen ein Betriebssystem oder ein Anwendungsprogramm einen Computer steuern kann. Unter anderem verfügt der Kernel über Funktionen die Ein- und Ausgabe von Texten und Zeichen auf dem Bildschirm steuern. Diese Funktionen bezeichnet man als API (Application Program Interfaces, dt.: Anwendungsprogramm Schnittstelle). Bei vielen Betriebssystemen sind die Interrupts Bestandteile von der API und werden genauso behandelt. In modernen Systemen befindet sich der Kernel nicht in nur einer einzigen Datei, sondern kann in viele Das FDOS Betriebssystem 5 verschiedene Dateien unterteilt sein (vgl. R. Lee, Beitrag in einem Forum, 2002). Hardware u. virtuelle Hardware (API) Programme (UI*) Betriebssystem Benutzer *UI = User Interface, Benutzer Oberfläche Grober Aufbau eines einfachen Betriebssystems Die Abbildung verdeutlicht den Aufbau eines einfachen Betriebssystems. Der Kernel dient dabei als Schnittstelle und Steuerungszentrale für die Programme, die über die API des Kernels arbeiten und somit auf die Hardware (und eventuelle virtuelle Hardware) zugreifen können. Über die UI (User Interface) kann der Benutzer das System steuern und das System wiederum übergibt den Benutzer über die UI Statuswerte oder Fehlermeldungen. 2. Zielsetzung und Eigenanteil Um die Funktionsweise eines Betriebssystems darzustellen habe ich ein eigenes kleines Betriebssystem entwickelt (genannt „FDOS“ – „Floppy Disk Operating System“). Ich setze voraus, dass der Leser eine ausreichende Grundkenntnis über Assembler und den Aufbau von Computern besitzt. Als Assembler nutze ich den NASM (The Netwide Assembler Project, siehe Quellen). Während der Entwicklung erwies sich dieser kostenlose Assembler als sehr nützlich für die Programmierung von Betriebssystemen, da die meisten Assembler Codes (TASM oder MASM) leicht an NASM angepasst werden konnten. Leider zeigte sich jedoch auch, dass NASM noch in der Entwicklung ist und deshalb noch einige kleine Fehler hat. 2.1 Die Realisierung des Bootsektors und des Dateisystems In meinem System besteht die Aufgabe des Bootsektors im Grunde genommen nur darin die Datei „fdos.sys“ in die Das FDOS Betriebssystem 6 Speicherstelle 50h (= 80d) zu laden. Dazu muss man zuvor jedoch eine Reihe von Vorkehrungen treffen. So wird die Dateizuordnungstabelle (FAT = File Allocation Table), sowie das Hauptverzeichnis in die Speicherstelle 200h (= 512d) je nach Bedarf geladen. Zunächst wird der STACK initialisiert, damit wir vollen Zugriff auf die 64 KB Arbeitsspeicher haben (mehr als 64 KB Arbeitsspeicher werden von FDOS, da es sich um ein Real Mode und nicht Protected Mode System handelt, nicht unterstützt). Nun sind wir in der Lage die ersten Dateisystem-Operationen vorzunehmen. Dazu müssen wir zunächst einmal das Hauptverzeichnis in den Speicher (Speicherstelle siehe oben) lesen. Beim FAT 12 Dateisystem liegt der Inhalt des Hauptverzeichnisses einer Diskette normalerweise zwischen den Sektoren 19 und 33. Über eine kurze Rechnung haben wir die benötigten Sektoren ausfindig gemacht und sind nun in der Lage das Hauptverzeichnis zu speichern. Der Aufbau eines Verzeichnisses in FAT 12 ist äußerst simpel. Es handelt sich lediglich um eine Liste mit vordefinierten Spaltenlängen. So sind für den Dateinamen 11 Zeichen (8 Dateiname, 3 Dateiendung) zugewiesen. Des weiteren gibt es Spalten, die uns vermitteln, ob es sich bei der Datei um eine normale Datei, ein Verzeichnis oder gar das Datenträger Label handelt. Ferner werden Datums- und Zeitangaben, sowie die Datei- und Verzeichnisattribute mitgeteilt. Für Dateisystem-Operationen sind jedoch auch die Spalten „Dateigröße“ sowie „StartCluster“ wichtig. Wenn wir unsere gewünschte Datei nun in der Liste gefunden haben sind wir nun in der Lage mittels des StartClusters und der Dateigröße die Datei zu laden. Dafür muss nun die Dateizuordnungstabelle (FAT) geladen werden. Diese Tabelle wird im folgenden wichtig für die Cluster Abhandlungen. Cluster sind ein oder mehrere Sektoren in einem Paket zusammengefaßt, deren Paketgröße in der Datenträgertabelle (die ersten 59 Bytes des Bootsektors) gespeichert ist. Die FAT gibt eine Aussage über den Status von jedem Cluster des Datenträgers. Normalerweise zeigt der jeweilige Eintrag eines Clusters in der FAT auf den folgenden Cluster. Das heißt, dass sich eine Cluster-Kette bildet, die dann den Dateiinhalt darstellen. Ein Cluster kann allerdings auch den Status „Leer“, „Datei Ende“ oder „Nicht verwendbar“ besitzen. Über die FAT ist es demnach recht einfach möglich Clustern Dateien in der richtigen Reihenfolge zuzuordnen oder den Freien Speicherplatz zu ermitteln. Nachdem wir nun die einzelnen Cluster unser „fdos.sys“ mit Hilfe der FAT in den Speicher geladen haben sind wir nun in der Lage das Programm auszuführen. Damit ist die Arbeit des Bootsektors beendet. Er muss lediglich noch auf 510 Bytes aufgefüllt werden, Das FDOS Betriebssystem 7 damit wir sicher stellen können, dass die letzten 2 Bytes eine korrekte Boot Signatur darstellen (Eine korrekte Bootsignatur lautet: AA44h (=43605d)). 2.2 Der Kernel mit einem eigenen Interrupt In der Speicherstelle 50h befindet sich nun die „fdos.sys“ Sie beinhaltet neben einer Eingabeaufforderung um Programme zu laden auch den Interrupt 21h (= 33d). Um den Kernel und die Eingabeaufforderung nutzen zu können muss der Interrupt zunächst einmal geladen werden und dann die jeweilige Interrupt Vektornummer (in diesem Falle 21h) in die Interrupt Tabelle gespeichert werden. Dazu muss man zunächst die Interrupts deaktivieren und den eigenen Interrupt Code in die Interrupt Tabelle eintragen. Danach werden die Interrupts wieder aktiviert. Die jeweilige Funktionsnummer des Interrupts wird in den AX Teilregister AH gespeichert. Über den Befehl INT 21h kann man in Kombination mit weiteren Parametern die gewünschte Funktion ausführen. Bei einem Fehler wird eine besondere Fehlerrückgabe zur Fehlerbehandlung bereitgestellt. Interrupt Funktionen sind im Grunde nicht von anderen Prozeduren oder Unterprogrammen zu unterscheiden. Als Rücksprung wird jedoch der Befehl IRET (Interrupt Return) benötigt. Nun sind wir in der Lage auf unseren eigenen Interrupt zuzugreifen. Wir werden im weiteren Verlauf nur noch mit dem INT 21h arbeiten, da dieser alle Funktionen vereint die wir benötigen. So auch die Funktionen, mit denen wir es dem Benutzer ermöglichen Dateien auf dem Datenträger auszuführen. Anders als bei FDOS 0.0.4 gibt es bei FDOS 0.0.6 gibt es nun neben ausführbaren Dateien auch Shell Befehle. Da FDOS 0.0.6 nun auch Ordner unterstütz und es natürlich Befehle geben muss, die für alle Ordner gelten, wurden einige Befehle in den Shell implementiert. Neben den oben schon beschriebenen Prozessen lädt der Kernel auch Geräte Treiber (in der Version 0.0.6 nur einen Pseudotastaturtreiber) 3. Benutzer Dokumentation In der Dokumentation lernen Sie die Standart BefehlsProgramme von FDOS 0.0.6 kennen. Daneben bietet diese Dokumentation eine Beschreibung, die Ihnen verdeutlicht, wie Sie eigene Mikroprogramme für das System entwickeln können. Das FDOS Betriebssystem 8 3.1 PC- und Systemstatus Abfrage und Informationen rund um das System Um eine kleine Hilfe zu erhalten müssen Sie den Befehl „help“ eingeben. Es wird die Datei „HELP.BIN“ auf der Diskette (im Hauptordner) ausgeführt. Die Datei enthält eine knappe Hilfe in verschiedenen Rubriken unterteilt. Die Befehle „date“ und „time“ sind identisch (sie befinden sich im Ordner „FDOS“). Die beiden Programme enthalten den gleichen Code und zeigen Datum und Uhrzeit an. Eine Statusabfrage erhalten Sie über den Befehl „status“ (im Ordner „FDOS“. Der Befehl „ver“ zeigt Ihnen die FDOS Daten an (bei diesem Befehl handelt es sich um einen Shellbefehl). 3.2 Dateisystem Der Befehl „dir“ ist ein implementierter Shell Befehl. Auf dem Bildschirm wird das aktuelle Verzeichnis wiedergegeben. Bei Verzeichnissen handelt es sich im Grunde um nichts anderes als Dateien, die eine mit dem Hauptverzeichnis vom Aufbau her ähnliche Struktur beinhalten. Mit dem Shell Befehl „cd“ wechselt man in ein Unterverzeichnis: Beispiel: cd fdos In diesem Beispiel wechselt der Benutzer vom aktuellen Verzeichnis in das Unterverzeichnis „FDOS“. Groß- und Kleinschreibung wird dabei nicht beachtet. Ordnernamen entsprechen auf Grund ihrer technischen Eigenschaft den 8.3 Konventionen (8 Zeichen Dateiname, 3 Zeichen Typenname). Mit „cd..“ wechselt man von einem von einem Unterordner in den übergeordneten Ordner. „CD/“ wechselt direkt zum Hauptverzeichnis. 3.3 Speicher- und Prozessmanagement FDOS 0.0.6 verfügt nun über ein neues Speichersystem und damit verbunden auch zum ersten mal ein kleines Prozessmanagement. Letzteres dient dazu einen Überblick über den verwendeten Speicher zu geben. Das FDOS Betriebssystem 9 Neue Speicherbelegung von FDOS 0.0.6: Name Start Bis... FDOS SYS FAT Verzeichnis Name Verzeichnis Tastatur Codes Rücksprung WORD 1 Rücksprung WORD 2 Reserviert Parameter Reserviert FDOS Verzeichnis Prozesse Neues Programm 50h 2000h 4401h 6400h 6500h 6601h 6610h 6620h 6700h 6801h 7000h 7100h 8000h 2000h 4400h 6400h 6500h 6600h 6609h 6619h 6699h 6800h 6999h 7099h 7200h Die ersten 32768 Byte stehen dem FDOS System zu. Weitere 32 KB können dann frei vom Benutzer verwendet werden. Mit dem Befehl „MEM“ erhält man eine Übersicht über die Prozesse. 3.4 Weitere Programme Die FDOS Version 0.0.4 ermöglichte zum ersten mal Programme mit Parametern zu starten. Daraufhin wurden zwei weitere Programme eingebunden. Zum ein stellt sich das Programm „SCRIPT.BIN“ (im Ordner „FDOS“) als Mini-Scriptsprachen Interpreter dar. Zur Zeit werden nur der Anschauung halber drei Befehle unterstützt. Beispiel: cd fdos script /h script echo Hallo > Wechselt nach FDOS > Gibt eine Kurzinfo aus > Gibt “Hallo” aus Neben dem Script Befehl gibt es nun auch eine Art Tastaturtreiber – „KEYB.BIN“ (im Hauptverzeichnis) für Deutsche Tastaturen. Jedenfalls werden einige Tasteneingaben für Deutsche Tastaturen angepasst. Leider ist dieses Programm noch in der Entwicklung. Über Parameter kann man zwischen der deutschen und Das FDOS Betriebssystem 10 der englischen Tastatur wählen. Beim start von FDOS wird übrigens automatisch mit „keyb /de“ die deutsche Tastatur ausgewählt 3.5 Die Konzeption eigener Mikroprogramme mit Hilfe des Kernels Die Konzeption eigener Mikroprogramme setzt die Kenntnis über die API-Funktionen des Kernels voraus. Im weiteren Verlauf werde ich auf die wichtigsten API-Funktionen des Kernels eingehen. Eine Funktion rufen Sie in Assembler über folgenden Code auf: MOV AH, 0 INT 21h ; ; ; ; ; ; Hier die Funktionsnummer eintragen Aufruf des Interrupt 21h (Kernel API) Interrupt 21h Funktionsaufruf unter NASM Manche Funktionen fordern noch weitere Parameter an, die dann über die in dieser Dokumentation (oder im Quelltext) angegebenen (Teil-) Register übergeben werden. Wir beschäftigen uns jetzt mit der Konzeption eines einfachen „Hello World“ Programms. Dieses kleine Mikroprogramm soll beim Aufruf eine Textmeldung ausgeben und sobald eine Taste gedrückt wurde sich beenden und zu FDOS zurückkehren. Die Programmierung läuft hierbei in vier Schritten ab. Als Erstes muss dem PC mitgeteilt werden, dass wir das Segment ausführen wollen, in das wir das Programm gespeichert haben. Man könnte dies als Initialisierung bezeichnen. Danach sollte der eigentliche Quellcode des Programms folgen. Mit Hilfe der Kernel Funktionen können wir die Textausgabe steuern und auf einen Tastendruck warten. Um das Programm zu beenden rufen wir die Funktion 0 des Interrupt 21h (Kernel). Als letztes muss nun nur noch der String als Variable erstellt werden, der ausgegeben werden soll. Den Quellcode des Beispielprogramms finden Sie auf der Diskette (vgl. „hello.asm“). Um das Programm nun zu kompilieren geben Sie bitte folgenden Befehl in die MS-DOS Eingabeaufforderung ein: nasm test.asm f bin -o test.bin (mehr über die Optionen von NASM erfahren Sie in der auf der Diskette beiliegenden NASM-Dokumentation). Das FDOS Betriebssystem 11 Kopieren sie das Programm auf die FDOS Diskette. Wenn Sie FDOS nun starten und „test“ eingeben, sollte das Programm ausgeführt werden. Drücken Sie eine Taste um zu FDOS zurück zukehren. 3.6 Das System beenden Um FDOS zu beenden geben Sie bitte den Befehl exit ein. Sie gelangen nun auf ein Menü mit 5 Auswahlmöglichkeiten. Drücken Sie die jeweilige Zahl, um das System mit der jeweiligen Option zu beenden. Wenn Sie FDOS einfach neu starten möchten (Schnellstart) drücken Sie die Option 1. Das System wird nun neu gebootet. Daneben stehen Ihnen zwei weitere Neustart-Optionen offen: Kalt- und Warmstart. Bei beiden wird das BIOS neu geladen. Der Warmstart ist jedoch in der Regel etwas schneller. Die 4. Option ist nur für APM fähige Rechner sinnvoll. Wenn Sie die 4. Option auswählen und Ihr Rechner ein APM fähiger Rechner ist wird er komplett ausgeschaltet. Ob ihr Rechner APM fähig ist können Sie entweder bei den meisten Rechnern aus dem BIOS oder der Gebrauchsanweisung entnehmen. 4. Reflexion Das von mir entwickelte System erhebt natürlich nicht den Anspruch auf Vollständigkeit. Es verdeutlicht nur die Grundfunktionen. In diesem Kapitel will ich auf die Probleme eingehen, die sich bei der Entwicklung meines Systems ergaben. Daneben versuche ich das System kritisch zu betrachten, vor allem im Hinblick und auf eventuelle Erweiterungen. 4.1 Hindernisse und Probleme die bei der Entwicklung des Systems auftraten Da Assembler nicht die Möglichkeit eines Debuggers bietet und der Assembler Code mitunter sehr unübersichtlich werden kann, kann es leicht zu Fehlern kommen. Es ist sehr mühselig diese Fehler ausfindig zu machen. Schon kleine Veränderungen an bestimmten Teilregistern können zu unerwarteten Problemen führen. Außerdem könnte die Fehlerursache bei machen Problemen an Bugs (Fehlern) des NASM Assemblers und nicht an meinem Code liegen. Das FDOS Betriebssystem 12 4.2 Mögliche Erweiterungen am System Im Vergleich zu Systemen wie MS-DOS, die auch noch relativ einfach aufgebaut sind, stellt sich mein System als ein ziemlich unbrauchbares dar. Bei der Einbindung eines Dateisystems stellte sich die Frage, welches Dateisystem solle man denn nun verwenden. Die drei meist verbreiteten sind FAT (File Allocation Table), genutzt von MS Windows und DOS (FAT spaltet sich in FAT 12 für Disketten, FAT 16 für kleine Festplatten und FAT 32 für große Festplatten), NTFS (New Technology File System), genutzt von MS Windows NT und Windows 2000 und den Unix/Linux Systemen wie EXT/2. Jedes dieser Dateisysteme hat seine Vor- und seine Nachteile. 3 MB Erweiterungsspeicher (XMS) (2 MB) HMA 1 MB 640 KB Expansionsspeicher (EMS) (1 MB) Hoher Speicherbereich (348 KB) Konventioneller Arbeitsspeicher (640 KB) „Speicherkonfiguration eines typischen Computers“ (MS-DOS Benutzerhandbuch, S. 128) FAT Systeme sind relativ einfach aufgebaut. Ein gutes Dateisystem erfordert jedoch auch ein gutes Speichermanagement. Im Grunde bietet mein System überhaupt kein Speichermanagement. Außerdem adressiert mein System nur den Konventionellen Arbeitsspeicher (bis 64 KB). Der hohe Speicherbereich (bis 384 KB), der Erweiterungsspeicher (XMS) oder der Expansionsspeicher (EMS) wird gar nicht angesprochen. Microsoft MS-DOS benutzt verschiedene Speichermanager, wie z.B. Emm386 um auch den Speicher oberhalb von 64 KB zu nutzen. Der Hohe Speicherbereich wird hauptsächlich von der Hardware benutzt. Das FDOS Betriebssystem 13 Erweiterungsspeichermanager wie Himen verwalten den XMS (vgl. MS-DOS Benutzerhandbuch, S. 126 f.). Man kann schon erahnen, dass die Verwaltung des Speichers ein recht kompliziertes Verfahren ist. Der Einbau einer Fenstertechnik wäre erst sinnvoll, wenn mein System Multitasking unterstützen würde. Beim Multitasking ist es möglich mehrere Prozesse nebeneinander laufen zu lassen, es erfordert jedoch ein noch viel kompliziertes Speichermanagement. Außerdem lässt sich Multitasking und Fenstertechnik nur effizient in einer GUI (engl. Graphical User Interface, dt.: Grafische Benutzeroberfläche) einsetzten. Die Entwicklung einer GUI ist jedoch nicht so einfach. Man würde schnell von Assembler zu sogenannten „Hochsprachen“ wie C, C++ oder auch Pascal übergehen, da sie die Programmierung vereinfachen (auf der anderen Seite aber auch nicht so schnelle, kleine und flüssige Programme wie Assembler erzeugen). Oft sieht man heute eine Kombination aus einer Hochsprache und Assembler. Dabei werden zum Beispiel bei Pascal oder C bestimmte Funktionen oder Befehle mit Assembler Code ergänzt (vgl. Rohde, S. 481 ff., 2001). 4.3 Schlusswort Allgemein kann ich jedoch von meinem System behaupten, dass es der Zielsetzung nahe kommt. Eigentlich hatte ich vor ein komplettes und einfaches System, möglichst ohne Bugs (Fehler) zu erstellen. Da jedoch wie schon erwähnt die Fehlersuche in Assembler sich als äußerst schwierig erweist und bei mehr als 2600 Zeilen Assembler Quelltext zu einem langwierigen Verfahren werden kann war es mir schlichtweg unmöglich alle Fehler zu beheben. Mein System jedenfalls ist lauffähig und wurde auf zwei Privat-Rechner getestet. Ich hoffe, dass ich dem interessierten Leser die Funktionsweise von Betriebssystemen etwas näher gebracht habe und durch mein eigenes System gezeigt habe, wie die Entwicklung eines Systems aussehen könnte. Viele Funktionen eines System konnte ich nur kurz erläutern. So ließe sich zum Beispiel. über Dateisysteme ganze Bücher schreiben. Das von mir erwünschte Thema der Facharbeit, auf der die weitere Ausarbeitung aufbaut („Funktionen eines einfachen Betriebssystems, dargestellt an einem Beispiel eines selbst entwickelten Betriebssystem mit ausgewählten Funktionen“) erwies sich als ein sehr komplexes Thema und bei der Bearbeitung der Ausarbeitung musste ich auf viele näheren Erläuterungen und Informationen verzichten, die sonst den Rahmen gesprengt hätten. Das FDOS Betriebssystem 14 Mein Ziel war es aber auch die Bedeutung von Betriebssystemen für den PC und für den Anwendung herauszustellen. Ich hoffe, dass ich diesem Ziel gerecht wurde. Stefan Tappertzhofen; Düsseldorf, den 3.08.2003 (Überarbeitete Version vom 3.8.2002; weitere Informationen zu den Änderungen enthält die Datei „readme.doc“) Das FDOS Betriebssystem 15 5. Anhang In diesem Anhang finden Sie eine Dokumentation über die einzelnen API Funktionen von FDOS. 5.1 API Dokumentation Programm beenden und zu FDOS zurückkehren Eingabe: Funktionsnummer (AH=) 0 Ausgabe: Keine Beschreibung: Diese Funktion beendet ein Mikroprogramm und kehrt zu FDOS zurück. Beispielcode: MOV AH, 0 INT 21h Funktionsweise: Die Werte der beiden Kernel Variablen (siehe Übersicht über Speichermanagement) werden nacheinander in den Stack als WORD Zahlen geschrieben. Per IRET springt die CPU nun an die Stelle zurück, wo das Programm ursprünglich geladen wurde. Nullterminierten String ausgeben Eingabe: Funktionsnummer (AH=) 1, SI = Verweis zum String Ausgabe: Auf dem Bildschirm Beschreibung: Schreibt einen Null terminierten String auf den Bildschirm. Wenn der PC das Zeichen 0 erreicht hat bricht er die Funktion ab, ansonsten würde eine Endlosschleife entstehen. Beispielcode: JMP SHORT WriteAusgabeString DB ’Hallo’,13,10,0 Write: MOV AH, 1 MOV SI, AusgabeString INT 21h Funktionsweise: Der API wird mittels dem Offset Register SI die Speicherstelle des Strings überliefert. Danach wird der String eingelesen, indem SI jeweils um eins addiert und der Wert der Speicherstelle SI in AL geschrieben wird. Sobald die Funktion auf den AL Wert = 0 trifft, wird der Rücksprung eingeleitet. Würde man also den String nicht null terminieren hätte man eine Endlosschleife. Das FDOS Betriebssystem 16 Null terminierten String eingeben Eingabe: Funktionsnummer (AH=) 2, DI = ZielString Ausgabe: Zielstring Beschreibung: Schreibt über die Tastatur einen String bis Enter oder Return gedrückt wird. Der String ist NullTerminiert, d.h. als letztes Zeichen wird automatisch eine 0 geschrieben. Beispielcode: JMP SHORT ReadZielString TIMES 10 DB 0 Read: MOV AH, 2 MOV DI, ZielString INT 21h Funktionsweise: Mittels einer BIOS Funktion findet sich die aktuell gedrückte Taste als ASCI Code im Teilregister AL. Dieser wird in den String, auf den DI zeigt gespeichert und DI um eins erhöht. Wenn Enter gedrückt wurde wird der String noch null terminiert. Die Back Taste wird ebenfalls unterstützt. FDOS Version ermitteln Eingabe: Funktionsnummer (AH=) 3 Ausgabe: AL = Hauptversion, AH = Unterversion, BL = Revision, BH = Sprachcode, CL = Jahrhundert, CH = Jahr, DL = Monat, DH = Tag Beschreibung: Liefert die FDOS Version zurück. Beispielcode: MOV AH, 3 INT 21h MOV [Hauptversion], AL Funktionsweise: Die Werte für die Version und das Datum werden einfach nach einem bestimmten Muster in die jeweiligen Rückgabe-Register geschrieben. Das FDOS Betriebssystem 17 Bildschirm leeren (Clear Screen, CLS) Eingabe: Funktionsnummer (AH=) 4 Ausgabe: Bildschirm Beschreibung: Leert den Bildschirm und bewegt den Zeiger zum Anfang. Beispielcode: MOV AH, 4 INT 21h Funktionsweise: Eine BIOS Funktion wird aufgerufen, um den Bildschirm zu leeren und den Text Zeiger wieder an den Anfang zu setzten. FDOS beenden Eingabe: Funktionsnummer (AH=) 5, AL = Modus Ausgabe: keine Beschreibung: Je nach Modus wird FDOS beendet oder neugestartet. Beispielcode: MOV AH, 5 MOV AL, 3 ; Abschalten INT 21h Funktionsweise: Je nach Modus wird entweder ein BIOS Interrupt aufgerufen, um das System einfach Neuzustarten. Bei anderen Modi werden besondere Speicherstelle geladen, die das Abschalten/Neustarten des Rechners verursachen. APM fähige Rechner können mittels Interrupt 15 ausgeschaltet werden. Auf Tastendruck warten Eingabe: Funktionsnummer (AH=) 6 Ausgabe: AL = Zeichen, CH = Scan Code Beschreibung: Auf Tastendruck warten. Beispielcode: MOV AH, 6 INT 21h Funktionsweise: Diese Funktion macht nichts anderes, als eine ALIAS Funktion für die BIOS Funktion „Auf Tastendruck warten“ zu sein. Das FDOS Betriebssystem 18 WORD in BYTE umwandeln Eingabe: Funktionsnummer (AH=) 7, BX = Zahl (< 256) Ausgabe: BL = BYTE(BX) Beschreibung: Wandelt eine in BX gespeicherte WORD Zahl in ein Byte um. Beispielcode: MOV AH, 7 MOV BX, 233 INT 21h Funktionsweise: Diese Funktion ist eigentlich unnötig. Für Benutzer, die in Assembler noch nicht so ganz geübt sind stellt sie jedoch eine besonders einfache Möglichkeit dar Daten in andere Datentypen umzuwandeln. BYTE nach WORD Eingabe: Funktionsnummer (AH=) 8, BL= Zahl Ausgabe: BX Beschreibung: Wandelt ein Byte in ein Word um. Beispielcode: MOV AH, 8 MOV BL, 233 INT 21h Funktionsweise: Diese Funktion ist eigentlich unnötig. Für Benutzer, die in Assembler noch nicht so ganz geübt sind stellt sie jedoch eine besonders einfache Möglichkeit dar Daten in andere Datentypen umzuwandeln. Das FDOS Betriebssystem 19 Datei einlesen und als Programm ausführen Eingabe: Funktionsnummer (AH=) 9, BX = Segment, DX = Verweis auf Dateiname Ausgabe: keine Beschreibung: Lädt die jeweilige Datei in die Speicherstelle BX und führt das Programm aus. Beispielcode: MOV AH, 9 MOV DX, FileName MOV BX, 4000h INT 21h Funktionsweise: Zunächst wird im aktuellen Verzeichnis nach der Datei gesucht, wobei DX auf den Dateinamen zeigt. Wurde er nicht gefunden bricht die Funktion ab und gibt AL = 3 als Fehlermeldung zurück. Wird die Datei dagegen gefunden wird der erste Cluster ermittelt und geladen. Danach wird die FAT geöffnet und der Eintrag des ersten Clusters stellt den Verweis zum nächsten Cluster in der FAT dar. Dieser Cluster wird wiederum eingelesen und der FAT Eintrag stellt wiederum den nächsten Cluster dar. Dies geschieht solange bis EOF (End of File) gefunden wurde. Danach wird das Programm ausgeführt. Die Funktion 10 ist identisch mit der Funktion 6. Zeichen ausgeben Eingabe: Funktionsnummer (AH=) 11, AL = ASCI Code Ausgabe: Bildschirm Beschreibung: Gibt ein Zeichen auf dem Bildschirm aus Beispielcode: MOV AH, 9 MOV AL, ‘A‘ INT 21h Funktionsweise: Diese Funktion macht nichts anderes, als eine ALIAS Funktion für die BIOS Funktion „Zeichen ausgeben“ zu sein. Das FDOS Betriebssystem 20 WORD nach STRING Eingabe: Funktionsnummer (AH=) 12, BX = Zahl, DI = String Variable Ausgabe: DI Beschreibung: Konvertiert ein WORD in einen STRING Beispielcode: MOV AH, 12 MOV DI, Buffer MOV BX, 1234 INT 21h Funktionsweise: Das Prinzip ist es die jeweils vorne stehende Zahl herauszufiltern und in ein ASCI Zeichen zu verändern. Eine WORD Zahl kann dargestellt maximal 5 Zeichen lag sein, d.h. zunächst wird die Zahl durch 10.000 dividiert. Nun hat man in AX die vorderste Zahl stehen. Der Rest dieser Division wird dann gespeichert und durch 1.000 dividiert und so weiter. STRING nach WORD Eingabe: Funktionsnummer (AH=) 13, SI = EingabeString Ausgabe: BX (Zahl) Beschreibung: Wandelt einen String in ein Word um. Beispielcode: MOV AH, 13 MOV SI, Buffer INT 21h Funktionsweise: Die Werte, die hinter SI liegen werden eingelesen und addiert, wobei der zweite Wert = zweiter Wert x 10, der dritte Wert = dritter Wert x 100 und so weiter ist. Systeminformationen Eingabe: Funktionsnummer (AH=) 14 Ausgabe: AX = konventioneller Speicher, BL (0 = Real Mode, 1 = Protected Mode), CX = Erweiterungsspeicher Beschreibung: Gibt die Systeminformationen zurück Beispielcode: MOV AH, 14 INT 21h MOV [MB_Ram], CX Funktionsweise: Diese Funktion greift auf BIOS Daten zurück. Das FDOS Betriebssystem 21 Prozessorinformationen Eingabe: Funktionsnummer (AH=) 15 Ausgabe: AL (1 = Pentium, 2 = P Pro, P II, P Celeron, P 4, 3 = P 3, 4 = unbekannt) Beschreibung: Gibt die Prozessorinformationen zurück Beispielcode: MOV AH, 15 INT 21h MOV [CPU_Type], AL Funktionsweise: Diese Funktion greift auf BIOS Daten zurück. Kommandozeile Eingabe: Funktionsnummer (AH=) 16, DI = EingabeString Ausgabe: DI Beschreibung: Gibt die Parameter der Kommandozeile zurück Beispielcode: MOV AH, 16 MVO DI, TestString INT 21h Funktionsweise: Der Kommandozeileninterpreter speichert bei jeden Start eines neuen Programms die Parameter an einer besonderen Speicherstelle (siehe Speichermanagement: Shell Variable). Diese Funktion schreibt in den String, auf den DI zeigt den Wert des Parameters. FAT einlesen Eingabe: Ausgabe: Beschreibung: Beispielcode: Funktionsnummer (AH=) 17, BX = Segment BX FAT einlesen MOV AH, 17 MOV BX, 7000h INT 21h Funktionsweise: Anhand der Diskettendaten wird errechnet wo die FAT liegt und dann mittels ReadSector eingelesen. Das FDOS Betriebssystem 22 ROOT Dir einlesen Eingabe: Funktionsnummer (AH=) 18, BX = Segment Ausgabe: BX Beschreibung: ROOT Dir einlesen Beispielcode: MOV AH, 18 MOV BX, 7000h INT 21h Funktionsweise: Anhand der Diskettendaten wird errechnet wo das RootDir liegt und dann mittels ReadSector eingelesen. Datei einlesen Eingabe: Funktionsnummer (AH=) 20, BX = Segment, DX = Dateiname Ausgabe: BX Beschreibung: Datei einlesen Beispielcode: MOV AH, 20 MOV DX, [FileName MOV BX, 7000h INT 21h Funktionsweise: Zunächst wird im aktuellen Verzeichnis nach der Datei gesucht, wobei DX auf den Dateinamen zeigt. Wurde er nicht gefunden bricht die Funktion ab und gibt AL = 3 als Fehlermeldung zurück. Wird die Datei dagegen gefunden wird der erste Cluster ermittelt und geladen. Danach wird die FAT geöffnet und der Eintrag des ersten Clusters stellt den Verweis zum nächsten Cluster in der FAT dar. Dieser Cluster wird wiederum eingelesen und der FAT Eintrag stellt wiederum den nächsten Cluster dar. Dies geschieht solange bis EOF (End of File) gefunden wurde. Danach springt die Funktion zurück. Das FDOS Betriebssystem 23 String ausgeben mit fester Länge Eingabe: Funktionsnummer (AH=) 21, SI = String, CX = Länge Ausgabe: Bildschirm Beschreibung: String ausgeben mit fester Länge Beispielcode: MOV AH, 21 MOV CX, 300 MOV SI, [TestString] INT 21h Funktionsweise: Der String auf den SI zeigt wird solange abgearbeitet, bis der interne Zähler den übergebenen maximal Wert enthält. Freier Speicher ermitteln Eingabe: Funktionsnummer (AH=) 22 Ausgabe: ECX = Anzahl der freien Cluster, BX = Freier Speicher in KB Beschreibung: Freier Speicher ermitteln (der Diskette) Beispielcode: MOV AH, 22 INT 21h Funktionsweise: Die FAT wird nach „0“-Einträge abgearbeitet und deren Anzahl gespeichert. Nun hat man die Anzahl der freien Cluster. Verrechnet mit der Clustergröße und der Anzahl der freien Cluster erhält man den freien Speicher in KB. 32 Bit Zahl in ASCI Eingabe: Funktionsnummer (AH=) 23, EBX = 32 Bit Zahl, DI = Ausgabe String Ausgabe: DI Beschreibung: Freier Speicher ermitteln (der Diskette) Beispielcode: MOV AH, 23 MOV DI, Buffer MOV EBX, 100000 INT 21h Funktionsweise: Siehe Word in ASCI Das FDOS Betriebssystem 24 Neuen Prozess einfügen Eingabe: Funktionsnummer (AH=) 24, BX = Prozess Typ (siehe Liste unten), DX = Star Adresse, DI = Größe in Byte Ausgabe: Prozess Tabelle Beschreibung: Fügt einen neuen Prozess in die Prozess Tabelle ein Werte für Prozess Typ:1: FDOS System, 2: FAT, 3: Dir, 4: Dir Name, 5: Tastatur, 6: Kernel Variablen, 7: Reserviert, 8: Shell Variable, 9: Shell Dir, 10: Prozesssteuerung, 11: Applikation Beispielcode: MOV AH, 24 MOV DI, 1024 ; Byte MOV DX, 8000h ; Segment MOV BX, 11 ; Applikation INT 21h Funktionsweise: In der Prozesstabelle wird ein neuer Prozess mit den übergebenen Daten gespeichert. Prozess löschen Eingabe: Funktionsnummer (AH=) 25, BX = Prozess ID Ausgabe: Prozess Tabelle Beschreibung: Löscht einen Prozess aus der Prozesstabelle Beispielcode: MOV AH, 25 MOV BX, 11 INT 21h Funktionsweise: Die Prozesstabelle wird nach der ID aus BX durchsucht. Wenn der Prozess gefunden wurde wird er gelöscht. Prozesstabelle leeren Eingabe: Funktionsnummer (AH=) 26 Ausgabe: Prozess Tabelle Beschreibung: Löscht alle Prozesse aus der Prozesstabelle Beispielcode: MOV AH, 26 INT 21h Funktionsweise: Die Prozesstabelle wird komplett durch 0-en ersetzt und ist damit für den Kernel gelöscht. Das FDOS Betriebssystem 25 5.2 Literatur-, Hilfsmittel- und Quellenverzeichnis Olejko, André: Assembler ASM 2.1, Demo-Software Packet, Stand 3. März 2002, http://assembler86.de, Das Software Packet liegt auf der Diskette bei. Ich habe sowohl Codebeispiele aus dem Software Packet entnommen, als auch die Hilfen (als Anwendungen im Ordner “books” abgelegt) benutzt, Kommentare in meinem Quelltext machen darauf aufmerksam, wenn Code aus dem Software Packet entnommen wurde Rohde, Joachim: Assembler GE-PACKT, 1. Auflage 2001, mitipVerlag Bonn; Diese Assembler Referenz diente mir als Hilfsmittel Siegert, Prof. Dr. Hans-Jürgen und Baumgarten, Prof. Dr. Uwe: Betriebssysteme: Eine Einführung, Technische Universität München, 5. überarbeitete und erweiterte Auflage 2001, Oldenbourg Verlag München Wien Podschun, Trutz Eyke: Das Assembler-Buch: Grundlagen und Hochsprachenoptimierung, 3. aktualisierte Auflage 1996, Reading, Mass. [u.a.]: Addision Wesley 1996 (Addison-Wesley Publishing Company), dieses ”Assembler-Buch” diente mir als Hilfsmittel TecChannel: Der Bootmanager, © IDG Interactive 2001; Stand 3. März 2002; http://www.tecchannel.de Lee, Robert: LeeOS Web page, © Copyright 2002 by Robert Lee. All rights reserved; http://leeos.cjb.net; LeeOS Operating System (die Quellcodes des Systems liegen auf der Diskette und ein Download ist möglich auf der Seite von LeeOS); LeeOS Forum Microsoft: Microsoft® Encarta® 99 Enzyklopädie, © 1993-1998 Microsoft Corporation. Alle Rechte vorbehalten; sowie Microsoft MS-DOS Benutzerhandbuch, (Benutzerhandbuch Microsoft MSDOS 6.22 - Für das MS-DOS Betriebssystem), © 1985-1994 Microsoft Corporation. Alle Rechte vorbehalten. NASM (The Netwide Assembler): Version 0.98, Stand 3. März 2002, http://www.web-sites.co.uk/nasm (mit diesem Assembler, der auf der Diskette beiliegt wurde das System entwickelt) Gerken, Till: Protected Mode Tutorial, Version 0.02, Stand 10. März 2002, http://www.nondot.org/sabre/os/files/ProtectedMode/PMTUT.txt Das FDOS Betriebssystem 26 Brown, Ralf: Ralf Brown's Interrupt List, Indexed HTML Version Release 6, Stand 3. März 2002, http://www.ctyme.com/intr/int.htm Schnupp, Dr. Peter: Standart-Betriebssysteme, 2. verbesserte Auflage 1990, Oldenbourg Verlag München Wien Lattner, Chris: The Operating System resource center (OSRC), Copyright © 1995-2001, Stand 3. März 2002, http://www.nondot.org/sabre/os/articles Schaefer, Thomas: WWW-Ecke mit Infos rund um den PC, Stand 3. März 2002, http://www.tuchemnitz.de/informatik/RA/kompendium/index.html Ziemmermann, Marco: “Organisation der Diskette unter DOS”, Stand 3. März 2002, http://www.tuchemnitz.de/informatik/RA/kompendium/vortraege_96/Floppy/disk4 .htm, Marjamäki, Daniel: Daniels NASM Bootstrap Tutorial, Stand 14.08.2002 (Datum auf der Seite angegeben), http://www.nondot.org/sabre/os/files/Booting/nasmBoot.html Matthew Vea: All Copyright © 2001; Last Modified 21 August 2002; FAT 12 Code http://www.geocities.com/mvea/bootstrap.htm Simeon Maxein: Diverse Erklärungen zum FAT 12 System 5.3 Stichwortverzeichnis A Anwendungsprogramm Schnittstelle .................................................. 6 Anwendungsprogrammen .............................................................. 3, 4 API...................................................................................................... 6 API Dokumentation........................................................................... 19 API-Funktionen ................................................................................. 13 APM.................................................................................................. 14 Application Program Interfaces........................................................... 6 Arbeitsspeicher ......................................................................... 5, 8, 16 Assembler..................................................................... 3, 7, 15, 17, 18 Das FDOS Betriebssystem 27 Aufgabenmuster ................................................................................. 5 B Basic Input/Output System ................................................................. 5 BeeOS ................................................................................................ 5 Befehle ............................................................................................... 6 Begriff des Betriebssystems ............................................................... 3 Benutzer ............................................................................................. 7 Benutzer Dokumentation .................................................................. 10 Benutzerumgebung ............................................................................ 6 Betriebssysteme ................................................................................. 3 BIOS ............................................................................................. 5, 14 Bootsektor .......................................................................................... 5 Bootsignatur ................................................................................... 6, 9 Bootvorgang ....................................................................................... 5 Bootvorgang einer bootfähigen Diskette ............................................. 5 Bugs ........................................................................................... 15, 17 C C ..................................................................................................... 17 C++................................................................................................... 17 cd ..................................................................................................... 11 Central Processing Unit ...................................................................... 5 Cluster ................................................................................................ 9 Cluster-Kette....................................................................................... 9 CPU .................................................................................................... 5 D Dateigröße .......................................................................................... 8 Dateiinhalt........................................................................................... 9 Dateinamen ........................................................................................ 8 Dateisystem .............................................................................. 6, 8, 11 Dateisystems .................................................................................... 16 Dateizuordnungstabelle ...................................................................... 8 Datenträger Label ............................................................................... 8 Debugger .......................................................................................... 15 Definition ............................................................................................ 4 deutsche Tastatur ............................................................................. 13 Diensten ............................................................................................. 4 DIN Norm 44300................................................................................. 4 dir ..................................................................................................... 11 Diskettenspezifische Eigenschaften ................................................... 6 Das FDOS Betriebssystem 24 DOS .................................................................................................. 16 E einfache Betriebssysteme .................................................................. 3 Eingabeaufforderung .......................................................................... 9 Emm386 ........................................................................................... 17 EMS .................................................................................................. 17 Erweiterungen .................................................................................. 15 Erweiterungsspeicher ....................................................................... 17 exit .................................................................................................... 14 Expansionsspeicher ......................................................................... 17 EXT/2 ............................................................................................... 16 F FAT ............................................................................................... 8, 16 FAT 12 .......................................................................................... 8, 16 FAT 16 .............................................................................................. 16 FAT 32 .............................................................................................. 16 FDOS ......................................................................... 7, 10, 11, 13, 14 Fehler ......................................................................................... 10, 17 Fehlern ............................................................................................. 15 Fenstertechnik .................................................................................. 17 Festplatte ............................................................................................ 5 File Allocation Table ..................................................................... 8, 16 Floppy Disk Operating System ........................................................... 7 Freien Speicherplatz ........................................................................... 9 Funktionsweise ................................................................................... 4 Funktionsweise eines Betriebssystems .............................................. 3 G Geräte Treiber .................................................................................. 10 Grafische Benutzeroberfläche .......................................................... 17 grafischen Oberfläche ........................................................................ 4 Graphical User Interface ................................................................... 17 GUI ................................................................................................... 17 H Hardware ............................................................................................ 5 Hardwareressourcen .......................................................................... 5 Hauptverzeichnis .......................................................................... 8, 11 Hello World ....................................................................................... 13 help................................................................................................... 10 Das FDOS Betriebssystem 25 Hilfe .................................................................................................. 10 Himen ............................................................................................... 17 Hindernisse und Probleme ............................................................... 15 Hochsprache .................................................................................... 17 I INT 21h ............................................................................................... 9 Interrupt ........................................................................................ 9, 10 Interrupt 21h ............................................................................... 13, 14 Interrupt Return ................................................................................ 10 Interrupt Tabelle ................................................................................. 9 Interrupt Vektornummer ...................................................................... 9 Interrupts ............................................................................................ 6 IRET ................................................................................................. 10 K Kalt- und Warmstart.......................................................................... 14 Kernel ........................................................................................... 6, 14 L Leistungen .......................................................................................... 3 Linux ................................................................................................... 5 M Mac-OS .............................................................................................. 5 MASM ................................................................................................. 7 MEM ................................................................................................. 12 Microsoft Windows 98 ........................................................................ 4 Microsoft Windows XP ........................................................................ 4 Mikroprogramm ................................................................................ 13 Mikroprogramme .............................................................................. 13 modernen Betriebssystemen .............................................................. 4 MS Windows..................................................................................... 16 MS-DOS ............................................................................................. 4 Multitasking....................................................................................... 17 N NASM ..................................................................................... 7, 13, 15 NTFS ................................................................................................ 16 Das FDOS Betriebssystem 26 P Parameter ................................................................................... 12, 13 Parametern ......................................................................................... 9 Pascal ............................................................................................... 17 Peripheriegeräte ................................................................................. 5 Protected Mode .................................................................................. 8 Prozesse .......................................................................................... 17 Prozessmanagement........................................................................ 11 Prozessor ........................................................................................... 5 Pseudotastaturtreiber ....................................................................... 10 Q Quelltext ........................................................................................... 18 R Real Mode .......................................................................................... 8 Rechenanlage .................................................................................... 4 Rechensystems .................................................................................. 4 Reflexion .......................................................................................... 15 Register ............................................................................................ 13 rrupt 21h ............................................................................................. 9 S Schlusswort ...................................................................................... 17 Schnellstart ....................................................................................... 14 Schwerpunkt ....................................................................................... 3 Scriptsprachen Interpreter ................................................................ 12 Segment ........................................................................................... 14 Sektor ................................................................................................. 5 Shellbefehl ........................................................................................ 11 sis Ein- und Ausgabesystem .............................................................. 5 Speicher- und Prozessmanagement ................................................ 11 Speicherbelegung............................................................................. 12 Speicherstelle ................................................................................. 5, 9 Speichersystem ................................................................................ 11 STACK ............................................................................................... 8 Standart Betriebssysteme .................................................................. 4 StartCluster......................................................................................... 8 String ................................................................................................ 14 System beenden............................................................................... 14 Das FDOS Betriebssystem 27 T TASM ................................................................................................. 7 Tastaturtreiber .................................................................................. 13 Tastendruck ...................................................................................... 14 Teilregister ........................................................................................ 15 Textausgabe ..................................................................................... 14 The Netwide Assembler Project ......................................................... 7 U UI ................................................................................................... 6, 7 Unterverzeichnis ............................................................................... 11 User Interface ................................................................................. 6, 7 V ver .................................................................................................... 10 Verzeichnis ....................................................................................... 11 Verzeichnisattribute ............................................................................ 8 Verzeichnisses ................................................................................... 8 W Warmstart ......................................................................................... 14 Windows 2000 .................................................................................... 3 Windows NT ....................................................................................... 5 X XMS .................................................................................................. 17 Das FDOS Betriebssystem 28