-
TECHNISCHES GEBIET
-
Diese
Erfindung betrifft im Allgemeinen Speicherverwaltungssysteme und
-Verfahren und betrifft insbesondere Speicherverwaltungssysteme
und -Verfahren, die Schutz für
in einem Speicher abgelegte Daten bieten.
-
STAND DER TECHNIK
-
Ein
typisches Computersystem beinhaltet eine Speicherhierarchie, um
ein relativ hohes Maß an
Leistungsfähigkeit
bei relativ geringen Kosten zu erreichen. Anweisungen diverser unterschiedlicher
Softwareprogramme sind typischerweise in einer relativ großen aber
langsamen nichtflüchtigen
Speichereinheit (beispielsweise einer Festplatteneinheit) gespeichert.
Wenn ein Anwender eines der Programme für die Abarbeitung auswählt, werden
die Anweisungen bzw. Instruktionen des ausgewählten Programms in eine Hauptspeichereinheit
(beispielsweise ein Speicher mit wahlfreiem Zugriff (RAM)) kopiert,
und eine zentrale Recheneinheit (CPU) erhält die Instruktionen des ausgewählten Programms
von der Hauptspeichereinheit. Eine gut bekannte virtuelle Speicherverwaltungstechnik
ermöglicht
es der CPU, auf Datenstrukturen zuzugreifen, die größer sind als
die Struktur der Hauptspeichereinheit, indem lediglich ein Teil
der Datenstrukturen zu einer gegebenen Zeit in der Hauptspeichereinheit
gespeichert wird. Der Rest der Datenstrukturen ist in der relativ
großen
aber langsamen nicht flüchtigen
Speichereinheit gespeichert und wird lediglich bei Bedarf in die
Hauptspeichereinheit kopiert.
-
Ein
virtueller Speicher wird typischerweise so eingerichtet, dass ein
Adressenraum der CPU in mehrere Blöcke aufgeteilt wird, die als
Rahmen oder „Seiten" bezeichnet werden.
Lediglich solche Daten, die einem Teil der Seiten entsprechen, werden
in der Hauptspeichereinheit zu einer gegebenen Zeit gespeichert. Wenn
die CPU eine Adresse innerhalb einer gegebenen Seite erzeugt, und
eine Kopie dieser Seite nicht in der Hauptspeichereinheit vorhanden
ist, wird die angeforderte Seite mit den Daten aus der relativ großen aber langsamen
nichtflüchtigen
Speichereinheit in die Hauptspeichereinheit kopiert. Während dieses Vorganges kann
eine weitere Seite mit Daten von der Hauptspeichereinheit in die
nichtflüchtige
Speichereinheit kopiert werden, um für die geforderte Seite Platz
zu schaffen.
-
Die
populäre
80 × 86
(×86)
Prozessorarchitektur enthält
spezialisierte Hardwareelemente, um einen geschützten virtuellen Adressenmodus
(d. h. einen geschützten
Modus) zu unterstützen. 1 bis 3 werden
nunmehr benutzt, um zu beschreiben, wie ein ×86-Prozessor sowohl einen
virtuellen Speicher als auch Speicherschutzmerkmale implementiert. 1 ist
ein Diagramm eines gut bekannten Mechanismus 100 zur Überführung einer
linearen in eine physikalische Adresse der ×86-Prozessorarchitektur. Es
ist ein Adressenüberführungsmechanismus 100 in
einem ×86-Prozessor
eingerichtet und beinhaltet eine lineare Adresse 102, die
in dem ×86-Prozessor
erzeugt wird, ein Seitentabellenverzeichnis (d. h. ein Seitenverzeichnis) 104,
mehrere Seitentabellen mit einer Seitentabelle 106, mehrere
Seitenrahmen mit einem Seitenrahmen 108 und ein Steuerregister
(CR3) 110. Das Seitenverzeichnis 104 und die mehreren
Seitentabellen repräsentieren
in seitenunterteilte Speicherdatenstrukturen, die von der Betriebssystemsoftware
(d. h. einem Betriebssystem) erzeugt und beibehalten werden. Das
Seitenverzeichnis 104 ist stets in dem Speicher (beispielsweise
der Hauptspeichereinheit) angeordnet. Der Einfachheit halber wird
angenommen, dass die Seitentabelle 106 und der Seitenrahmen 108 ebenfalls
in dem Speicher angeordnet sind.
-
Wie
in 1 dargestellt ist, ist die lineare Adresse 102 in
drei Bereiche unterteilt, um den Übergang von der linearen zur
physikalischen Adresse zu bewerkstelligen. Die höherwertigsten Bits des CR3 110 werden verwendet,
um ein Seitenverzeichnisbasisregister zu speichern. Das Seitenverzeichnisbasisregister
ist eine Basisadresse einer Speicherseite, die das Seitenverzeichnis 104 enthält. Das
Seitenverzeichnis 104 enthält mehrere Seitenverzeichnisseinträge, zu denen
ein Seitenverzeichniseintrag 112 gehört. Ein oberer „Verzeichnisindex-"Bereich der linearen
Adresse 102, der die höherwertigsten
oder signifikantesten Bits der linearen Adresse 102 enthält, wird
als ein Index für
das Seitenverzeichnis 104 verwendet. Der Seitenverzeichniseintrag 112 wird
aus dem Seitenverzeichnis 104 ausgewählt, wobei die Seitenverzeichnisbasisadresse
des CR3 110 und der obere „Verzeichnisindex-"Bereich der linearen
Adresse 102 verwendet werden.
-
2 ist
eine Ansicht eines Seitenverzeichniseintragsformats 200 der ×86-Prozessorarchitekur.
Wie in 2 dargestellt ist, enthalten die höherwertigsten
(d. h. die signifikantesten) Bits eines gegebenen Seitenverzeichniseintrages
eine Seitentabellenbasisadresse, wobei die Seitentabellenbasisadresse
eine Basisadresse einer Speicherseite ist, die eine entsprechende
Seitentabelle enthält.
Die Seitentabellenbasisadresse des Seitenverzeichniseintrags 112 wird
verwendet, um die entsprechende Seitentabelle 106 auszuwählen.
-
Es
sei nun wieder auf 1 verwiesen; die Seitentabelle 106 enthält mehrere
Seitentabelleneinträge, zu
denen ein Seitentabelleneintrag 114 gehört. Ein mittlerer „Tabellenindex-"Bereich der linearen
Adresse 102 wird als ein Index für die Seitentabelle 106 verwendet,
wodurch der Seitentabelleneintrag 114 ausgewählt wird. 3 ist
eine Ansicht eines Seitentabelleneintragsformats 300 der ×86-Prozessorarchitektur.
Wie in 3 dargestellt ist, enthalten die höherwertigsten
(d. h. die signifikantesten) Bits eines gegebenen Seitentabelleneintrags
eine Seitenrahmenbasisadresse, wobei die Seitenrahmenbasisadresse
eine Rahmenadresse eines entsprechenden Seitenrahmens ist.
-
Es
sei wieder auf 1 verwiesen; die Seitenrahmenbasisadresse
des Seitentabelleneintrags 114 wird verwendet, um den entsprechenden
Seitenrahmen 108 auszuwählen.
Der Seitenrahmen 108 enthält mehrere Speicherplätze. Ein
unterer oder „Offset"-Bereich der linearen
Adresse 102 wird als ein Index für den Seitenrahmen 108 verwendet.
In kombinierter Form bilden die Seitenrahmenbasisadresse des Seitentabelleneintrags 114 und
der Offset-Bereich der linearen Adresse 102 die physikalische
Adresse entsprechend der linearen Adresse 102 und bezeichnen
einen Speicherplatz 116 innerhalb des Seitenrahmens 108.
Der Speicherplatz 116 besitzt die physikalische Adresse,
die aus dem Vorgang der Überführung der
linearen in die physikalische Adresse resultiert.
-
Im
Hinblick auf die Speicherschutzmerkmale besitzt das Seitenverzeichniseintragsformat 100 aus 2 und
das Seitentabelleneintragsformat 300 aus 3 ein
Anwender/Steuerungs (U/S) Bit und ein Lese/Schreib-(R/W)Bit. Der
Inhalt der U/S und R/W-Bits wird von dem Betriebssystem verwendet,
um die entsprechenden Seitenrahmen (d. h. Speicherseiten) vor einem
nicht autorisierten Zugriff zu schützen. U/S = 0 wird angewendet,
um Betriebssystemspeicherseiten zu kennzeichnen und entspricht ferner
einer „Steuerungs- bzw. übergeordneten
Ebene" des Betriebssystems.
Die Steuerungsebene des Betriebssystems entspricht einer momentanen
Privilegebene 0 (CPL0) von Softwareprogrammen und Routinen, die
von dem ×86-Prozessor ausgeführt werden.
U/S = 1 wird verwendet, um Anwenderspeicherseiten zu bezeichnen
und entspricht einer „Anwender-"Ebene des Betriebssystems.
Die Anwenderebene des Betriebssystems entspricht CPL3 des ×86-Prozessors. (Die
Anwenderebene kann auch der CPL1 und/oder CPL2 des ×86-Prozessors
entsprechen.)
-
Das
R/W-Bit wird verwendet, um Zugriffsarten zu bezeichnen, die für die entsprechende
Speicherseite zulässig
sind. R/W = 0 zeigt an, dass lediglich Lesezugriffe für die entsprechende
Speicherseite zulässig
sind (d. h. die entsprechende Seite ist „nur lesbar"). R/W = 1 zeigt
an, dass sowohl Lese- als auch Schreibezugriffe für die entsprechende
Speicherseite zulässig
sind (d. h. die entsprechende Speicherseite ist „lesbar/schreibbar").
-
Während des
Vorgangs zum Überführen der
linearen in die physikalischen Adresse aus 1 werden die
Inhalte der U/S-Bits des Seitenverzeichniseintrags 112 und
des Seitentabelleneintrags 114, die dem Seitenrahmen 108 entsprechen,
logisch UND – verknüpft, um
zu bestimmen, ob der Zugriff auf den Seitenrahmen 108 autorisiert
ist. In ähnlicher
Weise werden die Inhalte der R/W-Bits des Seitenverzeichniseintrags 112 und des
Seitentabelleneintrags 114 logisch UND – verknüpft, um zu bestimmen, ob der
Zugriff auf den Seitenrahmen 108 autorisiert ist. Wenn
die logischen Kombinationen der U/S- und R/W-Bits anzeigen, dass
der Zugriff auf den Seitenrahmen 108 autorisiert ist, wird
auf den Speicherplatz 116 unter Anwendung der physikalischen Adresse
zugegriffen. Wenn andererseits die logischen Verknüpfungen
der U/S- und R/W-Bits anzeigen, dass der Zugriff auf den Seitenrahmen 108 nicht
autorisiert ist, wird auf den Speicherplatz 116 nicht zugegriffen
und es wird ein Schutzfehler angezeigt.
-
Details
dieses ×86-Schutzmodus
können
nachgelesen werden in Intel Corp.: „Intel Architektursoftwareentwicklungshandbuch,
Band: Systemprogrammierführer.
Titel 2–54,
6, 15 und Anhang B." Intel
Referenzhandbuch XP 002248376. Ähnliche
Beschreibungen sind beispielsweise in
US
6,154,818 und
US 5,627,987 zu
finden. Diese Beschreibungen zeigen, dass Sicherheitsattribute in
den Seitentabellen verwendet werden können, um Speicherseiten zu
schützen.
-
Bedauerlicherweise
sind die zuvor beschriebenen Speicherschutzmechanismen der ×86-Prozessorarchitektur
nicht ausreichend, um in dem Speicher gespeicherte Daten zu schützen. Beispielsweise
kann ein Softwareprogramm oder eine Routine, die auf der übergeordneten
bzw. Steuerungsebene (beispielsweise mit einer CPL von 0) ausgeführt wird,
auf einen beliebigen Bereich des Speichers zugreifen und kann einen beliebigen
Bereich des Speichers, der nicht als „nur lesbar" (R/W = 0) gekennzeichnet
ist, modifizieren (d. h. in diesen schreiben). Zudem kann beim Arbeiten
auf der übergeordneten
Ebene das Softwareprogramm oder die Routine die Attribute (d. h.
die U/S- und R/W-Bits) eines beliebigen Bereichs des Speichers ändern. Das Softwareprogramm
oder die Routine kann somit einen beliebigen Bereich des Speichers ändern, der
als „nur lesbar" bis „lesbar/schreibbar" (R/W = 1) gekennzeichnet
ist, und kann dann ferner diesen Bereich des Speichers modifizieren.
-
US 5 619 671 zeigt eine
Speicherverwaltungseinrichtung, in der ein Anwenderprogramm einen
speziellen Befehl ausgibt, um ein zuvor gespeichertes Kennzeichen
aus einem Register abzurufen. Sodann wird von dem Anwenderprogramm
eine virtuelle Adresse in der geschützten Seite zusammen mit dem
Kennzeichen zu einer Adressenübersetzungs- und Sicherheitsverifizierungseinheit übertragen.
Wenn die erzeugte Adresse einer geschützten Seite entspricht, wird
aus einer entsprechenden Tabelle ein zugeordnetes Kennzeichen ausgelesen
und mit dem zuvor ausgelesenen Kennzeichen verglichen, so dass ein
Zugriff auf die geschützte
Speicherseite nur bei Gleichheit der beiden Kennzeichen erfolgt.
-
EP 0 768 594 A1 zeigt
ein Sicherheitssystem für
ein Computersystem, in welchem spezielle Auflagen für den Zugriff
auf das System gemacht werden. Dabei wird das Ausbreiten von Viren
unterbunden wird, indem die gesamten Computerfunktionen in eine
Menge von Ereignissen unterteilt werden und diesen entsprechende Kapazitäten zugeordnet
werden, wobei unterschiedlichen Anwendern abhängig von der speziellen Anwendung
unterschiedliche Kapazitäten
zugewiesen werden.
-
Aufgabe
der vorliegenden Erfindung ist es, ein Verfahren und eine Einheit
anzugeben, in denen eine flexible Speicherverwaltung unter Benutzung
zusätzlicher
Sicherheitsattribute ermöglicht
wird.
-
ÜBERBLICK ÜBER DIE ERFINDUNG
-
Es
wird eine Speicherverwaltungseinheit bereitgestellt, um einen Speicher,
in dem Daten gespeichert sind, die in einer Vielzahl von Speicherseiten
angeordnet sind, zu verwalten.
-
Die
Aufgabe wird gelöst
durch eine Speicherverwaltungseinheit nach Anspruch 1, ein Verfahren
nach Anspruch 6 und einen Prozessor nach Anspruch 8.
-
Eine
zentrale Recheneinheit (CPU) wird beschrieben, die eine Ausführungseinheit
und die zuvor beschriebene Speicherverwaltungseinheit (MMU) aufweist.
Die Ausführungseinheit
liest Anweisungen aus einem Speicher aus und führt die Anweisungen aus. Die
MMU verwaltet den Speicher und ist so konfigurierbar, um den Speicher
so zu verwalten, dass der Speicher Daten speichert, die in mehreren
Speicherseiten organisiert sind. Die MMU umfasst die zuvor beschriebene
Sicherheitsprüfeinheit.
Ferner wird ein Computersystem bereitgestellt, das den Speicher,
die CPU und die MMU aufweist.
-
Es
wird ein Verfahren bereitgestellt, um Zugriffsicherheit für einen
Speicher zu bieten, der zum Speichern von Daten verwendet wird,
die in mehreren Speicherseiten organisiert sind. Das Verfahren umfasst
das Erhalten einer linearen Adresse, die während der Ausführung einer
Instruktion erzeugt wird, und eines Sicherheitsattributs der Anweisung,
wobei die Anweisung in einer ersten Speicherseite lokalisiert ist.
Die lineare Adresse wird verwendet, um auf eine oder mehrere in
Seiten angeordnete Speicherdatenstrukturen in dem Speicher zuzugreifen,
um eine Basisadresse einer ausgewählten Speicherseite zu erhalten
und auf mehrere Sicherheitsattribute der ausgewählten Speicherseite zuzugreifen.
Wenn das Sicherheitsattribut der Instruktion (beispielsweise eine
momentane Privilegebene oder CPL der Anweisung, wie sie durch die ×86-Prozessorarchitektur
definiert ist) und die Sicherheitsattribute der ausgewählten Speicherseite
(beispielsweise ×86-U/S- und
R/W-Bits der ausgewählten
Speicherseite) anzeigen, dass der Zugriff autorisiert ist, wird
die Basisadresse der ausgewählten
Speicherseite mit einem Offset kombiniert, um eine physikalische
Adresse innerhalb der ausgewählten
Speicherseite zu erzeugen. Wenn das Sicherheitsattribut der Instruktion
und die Sicherheitsattribute der ausgewählten Speicherseite anzeigen,
dass der Zugriff nicht autorisiert ist, wird ein Fehlersignal (beispielsweise
ein ×86-GPF-Signal)
erzeugt.
-
Die
lineare Adresse wird auch verwendet, um auf eine oder mehrere Sicherheitsattributdatenstrukturen,
die in dem Speicher lokalisiert sind, um ein zusätzliches Sicherheitsattribut
der ersten Speicherseite zu erhalten, und auf ein zusätzliches
Sicherheitsattribut der ausgewählten
Speicherseite zuzugreifen. Ein numerischer Wert, der in dem zusätzlichen
Sicherheitsattribut der ersten Speicherseite enthalten ist, wird
mit einem numerischen Wert, der in dem zusätzlichen Sicherheitsattribut
der ausgewählten
Speicherseite enthalten ist, verglichen. Es wird auf die ausgewählte Speicherseite
in Abhängigkeit
eines Ergebnisses des Vergleichs der numerischen Werte, die in dem
Sicherheitsattribut der ersten Speicher seite und dem zusätzlichen
Sicherheitsattribut der ausgewählten
Speicherseite enthalten sind, zugegriffen.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
Erfindung kann unter Bezugnahme auf die folgende Beschreibung verstanden
werden, wenn diese mit Bezug zu den begleitenden Zeichnungen studiert
wird, in denen gleiche Bezugszeichen ähnliche Elemente bezeichnen,
und wobei:
-
1 eine
Ansicht eines gut bekannten Mechanismus zum Überführen der linearen in die physikalische
Adresse der ×86-Prozessorarchitektur
ist;
-
2 eine
Ansicht eines Seitenverzeichniseintragsformats der ×86-Prozessorarchitektur
ist;
-
3 eine
Ansicht eines zweiten Seitentabelleneintragformats der ×86-Prozessorarchitektur
ist;
-
4 ein
Diagramm einer Ausführungsform
eines Computersystems mit einer CPU ist, wobei die CPU eine CPU-Sicherheitsprüfeinheit
(SCU) enthält;
-
5 eine
Ansicht ist, die die Abhängigkeiten
zwischen den diversen Hardware- und Softwarekomponenten des Computersystems
aus 4 zeigt;
-
6 eine
Ansicht einer Ausführungsform
der CPU des Computersystems aus 4 ist, wobei
die CPU eine Speicherverwaltungseinheit (MMU) aufweist;
-
7 eine
Ansicht einer Ausführungsform
der MMU aus 6 ist, wobei die MMU eine Seitenbildungseinheit
aufweist, die mit der CPU SCU verbunden ist;
-
8 eine
Ansicht einer Ausführungsform
der CPU SCU aus 7 ist;
-
9 eine
Ansicht einer Ausführungsform
eines Mechanismus zum Zugreifen auf einen Eintrag einer Sicherheitsattributstabelle
(SAT) einer gegebenen Speicherseite ist, um zusätzliche Sicherheitsinformationen für die gegebene
Speicherseite zu erhalten;
-
10 eine
Ansicht einer Ausführungsform
eines SAT-Ersatzregister ist;
-
11 eine
Ansicht einer Ausführungsform
eines SAT-Verzeichniseintragsformats ist;
-
12 eine
Ansicht einer Ausführungsform
eines SAT-Eintragsformats ist; und
-
13a und 13b in
Kombination ein Flussdiagramm einer Ausführungsform eines Verfahrens
bilden, um einen Speicher zu verwalten, der zur Speicherung von
Daten verwendet wird, die als mehrere Speicherseiten organisiert
sind.
-
Obwohl
die Erfindung diversen Modifizierungen und alternativen Formen unterliegen
kann, sind spezielle Ausführungsformen
davon durch Beispiele in den Zeichnungen gezeigt und im Weiteren
detailliert beschrieben. Es sollte jedoch selbstverständlich sein,
dass die Beschreibung spezieller Ausführungsformen nicht beabsichtigt,
die Erfindung auf die speziellen offenbarten Formen einzuschränken, sondern
die Erfindung soll alle Modifizierungen, Äquivalente und Alternativen,
die innerhalb des Grundgedankens und Schutzbereichs der Erfindung
liegen, wie sie durch die angefügten
Patentansprüche
definiert ist, abdecken.
-
ARTEN ZUM AUSFÜHREN DER
ERFINDUNG
-
Es
werden nun anschauliche Ausführungsformen
der Erfindung beschrieben. Im Hinblick auf Klarheit sind nicht alle
Merkmale einer tatsächlichen
Implementierung in dieser Erläuterung
beschrieben. Es sollte jedoch klar sein, dass bei der Entwicklung
einer derartigen tatsächlichen
Ausführungsform
diverse implementierungsabhängige
Entscheidungen getroffen werden müssen, um die spezifischen Ziele
der Entwickler, etwa die Verträglichkeit
mit systembezogenen und geschäftsbezogenen
Rahmenbedingungen zu erreichen, die von der speziellen Implementierung
abhängen.
Ferner ist zu beachten, dass ein derartiger Entwicklungsaufwand
komplex und zeitaufwendig sein kann, aber trotzdem eine Routinearbeit
ist, die von dem Fachmann bei Kenntnis der vorliegenden Offenbarung
durchgeführt
werden kann.
-
4 ist
eine Ansicht einer Ausführungsform
eines Computersystems 400 mit einer CPU 402, einer System-
oder „Hauptrechner" Brücke 404,
einem Speicher 406, einem ersten Gerätebus 408 (beispielsweise eine
Peripheriekomponentenverbindung oder PCI-Bus), einer Gerätebusbrücke 410,
einem zweiten Gerätebus 412 (beispielsweise
einem Industriestandardarchitektur- oder ISA-Bus), und vier Gerätehardwareeinheiten 414a bis 414d.
Die Hauptrechnerbrücke 404 ist
mit der CPU 402, dem Speicher 406 und dem ersten
Gerätebus 408 verbunden.
Die Hauptrechnerbrücke 404 überträgt Signale
zwischen der CPU 402 und dem ersten Gerätebus 408 und verknüpft funktionsmäßig den
Speicher 406 mit der CPU 402 und dem ersten Gerätebus 408.
Die Gerätebusbrücke 410 ist
zwischen dem ersten Gerätebus 408 und
dem zweiten Gerätebus 412 angeschlossen
und überträgt Signale
zwischen dem ersten Gerätebus 408 und
dem zweiten Gerätebus 412. In
der Ausführungsform
aus 4 sind die Gerätehardwareeinheiten 414a und 414b mit
dem ersten Gerätebus 408 und
die Gerätehardwareeinheiten 414c und 414d mit
dem zweiten Gerätebus 412 verbunden.
Eine oder mehrere der Gerätehardwareeinheiten 414a bis 414b können beispielsweise
Speichereinheiten (z. B. Festplattenlaufwerke, Floppylaufwerken
und CD-ROM-Laufwerke),
Kommunikationsgeräte
(beispielsweise Modems und Netzwerkadapter), oder Eingabe/Ausgabe-Geräte (beispielsweise
Videogeräte,
Audiogeräte
und Drucker) sein.
-
In
der Ausführungsform
aus 4 umfasst die CPU 402 eine CPU-Sicherheitsprüfeinheit
(SCU) 416. Wie nachfolgend detailliert beschrieben ist,
schützt
die CPU SCU 416 den Speicher 406 vor unautorisierten Zugriffen,
die von der CPU 402 hervorgerufen werden. Zu beachten ist,
dass in anderen Ausführungsformen die
Hauptrechnerbrücke 404 ein
Teil der CPU 402 sein kann, wie dies in 4 gezeigt
ist.
-
5 ist
eine Ansicht, die die Beziehungen zwischen den diversen Hardware-
und Softwarekomponenten des Computersystems 400 aus 4 zeigt.
In der Ausführungsform
aus 5 sind mehrere Anwenderprogramme 500,
ein Betriebssystem 502, ein Sicherheitskernel 504 und
Gerätetreiber 506a bis 506d in dem
Speicher 406 gespeichert. Die Anwenderprogramme 500,
das Betriebssystem 502, der Sicherheitskernel 504 und
die Gerätetreiber 506a bis 506d enthalten
Instruktionen, die von der CPU 402 ausgeführt werden.
Das Betriebssystem 502 stellt eine Anwenderschnittstelle
und eine Software-„Plattform" bereit, auf der
die Anwenderprogramme 500 laufen. Das Betriebssystem 502 kann
ferner beispielsweise grundlegende Hilfsfunktionen bereitstellen,
wozu eine Dateisystemverwaltung, eine Prozessverwaltung und eine
Eingabe/Ausgabe-(I/O)-Steuerung gehören können.
-
Das
Betriebssystem 502 kann ferner grundlegende Sicherheitsfunktionen
bereitstellen. Beispielsweise kann die CPU 402 (4)
ein ×86-Prozessor
sein, der Instruktionen aus dem ×86-Instruktionssatz ausführt. Bei
dieser Sachlage kann die CPU 402 spezielle Hardwareelemente
enthalten, die sowohl Schutzmerkmale für den virtuellen Speicher als
auch für
den physikalischen Speicher in dem geschützten Modus aufweisen, wie dies
zuvor beschrieben ist. Das Betriebssystem 502 kann beispielsweise
eines der Betriebssysteme (Microsoft Cop., Redmond, WA) aus der
Windows-Familie sein, das die CPU 402 in dem geschützten Modus
betreibt, und das die speziellen Hardwareelemente der CPU 402 benutzt,
um sowohl einen virtuellen Speicherschutz als auch Speicherschutz
in dem geschützten
Modus bereitzustellen.
-
Wie
nachfolgend detaillierter beschrieben ist, stellt der Sicherheitskernel 504 weitere
Sicherheitsfunktionen über
die Sicherheitsfunktionen hinaus bereit, die von dem Betriebssystem 502 zur
Verfügung
gestellt werden, um in dem Speicher 406 gespeicherte Daten
vor einem unautorisierten Zugriff zu schützen. Wie in 5 gezeigt
ist, ist der Sicherheitskernel 504 mit der CPU SCU 416 verbunden.
Wie nachfolgend detailliert beschrieben ist, überwacht die CPU SCU 416 alle
softwareiniziierten Zugriffe auf den Speicher 406 und erlaubt lediglich
autorisierte Zugriffe auf den Speicher 406.
-
In
der Ausführungsform
aus 5 sind die Gerätetreiber 506a bis 506d funktionsmäßig den
entsprechenden Gerätehardwareeinheiten 414a bis 414d zugeordnet
und mit diesen verbunden. Die Gerätehardwareeinheiten 414a und 414d können beispielsweise „sichere" Geräte sein
und die entsprechenden Gerätetreiber 506a und 506d können somit „sichere" Gerätetreiber
sein. Der Sicherheitskernel 504 ist zwischen dem Betriebssystem 502 und
den sicheren Gerätetreibern 506a und 506d angeordnet
und kann alle Zugriffe durch die Anwenderprogramme 500 und
das Betriebssystem 502 auf die sicheren Gerätetreiber 506a und 506d und
auf die entsprechenden sicheren Geräte 414a und 414d überwachen.
Der Sicherheitskernel 504 kann unautorisierte Zugriffe
auf die sicheren Gerätetreiber 506a und 506d und
die entsprechenden sicheren Geräte 414a und 414b durch
die Anwenderprogramme 500 und das Betriebssystem 502 verhindern.
Die Gerätetreiber 506b und 506c können andererseits „nicht
sichere" Gerätetreiber
und die entsprechenden Gerätehardwareeinheiten 414b und 414c können „nicht
sichere" Gerätehardwareeinheiten
sein. Die Gerätetreiber 506b und 506c und
die entsprechenden Gerätehardwareeinheiten 414b und 414c können beispielsweise „vererbte" Gerätetreiber
und Gerätehardwareeinheiten
sein.
-
Zu
beachten ist, dass in anderen Ausführungsformen der Sicherheitskernel 504 ein
Teil des Betriebssystems 502 sein kann. In noch weiteren
Ausführungsformen
können
der Sicherheitskernel 504, die Gerätetreiber 506a und 506d und/oder
die Gerätetreiber 506b und 506c ein
Teil des Betriebssystems 502 sein.
-
6 ist
eine Ansicht einer Ausführungsform
der CPU 402 des Computersystems 400 aus 1.
In der Ausführungsform
aus 6 umfasst die CPU 402 eine Ausführungseinheit 600,
eine Speicherverwaltungseinheit (MMU) 602, eine CPU- bzw.
Cache-Speichereinheit 604, eine Busschnittstelleneinheit
(BIU) 606, einen Satz Steuerregister 608 und einen
Satz an Sicherheitsausführungsmodus-(SEM)Registern 610.
Die CPU SCU 416 ist in der MMU 602 angeordnet.
Wie nachfolgend detailliert beschrieben ist, wird der Satz aus SEM-Register 610 verwendet,
um einen Sicherheitsausführungsmodus
bzw. einen Sicherheitsexekutionsmodus (SEM) in dem Computersystem 400 aus
Fig. 404 einzurichten, und der Betrieb der CPU SCU 416 wird
von den Inhalten des Satzes aus SEM-Registern 610 gesteuert.
Auf die SEM-Register 610 wird von dem Sicherheitskernel 504 (5)
zugegriffen (d. h. diese werden beschrieben und/oder ausgelesen).
Das Computersystem 400 aus 4 kann beispielsweise
in dem SEM betrieben werden, wenn: (i) die CPU 402 ein ×86-Prozessor ist, der
in dem geschützten ×86-Modus
betrieben wird, (ii) die Seiteneinteilung des Speichers aktiviert
ist, und (iii) die Inhalte der SEM-Register 610 den SEM-Betrieb
anweisen.
-
Im
Wesentlichen regelt der Inhalt des Satzes der Steuerregister 608 den
Betrieb der CPU 402. Folglich regeln die Inhalte des Satzes
der Steuerregister 608 den Betrieb der Ausführungseinheit 600,
der MMU 602, der Cache-Speichereinheit 604 und/oder
der BIU 606. Der Satz aus Steuerregistern 608 kann
beispielsweise die mehreren Steuerregister der ×86-Prozessorarchitektur beinhalten.
-
Die
Ausführungseinheit 600 der
CPU 402 holt Anweisungen (z. B. ×86-Instruktionen) und Daten,
führt die
abgeholten Anweisungen aus und erzeugt Signale (Adress-, Daten-
und Steuersignale) während
der Ausführung
der Anweisungen. Die Ausführungseinheit 600 ist
mit der Cache-Speichereinheit 604 verbunden und kann Anweisungen
aus dem Speicher 406 (4) über die
Cache-Speichereinheit 604 und die BIU 606 empfangen.
-
Der
Speicher 406 (4) des Computersystems 400 enthält mehrere
Speicherplätze,
die jeweils eine einzigartige physikalische Adresse aufweisen. Beim
Betrieb im geschützten
Modus, wenn das Seiteneinteilen aktiviert ist, wird ein Adressenraum
der CPU 402 in mehrere Blöcke unterteilt, die als Seitenrahmen
oder „Seiten" bezeichnet werden.
Wie zuvor beschrieben ist, werden lediglich Daten, die einem Teil
der Seiten entsprechen, in dem Speicher 406 zu einer gegebenen
Zeit gespeichert. In der Ausführungsform
aus 6 repräsentieren
Adressensignale, die von der Ausführungseinheit 600 während der
Ausführung
der Anweisungen erzeugt werden, segmentierte (d. h. „logische") Adressen. Wie nachfolgend
beschrieben ist, übersetzt
die MMU 602 die segmentierten Adressen, die von der Ausführungseinheit 600 erzeugt
werden, in entsprechende physikalische Adressen des Speichers 406.
Die MMU 602 liefert die physikalischen Adressen an die
Cache-Speichereinheit 604.
Die Cache-Speichereinheit 604 ist eine relativ kleine Speichereinheit,
die zum Speichern von Instruktionen und Daten, die kurze Zeit zuvor
von der Ausführungseinheit 600 abgeholt
wurden, verwendet wird. Die BIU 606 ist zwischen der Cache-Speichereinheit 604 und
der Hauptrechnerbrücke 404 angeordnet und
wird verwendet, um Instruktionen und Daten, die nicht in der Cache-Speichereinheit 604 vorhanden
sind, aus dem Speicher 406 über die Hauptrechnerbrücke 404 abzuholen.
-
7 ist
eine Ansicht einer Ausführungsform
der MMU 602 aus 6. In der Ausführungsform
aus 7 umfasst die MMU 602 eine Segmentierungseinheit 700,
eine Seitenbildungseinheit 702, die CPU SCU 616 und
eine Auswahllogik 704 für
das Auswählen
zwischen Ausgaben der Segmentierungseinheit 700 und der
Seitenbildungseinheit 702, um eine physikalische Adresse
zu erzeugen. Wie in 7 dargestellt ist, empfängt die
Segmentierungseinheit 700 eine segmentierte Adresse von
der Ausführungseinheit 600 und
verwendet einen gut bekannten Mechanismus zum Übersetzen der segmentierten
Adresse in eine lineare Adresse der ×86-Prozessorarchitektur, um
an einem Ausgang eine entsprechende lineare Adresse zu erzeugen.
Wie in 7 gezeigt ist, empfängt die Seitenbildungseinheit 702,
wenn diese durch ein „Seitenbildungs-"Signal aktiviert
ist, die von der Segmentierungseinheit 700 erzeugten linearen
Adressen und erzeugt entsprechende physikalische Adressen. Das Seitenbildungssignal
kann ein Abbild des Seitenmarken- bzw. Seitenbildungsflag (PG) Bit
in einem Steuerregister 0 (CR0) der ×86-Prozessorarchitektur und
des Satzes an Steuerregistern 608 (6) sein.
Wenn das Seitenbildungssignal nicht festgestellt wird, wird eine
Seitenbildung in dem Speicher nicht aktiviert und die Auswahllo gik 704 erzeugt
die von der Segmentierungseinheit 700 empfangene lineare Adresse
als die physikalische Adresse.
-
Wenn
das Seitenbildungssignal erkannt wird, wird die Seitenbildung in
dem Speicher aktiviert und die Seitenbildungseinheit 702 übersetzt
die von der Segmentierungseinheit 700 empfangene lineare
Adresse in eine entsprechende physikalische Adresse, wobei der zuvor
beschriebene Übersetzungsmechanismus 100 von
der linearen in eine physikalische Adresse der ×86-Prozessorarchitektur (7),
wie zuvor beschrieben ist, angewendet wird. Wie oben beschrieben
ist, werden während
des Vorgangs des Übersetzens
der linearen Adresse in die physikalische Adresse die Inhalte der
U/S-Bits des ausgewählten
Seitenverzeichniseintrages und des ausgewählten Seitentabelleneintrages
logisch UND – verknüpft, um
zu bestimmen, ob der Zugriff auf einen Seitenrahmen autorisiert
ist. In ähnlicher
Weise werden die Inhalte der R/W-Bits des ausgewählten Seitenverzeichniseintrages
und des ausgewählten
Seitentabelleneintrages logisch UND – verknüpft, um zu bestimmen, ob der
Zugriff auf den Seitenrahmen autorisiert ist. Wenn die logischen
Verknüpfungen
der U/S- und R/W-Bits
anzeigen, dass der Zugriff auf den Seitenrahmen autorisiert ist,
erzeugt die Seitenbildungseinheit 702 die sich aus dem
Vorgang des Übersetzens
der linearen Adresse in die physikalische Adresse ergebende physikalische
Adresse. Die Auswahllogik 704 empfängt die von der Seitenbildungseinheit 702 erzeugte
physikalische Adresse, erzeugt die von der Seitenbildungseinheit 702 empfangene
physikalische Adresse als die physikalische Adresse und liefert
die physikalische Adresse an die Cache-Speichereinheit 604.
-
Wenn
andererseits die logischen Verknüpfungen
der U/S- und R/W-Bits anzeigen, dass der Zugriff auf den Seitenrahmen 108 nicht
autorisiert ist, erzeugt die Seitenbildungseinheit 702 keine
physikalische Adresse während
des Vorgangs des Übersetzens
der linearen Adresse in die physikalische Adresse. Stattdessen erkennt
die Seitenbildungseinheit 702 ein allgemeines Schutzfehler-(GPF)Signal
und die MMU 602 leitet das GPF-Signal an die Ausführungseinheit 600 weiter.
In Reaktion auf das GPF-Signal kann die Ausführungseinheit 600 eine
Ausnahmefallroutine ausführen
und kann letztlich die Ausführung
eines der Anwenderprogramme 500 (5) anhalten,
wenn das GPF-Signal erkannt wurde. Die Seitenbildungseinheit 702 kann
ferner einen Übersetzungsüberblickpuffer
(TLB) zum Speichern einer relativ geringen Anzahl an kürzlich bestimmter Übersetzungen
von linearer Adresse in physikalischer Adresse aufweisen.
-
8 ist
eine Ansicht einer Ausführungsform
der CPU SCU 416 aus 7. In der
Ausführungsform aus 8 umfasst
die CPU SCU 416 eine Sicherheitsprüflogik 800, die mit
dem Satz aus SEM-Registern 610 (6) und einem
Sicherheitsattributtabellen-(SAT)Eintragspuffer 802 verbunden
ist. Wie nachfolgend beschrieben ist, enthalten SAT-Einträge zusätzliche
Sicherheitsinformationen über
die U/S- und R/W-Bits der Seitenverzeichnis- und Seitentabelleneinträge entsprechend
den Speicherseiten. Die Sicherheitsprüflogik 800 verwendet
die zusätzliche
Sicherheitsinformation, die in einem gegebenen SAT-Eintrag gespeichert
ist, um nicht autorisierte durch Software initiierte Zugriffe auf
die entsprechende Speicherseite zu verhindern. Der SAT-Eintragspuffer 802 wird
verwendet, um eine relativ geringe Anzahl an SAT-Einträgen von
Speicherseiten zu speichern, auf die kürzlich zugegriffen wurde.
-
Wie
zuvor beschrieben ist, wird der Satz aus SEM-Register 610 verwendet,
um einen Sicherheitsausführungsmodus
(SEM) in dem Computersystem 400 aus 4 einzurichten.
Die Inhalte des Satzes aus SEM-Registern 610 regeln den
Betrieb der CPU SCU 416. Die Sicherheitsprüflogik 800 empfängt Informationen,
die in dem SAT-Eintragspuffer 802 zu speichern sind, von
der MMU 602 über
einen Kommunikationsbus, der in 8 gezeigt
ist. Die Sicherheitsprüflogik 800 empfängt ferner
eine von der Seitenbildungseinheit 702 erzeugte physikalische
Adresse.
-
9 bis 11 werden
nun benutzt, um zu beschreiben, wie eine zusätzliche Sicherheitsinformation einer
ausgewählten
Speicherseite in dem Computersystem 400 aus 4 erhalten
wird. 9 ist eine Ansicht einer Ausführungsform eines Mechanismus 900 zum
Zugreifen auf einen SAT-Eintrag der ausgewählten Speicherseite, um zusätzliche
Sicherheitsinformationen der ausgewählten Speicherseite zu erhalten.
Der Mechanismus 900 aus 9 kann innerhalb
der Sicherheitsprüflogik 800 aus 4 eingerichtet
sein und kann implementiert werden, wenn das Computersystem 400 aus 4 in
dem SEM betrieben wird. Der Mechanismus 900 beinhaltet
eine von der Segmentierungseinheit 700 (7)
während
der Ausführung
einer Anweisung erzeugte lineare Adresse 902, ein SAT-Verzeichnis 904,
mehrere SAT's mit
einer SAT 906, und ein SAT-Basisadressenregister 908 des
Satzes aus SEM-Register 610. Das SAT-Verzeichnis 904 und
die mehreren SAT's
mit der SAT 906 sind SEM-Datenstrukturen, die von dem Sicherheitskernel 504 (5)
erzeugt und bewahrt werden. Wie nachfolgend beschrieben ist, werden
das SAT-Verzeichnis 904, falls dies vor handen ist, und
eine beliebige benötigte
SAT in den Speicher 406 kopiert, bevor auf diese zugegriffen
wird.
-
Das
SAT-Basisadressenregister 908 enthält ein Präsenz-(P)-Bit, das die Anwesenheit
einer gültigen SAT-Verzeichnisbasisadresse
innerhalb des SAT-Basisadressenregisters 908 kennzeichnet.
Die höchstrangigen
(d. h. signifikantesten) Bits des SAT-Basisadressenregister 908 sind
für die
SAT-Verzeichnisbasisadresse reserviert. Die SAT-Verzeichnisbasisadresse ist eine Basisadresse
einer Speicherseite, die das SAT-Verzeichnis 904 enthält. Wenn
P = 1, ist die SAT-Verzeichnisbasisadresse zulässig und SAT-Tabellen spezifizieren
die Sicherheitsattribute von Speicherseiten. Wenn P = 0, ist die
SAT-Verzeichnisbasisadresse nicht zulässig, es bestehen keine SAT-Tabellen
und Sicherheitsattribute von Speicherseiten werden mittels eines
SAT-Ersatzregisters bestimmt.
-
10 ist
eine Ansicht einer Ausführungsform
des SAT-Ersatzregisters 1000. In der Ausführungsform aus 10 enthält das SAT-Ersatzregister 1000 ein
Sicherheitskontextidentifikations-(SCID)Feld. Das SCID-Feld enthält mehrere
Bit-Positionen des SAT-Ersatzregisters 1000.
Die Bit-Positionen bilden eine binäre Darstellung eines SCID-Wertes,
wobei der SCID-Wert ein ganzzahliger Wert größer oder gleich Null ist. Der SCID-Wert
bezeichnet eine Ersatzsicherheitskontextebene bzw. eine voreingestellte
Sicherheitskontextebene für
Speicherseiten in dem Computersystem 400. Wenn beispielsweise
das SCID-Feld n-Bit
des SAT-Ersatzregisters 1000 enthält, kann eine gegebene Speicherseite
eine aus 2n möglichen Sicherheitskontextebenen
in dem Computersystem 400 einnehmen.
-
Die
lineare Adresse 902 besitzt eine entsprechende physikalische
Adresse, die in der ausgewählten Speicherseite
liegt. Die entsprechende physikalische Adresse wird durch die Seitenbildungseinheit 702 (7)
unter Anwendung des Adressenübersetzungsmechanismus 100 aus 1 erzeugt.
Es sei nun wieder auf 9 verwiesen und es sei angenommen,
dass das P-Bit des SAT-Basisadressenregisters 908 „1" ist; so wird die
lineare Adresse 902, die von der Segmentierungseinheit 700 (7)
erzeugt wird, in drei Bereiche unterteilt, um auf den SAT-Eintrag
der ausgewählten
Speicherseite zuzugreifen. Wie zuvor beschrieben ist, ist die SAT-Verzeichnisbasisadresse
des SAT-Basisadressenregisters 908 die Basisadresse der
Speicherseite, die das SAT-Verzeichnis 904 enthält. Das
SAT-Verzeichnis 904 enthält mehrere
SAT-Verzeichniseinträge
einschließlich
eines SAT-Verzeichniseintrags 910.
Jeder SAT-Verzeichniseintrag kann eine entsprechende SAT in dem
Speicher 406 aufweisen. Ein „oberer" Bereich der linearen Adresse 902 mit
den höchstrangigen
oder signifikantesten Bits der linearen Adresse 902 wird
als ein Index für
das SAT-Verzeichnis 904 verwendet. Der SAT-Verzeichniseintrag 910 wird
aus dem SAT-Verzeichnis 904 unter
Verwendung der SAT-Verzeichnisbasisadresse des SAT-Basisadressenregisters 908 und
des oberen Bereichs der linearen Adresse 902 ausgewählt.
-
11 ist
eine Ansicht einer Ausführungsform
eines SAT-Verzeichniseintragsformats 1100. Gemäß 11 enthält jeder
SAT-Verzeichniseintrag ein Präsenz-(P)Bit,
das das Vorhandensein einer zulässigen SAT-Basisadresse
innerhalb des SAT-Verzeichniseintrags kennzeichnet. In der Ausführungsform
aus 11 sind die höchstrangigen
(d. h. die signifikantesten) Bits jedes SAT-Verzeichniseintrages
für eine
SAT-Basisadresse reserviert. Die SAT-Basisadresse ist eine Basisadresse
einer Speicherseite, die eine entsprechende SAT enthält. Wenn
P = 1, ist die SAT-Basisadresse zulässig und die entsprechende
SAT wird in dem Speicher 406 gespeichert.
-
Wenn
P = 0, ist die SAT-Basisadresse nicht zulässig und die entsprechende
SAT existiert nicht in dem Speicher 406 und muss von einer
Speichereinrichtung (beispielsweise einem Diskettenlaufwerk) in
den Speicher 406 kopiert werden. Wenn P = 0, kann die Sicherheitsprüflogik 800 ein
Signal für
einen Fehler an die Logik innerhalb der Seitenbildungseinheit 702 anzeigen,
und die MMU 602 kann das Seitenfehlersignal an die Ausführungseinheit 600 (6)
weiterleiten. In Reaktion auf das Seitenfehlersignal kann die Ausführungseinheit 600 eine
Seitenfehlerhandhabungsroutine ausführen, die die benötigte SAT
von der Speichereinrichtung ausliest und die benötigte SAT in dem Speicher 406 ablegt.
Nachdem die erforderliche SAT in dem Speicher 406 gespeichert
ist, wird das P-Bit des entsprechenden SAT-Verzeichnisseintrags
auf „1" gesetzt, und der
Mechanismus 900 wird fortgesetzt. Wenn alternativ P = 0,
können
die Inhalte eines SAT-Ersatzbasisadressenfeldes (nicht gezeigt)
des SAT-Ersatzregisters 1000 (10) als
die SAT-Basisadresse verwendet werden.
-
Es
wieder auf 9 verwiesen; ein „mittlerer" Bereich der linearen
Adresse 902 wird als ein Index für die SAT 906 verwendet.
Der SAT-Eintrag 906 wird somit in der SAT 906 unter
Anwendung der SAT-Basisadresse des SAT-Verzeichniseintrags 910 und
des mittleren Bereichs der linearen Adresse 902 ausgewählt. 12 ist
eine Ansicht einer Ausführungsform
eines SAT-Eintragsformats 1200. In der Ausführungsform
aus 12 enthält
jeder SAT-Eintrag ein Sicherheitskontextidentifikations-(SCID)Feld.
Das SCID-Feld enthält mehrere
Bit-Positionen des SAT-Eintrags. Die Bit-Positionen bilden eine
binäre
Darstellung eines SCID-Wertes, wobei der SCID-Wert ein ganzzahliger
Wert größer oder
gleich Null ist. Der SCID-Wert kennzeichnet eine Sicherheitskontextebene
der ausgewählten
Speicherseite. Wenn beispielsweise das SCID-Feld n-Bits des SAT-Eintrags
enthält,
kann die ausgewählte
Speicherseite eine aus 2n möglichen
Sicherheitskontextebenen in dem Computersystem 400 einnehmen.
-
Die
BIU 606 (6) liest erforderliche SEM-Datenstruktureneinträge aus dem
Speicher 406 aus und liefert die SEM-Datenstruktureinträge an die
MMU 602. Es sei nun wieder auf 8 verwiesen;
die Sicherheitsprüflogik 800 empfängt SEM-Datenstruktureneinträge von der
MMU 602 und der Seitenbildungseinheit 702 über den
Kommunikationsbus. Wie zuvor beschrieben ist, wird der SAT-Eintragspuffer 802 verwendet,
um eine relativ geringe Anzahl an SAT-Einträgen von kürzlich erfolgten Speicherseitenzugriffen
zu speichern. Die Sicherheitsprüflogik 800 speichert
einen gegebenen SAT-Eintrag in dem SAT-Eintragspuffer 802 zusammen mit
einem „Markierungs-"Bereich der entsprechenden
physikalischen Adresse.
-
Während eines
nachfolgenden Speicherseitenzugriffs kann die Sicherheitsprüflogik 800 einen „Markierungs-"Bereich einer von
der Seitenbildungseinheit 702 erzeugten physikalischen
Adresse mit Markierungsbereichen von physikalischen Adressen vergleichen,
die SAT-Einträgen
entsprechen, die in dem SAT-Eintragspuffer 802 abgelegt
sind. Wenn der Markierungsbereich der physikalischen Adresse mit
einem Markierungsbereich einer physikalischen Adresse entsprechend
einem SAT-Eintrag, der in dem SAT-Eintragspuffer 802 abgelegt
ist, übereinstimmt,
kann die Sicherheitsprüflogik 800 auf
den SAT-Eintrag in dem SAT-Eintragspuffer 802 zugreifen,
wodurch es nicht notwendig ist, den Prozess aus 9 auszuführen, um
den SAT-Eintrag aus dem Speicher 406 zu erhalten. Der Sicherheitskernel 504 (5)
modifiziert den Inhalt des SAT-Basisadressenregisters 908 in
der CPU 402 (beispielsweise während Kontextänderungen).
In Reaktion auf Modifizierungen des SAT-Basisadressenregisters 908 kann
die Sicherheitsprüflogik 800 der
CPU SCU 416 den SAT-Eintragspuffer 802 leeren.
-
In
der Ausführungsform
aus 7 ist die CPU SCU 416 mit der Seitenbildungseinheit 702 verbunden. Wenn
das Computersystem 400 aus 4 in dem
SEM betrieben wird, empfängt
die Sicherheitsprüflogik 800 die
momentane Privilegebene (CPL) der gewärtig ausge führten Aufgabe (d. h. gegenwärtig ausgeführten Anweisung).
Die Sicherheitsprüflogik 800 empfängt ferner
das Seitenverzeichniseintrags (PDE) U/S-Bit, das PDE-R/W-Bit, das
Seitentabelleneintrags-(PTE)U/S-Bit und das PTE-R/W-Bit der ausgewählten Speicherseite,
in der die entsprechende physikalische Adresse liegt, von der Seitenbildungseinheit 702.
Die Sicherheitsprüflogik 800 verwendet
die obige Information zusammen mit dem SCID-Wert des SAT-Eintrags entsprechend der
ausgewählten
Speicherseite, um zu bestimmen, ob der Zugriff auf den Speicher 406 autorisiert
ist.
-
Die
CPU 402 aus 6 kann ein ×86-Prozessor sein und kann
ein Kodierungssegment(CS-)Register enthalten, das eines der 16-Bit-Segmentregister
der ×86-Prozessorarchitektur
ist. Jedes Segmentregister bestimmt einen Block des Speichers (beispielsweise
ein Segment eines Speichers). In dem geschützten Modus, wenn die Seitenbildung
aktiviert ist, wird das CS-Register mit einem Segmentselektor beschrieben,
der einen ausführbaren
Block des Speichers 406 kennzeichnet. Die höchstrangigen
(d. h. signifikantesten) Bits des Segmentselektors werden verwendet,
um Informationen zu speichern, die einen Block eines Speichers (beispielsweise
ein Speichersegment) mit einer nächsten
Anweisung, die von der Ausführungseinheit
der CPU 402 (6) auszuführen ist, kennzeichnet. Ein
Anweisungszeiger-(IP/EIP/RIP)Register wird verwendet, um einen Offset
in dem Speicherblock (beispielsweise das Speichersegment), das von
dem CS-Register bezeichnet ist, zu speichern. Das CS:IP/EIP/RIP-Paar
bezeichnet eine segmentierte Adresse der nächsten Anweisung. Die Bits
mit niedrigstem Rang (d. h. am wenigsten signifikante Bits) des
CS-Register werden verwendet, um einen Wert zu speichern, der eine
momentane Privilegebene (CPL) einer Aufgabe, die momentan von der
Ausführungseinheit 600 ausgeführt wird
(d. h. die CPL der momentanen Aufgabe) kennzeichnet.
-
Die
Tabelle 1 unten zeigt beispielhafte Regeln für von der CPU initiierte (d.
h. durch Software initiierte) Speicherzugriffe, wenn das Computersystem 400 aus 4 in
dem SEM betrieben wird. Die CPU SCU 416 (4 bis 8)
und der Sicherheitskernel 504 (5) arbeiten
zusammen, um die Regeln der Tabelle 1 zu implementieren, wenn das
Computersystem 400 aus 4 in dem
SEM betrieben wird, um zusätzliche
Sicherheit für
in dem Speicher 406 abgelegte Daten zusätzlich und über die Datensicherheit hinausgehend
bereitzustellen, die von dem Betriebssystem 502 (5)
geboten wird.
-
In
der Tabelle 1 unten repräsentiert „CEI-SCID" den SCID-Wert der
momentan abgearbeiteten Anweisung und „SMP-SCID" repräsentiert den SCID-Wert der
ausgewählten
Speicherseite. Der CEI-SCID-Wert ist der SCID-Wert des SAT-Eintrags,
der der Speicherseite entspricht, die die momentan auszuführende Anweisung
enthält.
In der Ausführungsform
aus Tabelle 1 entsprechen geringere SCID-Werte höheren Sicherheitskontextebenen.
In anderen Ausführungsformen
können
höhere
SCID-Werte höheren
Sicherheitskontextebenen entsprechen. Tabelle 1: Beispielhafte Regeln für durch
Software initiierte Speicherzugriffe, wenn das Computersystem 400 aus
Fig. 4 in dem SEM betrieben wird.
| | ausgewählte Speicherseite | | zugelassen | |
SCID-Vergleich | | CPL | U/S
R/W | Zugriff | Bemerkungen |
CEI-SCID > SMP-SCID | x | x | x | kein
Zugriff | SEM-Sicherheit
Ausnahme erkannt |
CEI-SCID <= SMP-SCID | 0 | x | 1(R/W) | R/W | normaler ×86 Schutzvorgänge ausgeübt:
voller
Zugriff |
CEI-SCID <= SMP-SCID | 0 | x | 0(R) | nur
lesen | normaler ×86 ausgeübte Schutzmaßnahmen:
nur
Lesezugriff |
CEI-SCID <= SMP-SCID | 3 | 0 | x | kein
Zugriff | normaler ×86 ausgeübte Schutzfunktionen:
GPF
erkannt |
CEI-SCID <= SMP-SCID | 3 | 1 | 1(R/W) | R/W | normaler ×86 ausgeübte Schutzfunktion:
voller
Zugriff gewährt |
CEI-SCID <= SMP-SCID | 3 | 1 | 0(R) | nur
lesen | normaler ×86 ausgeübte Schutzfunktionen:
nur
Lesezugriff |
-
In
der Tabelle 1 oben ist die „CEI-SCID > SMP-SCID" Bedingung wahr,
wenn der ganzzahlige Wert, der durch den SCID-Wert der momentan
abgearbeiteten Anweisung repräsentiert
wird, numerisch größer als der
Ganzzahlwert ist, der durch den SCID-Wert der ausgewählten Speicherseite
repräsentiert
ist. Die „CEI-SCID <= SMP-SCID Bedingung
ist wahr, wenn der ganzzahlige Wert, der von dem SCID-Wert der momentan
ausgeführten
Anweisung repräsentiert
ist, numerisch kleiner oder gleich dem ganzzahligen Wert ist, der
von dem SCID-Wert der ausgewählten
Speicherseite repräsentiert
wird. Das U/S-Bit der ausgewählten Speicherseite
ist das Ergebnis der logischen UND – Verknüpfung des PDE U/S Bits und
des PTE U/S Bits der ausgewählten
Speicherseite. Das R/W-Bit der ausgewählten Speicherseite ist das
Ergebnis der logischen UND-Verknüpfung
des PDE-R/W-Bits und des PTE-R/W-Bits der ausgewählten Speicherseite. Das Symbol „X" bezeichnet „beliebig": der logische Wert
kann entweder „0" oder „1" sein.
-
Es
sei wieder auf 8 verwiesen; die Sicherheitsprüflogik 800 der
CPU SCU 416 erzeugt ein allgemeines Schutzfehler („GPF") Signal und ein „SEM-Sicherheitsausnahme" Signal und liefert
das GPF und das SEM-Sicherheitsausnahmesignal zu einer Logik innerhalb
der MMU 602. Wenn die Sicherheitsprüflogik 800 das GPF-Signal
erkennt, leitet die MMU 602 das GPF-Signal an die Ausführungseinheit 600 (6)
weiter. In Reaktion auf das GPF-Signal
kann die Ausführungseinheit 600 den
gut bekannten Vektormechanismus für die Interruptdiskriptortabelle
(IDT) der ×86-Prozessorarchitektur
verwenden, um auf eine GPF-Behandlungsroutine
zuzugreifen und diese auszuführen.
-
Wenn
die Sicherheitsprüflogik 800 das
SEM-Sicherheitsausnahmesignal erkennt, leitet die MMU 602 das
SEM-Sicherheitsausnahmesignal an die Ausführungseinheit 600 weiter.
Anders als normale Prozessorausnahmeroutinen, bei denen der IDT-Vektormechanismus
der ×86-Prozessorarchitektur
angewendet wird, kann auch ein unterschiedliches Vektorisierungsverfahren
verwendet werden, um SEM-Sicherheitsausnahmefälle zu behandeln. SEM-Sicherheitsausnahmefälle können durch
ein Registerpaar (beispielsweise modellspezifische Register oder
MSR) ausgelöst
werden, die ähnlich
arbeiten wie die ×86- „SYSENTER” und „SYSEXIT" Instruktionen arbeiten. Das Registerpaar
können „Sicherheitsausnahmeeintragspunkt"-Register sein und
können
eine Verzweigungszieladresse für
die Ausführung
der Anweisung definieren, wenn eine SEM-Sicherheitsausnahme auftritt.
Sicherheitsausnahmeeintragspunkteregister können das Codierungssegment
(CS), dann den Anweisungszeiger (IP oder die 64-Bit-Version RIP),
das Stapelsegment (SS) und den Stapelzeiger(SP oder die 64-Bit-Vesion
RSP-)Werte definieren, die beim Einsprung in eine SEM-Sicherheitsausnahmehandlungsroutine
zu verwenden sind. Unter Softwaresteuerung kann dann die Ausführungseinheit 600 (6)
die vorhergehenden SS, SP/RSP, EFLAGS, CS und IP/RIP-Werte auf einen
neuen Stapel schieben, um zu kennzeichnen, wo die Ausnahme auftrat.
Ferner kann die Ausführungseinheit 600 einen
Fehlercode auf dem Stapel ablegen. Anzumerken ist, dass ein normaler
Rücksprung
von der Interrupt-(IRET)Anweisung nicht verwendet werden kann, da
die vorhergehenden SS und SP/RSP-Werte immer gesichert werden und
eine Stapelumschaltung wird stets erreicht, selbst wenn eine Änderung
im CPL nicht auftritt. Folglich kann eine neue Anweisung definiert
werden, um einen Rücksprung
von der SEM-Sicherheitsausnahmebehandlungsroutine zu gewährleisten.
-
13a und 13b bilden
zusammen ein Flussdiagramm einer Ausführungsform eines Verfahrens 1300 für das Bereitstellen
einer Zugriffssicherung für
einen Speicher, der zum Ablegen von Daten verwendet wird, die in
mehreren Speicherseiten organisiert sind. Das Verfahren 1300 kann
beispielsweise die beispielhaften Regeln aus Tabelle 1 für durch
die CPU initiierte (d. h. softwareinitiierte) Speicherzugriffe wiedergeben, wenn
das Computersystem 400 aus 4 in dem
SEM betrieben wird. Das Verfahren 1300 kann in der MMU 602 (6 bis 7)
eingerichtet sein.
-
Während eines
Schrittes 1302 des Verfahrens 1300 wird eine lineare
Adresse, die während
des Ausführens
einer Anweisung erzeugt wird, zusammen mit einem Sicherheitsattribut
der Anweisung (z. B. ein CPL einer die Anweisung enthaltenden Aufgabe)
empfangen. Die Anweisung liegt in einer ersten Speicherseite. Während eines
Schritts 1304 wird die lineare Adresse verwendet, um mindestens
auf eine in Seiten organisierte Speicherdatenstruktur, die in dem
Speicher angeordnet ist, zuzugreifen (beispielsweise ein Seitenverzeichnis
und eine Seitentabelle), um eine Basisadresse einer ausgewählten Speicherseite
und Sicherheitsattribute der ausgewählten Speicherseite zu erhalten.
Die Sicherheitsattribute der ausgewählten Speicherseite können beispielsweise
ein U/S-Bit und ein R/W-Bit eines Spei cherverzeichniseintrages und
ein U/S-Bit und ein R/W-Bit eines Seitentabelleneintrags enthalten.
-
Während eines
Entscheidungsschritts 1306 werden das Sicherheitsattribut
der Anweisung und die Sicherheitsattribute der ausgewählten Speicherseite
verwendet, um zu bestimmen, ob der Zugriff autorisiert ist oder
nicht. Wenn der Zugriff autorisiert ist, werden die Basisadresse
der ausgewählten
Speicherseite und ein Offset während
eines Schritts 1308 kombiniert, um eine physikalische Adresse
innerhalb der ausgewählten Speicherseite
zu erzeugen. Wenn der Zugriff nicht autorisiert ist, wird ein Fehlersignal
(ein allgemeines Schutzfehlersignal oder GPF-Signal) während eines
Schritts 1310 erzeugt.
-
Während eines
Schritts 1312, der im Wesentlichen gleichzeitig mit dem
Schritt 1304 (d. h. parallel zu dem Schritt 1304)
ausgeführt
werden kann, wird auf mindestens eine Sicherheitsattributdatenstruktur,
die in dem Speicher abgelegt ist (z. B. das SAT-Verzeichnis 904 aus 9 und
eine SAT) zugegriffen, wobei die während der Ausführung der
Anweisung erzeugte lineare Adresse verwendet wird, um ein zusätzliches
Sicherheitsattribut der ersten Speicherseite zu erhalten, wobei
die erste Speicherseite die Anweisung enthält, und um ein zusätzliches
Sicherheitsattribut der ausgewählten
Speicherseite zu erhalten, wobei die ausgewählte Speicherseite die der
linearen Adresse entsprechende physikalische Adresse enthält. Das
zusätzliche
Sicherheitsattribut der ersten Speicherseite kann beispielsweise
einen Sicherheitskontextidentifikations-(SCID)Wert, wie er zuvor
beschrieben ist, enthalten, wobei der SCID-Wert eine Sicherheitskontextebene
der ersten Speicherseite kennzeichnet. In gleicher Weise kann das
zusätzliche
Sicherheitsattribut der ausgewählten
Speicherseite einen SCID-Wert enthalten, wobei der SCID-Wert eine
Sicherheitskontextebene der ausgewählten Speicherseite kennzeichnet.
-
Während eines
Schritts 1314 wird ein von dem zusätzlichen Sicherheitsattribut
der ersten Speicherseite übermittelter
numerischer Wert mit einem von dem zusätzlichen Sicherheitsattribut
der ausgewählten Speicherseite übermittelten
numerischen Wert verglichen. Auf die ausgewählte Speicherseite wird während eines
Schritts 1316 in Abhängigkeit
eines Ergebnisses des Vergleichs der numerischen Werte, die von
dem Sicherheitsattribut der ersten Speicherseite und dem zusätzlichen
Sicherheitsattribut der ausgewählten
Speicherseite übermittelt
werden, zugegriffen.
-
Wenn
beispielsweise das Verfahren 1300 die beispielhaften Regeln
aus Tabelle 1 zuvor für
CPU-initiierte (d. h. softwareinitiierte) Speicherzugriffe wiedergibt,
wenn das Computersystem 400 aus 4 in dem SEM
betrieben wird, kann auf die ausgewählte Speicherseite während des
Schritts 1316 lediglich dann zugegriffen werden, wenn der
ganzzahlige Wert, der von dem SCID-Wert der Anweisung repräsentiert
wird, numerisch kleiner oder gleich dem ganzzahligen Wert ist, der
von dem SCID-Wert der ausgewählten
Speicherseite repräsentiert
wird (d. h. wenn CEI-SCID <=
SMP_SCID). Wenn andererseits der ganzzahlige Wert, der von dem SCID-Wert
der Anweisung repräsentiert
wird, numerisch größer als
der ganzzahlige Wert ist, der von dem SCID-Wert der ausgewählten Speicherseite
repräsentiert
wird, (d. h., wenn CEI-SCID > SMP_SCID),
wird auf die ausgewählte
Speicherseite nicht während
des Schritts 1316 zugegriffen. Bei dieser Sachlage kann
das SEM-Sicherheitsausnahmesignal,
wie es in Tabelle 1 angegeben und zuvor beschrieben ist, erkannt
werden.