BIOS (DOS)

Das BIOS (IPA: [ˈbaɪɔs], Aussprache) ist eine einfache Hardwareabstraktionsschicht früher Betriebssysteme für Mikrocomputer. Sowohl für das Konzept als auch für den Begriff „BIOS“ für Basic Input/Output System gilt Gary Kildall, Entwickler des Betriebssystems CP/M (Control Program for Microcomputers), als Erfinder.

Ein BIOS als Abstraktionsschicht ist in fast allen PC-kompatiblen Disk Operating Systemen (DOS) zu finden. Dieses DOS-BIOS ist ein Teil vom Betriebssystem, das sich beim IBM-PC-kompatiblen Computer auf Routinen (Funktionsaufrufe) des PC-BIOS (auch „ROM-BIOS“, oft auch aus Hardwaresicht „BIOS-ROM“) stützt – es ist aber nicht dasselbe wie das im ROM befindliche BIOS mit gleichem Namen. Auch auf x86-PCs der frühen 1980er ohne BIOS – sog. „DOS-PCs“ – wird von CP/M und DOS das BIOS als Komponente des Betriebssystems verwendet, das sich in einer Systemdatei auf einem Bootmedium befindet.[1] Die BIOS-Datei heißt unter MS-DOS üblicherweise IO.SYS, unter DR DOS bis Version 3.41 DRBIOS.SYS, ab DR DOS 5.0, bei frühen Versionen von MS-DOS und bei PC DOS IBMBIO.COM.

Geschichte

In den frühen 1970er Jahren kamen zunehmend Mikrocomputer verschiedener Hersteller auf, auf denen meist das Betriebssystem CP/M lief. Da dieses System jedoch für jeden Computer jeweils speziell angepasst werden musste, verschob Gary Kildall mit jeder Version jene Teile des Quellcodes, die jeweils angepasst werden mussten, in das von ihm getaufte „BASIC I/O SYSTEM“ – „BIOS“, während der Betriebssystemkern BDOS auf die vom BIOS zur Verfügung gestellten Funktionsaufrufe zurückgriff. Die erste Version, in der das BIOS in dieser Form auftaucht, war CP/M 1.3 von 1975. Das Basis-System, bestehend aus BIOS und BDOS, bezeichnete Gary Kildall bei dieser frühen CP/M-Version als „Floppy Disk Operating System“, kurz FDOS.[2]

Das BIOS als Systemdatei des Betriebssystems ist nicht mit dem Firmware-BIOS eines IBM-PC-kompatiblen Computers gleichzusetzen. Auch vor dem PC-BIOS gab es ähnliche Firmware mit jedem Computer, jedoch war diese nicht genormt, was eine Anpassung seitens des Betriebssystems für jedes einzelne Computersystem notwendig machte. Diese Anpassung wurde gekapselt im DOS-BIOS vorgenommen, um die Portierung des Betriebssystems zu erleichtern. Erst mit dem IBM PC von 1981 ist dieser Bestandteil des Betriebssystems für jeden kompatiblen PC gleich.

Funktion

Das BIOS ist wesentlich für den Startvorgang auf Mikrocomputern der 1970er Jahre, den späteren Personal Computern, und dem IBM PC und dazu kompatiblen Computern mit PC-BIOS. Es ist nach dem Bootsektor der erste Betriebssystemteil von CP/M und PC-kompatiblem DOS (MS-DOS, PC DOS und dazu kompatibles DOS), der geladen wird, und stellt Funktionen bereit, um den zweiten Teil, den Kernel, und im Anschluss die Shell (auch Kommandointerpreter oder Kommandozeileninterpreter genannt) zu starten. Diese drei Teile wurden von Gary Kildall in CP/M als „drei Schalen“ bezeichnet: das BIOS als die erste, der Kernel als die zweite und die Shell (unter CP/M der „Console Command Processor“, kurz CCP) als die dritte Schale. Der Entwickler von 86-DOS, Tim Paterson, orientierte sich bei seinem Betriebssystem an CP/M und übernahm viele seiner Eigenschaften, darunter auch die Aufteilung in BIOS, Kernel und Kommandozeileninterpreter. Aus 86-DOS entwickelten Microsoft und IBM schließlich PC DOS und MS-DOS, die sich als Industriestandard für PCs etablierten.

Die Startfunktion eines Personal Computers lädt ein Startprogramm von einer vordefinierten Stelle eines Startmediums in den Speicher. Dieser Vorgang wird als „Bootstrapping“ bezeichnet. Bei vielen Systemen, darunter auch beim IBM PC, ist diese vordefinierte Stelle ein Sektor auf einer Diskette oder einer Festplatte: der sog. Bootsektor.

  • Der Bootsektor enthält ein kleines Programm, „Bootcode“, das aber aufgrund der Größenlimitierung des Sektors von 512 Bytes weitere Teile nachladen muss: dieser lädt das BIOS in vordefinierter Art und Weise:
    • entweder direkt (z. B. nächster Sektor), oder
    • eine Datei, die in einem bestimmten Sektor auf dem Speichermedium sein muss, oder
    • der Bootcode selbst kann bereits das Dateisystem (z. B. FAT12) verarbeiten und nach der Datei, die das BIOS enthält, suchen.
  • Das Bootcode übergibt die Kontrolle an das geladene BIOS, das dann folgende Aktionen durchführt:
  1. Es lädt weitere Sektoren, den nicht in den ersten drei Sektoren des Bootdatenträgers gelegenen Rest von sich selbst, in den Speicher.
  2. Es initialisiert der Reihe nach die Standard-Gerätetreiber, wie die Systemkonsole CON, die Echtzeituhr CLOCK, Serielle Schnittstelle, Datenträger, und weitere. Ab diesem Zeitpunkt sind alle Standard-Geräte verfügbar.
  3. Es lädt den Kernel und ruft die Initialisierungsroutine auf. Bei PC-kompatiblem DOS ist der Kernel einer separaten Datei (meist IBMDOS.COM oder MSDOS.SYS) gespeichert.
  • Ist der Kernel geladen, ist das Betriebssystem grundsätzlich bereit, allerdings ohne Shell nicht benutzbar. In weiterer Folge wird daher ein Kommandozeileninterpreter als Standard-Shell SHELL, bei DOS ist das COMMAND.COM, in den Speicher geladen und ausgeführt.
ErscheinungsjahrHersteller / EntwicklerBetriebssystemBIOSKernelStandard-ShellAnmerkungen
1976Digital ResearchCP/M 1.3BDOS, direkt1CCPdas BIOS und der Kernel werden zusammengefasst
1980SCP86-DOSdirekt186DOS.SYSCOMMAND.COMlief nicht auf dem IBM PC
1981SCP, Microsoft, IBMPC DOSIBMBIO.COMIBMDOS.COMCOMMAND.COMbis Version 6.0 großteils identisch zu MS-DOS
1982MicrosoftMS-DOS 1.x (OEM)IOSYS.COMMSDOS.COMCOMMAND.COMbspw. COMPAQ MS-DOS 1.10[3]
1982Microsoft (mit IBM)MS-DOS (ab 2.0)[4]IO.SYSMSDOS.SYSCOMMAND.COMgroßteils identisch mit PC DOS; verwendete teilweise auch IBMBIO.COM/IBMDOS.COM[5]
1982Digital ResearchCP/M-86BDOS, direkt1CCPBDOS-Version 2.2; erste Version für die x86-Architektur und den IBM PC
1985Digital ResearchDOS Plus (bis 2.01), DR DOS (ab 3.31)IBMBIO.COMIBMDOS.COMCOMMAND.COMbis Version 5.0 intern CP/M-Strukturen, ab DR DOS 6.0 intern wie PC DOS/​MS-DOS
1989Datalight (Tuxera[6])ROM-DOSIBMBIO.COMIBMDOS.COMCOMMAND.COMkann zwar auf Disketten und Festplatten installiert werden, lässt sich aber auch aus einem ROM betreiben;[7][8] kompatibel zu MS-DOS
1990Api SoftwareRxDOSRXDOSBIO.SYSRXDOS.SYSRXDOSCMD.EXE„Real Time DOS“ von Mike Podanoffsky[9]
1993PhysTechSoft, ParagonPTS-DOSPTSBIO.SYSPTSDOS.SYSCOMMAND.COM
1994FreeDOS-EntwicklergemeinschaftFreeDOSKERNEL.SYSCOMMAND.COMkeine Trennung zwischen BIOS und Kernel; weiterentwickelter DOS-C-Kernel
1995Pasquale VillaniDOS-CIPS.SYSKERNEL.EXECOMMAND.COMDOS-Kernel von Pasquale J. Villani für moderne Prozessoren (der späten 1990er Jahre)[10]
1 
Wird nicht aus einer Datei, sondern direkt vom Bootcode im Bootsektor geladen. Meist ist das Computerprogramm (das BIOS und/oder Kernel enthält) in den Sektoren direkt nach dem Bootsektor gespeichert.

Bei CP/M und einigen Varianten von DOS sind BIOS und Kernel in einer Datei zusammengefasst, etwa bei FreeDOS als KERNEL.SYS.

CP/M

Unter CP/M wurde das BIOS als Grundgerüst in Form einer Assemblerdatei als Vorschlag an Erstausrüster (OEMs) beigelegt und musste für das jeweilige Computersystem speziell angepasst werden. Durch das Grundgerüst wurde dieser Prozess jedoch immens erleichtert, was dazu führte, dass CP/M in den Versionen 1.4 und 2.2 auch einzeln verkauft wurde.

Unter DR DOS ab Version 5 heißt die Datei IBMBIO.COM, bis Version 3.41 DRBIOS.SYS. Da es für den IBM PC geschrieben ist, entfällt ein aufwendig angepasstes BIOS als erste Schale. Doch finden sich hardwarenahe Funktionen weiterhin in dieser Datei, die im Wesentlichen IO.SYS von MS-DOS entspricht.


PC DOS

Das von Microsoft und IBM gemeinsam entwickelte Betriebssystem MS-DOS bzw. PC DOS lehnte sich ursprünglich sehr stark an das Vorbild CP/M an, deshalb findet sich auch hier die Aufteilung in einen hardwarespezifischen Teil, das sog. DOS-BIOS, und in den hardwareunabhängigen DOS-Kernel. Anders als bei CP/M lagen die beiden Teile jedoch in getrennten Dateien vor, die bei MS-DOS und PC DOS hingegen IBMBIO.COM (BIOS) und IBMDOS.COM (Kernel) hießen, bei späteren Versionen von MS-DOS IO.SYS (BIOS) und MSDOS.SYS (Kernel). Die MS-DOS-Version mit einem an IBM PCs angepassten DOS-BIOS hieß PC DOS, andere MS-DOS-OEM-Versionen lagen jedoch – ganz ähnlich wie CP/M – auch für Dutzende nicht IBM-kompatible x86-Systeme vor, bei denen das DOS-BIOS erst an die jeweilige Zielplattform angepasst werden musste.

Auch bei der PC-DOS-kompatiblen Single-User-Betriebssystemlinie DR DOS, die Anfang 1988 von Digital Researchs CP/M-Abkömmling Concurrent DOS 6.0 abgespalten wurde, indem das System seiner Multitasking-Fähigkeiten beraubt und das XIOS durch ein IBM-kompatibles DOS-BIOS ersetzt wurde, findet sich die gleiche Aufteilung in DOS-BIOS (DRBIOS.SYS bzw. IBMBIO.COM) und den bis zuletzt BDOS genannten Kernel (DRBDOS.SYS bzw. IBMDOS.COM). Handelte es sich anfangs beim BDOS 6.0 von DR DOS 3.31 im Wesentlichen noch um einen CP/M-ähnlichen Kernel mit darübergestülptem DOS-Emulator PCMODE, wurde die interne Funktionsweise im Laufe der Zeit zunehmend – und endgültig ab BDOS 7.0 – auch intern an DOS-Standards angepasst. Das gilt auch für PalmDOS 1, Novell DOS 7, Caldera OpenDOS 7.01 und DR-DOS 7.02+.

Das DOS-BIOS von IBM-kompatiblen DOS-Ausgaben griff ausschließlich über das im ROM des Rechners eingebaute ROM-BIOS bzw. System-BIOS (System-Firmware) auf die Hardware zu. Dadurch konnten kleinere Unterschiede in der Hardware schon auf der Ebene des System-BIOS gekapselt werden, so dass in solchen Fällen keine Änderung am DOS-BIOS mehr notwendig war. Mit der Verbreitung von Anwendungen, die am Betriebssystem vorbei direkt auf die Hardware zugriffen (und in der Folge mit der von IBM-kompatiblen Clones), wurden Anpassungen am DOS-BIOS im Laufe der Jahre zunehmend seltener notwendig, so dass auch MS-DOS später nur noch in einer generischen Version angeboten wurde, die einige Sonderfälle behandelte und so auf den meisten IBM-kompatiblen Rechnern lief.

IBMBIO.COM

IBMBIO.COM ist eine Systemdatei (mit dem „System“-Dateiattribut) in den Betriebssystemen PC DOS und DR-DOS. In DR DOS Version 3.31 bis 3.41 heißt die Datei DRBIOS.SYS. Sie entspricht der IO.SYS von MS-DOS.

Bei den ersten Versionen von MS-DOS kam ebenfalls die IBMBIO.COM zur Verwendung. Während Microsoft ab MS-DOS 7.0 die Funktionen der IO.SYS und MSDOS.SYS in der IO.SYS Datei zusammenlegte, behielt IBM die Trennung bis zur letzten Version von PC-DOS bei.[11] Auch die ersten Versionen von OS/2 verwendeten die IBMBIO.COM zum Start.[12]

IO.SYS

IO.SYS ist eine Systemdatei in den Betriebssystemen MS-DOS, DCP und Windows 9x. Unter PC DOS und DR-DOS heißt die entsprechende Datei IBMBIO.COM. Bei FreeDOS wird diese Funktionalität durch eine Datei bereitgestellt, die meist den Namen KERNEL.SYS trägt. IO.SYS ist ein Teil des Kernels und wird zum Booten des Betriebssystems benötigt. Es handelt sich um eine Datei, die im Normalfall schreibgeschützt und nicht anzeigt wird, da sie unsichtbar oder „versteckt“ ist. Zusammen mit MSDOS.SYS (MS-DOS) bildet sie die Kernkomponente des Betriebssystems DOS. Bei IBM PC DOS und DR DOS heißen die entsprechenden DOS-Dateien IBMBIO.COM und IBMDOS.SYS. Prinzipiell reichen diese beiden Dateien und ein geladenes Programm, wie COMMAND.COM, um ein funktionstüchtiges DOS zu haben, sofern man auf weitere Treiber wie Maus-, Tastaturlayout- oder CD-ROM-Treiber verzichtet.

Das Setup von Windows 9x extrahiert unter anderem WINBOOT.SYS[13] aus den Cabinet-Archiven auf dem Installationsmedium und benennt diese Datei gegen Ende des Prozesses in IO.SYS um.

Während des Bootvorgangs wird der Bootsektor vom Bootdatenträger in den Speicher eingelesen und ausgeführt. Der DOS-Bootsektor lädt die ersten drei Sektoren der Datei IO.SYS / IBMBIO.COM.

Zu diesem Zeitpunkt ist der FAT-Dateisystem-Treiber noch nicht geladen, weshalb diese Datei erstens ganz am Anfang des Datenbereichs des Datenträgers, zweitens unfragmentiert und drittens die erste Datei im Hauptverzeichnis sein muss. Ab DOS 4.0 darf die Datei bis auf die ersten drei Sektoren fragmentiert sein. Mit DOS 5.0 darf die Datei auf einem beliebigen Ort des Datenträgers gespeichert sein, wobei hier auch die ersten drei Sektoren zusammenhängend (nicht fragmentiert) sein müssen;[14] die entsprechenden Angaben sind im Bootsektor hinterlegt.

Nachdem die ersten drei Sektoren der Datei eingelesen und ausgeführt wurden, wird der Rest der Datei eingelesen und es werden folgende Schritte durchgeführt:

  • es werden Standardgerätetreiber geladen und verfügbar gemacht
  • der DOS-Kernel MSDOS.SYS (bei IBM: IBMDOS.COM) wird geladen und initialisiert (in Windows 9x ist dieser in IO.SYS integriert). Ab diesem Zeitpunkt ist der Dateisystemtreiber geladen und der normale Datenträgerzugriff ist gewährleistet.
  • Bei Windows 9x wird die Konfigurationsdatei (WINBOOT.INI[15] bzw. MSDOS.SYS[16]) des DOS-Kernels verarbeitet. Enthält diese im Options-Abschnitt keinen Eintrag BootMulti=0 und sind die relevanten Systemdateien einer vorherigen DOS-Version (MS-DOS, PC-DOS 5 oder 6) vorhanden, kann auch das alte System gestartet werden („Dualboot“-Option[17]). Bei Auswahl dieser Option werden zuerst die aktuellen relevanten DOS-Dateien umbenannt, indem die Dateiendung durch W40 ersetzt wird. Eine Ausnahme bildet die Datei IO.SYS, die zu WINBOOT.SYS (Windows 95)[18] / JO.SYS (Windows 98/ME)[19] umbenannt wird. Dann erhalten die alten DOS-Systemdateien mit der Dateiendung DOS wieder ihren ursprünglichen Namen, der alte DOS-Kernel wird geladen und die Verarbeitung wird wie oben beschrieben wieder aufgenommen.
  • die CONFIG.SYS-Datei wird verarbeitet (ab DOS 2.0) außer im abgesicherten Modus“. Während des Bootvorgangs, erkennbar an einer Meldung wie „Windows 95 wird gestartet“, kann normalerweise per Drücken der Funktionstaste F5 direkt in diesen Modus gewechselt werden. Oder im Startmenü, welches typischerweise beim Betätigen von F8 erscheint, lässt sich dieser Modus auswählen. Er wird auch gestartet, wenn MSDOS.SYS im Options-Abschnitt den Eintrag BootSafe=1 enthält.
  • Sofern in CONFIG.SYS kein anderer Kommandozeileninterpreter oder ein anderes ausführbares Programm per shell-Direktive[20] definiert worden ist, wird die COMMAND.COM-Datei, die sich im Hauptverzeichnis befindet, gestartet und somit der MS-DOS-Kommandozeileninterpreter geladen. Dieser führt dann normalerweise AUTOEXEC.BAT aus.
  • Normalerweise wird beim Starten von Windows 9x ein Startlogo angezeigt, wenn dies nicht durch den Eintrag Logo=0 in der Konfigurationsdatei unterbunden wird. IO.SYS generiert dieses anhand der Grafikdatei LOGO.SYS. Fehlt diese, so wird das in IO.SYS enthaltene Logo benutzt.

Weblinks

  • MS-DOS Device Driver Names Cannot be Used as File Names. Microsoft, archiviert vom Original (nicht mehr online verfügbar) am 5. Februar 2007; (englisch). – enthält eine Liste der Standardgerätetreiber
  • SYS.COM Requirements in MS-DOS versions 2.0-6.0. Microsoft, archiviert vom Original (nicht mehr online verfügbar) am 4. März 2007; (englisch). – enthält Anforderungen für die zu ladende IO.SYS

Literatur

  • Harald Milz: Der Interrupt 21h beim DOS-Bootvorgang In: c’t 7/1992, S. 198ff.
  • Peter Siering: Windows 95: altes DOS für neues Windows In: c’t 5/1996, S. 284

Einzelnachweise

  1. Sanjay K. Bose: Hardware and Software of Personal Computers. New Age International, 1996, ISBN 978-81-224-0303-9, 7. The Fundamentals of DOS, S. 96 (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “DOS can itself be viewed as consisting of three interdependent layers, the BIOS for basic I/O, the DOS kernel containing system functions providing essentially hardware independent services to application programs, and the command processor. … The BIOS is the most hardware dependent layer of DOS since it must be configured to run on the particular hardware of the machine. This provides the resident device drivers for the console (CON), the printer (PRN), the auxiliary device (AUX), the clock device (CLOCK) and the driver for the boot disk. In machines with a ROM-BIOS, the DOS-BIOS may actually use the former for some of its functions. In others, the manufacturer may actually provide a BIOS unique to its hardware which can be used by DOS.”
  2. Gaby Chaudry: Digital Research Source Code. In: The Unofficial CP/M Web site. Gaby Chaudry, 7. Februar 2020, abgerufen am 31. Oktober 2022 (englisch, der CP/M-1.x-Quelltext findet sich unter ‚OPERATING SYSTEMS‘ – ‚CP/M 1.x, and before...‘ – ‚EARLY CP/M SOURCE‘…).
  3. COMPAQ MS-DOS 1.10. In: PCjs Machines. Abgerufen am 31. Oktober 2022 (englisch).
  4. Microsoft MS-DOS 2.00. In: PCjs Machines. Abgerufen am 31. Oktober 2022 (englisch): „There was no MS-DOS 2.00 product per se. Instead, there were OEM releases of MS-DOS based on version 2.00…“
  5. COMPAQ MS-DOS 2.11. In: PCjs Machines. Abgerufen am 31. Oktober 2022 (englisch).
  6. Tuxera acquires mission-critical embedded flash storage leader Datalight. In: Pressemitteilung. Tuxera, 5. Juni 2019, archiviert vom Original am 5. Juli 2020; abgerufen am 31. Oktober 2022 (englisch).
  7. SYS. (PDF; 543 KB) In: Datalight ROM-DOS™ 6.22 User’s Guide. Juli 1999, S. 86, abgerufen am 31. Oktober 2022 (englisch): „The SYS command copies the ROM-DOS system files ROM-DOS.SYS and COMMAND.COM from the disk in the default drive to the disk in the specified drive. The file ROM-DOS.SYS is renamed and stored on the disk as files IBMBIO.COM and IBMDOS.COM, which are stored as hidden files.“
  8. SYS. (PDF; 1,1 MB) In: Datalight ROM-DOS™ User’s Guide. April 2005, S. 108, abgerufen am 31. Oktober 2022 (englisch).
  9. RxDOS 6.2 sources. In: SourceForge. 10. August 1999, abgerufen am 31. Oktober 2022 (englisch, ursprünglich mit dem Buch ‚Dissecting DOS‘ von Mike Podanoffsky erschienen).
  10. Pat Villani: DOS-C: an MS-DOS compatible OS – News: Restarting the project. In: SourceForge. 3. Februar 2007, abgerufen am 31. Oktober 2022 (englisch): „This release contains the last DOS-C kernel before the FreeDOS project branched their kernel. … It should be noted that the goal of this project is not to produce a 100% MS-DOS compatible operating system. … This project builds on the MS-DOS paradigm and adapts the programming model to modern processors.“
  11. Reverse-Engineering DOS 1.0 – Part 2: IBMBIO.COM
  12. OS/2 Museum: OS/2 1.0
  13. Less Conventional Memory in European Versions of Windows 98. Microsoft, archiviert vom Original (nicht mehr online verfügbar) am 5. Oktober 2008; (englisch).
  14. SYS.COM Requirements in MS-DOS versions 2.0-6.0. Microsoft, archiviert vom Original (nicht mehr online verfügbar) am 4. März 2007; (englisch).
  15. How to Perform Clean-Boot Troubleshooting for Windows 98. Microsoft, archiviert vom Original (nicht mehr online verfügbar) am 20. Oktober 2004; (englisch).
  16. Contents of the Windows Msdos.sys File. Microsoft, archiviert vom Original (nicht mehr online verfügbar) am 20. Oktober 2004; (englisch).
  17. Requirements to Boot Previous Operating System. Microsoft, archiviert vom Original (nicht mehr online verfügbar) am 4. März 2007; (englisch).
  18. Klaus Dembowski: BIOS und Troubleshooting: kompakt, komplett, kompetent. Markt+Technik, München 2004, ISBN 3-8272-6547-9, S. 36.
  19. Err Msg: The Following File Is Missing or Corrupt... Microsoft, archiviert vom Original (nicht mehr online verfügbar) am 26. Februar 2007; (englisch).
  20. MS-DOS Config.sys Befehle unter Windows 98. Microsoft, 27. Dezember 2004, archiviert vom Original (nicht mehr online verfügbar) am 25. Oktober 2010;.

Auf dieser Seite verwendete Medien

De-BIOS.ogg
Autor/Urheber: Jeuwre, Lizenz: CC BY-SA 4.0
Aussprachebeispiel