Warum verwenden x86-CPUs nur zwei von vier Ringen?

Warum verwenden x86-CPUs nur zwei von vier Ringen?

Why Do X86 Cpus Only Use Two Out Four Rings

Wenn Sie mehr darüber erfahren, wie Betriebssysteme und die Hardware, auf denen sie ausgeführt werden, funktionieren und miteinander interagieren, werden Sie möglicherweise überrascht sein, dass scheinbar seltsame oder unzureichende Ressourcenauslastung auftritt. Warum ist das so? Der heutige SuperUser Q&A-Post hat die Antwort auf die Frage eines neugierigen Lesers.



Die heutige Frage-und-Antwort-Sitzung kommt mit freundlicher Genehmigung von SuperUser – einer Unterabteilung von Stack Exchange, einer Community-gesteuerten Gruppierung von Q&A-Websites.

zeige meinen PC auf dem Desktop

Foto mit freundlicher Genehmigung von Lemsipmatt (Flickr) .

Die Frage

SuperUser-Leser AdHominem will wissen, warum x86-CPUs nur zwei von vier Ringen verwenden:

Nur Linux- und Windows-basierte x86-Systeme verwenden 0 klingeln für Kernel-Modus und Ring 3 für den Benutzermodus. Warum unterscheiden Prozessoren überhaupt vier verschiedene Ringe, wenn am Ende sowieso alle nur zwei davon verwenden? Hat sich das mit der AMD64-Architektur geändert?

wie man den grep-Befehl verwendet

Warum verwenden x86-CPUs nur zwei von vier Ringen?

Die Antwort

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

Es gibt zwei Hauptgründe.

warum überhitzt mein computer?

Der erste ist, dass die x86-CPUs zwar vier Speicherringe bieten, die dadurch gebotene Schutzgranularität jedoch nur auf der Ebene pro Segment liegt. Das heißt, jedes Segment kann zusammen mit anderen Schutzmaßnahmen wie Schreibsperre auf einen bestimmten Ring (Berechtigungsebene) eingestellt werden. Aber es sind nicht so viele Segmentdeskriptoren verfügbar. Die meisten Betriebssysteme wünschen sich eine viel feinere Granularität des Speicherschutzes, wie ... für einzelne Seiten.

Geben Sie also den auf Seitentabellen basierenden Schutz ein. Die meisten, wenn nicht alle, modernen x86-Betriebssysteme ignorieren mehr oder weniger den Segmentierungsmechanismus (so gut es geht) 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 . Aber es ist nur ein Bit, so dass auf der Page-by-Page-Schutzebene nur zwei Modi für den Speicherschutz verfügbar sind: Auf eine Seite kann aus dem nicht-privilegierten Modus zugegriffen werden oder nicht. Daher nur zwei Ringe. Um vier mögliche Klingelzeichen für jede Seite zu haben, müssten sie zwei Schutzbits in jedem Seitentabelleneintrag haben, um eine von vier möglichen Klingelnummern 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 hat uns gelehrt, dass ein Betriebssystem auf mehrere Prozessorarchitekturen relativ portabel sein kann und dass dies eine gute Sache ist. Und einige Prozessoren unterstützen nur zwei Ringe. Indem sie nicht von mehreren Ringen in der Architektur abhängig waren, machten die Betriebssystem-Implementierer die Betriebssysteme tragbarer.

Flash-Dateien in Chrome abspielen

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

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

Warum x86 vier Ringe implementiert hat, während Betriebssysteme sie nicht verwendet haben, Sie sprechen von Betriebssystemen mit viel neuerem Design als x86. Viele der Systemprogrammierungsfunktionen von x86 wurden entworfen, lange bevor NT- oder echte Unix-artige Kernel darauf implementiert wurden, und sie wussten nicht wirklich, was das Betriebssystem verwenden würde. Erst als wir auf x86 paging bekamen, konnten wir echte Unix-ähnliche oder VMS-ähnliche Kernel implementieren.

Moderne x86-Betriebssysteme ignorieren nicht nur die Segmentierung weitgehend (sie richten einfach 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 Aufgabenzustandssegmente. Der TSS-Mechanismus wurde eindeutig für das Wechseln des Thread-Kontexts entwickelt, aber es stellt sich heraus, dass er zu viele Nebenwirkungen hat, sodass moderne x86-Betriebssysteme dies von Hand tun. Das einzige Mal, dass x86 NT Hardware-Aufgaben ändert, ist für einige wirklich außergewöhnliche Bedingungen, wie eine Doppelfehlerausnahme.

In Bezug auf die x64-Architektur wurden viele dieser nicht mehr verwendeten Funktionen weggelassen. Zu ihrer Ehre hat AMD tatsächlich mit Betriebssystem-Kernel-Teams gesprochen und gefragt, was sie von x86 brauchen, was sie nicht brauchen oder nicht wollen und was sie gerne hinzufügen möchten. Segmente auf x64 existieren nur in einer Form, die als Überbleibsel bezeichnet werden könnte, Task State Switching existiert nicht usw. und Betriebssysteme verwenden weiterhin nur zwei Ringe.


Möchten Sie der Erklärung noch etwas hinzufügen? Ton aus in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Sehen Sie sich hier den vollständigen Diskussionsthread an .

WEITER LESEN
  • › So finden Sie Ihr Spotify Wrapped 2021
  • › 5 Websites, die jeder Linux-Benutzer mit einem Lesezeichen versehen sollte
  • › Funktionen vs. Formeln in Microsoft Excel: Was ist der Unterschied?
  • & rsaquo; Cyber ​​Monday 2021: Die besten Tech-Deals
  • › Was ist MIL-SPEC Fallschutz?
  • › Der Computerordner ist 40: Wie Xerox Star den Desktop erstellte
Akemi Iwaya
Akemi Iwaya ist seit 2009 Teil des How-To Geek/LifeSavvy Media-Teams. Sie hat zuvor unter dem Pseudonym 'Asian Angel' geschrieben und war Lifehacker-Praktikantin, bevor sie zu How-To Geek/LifeSavvy Media kam. Sie wurde von ZDNet Worldwide als maßgebliche Quelle zitiert.
Vollständige Biografie lesen