Geschützte Weise

In der Computerwissenschaft, geschützter Weise, hat auch geschützte virtuelle Adressweise genannt, ist eine betriebliche Weise von x86-vereinbaren in einer Prozession gehenden Haupteinheiten (CPU). Es erlaubt Systemsoftware, Eigenschaften wie virtuelles Gedächtnis, Paginierung, das sichere Mehrbeschäftigen zu verwerten, und andere Eigenschaften haben vorgehabt, eine Kontrolle eines Betriebssystems über die Anwendungssoftware zu vergrößern.

Als ein Verarbeiter, der x86 unterstützt, Weise geschützt hat, wird darauf angetrieben, es beginnt, Instruktionen in der echten Weise durchzuführen, um umgekehrt Vereinbarkeit mit früher x86 Verarbeiter aufrechtzuerhalten. In geschützte Weise kann nur eingegangen werden, nachdem die Systemsoftware mehrere Deskriptor-Tische aufstellt und das Bit von Protection Enable (PE) in Control Register 0 (CR0) ermöglicht.

Geschützte Weise wurde zuerst zur x86 Architektur 1982, mit der Ausgabe von Intel 80286 (286) Verarbeiter hinzugefügt, und später mit der Ausgabe 80386 (386) 1985 erweitert. Wegen der durch die geschützte Weise hinzugefügten Erhöhungen ist es weit angenommen geworden und ist das Fundament für alle nachfolgenden Erhöhungen zur x86 Architektur geworden.

Geschichte

Die 8086, der Vorgänger zu den 286, wurden mit einem 20-Bit-Speicheradressbus ursprünglich entworfen. Das hat dem Verarbeiter erlaubt, auf 2 Bytes des Gedächtnisses zuzugreifen, das zu 1 Megabyte gleichwertig ist. Zurzeit wurde 1 Megabyte als ein relativ großer Betrag des Gedächtnisses betrachtet, so haben die Entwerfer von IBM Personal Computer die ersten 640 Kilobytes für die Anwendung und den Betriebssystemgebrauch vorbestellt und die restlichen 384 Kilobytes für das Grundlegende System des Eingangs/Produktion (BIOS) und Gedächtnis für Erweiterungsgeräte vorbestellt wurden.

Weil Zeit, die Kosten des Gedächtnisses unaufhörlich vermindert und vergrößerte Anwendung fortgeschritten ist. Die 1-Mb-Beschränkung ist schließlich ein bedeutendes Problem geworden. Intel hat vorgehabt, diese Beschränkung zusammen mit anderen mit der Ausgabe der 286 zu lösen.

Die 286

Die Initiale hat Weise geschützt, die mit den 286 veröffentlicht ist, wurde nicht weit verwendet. Mehrere Mängel wie die Unfähigkeit, auf den BIOS und die Unfähigkeit zuzugreifen, zurück auf die echte Weise umzuschalten, ohne den Verarbeiter neu zu fassen, haben weit verbreiteten Gebrauch verhindert. Weit verbreitete Annahme wurde durch die Tatsache zusätzlich behindert, dass auf den 286 nur erlaubten Speicherzugang in 16-Bit-Segmenten, nur 2 Bytes bedeutend, die zu 64 Kilobytes gleichwertig sind, auf einmal zugegriffen werden konnte.

Die 286 aufrechterhalten umgekehrt Vereinbarkeit mit den vorherigen 8086 durch das anfängliche Eingehen in echte Weise auf der Macht. Echte Weise hat identisch zu den 8086 fungiert, älterer Software erlaubend, unmodifiziert auf den neueren 286 zu laufen. Um auf die verlängerte Funktionalität der 286 zuzugreifen, würde das Betriebssystem den Verarbeiter in die geschützte Weise setzen. Das hat das 24-Bit-Wenden ermöglicht, das dem Verarbeiter erlaubt hat, auf 2 Bytes des Gedächtnisses zuzugreifen, das zu 16 Megabytes gleichwertig ist.

Die 386

Mit der Ausgabe der 386 1985 wurden viele der Probleme, die weit verbreitete Adoption der vorherigen geschützten Weise verhindern, gerichtet.

Die 386 wurden mit einer Adressbusgröße von 32 Bit veröffentlicht, die 2 Bytes des Gedächtnisses berücksichtigt, das zugreifend, zu 4 Gigabytes gleichwertig ist. Die Segment-Größen wurden auch zu 32 Bit vergrößert, bedeutend, dass auf den vollen Adressraum von 4 Gigabytes ohne das Bedürfnis zugegriffen werden konnte, zwischen vielfachen Segmenten umzuschalten. Zusätzlich zur vergrößerten Größe des Adressbusses und der Segment-Register wurden viele andere neue Eigenschaften mit der Absicht hinzugefügt, betriebliche Sicherheit und Stabilität zu vergrößern.

Geschützte Weise wird jetzt in eigentlich allen modernen Betriebssystemen verwendet, die auf der x86 Architektur, wie Windows von Microsoft, Linux und viele andere laufen.

386 Hinzufügungen zur geschützten Weise

Mit der Ausgabe der 386 wurden die folgenden zusätzlichen Eigenschaften zur geschützten Weise hinzugefügt:

  • Paginierung
  • Virtueller und physischer 32-Bit-Adressraum *
  • 32-Bit-Segment gleicht aus
  • Fähigkeit, zurück auf die echte Weise umzuschalten
  • Virtuelle 8086 Weise

Der physische 32-Bit-Adressraum ist auf 80386SX, und andere 386 Verarbeiter-Varianten nicht da, die den älteren 286 Bus verwenden.

Das Hereingehen und das Herausnehmen über geschützte Weise

Bis zur Ausgabe der 386 hat sich geschützte Weise nicht geboten eine direkte Methode, zurück in die echte Weise umzuschalten, hat einmal Weise geschützt wurde eingegangen. IBM hat einen workaround geschaffen, der das Rücksetzen der Zentraleinheit über den Tastatur-Kontrolleur und das Sparen der Systemregister, des Stapel-Zeigestocks und häufig der Unterbrechungsmaske im Realzeituhr-Span-RAM eingeschlossen hat. Das hat dem BIOS erlaubt, die Zentraleinheit zu einem ähnlichen Staat wieder herzustellen und zu beginnen, Code vor dem Rücksetzen durchzuführen. Später wurde eine Dreifache Schuld verwendet, um die 286 Zentraleinheit neu zu fassen, die viel schneller und sauberer war als die Tastatur-Kontrolleur-Methode.

Um in geschützte Weise einzugehen, muss Global Descriptor Table (GDT) zuerst mit einem Minimum von drei Einträgen geschaffen werden: ein ungültiger Deskriptor, ein Codesegment-Deskriptor und Datensegment-Deskriptor. Die 21. Adresslinie (A20 Linie) muss auch ermöglicht werden, den Gebrauch aller Adresslinien zu erlauben, so dass die Zentraleinheit außer 1 Megabyte des Gedächtnisses zugreifen kann (nur den ersten 20 wird erlaubt, nach der Macht - bis zur Garantie-Vereinbarkeit mit der älteren Software verwendet zu werden). Nach dem Durchführen jener zwei Schritte hat der PE gebissen muss im CR0-Register gesetzt werden, und ein weiter Sprung muss gemacht werden, die Vorabruf-Eingangswarteschlange zu klären.

; Satz PE hat gebissen

mov eax, cr0

oder eax, 1

mov cr0, eax

; weiter Sprung (cs = Auswählender des Codesegments)

jmp cs: Premierminister

@pm:

; Jetzt sind wir im PREMIERMINISTER.

Mit der Ausgabe der 386 konnte über geschützte Weise durch das Laden der Segment-Register mit echten Weise-Werten geherrscht werden, die A20 Linie und die Reinigung des PE unbrauchbar zu machen, haben im CR0-Register ohne das Bedürfnis gebissen, die anfänglichen mit den 286 erforderlichen Einstellungsschritte durchzuführen.

Eigenschaften

Geschützte Weise ließ mehrere Eigenschaften entwerfen, um eine Kontrolle eines Betriebssystems über die Anwendungssoftware zu erhöhen, um Sicherheit und Systemstabilität zu vergrößern. Diese Hinzufügungen erlauben dem Betriebssystem, in einem Weg zu fungieren, der bedeutsam schwieriger oder sogar ohne richtige Hardware-Unterstützung unmöglich sein würde.

Vorzug-Niveaus

In der geschützten Weise gibt es vier Vorzug-Niveaus oder Ringe, die von 0 bis 3, mit dem Ring 0 numeriert sind, das privilegierteste und 3 seiend, meist seiend. Der Gebrauch von Ringen berücksichtigt Systemsoftware, um Aufgaben davon einzuschränken, auf Daten zuzugreifen, Tore zu nennen oder privilegierte Instruktionen durchzuführen.

In den meisten Umgebungen laufen das Betriebssystem und einige Gerät-Fahrer im Ring 0 und den Anwendungen, die im Ring 3 geführt sind.

Echte Weise-Anwendungsvereinbarkeit

Gemäß Intel 80286 Programmer's Reference Manual,

Größtenteils war die binäre Vereinbarkeit mit dem Code der echten Weise, die Fähigkeit, auf bis zu 16 Mb des physischen Gedächtnisses und 1 GB des virtuellen Gedächtnisses zuzugreifen, die am meisten offenbaren Änderungen Anwendungsprogrammierern. Das war nicht ohne seine Beschränkungen, wenn eine Anwendung verwerten würde oder sich auf einige der Techniken darunter verließe, würde nicht laufen:

  • Segment-Arithmetik
  • Privilegierte Instruktionen
  • Direkter Hardware-Zugang
  • Das Schreiben zu einem Codesegment
  • Durchführung von Daten
  • Überschneidung auf Segmente
  • Gebrauch von BIOS-Funktionen, wegen der BIOS-Unterbrechungen, die durch Intel vorbestellen werden

In Wirklichkeit haben fast alle DOS-Anwendungsprogramme diese Regeln verletzt. Wegen dieser Beschränkungen wurde virtuelle 8086 Weise geschaffen und mit den 386 veröffentlicht. Trotz solcher potenziellen Rückschläge können Windows 3.0 und seine Nachfolger die binäre Vereinbarkeit mit der echten Weise ausnutzen, um vieles Windows 2.x (Windows 2.0 und Windows 2.1x) Anwendungen zu führen, die in der echten Weise in Windows 2.x in der geschützten Weise laufen.

Virtuelle 8086 Weise

Mit der Ausgabe der 386, hat Weise-Angebote geschützt, was die Handbücher von Intel virtuelle 8086 Weise nennen. Virtuelle 8086 Weise wird entworfen, um für die 8086 vorher geschriebenem Code zu erlauben, unmodifiziert und gleichzeitig mit anderen Aufgaben zu laufen, ohne Sicherheit oder Systemstabilität in Verlegenheit zu bringen. Virtuelle 8086 Weise ist völlig umgekehrt jedoch mit allen Programmen nicht vereinbar. Programme, die Segment-Manipulation, privilegierte Instruktionen, direkten Hardware-Zugang oder Gebrauch-Selbständern-Code verlangen, werden eine Ausnahme erzeugen, der durch das Betriebssystem gedient werden muss. Außerdem erzeugen Anwendungen, die in der virtuellen 8086 Weise laufen, eine Falle mit dem Gebrauch von Instruktionen, die Eingang/Produktion (Eingabe/Ausgabe) einschließen, die Leistung negativ zusammenpressen kann.

Wegen dieser Beschränkungen haben einige Programme ursprünglich vorgehabt, auf den 8086 zu laufen, kann in der virtuellen 8086 Weise nicht geführt werden. Infolgedessen wird Systemsoftware gezwungen, Systemsicherheit oder umgekehrt Vereinbarkeit wenn entweder in Verlegenheit zu bringen, sich mit Vermächtnis-Software befassend. Ein Beispiel solch eines Kompromisses kann mit der Ausgabe von Windows NT gesehen werden, das umgekehrt Vereinbarkeit für "unartige" DOS-Anwendungen fallen lassen hat.

Das Segment-Wenden

In der echten Weise weist jede logische Adresse direkt in die physische Speicherposition, hin

jede logische Adresse besteht aus zwei 16 Nebenrollen:

Der Segment-Teil der logischen Adresse enthält die Grundadresse eines Segmentes mit einer Körnung von 16 Bytes,

d. h. Segmente können an der physischen Adresse 0, 16, 32..., 2-16 anfangen.

Der Ausgleich-Teil der logischen Adresse enthält einen Ausgleich innerhalb des Segmentes,

d. h. die physische Adresse kann als berechnet werden

physical_address: = segment_part × 16 + Ausgleich (wenn die Adresslinie A20 ermöglicht wird),

beziehungsweise (segment_part × 16 + Ausgleich) mod 2 (wenn A20 aus ist)

Jedes Segment hat eine Größe von 2 Bytes.

Geschützte Weise

In der geschützten Weise wird der segment_part von einem 16-Bit-Auswählenden, ersetzt

die 13 oberen Bit (hat 3 zum Bit 15 gebissen), des Auswählenden enthalten den Index eines Zugangs innerhalb eines Deskriptor-Tisches. Die niedrigsten zwei Bit definieren den Vorzug der Bitte, von 0 bis 3, wo 0 den höchsten Vorrang und 3 das niedrigste hat. Der Rest hat gebissen gibt an, ob die Operation gegen den GDT oder einen LDT ist.

Der Deskriptor-Tabellenzugang enthält

  • die echte geradlinige Adresse des Segmentes
  • ein Grenzwert für die Segment-Größe
  • einige Attribut-Bit (Fahnen)

286

Die Segment-Adresse innerhalb des Deskriptor-Tabellenzugangs hat eine Länge von 24 Bit

so kann jedes Byte des physischen Gedächtnisses, wie gebunden, des Segmentes definiert werden.

Der Grenzwert innerhalb des Deskriptor-Tabellenzugangs hat eine Länge von 16 Bit

so kann Segment-Länge zwischen 1 Byte und 2 Bytes sein.

Die berechnete geradlinige Adresse kommt der physischen Speicheradresse gleich.

386

Die Segment-Adresse innerhalb des Deskriptor-Tabellenzugangs wird zu 32 Bit ausgebreitet

so kann jedes Byte des physischen Gedächtnisses, wie gebunden, des Segmentes definiert werden.

Der Grenzwert innerhalb des Deskriptor-Tabellenzugangs wird zu 20 Bit ausgebreitet

und vollendet mit einer Körnungsfahne (kurz: G-Bit):

  • wenn G-Bit Nullgrenze ist, hat eine Körnung von 1 Byte, d. h. Segment-Größe kann 1, 2..., 2 Bytes sein.
  • wenn G-Bit eine Grenze ist, hat eine Körnung von 2 Bytes, d. h. Segment-Größe kann 1 &times sein; 2, 2 × 2..., 2 × 2 Bytes.

Wenn Paginierung von (sieh unten) ist, kommt die berechnete geradlinige Adresse der physischen Speicheradresse gleich.

Wenn Paginierung auf ist, wird die berechnete geradlinige Adresse als Eingang der Paginierung verwendet.

Der 386 Verarbeiter verwendet auch 32-Bit-Werte für den Adressausgleich.

Um Vereinbarkeit mit 286 geschützter Weise aufrechtzuerhalten, wurde eine neue Verzug-Fahne (kurz D-Bit) hinzugefügt.

Wenn das D-Bit eines Codesegments von allen Befehlen innerhalb dieses Segmentes ist, wird als 16-Bit-Befehle interpretiert.

Struktur des Segment-Deskriptor-Zugangs

</Tisch>

Säulen B: Byte-Ausgleich innerhalb des Zugangs

Säulenbit, der erste anordnen: Bit-Ausgleich innerhalb des Zugangs

Säulenbit, der zweite anordnen: Bit-Ausgleich innerhalb des Bytes

</Tisch>

Paginierung

Zusätzlich zum Hinzufügen virtueller 8086 Weise haben die 386 auch Paginierung zur geschützten Weise hinzugefügt. Durch die Paginierung kann Systemsoftware einschränken und einen Zugang einer Aufgabe zu Seiten kontrollieren, die Abteilungen des Gedächtnisses sind. In vielen Betriebssystemen wird Paginierung verwendet, um einen unabhängigen virtuellen Adressraum für jede Aufgabe zu schaffen. Das hindert eine Aufgabe, das Gedächtnis von einem anderen zu manipulieren. Paginierung berücksichtigt auch Seiten, die aus der primären Lagerung und auf eine langsamere und größere sekundäre Lagerung wie eine Festplatte zu bewegen sind. Das berücksichtigt mehr Gedächtnis, das zu verwenden ist als physisch verfügbar in der primären Lagerung. Die x86 Architektur erlaubt Kontrolle von Seiten durch zwei Reihe: Seitenverzeichnisse und Seitentabellen.

Ursprünglich war ein Seitenverzeichnis die Größe von einer Seite, 4 Kilobytes, und hat 1,024-Seite-Verzeichniseinträge (PDE) enthalten, obwohl nachfolgende Erhöhungen zur x86 Architektur die Fähigkeit hinzugefügt haben, größere Seitengrößen zu verwenden. Jeder PDE hat einen Zeigestock zu einem Seitentisch enthalten. Ein Seitentisch war auch ursprünglich 4 Kilobytes in der Größe und hat 1,024-Seite-Tabelleneinträge (PTE) enthalten. Jeder PTE hat einen Zeigestock zur physischen Adresse der wirklichen Seite enthalten und wird nur verwendet, wenn 4-Kilobyte-Seiten verwendet werden. Zu jeder vorgegebenen Zeit kann nur eine Seite Verzeichnis im aktiven Gebrauch sein.

Das Mehrbeschäftigen

Durch den Gebrauch der Ringe, privilegierten Anruf-Tore und Task State Segment (TSS), das mit den 286 eingeführt ist, wurde präemptive Multitasking möglich auf der x86 Architektur gemacht. Der TSS erlaubt Mehrzweckregister, Segment-Auswählender-Felder, und schobert zu allen auf modifiziert werden, ohne diejenigen einer anderen Aufgabe zu betreffen. Der TSS erlaubt auch einem Vorzug-Niveau einer Aufgabe und Eingabe/Ausgabe-Hafen-Erlaubnis, einer anderen Aufgabe unabhängig zu sein.

In vielen Betriebssystemen werden die vollen Eigenschaften des TSS nicht verwendet. Das ist allgemein wegen Beweglichkeitssorgen oder wegen der mit Hardware-Aufgabe-Schaltern geschaffenen Leistungsprobleme. Infolgedessen verwenden viele Betriebssysteme sowohl Hardware als auch Software, um ein stark mehrbeanspruchendes System zu schaffen.

Betriebssysteme

Betriebssysteme wie OS/2 1.x versuchen, den Verarbeiter zwischen geschützten und echten Weisen zu schalten. Das ist sowohl langsam als auch unsicher, weil ein echtes Weise-Programm einen Computer leicht zertrümmern kann. OS/2 1.x definiert einschränkende Programmierregeln, die eine Familien-API oder gebundenes Programm erlauben, entweder in der echten oder in geschützten Weise zu laufen.

Ein früher Unix Betriebssysteme, OS/2 1.x, und Windows hat diese Weise verwendet. Windows 3.0 ist im Stande gewesen zu laufen echte Weise-Programme in 16 Bit haben Weise geschützt. Windows 3.0, als es auf die geschützte Weise umgeschaltet hat, hat sich dafür entschieden, das einzelne Vorzug-Niveau-Modell zu bewahren, das in der echten Weise verwendet wurde, die ist, warum Windows-Anwendungen und DLLs Unterbrechungen anhaken können und wirklich Hardware-Zugang leiten. Das hat durch die Reihe des Windows 9x gedauert. Wenn ein Programm des Windows 1.x oder 2.x richtig geschrieben wird und Segment-Arithmetik vermeidet, wird es denselben Weg sowohl in echten als auch in geschützten Weisen führen. Windows-Programme vermeiden allgemein Segment-Arithmetik, weil Windows eine Software virtuelles Speicherschema, bewegender Programm-Code und Daten im Gedächtnis durchführt, wenn Programme nicht laufen, ist so Manipulierung absoluter Adressen gefährlich; Programme sollten nur Griffe zu Speicherblöcken behalten, die wenn nicht laufen. Das Starten eines alten Programms, während Windows 3.0 in der geschützten Weise läuft, löst einen Warnungsdialog aus, andeutend, Windows in der echten Weise entweder zu führen oder eine aktualisierte Version der Anwendung zu erhalten. Das Aktualisieren wohl erzogener Programme mit dem ZEICHEN-Dienstprogramm mit dem SPEICHER-Parameter vermeidet diesen Dialog. Es ist nicht möglich, einige GUI Programme zu haben, die in geschützter Weise von 16 Bit und anderen GUI Programmen laufen, die in der echten Weise laufen. In Windows 3.1 ist echte Weise verschwunden.

Heute wird geschützte Weise von 16 Bit noch verwendet, um Anwendungen z.B zu führen. DPMI vereinbare DOS-Ex-Anerbieten-Programme (durch virtuelle DOS-Maschinen) oder Anwendungen des Windows 3.x (durch Windows auf dem Windows-Subsystem) und bestimmte Klassen von Gerät-Fahrern (z.B, für die Schirm-Entschlossenheit mit der BIOS Funktionalität zu ändern), in OS/2 2.0 und später, alle unter der Kontrolle eines 32-Bit-Kerns.

Siehe auch

Außenverbindungen


Anthony Perkins / Arxel Stamm
Impressum & Datenschutz