Müssen Betriebssysteme wissen, auf welcher Hardwarearchitektur sie ausgeführt werden?

Müssen Betriebssysteme wissen, auf welcher Hardwarearchitektur sie ausgeführt werden?

Vielleicht ist das eine grundlegende theoretische Frage, aber ich habe keine Ahnung von der Antwort und habe keine Informationen dazu gefunden.

Müssen Betriebssysteme (denken Sie an Windows- oder Linux-Distributionen) wissen, ob sie in einer oder einer anderen Mikroarchitektur ausgeführt werden (beispielsweise auf der Intel Sandy Bridge-Architektur oder der Intel Haswell-Architektur)? Oder hat das Betriebssystem keine Ahnung von diesen Details?

Die Tatsache, dass das Betriebssystem die „Brücke“ zwischen dem Benutzer und der Mikroprozessorarchitektur darstellt, hat mich zu der Annahme veranlasst, dass das Betriebssystem diese Details kennen muss, weil es vielleicht bestimmte Aspekte des Betriebssystems gibt, die auf einem Intel Sandy Bridge anders laufen als auf einem AMD Bulldozer.

Wenn die Antwort ja ist, wie kommuniziert die Hardware mit dem Betriebssystem, also ihrer Architektur?

Antwort1

Intel und AMD x86 (und x86_64) haben, was das Betriebssystem betrifft, dieselbe Prozessorarchitektur. Die „Kern“-Befehlssätze sind identisch und definieren ein Mindestmaß an Prozessorfunktionalität.

Die Prozessoren können völlig unterschiedlich arbeitenim Innerenoder auchphysisch, aber was den Maschinencode (Hex-Bytes) für Anweisungen betrifft, sind sie identisch. Sie haben die gleiche externe Architektur (x86), aber unterschiedlicheinternArchitekturen (oft als uArch oder Mikroarchitekturen bezeichnet).

Infolgedessen ist die anfängliche Übergabe von der Systemfirmware (UEFI), die das grundlegende Hochfahren des Motherboards und die Prozessorinitialisierung durchführt, an das Betriebssystem bei AMD und Intel identisch, da die Anweisungen zum Laden von Bytes und Auswählen von Codepfaden gleich sind. Sobald der Bootcode ausgeführt wird, kann er mit dem Laden von Bibliotheken beginnen, die CPU-Erweiterungen erkennen und je nach Fund optimierten Code ausführen können.

ARM und x86 sind sowohl intern als auch extern völlig unterschiedliche Architekturen, und dieselben Maschinencodebytes erzeugen völlig unterschiedlichen oder nicht funktionsfähigen Code. Daher muss die ausführbare Boot-Datei für die jeweilige Architektur kompiliert werden, auf der sie ausgeführt wird, um den richtigen Maschinencode zu generieren.

verwandte Informationen