DE10206422A1 - System und Verfahren zum Überwachen der Ausführung privilegierter Befehle - Google Patents
System und Verfahren zum Überwachen der Ausführung privilegierter BefehleInfo
- Publication number
- DE10206422A1 DE10206422A1 DE10206422A DE10206422A DE10206422A1 DE 10206422 A1 DE10206422 A1 DE 10206422A1 DE 10206422 A DE10206422 A DE 10206422A DE 10206422 A DE10206422 A DE 10206422A DE 10206422 A1 DE10206422 A1 DE 10206422A1
- Authority
- DE
- Germany
- Prior art keywords
- error
- processor
- privilege level
- trap
- current
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/481—Exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
Ein System überwacht die Ausführung von privilegierten Befehlen durch einen Prozessor eines Computersystems. Der Prozessor umfaßt einen aktuellen Privilegpegel. Der Prozessor erzeugt automatisch einen Fehler, wenn die Ausführung eines Befehls versucht wird, der einen höheren Privilegpegel erfordert als der aktuelle Privilegpegel des Prozessors. Der aktuelle Privilegpegel des Prozessors wird ansprechend auf einen Fehler erhöht, der durch einen ersten fehlerverursachenden Befehl erzeugt wurde. Der erste fehlerverursachende Befehl wird ausgeführt. Durch Ausführen des ersten fehlerverursachenden Befehls wird eine Falle erzeugt. Der aktuelle Privilegpegel des Prozessors wird ansprechend auf die Falle verringert.
Description
Die vorliegende Erfindung bezieht sich auf das Überwachen
der Ausführung privilegierter Befehle bei Computersystemen
und insbesondere auf das Überwachen der Ausführung privile
gierter Befehle bei Computersystemen unter Verwendung von
Hardwareeinzelschrittverarbeitung.
Computersysteme umfassen zumindest einen Prozessor und ei
nen Speicher. Der Speicher speichert Anwendungsprogrammbe
fehle, Daten und ein Betriebssystem. Das Betriebssystem
steuert den Prozessor und den Speicher für Systemoperatio
nen und zum Ausführen der Anwendungsprogrammbefehle. Pro
zessoren weisen oft einen aktuellen Privilegpegel auf, der
die Anwendungsbefehlausführung bei dem Computersystem durch
Steuern der Zugriffsmöglichkeit auf Systemressourcen bzw.
Systembetriebsmittel, wie z. B. Systemregister, Systembe
fehle und Systemspeicherseiten, steuert. Der aktuelle Pri
vilegpegel variiert zwischen zwei oder mehreren Ausfüh
rungsprivilegpegeln.
Manchmal ist es wünschenswert, ein Programm, das ursprüng
lich als eine privilegierte Anwendung ausgeführt werden
sollte, als nichtprivilegierte Anwendung auszuführen. Eine
solche Anwendung wird hierin als privilegwünschende Anwen
dung bezeichnet. Es wäre wünschenswert, die Ausführung von
privilegierten Befehlen bei einer privilegwünschenden An
wendung zu überwachen, zu zählen und zu verfolgen. Eine ak
tuelle Lösung zum Überwachen der Ausführung von Befehlen in
einem Programm besteht darin, einen Softwareemulator zu
bilden, um fehlerverursachende Befehle handzuhaben, so daß
die Ausführung fortsetzen kann, wenn ein Fehler auftritt.
Diese Lösung ist jedoch sehr komplex und erfordert, daß ei
ne Software entwickelt wird, die den Prozessorzustand ak
tualisieren kann, als ob ein fehlerverursachender Befehl
ausgeführt wurde.
Softwaredebugger bzw. -fehlersuchprogramme wurden ebenfalls
entwickelt, um die Ausführung von Programmbefehlen zu über
wachen. Softwarefehlersuchprogramme verwenden typischerwei
se ein Einzelschrittmerkmal. Ein Einzelschrittmerkmal kann
in einer Software implementiert sein oder kann ein Hard
waremerkmal sein, das durch den Prozessor geliefert wird.
Ein Einzelschrittmerkmal wurde von Softwarefehlersuchpro
grammen verwendet, um schrittweise, Befehl um Befehl, durch
das Programm zu gehen, zu überwachen, wie der Prozessorzu
stand sich nach jedem Befehl ändert, und Fehler auf der Ba
sis der Änderungen bei dem Prozessorzustand zu identifizie
ren. Ein Hardwareeinzelschrittmerkmal wurde vorher nicht
als Teil einer Lösung zum Überwachen, Zählen und Verfolgen
der Ausführung von privilegierten Befehlen bei einer privi
legwünschenden Anwendung verwendet.
Es wäre wünschenswert, eine vereinfachte Lösung zum Überwa
chen, Zählen und Verfolgen der Ausführung von privilegier
ten Befehlen bei einer privilegwünschenden Anwendung zu
liefern, ohne daß es erforderlich ist, einen komplexen
Softwareemulator zu erstellen.
Es ist die Aufgabe der vorliegenden Erfindung, ein Verfah
ren, System und Medium für das unaufwendigere Überwachen,
Zählen und Verfolgen der Ausführung von privilegierten Be
fehlen bei einem Computersystem zu schaffen.
Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1
oder 11, ein System gemäß Anspruch 20 und ein computerles
bares Medium gemäß Anspruch 23 gelöst.
Die vorliegende Erfindung liefert ein Computersystem und
ein Verfahren zum Überwachen der Ausführung von privile
gierten Befehlen durch einen Prozessor eines Computersy
stems. Der Prozessor umfaßt einen aktuellen Privilegpegel.
Der Prozessor erzeugt automatisch einen Fehler, wenn er die
Ausführung eines Befehls versucht, der einen höheren Privi
legpegel erfordert als den aktuellen Privilegpegel des Pro
zessors. Der aktuelle Privilegpegel des Prozessors wird an
sprechend auf einen Fehler, der durch einen ersten fehler
verursachenden Befehl erzeugt wird, erhöht. Der erste feh
lerverursachende Befehl wird ausgeführt. Durch Ausführen
des ersten fehlerverursachenden Befehls wird eine Falle
bzw. Softwareunterbrechung erzeugt. Der aktuelle Privileg
pegel des Prozessors wird ansprechend auf die Falle ernied
rigt.
Bei einem Ausführungsbeispiel wird der aktuelle Privilegpe
gel des Prozessors vor dem Ausführen der Befehle ernied
rigt.
Bei einem Ausführungsbeispiel wird eine Fehlerhandhabungs
einrichtung bzw. Fehlerroutine aufgerufen, um den Fehler zu
verarbeiten. Der Schritt des Erhöhens des aktuellen Privi
legpegels wird durch die Fehlerhandhabungseinrichtung
durchgeführt.
Bei einem Ausführungsbeispiel wird eine Fallenhandhabungs
einrichtung bzw. Fallenroutine aufgerufen, um die Falle zu
verarbeiten. Der Schritt des Erniedrigens des aktuellen
Privilegpegels wird durch die Fallenhandhabungseinrichtung
durchgeführt.
Bei einem Ausführungsbeispiel wird ansprechend auf den Feh
ler ein Einzelschrittmodus des Prozessors aktiviert. Der
Einzelschrittmodus wird durch Einstellen eines Feldes in
einem Systemregister des Prozessors aktiviert.
Bei einem Ausführungsbeispiel werden ansprechend auf den
Fehler Zustandsinformationen gespeichert. Die Zustandsin
formationen umfassen die Anzahl von Befehlen, die einen
Fehler bewirkten, und eine Identifikation der Befehle, die
einen Fehler bewirkten.
Eine Form der vorliegenden Erfindung liefert ein Verfahren
zum Ausführen von Befehlen durch einen Prozessor eines Com
putersystems, der durch ein Betriebssystem gesteuert wird.
Der Prozessor weist einen aktuellen Privilegpegel auf. Ein
Privilegierte-Operation-Fehler wird auf der Basis der ver
suchten Ausführung eines ersten Befehls erzeugt. Anspre
chend auf den Privilegierte-Operation-Fehler wird der aktu
elle Privilegpegel des Prozessors erhöht. Ein Einzel
schrittmodus wird ansprechend auf den Privilegierte-
Operation-Fehler aktiviert. Der erste Befehl wird ausge
führt, wodurch eine Einzelschrittfalle erzeugt wird. Der
aktuelle Privilegpegel des Prozessors wird ansprechend auf
die Einzelschrittfalle erniedrigt. Der Einzelschrittmodus
wird ansprechend auf die Einzelschrittfalle deaktiviert.
Eine Form der vorliegenden Erfindung liefert ein Computer
system, das einen Prozessor mit einem aktuellen Privilegpe
gel umfaßt, der die Anwendungsbefehlausführung bei dem Com
putersystem steuert. Ein Speicher speichert ein privileg
wünschendes Anwendungsprogramm mit Anwendungsbefehlen. Ein
Betriebssystem, das in dem Speicher gespeichert ist, steu
ert den Prozessor. Das Betriebssystem umfaßt eine Fehler
handhabungseinrichtung und eine Fallenhandhabungseinrich
tung. Die Fehlerhandhabungseinrichtung erhöht den aktuellen
Privilegpegel und aktiviert einen Einzelschrittmodus an
sprechend auf einen Privilegierte-Operation-Fehler. Die
Fallenhandhabungseinrichtung erniedrigt den aktuellen Pri
vilegpegel und deaktiviert den Einzelschrittmodus anspre
chend auf eine Einzelschrittfalle.
Eine Form der vorliegenden Erfindung liefert ein computer
lesbares Medium, das ein Betriebssystem zum Steuern eines
Prozessors eines Computersystems umfaßt, um ein Verfahren
zum Überwachen der Ausführung von privilegierten Befehlen
durchzuführen. Der Prozessor weist einen aktuellen Privi
legpegel auf, der die Befehlsausführung in dem Computersy
stem steuert. Das Verfahren umfaßt das Erhöhen des aktuel
len Privilegpegels des Prozessors ansprechend auf einen
Fehler, der durch einen ersten fehlerverursachenden Befehl
erzeugt wurde. Der erste fehlerverursachende Befehl wird
ausgeführt. Durch Ausführen des ersten fehlerverursachenden
Befehls wird eine Falle erzeugt. Der aktuelle Privilegpegel
des Prozessors wird ansprechend auf die Falle erniedrigt.
Die vorliegende Erfindung liefert eine vereinfachte Lösung
zum Überwachen, Zählen und Verfolgen der Ausführung von
privilegierten Befehlen bei einem privilegwünschenden An
wendungsprogramm. Bei einem Ausführungsbeispiel wird ein
Hardwareeinzelschrittmerkmal eines Prozessors verwendet, um
speziellen Befehlen vorübergehend Privilegien zu gewähren.
Privilegierte Befehle werden von der Hardware selbst "emu
liert", wodurch die Notwendigkeit zum Erstellen eines kom
plexen Softwareemulators eliminiert wird.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung
werden nachfolgend Bezug nehmend auf die beiliegenden
Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm eines Computersystems gemäß der
vorliegenden Erfindung, das die Ausführung von
privilegierten Befehlen überwacht;
Fig. 2 ein Flußdiagramm, das einen Prozeß zum Überwachen
der Ausführung von privilegierten Befehlen bei
einem privilegwünschenden Anwendungsprogramm ge
mäß der vorliegenden Erfindung darstellt;
Fig. 3 ein Flußdiagramm, das ein Ausführungsbeispiel ei
nes Privilegabstiegsprozesses darstellt; und
Fig. 4 ein Flußdiagramm, das ein Ausführungsbeispiel ei
nes Privilegaufstiegsprozesses darstellt.
Bei der folgenden detaillierten Beschreibung der bevorzug
ten Ausführungsbeispiele wird auf die beiliegenden Zeich
nungen Bezug genommen, die einen Teil derselben bilden, und
bei denen zu Darstellungszwecken spezifische Ausführungs
beispiele gezeigt sind, bei denen die Erfindung praktiziert
werden kann. Es ist offensichtlich, daß andere Ausführungs
beispiele verwendet werden können und strukturelle oder lo
gische Änderungen durchgeführt werden können, ohne von dem
Schutzbereich der vorliegenden Erfindung abzuweichen. Die
folgende detaillierte Beschreibung soll daher nicht in ei
nem begrenzenden Sinne angesehen werden, und der Schutzbe
reich der vorliegenden Erfindung wird durch die angehängten
Ansprüche definiert.
Ein Computersystem gemäß der vorliegenden Erfindung ist
allgemein bei 30 in Fig. 1 dargestellt. Das Computersystem
30 umfaßt zumindest einen Prozessor, wie z. B. einen Pro
zessor 32, zum Durchführen von Sequenzen von logischen Ope
rationen. Das Computersystem 30 umfaßt außerdem einen Spei
cher 52 zum Speichern von Befehlen und Daten für die Ver
wendung durch den Prozessor 32. Ein Betriebssystem 60 ist
in dem Speicher 52 gespeichert und steuert den Prozessor 32
und den Speicher 52 für Systemoperationen und zum Ausführen
von Anwendungsprogrammbefehlen, die in dem Speicher 52 ge
speichert sind. Der Speicher 52 umfaßt typischerweise einen
Direktzugriffsspeicher (RAM; RAM = Random Access Memory),
einen nichtflüchtigen Speicher und ein Festplattenlaufwerk,
aber kann jeden bekannten Typ von Speicher umfassen.
Der Prozessor 32 umfaßt einen Anwendungsregistersatz 34 und
einen Systemregistersatz 44. Ein Architekturzustand des
Computersystems 30 wird durch den Anwendungsregistersatz
34, den Systemregistersatz 44 und den Speicher 52 darge
stellt. Der Anwendungsregistersatz 34 umfaßt Register, die
für Anwendungsprogramme, die in dem Speicher 52 gespeichert
sind, verfügbar sind. Der Systemregistersatz 44 liefert Sy
stemregisterressourcen zur Prozeßsteuerung, Unterbrechungs
handhabung, zum Schutz, zur Fehlerbeseitigung, zur Lei
stungsüberwachung und dergleichen. Der Systemregistersatz
44 ist im allgemeinen nur für das Betriebssystem 60 sicht
bar.
Beispielregister, die in dem Anwendungsregistersatz 34 ent
halten sein können, umfassen allgemeine Register, Gleitkom
maregister, Vergleichsergebnisregister, Verzweigungsinfor
mationsregister, Befehlszeiger, eine Markierung des aktuel
len Rahmens (frame), Prozeßidentifizierer und eine Benut
zermaske. Der Anwendungsregistersatz 34 umfaßt eine Anwen
dungsregisterdatei 36. Die Anwendungsregisterdatei 36 um
faßt Spezialdatenregister und Steuerregister für die anwen
dungssichtbare Prozessorfunktionen für Anwendungsbefehle.
Die Anwendungsregisterdatei 36 umfaßt ein Vorhergehende-
Funktion-Zustand- (PFS-)Register 38 mit mehreren Feldern,
die Werte darstellen, die bei einem Aufrufbefehl von einem
Aktueller-Rahmen-Markierungsregister automatisch kopiert
werden, um das Prozeduraufrufen zu beschleunigen. Das PFS-
Register 38 umfaßt ein Vorhergehender-Privilegpegel-Feld
(PFS.ppl) 38A.
Der Anwendungsregistersatz 34 umfaßt außerdem eine allge
meine Registerdatei 39. Die allgemeine Registerdatei 39 um
faßt eine Mehrzahl von allgemeinen Registern. Die allgemei
ne Registerdatei 39 umfaßt allgemeine Register 40, 41 und
42. Die allgemeinen Register 40, 41 und 42 liefern eine
Ressource für allgemeine Berechnungen. Bei einem Ausfüh
rungsbeispiel sind die allgemeinen Register 40 und 41 ge
stapelte allgemeine Register, die für jede Prozedur lokal
sind und durch Zuweisen eines Registerstapelrahmens verfüg
bar gemacht werden, der aus einer programmierbaren Anzahl
von Lokal- und Ausgaberegistern besteht. Bei einem Ausfüh
rungsbeispiel ist das allgemeine Register 42 ein statisches
allgemeines Register und ist für alle Prozeduren sichtbar.
Beispielsregister, die in dem Systemregistersatz 44 enthal
ten sein können, umfassen Regionsregister, Schutzschlüssel
register, Fehlersuchunterbrechungspunktregister, maschinen
spezifische Register und Steuerregister. Der Systemregi
stersatz 44 umfaßt ein Prozessorstatusregister (PSR) 46,
das Steuerinformationen beibehält, um die aktuelle Ausfüh
rungsumgebung für den aktuell laufenden Prozeß des Prozes
sors 32 definiert.
Der Prozessor 32 weist einen aktuellen Privilegpegel auf,
der durch ein aktuelles Privilegpegelfeld (PSR.cpl) 46A in
PSR 46 dargestellt ist. Der aktuelle Privilegpegel, der in
dem PSR.cpl-Feld 46A gespeichert ist, steuert die Zugriffs
möglichkeit auf die Systemressourcen in dem Prozessor 32,
wie z. B. die Systemregister in dem Systemregistersatz 44,
die Systembefehle und Systemspeicherseiten. Der aktuelle
Privilegpegel, der in dem PSR.cpl-Feld 46A gespeichert ist,
variiert zwischen zwei oder mehr Ausführungsprivilegpegeln.
Bei einem Ausführungsbeispiel des Computersystems 30 werden
vier Privilegpegel verwendet, wobei der Privilegpegel 0 der
privilegierteste Pegel ist, der Zugriff zu allen privile
gierten Befehle liefert, und der Privilegpegel 3 der am we
nigsten privilegierte Pegel ist. Ein Aufrufbefehl speichert
den aktuellen Privilegpegel von dem PSR.cpl-Feld 46A in
PFS.ppl 38A des PFS-Registers 38.
Der Prozessor 32 kann einzelschrittweise durch die Anwen
dungsbefehle gehen, indem das Einzelschrittfeld (PSR.ss)
46B von PSR 46 aktiviert wird. Wenn die einzelschrittweise
Bearbeitung aktiviert ist, führt die erfolgreiche Ausfüh
rung eines Befehls zu einer Einzelschrittfalle.
Der Systemregistersatz 44 umfaßt Steuerregister 47. Die
Steuerregister 47 umfassen ein Unterbrechungsstatusregister
(ISR) 48, ein Unterbrechungsvektoradressen- (IVA-)Register
50 und ein Unterbrechungsprozessorstatusregister (IPSR) 51.
Das ISR 48 empfängt Informationen von dem Prozessor 32, be
züglich der Natur einer Unterbrechung. Das ISR 48 enthält
Informationen über den ausnahmeerzeugenden Befehl und seine
Eigenschaften, wie z. B. ob der ausnahmeerzeugende Befehl
eine Lese-, Schreib-, Ausführ-, Spekulations- oder Nicht
zugriffsoperation durchgeführt hat. Fehler- und Fallenspe
zifische Informationen werden in einem Codefeld (ISR.code)
48A von ISR 48 gespeichert. Das IVA-Register 50 spezifi
ziert eine Basisadresse der Unterbrechungsvektortabelle
(IVT) 62 (die nachfolgend erörtert wird). Das IPSR 51 emp
fängt den Wert von PSR 46 bei einer Unterbrechung. IPSR 51
wird verwendet, um PSR 46 nach einer Rückkehr von einer Un
terbrechung zu aktualisieren. Wie PSR 46 umfaßt IPSR 51 ein
Aktueller-Privilegpegel- (cpl-)Feld 51A und ein Einzel
schritt-(ss-)Feld 51B.
Der Speicher 52 speichert ein privilegwünschendes Anwen
dungsprogramm 54, das Anwendungsbefehle aufweist. Bei einem
Ausführungsbeispiel ist das Anwendungsprogramm 54 ein Be
triebssystem. Der Speicher 52 speichert außerdem einen Pri
vilegaufstiegsprozeß 56 und einen Privilegabstiegsprozeß
58. Das Betriebssystem 60, das in dem Speicher 52 gespei
chert ist, umfaßt IVT 62. Die IVT 62 speichert eine Mehr
zahl von Unterbrechungshandhabungseinrichtungen. Die IVT 62
speichert die Allgemeine-Ausnahme-Handhabungseinrichtung
62A und eine Einzelschrittfallenhandhabungseinrichtung 62B.
Zusätzlich zum Verwenden von IVT 62, um spezielle Unterbre
chungen handzuhaben, können andere Unterbrechungen durch
andere Prozesse handgehabt werden.
Eine Unterbrechung ist ein Ereignis, das bewirkt, daß die
Hardware automatisch die Ausführung des aktuellen Befehls
stroms stoppt und die Ausführung bei einer Befehlsadresse
beginnt, die einer Unterbrechungshandhabungseinrichtung für
diese Unterbrechung entspricht. Unterbrechungen umfassen
Fehler und Fallen. Ein Fehler tritt auf, wenn eine Be
triebssystemintervention erforderlich ist, bevor der aktu
elle Befehl ausgeführt werden kann. Eine Falle tritt auf,
wenn eine Betriebssystemintervention erforderlich ist,
nachdem der aktuelle Befehl beendet ist. Unterbrechungen
werden durch das Betriebssystem 60 an einer Adresse gehand
habt, die durch die Basisposition von IVT 62 bestimmt wird
(spezifiziert durch das IVA-Register 50), versetzt um einen
Betrag, der auf der speziellen Unterbrechung basiert, die
aufgetreten ist. Jede Unterbrechung weist ihren eigenen ar
chitektonischen Versatz in IVT 62 auf.
Wenn eine Unterbrechung auftritt, stoppt der Prozessor 32
die Ausführung an dem aktuellen Befehlszeiger (IP), stellt
den aktuellen Privilegpegel auf 0 (PSR.cpl 46A = 0) und be
ginnt damit, Befehle von der Adresse der Eintrittsstelle zu
der Unterbrechungshandhabungseinrichtung in IVT 62 für die
spezielle Unterbrechung, die aufgetreten ist, zu holen. Un
terbrechungshandhabungseinrichtungen können vollständig in
IVT 62 enthalten sein oder Handhabungseinrichtungen können
zu Code außerhalb von IVT 62 Verzweigungen bilden, falls
mehr Platz benötigt wird.
Die Position der Unterbrechungshandhabungseinrichtungen in
IVT 62 ist durch einen Unterbrechungsvektor spezifiziert.
Bei einem Ausführungsbeispiel gibt es mehr Unterbrechungen
als Unterbrechungsvektoren in IVT 62. Somit gibt es eine
Viele-zu-Einem-Beziehung zwischen Unterbrechungen und Un
terbrechungsvektoren. Eine Handhabungseinrichtung, die ei
nem speziellen Unterbrechungsvektor zugewiesen ist, kann
die spezielle Unterbrechung, die aufgetreten ist durch Le
sen von ISR.code 48A bestimmen. Nachdem eine Unterbrechung
durch eine Unterbrechungshandhabungseinrichtung verarbeitet
wurde, wird ein Rückkehr-von-der-Unterbrechung-(rfi = re
turn from interruption)Befehl durch den Prozessor 32 aus
geführt, und vorher gespeicherte Prozessorzustandsinforma
tionen werden verwendet, um den Prozessorzustand
wiederherzustellen.
Bei einem Ausführungsbeispiel erzeugt der Prozessor 32 ei
nen Allgemeine-Ausnahme-Unterbrechungsvektor, wenn ein Pri
vilegierte-Operation-Fehler auftritt. Auf der Basis der Ba
sisadresse von IVT 62, die in dem IVA-Register 50 enthalten
ist, und dem Versatz, der dem Allgemeine-Ausnahme-
Unterbrechungsvektor zugewiesen ist, springt der Prozessor
32 zu der Allgemeine-Ausnahme-Handhabungseinrichtung 62A,
um den Privilegierte-Operation-Fehler handzuhaben. Die All
gemeine-Ausnahme-Handhabungseinrichtung 62A wird nachfol
gend näher erörtert.
Bei einem Ausführungsbeispiel erzeugt der Prozessor 32 ei
nen Einzelschrittfalleunterbrechungsvektor, wenn eine Ein
zelschrittfalle auftritt. Auf der Basis der Basisadresse
von IVT 62, die in dem IVA-Register 50 enthalten ist, und
dem Versatz, der dem Einzelschrittfallenunterbrechungsvek
tor zugewiesen ist, springt der Prozessor 32 zu der Einzel
schrittfallenhandhabungseinrichtung 62B, um die Einzel
schrittfalle handzuhaben. Die Einzelschrittfallenhandha
bungseinrichtung 62B wird nachfolgend näher erörtert.
Der Prozessor 32 würde typischerweise ein privilegwünschen
des Anwendungsprogramm, wie z. B. das Anwendungsprogramm
54, an einem niedrigen aktuellen Privilegpegel (z. B.
PSR.cpl = 2) ausführen. Der aktuelle Privilegpegel, der in
dem PSR.cpl-Feld 46A gespeichert ist, steuert die Be
fehlsausführung des Anwendungsprogramms 54 in dem Computer
system 30 durch Steuern der Zugriffsmöglichkeit auf System
ressourcen, wie z. B. die Systemregister in dem Systemregi
stersatz 44, die Systembefehle und die Speicherseiten des
Speichers 52. Falls der Prozessor 32 versucht, einen Befehl
in einem Anwendungsprogramm 54 auszuführen, der einen höhe
ren Privilegpegel (z. B. PSR.cpl = 0) erfordert, tritt ein
Privilegierte-Operation-Fehler auf.
Fig. 2 stellt ein Flußdiagramm eines Prozesses 200 zum
Überwachen der Ausführung von privilegierten Befehlen in
privilegwünschenden Anwendungsprogrammen 54 gemäß der vor
liegenden Erfindung dar. Im Schritt 202 des Prozesses 200
erniedrigt der Prozessor 32 den aktuellen Privilegpegel.
Bei einem Ausführungsbeispiel erniedrigt der Prozessor 32
den aktuellen Privilegpegel durch Ausführen des Privilegab
stiegsprozesses 58. Ein "Erniedrigen" des Privilegpegels
bei der vorliegenden Erfindung umfaßt das Erhöhen des Wer
tes bei PSR.cpl 46A, da höhere Zahlen bei PSR.cpl 46A nied
rigeren Privilegpegeln entsprechen.
Fig. 3 stellt die Schritte dar, die durch den Prozessor 32
bei einem Ausführungsbeispiel während der Ausführung des
Privilegabstiegsprozesses 58 durchgeführt werden. Im
Schritt 302 weist der Prozessor 32 einen Stapelrahmen auf
einem allgemeinen Registerstapel zu, einschließlich zwei
gestapelten allgemeinen Registern 40 und 41. Während der
Zuweisung kopiert der Prozessor 32 die Inhalte des PFS-
Registers 38 in das gestapelte allgemeine Register 40. Im
Schritt 304 extrahiert der Prozessor 32 das ppl-Feld 38A
von dem gestapelten allgemeinen Register 40 und plaziert
das extrahierte ppl-Feld 38A in das statische allgemeine
Register 42. Da bei einem Ausführungsbeispiel das statische
allgemeine Register 42 für alle Prozeduren sichtbar ist,
können andere Prozeduren auf das allgemeine Register 42
zugreifen, um den darin spezifizierten Privilegpegel zu
bestimmen. Die Inhalte des allgemeinen Registers 42 werden
zu dem Prozeß zurückgesendet, der den Privilegabstiegspro
zeß aufgerufen hat. Danach legt der Prozessor 32 im Schritt
306 ausgewählte Bits, die dem gewünschten niedrigeren Pri
vilegpegel entsprechen, von dem gestapelten allgemeinen Re
gister 41 in das gestapelte allgemeine Register 40 ab. Bei
einem Ausführungsbeispiel werden Bits, die einem Privileg
pegel von 2 entsprechen, in dem allgemeinen Register 41 ge
speichert, und in dem gestapelten allgemeinen Register 40
abgelegt. Andere Bitkombinationen, die anderen Privilegpe
geln entsprechen, können in dem gestapelten allgemeinen Re
gister 41 gespeichert werden und in dem gestapelten allge
meinen Register 40 abgelegt werden. Die Bits, die dem ge
wünschten Privilegpegel entsprechen, werden in dem gesta
pelten allgemeinen Register 41 gespeichert, durch den Auf
ruf an den Privilegabstiegsprozeß 58, der den gewünschten
Privilegpegel spezifiziert. Im Schritt 308 bewegt der Pro
zessor 32 die Inhalte des gestapelten allgemeinen Registers
40, einschließlich der neu eingestellten Privilegpegelbits,
zu dem PFS-Register 38. Nach der Bewegung enthält PFS.ppl
38A Bits, die dem gewünschten niedrigeren Privilegpegel
entsprechen. Im Schritt 310 führt der Prozessor 32 einen
Zweigrückkehrbefehl durch. Während dem Zweigrückkehrbefehl
aktualisiert der Prozessor 32 PSR.cpl 46A mit dem Wert von
PFS.ppl 38A, wodurch der gewünschte niedrigere Privilegpe
gel in PSR.cpl 46A eingestellt wird.
Nachdem der aktuelle Privilegpegel im Schritt 202 zu dem
gewünschten Wert erniedrigt wurde, ruft der Prozessor 32,
wie es in Fig. 2 gezeigt ist, dann im Schritt 204 einen Be
fehl von dem privilegwünschenden Anwendungsprogramm 54 ab,
decodiert denselben und versucht ihn auszuführen. Falls das
Einzelschrittfallenfeld (PSR.ss 46B) im Schritt 206 akti
viert ist, führt die erfolgreiche Ausführung des Befehls zu
einer Einzelschrittfalle und die Einzelschrittfallenhandha
bungseinrichtung 62B wird im Schritt 208 aufgerufen (nach
folgend erörtert). Falls die versuchte Ausführung des Be
fehls zu der Erzeugung eines Allgemeine-Ausnahme-
Unterbrechungsvektors führt, wird im Schritt 216 die Allge
meine-Ausnahme-Handhabungseinrichtung 62A aufgerufen. Falls
weder eine Einzelschrittfalle noch ein Allgemeine-Ausnahme-
Unterbrechungsvektor erzeugt wird, springt der Prozeß 200
zum Schritt 204 und der nächste Befehl wird geholt, deco
diert und die Ausführung dieses Befehls wird versucht.
Wenn die Allgemeine-Ausnahme-Handhabungseinrichtung 62A im
Schritt 216 aufgerufen wird, bestimmt dieselbe im Schritt
218, ob der Allgemeine-Ausnahme-Unterbrechungsvektor auf
grund eines Privilegierte-Operation-Fehlers erzeugt wurde.
Bei einem Ausführungsbeispiel macht die Allgemeine-
Ausnahme-Handhabungseinrichtung 62A die Bestimmung durch
Lesen des ISR.code 48A. Falls der ISR.code 48A anzeigt, daß
der Allgemeine-Ausnahme-Unterbrechungsvektor nicht aufgrund
eines Privilegierte-Operation-Fehlers erzeugt wurde, hand
habt die Allgemeine-Ausnahme-Handhabungseinrichtung 62A die
allgemeine Ausnahme im Schritt 220 auf normale Weise. Falls
ISR.code 48A anzeigt, daß der Allgemeine-Ausnahme-
Unterbrechungsvektor aufgrund eines Privilegierte-
Operation-Fehlers erzeugt wurde, springt der Prozeß 200 zum
Schritt 222.
Im Schritt 222 bestimmt die Allgemeine-Ausnahme-
Handhabungseinrichtung 62A, ob der aktuelle Befehl "emu
liert" werden sollte. Das Wort "emuliert" in diesem Zusam
menhang stellt nicht die traditionelle Emulation auf Soft
warebasis dar. Statt dessen führt der Prozessor 32 durch
temporäres Modifizieren von Privilegpegeln, um tatsächlich
den Befehl auszuführen, im wesentlichen das Äquivalent ei
ner Emulation eines Befehls durch. Bei einem Ausführungs
beispiel führt die Allgemeine-Ausnahme-
Handhabungseinrichtung 62A die Bestimmung durch, ob der ak
tuelle Befehl emuliert werden sollte auf der Basis dessen,
ob ein Benutzermodus durch das Betriebssystem 60 spezifi
ziert wurde. Bei einem Ausführungsbeispiel zeigt ein Benut
zermodus an, daß das Anwendungsprogramm bei dem Privilegpe
gel 3 läuft (d. h. PSR.cpl = 3). Falls kein Benutzermodus
spezifiziert wurde, handhabt die Allgemeine-Ausnahme-
Handhabungseinrichtung 62A den Privilegierte-Operation-
Fehler im Schritt 224 auf normale Weise. Falls ein Benut
zermodus spezifiziert wurde, springt die Allgemeine-
Ausnahme-Handhabungseinrichtung 62A zum Schritt 226. Im
Schritt 226 speichert die Allgemeine-Ausnahme-
Handhabungseinrichtung 62A Zustandsinformationen 64 in dem
Speicher 52. Bei einem Ausführungsbeispiel umfassen die Zu
standsinformationen 64 Prozessorzustandsinformationen, wie
sie in dem PSR 46 spezifiziert sind. Die Zustandsinforma
tionen 64 umfassen vorzugsweise auch alle Informationen,
die hilfreich sein können beim späteren Analysieren des
Privilegierte-Operation-Fehlers, einschließlich, welcher
Befehl einen Fehler verursachte, in welchem Zustand der
Prozessor 32 war, als ein Privilegfehler auftrat, die An
zahl von Privilegfehlern, die während der Ausführung eines
privilegwünschenden Anwendungsprogramms 54 auftraten, und
auch andere Informationen.
Nachfolgend erhöht die Allgemeine-Ausnahme-
Handhabungseinrichtung 62A im Schritt 228 den aktuellen
Privilegpegel des Prozessors 32, der in dem PSR.cpl-Feld
46A gespeichert ist, durch Ausführen des Privilegaufstiegs
prozesses 56. Fig. 4 zeigt ein Flußdiagramm eines Ausfüh
rungsbeispiels eines Privilegaufstiegsprozesses 56. Der
Privilegaufstiegsprozeß 56 umfaßt den Schritt 402 des Spei
cherns des Werts von IPSR.cpl 51A in einer Datenstruktur.
Im Schritt 404 wird der Wert in der Datenstruktur, der
IPSR.cpl 51A darstellt, zu dem gewünschten höheren Privi
legpegelwert (z. B. 0) geändert. Im Schritt 406 wird IPSR
51 auf der Basis der Daten aktualisiert, die in der Daten
struktur gespeichert sind. Nachdem das Aktualisieren durch
geführt wurde, enthält IPSR.cpl 51A den gewünschten höheren
Privilegpegel (z. B. IPSR.cpl 51A = 0). Im Schritt 408 wird
eine Rückkehr von der Unterbrechung (rfi) durchgeführt. Ei
ne Rückkehr von der Unterbrechung bewirkt, daß PSR 46 von
IPSR 51 aktualisiert wird. Somit enthält PSR.cpl 46A nach
der Rückkehr von der Unterbrechung den gewünschten höheren
Privilegpegel (z. B. PSR.cpl 46A = 0).
Schließlich, wie es bei Fig. 2 gezeigt ist, akaiviert die
Allgemeine-Ausnahme-Handhabungseinrichtung 62A im Schritt
230 einen Einzelschrittmodus. Die Allgemeine-Ausnahme-
Handhabungseinrichtung 62A aktiviert den Einzelschrittmodus
durch Aktivieren des Einzelschrittfeldes PSR.ss 46B bei PSR
46. Bei einem Ausführungsbeispiel aktiviert die Allgemeine-
Ausnahme-Handhabungseinrichtung 62A das Einzelschrittfeld
PSR.ss 46B auf die gleiche Weise und bei dem gleichen Pro
zeß wie die Allgemeine-Ausnahme-Handhabungseinrichtung 62A
das PSR.cpl-Feld 46A modifiziert (oben mit Bezugnahme auf
Fig. 4 erörtert). Insbesondere speichert die Allgemeine-
Ausnahme-Handhabungseinrichtung 62A den Wert von IPSR.ss
51B im Schritt 402 in einer Datenstruktur. Im Schritt 404
wird der Wert in der Datenstruktur, der IPSR.ss 51B dar
stellt, dann geändert, um eine Einzelschrittbearbeitung zu
aktivieren. Im Schritt 406 wird IPSR 51 auf der Basis der
Daten, die in der Datenstruktur gespeichert sind, aktuali
siert. Nachdem die Aktualisierung durchgeführt wurde, ist
IPSR.ss 51B = 1. Im Schritt 408 wird eine Rückkehr von der
Unterbrechung (rfi) durchgeführt. Eine Rückkehr von der Un
terbrechung bewirkt, daß PSR 46 von IPSR 51 aktualisiert
wird. Somit enthält PSR.ss 46B nach der Rückkehr von der
Unterbrechung den gewünschten Wert (z. B. PSR.ss 46B = 1).
Danach kehrt der Fluß zum Schritt 204 zurück, um den aktu
ellen Befehl auszuführen. Da das Einzelschrittfallenfeld
PSR.ss 46B nach der Ausführung des aktuellen Befehls akti
viert wurde, wird im Schritt 206 eine Einzelschrittfalle
erzeugt und im Schritt 208 wird eine Einzelschrittfallen
handhabungseinrichtung 62B aufgerufen. Im Schritt 210 er
niedrigt die Einzelschrittfallenhandhabungseinrichtung 62B
den aktuellen Privilegpegel, der in dem PSR.cpl-Feld 46A
gespeichert ist, unter Verwendung des Privilegabstiegspro
zesses 58, der in Fig. 3 gezeigt ist und oben erörtert wur
de. Im Schritt 212 deaktiviert die
Einzelschrittfallenhandhabungseinrichtung 62B die
Einzelschrittbearbeitung. Bei einem Ausführungsbeispiel
deaktiviert die Einzelschrittfallenhandhabungseinrichtung
62B die Einzelschrittbearbeitung durch Deaktivieren des
Einzelschrittfallenfelds PSR.ss 46B bei PSR 46 auf die
gleiche Weise, wie oben erörtert ist, wenn PSR.ss 46B
aktiviert ist. Bei einem Ausführungsbeispiel speichert die
Einzelschrittfallenhandhabungseinrichtung 62B außerdem
Zustandsinformationen 64, einschließlich des aktuellen
Zustands von PSR 46 vor irgendwelchen Modifikationen durch
die Einzelschrittfallenhandhabungseinrichtung 62B. Der Fluß
kehrt dann zum Schritt 204 zurück, wo der nächste Befehl
abgerufen, decodiert, und die Ausführung desselben versucht
wird.
Die vorliegende Erfindung ist nicht auf einen Prozessortyp
begrenzt, sondern gilt statt dessen für jeden Prozessor,
der eine Einzelschritt- und Unterbrechungsfunktionalität
liefert, einschließlich einer IA-64-Prozessorarchitektur,
aber nicht auf dieselbe beschränkt.
Claims (32)
1. Verfahren zum Überwachen der Ausführung privilegierter
Befehle durch einen Prozessor (32) eines Computersy
stems (30), wobei der Prozessor (32) einen aktuellen
Privilegpegel umfaßt, wobei der Prozessor automatisch
einen Fehler erzeugt, wenn derselbe die Ausführung ei
nes Befehls versucht, der einen höheren Privilegpegel
erfordert als den aktuellen Privilegpegel des Prozes
sors, wobei das Verfahren folgende Schritte umfaßt:
Erhöhen (228) des aktuellen Privilegpegels des Prozes sors ansprechend auf einen Fehler, der durch einen er sten fehlerverursachenden Befehl erzeugt wurde;
Ausführen (204) des ersten fehlerverursachenden Be fehls;
Erzeugen (206) einer Falle durch Ausführen des ersten fehlerverursachenden Befehls; und
Erniedrigen (210) des aktuellen Privilegpegels des Prozessors ansprechend auf die Falle.
Erhöhen (228) des aktuellen Privilegpegels des Prozes sors ansprechend auf einen Fehler, der durch einen er sten fehlerverursachenden Befehl erzeugt wurde;
Ausführen (204) des ersten fehlerverursachenden Be fehls;
Erzeugen (206) einer Falle durch Ausführen des ersten fehlerverursachenden Befehls; und
Erniedrigen (210) des aktuellen Privilegpegels des Prozessors ansprechend auf die Falle.
2. Verfahren gemäß Anspruch 1, das ferner folgenden
Schritt umfaßt:
Erniedrigen (202) des aktuellen Privilegpegels des Prozessors vor dem Ausführen der Befehle.
Erniedrigen (202) des aktuellen Privilegpegels des Prozessors vor dem Ausführen der Befehle.
3. Verfahren gemäß Anspruch 1 oder 2, das ferner folgen
den Schritt umfaßt:
Aufrufen (216) einer Fehlerhandhabungseinrichtung (62A), um den Fehler zu verarbeiten.
Aufrufen (216) einer Fehlerhandhabungseinrichtung (62A), um den Fehler zu verarbeiten.
4. Verfahren gemäß Anspruch 3, bei dem der Schritt des
Erhöhens des aktuellen Privilegpegels durch die Feh
lerhandhabungseinrichtung (62A) durchgeführt wird.
5. Verfahren gemäß einem der Ansprüche 1 bis 4, das fer
ner folgenden Schritt umfaßt:
Aufrufen (208) einer Fallenhandhabungseinrichtung (62B), um die Falle zu verarbeiten.
Aufrufen (208) einer Fallenhandhabungseinrichtung (62B), um die Falle zu verarbeiten.
6. Verfahren gemäß Anspruch 5, bei dem der Schritt des
Erniedrigens des aktuellen Privilegpegels durch die
Fallenhandhabungseinrichtung (62B) durchgeführt wird.
7. Verfahren gemäß einem der Ansprüche 1 bis 7, das fer
ner folgenden Schritt umfaßt:
Aktivieren (230) eines Einzelschrittmodus des Prozes sors ansprechend auf den Fehler.
Aktivieren (230) eines Einzelschrittmodus des Prozes sors ansprechend auf den Fehler.
8. Verfahren gemäß Anspruch 7, das ferner folgenden
Schritt umfaßt:
Einstellen eines Felds (46B) in einem Systemregister (46) des Prozessors, um den Einzelschrittmodus zu ak tivieren.
Einstellen eines Felds (46B) in einem Systemregister (46) des Prozessors, um den Einzelschrittmodus zu ak tivieren.
9. Verfahren gemäß einem der Ansprüche 1 bis 8, das fer
ner folgenden Schritt umfaßt:
Speichern (226) von Zustandsinformationen ansprechend auf den Fehler.
Speichern (226) von Zustandsinformationen ansprechend auf den Fehler.
10. Verfahren gemäß Anspruch 9, bei dem die Zustandsinfor
mationen (64) die Anzahl von Befehlen umfassen, die
einen Fehler bewirkten, und eine Identifikation von
Befehlen, die einen Fehler bewirkten.
11. Verfahren zum Ausführen von Befehlen durch einen Pro
zessor (32) eines Computersystems (30), der durch ein
Betriebssystem (60) gesteuert wird, wobei der Prozes
sor einen aktuellen Privilegpegel aufweist, und wobei
das Verfahren folgende Schritte umfaßt:
Erzeugen (204) eines Privilegierte-Operation-Fehlers (218) auf der Basis einer versuchten Ausführung eines ersten Befehls;
Erhöhen (228) des aktuellen Privilegpegels des Prozes sors ansprechend auf den Privilegierte-Operation- Fehler;
Aktivieren (230) eines Einzelschrittmodus ansprechend auf den Privilegierte-Operation-Fehler;
Ausführen des ersten Befehls und dadurch Erzeugen (206) einer Einzelschrittfalle;
Erniedrigen (210) des aktuellen Privilegpegels des Prozessors ansprechend auf die Einzelschrittfalle; und
Deaktivieren (212) des Einzelschrittmodus ansprechend auf die Einzelschrittfalle.
Erzeugen (204) eines Privilegierte-Operation-Fehlers (218) auf der Basis einer versuchten Ausführung eines ersten Befehls;
Erhöhen (228) des aktuellen Privilegpegels des Prozes sors ansprechend auf den Privilegierte-Operation- Fehler;
Aktivieren (230) eines Einzelschrittmodus ansprechend auf den Privilegierte-Operation-Fehler;
Ausführen des ersten Befehls und dadurch Erzeugen (206) einer Einzelschrittfalle;
Erniedrigen (210) des aktuellen Privilegpegels des Prozessors ansprechend auf die Einzelschrittfalle; und
Deaktivieren (212) des Einzelschrittmodus ansprechend auf die Einzelschrittfalle.
12. Verfahren gemäß Anspruch 11, das ferner folgenden
Schritt umfaßt:
Erniedrigen (202) des aktuellen Privilegpegels des Prozessors vor dem Ausführen der Befehle.
Erniedrigen (202) des aktuellen Privilegpegels des Prozessors vor dem Ausführen der Befehle.
13. Verfahren gemäß Anspruch 11 oder 12, das ferner fol
genden Schritt umfaßt:
Aufrufen (216) einer Fehlerhandhabungseinrichtung (62A), um den Privilegierte-Operation-Fehler zu verar beiten.
Aufrufen (216) einer Fehlerhandhabungseinrichtung (62A), um den Privilegierte-Operation-Fehler zu verar beiten.
14. Verfahren gemäß Anspruch 13, bei dem die Schritte des
Erhöhens (228) des aktuellen Privilegpegels und des
Aktivierens (230) eines Einzelschrittmodus durch die
Fehlerhandhabungseinrichtung (62A) durchgeführt wer
den.
15. Verfahren gemäß einem der Ansprüche 11 bis 14, das
ferner folgenden Schritt umfaßt:
Aufrufen (208) einer Fehlerhandhabungseinrichtung (62B), um die Einzelschrittfalle zu verarbeiten.
Aufrufen (208) einer Fehlerhandhabungseinrichtung (62B), um die Einzelschrittfalle zu verarbeiten.
16. Verfahren gemäß Anspruch 15, bei dem die Schritte des
Erniedrigens (210) des aktuellen Privilegpegels und
des Deaktivierens (212) des Einzelschrittmodus durch
die Fallenhandhabungseinrichtung (62B) durchgeführt
werden.
17. Verfahren gemäß einem der Ansprüche 11 bis 16, das
ferner folgenden Schritt umfaßt:
Einstellen eines Felds in einem Systemregister des Prozessors (32), um den Einzelschrittmodus zu aktivie ren.
Einstellen eines Felds in einem Systemregister des Prozessors (32), um den Einzelschrittmodus zu aktivie ren.
18. Verfahren gemäß einem der Ansprüche 11 bis 17, das
ferner folgenden Schritt umfaßt:
Speichern (226) von Zustandsinformationen (64) anspre chend auf den Privilegierte-Operation-Fehler.
Speichern (226) von Zustandsinformationen (64) anspre chend auf den Privilegierte-Operation-Fehler.
19. Verfahren gemäß Anspruch 18, bei dem die Zustandsin
formationen (64) die Anzahl von Befehlen umfassen, die
einen Fehler verursachten, und eine Identifikation von
Befehlen, die einen Fehler verursachten.
20. Computersystem (30), das folgende Merkmale umfaßt:
einen Prozessor (32) mit einem aktuellen Privilegpe gel, der die Anwendungsbefehlausführung in dem Compu tersystem (30) steuert;
einen Speicher (52), der ein privilegwünschendes An wendungsprogramm (54) mit Anwendungsbefehlen spei chert; und
ein Betriebssystem (60), das in dem Speicher (52) ge speichert ist, zum Steuern des Prozessors (32), wobei das Betriebssystem eine Fehlerhandhabungseinrichtung (62A) und eine Fallenhandhabungseinrichtung (62B) um faßt, wobei die Fehlerhandhabungseinrichtung anspre chend auf einen Privilegierte-Operation-Fehler den ak tuellen Privilegpegel erhöht (228) und einen Einzel schrittmodus aktiviert (230), wobei die Fallenhandha bungseinrichtung ansprechend auf eine Einzelschritt falle (206) den aktuellen Privilegpegel erniedrigt (210) und den Einzelschrittmodus deaktiviert (212).
einen Prozessor (32) mit einem aktuellen Privilegpe gel, der die Anwendungsbefehlausführung in dem Compu tersystem (30) steuert;
einen Speicher (52), der ein privilegwünschendes An wendungsprogramm (54) mit Anwendungsbefehlen spei chert; und
ein Betriebssystem (60), das in dem Speicher (52) ge speichert ist, zum Steuern des Prozessors (32), wobei das Betriebssystem eine Fehlerhandhabungseinrichtung (62A) und eine Fallenhandhabungseinrichtung (62B) um faßt, wobei die Fehlerhandhabungseinrichtung anspre chend auf einen Privilegierte-Operation-Fehler den ak tuellen Privilegpegel erhöht (228) und einen Einzel schrittmodus aktiviert (230), wobei die Fallenhandha bungseinrichtung ansprechend auf eine Einzelschritt falle (206) den aktuellen Privilegpegel erniedrigt (210) und den Einzelschrittmodus deaktiviert (212).
21. Computersystem gemäß Anspruch 20, bei dem die Fehler
handhabungseinrichtung (62A) Zustandsinformationen in
dem Speicher (52) speichert.
22. Computersystem gemäß Anspruch 21, bei dem die Zu
standsinformationen (64) die Anzahl von Befehlen um
fassen, die einen Fehler bewirkten, und eine Identifi
kation der Befehle, die einen Fehler bewirkten.
23. Computerlesbares Medium, das Befehle für ein Betriebs
system (60) zum Steuern eines Prozessors (32) eines
Computersystems (30) umfaßt, um ein Verfahren zum
Überwachen der Ausführung von privilegierten Befehlen
durchzuführen, wobei der Prozessor einen aktuellen
Privilegpegel aufweist, der die Befehlsausführung in
dem Computersystem steuert, wobei das Verfahren fol
gende Schritte umfaßt:
Erhöhen (228) des aktuellen Privilegpegels des Prozes sors ansprechend auf einen Fehler, der durch einen er sten fehlerverursachenden Befehl erzeugt wurde;
Ausführen (204) des ersten fehlerverursachenden Be fehls;
Erzeugen (206) einer Falle durch Ausführen des ersten fehlerverursachenden Befehls; und
Erniedrigen (210) des aktuellen Privilegpegels des Prozessors ansprechend auf die Falle.
Erhöhen (228) des aktuellen Privilegpegels des Prozes sors ansprechend auf einen Fehler, der durch einen er sten fehlerverursachenden Befehl erzeugt wurde;
Ausführen (204) des ersten fehlerverursachenden Be fehls;
Erzeugen (206) einer Falle durch Ausführen des ersten fehlerverursachenden Befehls; und
Erniedrigen (210) des aktuellen Privilegpegels des Prozessors ansprechend auf die Falle.
24. Computerlesbares Medium gemäß Anspruch 23, bei dem das
Verfahren ferner folgenden Schritt umfaßt:
Erniedrigen (202) des aktuellen Privilegpegels des Prozessors vor dem Ausführen der Befehle.
Erniedrigen (202) des aktuellen Privilegpegels des Prozessors vor dem Ausführen der Befehle.
25. Computerlesbares Medium gemäß Anspruch 23 oder 24, bei
dem das Verfahren ferner folgenden Schritt umfaßt:
Aufrufen (216) einer Fehlerhandhabungseinrichtung (62A), um den Fehler zu verarbeiten.
Aufrufen (216) einer Fehlerhandhabungseinrichtung (62A), um den Fehler zu verarbeiten.
26. Computerlesbares Medium gemäß Anspruch 25, bei dem der
Schritt des Erhöhens des aktuellen Privilegpegels
durch die Fehlerhandhabungseinrichtung (62A) durchge
führt wird.
27. Computerlesbares Medium gemäß einem der Ansprüche 23
bis 26, bei dem das Verfahren ferner folgenden Schritt
umfaßt:
Aufrufen (208) einer Fallenhandhabungseinrichtung (62B), um die Falle zu verarbeiten.
Aufrufen (208) einer Fallenhandhabungseinrichtung (62B), um die Falle zu verarbeiten.
28. Computerlesbares Medium gemäß Anspruch 27, bei dem der
Schritt des Erniedrigens des aktuellen Privilegpegels
durch die Fallenhandhabungseinrichtung (62B) durchge
führt wird.
29. Computerlesbares Medium gemäß einem der Ansprüche 23
bis 28, bei dem das Verfahren ferner folgenden Schritt
umfaßt:
Aktivieren (230) eines Einzelschrittmodus des Prozes sors ansprechend auf den Fehler.
Aktivieren (230) eines Einzelschrittmodus des Prozes sors ansprechend auf den Fehler.
30. Computerlesbares Medium gemäß Anspruch 29, bei dem das
Verfahren ferner folgenden Schritt umfaßt:
Einstellen eines Felds (46B) in einem Systemregister (46) des Prozessors, um den Einzelschrittmodus zu ak tivieren.
Einstellen eines Felds (46B) in einem Systemregister (46) des Prozessors, um den Einzelschrittmodus zu ak tivieren.
31. Computerlesbares Medium gemäß einem der Ansprüche 23
bis 30, bei dem das Verfahren ferner folgenden Schritt
umfaßt:
Speichern (226) von Zustandsinformationen ansprechend auf den Fehler.
Speichern (226) von Zustandsinformationen ansprechend auf den Fehler.
32. Computerlesbares Medium gemäß Anspruch 31, bei dem die
Zustandsinformationen (64) die Anzahl von Befehlen um
fassen, die einen Fehler verursachten, und eine Iden
tifikation von Befehlen, die einen Fehler verursach
ten.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/799,999 US6694457B2 (en) | 2001-03-06 | 2001-03-06 | System and method for monitoring execution of privileged instructions |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| DE10206422A1 true DE10206422A1 (de) | 2002-09-19 |
Family
ID=25177260
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE10206422A Withdrawn DE10206422A1 (de) | 2001-03-06 | 2002-02-15 | System und Verfahren zum Überwachen der Ausführung privilegierter Befehle |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US6694457B2 (de) |
| JP (1) | JP2002268914A (de) |
| DE (1) | DE10206422A1 (de) |
| GB (1) | GB2375200A (de) |
Families Citing this family (47)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8074055B1 (en) | 1999-01-28 | 2011-12-06 | Ati Technologies Ulc | Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code |
| US8127121B2 (en) * | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
| US8121828B2 (en) * | 1999-01-28 | 2012-02-21 | Ati Technologies Ulc | Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions |
| US7941647B2 (en) | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
| US7275246B1 (en) | 1999-01-28 | 2007-09-25 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
| US7254806B1 (en) | 1999-08-30 | 2007-08-07 | Ati International Srl | Detecting reordered side-effects |
| US6934832B1 (en) * | 2000-01-18 | 2005-08-23 | Ati International Srl | Exception mechanism for a computer |
| US6851006B2 (en) * | 2001-08-25 | 2005-02-01 | International Business Machines Corporation | Interruption handler-operating system dialog for operating system handling of hardware interruptions |
| US20040064723A1 (en) * | 2001-10-31 | 2004-04-01 | Barnes Brian C. | Method and apparatus for physical address-based security to determine target security |
| US6745307B2 (en) * | 2001-10-31 | 2004-06-01 | Hewlett-Packard Development Company, L.P. | Method and system for privilege-level-access to memory within a computer |
| US7698522B1 (en) | 2002-01-11 | 2010-04-13 | Global Foundries | Method and apparatus for linear address based page level security scheme to determine current security context |
| US7739498B2 (en) * | 2002-01-15 | 2010-06-15 | GlobalFoundries, Inc. | Method and apparatus for multi-table accessing of input/output devices using target security |
| US6968547B2 (en) * | 2002-01-29 | 2005-11-22 | Sun Microsystems, Inc. | Dynamic trap table interposition for efficient collection of trap statistics |
| US7210144B2 (en) * | 2002-08-02 | 2007-04-24 | Microsoft Corporation | Method for monitoring and emulating privileged instructions of programs in a virtual machine |
| US7434264B2 (en) * | 2003-03-07 | 2008-10-07 | Freescale Semiconductor, Inc. | Data processing system with peripheral access protection and method therefor |
| US7444547B2 (en) | 2003-06-19 | 2008-10-28 | International Business Machines Corproation | Method, system, and product for programming in a simultaneous multi-threaded processor environment |
| US7149929B2 (en) * | 2003-08-25 | 2006-12-12 | Hewlett-Packard Development Company, L.P. | Method of and apparatus for cross-platform core dumping during dynamic binary translation |
| US20050138263A1 (en) * | 2003-12-23 | 2005-06-23 | Mckeen Francis X. | Method and apparatus to retain system control when a buffer overflow attack occurs |
| US7613951B2 (en) * | 2005-05-13 | 2009-11-03 | Texas Instruments Incorporated | Scaled time trace |
| US8984636B2 (en) * | 2005-07-29 | 2015-03-17 | Bit9, Inc. | Content extractor and analysis system |
| US8272058B2 (en) * | 2005-07-29 | 2012-09-18 | Bit 9, Inc. | Centralized timed analysis in a network security system |
| US20070028291A1 (en) * | 2005-07-29 | 2007-02-01 | Bit 9, Inc. | Parametric content control in a network security system |
| US7895651B2 (en) * | 2005-07-29 | 2011-02-22 | Bit 9, Inc. | Content tracking in a network security system |
| US7953961B1 (en) | 2005-09-28 | 2011-05-31 | Oracle America, Inc. | Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder |
| US8019944B1 (en) | 2005-09-28 | 2011-09-13 | Oracle America, Inc. | Checking for a memory ordering violation after a speculative cache write |
| US7966479B1 (en) | 2005-09-28 | 2011-06-21 | Oracle America, Inc. | Concurrent vs. low power branch prediction |
| US8051247B1 (en) | 2005-09-28 | 2011-11-01 | Oracle America, Inc. | Trace based deallocation of entries in a versioning cache circuit |
| US8499293B1 (en) | 2005-09-28 | 2013-07-30 | Oracle America, Inc. | Symbolic renaming optimization of a trace |
| US8370576B1 (en) | 2005-09-28 | 2013-02-05 | Oracle America, Inc. | Cache rollback acceleration via a bank based versioning cache ciruit |
| US7877630B1 (en) | 2005-09-28 | 2011-01-25 | Oracle America, Inc. | Trace based rollback of a speculatively updated cache |
| US8032710B1 (en) | 2005-09-28 | 2011-10-04 | Oracle America, Inc. | System and method for ensuring coherency in trace execution |
| US7870369B1 (en) | 2005-09-28 | 2011-01-11 | Oracle America, Inc. | Abort prioritization in a trace-based processor |
| US8015359B1 (en) | 2005-09-28 | 2011-09-06 | Oracle America, Inc. | Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit |
| US7937564B1 (en) | 2005-09-28 | 2011-05-03 | Oracle America, Inc. | Emit vector optimization of a trace |
| US8037285B1 (en) * | 2005-09-28 | 2011-10-11 | Oracle America, Inc. | Trace unit |
| US8024522B1 (en) | 2005-09-28 | 2011-09-20 | Oracle America, Inc. | Memory ordering queue/versioning cache circuit |
| US7987342B1 (en) | 2005-09-28 | 2011-07-26 | Oracle America, Inc. | Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer |
| US7676634B1 (en) * | 2005-09-28 | 2010-03-09 | Sun Microsystems, Inc. | Selective trace cache invalidation for self-modifying code via memory aging |
| US7949854B1 (en) | 2005-09-28 | 2011-05-24 | Oracle America, Inc. | Trace unit with a trace builder |
| CN101283332A (zh) * | 2005-10-04 | 2008-10-08 | 日本电气株式会社 | 信息处理装置、信息处理方法及程序 |
| US7797681B2 (en) * | 2006-05-11 | 2010-09-14 | Arm Limited | Stack memory selection upon exception in a data processing system |
| US8010745B1 (en) | 2006-09-27 | 2011-08-30 | Oracle America, Inc. | Rolling back a speculative update of a non-modifiable cache line |
| US8370609B1 (en) | 2006-09-27 | 2013-02-05 | Oracle America, Inc. | Data cache rollbacks for failed speculative traces with memory operations |
| JP5215655B2 (ja) * | 2007-12-27 | 2013-06-19 | ルネサスエレクトロニクス株式会社 | データ処理装置及びデータ処理装置におけるバスアクセス制御方法 |
| US10503662B2 (en) * | 2012-06-29 | 2019-12-10 | Intel Corporation | Systems, apparatuses, and methods for implementing temporary escalated privilege |
| US9785783B2 (en) * | 2015-07-23 | 2017-10-10 | Ca, Inc. | Executing privileged code in a process |
| GB201807589D0 (en) * | 2018-05-10 | 2018-06-27 | Nordic Semiconductor Asa | Memory access |
Family Cites Families (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4809160A (en) * | 1985-10-28 | 1989-02-28 | Hewlett-Packard Company | Privilege level checking instruction for implementing a secure hierarchical computer system |
| US5134701A (en) | 1989-02-10 | 1992-07-28 | Hewlett-Packard Co. | Test apparatus performing runtime replacement of program instructions with breakpoint instructions for processor having multiple instruction fetch capabilities |
| US5201043A (en) * | 1989-04-05 | 1993-04-06 | Intel Corporation | System using both a supervisor level control bit and a user level control bit to enable/disable memory reference alignment checking |
| DE69110908T2 (de) * | 1991-04-01 | 1996-02-08 | Cray Research Inc | Auffangen eines priviligierten befehlswortes zur kontrolle eines betriebssystems. |
| US5450586A (en) | 1991-08-14 | 1995-09-12 | Hewlett-Packard Company | System for analyzing and debugging embedded software through dynamic and interactive use of code markers |
| EP0537721B1 (de) | 1991-10-15 | 1998-11-25 | Hewlett-Packard Company | Hardwarekonfiguriertes Betriebssystemkern für einen Multitaskprozessor |
| US5596717A (en) * | 1995-06-07 | 1997-01-21 | Texas Instruments Incorporated | Four state token passing alignment fault state circuit for microprocessor address misalignment fault generation |
| US5859991A (en) * | 1995-06-07 | 1999-01-12 | Advanced Micro Devices, Inc. | Parallel and scalable method for identifying valid instructions and a superscalar microprocessor including an instruction scanning unit employing the method |
| US5742755A (en) * | 1996-02-20 | 1998-04-21 | Cyrix Corporation | Error-handling circuit and method for memory address alignment double fault |
| US5815702A (en) * | 1996-07-24 | 1998-09-29 | Kannan; Ravi | Method and software products for continued application execution after generation of fatal exceptions |
| US5915114A (en) | 1997-02-14 | 1999-06-22 | Hewlett-Packard Company | Dynamic trace driven object code optimizer |
| US5889978A (en) * | 1997-04-18 | 1999-03-30 | Intel Corporation | Emulation of interrupt control mechanism in a multiprocessor system |
| US6321337B1 (en) * | 1997-09-09 | 2001-11-20 | Sanctum Ltd. | Method and system for protecting operations of trusted internal networks |
| US5991856A (en) * | 1997-09-30 | 1999-11-23 | Network Associates, Inc. | System and method for computer operating system protection |
| US6516395B1 (en) * | 1997-11-20 | 2003-02-04 | Advanced Micro Devices, Inc. | System and method for controlling access to a privilege-partitioned address space with a fixed set of attributes |
| US6397242B1 (en) * | 1998-05-15 | 2002-05-28 | Vmware, Inc. | Virtualization system including a virtual machine monitor for a computer with a segmented architecture |
-
2001
- 2001-03-06 US US09/799,999 patent/US6694457B2/en not_active Expired - Fee Related
-
2002
- 2002-02-05 JP JP2002027962A patent/JP2002268914A/ja active Pending
- 2002-02-15 DE DE10206422A patent/DE10206422A1/de not_active Withdrawn
- 2002-03-01 GB GB0204895A patent/GB2375200A/en not_active Withdrawn
Also Published As
| Publication number | Publication date |
|---|---|
| US20020129299A1 (en) | 2002-09-12 |
| US6694457B2 (en) | 2004-02-17 |
| JP2002268914A (ja) | 2002-09-20 |
| GB0204895D0 (en) | 2002-04-17 |
| GB2375200A (en) | 2002-11-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE10206422A1 (de) | System und Verfahren zum Überwachen der Ausführung privilegierter Befehle | |
| DE69614515T2 (de) | Software-emulationssystem mit dynamischer übersetzung von emulierten befehlen zur erhöhung der verarbeitungsgeschwindigkeit | |
| DE3587622T2 (de) | Emulationseinrichtung in einem Datenverarbeitungssystem. | |
| DE69622832T2 (de) | Vorrichtung und verfahren für kooperative unterbrechungen in einer preemptiven prozessablauffolgeplanungsumgebung | |
| DE10397004B4 (de) | Verfahren und Vorrichtung zum Laden eines vertrauenswürdigen Betriebssystems | |
| DE69216020T2 (de) | Verbessertes fehlersuchsystem und -verfahren, besonders für die fehlersuche in einer multi-architekturumgebung | |
| DE69505717T2 (de) | Verfahren und Vorrichtung zur Feststellung und Durchführung von kreuzweisen Unterprogrammanrufen | |
| DE69609608T2 (de) | Vorrichtung und verfahren zur unterbrechungszuweisung | |
| DE3851049T2 (de) | Ein Sicherheitswegmechanismus für ein Betriebssystem. | |
| DE69424842T2 (de) | Durchführung von Programmen eines ersten Systems auf einem zweiten System | |
| DE3850181T2 (de) | Logische Betriebsmittelaufteilung für ein Datenverarbeitungssystem. | |
| DE69621493T2 (de) | Hardwareunterstützung zur schnellen Emulation von nicht-implementierten Befehlen | |
| DE69618221T2 (de) | Mechanismus zur wartung objektorientierter "methoden" der keine unterbrechung des computersystems erfordert | |
| DE68926706T2 (de) | Übersetzungsverfahren | |
| DE69811474T2 (de) | Rechnerarchitektur zur aufschiebung von exceptions statischer spekulativer befehle | |
| DE3855029T2 (de) | Supervisorverfahren für ein Rechnerbetriebssystem | |
| DE69623146T2 (de) | Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor | |
| DE3886756T2 (de) | Betriebsmittelzugriff für Multiprozessorrechnersystem. | |
| DE102006061939B4 (de) | Verfahren und Vorrichtung zum Zugriff auf eine speicherabgebildete Vorrichtung durch einen Gast | |
| DE112007001714T5 (de) | Virtualisieren von Leistungszählern | |
| DE4329336A1 (de) | Einrichtung und Verfahren zur Identifizierung eines Computer-Mikroprozessors | |
| DE4011745A1 (de) | Taskverfolgungseinrichtung | |
| DE69320741T2 (de) | Verfahren und Einrichtung zur Emulation der Umgebung eines Mikroprozessors | |
| DE69727177T2 (de) | Emulation von asynchronen Signalen mit Verzweigungsmechanismus | |
| WO1999031584A1 (de) | Verfahren zum umsetzen eines systemaufrufs |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| OP8 | Request for examination as to paragraph 44 patent law | ||
| 8130 | Withdrawal |