-
Herkömmliche
Rechensysteme erfassen und handhaben bzw. bewältigen eventuell nicht programmierte
Programmsprünge
bzw. Traps und/oder Unterbrechungen. Der Begriff „Unterbrechung" wird hierin auf
eine Weise verwendet, die sowohl Unterbrechungen als auch Traps
umfassen soll. Desgleichen wird der Begriff „Trap" hierin auf eine Weise verwendet, die
sowohl Unterbrechungen als auch Traps umfassen soll. Ein typisches
Rechensystem interagiert eventuell mit einem einzelnen Unterbrechungsvektorregister,
das die Adresse einer einzelnen Unterbrechungsvektortabelle speichert.
Das Unterbrechungsvektorregister und eine Unterbrechungsvektoraufzeichnung
können
ein Indexieren in die Unterbrechungsvektortabelle ermöglichen,
um eine Unterbrechungsbehandlungsroutine oder Traphandhabungsvorrichtung
zu lokalisieren. Beispielsweise kann die Unterbrechungsvektortabelle
eine Unterbrechungsbehandlungsroutine speichern und/oder kann einen
Eintrittspunkt für
eine Unterbrechungsbehandlungsroutine speichern.
-
Herkömmliche
Rechensysteme können
ein Betriebssystem betreiben, das mit einer Unterbrechungsbehandlung
interagiert. Üblicherweise
kann das Betriebssystem Zugang zu dem Unterbrechungsvektorregister
und/oder der Unterbrechungsvektortabelle haben. Somit kann ein Speicher,
der Traphandhabungsvorrichtungen, Unterbrechungsbehandlungsroutinen
usw. zugeordnet ist, entweder beabsichtigterweise oder unbeabsichtigterweise
für Prozesse
zugänglich
sein, für
die ein Zugriff im Idealfall verweigert würde.
-
Die
beiliegenden Zeichnungen, die in die Spezifikation integriert sind
und einen Bestandteil derselben bilden, veranschaulichen verschiedene beispielhafte
Systeme, Verfahren usw., die verschiedene beispielhafte Ausführungsbei spiele
von Aspekten der Erfindung veranschaulichen. Es wird einleuchten,
dass die veranschaulichten Elementgrenzen (z. B. Kästchen,
Gruppen von Kästchen
oder andere Formen) in den Figuren ein Beispiel der Grenzen darstellen.
Fachleute werden erkennen, dass ein Element als mehrere Elemente
entworfen sein kann oder dass mehrere Elemente als ein Element entworfen
sein können.
Ein Element, das als innere Komponente eines anderen Elements gezeigt
ist, kann als äußere Komponente
implementiert sein, und umgekehrt. Ferner sind Elemente eventuell
nicht maßstabsgetreu
gezeichnet.
-
1,
die den Stand der Technik darstellt, veranschaulicht ein beispielhaftes
Computersystem, das mit einem einzelnen Unterbrechungsvektorregister
und einer einzelnen Unterbrechungsvektortabelle konfiguriert ist.
-
1 veranschaulicht
ein beispielhaftes Computersystem, das mit einem Trapmodusregister, zwei
Adressregistern und zwei Unterbrechungsvektortabellen konfiguriert
ist.
-
2 veranschaulicht
ein weiteres beispielhaftes Computersystem, das mit einem Trapmodusregister,
zwei Adressregistern und zwei Unterbrechungsvektortabellen konfiguriert
ist.
-
3 veranschaulicht
ein weiteres beispielhaftes Computersystem, das mit einem Trapmodusregister
und zwei Adressregistern konfiguriert ist.
-
4 veranschaulicht
ein beispielhaftes Trapmodusregister.
-
5 veranschaulicht
ein beispielhaftes Computersystem, das mit einem Trapmodusregister, zwei
Unterbrechungsvektorregistern und einer Übersetzungsseitengriffspufferlogik
konfiguriert ist.
-
6 veranschaulicht
ein beispielhaftes Verfahren, das damit verbunden ist, ein Computersystem
zu konfigurieren, das mit einem Trapmodusregister, mehreren Adressregistern
und mehreren Unterbrechungsvektortabellen konfiguriert ist.
-
7 veranschaulicht
ein beispielhaftes Verfahren, das damit verbunden ist, Unterbrechungen
in einem Computersystem zu handhaben, das mit einem Trapmodusregister,
mehreren Adressregistern und mehreren Vektortabellen konfiguriert
ist.
-
8 veranschaulicht
eine beispielhafte Rechenumgebung, in der hierin veranschaulichte
beispielhafte Systeme und Verfahren arbeiten können.
-
9 veranschaulicht
eine beispielhafte Bilderzeugungsvorrichtung, bei der hierin veranschaulichte
beispielhafte Systeme und Verfahren arbeiten können.
-
10 veranschaulicht
eine Anwendungsprogrammierungsschnittstelle (API).
-
11 veranschaulicht
ein weiteres beispielhaftes Verfahren, das damit verbunden ist,
Unterbrechungen in einem Computersystem zu handhaben, das mit einem
Trapmodusregister, mehreren Adressregistern und mehreren Vektortabellen
konfiguriert ist.
-
Das
Folgende umfasst Definitionen ausgewählter Begriffe, die hierin
verwendet werden. Die Definitionen umfassen verschiedene Beispiele und/oder
Formen von Komponenten, die in den Gültigkeitsbereich eines Begriffs
fallen und die eventuell zur Implementierung verwendet werden. Die
Beispiele sollen nicht einschränkend
sein. Sowohl Singular als auch Pluralformen von Begriffen können in
den Definitionen enthalten sein.
-
Gemäß der Verwendung
in der vorliegenden Anmeldung bezieht sich „Unterbrechung" auf ein Signal,
das eine Logik informiert, dass ein Ereignis stattgefunden hat.
Eine Unterbrechung kann auftreten, wenn ein außergewöhnliches Ereignis einen automatischen
Transfer an eine Speziallogik zum Handhaben dieses Ereignisses bewirkt.
Wenn eine Unterbrechung erfolgt, kann ein erster Prozess ausgesetzt bzw.
angehalten werden, derart, dass der erste Prozess nach dem Handhaben
der Unterbrechung wieder aufgenommen werden kann. Unterbrechungen können von
Hardware, Software und anderen Quellen stammen. In manchen Kontexten
können
Unterbrechungen, deren Quelle eine Hardware-Vorrichtung ist, als
Hardware-Unterbrechungen oder einfach Unterbrechungen bezeichnet
sein. Desgleichen können
Unterbrechungen, deren Quelle Software ist, als Software-Unterbrechungen
und/oder Traps bezeichnet sein. In der vorliegenden Anmeldung werden „Unterbrechung" und „Trap" synonym verwendet,
um auf Hardware- und/oder Software-Unterbrechungen Bezug zu nehmen.
Desgleichen werden die Begriffe „Unterbrechungsbehandlungsroutine" und „Traphandhabungsvorrichtung" synonym verwendet.
-
Gemäß der Verwendung
in der vorliegenden Anmeldung bezieht sich der Begriff „Computerkomponente" auf eine computerbezogene
Entität,
entweder Hardware, Firmware, Software, eine Kombination derselben
oder auf eine in der Ausführung
befindliche Software. Beispielsweise kann eine Computerkomponente
ein an einem Prozessor laufender Prozess, ein Prozessor, ein Objekt,
ein Ausführelement,
ein Ausführungsteilprozess,
ein Programm und ein Computer sein, ist aber nicht auf diese beschränkt. Veranschaulichenderweise
können
sowohl eine Anwendung, die an einem Server läuft, als auch der Server Computerkomponenten
sein. Eine oder mehr Computerkomponenten können in einem Prozess und/oder
Ausführungsteilprozess
vorliegen, und eine Computerkomponente kann sich an einem Computer befinden
und/oder auf zwei oder mehr Computer verteilt sein.
-
„Computerlesbares
Medium" bezieht
sich gemäß seiner
Verwendung in dem vorliegenden Dokument auf ein Medium, das daran
beteiligt ist, direkt oder indirekt Signale, Befehle und/oder Daten
zu liefern. Ein computerlesbares Medium kann Formen wie z. B. nicht-flüchtige Medien,
flüchtige
Medien und Übertragungsmedien
umfassen, ist aber nicht auf diese beschränkt. Nicht-flüchtige Medien
können
beispielsweise optische oder Magnetplatten usw. umfassen. Flüchtige Medien
können
beispielsweise optische oder Magnetplatten, einen dynamischen Speicher
und dergleichen umfassen. Übertragungsmedien
können
Koaxialkabel, Kupferdraht, faseroptische Kabel und dergleichen umfassen. Übertragungsmedien
können
auch die Form von elektromagnetischer Strahlung aufweisen, wie diejenige,
die während Funkwellen-
und Infrarot-Datenkommunikationen
erzeugt wird, oder sie können
die Form von einer oder mehr Signalgruppen aufweisen. Übliche Formen
eines computerlesbaren Mediums umfassen eine Floppy-Disk, eine flexible
Platte, eine Festplatte, ein Magnetband oder andere magnetische
Medien, einen CD-ROM, andere optische Medien, Lochkarten, Papierband,
andere physische Medien mit Lochmustern, einen RAM, einen ROM, einen
EPROM, einen FLASH-EPROM oder einen anderen Speicherchip oder eine
andere Speicherkarte, einen Speicherstift, eine Trägerwelle/einen
Trägerpuls
und andere Medien, aus denen ein Computer, ein Prozessor oder eine andere
elektronische Vorrichtung auslesen kann, sind aber nicht auf diese
beschränkt.
Signale, die verwendet werden, um Befehle oder andere Software über ein
Netzwerk, wie das Internet, zu verbreiten, können als „computerlesbares Medium" angesehen werden.
-
„Datenspeicher" bezieht sich gemäß seiner Verwendung
in dem vorliegenden Dokument auf eine physische und/oder logische
Entität,
die Daten speichern kann. Ein Datenspeicher kann z. B. eine Datenbank,
eine Tabelle, eine Datei, eine Liste, eine Warteschlange, ein Haufen,
ein Speicher, ein Register usw. sein. Ein Datenspeicher kann sich
in einer logischen und/oder physischen Entität befinden und/oder kann auf
zwei oder mehr logische und/oder physische Entitäten verteilt sein.
-
„Logik" umfasst gemäß seiner
Verwendung in dem vorliegenden Dokument Hardware, Firmware, Software
und/oder Kombinationen von jeder derselben, um (eine) Funktion(en)
oder (eine) Aktion(en) durchzuführen
und/oder um eine Funktion oder Aktion von einer anderen Logik, einem
anderen Verfahren und/oder einem anderen System zu bewirken, ist aber
nicht auf diese beschränkt.
Auf der Basis einer gewünschten
Anwendung oder von Anforderungen kann eine Logik einen softwaregesteuerten
Mikroprozessor, eine diskrete Logik wie eine anwendungsspezifische
integrierte Schaltung (ASIC), eine programmierte Logikvorrichtung,
eine Speichervorrichtung, die Befehle enthält, oder dergleichen umfassen.
Eine Logik kann ein oder mehr Gatter, Kombinationen von Gattern
oder andere Schaltungskomponenten umfassen. Eine Logik kann vollständig als
Software verkörpert
sein. Dort, wo mehrere logische Logiken beschrieben sind, ist es
eventuell möglich,
die mehreren logischen Logiken in eine physische Logik zu integrieren.
Desgleichen kann es dort, wo eine einzelne logische Logik beschrieben
ist, möglich
sein, diese einzelne logische Logik auf mehrere physische Logiken
aufzuteilen.
-
Eine „wirksame
Verbindung" bzw.
eine Verbindung, durch die Entitäten „wirksam
verbunden" sind,
ist eine Verbindung, bei der Signale, physische Kommunikationen
und/oder logische Kommunikationen gesendet und/oder empfangen werden
können. Üblicherweise
umfasst eine wirksame bzw. funktionierende Verbindung eine physische
Schnittstelle, eine elektrische Schnittstelle und/oder eine Datenschnittstelle,
es ist jedoch zu beachten, dass eine wirksame Verbindung verschiedene
Kombinationen dieser und anderer Arten von Verbindungen umfassen
kann, die ausreichend sind, um eine wirksame Steuerung zu ermöglichen.
Beispielsweise können zwei
Entitäten
dadurch wirksam verbunden sein, dass sie in der Lage sind, sich
direkt oder durch eine oder mehr Zwischenentitäten wie z. B. einen Prozessor,
ein Betriebssystem, eine Logik, eine Software oder eine andere Entität Signale
zukommen zu lassen. Logische und/oder physische Kommunikationskanäle können verwendet
werden, um eine wirksame Verbindung zu erzeugen.
-
„Signal" umfasst gemäß seiner
Verwendung in dem vorliegenden Dokument ein oder mehr elektrische
oder optische Signale, analoge oder digitale Signale, Daten, einen
oder mehr Computer- oder Prozessorbefehle, Nachrichten, ein Bit
oder einen Bitstrom oder ein anderes Mittel, das empfangen, gesendet
und/oder erfasst werden kann und das ein Transferieren von Informationen
ermöglichen
kann, ist jedoch nicht hierauf beschränkt.
-
„Software" umfasst gemäß seiner
Verwendung in dem vorliegenden Dokument einen oder mehr Computer-
oder Prozessorbefehle, die gelesen, interpretiert, kompiliert und/oder
ausgeführt
werden können
und die einen Computer, einen Prozessor oder eine andere elektronische
Vorrichtung veranlassen, Funktionen, Aktionen durchzuführen und/oder sich
auf eine gewünschte
Weise zu verhalten, ist aber nicht hierauf beschränkt. Die
Befehle können
in verschiedenen Formen wie Routinen, Algorithmen, Modulen, Verfahren,
Teilprozessen und/oder Programmen verkörpert sein, die separate Anwendungen
umfassen oder von dynamisch und/oder statisch verknüpften Bibliotheken
codieren. Software kann ferner in einer Vielzahl ausführbarer
und/oder ladbarer Formen implementiert sein, einschließlich, aber nicht
ausschließlich,
eines alleinstehenden Programms, eines Funktionsrufs (lokal und/oder
fern), eines Servlets, eines Applets, in einem Speicher gespeicherter
Befehle, eines Teils eines Betriebssystems oder anderer Arten von
ausführbaren
Befehlen. Fachleute werden erkennen, dass die Form der Software
beispielsweise von Anforderungen einer gewünschten Anwendung, von der
Umgebung, in der sie läuft, und/oder
von den Wünschen
eines Entwerfers/Programmierers oder dergleichen abhängen kann.
Ferner wird man erkennen, dass computerlesbare und/oder -ausführbare Befehle
in einer Logik angeordnet sein können
und/oder auf zwei oder mehr kommunizierende, zusammenwirkende und/oder
parallel verarbeitete Logiken aufgeteilt sein können und somit auf serielle,
parallele, massiv-parallele und andere Weise geladen und/oder ausgeführt werden können.
-
Eine
geeignete Software zum Implementieren der verschiedenen Komponenten
der hierin beschriebenen beispielhaften Systeme und Verfahren kann
unter Verwendung von Programmierungssprachen und Tools wie z. B.
Java, Pascal, C#, C++, C, CGI, Perl, SQL, APIs, SDKs, Assembler-,
Firmware-, Mikrocode- und/oder anderer Sprachen und Tools erzeugt
werden. Software, ob ein ganzes System oder eine Komponente eines
Systems, kann als Herstellungsartikel verkörpert sein und als Bestandteil
eines computerlesbaren Mediums, wie es zuvor definiert wurde, unterhalten
und geliefert werden. Eine andere Form der Software kann Signale
umfassen, die einen Programmcode der Software über ein Netzwerk oder ein anderes
Kommunikationsmedium an einen Empfänger senden. Somit weist ein
computerlesbares Medium bei einem Beispiel eine Form von Signalen auf,
die die Software/Firmware darstellen, wie sie von einem Webserver
zu einem Benutzer heruntergeladen wird. Bei einem anderen Beispiel
weist das computerlesbare Medium eine Form der Software/Firmware
auf, wie sie auf dem Webserver unterhalten wird. Es können auch
andere Formen verwendet werden.
-
Manche
Abschnitte der folgenden ausführlichen
Beschreibungen sind anhand von Algorithmen und symbolischen Darstellungen
von Operationen an Datenbits in einem Speicher präsentiert.
Diese algorithmischen Beschreibungen und Darstellungen sind die
Mittel, die von Fachleuten verwendet werden, um Anderen die Essenz
ihrer Arbeit zu vermitteln. Einen Algorithmus sieht man hier und
allgemein als eine Sequenz von Operationen an, die ein Ergebnis
erzeugen. Die Operationen können
physische Manipulationen physischer Quantitäten umfassen. Üblicherweise,
jedoch nicht notwendigerweise, weisen die physischen Quantitäten die
Form elektrischer oder magnetischer Signale auf, die in der Lage
sind, gespeichert, transferiert, kombiniert, verglichen und auf andere
Weise in einer Logik und dergleichen manipuliert zu werden.
-
Es
hat sich manchmal als zweckmäßig erwiesen,
hauptsächlich
aus Gründen
der üblichen Verwendung,
diese Signale als Bits, Werte, Elemente, Symbole, Schriftzeichen,
Terme, Zahlen oder dergleichen zu bezeichnen. Man sollte jedoch
im Auge behalten, dass diese und ähnliche Begriffe den entsprechenden
physischen Quantitäten
zugeordnet werden sollen und lediglich zweckmäßige Bezeichnungen sind, die
auf diese Quantitäten
angewendet werden. Wenn nicht spezifisch etwas anderes angegeben
ist, wird einleuchten, dass in der gesamten Beschreibung Begriffe
wie Verarbeiten, Berechnen, Kalkulieren, Ermitteln, Anzeigen und
dergleichen auf Aktionen und Prozesse eines Computersystems, einer Logik,
eines Prozessors oder einer ähnlichen
elektronischen Vorrichtung bezogen sind, das bzw. der bzw. die Daten,
die als physische (elektronische) Quantitäten dargestellt sind, manipuliert
und transformiert.
-
1,
die den Stand der Technik darstellt, veranschaulicht ein herkömmliches
Computersystem 100, das mit einem einzelnen Unterbrechungsvektorregister 140 und
einer einzelnen Unterbrechungsvektortabelle 150 konfiguriert
ist. Üblicherweise
kann ein Prozess 110 oder eine Vorrichtung 120 eine
Unterbrechung bewirken, die durch eine Computerhardware, die dem
Computersystem 100 zugeordnet ist, erfasst werden kann
und in manchen Fällen
durch ein Betriebssystem 130 gehandhabt werden kann. Das Betriebssystem 130 kann
versuchen, die Unterbrechung zu handhaben. Eine Handhabung einer
Unterbrechung kann durch das Unterbrechungsvektorregister 140 und
die Unterbrechungsvektortabelle 150 ermöglicht werden, die Daten liefern,
die ein Lokalisieren einer Unterbrechungshandhabungsvorrichtung
ermöglichen.
Beispielsweise kann das Unterbrechungsvektorregister 140 die
Adresse der einzelnen Unterbrechungsvektortabelle 150 speichern oder
andere Daten umfassen, die ein Lokalisieren der Unterbrechungsvektortabelle 150 und/oder
von Einträgen
in der Unterbrechungsvektortabelle 150 ermöglichen.
Die Unterbrechungsvektortabelle 150 speichert üblicherweise
Programmeintrittspunkte für Unterbrechungsbehandlungsroutinen.
In manchen Fällen
speichert die Unterbrechungsvektortabelle 150 eventuell
einen Code (z. B. Unterbrechungsbehandlungsroutinen), und nicht
Eintrittsadressen für diese
Routinen.
-
Wenn
eine Computerhardware, der das Betriebssystem 130 zugeordnet
ist, eine durch den Prozess 110 und/oder die Vorrichtung 120 erzeugte
Unterbrechung erfasst, kann das Betriebssystem 130 auf
das Unterbrechungsvektorregister 140 zugreifen, um die
Adresse der Unterbrechungsvektortabelle 150 einzuholen.
Das Betriebssystem 130 kann dann unter Verwendung von Indexdaten
wie einer Unterbrechungsnummer in die Unterbrechungsvektortabelle 150 indexieren.
Die Indexdaten ermöglichen
ein Lokalisieren eines der Einträge
(z. B. 152 bis 159) in der Unterbrechungsvektortabelle 150. Üblicherweise entsprechen
die Indexdaten (z. B. Unterbrechungsnummer) genau einem Eintrag
in der Unterbrechungsvektortabelle 150.
-
Herkömmlicherweise
stehen dem Betriebssystem 130 zu jeglichem Zeitpunkt genau
ein Unterbrechungsvektorregister 140 und genau eine Unterbrechungsvektortabelle 150 zur
Verfügung.
Ferner sind das Unterbrechungsvektorregister 140 und die Unterbrechungsvektortabelle 150 üblicherweise
für das
Betriebssystem 130 zugänglich.
Somit kann das Betriebssystem 130 das Unterbrechungsvektorregister 140 und/oder
die Unterbrechungsvektortabelle 150 initialisieren, es
kann das Unterbrechungsvektorregister 140 und/oder die
Unterbrechungsvektortabelle 150 umprogrammieren usw.
-
2 veranschaulicht
ein beispielhaftes System, das ein Trapmodusregister 230,
zwei Adressregister (240, 250) und zwei Unterbrechungsvektortabellen
(241, 251) umfasst. Ein Prozess 200 und/oder
eine Vorrichtung 210 können
Unterbrechungen erzeugen, die durch eine Computerhardware, die einem
Betriebssystem 220 zugeordnet ist, erfasst werden können. Man
muss verstehen, dass die Vorrichtung 210 bei manchen Beispielen
eine tatsächliche
Vorrichtung oder eine virtuelle Vorrichtung sein kann. Statt genau
ein Adressregister und genau eine Unterbrechungsvektortabelle zur
Verfügung
zu haben, um eine Unterbrechungsbehandlungsroutine zu lokalisieren,
kann das Betriebssystem 220 und/oder ein Prozessor (nicht
veranschaulicht), der das Betriebssystem 220 betreibt,
mit einem Trapmodusregister 230 interagieren, das auf zwei
oder mehr Adressregister und somit auf zwei oder mehr Unterbrechungsvektortabellen
Zugriff hat.
-
Das
Trapmodusregister 230 kann wirksam mit dem Betriebssystem 220 verbunden
sein und kann dazu konfiguriert sein, auf das Auftreten einer Unterbrechung
hin die der Unterbrechung zugeordneten Trapdaten zu empfangen. Das
Trapmodusregister 230 kann ferner dazu konfiguriert sein,
ein Auswählen
zwischen einem ersten Adressregister 240 und einem zweiten
Adressregister 250 zu ermöglichen, um eine Adresse zu
liefern, die einer Unterbrechungsvektortabelle zugeordnet ist, die
beispielsweise die Adresse einer Unterbrechungsbehandlungsroutine
und dergleichen bereitstellt. Welches Adressregister durch das Trapmodusregister 230 ausgewählt wird,
kann zumindest teilweise auf den Trapdaten basieren. Bei einem Beispiel
können
die Trapdaten Informationen wie einen Identifizierer vom Unterbrechungstyp
und eine Adresse, die einer Vorrichtung (z. B. 210), die
dafür verantwortlich
ist, die Unterbrechung zu bewirken, einem Prozess (z. B. 200), der
dafür verantwortlich
ist, die Unterbrechung zu bewirken, und einer Speicherstelle, die
dafür verantwortlich
ist, die Unterbrechung zu bewirken, zugeordnet ist, umfassen.
-
Dem
Trapmodusregister 230 kann eine erste Unterbrechungsvektortabelle 241 zur
Verfügung
stehen, die dazu konfiguriert ist, ein Lokalisieren einer Unterbrechungsbehandlungsroutine,
die einem Handhaben von Unterbrechungen von einem ersten Satz von
Unterbrechungstypen zugeordnet ist, zu ermöglichen. Beispielsweise kann
die Unterbrechungsvektortabelle 241 Unterbrechungsbehandlungsroutinen
zum Handhaben von Unterbrechungen von physischen (z. B. nicht-virtuellen) Vorrichtungen
umfassen. Die erste Unterbrechungsvektortabelle 241 kann
einem ersten Adressregister 240 zugeordnet sein, das dazu
konfiguriert ist, dem Trapmodusregister 230 eine Adresse
zu liefern, die der ersten Unterbrechungsvektortabelle 241 zugeordnet
ist. Das erste Adressregister 240 kann ferner ein Lokalisieren
eines Eintrags in der ersten Unterbrechungsvektortabelle 241 ermöglichen,
indem es einen Eintrittspunkt in die erste Unterbrechungsvektortabelle 241 liefert. Bei
einem Beispiel kann das erste Adressregister 240 und/oder
die erste Unterbrechungsvektortabelle 241 für das Betriebssystem 220 zugänglich sein.
Deshalb kann das Betriebssystem 220 dafür verantwortlich sein, das
Adressregister 240 und/oder die Unterbrechungsvektortabelle 241 zu
initialisieren.
-
Im
Gegensatz zu herkömmlichen
Systemen kann dem Trapmodusregister 230 auch eine zweite Unterbrechungsvektortabelle 251 zur
Verfügung
stehen, die dazu konfiguriert ist, ein Lokalisieren einer Unterbrechungsbehandlungsroutine
zu ermöglichen, die
einem Handhaben einer Unterbrechung von einem zweiten Satz von Unterbrechungen
zugeordnet ist. Beispielsweise kann die Unterbrechungsvektortabelle 251 Unterbrechungsbehandlungsroutinen
zum Handhaben von Unterbrechungen von virtuellen (z. B. nicht-physischen)
Vorrichtungen umfassen. Die zweite Unterbrechungsvektortabelle 251 kann
auch einem zweiten Adressregister 250 zugeordnet sein, das
dazu konfiguriert ist, dem Trapmodusregister 230 eine Adresse
zu liefern, die der zweiten Unterbrechungsvektortabelle 251 zugeordnet
ist. Das zweite Adressregister 250 kann ferner ein Lokalisieren
eines Eintrags in der zweiten Unterbrechungsvektortabelle 251 ermöglichen.
Bei einem Beispiel sind das zweite Adressregister 250 und/oder
die zweite Unterbrechungsvektortabelle 251 eventuell nicht
für das
Betriebssystem 220 zugänglich.
-
Wenn
zwei Adressregister zur Verfügung stehen
und wenn somit zwei Unterbrechungsvektortabellen zur Verfügung stehen,
kann das Trapmodusregister 230 dazu konfiguriert sein,
Unterbrechungsbehandlungsroutinen für einen ersten Satz von Unterbrechungen
in einer ersten Unterbrechungsvektortabelle zu lokalisieren und
Unterbrechungsbehandlungsroutinen für einen zweiten Satz von Unterbrechungen
in einer zweiten Unterbrechungsvektortabelle zu lokalisieren.
-
Das
Betriebssystem 220 kann dazu konfiguriert sein, zusätzlich zu
herkömmlichen
Unterbrechungen einen „Nicht-Implementierte-Adresse"-Trap zu verarbeiten.
Wenn der Prozess 200 oder die Vorrichtung 210 versucht,
auf eine Speicheradresse zuzugreifen, die nicht implementiert ist,
kann ein Nicht-Implementierte-Adresse-Trap erzeugt werden. Somit
können
das Betriebssystem 220 und das Trapmodusregister 230 dazu
konfiguriert sein, eine Handhabungsvorrichtung für einen Nicht-Implementierte-Adresse-Trap
zu lokalisieren. Beispielsweise kann ein Nicht-Implementierte-Adresse-Trap ein
Angehöriger
des zweiten Satzes von Unterbrechungen sein und somit das Trapmodusregister 230 dahingehend steuern,
das zweite Adressregister 250 auszuwählen und somit eine Unterbrechungsbehandlungsroutine in
der zweiten Unterbrechungsvektortabelle 251 zu lokalisieren.
Bei einem Beispiel kann der Nicht-Implementierte-Adresse-Trap beispielsweise
durch einen Versuch seitens des Prozesses 200 oder der
Vorrichtung 210 erzeugt werden, auf eine Adresse zuzugreifen,
die einer Trap-fähigen
Adressbandbreite zugeordnet ist. Bei einem anderen Beispiel kann
der Nicht-Implementierte-Adresse-Trap durch eine Aktion erzeugt
werden, die einer virtuellen Vorrichtung zugeordnet ist. Somit kann
der Nicht-Implementierte-Adresse-Trap nützlich dafür sein, ein außerhalb des
Betriebssystems 220 liegendes Virtualisierungssystem zu
implementieren.
-
Die
Unterbrechungsvektortabellen können bei
verschiedenen Beispielen unterschiedliche Informationen speichern.
Beispielsweise kann die erste Unterbrechungsvektortabelle 241 Daten
speichern, die einen Satz von Unterbrechungsbehandlungsroutine-Eintrittspunkten
und einen Satz von Unterbrechungsbehandlungsroutinen umfassen, aber
nicht auf diese beschränkt
sind. Desgleichen kann die zweite Unterbrechungsvektortabelle 251 Daten
speichern, die einen Satz von Unterbrechungsbehandlungsroutine-Eintrittspunkten
und einen Satz von Unterbrechungsbehandlungsroutinen umfassen, aber nicht
auf diese beschränkt
sind. Bei einem Beispiel kann die erste Unterbrechungsvektortabelle 241 ein Lokalisieren
von Unterbrechungsbehandlungsroutinen ermöglichen, die für das Betriebssystem 220 zugänglich sind,
während
die zweite Unterbrechungsvektortabelle 251 ein Lokalisieren
von Unterbrechungsbehandlungsroutinen ermöglichen kann, die für das Betriebssystem 220 nicht
zugänglich
sind. Beispielsweise können
Unterbrechungsbehandlungsroutinen, die durch die Unterbrechungsvektortabelle 251 lokalisierbar
sind, ein Virtualisierungssystem betreffen, dessen sich das Betriebssystem 220 eventuell
nicht bewusst ist.
-
Obwohl
in 2 zwei Adressregister und zwei Unterbrechungsvektortabellen
veranschaulicht sind, wird man verstehen, dass das Trapmodusregister 230 auf
zwei oder mehr Adressregister und somit auf zwei oder mehr Unterbrechungsvektortabellen Zugriff
haben kann. Obwohl ferner beide Adressregister und somit beide Unterbrechungsvektortabellen als
eine Umwegsebene von dem Trapmodusregister 230 veranschaulicht
sind, können
sich andere Adressregister und/oder Unterbrechungsvektortabellen
an anderen Umwegsebenen von dem Trapmodusregister 230 befinden.
Somit können
die zusätzlichen
Tabellen ein Hinzufügen
einer Unterstützung
für eine
Eingangs-/Ausgangsvirtualisierung über eine Hierarchie von mehreren
unabhängigen
Virtualisierungsschichten ermög lichen.
Zwei oder mehr Tabellen und Register können auch bei anderen hierin
beschriebenen beispielhaften Systemen verwendet werden.
-
3 veranschaulicht
ein beispielhaftes computerbasiertes System, das ein Trapmodusregister 310,
zwei Adressregister (320, 330) und zwei Unterbrechungsvektortabellen
(321, 331) umfasst. Wie oben in Verbindung mit 2 beschrieben
wurde, kann das Trapmodusregister 310 für Unterbrechungen, die durch
das Betriebssystem 340 erfasst werden, ein Adressregister
auswählen,
von dem Daten wie die Adresse einer Unterbrechungsvektortabelle wiedergewonnen
werden können.
Somit kann das Trapmodusregister 310 ein Lokalisieren einer
Unterbrechungsbehandlungsroutine ermöglichen.
-
3 veranschaulicht
das Trapmodusregister 310, das Adressregister 330 und
die Unterbrechungsvektortabelle 331, die wirksam mit einer
Initialisierungslogik 300 verbunden sind. Die Initialisierungslogik 300 kann
dazu konfiguriert sein, das Trapmodusregister 310, die
Unterbrechungsvektortabelle 331 und das Adressregister 330 zu
initialisieren. Ferner kann die Initialisierungslogik 300 dazu
konfiguriert sein, ein Signal zum Steuern einer Betriebssystem-Initialisierungslogik
(nicht veranschaulicht), die wirksam mit dem Betriebssystem 340 verbunden
ist, zu liefern. Bei einem Beispiel kann die Initialisierungslogik 300 das
Signal der Betriebssystem-Initialisierungslogik liefern, nachdem
das Trapmodusregister 310, die Unterbrechungsvektortabelle 331 und das
Adressregister 330 initialisiert wurden. Das Signal kann
das Betriebssystem 340 veranlassen, den Betrieb zu beginnen
(z. B. hochzufahren bzw. zu booten). Somit können die in dem Trapmodusregister 310,
dem Adressregister 330 und/oder der Unterbrechungsvektortabelle 331 gespeicherten
Informationen festgelegt werden, bevor das Betriebssystem 340 zu
laufen beginnt. Dies kann ermöglichen,
die in dem Trapmodusregister 310, dem Adressregister 330 und/oder
der Unterbrechungsvektortabelle 331 ge speicherten Informationen
für das
Betriebssystem 340 unzugänglich zu halten.
-
Obwohl
die Initialisierungslogik 300 das Trapmodusregister 310,
das Adressregister 330 und die Unterbrechungsvektortabelle 331 initialisieren kann,
kann das Betriebssystem 340 die Unterbrechungsvektortabelle 321 und
das Adressregister 320 initialisieren. Somit können die
Unterbrechungsvektortabelle 321 und das Adressregister 320 für das Betriebssystem 340 zugänglich sein.
In der Lage zu sein, Unterbrechungsvektortabellen, die für das Betriebssystem 340 zugänglich und
nicht zugänglich sind,
zu trennen, ermöglicht,
ein externes Virtualisierungssystem bereitzustellen, um das Betriebssystem 340 und/oder
einen Prozessor, der ohne ein Virtualisierungssystem konfiguriert
ist, zu unterstützen.
Unterbrechungen, die virtuellen Vorrichtungen zugeordnet sind, können Handhabungsvorrichtungen
beinhalten, die dem Adressregister 330 und der Unterbrechungsvektortabelle 331,
die durch die Initialisierungslogik 300 initialisiert werden,
zugeordnet sind. Desgleichen können
Unterbrechungen, die physischen Vorrichtungen zugeordnet sind, Unterbrechungsbehandlungsroutinen
beinhalten, die dem Adressregister 320 und der Unterbrechungsvektortabelle 321,
die durch das Betriebssystem 340 initialisiert wurden und
eventuell für
dasselbe zugänglich sind,
zugeordnet sind.
-
Bei
einem Beispiel kann die Initialisierungslogik 300 dazu
konfiguriert sein, eine virtuelle Vorrichtung zu definieren und
dem Betriebssystem 340 Informationen bezüglich der
virtuellen Vorrichtung zu liefern. Somit können die Initialisierungslogik 300, das
Trapmodusregister 310, das Adressregister 330 und
die Unterbrechungsvektortabelle 331 ein Bereitstellen eines
externen Virtualisierungssystems für das Betriebssystem 340 und/oder
einen Prozessor, auf dem das Betriebssystem 340 läuft, ermöglichen. Die
Funktionen des externen Virtualisierungssystems können dem
Betriebssystem 340 zur Verfügung gestellt werden, obwohl
das Betriebssystem 340 eventuell nicht in der Lage ist,
direkt auf das externe Virtualisierungssystem zuzugreifen. Beispielsweise kann
die Initialisierungslogik 300 dazu konfiguriert sein, die
Unterbrechungsvektortabelle 331 mit Daten zu initialisieren,
die einen Satz von Virtueller-Vorrichtungstreiber-Eintrittspunkten
und einen Satz von Virtuelle-Vorrichtung-Treibern, wobei die Virtuelle-Vorrichtung-Treiber
einen Teil eines Virtualisierungssystems bilden, umfassen, aber
nicht auf diese beschränkt
sind. Bei einem Beispiel kann der Satz von Virtuelle-Vorrichtung-Treibern
in der Initialisierungslogik 300 vorliegen (z. B. gespeichert
sein). Die Initialisierungslogik 300 kann beispielsweise
in Firmware implementiert sein. Somit kann das Betriebssystem 340 in
der Lage sein, die Virtuelle-Vorrichtung-Treiber aufzurufen, jedoch
unfähig
sein, den Inhalt dieser Treiber zu verändern.
-
Bei
einer Zentralverarbeitungseinheit-Architektur (CPU-Architektur), bei
der externe Unterbrechungen vektoriell durch eine Unterbrechungsvektortabelle
verarbeitet werden, kann die durch das Trapmodusregister 310,
mehrere Adressregister und mehrere Unterbrechungsvektortabellen
gelieferte Virtualisierung verwendet werden, um externe Unterbrechungen
wie einen Virtuelle-Vorrichtung-Treiber vektoriell auf einen Virtualisierungscode
zu richten, indem das Trapmodusregister 310 dahingehend
erweitert wird, externe Unterbrechungen zu verarbeiten. Somit kann
ein Virtualisierungscode die Gelegenheit haben, eine Unterbrechung
zu prüfen
und zu bestimmen, ob sie von einer dem Virtualisierungssystem zugeordneten
Vorrichtung stammt. Wenn eine Unterbrechung dem Virtualisierungssystem
zugeordnet ist, dann handhabt sie eventuell der Virtualisierungscode
(z. B. der der Unterbrechungsvektortabelle 331 zugeordnete
Code). Andernfalls, wenn die Unterbrechung dem Betriebssystem 340 zugeordnet
ist, verarbeitet eventuell der der Unterbrechungsvektortabelle 321 zugeordnete
Code die Unterbrechung.
-
Obwohl
zwei Adressregister und zwei Unterbrechungsvektortabellen veranschaulicht
sind, muss man erkennen, dass das Trapmodusregister 310 wirksam
mit zwei oder mehr Adressregistern verbunden sein kann und somit
zu zwei oder mehr alternativen Unterbrechungsvektortabellen Zugang
haben kann.
-
4 veranschaulicht
ein beispielhaftes Computersystem, das mit einem Trapmodusregister 400,
einem ersten Adressregister 410 und einem zweiten Adressregister 420 konfiguriert
ist. Unterbrechungsvektortabellen, die den Adressregistern (410, 420)
zugeordnet sind, sind nicht veranschaulicht, jedoch wird einleuchten,
dass das Trapmodusregister 400 die Adressregister (410, 420) ähnlich dem
Trapmodusregister 230 (2) und 310 (3)
verwenden kann, um auf Unterbrechungsvektortabellen zuzugreifen.
Ferner veranschaulicht 4 einen Datenspeicher 430,
der wirksam mit dem Trapmodusregister 400 verbunden ist.
-
Der
Datenspeicher 430 kann dazu konfiguriert sein, Daten zu
speichern, die eine Trap-fähige Adressbandbreite
betreffen. Die Trap-fähige
Adressbandbreite kann steuern, wann ein Prozessor 440 und/oder
ein Betriebssystem (nicht veranschaulicht) einen „Nicht-Implementierte-Adresse"-Trap und/oder einen „Trap-fähige-Adressbandbreite"-Trap erfasst und/oder
erzeugt. Beispielsweise kann die Initialisierungslogik 460 dazu
konfiguriert sein, eine Trap-fähige
Adressbandbreite in dem Datenspeicher 430 zu speichern,
für die
Nicht-Implementierte-Adresse-Traps gewünscht sind. Dann kann ein Versuch, auf
eine Adresse in der Trap-fähigen
Adressbandbreite zuzugreifen, einen Nicht-Implementierte-Adresse-Trap bewirken.
-
Ungünstigerweise
kann ein Betriebssystem und/oder ein Anwendungscode, der an dem
Prozessor 440 läuft,
bei manchen Beispielen beabsichtigterweise und/oder unbeabsichtigterweise
eine durch das Trapmodusregister 400 und seine verwandten Computerkomponenten
und Datenspeicher gelieferte Virtualisierung durch ein Verändern des
Trapmodusregisters 400, der Adressregister (410, 420),
der Unterbrechungsbe handlungsroutinen usw. beeinträchtigen.
Somit veranschaulicht 4 außerdem eine Sicherer-Modus-Logik 450,
die wirksam mit dem Prozessor 440 verbunden ist. Die Trap-fähige Adressbandbreite, die
in dem Datenspeicher 430 gespeichert ist, kann mit der
Sicherer-Modus-Logik 450 interagieren, um zu ermöglichen,
dass eine Beeinträchtigung
der Virtualisierung verhindert wird.
-
Um
beispielsweise eine Implementierung eines externen Virtualisierungssystems
für den
Prozessor 440 zu ermöglichen,
kann eine Speicherstelle in der geschützten Adressbandbreite für die Initialisierungslogik 460 zugänglich und
für den
Prozessor 440 und/oder ein Betriebssystem, das auf dem
Prozessor 440 läuft,
unzugänglich
sein. Die Sicherer-Modus-Logik 450 kann
dazu konfiguriert sein, ein Steuern eines Zugriffs auf die geschützte Adressbandbreite
zu ermöglichen.
Beispielsweise können Speicherstellen,
die der geschützten
Adressbandbreite zugeordnet sind, für Unterbrechungsbehandlungsroutinen,
die durch das Adressregister 420, jedoch nicht durch das
Adressregister 410 erreichbar sind, zugänglich sein. Desgleichen können Speicherstellen
außerhalb
der geschützten
Adressbandbreite für
Unterbrechungsbehandlungsroutinen, die durch das Adressregister 410 erreichbar
sind, zugänglich sein.
Bei Nichtvorliegen der Sicherer-Modus-Logik 450 kann der
Prozessor 440 und/oder ein auf dem Prozessor 440 laufendes
Betriebssystem freiwillig zustimmen, auf bestimmte Adressen nicht
zuzugreifen. Jedoch greift vielleicht ein missbräuchlicher und/oder fehlerhafter
Code absichtlich und/oder unabsichtlich auf diese Adressen zu, wobei
ein in diesen Adressen implementiertes Virtualisierungssystem potentiell
beeinträchtigt
wird.
-
Somit
können
das Trapmodusregister 400, Adressregister (z. B. Adressregister 420)
und/oder Unterbrechungsvektortabellen (nicht veranschaulicht), die
den Adressregistern zugeordnet sind, Adressen aufweisen, die in
der in dem Datenspeicher 430 identifizierten geschützten Adressband breite
angeordnet sind. Die geschützte
Adressbandbreite kann durch die Initialisierungslogik 460 initialisiert werden,
bevor der Prozessor 440 den Betrieb beginnt. Zusätzlich und/oder
alternativ dazu können Daten,
die der geschützten
Adressbandbreite zugeordnet sind, durch die Initialisierungslogik 460 und/oder
durch einen Code, der in der geschützten Adressbandbreite abläuft, aktualisiert
werden. Die geschützte
Adressbandbreite kann beispielsweise eine einzelne zusammenhängende Adressbandbreite,
verschiedene Blöcke
von Adressen usw. sein.
-
Obwohl
ein Virtualisierungssystem beschrieben ist, wird einleuchten, dass
das Trapmodusregister 400, das mit mehreren Adressregistern
und mehreren Unterbrechungsvektortabellen zusammenarbeitet, auch
eine andere Funktionalität
liefern kann. Beispielsweise können
ein Fehlerbeseitigungssystem, ein Registrierungssystem und andere
Systeme vorgesehen sein. Zusätzlich
kann das Trapmodusregister 400, das mit mehreren Adressregistern
und mehreren Unterbrechungsvektortabellen zusammenarbeitet, einen
Vor-Booten-Firmware-„Verstecken"-Code von einem Prozessor
und/oder Betriebssystem ermöglichen.
Somit können
Konfigurationsroutinen, Sicherheitsfunktionen usw. implementiert und
auf selektive Weise durch einen Eintrittspunkt wie ein Nicht-Implementierte-Adresse-Trap
oder ein Trap-fähige-Adressbandbreite-Trap
aufgerufen werden.
-
Ein
Bereitstellen einer Trap-fähigen
Adressbandbreite ermöglicht
ferner ein Abmildern von Problemen, die mit einer Verwendung eines
Nicht-Implementierte-Adresse-Traps für virtuelle Vorrichtungen verbunden
sind. Beispielsweise können
virtuelle Vorrichtungen dadurch, dass virtuelle Vorrichtungen auf Adressen
in einer Trap-fähigen
Adressbandbreite abgebildet werden, eine andere Art von Trap als
einen Nicht-Implementierte-Adresse-Trap erzeugen. Wenn also ein
tatsächlicher
Nicht-Implementierte-Adresse-Trap auftritt, ist eine Verarbeitung,
um zu ermitteln, ob der Nicht-Implementierte-Adresse-Trap einer virtuellen
Vorrich tung zugeordnet ist oder in der Tat einer nichtimplementierten
Adresse zugeordnet ist, eventuell nicht erforderlich.
-
5 veranschaulicht
ein beispielhaftes Trapmodusregister 500. Bei einem Beispiel
kann das Trapmodusregister 500 einem Feld 510 und/oder
einem Datenspeicher zugeordnet sein, das bzw. der Informationen
darüber
speichert, ob eine alternative Unterbrechungsvektortabelle verfügbar ist,
um Unterbrechungsbehandlungsroutinen zu lokalisieren, und dergleichen.
Veranschaulichenderweise sei Folgendes gesagt: Wenn das Feld 510 angibt,
dass keine alternativen Tabellen verfügbar sind, dann kann das Trapmodusregister 500 dazu
konfiguriert sein, Unterbrechungshandhabungsvorrichtungen in einer voreingestellten
Unterbrechungsvektortabelle, die über ein voreingestelltes Adressregister
zugänglich ist,
zu lokalisieren, ohne alternative Adressregister in Betracht zu
ziehen. Wenn jedoch das Feld 510 angibt, dass eine alternative
Tabelle verfügbar
ist, dann kann das Trapmodusregister 500 dazu konfiguriert sein,
zu versuchen, alternative Unterbrechungshandhabungsvorrichtungen
in alternativen Unterbrechungsvektortabellen, die für alternative
Adressregister zugänglich
sind, zu lokalisieren. Das Feld 510 ermöglicht ein selektives Ein-/Ausschalten
einer Verarbeitung einer alternativen Vektortabelle und kann somit
beispielsweise ein selektives Ein-/Ausschalten eines Virtualisierungssystems
auf der Basis alternativer Vektortabellen ermöglichen. Bei einem Beispiel kann
eine Initialisierungslogik (z. B. Logik 460, 4) das
Feld 510 manipulieren (z. B. einstellen/löschen).
-
Das
Trapmodusregister 500 kann verschiedene Felder umfassen.
Bei einem Beispiel kann das Trapmodusregister 500 ein Feld 520 umfassen,
das dazu konfiguriert ist, Daten vom Traptyp zu speichern. Beispielsweise
können
Traps, die durch ein System erfasst werden können, einen eindeutigen Code
aufweisen, der den Traptyp identifiziert. Bei einem Beispiel kann
der eindeutige Code ein Indexieren in eine Unterbrechungsvektortabelle
ermöglichen.
Beispielsweise kann ein Traptyp eine Ganzzahl sein, die, wenn sie
mit einer Eintrittsgröße für eine Unterbrechungsvektortabelle
multipliziert wird, ein Bestimmen einer Adresse für eine Unterbrechungsbehandlungsroutine
in einer Unterbrechungsvektortabelle ermöglicht. Obwohl eine Ganzzahl
und eine Eintrittsgröße beschrieben
sind, versteht es sich, dass auch andere Indexierungs- und Handhabungsvorrichtungslokalisierungstechniken verwendet
werden können.
-
Das
Trapmodusregister 500 kann auch ein Feld 530 umfassen,
das dazu konfiguriert ist, Informationen wie eine Unterbrechungsvektortabellenadresse,
die von einem Adressregister wiedergewonnen wird, zu speichern.
Das Adressregister, von dem die Adresse wiedergewonnen wird, kann,
wie oben beschrieben wurde, durch in dem Feld 520 vom Traptyp
gespeicherte Daten bestimmt werden. Das einem Traptyp zugeordnete
Adressregister kann beispielsweise in Hardware, Firmware usw. festgelegt sein.
Bei einem weiteren Beispiel kann das einem Traptyp zugeordnete Adressregister
dynamisch sein und kann sich verändern,
wenn verschiedene Bedingungen eintreten.
-
Das
Trapmodusregister 500 kann auch ein Feld 540 umfassen,
das dazu konfiguriert ist, Informationen in Bezug darauf zu speichern,
ob ein Unterbrechungstyp einen dem Trapmodusregister 500 zugeordneten
Prozessor steuert, um in einen sicheren Modus einzutreten. Wie oben
beschrieben wurde, kann eine Sicherer-Modus-Logik oder eine andere Logik
dazu konfiguriert sein, manche Speicherstellen für ein Betriebssystem und/oder
einen Anwendungscode unzugänglich
zu machen. Diese Speicherstellen sind eventuell lediglich für einen
Prozessor zugänglich,
wenn eine Logik wie eine Sicherer-Modus-Logik erfasst, dass der
Prozessor, das Betriebssystem, der Anwendungscode usw. in einem
sicheren Modus arbeiten. Ein Entwerfer kann wünschen, dass bestimmte Unterbrechungen
(z. B. Nicht-Implementierte-Adresse-Traps) bewirken, dass in den
sicheren Modus eingetreten wird.
-
Somit
kann das Feld „Übergang
zu sicherem Modus" 540 Informationen
speichern, die eine Sicherer-Modus-Logik oder eine andere Logik
verwenden kann, um einen Übergang
zu einem sicheren Modus zu bewirken. Obwohl der Übergang zu dem Sichermodusfeld 540 als
einzelnes Bitfeld veranschaulicht ist, muss man verstehen, dass
Felder anderer Größen und Typen verwendet werden können.
-
Das
Trapmodusregister 500 kann auch ein Feld 550 umfassen,
das dazu konfiguriert ist, Informationen in Bezug darauf zu speichern,
ob ein Unterbrechungstyp aktiviert ist. Zu bestimmten Zeiten wünscht ein
System eventuell nicht, unterschiedliche Arten von Unterbrechungen
zu handhaben, oder ist eventuell nicht dazu in der Lage. Statt einen
Sprung zu einer Unterbrechungsbehandlungsroutine für einen
Unterbrechungstyp zu ermöglichen,
den das System nicht handhaben möchte,
können
in einem Trapdeaktivierungsbit 550 Informationen gespeichert sein,
die es ermöglichen,
ein System dahingehend zu steuern, die Unterbrechung nicht zu nehmen.
Das Feld 550 kann ferner ein Steuern dessen ermöglichen,
ob ein Unterbrechungstyp deaktiviert wird, wenn sich ein Prozessor
in einem sicheren Modus befindet. Dies kann ein Verhindern beispielsweise
einer Endlosschleife an einem Nicht-Implementierte-Adresse-Trap
ermöglichen.
Obwohl das Trapdeaktivierungsfeld 550 als einzelnes Bitfeld
veranschaulicht ist, muss man wiederum erkennen, dass Felder anderer
Größen und
Typen verwendet werden können.
-
Das
Trapmodusregister 500 kann auch ein Feld 560 umfassen,
um Informationen bezüglich
dessen zu speichern, ob ein Unterbrechungstyp in einem sicheren
Modus gehandhabt werden soll. Obwohl das Feld 540 Informationen
bezüglich
dessen speichern mag, ob ein Trap einen Übergang zu einem sicheren Modus
bewirkt, mag das Feld 560 Informationen bezüglich dessen
speichern, ob eine bestimmte Unterbrechung lediglich in einem sicheren
Modus gehandhabt werden kann, ohne Informationen darüber zu enthalten,
ob diese Unterbrechung den Übergang bewirken
kann. Somit können
die Felder 560 und 540 unterschiedliche Informationen
bezüglich
eines Zustands speichern, der gewünscht ist, um eine Unterbrechung
und einen potentiellen Zustandsübergang, der
durch eine Unterbrechung bewirkt wird, zu verarbeiten. In dem Feld 560 gespeicherte
Informationen können
beispielsweise festlegen, ob eine Unterbrechung in einem sicheren
Modus genommen wird, um zu ermöglichen,
dass ein in einer geschützten Adressbandbreite
vorliegender sicherer Code ohne eine unendliche Schleife an einem
Adressbandbreitetrap ausgeführt
wird. Obwohl das Feld „Nimm
Trap in sicherem Modus" 550
als einzelnes Bitfeld veranschaulicht ist, muss man verstehen, dass
Felder anderer Größen und
Typen verwendet werden können. Zusätzlich dazu
muss man verstehen, dass, obwohl fünf Felder in dem Trapmodusregister 500 veranschaulicht
sind, eine größere und/oder
kleinere Anzahl von Feldern und dass verschiedene Kombinationen
der veranschaulichten Felder verwendet werden können.
-
6 veranschaulicht
ein computerbasiertes System, das mit einem Trapmodusregister 600 und
mehreren Unterbrechungsvektorregistern (610, 620)
konfiguriert ist, die dazu konfiguriert sein können, Adressen zu speichern,
die ein Lokalisieren einer Unterbrechungsbehandlungsroutine und
dergleichen ermöglichen. 6 veranschaulicht,
dass das Trapmodusregister 600 mit einem Betriebssystem 630 interagieren
kann, das wiederum mit einer physischen Vorrichtung 670 und
einer virtuellen Vorrichtung 680 interagiert. Die virtuelle
Vorrichtung 680 kann wiederum mit einer physischen Vorrichtung 682 interagieren
oder in derselben implementiert sein. Die physischen Vorrichtungen 670 und 682 und/oder die
virtuelle Vorrichtung 680 können Speicherreferenzen auf
einen Speicher 640 machen. Der Speicher 640 kann
Physischer-Speicher- und Virtueller-Speicher-Zugriffe berücksichtigen.
Wenn ein System einen virtuellen Speicher verwendet, kann ein Übersetzungsseitengriffspuffer 650 verwendet
werden, um Übersetzungen
oder Abbildungen von physischen zu virtuellen und von virtuellen
zu physischen Adressen zu ermöglichen.
Wenn eine Adressübersetzung
oder -abbildung erfolgt, kann das Betriebssystem 630 und/oder
eine Übersetzungsseitengriffspufferlogik 660 einen
Eintrag (z. B. eine Aufzeichnung) in dem Übersetzungsseitengriffspuffer 650 manipulieren
(z. B. erzeugen, zerstören,
verändern).
-
Somit
kann ein System, das mit einem Trapmodusregister 600 konfiguriert
ist, eine Übersetzungsseitengriffspufferlogik 660 umfassen,
die dazu konfiguriert ist, auf selektive Weise ein Adressbandbreitenattribut
in einem Eintrag in dem Übersetzungsseitengriffspuffer 650 einzustellen.
Das Adressbandbreitenattribut kann beispielsweise ein Bestimmen
dessen ermöglichen,
ob ein Speicherzugriff, der bewirkte, dass die Physische-/Virtuelle-Adresse-Abbildung
erfolgt oder dass auf dieselbe Bezug genommen wird, eine Unterbrechung
wie einen Nicht-Implementierte-Adresse-Trap bewirkt. Somit kann
die Übersetzungsseitengriffspufferlogik 660 bei
einem Beispiel dazu konfiguriert sein, auf selektive Weise einen
Virtualisierungsprozess aufzurufen, wenn ein Nicht-Implementierte-Adressbandbreite-Trap
auftritt. Veranschaulichungshalber kann eine Unterbrechung auftreten,
wenn ein Code, der außerhalb
eines sicheren Modus läuft,
versucht, einen Eintrag in den Übersetzungsseitengriffspuffer 650 einzufügen. Eine
Unterbrechungsbehandlungsroutine kann die dem Eintrag zugeordnete
echte Adresse untersuchen. Wenn die echte Adresse in einer Trap-fähigen Adressbandbreite
liegt, kann die Unterbrechungsbehandlungsroutine ein Adressbandbreitenattribut
in dem Eintrag setzen, den Eintrag in den Übersetzungsseitengriffspuffer 650 einfügen und
zurückkehren.
Somit kann eine Echt-zu-Virtuell-Abbildung mit einem Flag als in
einer Trap-fähigen
Adressbandbreite befindlich markiert werden. Dann, wenn ein Zugriff
auf eine virtuelle Adresse versucht wird, deren Eintrag in den Übersetzungsseitengriffspuffer 650 ein
Flag aufweist, das das Adressbandbreitenattribut bezeichnet, kann
ein Adressbandbreitentrap genommen und ein Virtualisierungscode
aufgerufen werden. Da Einträge
in den Übersetzungsseitengriffspuffer 650 bereits
Attribute aufweisen, die geprüft
werden müssen und
die Unterbrechungen bewirken, können
Verschlechterungen der Leistungsfähigkeit, die mit einer Hinzufügung eines
externen Virtualisierungssystems auf der Basis eines Trapmodusregisters 600 zusammenhängen, abgemildert
werden.
-
Beispielhafte
Verfahren werden unter Bezugnahme auf die Flussdiagramme der 7 und 8 besser
verständlich.
Obwohl die veranschaulichten Methodologien für die Zwecke der Vereinfachung
der Erläuterung
als Serie von Blöcken
gezeigt und beschrieben sind, muss man erkennen, dass die Methodologien
nicht durch die Reihenfolge der Blöcke eingeschränkt sind,
da manche Blöcke
in einer Reihenfolge, die sich von der gezeigten und beschriebenen unterscheidet,
und/oder gleichzeitig mit anderen Blöcken auftreten können. Ferner
können
weniger als alle veranschaulichen Blöcke erforderlich sein, um eine
beispielhafte Methodologie zu implementieren. Ferner können zusätzliche
und/oder alternative Methodologien zusätzliche, nicht veranschaulichte
Blöcke
verwenden.
-
In
den Flussdiagrammen bezeichnen Blöcke „Verarbeitungsblöcke", die mit Logik implementiert werden
können.
Die Verarbeitungsblöcke
können
einen Verfahrensschritt und/oder ein Vorrichtungselement zum Durchführen des
Verfahrensschritts darstellen. Ein Flussdiagramm zeigt keine Syntax
für eine(n)
bestimmte(n) Programmierungssprache, Methodologie oder Stil (z.
B. verfahrensorientiert, objektorientiert). Vielmehr veranschaulicht
ein Flussdiagramm funktionelle Informationen, die Fachleute verwenden
können,
um eine Logik zu entwickeln, um die veranschaulichte Verarbeitung
durchzuführen.
Man wird erkennen, dass Programmelemente wie temporäre Variablen,
Routineschleifen usw. bei manchen Beispielen nicht gezeigt sind.
Ferner wird man erkennen, dass elektronische und Software-Anwendungen dynamische
und flexible Prozesse beinhalten können, so dass die veranschaulichten
Blöcke
in anderen Sequenzen durchgeführt
werden können,
die sich von den gezeigten unterscheiden, und/oder dass Blöcke zu mehreren
Komponenten kombiniert oder in mehrere Komponenten getrennt werden
können.
Man wird erkennen, dass die Prozesse unter Verwendung verschiedener
Programmierungslösungsansätze implementiert
werden können,
z. B. unter Verwendung von Maschinensprache-, verfahrensorientierten,
objektorientierten und/oder Künstliche-Intelligenz-Techniken.
-
7 veranschaulicht
ein beispielhaftes Verfahren 700, das einem Konfigurieren
eines Computersystems zugeordnet ist, das mit einem Trapmodusregister,
mehreren Adressregistern und mehreren Unterbrechungsvektortabellen
konfiguriert ist. Bei einem Beispiel kann das Verfahren 700 von
einer Firmware (z. B. Initialisierungslogik) vor einem Betriebssystem
betrieben werden, das mit den konfigurierten Trapregister-Bootvorgängen interagiert.
Somit kann das Verfahren 700 bei einem Beispiel ein Erzeugen eines
Signals umfassen, das eine Bootlogik dahingehend steuert, einen
Betriebssystem-Bootvorgang einzuleiten.
-
Das
Verfahren 700 kann bei 710 ein dahingehendes Konfigurieren
eines Trapmodusregisters umfassen, ein Adressregister auszuwählen, um
die Adresse einer Unterbrechungsvektortabelle zumindest teilweise
auf der Basis eines Traptyps zu liefern. Beispielsweise kann ein
Trapmodusregister wirksam mit einem Satz von Adressregistern verbunden
sein. Auf der Basis eines Traptyps kann das Trapmodusregister bestimmen,
von welchem des Satzes von Adressregistern eine Unterbrechungsvektortabellenadresse
wiedergewonnen werden soll. Ein Konfigurieren eines Trapmodusregisters
kann beispielsweise ein Beziehen eines Traptyps auf ein Adressregister umfassen.
Zusätzlich
und/oder alternativ dazu kann ein Konfigurieren eines Trapmodusregisters
ein selektives Beziehen eines Sicherer-Modus-Übergang-Indikators mit einem
Traptyp umfassen. Desgleichen kann ein Konfigurieren eines Trapmodusregisters
ein selektives Beziehen eines deaktivierten Indikators mit einem
Traptyp und/oder ein selektives Beziehen eines Arbeite-in-Sicherem-Modus-Indikators
mit einem Traptyp umfassen.
-
Das
Verfahren 700 kann bei 720 ferner ein dahingehendes
Konfigurieren einer Unterbrechungsvektortabelle umfassen, ein Lokalisieren
einer Unterbrechungsbehandlungsroutine zu ermöglichen. Bei einem Beispiel
kann die Unterbrechungsbehandlungsroutine dazu konfiguriert sein,
Unterbrechungen zu handhaben, die einer Vorrichtungsvirtualisierung zugeordnet
sind. Obwohl Unterbrechungen beschrieben sind, muss man verstehen,
dass auch Traps gehandhabt werden können. Ein Konfigurieren einer Unterbrechungsvektortabelle
kann beispielsweise ein Festlegen eines Satzes von Unterbrechungsbehandlungsroutine-Eintrittspunkten
in einer Unterbrechungsvektortabelle, ein Festlegen eines Satzes
von Unterbrechungsbehandlungsroutinen in einer Unterbrechungsvektortabelle
usw. umfassen.
-
Bei 730 kann
das Verfahren 700 ferner ein dahingehendes Konfigurieren
eines Adressregisters umfassen, ein Lokalisieren einer Unterbrechungsbehandlungsroutine,
die einer Unterbrechungsvektortabelle zugeordnet ist, zu ermöglichen.
Ein Konfigurieren eines Adressregisters kann ein Speichern, in dem Adressregister,
einer Adresse umfassen, die einer Unterbrechungsvektortabelle zugeordnet
ist und die die Unterbrechungsvektortabelle auf das Adressregister
bezieht.
-
Bei 740 kann
das Verfahren 700 ferner ein Signalisieren, gegenüber einem
Betriebssystem, umfassen, dass die Trapmodusregisterkonfiguration,
die Unterbrechungsvektortabellenkonfiguration und die Adressregisterkonfiguration
abgeschlossen ist. Dieses Signal kann es einem Betriebssystem ermöglichen,
beispielsweise seine Bootvorgänge
zu beginnen. Ein Verzögern
der Signalisierung bis 740 kann z. B. ein Trennen eines
Virtualisierungssystemcodes von einem Betriebssystemcode ermöglichen.
-
Obwohl 7 verschiedene
Aktionen veranschaulicht, die in Serie auftreten, muss man erkennen,
dass verschiedene in 7 veranschaulichte Aktionen
im Wesentlichen parallel erfolgen könnten. Veranschaulichungshalber
könnte
ein erster Prozess ein Trapmodusregister konfigurieren, ein zweiter
Prozess könnte
eine Unterbrechungsvektortabelle und ein Adressregister konfigurieren,
und ein dritter Prozess könnte
einem Betriebssystem signalisieren. Obwohl drei Prozesse beschrieben
sind, muss man verstehen, dass eine größere und/oder kleinere Anzahl von
Prozessen verwendet werden könnte
und dass unaufwendige Prozesse, regelmäßige Prozesse, Teilprozesse
und andere Lösungsansätze verwendet werden
könnten.
Man muss verstehen, dass andere beispielhafte Verfahren in manchen
Fällen
auch Aktionen umfassen können,
die im Wesentlichen parallel erfolgen.
-
Bei
einem Beispiel können
zusätzliche
Konfigurationen erfolgen. Beispielsweise kann eine virtuelle Vorrichtung
bzw, können
virtuelle Vorrichtungen so definiert sein, dass ihre Adressen in
einer Bandbreite von nicht-implementierten Adressen und/oder in
einer Trap-fähigen
Adressbandbreite liegen. Somit kann eine Trap-fähige Adressbandbreite konfiguriert sein.
Ferner kann ein Virtuelle-Vorrichtung-Treiber-Eintrittspunkt für die virtuelle
Vorrichtung in die Unterbrechungsvektortabelle konfiguriert sein.
-
8 veranschaulicht
ein Verfahren 800, das einem Handhaben von Unterbrechungen
in einem Computersystem zugeordnet ist, das mit einem Trapmodusregister,
mehreren Adressregistern und mehreren Vektortabellen konfiguriert
ist. 12 veranschaulicht ein weiteres Beispiel des Verfahrens 800,
das zusätzliche
Aktionen umfasst. Bei 810 können Konfigurationen und Initialisierungen
wie die bei Verfahren 700 (7) durchgeführten durchgeführt werden.
Beispielsweise können
ein Trapmodusregister, Adressregister, Unterbrechungsvektortabellen usw,
initialisiert werden. Bei 820 kann an ein Betriebssystem
ein Signal gesandt werden, dass die Konfigurationen von 810 abgeschlossen
sind. Das Signal kann bewirken, dass das Betriebssystem hochgefahren
bzw. gebootet wird. Der Prozess des Hochfahrens des Betriebssystems
kann beispielsweise ein Initialisieren eines Adressre gisters, einer Unterbrechungsvektortabelle
usw. umfassen. Dadurch, dass dem Betriebssystem das Signal geliefert wird,
nachdem die Konfigurationen abgeschlossen sind, kann ein Code (z.
B. Virtualisierungscode), der den Konfigurationen und Initialisierungen
von 810 zugeordnet ist, von einem Betriebssystem separat
gehalten und in manchen Fällen
vor demselben geschützt
werden. Dies kann ermöglichen,
ein Virtualisierungssystem für
ein Betriebssystem und/oder einen Prozessor zu liefern, das bzw.
der ursprünglich nicht
dazu entworfen wurde, ein Virtualisierungssystem aufzuweisen. Desgleichen
kann dies ermöglichen,
Systeme, wie z. B. ein Fehlerbeseitigungssystem, ein Registrierungssystem
usw., zu liefern, die dem Betriebssystem und/oder Prozessor bisher eventuell
nicht zur Verfügung
standen.
-
Das
Verfahren 800 kann bei 830 auch ein Erfassen eines
Traps umfassen. Der Trap kann beispielsweise eine erste Art von
Unterbrechung sein, die durch Unterbrechungsbehandlungsroutinen,
die einem ersten Adressregister und einer ersten Unterbrechungsvektortabelle
zugeordnet sind, gehandhabt wird. Der Trap kann beispielsweise auch
eine zweite Art Unterbrechung sein, die durch Unterbrechungsbehandlungsroutinen
gehandhabt wird, die einem eines Satzes von zweiten Adressregistern
und einem eines Satzes von zweiten Unterbrechungsvektortabellen
zugeordnet sind. Somit kann bei 840 ein Adressregister
dazu ausgewählt
werden, eine Adresse (z. B. Unterbrechungsvektortabellenadresse)
zu liefern. Welches Adressregister ausgewählt wird, kann zumindest teilweise
von dem bei 830 erfassten Traptyp abhängen. Nachdem das Adressregister
gewählt
wurde, kann eine Unterbrechungsbehandlungsroutine lokalisiert werden,
die zumindest teilweise auf der ausgewählten Adresse und dem Unterbrechungstyp
beruht.
-
Bei
einem Beispiel kann die Verarbeitung bei 860 fortgesetzt
werden, wenn die Unterbrechung durch ein Virtualisierungssystem
gehandhabt werden kann. Bei 860 kann eine weitere Runde
oder können weitere
Runden einer Adressregis terauswahl erfolgen. Bei manchen Beispielen
kann das bereits ausgewählte
Adressregister das ausgewählte
Adressregister bleiben. Bei anderen Beispielen, bei denen mehrere
Virtualisierungsebenen vorliegen, kann auf eine Serie von Adressregistern
zugegriffen werden, bevor die Adresse einer Unterbrechungsvektortabelle
lokalisiert wird. Bei einem Beispiel, wenn die Unterbrechung ein
Nicht-Implementierte-Adresse-Trap
ist, kann das Verfahren 800 bei 860 ein Auswählen eines Adressregisters
umfassen, das für
das Betriebssystem unzugänglich
ist, um eine Unterbrechungsvektortabellenadresse zu liefern. Zusätzlich kann
die Unterbrechungsvektortabelle für das Betriebssystem unzugänglich sein.
Die Unterbrechungsvektortabelle kann ein Lokalisieren, bei 870,
einer durch eine Virtualisierungsfirmware gelieferte Unterbrechungsbehandlungsroutine
ermöglichen.
Die Firmware und/oder die Unterbrechungsbehandlungsroutine können für das Betriebssystem
unzugänglich
sein. Bei 880 kann ein Virtuelle-Vorrichtung-Treiber die Unterbrechung
für das
Virtualisierungssystem handhaben. Allgemeiner gesagt kann, nachdem
bei 860 ein Adressregister ausgewählt wurde, eine Unterbrechungsbehandlungsroutine
bei 870 lokalisiert werden und anschließend die Unterbrechung bei 880 handhaben.
Bei 890 kann eine Bestimmung bezüglich dessen durchgeführt werden,
ob ein weiterer Trap verarbeitet werden soll. Wenn die Bestimmung Ja
lautet, kann die Verarbeitung zu 830 zurückkehren,
andernfalls kann die Trapverarbeitung enden.
-
Wie
bei 12 veranschaulicht ist, kann bei einem Beispiel,
wenn die Unterbrechung durch ein Betriebssystem gehandhabt werden
kann, die Verarbeitung bei 850 fortgesetzt werden, wo eine
Steuerung an ein Betriebssystem und/oder eine Unterbrechungsbehandlungsroutine übertragen
wird, die für das
Betriebssystem zugänglich
ist und/oder durch dasselbe verwaltet wird. Bei dem Beispiel kann
das Verfahren 800 bei 810 auch ein Konfigurieren
einer virtuellen Vorrichtung und eine Erstellung einer Beschreibung
der virtuellen Vorrichtung umfassen, die dem Betriebssystem zur Verfügung steht,
dem bei 820 signalisiert wird. Dann, bei 830,
wenn ein der virtuellen Vorrichtung zugeordneter Trap erfasst wird, kann
das Verfahren 800 bei 840 ein Auswählen eines Adressregisters
umfassen, das einem Verarbeiten einer Unterbrechung für die virtuelle
Vorrichtung zugeordnet ist. Wie oben beschrieben wurde, kann bei
Virtualisierungssystemen mit mehreren Umwegs- und/oder Virtualisierungsebenen
auf eine Serie von Adressregistern zugegriffen werden. Schließlich wird bei 860 ein
Adressregister mit einer Adresse einer Unterbrechungsbehandlungsroutine
lokalisiert. Dann kann bei 870 eine durch eine Virtualisierungsfirmware
gelieferte Unterbrechungsbehandlungsroutine lokalisiert werden,
wo die Unterbrechungsbehandlungsroutine dazu konfiguriert ist, Unterbrechungen für die virtuelle
Vorrichtung zu handhaben. Bei 880 kann dann der Virtuelle-Vorrichtung-Treiber die Unterbrechung
handhaben.
-
Bei
einem weiteren Beispiel können
die Initialisierungen und Konfigurationen von 810 ein Festlegen
einer Trap-fähigen Adressbandbreite
umfassen. Auf ein Erfassen eines Traps bei 830 hin, das
einem Zugreifen auf eine Speicherstelle in der Trap-fähigen Adressbandbreite
zugeordnet ist, kann das Verfahren 800 bei 840 ein
Auswählen
eines Adressregisters umfassen, das einem Verarbeiten einer Unterbrechung
für die
Trap-fähige
Adressbandbreite zugeordnet ist. Bei 870 kann das Verfahren 800 dann
ein Lokalisieren einer durch eine Virtualisierungsfirmware gelieferten
Unterbrechungsbehandlungsroutine umfassen, wo die Unterbrechungsbehandlungsroutine dazu
konfiguriert ist, einen Trap für
die Trap-fähige Adressbandbreite
zu handhaben. Bei 880 kann die Unterbrechungsbehandlungsroutine
dann in der Firmware ausgeführt
werden, um die Unterbrechung zu handhaben.
-
Bei
einem Beispiel werden Methodologien als durch einen Prozessor ausführbare Befehle und/oder
Operationen implementiert, die auf einem computerlesbaren Medium
vorgesehen sind. Somit kann ein computerlesbares Medium bei einem
Beispiel durch einen Prozessor ausführbare Befehle spei chern, die
wirksam sind, um ein Verfahren auszuführen, das ein dahingehendes
Konfigurieren eines Trapmodusregisters umfasst, eines eines Satzes
von Adressregistern auszuwählen,
um eine Adresse einer Unterbrechungsvektortabelle zu liefern. Das
ausgewählte
Adressregister kann zumindest teilweise auf der Basis eines Traptyps
bestimmt werden, der an dem Trapmodusregister erfasst wird. Das
Verfahren kann auch ein Konfigurieren zumindest einer Unterbrechungsvektortabelle
dahingehend umfassen, ein Lokalisieren einer Unterbrechungsbehandlungsroutine
zu ermöglichen,
die dazu konfiguriert ist, eine einer Vorrichtungsvirtualisierung
zugeordnete Unterbrechung zu handhaben. Das Verfahren kann ferner ein
Konfigurieren zumindest eines Adressregisters dahingehend umfassen,
ein Lokalisieren einer Unterbrechungsbehandlungsroutine, die einer
Unterbrechungsvektortabelle zugeordnet ist, zu ermöglichen. Das
Verfahren kann ferner ein Signalisieren, gegenüber einem Betriebssystem, dass
die Trapmodusregisterkonfiguration, die Unterbrechungsvektortabellenkonfiguration
und die Adressregisterkonfiguration abgeschlossen ist, umfassen.
Bei einem anderen Beispiel kann das Verfahren ferner ein Erfassen
eines Traps, ein Auswählen
eines Adressregisters, um eine Unterbrechungsvektortabellenadresse
zu liefern, die zumindest teilweise auf dem Traptyp beruht, und
ein Lokalisieren einer Unterbrechungsbehandlungsroutine, die zumindest
teilweise auf der durch das ausgewählte Adressregister bereitgestellten Unterbrechungsvektortabellenadresse
beruht, umfassen. Obwohl das obige Verfahren als an einem computerlesbaren
Medium bereitgestellt beschrieben ist, ist zu verstehen, dass andere,
hierin beschriebene beispielhafte Verfahren ebenfalls an einem computerlesbaren
Medium vorgesehen sein können.
-
9 veranschaulicht
einen Computer 900, der einen Prozessor 902, einen
Speicher 904 und Eingangs-/Ausgangstore 910 umfasst,
die wirksam durch einen Bus 908 verbunden sind. Bei einem
Beispiel kann der Computer 900 eine Trapmodusregisterlogik 930 umfassen,
die dazu konfiguriert ist, ein Zugreifen auf ein Trapmodusregister,
mehrere alternative Adressregister und mehrere alternative Unterbrechungsvektortabellen
zu ermöglichen.
Obwohl die Logik 930 als wirksam mit dem Bus 908 verbunden veranschaulicht
ist, kann sie bei manchen Beispielen in dem Prozessor 902 implementiert
sein und/oder direkter mit demselben verbunden sein.
-
Die
Trapmodusregisterlogik 930, ob sie im Computer 900 als
Hardware, Firmware, Software und/oder als Kombination derselben
implementiert ist, kann ein Mittel zum Konfigurieren und/oder Initialisieren
von Abschnitten eines Computersystems liefern, das mit einem Trapmodusregister,
mehreren Unterbrechungsvektoradressregistern und mehreren Unterbrechungsvektortabellen
konfiguriert ist. Die Trapmodusregisterlogik 930 kann auch
ein Mittel zum Erfassen eines Nicht-Implementierte-Adresse-Traps,
der dem Trapmodusregister präsentiert wird,
und ein Mittel zum selektiven Aufrufen einer Unterbrechungsbehandlungsroutine,
die einem Handhaben eines Nicht-Implementierte-Adresse-Traps zugeordnet
ist, liefern. Bei einem Beispiel kann die Unterbrechungsbehandlungsroutine
einem Eintrag in einer der Unterbrechungsvektortabellen zugeordnet sein.
Zusätzlich
kann auf eine Unterbrechungsvektortabelle durch ein Unterbrechungsvektorregister Bezug
genommen werden. Somit ermöglicht
die Trapmodusregisterlogik 930 ein Versorgen des Prozessors 902 mit
beispielsweise einem externen Virtualisierungssystem.
-
Der
Prozessor 902 kann eine Vielzahl verschiedener Prozessoren
sein, einschließlich
einer Dual-Mikroprozessor- und anderer Multi-Prozessor-Architekturen.
Der Speicher 904 kann einen flüchtigen Speicher und/oder einen
nicht-flüchtigen Speicher
umfassen. Der nicht-flüchtige
Speicher kann ROM, PROM, EPROM, EEPROM und dergleichen umfassen,
ist aber nicht auf diese beschränkt. Der
flüchtige
Speicher kann beispielsweise RAM, synchronen RAM (SRAM), dynamischen
RAM (DRAM), synchronen DRAM (SDRAM), Doppeldatenrate-SDRAM (DDR
SDRAM) und Direkt-RAM-Bus-RAM (DRRAM) umfassen.
-
Eine
Platte 906 kann beispielsweise über eine Eingangs-/Ausgangsschnittstelle
(z. B. Karte, Vorrichtung) 918 und ein Eingangs-/Ausgangstor 910 wirksam
mit dem Computer 900 verbunden sein. Die Platte 906 kann
Vorrichtungen wie ein Magnetplattenlaufwerk, ein Festkörperplattenlaufwerk,
ein Floppy-Plattenlaufwerk, ein Bandlaufwerk, ein Zip-Laufwerk,
eine Flash-Speicherkarte und/oder einen Speicherstift umfassen,
ist jedoch nicht auf diese beschränkt. Ferner kann die Platte 906 optische
Laufwerke wie einen CD-ROM, ein Laufwerk für bespielbare CDs (CD-R-Laufwerk),
ein Laufwerk für
wiederbeschreibbare CDs (CD-RW-Laufwerk) und/oder ein Digitalvideo-ROM-Laufwerk
(DVD ROM) umfassen. Der Speicher 904 kann beispielsweise
Prozesse 914 und/oder Daten 916 speichern. Die
Platte 906 und/oder der Speicher 904 können ein
Betriebssystem speichern, das Ressourcen des Computers 900 steuert
und zuweist.
-
Der
Bus 908 kann eine Einzelinternbusverbindungsarchitektur
und/oder andere Bus- oder Netzarchitekturen sein. Obwohl ein einzelner
Bus veranschaulicht ist, muss man erkennen, dass der Computer 900 unter
Verwendung anderer Busse, die nicht veranschaulicht sind (z. B.
PCIE, SATA, Infiniband, 1394, USB, Ethernet), mit verschiedenen
Vorrichtungen, Logiken und Peripheriegeräten kommunizieren kann. Der
Bus 908 kann einer einer Vielzahl von Typen sein, einschließlich, aber
nicht ausschließlich,
eines Speicherbusses oder einer Speichersteuerung, eines Peripheriebusses
oder eines externen Busses, eines Kreuzschienenschalters und/oder
eines lokalen Busses. Der lokale Bus kann ein Industriestandardarchitektur-Bus
(ISA-Bus), ein Mikrokanal-Architektur-Bus
(MSA-Bus), ein erweiterter ISA-Bus (EISA), ein Peripheriekomponentenverbindungsbus
(PCI-Bus), ein universeller serieller Bus (USB-Bus) und ein Kleincomputer-Schnittstelle-Bus (SCSI-Bus)
sein, ist aber nicht auf diese beschränkt.
-
Der
Computer 900 kann über
Eingangs-/Ausgangsschnittstellen 918 und Eingangs-/Ausgangstore 910 mit
Eingabe-/Ausgabevorrichtungen
interagieren. Eingabe-/Ausgabevorrichtungen
können
eine Tastatur, ein Mikrophon, eine Zeige- und Auswahlvorrichtung,
Kameras, Videokarten, Anzeigen, die Platte 906, Netzwerkvorrichtungen 920 und
dergleichen umfassen, sind aber nicht auf diese beschränkt. Die
Eingangs-/Ausgangstore 910 können serielle Tore, parallele
Tore und USB-Tore umfassen, sind aber nicht auf diese beschränkt.
-
Der
Computer 900 kann in einer Netzwerkumgebung arbeiten und
kann somit über
die Eingangs-/Ausgangsschnittstellen 918 und/oder die Eingangs-/Ausgangstore 910 mit
Netzwerkvorrichtungen 920 verbunden sein. Durch die Netzwerkvorrichtungen 920 kann
der Computer 900 mit einem Netzwerkinteragieren. Durch
das Netzwerk kann der Computer 900 auf logische Weise mit
entfernten Computern verbunden sein. Die Netzwerke, mit denen der
Computer 900 interagieren kann, umfassen ein lokales Netzwerk
(LAN), ein Weitverkehrsnetzwerk (WAN) und andere Netzwerke, sind
aber nicht auf diese beschränkt.
Die Netzwerkvorrichtungen 920 können mit LAN-Technologien verbunden
sein, einschließlich,
aber nicht ausschließlich,
einer Datenschnittstelle an Glasfaser-Verteilnetz (FDDI), einer Datenschnittstelle
an Kupfer-Verteilnetz
(CDDI), Ethernet (IEEE 802.3), eines Token-Rings (IEEE 802.5), einer drahtlosen
Computerkommunikation (IEEE 802.11), Bluetooth (IEEE 802.15.1),
Zigbee (IEEE 802.15.4) und dergleichen. Desgleichen können die
Netzwerkvorrichtungen 920 mit WAN-Technologien verbunden
sein, einschließlich,
aber nicht ausschließlich,
Punkt-zu-Punkt-Verknüpfungen, Schaltungsschaltnetzwerke
wie integrierte digitale Fernmeldenetze (ISDN), Paketschaltnetzwerke
und digitaler Teilnehmerleitungen (DSL). Obwohl einzelne Netzwerktypen
beschrieben sind, muss man verstehen, dass Kommunikationen mittels, über und/oder
durch ein Netzwerk Kombinationen und Mischungen von Kommunikationen
umfassen können.
-
Somit
kann der Computer 900 bei einem Beispiel ein Computer sein,
der mit einem Trapmodusregister, einer Mehrzahl von Unterbrechungsvektoradressregistern
und einer Mehrzahl von Unterbrechungsvektortabellen konfiguriert
ist. Der Computer 900 kann eine (nicht veranschaulichte)
Initialisierungslogik umfassen, die dazu konfiguriert ist, das Trapmodusregister,
die Unterbrechungsvektoradressregister und die Unterbrechungsvektortabelle zu
initialisieren. Der Computer 900 kann ferner eine Trapverarbeitungslogik
umfassen, die dazu konfiguriert ist, dem Trapmodusregister auf das
Auftreten eines Traps in dem Computer hin Trapdaten zu liefern, die
dazu konfiguriert sind, dem Trapmodusregister ein Auswählen eines
Unterbrechungsvektoradressregisters zu ermöglichen und somit ein Lokalisieren einer
Trap-Handhabungsvorrichtung
zu ermöglichen, die
einer Unterbrechungsvektortabelle zugeordnet ist, die dem ausgewählten Unterbrechungsvektoradressregister
zugeordnet ist.
-
10 veranschaulicht
eine beispielhafte Bilderzeugungsvorrichtung 1000, die
eine Trapmodusregisterlogik 1010 umfasst, die dazu konfiguriert ist,
hierin beschriebene beispielhafte Systeme zu implementieren. Die
Trapmodusregisterlogik 1010 kann auch dazu konfiguriert
sein, ausführbare
Verfahren wie die hierin beschriebenen durchzuführen. Bei einem Beispiel kann
die Trapmodusregisterlogik 1010 dauerhaft und/oder lösbar an
der Bilderzeugungsvorrichtung 1000 angeschlossen sein.
-
Die
Bilderzeugungsvorrichtung 1000 kann wiederzugebende Druckdaten
empfangen. Somit kann die Bilderzeugungsvorrichtung 1000 auch
einen Speicher 1020 umfassen, der dazu konfiguriert ist, Druckdaten
zu speichern oder, allgemeiner, zur Bildverarbeitung verwendet zu
werden. Die Bilderzeugungsvorrichtung 1000 kann ferner
eine Wiedergabelogik 1030 umfassen, die dazu konfiguriert
ist, aus Druckdaten ein druckerfertiges Bild zu erzeugen. Die Wiedergabe
variiert auf der Basis des Formats der beteiligten Daten und der
Art der Bilderzeugungsvorrichtung. Allgemein wandelt die Wiedergabelogik 1030 Hochpegeldaten
in ein graphisches Bild zur Anzeige oder zum Drucken um (z. B. das
druckfertige Bild). Beispielsweise besteht eine Form in einer Strahlenverfolgung,
die ein mathematisches Modell eines dreidimensionalen Objekts oder
einer dreidimensionalen Szene nimmt und es in ein Bitabbildungsbild
umwandelt. Ein weiteres Beispiel ist der Prozess des Umwandelns
von HTML in ein Bild zur Anzeige/zum Drucken. Man muss verstehen,
dass die Bilderzeugungsvorrichtung 1000 druckerfertige Daten
empfangen kann, die nicht wiedergegeben werden müssen, und somit erscheint die
Wiedergabelogik 1030 bei manchen Bilderzeugungsvorrichtungen
eventuell nicht.
-
Die
Bilderzeugungsvorrichtung 1000 kann auch einen Bilderzeugungsmechanismus 1040 umfassen,
der dazu konfiguriert ist, aus dem druckfertigen Bild ein Bild auf
einem Druckmedium zu erzeugen. Der Bilderzeugungsmechanismus 1040 kann auf
der Basis der Art der Bilderzeugungsvorrichtung 1000 variieren
und kann einen Laserbilderzeugungsmechanismus, andere Bilderzeugungsmechanismen auf
Tonerbasis, einen Tintenstrahlmechanismus, einen digitalen Bilderzeugungsmechanismus
oder eine andere Bilderzeugungsreproduktionsmaschine umfassen. Ein
Prozessor 1050 kann enthalten sein, der mit einer Logik
implementiert ist, um den Betrieb der Bilderzeugungsvorrichtung 1000 zu
steuern. Bei einem Beispiel umfasst der Prozessor 1050 eine
Logik, die in der Lage ist, Java-Befehle auszuführen. Andere Komponenten der
Bilderzeugungsvorrichtung 1000 sind hierin nicht beschrieben,
können
jedoch Medienhandhabungs- und -aufbewahrungsmechanismen, Sensoren,
Steuerungen und andere Komponenten umfassen, die an dem Bilderzeugungsprozess
beteiligt sind.
-
Unter
Bezugnahme auf 11 ist eine Anwendungsprogrammierungsschnittstelle
(API) 1100 veranschaulicht, die einen Zugriff auf ein Trapmodusregistersystem 1110 liefert.
Die API 1100 kann beispielsweise durch einen Programmierer 1120 und/oder
einen Prozess 1130 verwendet werden, um einen Zugriff auf
eine durch das System 1110 durchgeführte Verarbeitung zu erhalten.
Beispielsweise kann ein Programmierer 1120 ein Programm
schreiben, um auf das System 1110 zuzugreifen (z. B. seinen
Betrieb aufzurufen, seinen Betrieb zu überwachen, seinen Betrieb zu
steuern), wo ein Schreiben des Programms durch das Vorliegen der
API 1100 ermöglicht
wird. Statt dass der Programmierer 1120 das Innenleben
des Systems 1110 verstehen muss, muss der Programmierer 1120 lediglich
die Schnittstelle mit dem System 1110 lernen. Dies ermöglicht ein
Einbetten der Funktionalität
des Systems 1110 und ein gleichzeitiges Freilegen dieser
Funktionalität.
-
Desgleichen
kann die API 1100 dazu verwendet werden, dem System 1110 Datenwerte
zu liefern und/oder Datenwerte von dem System 1110 wiederzugewinnen.
Beispielsweise kann ein Prozess 1130, der Unterbrechungen
für eine
virtuelle Vorrichtung verarbeitet, über die API 1100,
beispielsweise durch Verwenden eines in der API 1100 vorgesehenen
Aufrufs, einen Unterbrechungsbehandlungsroutine-Eintrittspunkt in
das System 1110 liefern. Somit kann bei einem Beispiel
der API 1100 ein Satz von Anwendungsprogrammierungsschnittstellen
auf einem computerlesbaren Medium gespeichert werden. Die Schnittstellen
können
durch einen Programmierer, eine Computerkomponente, eine Logik usw.
verwendet werden, um einen Zugriff auf ein Trapmodusregistersystem 1110 zu
erlangen. Die Schnittstellen können
eine erste Schnittstelle 1140, die Unterbrechungsvektoradressregisterdaten
kommuniziert, eine zweite Schnittstelle 1150, die einen
Unterbrechungsvektortabelleneintrag kommuniziert, und eine dritte
Schnittstelle 1160, die Trapmodusregister-Konfigurationsdaten,
die den Unterbrechungsvektoradressregisterdaten und dem Unterbrechungsvektortabelleneintrag
zugeordnet sind, kommuniziert, umfassen, sind aber nicht hierauf
beschränkt.
Bei einem Beispiel ermöglichen
die Trapmodusregister-Konfigurationsdaten ein Auswählen einer Unterbrechungsvektoradresse
und ein Lokalisieren eines Unterbrechungsvektortabelleneintrags.
-
Obwohl
beispielhafte Systeme, Verfahren usw. durch das Beschreiben von
Beispielen veranschaulicht wurden und obwohl die Beispiele in beträchtlichem
Detail beschrieben wurden, haben die Anmelder nicht die Absicht,
den Schutzumfang der beigefügten
Patentansprüche
auf derartige Einzelheiten einzuschränken oder in irgendeiner Weise
zu begrenzen. Selbstverständlich
ist es nicht möglich, jede
denkbare Kombination von Komponenten oder Methodologien für die Zwecke
des Beschreibens der Systeme, Verfahren usw., die hierin beschrieben sind,
zu beschreiben. Fachleuten werden ohne weiteres zusätzliche
Vorteile und Modifikationen einleuchten. Somit ist die Erfindung
nicht auf die gezeigten und beschriebenen spezifischen Einzelheiten,
die repräsentativen
Vorrichtungen und veranschaulichenden Beispiele beschränkt. Somit
ist beabsichtigt, dass diese Anmeldung Abänderungen, Modifikationen und
Variationen, die in den Schutzumfang der beigefügten Patentansprüche fallen,
einschließt.
Ferner soll die vorstehende Beschreibung den Schutzumfang der Erfindung
nicht einschränken.
Vielmehr soll der Schutzumfang der Erfindung durch die beigefügten Patentansprüche und
ihre Äquivalente
bestimmt werden.
-
In
dem Umfang, wie der Begriff „umfasst" oder „umfassen" in der ausführlichen
Beschreibung oder in den Patentansprüchen verwendet wird, soll er auf ähnliche
Weise inklusiv sein wie der Begriff „aufweisen", wie dieser Begriff interpretiert wird,
wenn er als Übergangswort
in einem Patentanspruch verwendet wird. Ferner soll in dem Umfang,
wie der Begriff „oder" in der ausführlichen
Beschreibung oder den Patentansprüchen verwendet wird (z. B.
A oder B), derselbe „A
oder B oder beide" bedeuten.
Wenn die Anmelder beabsichtigen, „lediglich A oder B, jedoch nicht
beide" anzugeben,
dann wird der Begriff „lediglich
A oder B, jedoch nicht beide" verwendet.
Somit ist die Verwendung des Begriffs „oder" hierin die inklusive und nicht die
exklusive Verwen dung. Siehe Bryan A. Garner, A Dictionary of Modern
Legal Usage 624 (2. Ausgabe 1995).