Warum verwenden x86-CPUs nur zwei von vier „Ringen“?

Apr 22, 2025
Hardware
UNCACHED INHALT

Wenn Sie mehr darüber erfahren, wie Betriebssysteme und die Hardware, auf der sie ausgeführt werden, funktionieren und miteinander interagieren, werden Sie möglicherweise überrascht sein, dass es zu Kuriositäten oder einer Unterauslastung von „Ressourcen“ kommt. Warum ist das so? Der heutige SuperUser Q & A-Beitrag enthält die Antwort auf die Frage eines neugierigen Lesers.

Die heutige Frage-Antwort-Sitzung wird uns mit freundlicher Genehmigung von SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-gesteuerten Gruppierung von Q & A-Websites.

Foto mit freundlicher Genehmigung von Lemsipmatt (Flickr) .

Die Frage

SuperUser-Reader AdHominem möchte wissen, warum x86-CPUs nur zwei von vier Ringen verwenden:

Nur Linux- und Windows-basierte x86-Systeme werden verwendet Ring 0 für den Kernel-Modus und Ring 3 für den Benutzermodus. Warum unterscheiden Prozessoren überhaupt vier verschiedene Ringe, wenn sie ohnehin nur zwei davon verwenden? Hat sich dies mit der AMD64-Architektur geändert?

Warum verwenden x86-CPUs nur zwei von vier Ringen?

Die Antwort

Der SuperUser-Mitarbeiter Jamie Hanrahan hat die Antwort für uns:

Es gibt zwei Hauptgründe.

Das erste ist, dass, obwohl die x86-CPUs vier Ringe Schutz bieten, die Granularität des Schutzes nur auf Segmentebene liegt. Das heißt, jedes Segment kann zusammen mit anderen Schutzfunktionen wie z. B. schreibgeschützt auf einen bestimmten Ring (Berechtigungsstufe) eingestellt werden. Es sind jedoch nicht so viele Segmentdeskriptoren verfügbar. Die meisten Betriebssysteme wünschen sich eine wesentlich feinere Granularität des Speicherschutzes, z. B. für einzelne Seiten.

Geben Sie also den seitentabellenbasierten Schutz ein. Die meisten, wenn nicht alle modernen x86-Betriebssysteme ignorieren den Segmentierungsmechanismus mehr oder weniger (so weit sie können) und verlassen sich auf den Schutz, der durch die niederwertigen Bits in Seitentabelleneinträgen verfügbar ist. Eines davon wird als "privilegiertes" Bit bezeichnet. Dieses Bit steuert, ob sich der Prozessor in einer der "privilegierten" Ebenen befinden muss, um auf die Seite zuzugreifen. Die "privilegierten" Ebenen sind PL 0, 1 und 2 . Da es sich jedoch nur um ein Bit handelt, beträgt die Anzahl der verfügbaren „Modi“ für den Speicherschutz auf Seite-für-Seite-Schutzstufe nur zwei: Auf eine Seite kann im nicht privilegierten Modus zugegriffen werden oder nicht. Daher nur zwei Ringe. Um vier mögliche Ringe für jede Seite zu haben, müssten sie zwei Schutzbits in jedem Seitentabelleneintrag haben, um eine von vier möglichen Ringenummern zu codieren (genau wie die Segmentdeskriptoren). Sie tun es jedoch nicht.

Der andere Grund ist der Wunsch nach Portabilität des Betriebssystems. Es geht nicht nur um x86; Unix lehrte uns, dass ein Betriebssystem für mehrere Prozessorarchitekturen relativ portabel sein kann und dass es eine gute Sache ist. Einige Prozessoren unterstützen nur zwei Ringe. Da die Betriebssystemimplementierer nicht von mehreren Ringen in der Architektur abhängig waren, machten sie die Betriebssysteme portabler.

Es gibt einen dritten Grund, der für die Windows NT-Entwicklung spezifisch ist. Die Designer von NT (David Cutler und sein Team, die Microsoft von DEC Western Region Labs engagiert hat) hatten umfangreiche Erfahrungen mit VMS. Tatsächlich gehörten Cutler und einige der anderen zu den ursprünglichen Designern von VMS. Der VAX-Prozessor, für den VMS entwickelt wurde, verfügt über vier Ringe (VMS verwendet vier Ringe).

Aber die Komponenten, die in VMS ausgeführt wurden Ringe 1 und 2 (Record Management Services bzw. CLI) wurden im NT-Design nicht berücksichtigt. Ring 2 In VMS ging es nicht wirklich um die Sicherheit des Betriebssystems, sondern darum, die CLI-Umgebung des Benutzers von einem Programm zum nächsten zu erhalten, und Windows hatte dieses Konzept nicht. Die CLI wird wie gewohnt ausgeführt. Wie bei VMS Ring 1 , der RMS-Code in Ring 1 musste anrufen Ring 0 ziemlich oft und Ringübergänge sind teuer. Es stellte sich als weitaus effizienter heraus, einfach dorthin zu gehen Ring 0 und damit fertig sein, anstatt viel zu haben Ring 0 Übergänge innerhalb der Ring 1 Code (wieder nicht, dass NT sowieso so etwas wie RMS hat).

Warum x86 vier Ringe implementiert hat, während Betriebssysteme sie nicht verwendeten, sprechen Sie von Betriebssystemen, die weitaus neuer sind als x86. Viele der Systemprogrammierungsfunktionen von x86 wurden lange vor der Implementierung von NT- oder echten Unix-Kerneln entwickelt, und sie wussten nicht wirklich, was das Betriebssystem verwenden würde. Erst als wir auf x86 Paging erhielten, konnten wir echte Unix-ish- oder VMS-ähnliche Kernel implementieren.

Moderne x86-Betriebssysteme ignorieren nicht nur die Segmentierung weitgehend (sie richten lediglich die C-, D- und S-Segmente mit einer Basisadresse von 0 und einer Größe von 4 GB ein; F- und G-Segmente werden manchmal verwendet, um auf wichtige Datenstrukturen des Betriebssystems zu verweisen ) ignorieren sie auch weitgehend Dinge wie „Taskstatus-Segmente“. Der TSS-Mechanismus wurde eindeutig für das Umschalten des Thread-Kontexts entwickelt, hat jedoch zu viele Nebenwirkungen, sodass moderne x86-Betriebssysteme dies „von Hand“ tun. Das einzige Mal, wenn x86 NT Hardwareaufgaben ändert, sind einige wirklich außergewöhnliche Bedingungen, wie z. B. eine Doppelfehlerausnahme.

In Bezug auf die x64-Architektur wurden viele dieser nicht mehr genutzten Funktionen weggelassen. Zu ihrer Ehre sprach AMD tatsächlich mit Betriebssystem-Kernelteams und fragte, was sie von x86 brauchten, was sie nicht brauchten oder nicht wollten und was sie hinzufügen möchten. Segmente auf x64 existieren nur in der sogenannten Restform, es gibt keine Taskstatusumschaltung usw., und Betriebssysteme verwenden weiterhin nur zwei Ringe.


Haben Sie der Erklärung etwas hinzuzufügen? Ton aus in den Kommentaren. Möchten Sie weitere Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Den vollständigen Diskussionsthread finden Sie hier .

.eintragsinhalt .Eintrittsfußzeile

Why Do X86 CPUs Only Use Two Out Of Four “Rings”?

Why Do X86 CPUs Only Use 2 Out Of 4 Rings?

Lord Of The X86 Rings: A Portable User Mode Privilege Separation Architecture On X86


Hardware - Die beliebtesten Artikel

Überspannungsschutz vs. USV: Benötigen Sie wirklich ein Batterie-Backup für Ihren PC?

Hardware Aug 16, 2025

UNCACHED INHALT Die meisten PC-Benutzer wissen, dass ein Stromstoß, ein Stromausfall oder ein anderer plötzlicher Stromausfall Ihren Computer ernsthaft verletzen kann. Aber gena..


So ändern Sie die Region auf Ihrem Nintendo Switch (und spielen Spiele aus anderen Ländern)

Hardware Jun 30, 2025

Mit dem Switch hat Nintendo ein langjähriges Erbe der Regionssperrung seiner Konsolen hinterlassen. Wenn Sie jetzt eine Konsole in den USA kaufen, können Sie Kassetten aus Japan k..


Was die Beschriftungen an den HDMI-Anschlüssen Ihres Fernsehgeräts bedeuten (und wann es darauf ankommt)

Hardware May 10, 2025

Ein HDMI-Anschluss ist nur ein HDMI-Anschluss, oder? Wenn Sie nicht genau auf die Rückseite Ihres HD-Fernsehers und anderer HDMI-fähiger Heimkino-Komponenten schauen, werden Sie e..


Was bedeutet das D-förmige Symbol neben meinem USB-C-Anschluss?

Hardware Apr 18, 2025

Meistens ist es ziemlich einfach herauszufinden, wozu die verschiedenen Anschlüsse und die gedruckten Symbole auf unseren Computern daneben dienen, aber hin und wieder wird ein neu..


Was sind die Tasten Sys Rq, Scroll Lock und Pause Break auf meiner Tastatur?

Hardware Sep 26, 2025

Wenn Sie auf Ihre Tastatur blicken, sehen Sie wahrscheinlich einige Tasten, die Sie nie in der Nähe der oberen rechten Ecke verwenden: Sys Rq, Scroll Lock und Pause / Break. Haben ..


PSA: Fahren Sie Ihren Computer nicht herunter, sondern verwenden Sie nur den Ruhezustand (oder den Ruhezustand).

Hardware Jul 5, 2025

In der heutigen Zeit gibt es keinen Grund, Ihren Computer herunterzufahren und dann den Startvorgang zu durchlaufen, wenn Sie ihn verwenden möchten. Sparen Sie sich Zeit durch ..


Was tun, wenn Ihr Telefon oder Laptop einen geschwollenen Akku hat?

Hardware Jul 4, 2025

Wenn ein Lithium-Ionen-Akku ausfällt, kann es sehr schnell nach Süden gehen. Wenn Sie Ihr Telefon öffnen und feststellen, dass der Akku doppelt so groß ist, ist die richtige Pfl..


Die zwölf Tage der Geekmas, Ausgabe 2011

Hardware Dec 13, 2024

Das ist richtig! Es ist wieder Ferienzeit, was bedeutet, dass wir hier sind, um Ihnen zu helfen, nach diesem wichtigen Geek in Ihrem Leben zu suchen. Zeit, Weihnachten mit einem alb..


Kategorien