de.phhsnews.com


de.phhsnews.com / Warum verwenden x86-CPUs nur zwei von vier "Ringen"?

Warum verwenden x86-CPUs nur zwei von vier "Ringen"?


Wenn Sie mehr darüber erfahren, wie Betriebssysteme und die Hardware, auf der sie ausgeführt werden, funktionieren und miteinander interagieren, werden Sie überrascht sein um zu sehen, was Kuriositäten oder eine unzureichende Nutzung von "Ressourcen" zu sein scheint. Warum das? Der heutige SuperUser Q & A Post hat die Antwort auf die Frage eines neugierigen Lesers.

Die heutige Question & Answer Session kommt uns dank SuperUser - einer Unterteilung von Stack Exchange, einer Community-gesteuerten Gruppierung von Q & A-Websites - zu Gute Lemsipmatt (Flickr).

Die Frage

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

Linux- und Windows-basierte x86-Systeme verwenden nur

Ring 0 Kernel-Modus und Ring 3 für den Benutzermodus. Warum unterscheiden Prozessoren sogar vier verschiedene Ringe, wenn sie alle nur zwei davon verwenden? Hat sich das mit der AMD64-Architektur geändert? Warum benutzen x86-CPUs nur zwei von vier Ringen?

Der Antwort

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

Dafür gibt es zwei Hauptgründe.

Der erste ist, dass die x86-CPUs zwar vier Speicherschutzringe bieten, die Granularität des Schutzes jedoch nur auf Segmentebene liegt. Das heißt, jedes Segment kann zusammen mit anderen Schutzfunktionen wie Schreib-deaktiviert auf einen bestimmten Ring (Privilegstufe) gesetzt werden. Aber es gibt nicht so viele Segmentdeskriptoren. Die meisten Betriebssysteme wünschen sich eine feinere Granularität des Speicherschutzes, wie ... für einzelne Seiten.

Geben Sie also einen tabellenbasierten Schutz ein. Die meisten, wenn nicht alle modernen x86-Betriebssysteme ignorieren den Segmentierungsmechanismus mehr oder weniger (so viel wie sie können) und verlassen sich auf den Schutz, der von den niederwertigen Bits in Seitentabelleneinträgen verfügbar ist. Einer davon wird als "privilegiertes" Bit bezeichnet. Dieses Bit steuert, ob der Prozessor in einer der "privilegierten" Ebenen sein 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 Seite-für-Seite-Schutzebene die Anzahl der verfügbaren "Modi" für den Speicherschutz nur zwei ist: Eine Seite kann vom nicht-privilegierten Modus aus zugänglich sein 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 Ringnummern zu codieren (genau wie die Segmentdeskriptoren). Allerdings nicht. Der andere Grund ist der Wunsch nach Betriebssystem-Portabilität. Es geht nicht nur um x86; Unix hat uns gelehrt, dass ein Betriebssystem für mehrere Prozessorarchitekturen relativ portabel sein kann, und dass es eine gute Sache war. Und einige Prozessoren unterstützen nur zwei Ringe. Da die Betriebssysteme nicht von mehreren Ringen in der Architektur abhängig sind, haben die Betriebssystemimplementierer die Betriebssysteme portabler gemacht.

Es gibt einen dritten Grund, der spezifisch für die Windows NT-Entwicklung ist. Die Entwickler von NT (David Cutler und sein Team, das Microsoft von DEC Western Region Labs eingestellt hatte) verfügten über umfangreiche Erfahrungen mit VMS. Tatsächlich gehörten Cutler und einige andere 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

Ringe 1 und 2 (Record Management Services und die CLI) ausgeführt wurden " Ring 2 in VMS ging es nicht wirklich um die Betriebssystemsicherheit, sondern darum, die CLI-Umgebung des Benutzers von einem Programm zum nächsten zu erhalten, und Windows hatte dieses Konzept nicht; Das CLI wird als normaler Prozess ausgeführt. Wie bei VMS's Ring 1 musste der RMS-Code in Ring 1 ziemlich oft in Ring 0 anrufen, und Ringübergänge sind teuer. Es erwies sich als viel effizienter, einfach zu Ring 0 zu gehen und damit fertig zu werden, anstatt viele Ring 0 Übergänge innerhalb des Ring 1 zu haben Code (wieder, nicht, dass NT sowieso etwas wie RMS hat). Warum x86 vier Ringe implementiert hat, während Betriebssysteme diese nicht verwendeten, handelt es sich um Betriebssysteme, die wesentlich aktueller sind als x86. Viele der Systemprogrammierungsfunktionen von x86 wurden entworfen, lange bevor NT oder echte Unix-ish-Kernel darauf implementiert wurden, und sie wussten nicht wirklich, was das Betriebssystem verwenden würde. Erst als wir auf x86 pagingten, konnten wir echte Unix-ish- oder VMS-artige Kernel implementieren.

Moderne x86-Betriebssysteme ignorieren nicht nur die Segmentierung (sie richten nur die C-, D- und S-Segmente ein) eine Basisadresse von 0 und eine Größe von 4 GB; F- und G-Segmente werden manchmal verwendet, um auf wichtige Betriebssystemdatenstrukturen zu zeigen), sie ignorieren auch weitgehend Dinge wie "Taskstatussegmente". Der TSS-Mechanismus wurde eindeutig für das Thread-Kontext-Switching entworfen, aber es stellt sich heraus, dass es zu viele Nebenwirkungen hat, so dass moderne x86-Betriebssysteme es "von Hand" machen. Das einzige Mal, an dem x86 NT Hardware-Aufgaben ändert, sind einige wirklich außergewöhnliche Bedingungen, wie zum Beispiel eine Doppelfehler-Ausnahme.

In Bezug auf die x64-Architektur wurden viele dieser nicht verwendeten Funktionen weggelassen. Zu ihren Gunsten hat AMD tatsächlich mit Betriebssystem-Kernelteams gesprochen und gefragt, was sie von x86 benötigten, was sie nicht brauchten oder nicht wollten und was sie hinzufügen wollten. Segmente auf x64 existieren nur in einer Form, die man als Restform bezeichnen könnte, Task-State-Switching existiert nicht, usw., und Betriebssysteme verwenden weiterhin nur zwei Ringe.

Haben Sie etwas zur Erklärung hinzuzufügen? Ton in den Kommentaren ab. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange Benutzern lesen? Sehen Sie sich den vollständigen Diskussionsfaden hier an.



So deaktivieren Sie Touch-, Sperrbildschirm- und Ladegeräusche auf Samsung Galaxy Phones

So deaktivieren Sie Touch-, Sperrbildschirm- und Ladegeräusche auf Samsung Galaxy Phones

Sie knacken die Schachtel für Ihr neues Galaxy S7, S6 oder Note 5 und fangen damit an, diesen Bad Boy aufzustellen . Ungefähr drei Tippe rein, merkt man etwas: dieses Ding macht jedes Mal Geräusche wenn man es berührt . Wenn dich das genauso verrückt macht wie ich, haben wir gute Nachrichten: Es ist einfach, nicht nur die Berührungen, sondern auch den Sperrbildschirm und die Ladegeräusche zu deaktivieren.

(how-to)

So deaktivieren Sie Einstellungen, Dienste und Programme in Windows 7 / 8.1

So deaktivieren Sie Einstellungen, Dienste und Programme in Windows 7 / 8.1

Obwohl die meisten Benutzer die Einstellungen auf ihren Computern nie ändern, gibt es einige Situationen, in denen es sehr nützlich ist, ein bestimmtes Programm, einen Dienst oder eine Einstellung in Windows 7 oder Windows 8 zu deaktivieren oder zu deaktivieren. Zum Beispiel in den letzten paar In den letzten Jahren hat es sich als sehr nützlich erwiesen, die Firewall in Windows zu deaktivieren, den Popup-Blocker in IE zu deaktivieren oder die Autorun / Autoplay-Funktion für das CD / DVD-Laufwerk zu deaktivieren.Das

(How-to)