Das BIOS (IPA: [], ) ist eine einfache Hardwareabstraktionsschicht früher Betriebssysteme für Mikrocomputer. Sowohl für das Konzept als auch für den Begriff „BIOS“ für 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. 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 „“ – „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 „“, kurz FDOS.

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 „“, 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 „“ 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: Es lädt weitere Sektoren, den nicht in den ersten drei Sektoren des Bootdatenträgers gelegenen Rest von sich selbst, in den Speicher. 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. 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.

Erscheinungsjahr Hersteller / Entwickler Betriebssystem BIOS Kernel Standard-Shell Anmerkungen 1976 Digital Research CP/M 1.3 BDOS, direkt CCP das BIOS und der Kernel werden zusammengefasst 1980 SCP 86-DOS direkt 86DOS.SYS COMMAND.COM lief nicht auf dem IBM PC 1981 SCP, Microsoft, IBM PC DOS IBMBIO.COM IBMDOS.COM COMMAND.COM bis Version 6.0 großteils identisch zu MS-DOS 1982 Microsoft MS-DOS 1.x (OEM) IOSYS.COM MSDOS.COM COMMAND.COM bspw. COMPAQ MS-DOS 1.10 1982 Microsoft (mit IBM) MS-DOS (ab 2.0) IO.SYS MSDOS.SYS COMMAND.COM großteils identisch mit PC DOS; verwendete teilweise auch IBMBIO.COM/IBMDOS.COM 1982 Digital Research CP/M-86 BDOS, direkt CCP BDOS-Version 2.2; erste Version für die x86-Architektur und den IBM PC 1985 Digital Research DOS Plus (bis 2.01), DR DOS (ab 3.31) IBMBIO.COM IBMDOS.COM COMMAND.COM bis Version 5.0 intern CP/M-Strukturen, ab DR DOS 6.0 intern wie PC DOS/​MS-DOS 1989 Datalight (Tuxera) ROM-DOS IBMBIO.COM IBMDOS.COM COMMAND.COM kann zwar auf Disketten und Festplatten installiert werden, lässt sich aber auch aus einem ROM betreiben; kompatibel zu MS-DOS 1990 Api Software RxDOS RXDOSBIO.SYS RXDOS.SYS RXDOSCMD.EXE „Real Time DOS“ von Mike Podanoffsky 1993 PhysTechSoft, Paragon PTS-DOS PTSBIO.SYS PTSDOS.SYS COMMAND.COM 1994 FreeDOS-Entwicklergemeinschaft FreeDOS KERNEL.SYS COMMAND.COM keine Trennung zwischen BIOS und Kernel; weiterentwickelter DOS-C-Kernel 1995 Pasquale Villani DOS-C IPS.SYS KERNEL.EXE COMMAND.COM DOS-Kernel von Pasquale J. Villani für moderne Prozessoren (der späten 1990er Jahre)

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

CP/M

CP/M hatte vor der Einführung des IBM PCs einen vergleichbaren Marktdurchdringungsgrad unter damaligen Kleinrechnern, wie später PC DOS bzw. MS-DOS auf IBM-kompatiblen PCs. Da jedoch vor der Etablierung IBM-kompatibler PCs kein über die Herstellergrenzen hinaus geltender Hardware-Standard existierte und jeder Hersteller von Kleinrechnern dabei völlig verschiedene Konzepte verfolgte, war es notwendig, die hardwarespezifischen Teile des Betriebssystems für jedes System speziell anzupassen.

Handelte es sich anfangs noch um eine gedankliche Untergliederung, so wurden die hardwarespezifischen Teile während der Entwicklung von CP/M 1.3 und 1.4 (1977) auch in der Architektur des Systems von den hardwareunabhängigen Teilen isoliert. Anregungen für eine Entwicklung in diese Richtung gehen auch auf Glenn Ewing, der das CP/M-BIOS für IMSAI an den IMSAI 8080 anpasste, zurück. Das BIOS wurde als Grundgerüst in Form einer Assemblerdatei als Vorschlag an Erstausrüster (OEMs) beigelegt und musste für das jeweilige Computersystem speziell angepasst werden. Die zwei übereinanderliegenden untersten Schichten, das hardwarespezifische BIOS und das darauf aufbauende, aber vollständig hardwareunabhängige BDOS (Basic Disk Operating System), konnten anschließend zusammengefügt werden und bilden so das Basis-System „Floppy Disk Operating System“ (FDOS). Um CP/M für ein neues Rechnersystem anzubieten, konnte der jeweilige Hersteller den Quelltext des BIOS-Grundgerüst von Digital Research lizenzieren und nach eigenen Vorstellungen anpassen. BDOS wurde in der Regel nur als Objektdatei ausgeliefert und passend dazugelinkt. Auf diese Weise wurde CP/M auf mehr als dreitausend verschiedene Systeme angepasst und in den jeweils passenden Adaptionen von den Hardware-Herstellern angeboten. Durch das mitgelieferte Grundgerüst für das BIOS wurde der Anpassungsprozess immens erleichtert, was dazu führte, dass CP/M in den Versionen 1.4 und 2.2 auch einzeln verkauft wurde.

Auf CP/M laufende Anwendungen nutzen Systemaufrufe, die ihnen durch BDOS zur Verfügung stehen, das wiederum zur Durchführung der verschiedenen Aufgaben nach unten die hardwarespezifischen Routinen des BIOS aufruft, das die Hardwareansteuerung übernimmt. Auf diese Weise bleiben CP/M-Anwendungen auf derselben Prozessorarchitektur über Systemgrenzen hinweg portabel, wenn sie die Hardware nicht direkt ansprechen. Im ROM selbst befand sich meist nur ein äußerst rudimentärer sog. Monitor und Bootloader, über den das erzeugte CP/M-Image von einem Medium wie einer Diskette oder Festplatte in den Speicher geladen und gestartet werden konnte. Einige CP/M-Abkömmlinge wie MP/M (Multi-tasking Program for Microcomputers), Concurrent CP/M 2.0-3.1 (CCP/M), Concurrent DOS 3.2-6.2 (CDOS), DOS Plus 1.2-2.1, FlexOS, Multiuser DOS 5.0-7.xx (MDOS), System Manager 7 und REAL/32 7.xx enthalten auch ein XIOS (Extended Input Output System).

Unter DR DOS ab Version 5 heißt die Datei mit dem BIOS 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+.