Basic Input Output System — Änderungen 10924 → 10925

Zeile 8: Zeile 8:
 
Nach dem POST versucht es von einer Liste von Laufwerken einen Bootloader zu laden. Dieser wird an Adresse 0x7C00 geladen und dann ausgeführt; Ab da hat das Betriebssystem die volle Kontrolle über den PC.
 
Nach dem POST versucht es von einer Liste von Laufwerken einen Bootloader zu laden. Dieser wird an Adresse 0x7C00 geladen und dann ausgeführt; Ab da hat das Betriebssystem die volle Kontrolle über den PC.
  
−
Allerdings ist das BIOS (zumindest im [[Real Mode]]) noch immer aktiv: Es stellt eine Menge an Interrupts zur Kommunikation mit den verschiedenen Peripheriegeräten bereit.
+
Dennoch bleibt das BIOS im Hintergrund aktiv: Solange sich der Kernel des aktiven Betriebssystems im [[Real Mode]] befindet, kann er durch Interrupts, ähnlich denen bei [[DOS]] und [[Linux]], auf Funktionen des BIOS zurückgreifen. Dadurch kann beispielsweise ein einfacher Bootloader mit Hilfe des BIOS den Kernel laden, indem er den passenden Interrupt aufruft und somit den Kernel lädt, und das alles ohne Treiber im Bootloader. ''In diesem Fall bräuchte man den Interrupt Nr. 13 mit AH = 02 "DISK - READ SECTOR(S) INTO MEMORY".'' Weitere Funktionen sind etwa das Umschalten zwischen verschiedenen Grafikmodi oder auch das Auslesen der Größe des Arbeitsspeichers, was ohne das BIOS überhaupt nicht möglich wäre.
 +
 
 +
Diese Funktionalität geht allerdings verloren, wenn man in den [[Protected Mode]] oder gar in den [[Long Mode]] schaltet. Wenn man trotzdem noch eine BIOS-Funktion benötigt, kann man beispielsweise den [[Virtual 8086 Mode]] einsetzen. Da die Treiber des BIOS jedoch in der Regel ziemlich langsam sind, sollte man die entsprechenden Treiber im Kernel implementieren, soweit dies möglich ist (z.B. [[Floppy]]-Treiber).
  
 
== Weblinks ==
 
== Weblinks ==