GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Welche Funktionen hat das BIOS bei laufendem Betriebssystem?

Bei modernen Betriebssystemen praktisch keine . Berichten zufolge sagte Linus Torvalds, seine Aufgabe sei es, „einfach das Betriebssystem zu laden und sich von dort zu verabschieden“.

Ältere Betriebssysteme wie MS-DOS verließen sich für viele Aufgaben (z. B. Plattenzugriff) auf das BIOS, indem sie Interrupts aufriefen.

Bei modernen Betriebssystemen wechselt der Bootloader schnell in den 32- oder 64-Bit-Modus und führt den Betriebssystemkern aus. Der Kernel kann seine eigenen Interrupt-Handler registrieren, die von User-Space-Anwendungen aufgerufen werden können. Die Routinen des Kernels können portabler sein (da sie nicht von der spezifischen Hardware abhängen), flexibler (Betriebssystemanbieter können sie nach Bedarf ändern, anstatt das zu verwenden, was mit der Hardware geliefert wurde), ausgefeilter (sie können beliebig komplex ausgeführt werden). Code statt dem, was in das BIOS programmiert wurde) und sicherer (da das Betriebssystem den Zugriff auf gemeinsam genutzte Ressourcen kontrollieren und verhindern kann, dass Programme sich gegenseitig schlagen, indem es seine eigenen willkürlichen Berechtigungsschemata implementiert).

Um mit bestimmter Hardware zu interagieren, können Betriebssysteme ihre eigenen Gerätetreiber laden und verwenden. Das Betriebssystem oder Anwendungen müssen also die meisten BIOS-Routinen überhaupt nicht aufrufen. Tatsächlich sind BIOS-Interrupts aus Sicherheitsgründen sogar deaktiviert. Da das BIOS im 16-Bit-Realmodus lebt, ist es schwieriger, moderne Betriebssysteme aufzurufen.

Während die Verwendung des BIOS sehr eingeschränkt ist, während das Betriebssystem läuft, werden seine Funktionen immer noch peripher verwendet. Wenn beispielsweise ein Computer im Ruhezustand ist, läuft das Betriebssystem nicht, und es fällt letztendlich der Firmware zu, die Hardware in den richtigen Zustand zu versetzen, um das Betriebssystem anzuhalten und fortzusetzen. Diese Verwendungen beschränken sich im Allgemeinen auf ACPI-Aufrufe und nicht auf Aufrufe der vollständigen BIOS-Schnittstelle. ACPI ist eine BIOS-Erweiterung, die "die Energieverwaltung unter die Kontrolle des Betriebssystems (OSPM) bringt, im Gegensatz zum vorherigen BIOS-Zentralsystem, das sich auf plattformspezifische Firmware stützte, um Energieverwaltung und Konfigurationsrichtlinien zu bestimmen".

Beachten Sie, dass sich „BIOS“ offiziell auf eine bestimmte Firmware-Schnittstelle bezieht, der Begriff jedoch allgemein verwendet wird, um sich auf Computer-Firmware im Allgemeinen zu beziehen. Einige neuere Computer (insbesondere Apple-Computer) haben das BIOS (im engeren Sinne) durch UEFI ersetzt, was dann natürlich zur Implementierung dieser Funktionen bezeichnet wird.

Weitere Informationen darüber, wie die Rolle des BIOS im Laufe der Zeit abgenommen hat, finden Sie auf Wikipedia.


Das BIOS stellt den Betriebssystemen eine Reihe von Diensten zur Verfügung, von denen die meisten mit der Energieverwaltung zusammenhängen:

  • Verändern der CPU- und Bustakte
  • Hauptplatinengeräte aktivieren/deaktivieren
  • Leistungssteuerung des Erweiterungsports
  • Suspend-to-Disk und Suspend-to-RAM
  • Ereigniseinstellungen fortsetzen

Suspend-to-Disk ist die meiste Zeit im Betriebssystem implementiert, da das Betriebssystem seinen Zustand schneller wiederherstellen kann (nur der Kernel-Zustand wird neu geladen und der Programmzustand bei Bedarf eingelagert, was erheblich schneller ist als das Neuladen des gesamten RAM), aber das Feature bleibt in der Spezifikation.

Suspend-to-RAM kann nicht vom Betriebssystem implementiert werden, da es darauf angewiesen ist, dass das BIOS die RAM-Initialisierung und den RAM-Test überspringt, sodass das Betriebssystem eine API benötigt, um dem BIOS mitzuteilen, dass es mit dem aktuellen RAM-Inhalt fortgesetzt werden soll. Um diesen Dienst bereitzustellen, fordert das BIOS das Betriebssystem auf, einen bestimmten RAM-Bereich intakt zu lassen.

Die Schnittstelle für das Betriebssystem für alle BIOS-Dienste ist ein Teil des Codes einer virtuellen Maschine, der auf einem Emulator ausgeführt werden muss und der die erforderlichen E/A-Operationen in der Hardware generiert. Für Suspend wird dies im Allgemeinen so implementiert, dass das Ausführen eines der Hardware-Schreibvorgänge einen Interrupt auslöst, der die Steuerung an das BIOS überträgt.


Es gibt drei Hauptbereiche, in denen ein Betriebssystem das BIOS in modernen Systemen verwendet, z. B. in solchen, die den UEFI-Standard verwenden. Der erste ist eine Reihe von Diensten, die als UEFI-Laufzeitdienste bekannt sind. Diese Dienste ermöglichen es dem Betriebssystem, Informationen abzurufen, die nur das BIOS kennt, wie z. B. die Zeit, die das BIOS verwendet hat, die Startreihenfolge, das aktuelle Benutzersicherheitsprofil, die Informationen über das Motherboard, DIMMs usw.

Der zweite ist der Systemverwaltungsmodus, bei dem es sich um einen verborgenen Speicherabschnitt (SMRAM) handelt, auf den über einen Interrupt mit hoher Priorität (SMM) zugegriffen wird. Viele BIOS verwenden dies, um Hochsicherheits-OEM-Funktionen zu implementieren oder um Hardwareumgehungen zu implementieren.

Das dritte ist ACPI. ACPI bietet Konfigurations-, Energieverwaltungs- und Hardwaredaten und Code, der vom Betriebssystem verwendet wird, um das zu erweitern, was die Betriebssystemtreiber mithilfe eines Industriestandards oder Gerätetreibers herausfinden können. Gibt es zum Beispiel ein spezielles Signal, um die Festplattenleistung zu steuern, oder gibt es eine spezielle Art, mit der Batterie zu sprechen, die nicht durch einen Standard abgedeckt ist.

Timo


Linux
  1. Init-System mit der Shell erkennen?

  2. Linux – Wie finde ich heraus, welche Festplatten im System sind?

  3. Was sind vdso und vsyscall?

  4. Welche Nachteile hat die Verwendung des BIOS-Kompatibilitätsmodus gegenüber dem UEFI-Start?

  5. Was sind die Sicherheitsimplikationen von systemd im Vergleich zu systemv init?

Was sind die Folgen, wenn der Laptop keinen Strom mehr hat, während Gparted läuft?

Was sind Linux-Systemaufrufe und Bibliotheksfunktionen?

Welche Arten von DNS-Servern gibt es?

useradd vs. adduser:Was sind die Unterschiede?

Was sind die Aufrufkonventionen für UNIX- und Linux-Systemaufrufe (und User-Space-Funktionen) auf i386 und x86-64

Wie finde ich heraus, welche Festplatten im System sind?