-
Die vorliegende Erfindung betrifft virtuelle Speichersysteme
im allgemeinen und in Bezug auf die Art und Weise, wie der
Prozessor eines Rechensystems einem Prozeß Zugriff auf
Eingabe/Ausgabe-(E/A)-Geräte gewährt. Beim Stand der Technik hatte
jeder Prozeß, der auf einem Computersystem ablief, seinen
eigenen virtuellen Adreßbereich. Dies kann zu sehr komplexen
Systemen und zu einem nicht optimalen Betriebsverhalten
führen. Beispielsweise muß für jeden Prozeß eine eigene
Seitentabelle geführt werden. Eine Seitentabelle bildet virtuelle
Speicheradressen auf physische (körperliche) Stellen oder
Plätze im Speicher, oder Speicherplätze, ab. Wenn jeder Prozeß
seinen eigenen virtuellen Adressenbereich hat, müssen ferner
jedesmal, wenn Prozesse in einem Computer gewechselt werden,
Übersetzungspuffer und Cache-Speichereinträge vom vorherigen
Prozeß annuliert werden.
-
Bei virtuellen Speichersystemen nach dem Stand der Technik
wurde ferner auf E/A-Geräte gemäß einem der zwei Verfahren
zugegriffen. Beim ersten Verfahren sind bestimmte Befehle
innerhalb des Computer-Befehlssatz vorgesehen, welche die E/A-Geräte
steuern. Beim zweiten Verfahren, das als Speicherbild-
E/A bezeichnet ist, sind bestimmte Adressen für jedes
E/A-Gerät reserviert. Die reservierten Adressen für jedes E/A-Gerät
werden als dessen Adreßbereich bezeichnet. Bei Speicherbild-
E/A-Systemen erfassen und decodieren E/A-Geräte, ob ein
Prozessor Adressen innerhalb des E/A-Adreßbereiches dieses E/A-
Gerätes liest oder in diese Adressen etwas schreibt. Jedes
Register innerhalb eines E/A-Gerätes ist einer Adresse
innerhalb des Adreßbereiches zugeordnet. Die Register sind so
implementiert, daß das Lesen oder Beschreiben einer Adresse
innerhalb des Adreßbereiches eines E/A-Gerätes zum Lesen oder
Beschreiben eines Registers innerhalb des E/A-Gerätes führt,
das dieser speziellen Adresse zugeordnet ist. Der Vorgang des
Lesens oder Beschreibens der Adresse in dem Adreßbereich des
E/A-Gerätes kann also zum Steuern von E/A-Geräten eingesetzt
werden.
-
Ein Vorteil der Verwendung von Speicherbild-E/A-Systemen ist,
daß auf E/A-Geräte über Prozeduren zugegriffen werden kann,
die in einer höheren Programmiersprache realisiert sind. Bei
einigen Computerarchitekturen nach dem Stand der Technik kann
ein Anwendungsprogramm direkt auf den gesamten oder einen Teil
des Adreßbereiches der E/A-Geräte des Computers zugreifen.
Dies kann jedoch zu Schwierigkeiten bei einer
Multitask-Umgebung (mit mehreren Aufgaben) führen. Wenn beispielsweise ein
Anwendungsprogramm ein E/A-Gerät, das Übertragungen mit
direktem Speicherzugriff (DMA) durchführen kann, falsch
initialisiert, kann dies dazu führen, daß das E/A-Gerät den einem
anderen Anwendungsprogramm zugeordneten Speicherbereich liest
oder überschreibt, so daß die Sicherheit des Systemes
gefährdet ist.
-
Um eine Gefährdung der Sicherheit des Systems in
Multitask-Umgebungen zu vermeiden, hindern einige Verfahren nach dem Stand
der Technik Anwendungsprogramme daran, direkt auf die
Adreßbereiche von E/A-Geräten zuzugreifen. Statt dessen kann auf alle
E/A-Adressen nur über privilegierte, oder vorrangige,
Prozeduren zugegriffen werden, die E/A-Treiber genannt werden.
Während dies einen hohen Grad an Systemsicherheit schafft, bringt
es andererseits einen großen Softwareaufwand mit sich und ist
ineffizient und einschränkend.
-
In den AFIPS Conference Proceedings, 1978, zur National
Computer Conference, Seiten 967-980, ist ein Aufsatz von W.D.
Strecker, "VAX-11/780 - A virtual address extension to the DEC
PDP-11 Family" offenbart. Ferner gibt es in Electronique
Industrielle, Nr. 25, 15. Februar 1982, Seiten 51-56, einen
Aufsatz von J.C. Broido mit dem Titel "L'iAPX 286: nouvelle
architecture microprocesseur pour les applications multitaches
et multiutilisateurs". Während diese Aufsätze beide die
virtuelle Adressierung ansprechen, spricht keiner von ihnen das
Problem von Steuerregistern von E/A-Geräten an, da diese
Steuerregister allgemein im Zusammenhang mit E/A-Gerätetreibern
diskutiert wurden.
-
Die Erfindung ist in Anspruch 1 definiert.
-
Gemäß einer bevorzugten Ausführungsform der Erfindung ist der
Adreßbereich in einem virtuellen Speichersystem global. Mit
global ist gemeint, daß physische Speicherstellen auf
demselben virtuellen Speicherraum abgebildet werden, unabhängig
davon, welcher Prozeß auf dem Prozessor abläuft. Zugriffcodes
mit einem Schreibsperrbit werden verwendet, um den
Prozeßzugriff auf verschiedene Adressen zu steuern.
-
Zusätzlich werden Attribute eines virtuellen Speichersystemes
verwendet, um den Zugriff auf Adreßbereiche von E/A-Geräten zu
steuern. In einem virtuellen Speichersystem sind jedem
Anwendungsprogramm Zugriffe auf Seiten innerhalb des Adreßbereiches
eines Prozessors zugeordnet. Der Zugriff kann die Fähigkeit
zum Lesen von in dem Adreßbereich gespeicherter Information
sein (Lesezugriff), oder er kann die Fähigkeit zum Lesen von
in dem Adreßbereich gespeicherter Information und zum
Schreiben von Information in den Adreßbereich sein (Lese- und
Schreibzugriff).
-
Bei der bevorzugten Ausführungsform der Erfindung sind jedem
E/A-Gerät zwei Seiten (Programmsegmente) des Adreßbereiches
zugeordnet. Eine Seite wird als privilegiert oder vorrangig
angesehen, und die andere als nicht privilegiert. Da eine
Seite sehr groß sein kann, - eine Seite kann beispielsweise 512
Adressen enthalten - ist vielen Adressen in jeder Seite des
Adreßbereiches unter Umständen kein E/A-Geräteregister
zugeordnet.
-
Jedes E/A-Geräteregister ist jedoch einer Adresse in jeder der
beiden Seiten seines E/A-Geräteadreßbereiches zugeordnet. Die
Adressen, die in ihren jeweiligen Seiten einem einzelnen
Register zugeordnet sind, haben jeweils bezüglich ihrer
individuellen Seiten denselben Offset. Es gibt privilegierte und
nicht privilegierte Register. Ein Register kann als
privilegiert angesehen werden, wenn es mit der Steuerung der
DMA-Aktivität eines E/A-Gerätes zu tun hat, wenn es mit dem Erzeugen
von Unterbrechungen (Interrupts) für einen Prozessor zu tun
hat, oder wenn es auf eine andere Art eingesetzt ist, bei der
die Sicherheit des Systemes gefährdet ist.
-
Nicht privilegierte Register können sowohl in der
privilegierten Seite als auch in der nicht privilegierten Seite
vollständig implementiert sein. Mit in sowohl der
privilegierten Seite als auch der nicht privilegierten Seiten
vollständig implementiert ist gemeint, daß das Lesen oder
Beschreiben der dem nicht privilegierten Register zugeordneten
Adresse in entweder der privilegierten Seite oder der nicht
privilegierten Seite zum Lesen oder Beschreiben des nicht
privilegierten Registers führt.
-
Privilegierte Register können nur in der privilegierten Seite
vollständig implementiert sein. Das heißt, daß das Lesen oder
Beschreiben der dem privilegierten Register zugeordneten
Adresse nur in der privilegierten Seite zum Lesen oder
Beschreiben des privilegierten Registers führt. Abhängig von der
Implementierung können die privilegierten Register in der
nicht privilegierten Seite lesbar, aber nicht beschreibbar,
oder alternativ weder lesbar, noch beschreibbar sein.
-
In den Figuren zeigen:
-
Fig. 1 einen Systemprozessor, einen Systemspeicher und
verschiedene mit einem Bus verbundene E/A-Geräte,
-
Fig. 2A und 2B jeweils eine Seite eines Speicheradreßbereiches,
-
Fig. 3 einen Speicheradreßbereich eines Computers gemäß der
bevorzugten Ausführungsform der Erfindung,
-
Fig. 4 ein Blockdiagramm eines der in Fig. 1 gezeigten
E/A-Geräte,
-
Fig. 5 zwei Einträge in einer Tabelle, die virtuelle
Speicheradressen in physische Speicheradressen
übersetzt,
-
Fig. 6 ein Steuerregister innerhalb des in Fig. 1 gezeigten
Systemprozessors,
-
Fig. 7 die Tabelle, welche die in Fig. 5 gezeigten Einträge
enthält, und
-
Fig. 8 eine mit der in Fig. 7 gezeigten Tabelle verbundene
Hash-Vorrichtung.
-
In Fig. 1 ist ein Rechensystem gezeigt. Das Rechensystem
umfaßt einen Systemprozessor 101, einen Systemspeicher 102, ein
Eingabe/Ausgabe (E/A)-Gerät 103, ein E/A-Gerät 104, ein E/A-Gerät
105, ein E/A-Gerät 106 und ein E/A-Gerät 107, die mit
einem Bus 100 verbunden sind. Der Systemprozessor 101
kommuniziert mit den E/A-Geräten 103 bis 107 durch Lesen von Daten
oder Schreiben von Daten aus einem bzw. in einen Adreßbereich,
der für jedes der E/A-Geräte 103 bis 107 reserviert ist.
-
Fig. 3 zeigt, wie ein Adreßbereich 370 des Rechensystems von
Fig. 1 belegt ist. Der Adreßbereich 370 adressiert 2³²
Datenbytes
(oder 2³&sup0; Datenworte à 32 Bit). Ein Teil 371 des
Adreßbereiches 370 ist für Speicheradressen reserviert. Ein
Unterabschnitt 371b des Teiles 371 ist für Speicheradressen
reserviert, jedoch nicht implementiert. Ein Unterabschnitt 371a des
Teiles 371 ist implementiert und wird von einem
Betriebssystem, das auf dem Prozessor 101 läuft, und von
Benutzeranwendungen, die auf dem Prozessor 101 laufen, verwendet. Im
allgemeinen ist der Unterabschnitt 371b wesentlich größer als
der Unterabschnitt 371a. Ein Teil 373 des Adreßbereiches 370
ist zur Verwendung für E/A-Geräte belegt. Der gesamte Speicher
370 ist in zwei Seiten aufgeteilt, einschließlich den Seiten
301 und 302, wie gezeigt. Jede Seite kann 512 32-Bit-Wörter
adressieren.
-
Der Zugriff auf Speicherseiten kann mittels eines
Zugriffsidentifikations(AID)-Wertes beschränkt werden, der Einträgen
in einer Tabelle 550 zugeordnet ist, die in Fig. 7 gezeigt
ist. Die Tabelle 550 übersetzt virtuelle
Speicherseitenadressen in Adressen von Speicherseiten in einem physischen
Speicherbereich im Systemspeicher 102. Die Tabelle 550 umfaßt eine
Reihe von verknüpften Listen. In Fig. 7 sind beispielsweise
eine verknüpfte Liste 702, eine verknüpfte Liste 703, eine
verknüpfte Liste 704 und eine verknüpfte Liste 705 gezeigt.
Ein Eintrag 501 und ein Eintrag 511 in der verknüpften Liste
702 sind in Fig. 5 gezeigt. Der Eintrag 501 und der Eintrag
511 enthalten jeweils vier 32-Bit-Speicherstellen.
-
Der Eintrag 501 umfaßt eine Stelle 503, die eine Adresse
enthält, die zum Eintrag 511 zeigt. Der Eintrag 501 umfaßt ferner
eine Stelle 504 und eine Stelle 505, die eine virtuelle
Seitenadresse enthalten. Die Stelle des Eintrages 501 in Tabelle
550 gibt dem Systemprozessor 101 den physischen
Speicherbereich für die in den Stellen 504 und 505 gespeicherten
virtuellen Seitenadressen an. Der Eintrag 501 weist auch eine
Stelle 506 auf. Die Stelle 506 umfaßt ein Zugriffsrechtsfeld
507
von 16 Bit und einen Abschnitt 508 von 15 Bit, der einen
AID-Wert enthält, sowie einen Abschnitt 509 von einem Bit, der
immer eine logische Null enthält.
-
Der Eintrag 511 umfaßt eine Stelle 513, die eine Adresse
enthält, die zu einem nächsten Eintrag in der verknüpften Liste
702 zeigt. Der Eintrag 511 umfaßt ferner eine Stelle 514 und
eine Stelle 515, die eine virtuelle Seitenadresse enthalten.
Die Stelle des Eintrages 511 in Tabelle 550 gibt dem
Systemprozessor 101 die physische Speicheradresse für die in Stellen
514 und 515 gespeicherte virtuelle Seitenadresse an. Der
Eintrag 511 weist ferner eine Stelle 516 auf. Die Stelle 516
umfaßt einen Zugriffsrechtsabschnitt 517 von 16 Bit und einen
Abschnitt 518 von 15 Bit, der einen AID-Wert enthält, sowie
einen Abschnitt 519 von einem Bit, der immer eine logische
Null enthält.
-
Der Systemprozessor 101 hat vier Steuerregister 601, 611, 621
und 631, die AID-Werte für einen momentan laufenden Prozeß
enthalten. Der Abschnitt 602 des Registers 601, der Abschnitt
612 des Registers 611, der Abschnitt 622 des Registers 621 und
der Abschnitt 632 des Registers 631 können jeweils einen
AID-Wert von 15 Bit enthalten. Der Abschnitt 603 des Registers
601, der Abschnitt 613 des Registers 611, der Abschnitt 623
des Registers 621 und der Abschnitt 633 des Registers 631
enthalten einen Schreibsperrwert (WD) von einem Bit.
-
Wenn ein auf dem Systemprozessor 101 laufender Prozeß die
Adressierung einer physischen Seite des Speichers anfordert,
wird eine virtuelle Adresse für eine Seite des Speichers in
eine physische Seitenadresse unter Verwendung von Tabelle 550
übersetzt. Eine in Fig. 7 gezeigte Hash-Vorrichtung 701
empfängt die virtuelle Adresse und bildet die Kontrollsumme der
virtuellen Adresse (Hashing), um eine physische Seitenadresse
zu erzeugen, die der Position eines ersten Eintrages in einer
verknüpften Liste in Tabelle 550 entspricht. Kontrollsummieren
(Hashing) einer virtuellen Seitenadresse kann beispielsweise
eine physische Adresse erzeugen, die dem Eintrag 501 in
Tabelle 550 entspricht. Die kontrollsummierte virtuelle Adresse
wird mit der virtuellen Adresse verglichen, die in den Stellen
504 und 505 von Eintrag 501 enthalten ist. Wenn diese
übereinstimmen, wurde die physische Seite auf die virtuelle Seite
abgebildet.
-
Ein Zugriffscode im Zugriffsrechtsfeld 507 wird überprüft. Der
Zugriffscode gibt an, bei welchem Vorrangpegel, oder bei
welcher Privilegstufe, ein Prozeß angeordnet sein muß, damit er
die physische Seite lesen, beschreiben und/oder auf diese
zugreifen darf. Dann wird der AID-Wert in Stelle 508 überprüft.
Wenn der in Stelle 508 enthaltene AID-Wert Null ist, oder wenn
er mit den AID-Werten in einem der Steuerregister 601, 611,
621 oder 631 übereinstimmt, wird dem Prozeß Zugriff auf die
physische Seite im Speicher gewährt. Wenn der WD-Wert im
Anpassungssteuerregister 601, 611, 621 oder 631 logisch Eins
ist, wird dem Prozeß ein Schreibzugriff verweigert. Wenn der
in Stelle 508 enthaltene AID-Wert nicht mit den AID-Werten in
einem der Steuerregister 601, 611, 621 oder 631 übereinstimmt,
und wenn der in Stelle 508 enthaltene AID-Wert nicht Null ist,
wird dem Prozeß der Zugriff auf die physische Seite im
Speicher verweigert.
-
Wenn die kontrollsummierte virtuelle Adresse nicht mit der in
Stellen 504 und 505 enthaltenen virtuellen Adresse
übereinstimmt, wird der nächste Eintrag in der verknüpften Liste
702 - der Eintrag 511 - betrachtet. Die kontrollsummierte
Adresse wird mit der virtuellen Adresse verglichen, die in den
Stellen 514 und 515 des Eintrags 511 enthalten ist. Wenn diese
übereinstimmen, wird ein Zugriffscode im Zugriffsrechtsfeld
517 überprüft. Die momentane Privilegstufe des Prozesses wird
ausgewertet, um zu ermitteln, welcher Zugriff dem Prozeß
gewährt werden darf. Dann wird der in Stelle 518 enthaltene
AID-Wert mit den AID-Werten in den Registern 601, 611, 621 und 631
verglichen, usw.
-
Fig. 8 zeigt die Hash-Vorrichtung 701 und die Tabelle 550. Die
Hash-Vorrichtung 701 weist einen Hash-Generator 720 und eine
Hash-Tabelle 801 auf. Der Hash-Generator 720 empfängt eine
virtuelle Adresse und erzeugt eine Hash-Tabellenadresse. Der
Inhalt der Hash-Tabellenadresse wird überprüft. Wenn der
Inhalt ein Nullzeiger ist, sind die durch die virtuelle Adresse
adressierten Daten nicht im Hauptspeicher. Wenn der Inhalt
eine Adresse in Tabelle 550 ist, wird eine verknüpfte Liste
beginnend bei der Adresse 550 abgesucht, bis, wie oben
erläutert, ein Eintrag gefunden wird, der die virtuelle Adresse
enthält, oder bis ein Nullzeiger gefunden wird. Der Nullzeiger
wurde wiederum anzeigen, daß die durch die virtuelle Adresse
adressierten Daten nicht im Hauptspeicher sind. Wenn die
adressierten Daten nicht im Hauptspeicher sind, tritt ein
Seitenfehler auf, und im allgemeinen wird eine Software
eingesetzt, um die Daten von einer Diskette oder einer anderen
Speichervorrichtung zu holen.
-
Tabelle 550 ist als ein Seitenverzeichnis dargestellt. Die
Tabelle 550 hat eine Basisadresse beim Eintrag PDIRO. PDIRO
entspricht einer Adresse am Grund des Adreßbereiches 370.
Positive Einträge in Tabelle 550 entsprechen dann Seiten
innerhalb des Teiles 371 des Speichers. Seiten im Teil 373 des
Adreßbereiches 370 müssen ebenfalls über Einträge in Tabelle
550 adressiert werden. Um zu vermeiden, daß ein großer
ungenutzter Teil der Einträge in Tabelle 550 dem ungenutzten
Unterabschnitt 371b des Teiles 371 entspricht, werden die
Adressen im Teil 373 von Tabelle 370 mit negativen Einträgen in
Tabelle 550 adressiert. PDIR-1 entspricht beispielsweise einer
Adresse an der Spitze des Adreßbereiches 370. Auf diese Weise
kann der Teil 373 des Adreßbereiches 370 adressiert werden,
ohne daß einegroße Lücke in Tabelle 550 auftritt, die dem
ungenutzten Unterabschnitt 371b des Adreßbereiches 370
entspricht.
-
Fig. 3A zeigt, wie Bits einer physischen Adresse im Teil 373
belegt sind. Ein Abschnitt 381 enthält die vier höchstwertigen
Bits einer Adresse 380. Der Teil 373 ist im Adreßbereich 370
ganz oben angeordnet; folglich ist jedes Bit im Abschnitt 381
eine logische Eins, wodurch angezeigt wird, daß ein
E/A-Geräteregister adressiert wird. Ein Abschnitt 382 enthält 16 Bits
der Adresse 380. Die 16 Bits im Abschnitt 382 bestimmen,
welches E/A-Gerät adressiert wird. Bei der vorliegenden
Ausführungsform gibt es einen Adreßbereich für 2¹&sup6; (ungefähr 65000)
E/A-Geräte. Ein Bit 383 gibt an, ob eine privilegierte Seite
oder eine nicht privilegierte Seite adressiert wird. Ein
Abschnitt von Bits 384 der Adresse 380 gibt an, welches
spezielle Register innerhalb eines E/A-Gerätes adressiert
wird. Ein Abschnitt von Bits 385 enthält zwei Bits der Adresse
380. Beide Bits im Abschnitt 385 sind logisch Null, weil bei
der vorliegenden Ausführungsform Register mit 32-Bit-Wörtern
adressiert werden, während der Adreßbereich 370 eine
Adressierung von 8-Bit-Bytes erlaubt.
-
In Fig. 4 ist eine E/A-Vorrichtung 107 mit einem E/A-Adapter
410 und einer Geräteschnittstelle 411 gezeigt. Zur Erläuterung
sind ein Register 400, ein Register 401, ein Register 402, ein
Register 403, ein Register 404, ein Register 405 und ein
Puffer 406 innerhalb des E/A-Adapters 410 gezeigt. Das Register
400 enthält eine Adresse, die, wenn sie beschrieben wird, eine
Unterbrechung (Interrupt) des Systemprozessors 101 erzeugt.
Das Register 401 empfängt Befehle, welche die E/A-Vorrichtung
107 dazu bringen, beispielsweise die Geräteschnittstelle 411
zu initialisieren, ein Datum von der Geräteschnittstelle 411
zu lesen oder ein Datum in die Geräteschnittstelle 411 zu
schreiben. Das Register 402 enthält eine Zahl, die einer
Adresse innerhalb des Systemspeichers 102 entspricht und
angibt, welcher E/A-Adapter 410 eine Übertragung mit direktem
Speicherzugriff (DMA) ausführen soll. Das Register 403 enthält
eine Bytesumme, oder Bytezählung, die eine Datenmenge angibt,
die durch eine DMA-Übertragung zum Systemspeicher 102
übertragen werden soll. Das Register 404 empfängt einen Befehl, um
eine DMA-Übertragung zu starten oder zu beenden. Das Register
405 enthält Information über den Zustand der letzten
DMA-Transaktion zwischen dem E/A-Adapter 410 und dem
Systemspeicher 402.
-
Fig, 2A zeigt eine nicht privilegierte Seite des
Adreßbereiches 301, der der E/A-Vorrichtung 107 zugeordnet ist. Fig. 2B
zeigt eine privilegierte Seite des Adreßbereiches 302, der der
E/A-Vorrichtung 107 zugeordnet ist.
-
Jedes der Register 400 bis 405 ist einer Adresse in Seite 301
und in Seite 302 zugeordnet. Eine Adresse 1P0 in Seite 301 ist
beispielsweise dem Register 400 zugeordnet, eine Adresse 1P1
in Seite 301 ist dem Register 401 zugeordnet, eine Adresse 1P2
in Seite 301 ist dem Register 402 zugeordnet, eine Adresse 1P3
in Seite 301 ist dem Register 403 zugeordnet, eine Adresse 1P4
in Seite 301 ist dem Register 404 zugeordnet, eine Adresse 1P5
in Seite 301 ist dem Register 405 zugeordnet, eine Adresse 2P0
in Seite 302 ist dem Register 400 zugeordnet, eine Adresse 2P1
in Seite 302 ist dem Register 401 zugeordnet, eine Adresse 2P2
in Seite 302 ist dem Register 402 zugeordnet, eine Adresse 2P3
in Seite 302 ist dem Register 403 zugeordnet, eine Adresse 2P4
in Seite 302 ist dem Register 404 zugeordnet, und eine Adresse
2P5 in Seite 302 ist dem Register 405 zugeordnet. Der Rest der
Adressen in der nicht privilegierten Seite 301, dargestellt
durch die Adressen 1P6-1P8, 1P29-1P31 und 1P505-1P511, und der
Rest der Adressen in der privilegierten Seite 302, dargestellt
durch Adressen 2P6-2P8, 2P29-2P31 und 2P505-2P511, ist
möglicherweise keinem Register zugeordnet und kann nicht
implementierter
Adreßbereich bleiben.
-
Obwohl die Register 400 bis 405 jeweils einer Adresse in der
nicht privilegierten Seite 301 und einer Adresse in der
privilegierten Seite 302 zugeordnet sind, sind nicht alle Register
400 bis 405 in sowohl der privilegierten Seite 302 als auch
der nicht privilegierten Seite 301 vollständig implementiert.
Die Register 400, 402 und 403 können beispielsweise nur in der
privilegierten Seite 302 vollständig implementiert sein. Ein
nicht autorisierter Zugriff auf diese Register könnte die
Systemsicherheit gefährden, weil das Register 400 zum direkten
Unterbrechen des Prozessors 101 verwendet werden kann, und
weil die Register 402 und 403 mit DMA-Transaktionen mit dem
Systemspeicher 102 befaßt sind. Abhängig von der
Implementierung kann ein Lesezugriff auf die Register 400, 402 und 403
über die nicht privilegierte Seite 301 zulässig sein. Das
Register 401 ist mit Transaktionen zwischen der
Geräteschnittstelle 411 und dem E/A-Adapter 410 befaßt. Diese Transaktions-
Fähigkeit ist für die Systemsicherheit nicht gefährlich; daher
kann das Register 401 sowohl in der nicht privilegierten Seite
301 als auch in der privilegierten Seite 302 vollständig
implementiert sein. Obwohl die Register 404 und 405 für
DMA-Übertragungen verwendet werden, können diese Register, wenn
das System richtig ausgelegt ist, ohne eine Gefährdung der
Systemsicherheit verwendet werden. Beispielsweise kann ein Bit
innerhalb eines privilegierten Registers, wie dem Register
403, zum Freigeben von DMA-Transaktionen verwendet werden, so
daß das Register 404 eine DMA-Transaktion nur dann starten
kann, wenn es von einem privilegierten Prozeß freigegeben
wurde.
-
Privilegierte und nicht privilegierte Register sollten so
implementiert sein, daß das Lesen dieser Register keine
Nebenwirkungen erzeugt. Das Lesen sollte beispielsweise keine neue
E/A-Operation auslösen. Dadurch kann ein Benutzerprozeß die
E/A-Aktivitätbeobachten und überwachen, ohne daß der
Benutzerprozeß auf ein Gerät, das eine Ein-/Ausgabe durchführt,
einwirken kann.
-
Privilegierte und nicht privilegierte Register sollten ferner
so implementiert sein, daß das Beschreiben einer nicht
implementierten Adresse ignoriert wird oder äquivalent zu
undefinierten Daten ist, die in irgendeine andere implementierte
Adresse in derselben Seite geschrieben werden.
-
Die beschriebene Ausführungsform sieht eine maximale
Flexibilität der Gerätezuordnung vor und ermöglicht einen
Systemschutz; es sind jedoch alternativ zu dem beschriebenen
Ausführungsbeispiel verschiedene Ausführungsformen möglich.
Beispielsweise kann jedes E/A-Gerät in zwei Speicherseiten, einer
privilegierten Seite und einer nicht privilegierten Seite,
abgebildet sein; jedes Register wird jedoch nur in einer Seite
implementiert. Dies kann jedoch Auswirkungen auf das
Betriebsverhalten der Prozessorsoftware haben, weil bei diesem
Verfahren zwei Seitenzugriffe notwendig sind, um auf alle
Steuerregister des E/A-Gerätes zuzugreifen. Alternativ kann jedes
Benutzergerät auf einer einzigen Seite abgebildet sein. Dadurch
kann auf alle Register in einem E/A-Gerät innerhalb einer
Seite zugegriffen werden, wobei jedoch Sicherheit nur für solche
E/A-Geräte gewährleistet ist, die nur nicht privilegierte
Register haben.