Betriebssysteme


Unterpunkte dieser Seite

Systemstart
Aufbau und Inhalt des Speichers nach dem Systemstart



Systemstart

Der Benutzer kann im BIOS des Rechners die Bootreihenfolge der Laufwerke festlegen. Nach dem Einschalten des Computers untersucht das BIOS nacheinander die Laufwerke und probiert von den Laufwerken aus der Spur 0 den ersten Sektor (= Sektor 0) zu laden. Dieser erste Sektor wird auch BootRecord oder BootSector genannt. Jeder Sektor ist 512 (0x01FE) Byte groß. Das Bios untersucht nun die letzten zwei Bytes des BootRecords. Falls es hier den Wert 0xAA55 findet, wird das BIOS den ersten Sector in den Speicher an die Adresse 0x7C00 übertragen und es wird den CPU anweißen, das Programm an dieser Speicherstelle auszuführen.

Falls das BIOS den Wert 0xAA55 nicht findet, gibt es einen Fehler aus, und das System bleibt stehen.

Um ein Betriebsystem zu schreiben, müssen wir also den ersten Sektor eines Laufwerks mit einem Programm füllen, das 512 Byte groß ist und die letzten 2 Byte mit 0xAA55 belegt. Dieses Programm kann entweder bereits das Betriebssystem sein, oder es handelt sich um ein Programm, das das Betriebsystem lädt. Da 512 Byte sehr sehr wenig Platz ist, wird in den meisten Fällen ein Programm im BootRecord abgelegt, das das Betriebsystem von einem größeren Laufwerk aus nachlädt, so das das Betriebsystem aus mehr als 512 Byte Code bestehen kann. Solch ein Programm wird BootLoader oder BootStrap genannt.

Zu dem Zeitpunkt, an dem der Code im BootRecord an Stelle 0x7C00 kopiert worden ist und seine Ausführung begonnen wird, sind die Register CS, DS, ES, FS und GS alle mit dem Wert 0 belegt. Der Processor arbeitet im REAL-Mode. Caching und Paging sind abgeschaltet und das A20 Gatter ist eventuell geschloßen. (Was soll das bitte bedeuten ?). Das dl Register ist mit dem Code des Laufwerks belegt, von dem der BootSector geladen wurde. Die erste Festplatte hat beispielsweise die Nummer 0x80 und das erste Diskettenlaufwerk hat die Nummer 0x0.



Aufbau und Inhalt des Speichers nach dem Systemstart Zu dem Zeitpunkt, an dem der Code im BootRecord an Stelle 0x7C00 kopiert worden ist und seine Ausführung begonnen wird, hat der Hauptspeicher folgende Eigenschaften: Er ist 1 MegaByte groß, da ein 16 Bit Processor mit einem 16 Bit Adressregister 2 hoch 16 unterschiedliche Orte Referenzieren kann. Beim 16 Bit Intel Processor ist jeder dieser 2 hoch 16 Orte selber wieder 16 Byte groß. Das ergibt insgesammt einen Bereich der 1048576 Byte groß ist, was einem MegaByte entspricht.

Irgendwo befindet sich das BIOS, da es aus dem ROM in den Hauptspeicher kopiert wurde.

An Adresse 0x7C00 befindet sich der BootLoader Code aus dem BootSector.





zum Seitenanfang
zur Hauptseite

Letzte Änderung: 28.04.2007