Wie kennt ein Basis-Betriebssystem die Speicheradresse der einzelnen Hardwarekomponenten? Wie funktioniert ein Betriebssystem auf einem beliebigen Computer "out of the box"?
Die CPU weiß nur die erste Adresse, die ausgeführt werden soll. BIOS / Firmware sollte auf diese Adresse "antworten", damit die CPU bootstrap.
Und für Speicher und E / A (ich hoffe, Sie wissen, dass es in x86 zwei Speicherplätze gibt: Arbeitsspeicher und E / A, oder?), Gab es viele Standards.
Erste PC-Ära
Im Speicher befand sich ein halboffizieller Bereich namens BIOS DATA AREA. Es gab einige Informationen über die Anzahl der COM- und LPT-Ports, Diskettenlaufwerk-Controller, deren Basis-E / A-Adressen usw. Das Betriebssystem verwendete auch BIOS-Aufrufe ( dokumentierte Interrupts), um auf Hardware zuzugreifen. Motherboard - Anbieter fest einprogrammiert, die auf BIOS - Adressen. Einige Geräte hatten offiziell dokumentierte E / A-Adressen.
Erweiterungskarten wie ISA verfügten über keine Tools, die außer BIOS-Erweiterungskarten erkannt werden sollten: Das System-BIOS untersuchte den Speicher nach speziellen Mustern, um das BIOS der Erweiterungskarte zu finden und auszuführen. Das Karten-BIOS installiert sich möglicherweise selbst als Interrupt-Verctor, um die BIOS-Funktionen zu "spiegeln", um das Starten des Netzwerks usw. zu ermöglichen.
In vielen Fällen lag es in der Verantwortung des Benutzers, die Karte mit Jumpern zu konfigurieren und Informationen für die Software bereitzustellen (z. B. die BLASTER
env-Variable für Soundblaster-Parameter usw.).
PnP-Ära
PnP ist ein Paket von Spezifikationen zur Hardwareerkennung. Es gab ISA PNP, COM PORT PNP, LPT PNP usw. In den Spezifikationen wird beschrieben, mit welcher Software geprüft werden soll, welches Gerät angeschlossen ist und wie das Gerät verhalten soll. Einige Busse wie PCI verfügen über eine integrierte PNP-Funktion. Die Software kann alle PCI-Karten auflisten und sie nach den benötigten Ressourcen, dem Hersteller und der Klasse (Treiber suchen) usw. fragen und sie dann zusammenfassen. Aufzählung ist auch für USB möglich.
"Software" kann in diesem Fall ein PNPBIOS- oder PNP-fähiges Betriebssystem sein. Daher verwendete das BIOS diese Spezifikationen, um das Startgerät und die PCI-Host-Bridge ("Stamm" des PCI-Busses) zu finden, und diese Informationen in speziellen Tabellen im Speicher (gemäß PNPBIOS-Spezifikation) abgelegt und vom Betriebssystem gelesen und anhand der PCI- und USB-Funktionen aufgelistet Geräte aktivieren (PCI- und USB-Protokolle sind dokumentiert).
ACPI-Ära
ACPI-Tabellen werden vom Hersteller des Motherboards gefüllt und in Firmware gespeichert (moderne Firmware ist kein " BIOS ", kann es aber emulieren).
Eine spezielle Tabelle mit der Bezeichnung DSDT beschreibt jedes Systemgerät, einschließlich spezieller Laptoptasten, Laptopakkus, Lüfter, PCI-Express-Root-Komplex usw.
Geräte werden in der Sprache AML beschrieben und das Betriebssystem sollte über einen Interpreter verfügen. DSDT beschreibt möglicherweise Arbeitsspeicher, E / A und "Methoden" (auch in AML geschrieben), um beispielsweise "Helligkeit ändern" auszuführen.
ACPI ist eine riesige Spezifikation. Das Betriebssystem verwendet DSDT zum Füllen seines internen "Gerätebaums". Sobald es Zugriff auf "PCI-Express-Root-Komplex" oder "Root-USB" erhalten hat, verwendet es die PCI-Express- und USB-Protokolle, um weitere Aufzählungen und Konfigurationen vorzunehmen: Die Karte meldet möglicherweise Speicherunterstützung Bereich A und B, und OS konfiguriert es für die Verwendung von "B".