DE3889816T2 - Virtuelle Ein/Ausgabebefehle. - Google Patents

Virtuelle Ein/Ausgabebefehle.

Info

Publication number
DE3889816T2
DE3889816T2 DE3889816T DE3889816T DE3889816T2 DE 3889816 T2 DE3889816 T2 DE 3889816T2 DE 3889816 T DE3889816 T DE 3889816T DE 3889816 T DE3889816 T DE 3889816T DE 3889816 T2 DE3889816 T2 DE 3889816T2
Authority
DE
Germany
Prior art keywords
descriptor
command
virtual
channel number
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE3889816T
Other languages
English (en)
Other versions
DE3889816D1 (de
Inventor
Harry W Brown
Joseph G Dichiara
Joseph M Valentine
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull HN Information Systems Inc
Original Assignee
Bull HN Information Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bull HN Information Systems Inc filed Critical Bull HN Information Systems Inc
Application granted granted Critical
Publication of DE3889816D1 publication Critical patent/DE3889816D1/de
Publication of DE3889816T2 publication Critical patent/DE3889816T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Devices For Checking Fares Or Tickets At Control Points (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Error Detection And Correction (AREA)

Description

  • Diese Erfindung bezieht sich allgemein auf das Gebiet der Datenverarbeitung und insbesondere auf die Vorrichtung zum Bereitstellen eines sicheren Eingabe-/Ausgabe-(I/O)-Systems.
  • Schutz von Datenverarbeitungssystemen ist erforderlich, um mehrere Benutzer voneinander und um Benutzer vom Betriebssystem zu trennen. Der Schutz bezieht sich auf einen Mechanismus zum Steuern des Zugriffs von Programmen, Prozessen oder Benutzern auf die Betriebsmittel eines Computersystems. Der Schutz ist grundsätzlich ein internes Problem - das Erfordernis des Steuerns des Zugriffs auf Programme und Daten, die in einem Computersystem gespeichert sind.
  • Computersicherheit erfordert ein gleichermaßen Schutzsystem und auch eine Berücksichtigung der äußeren Umstände, in denen der Computer betrieben werden soll. Sicherheit ist die Vermittlung des Zugriffs von Teilen innerhalb des Computersystems auf Objekte auf der Grundlage einer Taktik, welche das System durchsetzt. Versicherung ist ein Vertrauensmaß, daß die Integrität eines Systems und seiner Daten erhalten werden wird.
  • Sichere Systeme sollten bestimmte Fähigkeiten besitzen, wie z. B.:
  • 1. Zugriffssteuerung - Personen/Objekte, welche einen Zugriff auf Computer versuchen, können positiv und zuverlässig identifiziert werden.
  • 2. Prozeßsteuerungsintegrität - Personen/Objekte können auf bestimmte Funktionen beschränkt werden, und eine Trennung der Benutzer muß abgesichert werden.
  • 3. Verletzungen der Systemsicherheit können erfaßt werden.
  • 4. Mitteilungen zwischen Benutzern und dem Computer können geheim und manipulationssicher gehalten werden.
  • 5. Hardware und Software können manipulationssicher gemacht werden.
  • 6. Systeme können mit einer hohen Zuverlässigkeit entworfen werden.
  • Viele dieser Fähigkeiten werden in anderen Computersystemen vorgefunden, typischerweise dem Multics*-System¹, verwendet am Massachusetts Institute of Technology, und dem Honeywell Secure Communications Processor (SCOMP).
  • Multics speichert aus Sicherheitsgründen die Prozesse in privilegierten Ringen in einem Speicher und verwendet virtuelle Adressierung. Jedoch zieht das Multics System keinen Vorteil aus dem Schutz, der durch Verwenden des virtuellen I/O-Befehlssystems gewährt wird.
  • Das SCOMP-System speichert auch aus Sicherheitsgründen die Prozesse in privilegierten Ringen in einem Speicher und verwendet virtuelle Adressierung. Jedoch zieht SCOMP auch einen Vorteil aus dem Schutz, der durch das virtuelle I/O-Befehlssystem gewährt wird. SCOMP weist jedoch separate Logikkarten zum Ausführen der Umsetzung von virtueller I/O zu physischer I/O auf. 1*Warenzeichen des Massachusetts Institute of Technology
  • Es ist demgemäß ein Ziel dieser Erfindung, ein Datenverarbeitungssystem mit einem verbesserten Sicherheits-Eingabe-Ausgabe-(I/O)-Befehlssystem bereitzustellen, welches mit weniger Kostenaufwand implementiert werden kann und einen verbesserten Durchsatz hat.
  • Diese Erfindung ist im besonderen in den angehängten Ansprüchen ausgedrückt. Ein Verständnis des obigen und weitere Ziele und Vorteile dieser Erfindung können durch Bezugnahme auf die folgende Beschreibung gewonnen werden, und zwar in Verbindung mit der Zeichnung.
  • Diese Erfindung stellt eine Mehrfachebenensicherheit innerhalb eines Computersystems aus Eingabe-/Ausgabe-(I/O)-Befehlen bereit, die über einen Systembus an periphere Vorrichtungen gesendet werden. Ein I/O- Befehl, der über den Systembus gesendet wird, enthält eine physische Kanalnummer, welche die Vorrichtung identifiziert, und einen Funktionscode, welcher die Funktion spezifiziert, die die Vorrichtung ausführen wird. Das Betriebssystem erzeugt einen virtuellen I/O-Befehl, welcher eine Ringnummer, eine virtuelle Kanalnummer und den Funktionscode enthält.
  • Firmware führt eine Anzahl von Prüfungen an dem virtuellen I/O-Befehl vor dem Umsetzen der virtuellen Kanalnummer in die physische Kanalnummer aus. Diese Prüfungen, welche ausgeführt werden, bevor der physische I/O-Befehl erzeugt ist, enthalten:
  • a - Verifizieren, daß der Benutzer zum Zugriff auf den Prozeß privilegiert ist,
  • b - Verifizieren, daß der IOLD-Puffer innerhalb einer 2KB-Grenze ist,
  • c - Verifizieren, daß die Deskriptoren gültig sind und daß dem Benutzer gestattet ist, auf die Vorrichtung zuzugreifen,
  • d - Verifizieren der virtuellen Kanalnummerstelle des I/O-Deskriptors gegen die Größe der Seitentabelle, welche den Deskriptor enthält, und
  • e - Verifizieren, daß der IOLD-Datenpuffer als ein IOLD-Puffer durch die Systemsoftware markiert ist.
  • Dies wird durch die Firmware erreicht, welche auf einen reservierten Abschnitt eines Steuerspeichers unter Verwendung einer Anzahl von Registern und Tabellen zugreift, um die Verifizierung und Umsetzung der virtuellen Adresse in die physische Adresse durchzuführen.
  • Das Betriebssystem erzeugt einen Baum von Speicherdescriptoren und Vorrichtungsdescriptoren und speichert einen Zeiger auf diese Datenstrukturinformation in einem Deskriptorsegment-Basisregister. Die Information spezifiziert die Basisadresse einer Deskriptorsegment-Seitentabelle. Ein Wert des hochwertigen Bits der virtuellen Kanalnummer wird verwendet, um die zur Basisadresse zu addierende Konstante zu bestimmen, um die physische Speicheradresse der I/O-Seitendescriptorworte zu ergeben. Der I/O-Seitendescriptor enthält ein Validitätsbit, die Größe der I/O-Deskriptortabelle und die Basisadresse der I/O-Deskriptortabelle.
  • Die virtuelle Kanalnummer wird zur Basisadresse als ein Index zum I/O- Deskriptor addiert.
  • Der I/O-Deskriptor enthält ein Validitätsbit, ein Lese- oder ein Schreib- Zulassungsbit, Ringklammerbits und eine physische Kanalnummer. Die Firmware prüft das Validitätsbit, verifiziert, daß der virtuelle I/O-Befehl die richtige Lese- oder Schreiboperation aufruft, verifiziert die Ringklammerbits gegen die I/O-Befehlsringnummer. Wenn alle diese Prüfungen korrekt ausgeführt sind, dann ersetzt die physische Kanalnummer die virtuelle Kanalnummer in dem Befehl, und der physische I/O-Befehl wird über den Systembus ausgesendet.
  • Es gibt eine Deskriptorsegment-Seitentabelle und eine I/O-Deskriptortabelle für jeden Benutzer. Dies befähigt das Betriebssystem, die Privilegien eines Benutzers leicht zu ändern.
  • Die Weise, in der das Verfahren der vorliegenden Erfindung ausgeführt wird, und die Weise, auf die die Vorrichtung der vorliegenden Erfindung konstruiert ist, und ihr Betriebsmodus können am besten im Lichte der folgenden detaillierten Beschreibung zusammen mit der begleitenden Zeichnung verstanden werden, in der gleiche Bezugszeichen gleiche Elemente in den verschiedenen Figuren identifizieren, und in der
  • Figur 1 ein Übersichtsblockdiagramm eines Datenverarbeitungssystems ist;
  • Figuren 2A bis 2E das Format der Eingabe-/Ausgabe-Befehle zeigt;
  • Figur 3 ein Teilblockdiagramm der virtuellen Speicherverwaltung und der zentralen Verarbeitungseinheit ist;
  • Figur 4 ein Blockdiagramm des Registers und der Tabellen des sicheren Eingabe-/Ausgabesystems ist;
  • Figur 5 ein Flußdiagramm der Implementierung der virtuellen Eingabe- /Ausgabe-Firmware ist.
  • Figur 1 zeigt ein Vielfachverarbeitungssystem, welches eine Anzahl von Subsystemen aufweist, von denen jedes mit einem asynchronen Systembus 2 durch eine separate Schnittstelle gekoppelt ist.
  • Diese Subsysteme enthalten ein zentrales Subsystem (CSS) 4, welches mit dem Systembus 2 durch eine Systembusschnittstelle (SBI) 2-10 gekoppelt ist, und ein CSS 4A, welches mit dem Systembus 2 durch eine SBI 2- 10A gekoppelt ist. Es sind nur zwei CSS gezeigt, jedoch kann irgendeine Anzahl von CSS mit dem Systembus 2 über ihre jeweiligen Schnittstellen gekoppelt werden. Jede der SBI enthält Busschnittstellen-Logikschaltungen des Typs, der in Figur 9 des US-Patents 3,995,258 offenbart ist.
  • Ebenso mit dem Systembus 2 über eine SBI 2-8 gekoppelt ist eine Systemverwaltungseinrichtung (SMF) 20. Ein Speichersubsystem 8 ist mit dem Systembus 2 über eine SBI 2-2 gekoppelt. Eine Anzahl von peripheren Steuereinrichtungen 14, typischerweise eine Plattensteuereinrichtung, eine Einheitsaufzeichnungs-Steuereinrichtung, eine Magnetband-Steuereinrichtung, eine Kommunikations-Steuereinrichtung und ähnliches, können mit dem Systembus 2 über ihre jeweiligen SBI ähnlich zur SBI 2-4 koppelt werden. Jene periphere Steuereinrichtung 14 hat daran eine Anzahl von geeigneten Vorrichtungen 18 gekoppelt.
  • Jedes CSS enthält einen Cache, einen Steuerspeicher, zwei zentrale Prozessoreinheiten (CPU) und ihre jeweiligen virtuellen Speicherverwaltungseinheiten (VMMU). Das CSS 4 enthält eine CPU 0 4-2 mit ihrer VMMU 0 4-8, eine CPU 1 4-4 mit ihrer VMMU 1 4-10, einen Steuerspeicher 4-12 und einen Cache 4-6. Obwohl ein CSS mit Dual-CPU offenbart ist, wird es so verstanden, daß die Erfindung in einem System mit einer einzelnen CPU eingebaut werden kann.
  • Jegliche Kommunikation zwischen Subsystemen wird dadurch erreicht, daß ein Subsystem einen Befehl auf den Systembus 2 aussendet und eine Antwort von dem adressierten Subsystem empfängt.
  • Die SMF 20 steuert die Initialisierung des Systems 1 sowie das Überwachen einer Anzahl von Systemen und Umgebungsfunktionen. Die SMF 20 enthält einen Zeitüberwachungszeitgeber und eine Echtzeituhr, welche durch Befehle gestellt werden, die durch die SMF 20 und vom Systembus 2 von einer der CPUs empfangen werden. Die SMF 20 antwortet, wenn der Zeitüberwachungszeitgeber auf Null dekrementiert hat, indem ein entsprechender Befehl über den Systembus 2 zu der CPU gesendet wird, welche anfänglich die Uhr stellt. Zusätzlich überwacht die SMF 20 die Leistung und Temperatur und alarmiert die Subsysteme, wenn die Leistung oder die Temperatur vorbestimmte Grenzen überschreiten. Der Betrieb der SMF 20 ist in der Anmeldung mit der Seriennummer 869,164 mit dem Titel "System Management Apparatus for a Multiprocessor System" beschrieben.
  • Das System unterstutzt sowohl physische Adressen als auch virtuelle Adressen. Die meisten für Software sichtbare Adressen sind virtuelle Adressen. Die VMMU wird die virtuellen Adressen in physische Adressen umsetzen bzw. übersetzen. Die physischen Adressen werden durch die CPU verwendet, um einen Cache oder einen Speicher zu adressieren. Zum Beispiel wird die CPU 0 4-2 eine virtuelle Adresse an die VMMU 0 4-8 über den Bus BP 38 senden. Die VMMU 0 wird die virtuelle Adresse in eine physische Adresse umsetzen und die physische Adresse an den Cache 4-6 und den Speicher 8 über einen Bus PA 39 senden. Wenn der Inhalt der physischen Adresse im Cache 4-6 gespeichert ist, dann wird er sofort zurück zur CPU 0 4-2 gesendet, anderenfalls wird der Befehl, welcher die physische Adresse enthält, an den Speicher 8 über die SBI 2-10 an den Systembus 2 und die SBI 2-2 gesendet. Der Inhalt der physischen Adreßstelle wird zurück zur CPU 0 4-2 über die SBI 2-2, den Systembus 2 und die SBI 2-10 durch einen Ahtwortbefehl gesendet.
  • Ein Sicherheitskern, der aus Betriebssystemsoftware, CPU und VMMU- Hardware und virtueller I/O-Verarbeitung besteht, ist die Implementierung eines Referenzüberwachers für das sichere DPS6 PLUS-Produkt. Der Referenzäberwacher ist ein abstraktes Konzept, welches drei Sicherheitsanforderungen erfüllen muß. Diese sind:
  • 1. Vollständige Vermittlung von Subjekten mit Objekten,
  • 2. Isolierung und
  • 3. Verifizierung.
  • Der Aspekt der vollständigen Vermittlung wird durch die virtuelle Speicherverwaltungseinheit erfällt, welche alle Anforderungen an den Speicher vermittelt. Diese Vermittlungsprozedur enthält auch eine Zugriffszulassungsprüfung. Die virtuelle I/O-Firmware ist auch ein Teil dieser Anforderung. Alle I/O-Befehle sind virtuell und sind auf der Grundlage bestimmter Zugriffserlaubnisse und Prüfprozeduren zugelassen. Der Isolierungsaspekt wird durch die Verwendung einer Hardware-Ringstruktur erfüllt, welche Sicherheits- und Systemverarbeitung von der Benutzeranwendungsverarbeitung trennt. Dieses Merkmal wird auch durch die darunterliegende Hardware und Firmware durchgesetzt, welche die Ausführungsdomäne mit Erlaubnissen vergleicht, die gewährt und in Deskriptordatenstrukturen enthalten sind.
  • Der Verifikationsaspekt wird durch die Erzeugung einer formalen Spezifikation der obersten Schicht erfüllt, welche mit einem formalen oder informalen mathematischen Modell der durchzusetzenden Sicherheitstaktik verglichen und verifiziert wird. Das verwendete Modell ist abhängig vom nachgesuchten Zertifizierungs-Niveau, wie es in "Trusted Computer Security Evaluation Criteria" (DOD 5200.28-STD - Dezember 1985) beschrieben ist.
  • I/O-Befehle, die durch das Betriebssystem erzeugt sind, enthalten eine virtuelle Kanalnummer und eine Ringnummer. Die Firmware verifiziert die Ringnummer und die Validität des Befehls und setzt in Verbindung mit einer I/O-Deskriptortabelle, die im Speicher 8 gespeichert ist, die virtuelle Kanalnummer in die physische Kanalnummer um. Der I/O- Befehl, welcher die physische Kanalnummer enthält, wird über den Systembus 2 ausgesendet. Das periphere Subsystem, welches ihre physische Kanalnummer erkennt, bestätigt die Annahme des Befehls und führt die Operation aus, welche durch den Funktionscodeabschnitt des Befehls spezifiziert ist.
  • Alle CPU- und VMMU-Operationen werden durch ausgewählte Bits von Steuerspeicherwörtern gesteuert, welche aus dem Steuerspeicher 4-12 ausgelesen werden. Der Steuerspeicher 4-12 ist in einen A-Abschnitt zum Steuern eines normalen CSS-Betriebs einschließlich der Umsetzung von virtueller Adresse zu physischer Adresse und einen B-Abschnitt zum Steuern der Implementierung der virtuellen I/O innerhalb des existierenden virtuellen Speichersystems aufgeteilt.
  • Die virtuelle I/O-Verarbeitung gewährleistet eine Sicherheit durch Isolierung der Betriebsmittel des Systems 1 von der Benutzerdomäne. Dies versichert, daß die notwendigen Zulassungsprüfungen abgeschlossen sind, bevor der I/O-Befehl über den Systembus 2 an das periphere Subsystem ausgesendet ist.
  • Die Figuren 2A bis 2B zeigen den I/O-Befehl, der über den Systembus 2 ausgesendet wird. Figur 2E zeigt das Format des virtuellen I/O-Befehls mit Ringnummer und virtueller Kanalnummer und den umgesetzten physischen I/O-Befehl mit seiner physischen Kanalnummer.
  • Es sei bemerkt, daß in der ganzen Beschreibung die Notierung "IO" sich auf die Figuren 2A, 2B und 2C beziehen wird. Die Notierung "I/O" wird sich auf die Figuren 2A, 2B, 2C und 2D beziehen; das heißt, die Notierung "I/O" wird IO und IOLD einschließen.
  • Die Figur 2A zeigt das Format eines IO-Ausgabebefehls, welcher durch die CPU erzeugt wird. Die Signale über den Systembus 2 enthalten 32 Adreßsignale 0-23, A-H und 32 Datensignale 0-31. Es sind auch eine Anzahl von Steuersignaien (nicht gezeigt) enthalten. Für den IO-Ausgabebefehl spezifizieren die Adreßsignale 8-17 die physische Kanalnummer des Verteilungs-Subsystems, die Adreßsignale 18-23 spezifizieren den Funktionscode. Die Datenbits 0-31 spezifizieren Information, welche an das durch die Kanalnummer spezifizierte Subsystem übertragen wird. Die Datenbits werden sich verhalten, wie es durch den Funktionscode spezifiziert ist.
  • Die Figur 2B zeigt das Format des IO-Eingabebefehls, welcher durch die CPU erzeugt ist und die Kanalnummer der Vorrichtung und den Funktionscode enthält, der die von der CPU angeforderte Information spezifiziert. Die Datenbits 0-9 spezifizieren die physische Kanalnummer der CPU, welche den Befehl erzeugt hat. Die Datenbits 16-31 spezifizieren optionale Information für die Vorrichtung.
  • Figur 2C zeigt das Format der IO-Antwort auf den IO-Eingabebefehl. Die physische Kanalnummer der Quelle ist nun die physische Kanalnummer des Ziels. Die Datenbits 0-31 spezifizieren die durch den Funktionscode des ursprünglichen Befehls angeforderte Information. Es gibt keine Umsetzung von virtueller in physische Kanalnummer, die für die Quellenkanalnummer von Figur 2B und die physische Kanalnummer von Figur 2C erforderlich ist.
  • Figur 2D zeigt das Format der zwei Zyklen des Eingabe-/Ausgabe-Lade- (IOLD)-Ausgabebefehls. Der erste Zyklus spezifiziert die Startadresse des Speichers 8 eines Blocktransfers, und der zweite Zyklus spezifiziert den Bereich oder die Anzahl von Wörtern in dem Block.
  • Es sei bemerkt, daß der Funktionscode Hexadezimal 09 anzeigt, daß die 32 Bit-Adresse durch die 16 Adreßbits A-H, 0-7 und die 16 Datenbits 0- 15 spezifiziert ist. Der Funktionscode Hexadezimal 0D zeigt an, daß die Datenbits 0-15 den Bereich angeben. Die Adreßbits 8-17 spezifizieren die Kanalnummer der gleichen Vorrichtung während beider Buszyklen.
  • Figur 2E zeigt das Format des virtuellen I/O-Kanalnummerbefehls und das Format des umgesetzten physischen I/O-Kanalnummerbefehls. Es sei bemerkt daß die durch die Adreßbits 8-17 von Figuren 2A, 2B und 2D spezifizierte physische Kanalnummer von der virtuellen Kanalnummer 2-8 und das Richtungsbit (D) 9 umgesetzt wurde. Die verbleibenden Adreß- und Datenbits werden ohne Umsetzung transferiert.
  • Die I/O-Kanalnummern haben einen Bereich von Hexadezimal 010 bis 3FF. Die CPU-Kanalnummern reichen von Hexadezimal 000 bis 00F Vollduplexvorrichtungen, wie Kommunikationsleitungen, verwenden zwei Kanalnummern, wobei das niederwertige Bit (D) angibt, welche Hälfte der Leitung, Senden oder Empfangen, gerade adressiert wird.
  • Virtuelle Kanäle reichen von 0-63 mit einer Seite von Nur-Kern-I/O- Deskriptoren und einer Seite von gemeinsam genutzten I/O-Deskriptoren. Die Seite, auf die zugegriffen werden soll, wird durch Bit 2 (MSB) der virtuellen Kanalnummer bestimmt.
  • Halbduplexvorrichtungen, wie Bandiaufwerke, verwenden das D-Bit auf logisch 0, um eine Eingabeoperation anzugeben, und auf logisch 1, um eine Ausgabeoperation anzugeben.
  • Unidirektionale Vorrichtungen, wie Kartenleser, hätten das D-Bit auf logisch 0 (ein gerader Funktionscode) gesetzt.
  • Ringschutz besteht aus einem Satz hierarchischer Schutzebenen und kann als ein Satz von N konzentrischen Kreisen, die mit 0, 1, 2, ... N-1 von innen nach außen numeriert sind, visualisiert werden. Der Speicherraum des Speichers 8, welcher im Kreis 0 enthalten ist, wird als Ring 0 bezeichnet, der Speicherraum des Rings 8, welcher zwischen den Kreisen 1 und 2 enthalten ist, wird als Ring 2 bezeichnet. Jedes Segment eines Prozesses wird in einen Ring des Speichers 8 gelegt. Je näher ein Segment am Mittelpunkt ist, desto höher ist sein Schutz und sein Privileg. Es werden vier Ringe bezeichnet mit 0, 1, 2 und 3 durch die CSS unterstützt, wobei Ring 0 mit dem höchsten Privileg und Ring 3 mit dem niedrigsten Privileg ausgestattet ist.
  • Der Sicherheitskern des Betriebssystems init Ausnahme der I/O, befindet sich in Ring 0. Die Prozeßablaufsteuerung der Speicherverwaltung befindet sich in Ring 1. Bewährte Software befindet sich in Ring 2. Bewährte Software kann entweder eine Sicherheits- oder Integritätseigenschaft verletzen, die vom Sicherheitskern durchgesetzt wird. Bewährte Software gewährleistet auch eine Funktionalität, die eine hohe Integrität erfordert. Benutzeranwendungen sind im Ring 3, dem am niedrigsten priviligierten, und werden von einem Sicherheitskernschnittstellenpaket des nicht bewährten Rings 2 unterstützt.
  • Einem Benutzer wird durch das Betriebssystem eine Klassifizierung gegeben. Diese Klassifizierungen sind unverschlossen, geheim und streng geheim. Dies gibt dem Benutzer Zugriff auf Prozesse in bestimmten Ringen. Angenommen, einem Benutzer mit der Klassifiziernng streng geheim wird Zugriff auf Ring 1 gegeben, einem Benutzer mit geheim wird Zugriff auf Ring 2 gegeben, und einem Benutzer mit unverschlossen wird Zugriff auf Ring 3 gegeben, dann gelten die folgenden Regeln. Ein Benutzer kann nicht aufwärts lesen; das heißt, ein Benutzer mit der Klassifizierung geheim, dem Zugriff auf die Prozesse in Ring 2 gegeben ist, kann nicht Prozesse in Ring 1 oder Ring 0 lesen. Ein Benutzer kann nicht abwärts schreiben, das heißt, der Benutzer mit der Klassifizierung geheim kann keinen Prozeß in Ring 3 schreiben.
  • Eine Prozedur hat zu ihr gehörig drei Ringnummern R1, R2 und R3, welche ihre Ringklammern genannt werden. Wenn R3 > R2, ist die Prozedur ein Tor für Ring R2, auf welches von Ringnummern höher als R3 zugegriffen werden kann. Wenn R2=R3, ist die Prozedur kein Tor.
  • Figur 3 zeigt einen Abschnitt der VMMU und CPU, welche ein Teil der Erfindung sind. Es sollte bemerkt werden, daß die VMMU 0 4-8 und die VMMU 1 4-10 sowie die CPU 0 4-2 und die CPU 1 4-4 doppelt sind. Daher werden die VMMU 0 4-8 und die CPU 0 4-2 verwendet werden, um die Erfindung zu beschreiben. Es wird jedoch verstanden, daß die Erfindung gleichermaßen gut mit der VMMU 1 4-10 und der CPU 1 4-4 arbeiten könnte.
  • Eine Registerdatei 46 der CPU 0 4-2 enthält 64 32-Bit-Register. Die Funktionen dieser Register sind in der US-Anmeldung Seriennummer 722,237 mit dem Titel "Microprocessors on a Single Semiconductor Chip" beschrieben. Es ist ebenso ein Deskriptorsegment-Basisregister enthalten, welches in dem VM-RAM 30 der VMMU 0 dupliziert wird.
  • Operanden werden vom BP-Bus 38 empfangen, in einem Dateneingangsregister 26 gespeichert, und in einem Register der Registerdatei 46 über den B-Bus 40, eine arithmetische Logikeinheit (ALU) 48, einem BI-Bus 44 oder einen Schieber 24 und einen BI-Bus 44 gespeichert. Eine arithmetische Operation wird an zwei Operanden in der Registerdatei 46 ausgeführt, indem ein Operand in den A-Bus 42 und ein anderer Operand über den B-Bus gelesen werden, und indem beide Operanden an ihre jeweiligen Eingänge der ALU 48 angelegt werden.
  • Die ALU 48 führt die arithmetische Operation aus, die durch die Signate (nicht gezeigt) des Steuerspeichers 4-12 spezifiziert sind. Das Ergebnis der arithmetischen Operation wird in die Registerdatei 46 über den BI- Bus 44 oder über den Schieber und den BI-Bus 44 zurückgeschrieben.
  • Ein 32-Bit-Q-Register 22 wirkt als eine Erweiterung der ALU 48, um 64 Bit-Operanden zu verarbeiten. Das Q-Register 22 speichert auch Teilprodukte und Teilquotienten während der Ausführung von binären Multiplikations- und Divisionsanweisungen. Der Schieber 24 arbeitet mit der ALU 48 zum Ausführen normaler 32-Bit-Schiebeoperationen. Der Schieber 24 arbeitet mit dem Q-Register 22 und der ALU 48, um 64-Bit- Schiebeoperationen auszuführen. Steuersignale (nicht gezeigt) vom Steuerspeicher 4-12 steuern alle Operationen der Registerdatei 44, der ALU 48, des Schiebers 24, des Q-Registers 22 und des Dateneingangsregisters 26.
  • Die VMMU 0 4-8 weist einen Decodierer 32 auf, der Signale des Steuerspeichers 4-12 empfängt, um eine der 28 Stellen des virtuellen Speichers 30 mit wahlweisem Zugriff (VM-RAM) zu adressieren. Der Abschnitt des DSBR 54 dieser Erfindung wird in zwei Stellen des VM- RAM 30 gespeichert. Information wird in den VM-RAM 30 vom BP-Bus 38, vom BP-Zwischenspeicher 36 und vom internen Bus 34 geladen. Steuersignale (nicht gezeigt) steuern die Eingabe und die Ausgabe des Zwischenspeichers 36.
  • Figur 4 zeigt den Logikflaß zum Umsetzen des virtuellen I/O-Befehls in einen physischen I/O-Befehl wie gezeigt in Figur 2E.
  • Das Betriebssystem hält eine Zugriffssteuerliste für jede Vorrichtung, welche festlegt, welche Benutzer Zugriff auf die Vorrichtung haben. Jedes Mal, wenn ein Prozeß eine neue Vorrichtung adressieren muß, prüft das Betriebssystem die Liste der Zielvorrichtungen, um zu bestimmen, ob dem Prozeß ein Zugriff gewährt wird. Wenn der Zugriff gewährt wird, erzeugt das Betriebssystem 50 den virtuellen I/O-Befehl 52, der in einer Stelle in Speicher 8 gespeichert ist, und lädt auch die folgende Information in das DSBR 54, welches in der Stelle im VM-RAM 30 gespeichert wird.
  • Bit 0, wenn gesetzt, zeigt an, daß ein neuer Stapel verwendet werden soll und daß die Aufruf- und Rückgabeanweisungen zugelassen sind. Dies ist nicht Teil der Erfindung und wird daher nicht weiter beschrieben.
  • Bit 1, wenn gesetzt, zeigt an, daß die virtueilen I/O-Befehle durch das Betriebssystem 50 erzeugt sind.
  • Bits 4-23 spezifizieren die physische Seitenrahmen-Basisadresse in Speicher 8. Jedoch verschieben die Bits 24-31 die Basisadresse, um einer Deskriptorsegment-Seitentabelle 56 zu erlauben, an der Wortgrenze eines Moduls 4 zu beginnen.
  • Die Deskriptorsegment-Seitentabelle 56 enthält 4 Seitendeskriptoren PD0 bis PD3, die in der normalen Umsetzung von virtueller Speicheradresse zu physischer Speicheradresse verwendet werden. Diese normale Operation enthält auch eine Verarbeitung der IOLD-Bereichsbefehle.
  • Die Deskriptorsegment-Seitentabelle 58 enthält auch einen I/O-Seitendeskriptor 4 und einen I/O-Seitendeskriptor 5. Der Zustand des hochwertigen Bits der virtuellen Kanalnummer (Bit 2 des virtuellen I/O-Befehls) gibt an, daß Hexadezimal 8 zur verschobenen Basisadresse addiert wird, um den I/O-Seitendeskriptor 4 zu lokalisieren. Hexadezimal A wird zur verschobenen Basisadresse addiert, um den I/O-Seitendeskriptor zu lokalisieren.
  • Der I/O-Seitendeskriptor 4 zeigt zu einer Tabelle von 64 I/O-Deskriptoren (nicht gezeigt), und I/O-Seitendeskriptor 5 zu einer Tabelle von 64 I/O-Deskriptoren, die als 63-127 identifiziert sind. Der I/O-Deskriptor ist typischerweise einer von jenen, welcher durch den I/O-Seitendeskriptor 5 ausgewählt ist.
  • Es gibt 128 I/O-Deskriptoren, die in 64 globale Deskriptoren und 64 lokale Deskriptoren unterteilt sind. Globale Deskriptoren werden als Systemvorrichtungsdeskriptoren betrachtet und werden verwendet, um dem Sicherheitskern zu ermöglichen, auf Kerndatei-Systemvorrichtungen innerhalb jedes Prozesses zuzugreifen. Lokale Deskriptoren sind als privat für den Prozeß definiert und gehören zu den Benutzer-I/O-Vorrichtungen, welche in den Prozeßadreßraum durch den Sicherheitskern abgebildet werden.
  • Die Information im I/O-Seitendeskriptor 5 ist wie folgt.
  • Bit 0 spezifiziert den gültigen Indikator (V), welcher einen gültigen I/O- Seitendeskriptor anzeigt.
  • Bit 1 spezifiziert den verwendeten Indikator (U), welcher anzeigt, daß auf die Seite zugegriffen wurde.
  • Bit 2 spezifiziert den modifizierten Indikator (M), welcher anzeigt, daß die Seite modifiziert wurde.
  • Bits 4-23 spezifizieren die physische Seitenrahmennummeradresse der I/O- Deskriptortabelle 58.
  • Bits 26-30 spezifizieren die Anzahl virtueller Vorrichtungsdeskriptoren in der I/O-Deskriptortabelle 58. Ein Fehler wird angezeigt, wenn die virtuelle Kanalnummer größer als die Größe der I/O-Vorrichtungstabelle ist.
  • Die physische Seitenrahmennummer spezifiziert die Basisadresse des Speichers 8 der I/O-Deskriptortabelle 58. Die virtuellen Kanalnummerbits 2-8 zeigen zu dem I/O-Deskriptor in der I/O-Deskriptortabelle 58.
  • Der I/O-Deskriptor definiert die Zugriffsrechte auf die Vorrichtung für die Lese- oder Schreiboperation, welche der Prozeß hat, und die physische Kanalnummer der Vorrichtung. Andere Information in dem I/O- Deskriptor ist wie folgt. Bit 0, der gültige Indikator (V), zeigt einen I/O- Kanalfehler (Trap 37) an, wenn auf 0.
  • Bit 1, der Leseerlaubnis-Indikator (R) gewährt eine IOLD-Anweisung, welche eine Leseoperation spezifiziert, wenn das Bit eine 1 ist, und der Prozeß wird in einer Ringnummer, kleiner oder gleich R2 ausgeführt. Wenn diese Zugriffsprüfung nicht erfüllt wird, dann wird ein I/O-Kanalzugriffsfehler (Trap 38) angezeigt.
  • Bit 2, der Schreibschutz-Indikator (W), gewährt einen IOLD, welcher eine Schreiboperation spezifiziert, wenn das Bit eine 1 ist, und der Prozeß wird in einem Ring kleiner oder gleich R1 ausgeführt. Wenn diese Zugriffsprüfung nicht erfüllt ist, dann wird ein I/O-Kanalzugriffsfehler angezeigt.
  • Für IOLD-Anweisungen spezifizieren die Bits 4 und 5, R1, die höchste Ringnummer der Schreibklammer für das Medium dieser Vorrichtung. Die Bits 6 und 7, R2, spezifizieren die höchste Ringnummer der Leseklammer für diese Vorrichtung.
  • Für IO-Anweisungen spezifizieren die Bits 4 und 5, R1, die höchste Ringnummer der Steuerklammer für diese Vorrichtung.
  • Bits 16-22 müssen NULL sein und Bits 23-31 und das ursprüngliche Richtungsbit D der virtuellen Kanalnummer bilden die physische Kanalnummer der I/O-Vorrichtung und, ob der Befehl ein Lesebefehl oder ein Schreibbefehl ist.
  • Das DSBR 54 wird mit einer eindeutigen Rahmennummer und einer eindeutigen Verschiebung für jeden Benutzer geladen. Die DSBR-Bits 4, 31 zeigen daher zu einer eindeutigen Deskriptorsegment-Seitentabelle 56. Es gibt genauso viele Deskriptorsegment-Seitentabellen 56, wie es Benutzer gibt. Es gibt auch ein eindeutiges Prozeßdeskriptorsegment 60 für jeden Benutzer.
  • Die Gesamtspeichergröße für System 1 beträgt bis zu 16 Megabyte physischen Speichers und 2 Megabyte virtuellen Speicher. Speicher 8 speichert die physischen Speicherbytes und eine Anzahl von Massenspeichervorrichtungen speichert die virtuellen Speicherbytes.
  • Eine Segmentgröße kann bis zu 2 Megabytes betragen. Ein Prozeß kann bis zu 1.024 Segmente enthalten. Eine Seite enthält 2K Bytes mit bis zu 1.024 Seiten pro Segment. Die virtuelle Adresse wird als eine 10-Bit- Segmentnummer und eine 20-Bit-Verschiebung ausgedrückt, welche zusammen mit dem Inhalt des DSBR 54 und den folgenden Tabellen die physische Adresse des Speichers 8 des gewünschten Doppelworts (30 Bits) erzeugen.
  • In dem eindeutigen Prozeßdeskriptorsegment, welches alle Deskriptoren eines Prozesses enthält, enthält die Deskriptorsegment-Seitentabelle 56 einen Deskriptor (PD) 0, welcher zu Segmentdeskriptoren (SD) 0-255 zeigt, PD 1, welcher zu SD 256-511 zeigt, PD 2, welcher zu SD 512-767 zeigt, und PD 3, welcher zu SD 768-1023 zeigt.
  • PD 0 bis PD 3 zeigen jeweils zu ihren Segmentdeskriptortabellen. Die Inhalte der Segmentdeskriptortabellen, wenn seitenweise aufgebaut, zeigen zu einer Tabelle von Seitendeskriptoren. Die Seitentabelle speichert Deskriptoren, welche die physischen Adressen in Hauptspeicher 8 enthalten, welche der virtuellen Adresse entsprechen, die durch das Betriebssystem erzeugt ist. Dies ist eine normale Systemoperation zum Umsetzen von virtuellen Speicheradressen in physische Speicheradressen.
  • Während einer normalen Operation wird der IOLD-Bereichsbefehl von Figur 2D wie folgt verarbeitet.
  • Ein ausgewählter Seitendeskriptor der Deskriptorsegments-Seitentabelle 56, zum Beispiel PD 1, wird mit der Seitennummer eines Prozessordeskriptorsegments 60 geladen. Jedes Prozessordeskriptorsegment 60 enthält 256 Segmentdeskriptoren pro Seite. Zusätzlich zum Validitätsbit (V) 0, ist Bit 1 ein privilegierter Indikator (PR). Wenn gesetzt, wird die Ausführung von privilegierten Anweisungen nur im Ring 0 zugelassen. Wenn nicht gesetzt, werden keine privilegierten Anweisungen zugelassen, und wenn eine solche angetroffen wird, dann wird eine Trap 13 aufgerufen. Das IOLD-Bit (IO) 2 zeigt gesetzt an, daß dieses ein IOLD-Puffersegment für Transfers eines Direktspeicherzugriffs (DMA) ist. Wenn nicht gesetzt und wenn eine IOLD-Anweisung, welche dieses Segment spezifiziert, ausgeführt wird, dann wird eine geschützte Speicher-Trap 14 aufgerufen.
  • Die Seitennummerbits 4-22 und die Verschiebebits 23-31 des Prozessordeskriptorsegments 60 zeigen zu einem ausgewählten Seitendeskriptor (PDX) einer IOLD-Puffersegment-Seitentabelle 62, welche 1.024 32-Bit- Seitendeskriptoren speichert.
  • Bits 0, 1 und 2 (V, U und M) wurden oben beschrieben. Die Seitennummerbits 4-23 der IOLD-Puffersegment-Seitentabelle 62 zeigen zu einem IOLD-Puffersegment-Seitenrahmen 64 in Speicher 8. Die maximale Pufferseitengröße beträgt 2.048 Bytes, wenn die Seitennummer der IOLD- Puffersegment-Seitentabelle 62 zur Basisadresse des Seitenrahmens 64 zeigt. Wenn die Basisadresse um eine Verschiebung inkrementiert wird, dann ist der Bereich kleiner als 2.048 Bytes, da ein Überschreiten einer Seite nicht zugelassen ist.
  • Es soll angemerkt werden, daß während der ersten Umsetzung für einen Benutzer einer virtuellen I/O in eine physische I/O Teile des Inhalts der Deskriptorsegment-Seitentabelle 56 und Teile des Inhalts der I/O-Deskriptortabelle 58 in den Cache 4-6 gebracht werden. Nachfolgende I/O- Befehlsumsetzungen, die für den gleichen Benutzer erfordert werden, können mit der Geschwindigkeit des Cache 4-6 anstelle der Geschwindigkeit des langsameren Speichers 8 erzielt werden.
  • Bei der Beschreibung der Figur 5 werden die Befehle der Figuren 2A bis 2C IO-Befehle genannt, und die Befehle von Figur 2D werden IOLD-Befehle genannt. Die Firmware wird beide Zyklen des IOLD- Befehls als einen IOLD-Befehl behandeln. Dann bezieht sich die Notierung I/O auf sowohl IO als auch IOLD.
  • Figur 5 ist ein Flußdiagramm der Implementierung der virtuellen I/O- Firmware. Die CPU 0 4-2 führt die Softwareanweisungen aus, welche ihrerseits den B-Abschnitt des Steuerspeichers 4-12 adressieren, um die virtuelle I/O-Kanalnummer in die physische I/O-Kanalnummer umzusetzen.
  • Der Entscheidungsblock 72 testet Bit 1 des Inhalts des DSBR 54 und verzweigt zu Block 74, wenn dies keine virtuelle I/O-Operation ist. Die Entscheidungsblöcke sind implementiert, indem Information zur Registerdatei 46, Figur 3, transferiert wird, wobei die in der ALU 48 und dem Schieber 24 aufgerufenen Aktionen ausgeführt werden, und indem das Ergebnis in die Registerdatei 46 zurücktransferiert wird, wo es für die Firmware verfügbar ist. Dies wird durch Signale vom Steuerspeicher 4-12 erzielt. Block 74 interpretiert den Befehl, als habe er eine physische Kanalnummer; und veranlaßt, daß die CPU 0 4-2 den Befehl direkt über den Systembus 2 sendet. Anderweitig liest der Entscheidungsblock 76 die Bits 0 und 1 der laufenden Ringnummer der I/O-Anweisung im Speicher, welche die CPU 0 4-2 gerade ausführt. Wenn es keine privilegierte Anweisung ist, d. h., es ist keine Anweisung aus dem Ring 0 oder dem Ring 1, dann ruft der Block 78 eine Trap 13 auf, um das Betriebssystem zu benachrichtigen, den Prozeß anzuhalten.
  • Anderweitig berechnet Block 80 die Stelle im Speicher 8 der I/O-Seitendeskriptoren 4 oder 5 der Deskriptorsegment-Seitentabelle (DSPT) 56. Dies wird von der CPU 0 4-2 durchgeführt, indem zur Basisadresse (Bits 4-31 des Deskriptorsegmentbasisregisters 54) entweder Hexadezimal 8 oder Hexadezimal A addiert wird, abhängig vom Zustand des hochwertigen Bits der virtuellen Kanalnummer (Bit 2).
  • Block 82 holt den I/O-Seitendeskriptor von der Stelle des Speichers 8 und speichert ihn in einem Arbeitsregister der Registerdatei 46 der CPU 0 4-2, Figur 3.
  • Der Entscheidungsblock 84 testet das Validitätsbit (V) 0 des I/O-Seitendeskriptors. Das wahre Validitätsbit zeigt an, daß sich die Seite im Speicher 8 befindet. Wenn nicht wahr, wird ein Seitenfehler erzeugt, um dem Betriebssystem mitzuteilen, die Seite in den Speicher 8 zu bringen. Die Seite ist gewöhnlich in dem Plattensubsystem. Block 86 würde dann eine standardmäßige Seitenfehlerroutine aufrufen, welche in Hardware implementiert ist.
  • Anderweitig speichert Block 88 den I/O-Seitendeskriptor von der Deskriptorsegment-Seitentabelle 56 in einem Arbeitsregister der Registerdatei 46 der CPU 0 4-2. Die Stelle im Speicher 8 des I/O-Deskriptors wird erzeugt, indem die virtuelle Kanalnummer zur physischen Seitenrahmennummer des I/O-Seitendeskriptors addiert wird.
  • Entscheidungsblock 90 vergleicht die in dem I/O-Seitendeskriptor gespeicherte Tabellengröße mit der virtuellen Kanalnummer, um sicherzustellen, kann. Wenn die virtuelle Kanalnummer größer als die Größe ist, dann ruft 92 eine Trap 37 auf, wobei eine virtuelle Kanalnummer-Grenznummer angezeigt wird.
  • Wenn die I/O-Deskriptortabelle 58 groß genug ist, dann holt Block 94 den I/O-Deskriptor von Speicher 8 und speichert ihn in einem Arbeitsregister der CPU 0 4-2, Registerdatei 46.
  • Der Entscheidungsblock 96 testet das Validitätsbit (V) 0 des I/O-Seitendeskriptors und verzweigt zu Block 98, wenn das Bit rückgesetzt ist, um eine I/O-Fehlertrapnummer 37 anzuzeigen.
  • Anderweitig berechnet Block 100 Reff von den Ringbits 0 und 1 des virtuellen I/O-Befehls.
  • Reff ist der Maximalwert (am wenigsten privilegierte) der Ringe, in welchem die Befehle gespeichert sind, welche die IOLD oder I/O-Befehle bilden.
  • Entscheidungsblock 101 testet, ob der virtuelle I/O-Befehl ein I/O-Befehl Figur 2A, 2B oder 2C, oder ein IOLD-Befehl, Figur 2D ist, indem das OP-Codefeld der Anweisung in Speicher 8 untersucht wird, welche den Befehl eingeleitet hat. Wenn die Anweisung einen IO-Befehl aufruft, dann testet der Entscheidungsblock 103 den Wert Reff gegen R1 im I/O- Deskriptor. Wenn der Wert von Reff größer als R1 ist, dann leitet Block 105 eine I/O-Zugrfffsfehleroperation einer Trap 38 ein. Wenn Reff kleiner oder gleich R1 ist, dann verzweigt die Firmware zu Block 118, welcher die virtuelle Kanalnummer durch die physische Kanalnummer vom I/O-Deskriptor der I/O-Deskriptortabelle 58 ersetzt.
  • Entscheidungsblock 102 testet das D-Bit 9 des virtuellen I/O-Befehls. Wenn Bit 9 einen Vorrichtungseingabebefehl anzeigt, testet der Entscheidungsbtock 108, ob das R-Bit 1 des I/O-Deskriptors gesetzt ist, und ob Reff kleiner oder gleich R2 ist, Bits 6 und 7 des I/O-Deskriptors. Wenn ja, dann setzt Block 140 das M-Bit 2 in dem IOLD-Pufferseitendeskriptor. Wenn nein, dann ruft Block 106 einen Zugriffsfehler 38 über die Firmware-Zugriffsprüfung auf.
  • Wenn Entscheidungsblock 102 einen Vorrichtungsausgabebefehl anzeigt, indem der Zustand des D-Bits in den virtuellen IOLD-Befehl getestet wird, dann testet Entscheidungsblock 104, ob das W-Bit des I/O-Deskriptors gesetzt ist und der Wert Reff kleiner oder gleich R1 (Bits 4 und 5) des I/O-Deskriptors ist. Anderweitig erzeugt Block 106 die Trap 38.
  • Block 110 setzt das Modifizier-Bit (N) (Bit 2) des I/O-Seitendeskriptors.
  • Entscheidungsblock 112 testet, ob das I/O-Bit 2 in dem Segmentdeskriptor für den in dem Prozessordeskriptorsegment (PDS) 60 befindlichen IOLD-Puffer gesetzt ist. Wenn nicht gesetzt, dann ruft Block 114 eine Schutzverletzungsroutine einer Trap 14 auf. Anderweitig testet Entscheidungsblock 116, ob die IOLD-Puffergröße kleiner oder gleich 2.048 Bytes ist, indem eine Konstante (2.048) mit den Bereichsdaten-Feldbits 0-15 des Bereichs von Figur 2D, zweiter Zyklus, verglichen wird. Um zu versichern, daß der Bereich die Seite nicht überschreiten wird, prüft die Firmware, daß der Bereich von Figur 2D plus der Verschiebung nicht größer als 2.048 ist. Die Verschiebung wird während der normalen Umsetzung von virtueller zu physischer Adresse berechnet. Wenn einer der Tests versagt, dann ruft Block 114 die Schutzverletzungsroutine der Trap 14 auf.
  • Wenn beide Tests erfolgreich sind, dann ersetzt Block 118 die virtuelle Kanalnummer des virtuellen I/O-Befehls durch die physische Kanalnummer, die in dem I/O-Deskriptor enthalten ist. Die Firmware verzweigt dann zu Block 74, und die IO- oder IOLD-Befehle werden als ein normaler Befehl behandelt und werden durch die Subsysteme behandelt, die mit dem Systembus 2, Figur 1, gekoppelt sind, und zwar wie jeder normale Befehl.

Claims (2)

1.Vorrichtung zum Übersetzen eines virtuellen Ein/Ausgabebefehls in einen physischen Ein/Ausgabebefehl, wobei die Vorrichtung aufweist:
eine erste Einrichtung (52) zum Speichern eines virtuellen Ein/Ausgabebefehls einschließlich einer virtuellen Kanalnummer, die eine Vorrichtung identifizien;
eine zweite Einrichtung (54) zum Speichern eines Deskriptorsegments das einen Benutzer identifizien;
eine erste Tabeileneinrichtung, die an die erste Einrichtung gekoppelt ist und auf einen ersten Abschnitt der Kanalnummer, die in der ersten Einrichtung gespeichert ist, antwortet: wobei die erste Tabelleneinrichtung an die zweite Einrichtung gekoppelt ist und auf das Deskriptorsegment, das einen Benutzer identifiziert und in der zweiten Einrichtung gespeichert ist, antwortet, und zwar zum Lokalisieren eines Ein/Ausgabeseitendeskriptors, der eine Familie von Vorrichtungen, die tür den Benutzer verfügbar sind, identifiziert;
eine zweite Tabeileneinrichtung, die mit der ersten Einrichtung und der ersten Tabelleneinrichtung gekoppeit ist und auf die Kanalnumrner und den Ein/Ausgabeseitendeskriptor antwortet, zum Lokalisieren eines Ein/Ausgabedeskriptors einschließlich einer physischen Kanalnummer der die Vorrichtung identifiziert; und
eine dritte Einrichtung, die mit der ersten Einrichrung und der zweiten Tabeileneinrichtung gekoppeit ist und Vergleichereinrichtungen aufweist zum Verifizieren eines Benutzervorrechts, indem ein Benutzerzugriff auf eine Vorrichtung über den Benutzerdeskriptor und eine eigene virtuelle Ein/Ausgabebefehlsoperation bestimmt wird. und in Antwort auf die Verifizierung des Benutzervorrechts zum Ersetzen der virtuellen Kanalnummer durch die physische Kanalnummer, wodurch der physische Ein/Ausgabebefehl erzeugt wird.
2. Sicheres Verfahren zum Übersetzen eines virtuellen Ein/Ausgabebefehls in einen physischen Ein/Ausgabebefehl: und zwar in einem System, bei dem der virtuelle Ein/Ausgabebefehl in ein erstes Register (52) eingegeben wird, wobei der Befehl eine virtuelle Kanalnummer und das Benutzervorrecht (Ringnummer) des Prozessors, der den Befehl darbietet, enthält: wobei das System weiterhin einen Segmentdeskriptor eingibt, der einzigartig für den Benutzer in einem zweiten Register (54) ist: wobei das Verfahren gekennzeichnet ist durch:
der Deskriptor enthält die Basisadressen der Stelle in einem Speicher, der eine Gruppe (56) von Seitendeskriptoren hält:
Bestimmen der Adresse in dem Speicher eines bestimmten der Seitendeskriptoren, indem die Basisadresse, die in dem zweiten Register gehalten ist, und ein Teil der virtuellen Kanalnummer, die in dem ersten Register gehalten ist, kombiniert werden:
Verwenden der Adresse des einen Seitendeskriptors, um auf den Speicher zuzugreifen um den einen Seitendeskriptor zu holen;
Bestimmen der Adresse in dem Speicher eines bestimmten Ein/Ausgabedeskriptors (58) durch Kombinieren eines Abschnitts des einen Seitendeskriptors und der virtuellen Kanalnummer, die in dem ersten Register gehalten ist;
Verwenden der Adresse des bestimmten Ein/Ausgabedeskriptors, um den bestimmten Ein/Ausgabedeskriptor zu holen, wobei der Ein/Ausgabedeskriptor eine Darstellung eines erforderlichen Vorrechts (Ringnummer) eines Prozesses, dem es erlaubt ist, den Ein/Ausgabedeskriptor zu verwenden, und eine physische Kanalnummer enthält;
Vergleichen des erforderlichen Vorrechts, das aus der Darstellung bestimmt wird, die in dem Ein/Ausgabedeskriptor enthalten ist, wobei das Benutzervorrecht in dem Befehl enthalten ist: und
wenn das Benutzervorrecht innerhalb des Vorrechtsbereichs liegt, der durch das erforderliche Vorrecht gewährt wird. Erzeugen eines physischen Ein/Ausgabebefehls unter Verwendung der physischen Kanalnummer, die in dem Ein/Ausgabedeskriptor enthalten ist.
DE3889816T 1987-08-07 1988-08-03 Virtuelle Ein/Ausgabebefehle. Expired - Fee Related DE3889816T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/083,534 US4858117A (en) 1987-08-07 1987-08-07 Apparatus and method for preventing computer access by unauthorized personnel

Publications (2)

Publication Number Publication Date
DE3889816D1 DE3889816D1 (de) 1994-07-07
DE3889816T2 true DE3889816T2 (de) 1995-01-19

Family

ID=22178948

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3889816T Expired - Fee Related DE3889816T2 (de) 1987-08-07 1988-08-03 Virtuelle Ein/Ausgabebefehle.

Country Status (15)

Country Link
US (1) US4858117A (de)
EP (1) EP0306702B1 (de)
JP (1) JPH0199147A (de)
KR (1) KR940003325B1 (de)
CN (1) CN1014841B (de)
AU (1) AU611468B2 (de)
CA (1) CA1315007C (de)
DE (1) DE3889816T2 (de)
DK (1) DK439088A (de)
ES (1) ES2053640T3 (de)
FI (1) FI883566A (de)
IL (1) IL87295A (de)
MX (1) MX166611B (de)
NO (1) NO174528B (de)
YU (1) YU151988A (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0333215B1 (de) * 1988-03-18 1994-08-31 Wang Laboratories Inc. Verteilte Referenz- und Änderungstabelle für ein virtuelles Speichersystem
US5063496A (en) * 1988-06-01 1991-11-05 International Business Machines Corporation Signaling attempted transfer to protected entry point bios routine
JP2776841B2 (ja) * 1988-09-28 1998-07-16 株式会社日立製作所 ディスク制御装置におけるディスクアクセス制御方法
US4984272A (en) * 1988-11-30 1991-01-08 At&T Bell Laboratories Secure file handling in a computer operating system
US5117491A (en) * 1989-03-31 1992-05-26 Bull Hn Information Systems Inc. Ring reduction logic using parallel determination of ring numbers in a plurality of functional units and forced ring numbers by instruction decoding
EP0398492B1 (de) * 1989-05-15 1997-01-22 International Business Machines Corporation Flexible Schnittstelle für Beglaubigungsdienste in einem verteilten Datenverarbeitungssystem
US5469556A (en) * 1989-12-12 1995-11-21 Harris Corporation Resource access security system for controlling access to resources of a data processing system
US6507909B1 (en) * 1990-02-13 2003-01-14 Compaq Information Technologies Group, L.P. Method for executing trusted-path commands
US5574912A (en) * 1990-05-04 1996-11-12 Digital Equipment Corporation Lattice scheduler method for reducing the impact of covert-channel countermeasures
US5315657A (en) * 1990-09-28 1994-05-24 Digital Equipment Corporation Compound principals in access control lists
US5253344A (en) * 1991-09-05 1993-10-12 International Business Machines Corp. Method and apparatus for dynamically changing the configuration of a logically partitioned data processing system
US5432934A (en) * 1993-07-26 1995-07-11 Gensym Corporation Access restrictions as a means of configuring a user interface and making an application secure
US6289390B1 (en) 1993-08-18 2001-09-11 Microsoft Corporation System and method for performing remote requests with an on-line service network
US5603059A (en) * 1994-04-22 1997-02-11 Pitney Bowes Inc. Software architecture system having a virtual I/O channel including multi-layered communication interface in between virtual stations and physical modules
US5774668A (en) * 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US6901433B2 (en) * 1995-06-07 2005-05-31 Microsoft Corporation System for providing users with a filtered view of interactive network directory obtains from remote properties cache that provided by an on-line service
US5933599A (en) * 1995-07-17 1999-08-03 Microsoft Corporation Apparatus for presenting the content of an interactive on-line network
US5941947A (en) * 1995-08-18 1999-08-24 Microsoft Corporation System and method for controlling access to data entities in a computer network
US5956509A (en) * 1995-08-18 1999-09-21 Microsoft Corporation System and method for performing remote requests with an on-line service network
US5875352A (en) * 1995-11-03 1999-02-23 Sun Microsystems, Inc. Method and apparatus for multiple channel direct memory access control
JP2982702B2 (ja) * 1996-08-30 1999-11-29 日本電気株式会社 ディスク装置
US6105132A (en) * 1997-02-20 2000-08-15 Novell, Inc. Computer network graded authentication system and method
US5961626A (en) * 1997-10-10 1999-10-05 Motorola, Inc. Method and processing interface for transferring data between host systems and a packetized processing system
FR2770918B1 (fr) * 1997-11-07 1999-12-10 Gemplus Card Int Procede de gestion securise d'une memoire
EP0944257A1 (de) * 1998-03-06 1999-09-22 CANAL+ Société Anonyme Multimedia-Endgerät für mehrere Benutzer
US7305451B2 (en) * 1998-08-24 2007-12-04 Microsoft Corporation System for providing users an integrated directory service containing content nodes located in different groups of application servers in computer network
US7343441B1 (en) * 1999-12-08 2008-03-11 Microsoft Corporation Method and apparatus of remote computer management
US7082615B1 (en) * 2000-03-31 2006-07-25 Intel Corporation Protecting software environment in isolated execution
US6990579B1 (en) * 2000-03-31 2006-01-24 Intel Corporation Platform and method for remote attestation of a platform
US6714930B1 (en) 2000-05-31 2004-03-30 International Business Machines Corporation Lightweight directory access protocol, (LDAP) trusted processing of unique identifiers
US6978324B1 (en) * 2000-06-27 2005-12-20 Emc Corporation Method and apparatus for controlling read and write accesses to a logical entity
US7065610B1 (en) * 2000-06-27 2006-06-20 Emc Corporation Method and apparatus for maintaining inventory of logical volumes stored on storage elements
US7036122B2 (en) * 2002-04-01 2006-04-25 Intel Corporation Device virtualization and assignment of interconnect devices
AU2004272083B2 (en) * 2003-09-12 2009-11-26 Emc Corporation System and method for risk based authentication
DE10353210A1 (de) * 2003-11-13 2005-06-16 Siemens Ag Sichere Erfassung von Eingabewerten
US8781975B2 (en) * 2004-05-21 2014-07-15 Emc Corporation System and method of fraud reduction
JP4499008B2 (ja) * 2005-09-15 2010-07-07 富士通マイクロエレクトロニクス株式会社 Dma転送システム
US7682578B2 (en) 2005-11-07 2010-03-23 Geo2 Technologies, Inc. Device for catalytically reducing exhaust
US7682577B2 (en) 2005-11-07 2010-03-23 Geo2 Technologies, Inc. Catalytic exhaust device for simplified installation or replacement
US7722828B2 (en) 2005-12-30 2010-05-25 Geo2 Technologies, Inc. Catalytic fibrous exhaust system and method for catalyzing an exhaust gas
JP5285969B2 (ja) * 2008-06-11 2013-09-11 シロキ工業株式会社 ドアロック装置
US7530106B1 (en) 2008-07-02 2009-05-05 Kaspersky Lab, Zao System and method for security rating of computer processes
US10620687B2 (en) * 2014-12-22 2020-04-14 Intel Corporation Hybrid power management approach
US10489335B1 (en) * 2018-09-28 2019-11-26 Silicon Motion, Inc. Apparatus and method and computer program product for accessing a memory card

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1329721A (en) * 1970-05-26 1973-09-12 Plessey Co Ltd Data processing devices
US4092715A (en) * 1976-09-22 1978-05-30 Honeywell Information Systems Inc. Input-output unit having extended addressing capability
US4084227A (en) * 1976-09-24 1978-04-11 Sperry Rand Corporation Virtual address translator
US4155119A (en) * 1977-09-21 1979-05-15 Sperry Rand Corporation Method for providing virtual addressing for externally specified addressed input/output operations
US4320456A (en) * 1980-01-18 1982-03-16 International Business Machines Corporation Control apparatus for virtual address translation unit
US4419728A (en) * 1981-06-22 1983-12-06 Bell Telephone Laboratories, Incorporated Channel interface circuit providing virtual channel number translation and direct memory access
JPS58195230A (ja) * 1982-05-10 1983-11-14 Hitachi Ltd チヤネル制御装置

Also Published As

Publication number Publication date
NO174528C (de) 1994-05-18
EP0306702B1 (de) 1994-06-01
DK439088A (da) 1989-02-08
CN1033119A (zh) 1989-05-24
EP0306702A2 (de) 1989-03-15
CA1315007C (en) 1993-03-23
IL87295A (en) 1992-05-25
YU151988A (en) 1991-08-31
KR940003325B1 (ko) 1994-04-20
FI883566A0 (fi) 1988-07-29
CN1014841B (zh) 1991-11-20
FI883566A (fi) 1989-02-08
JPH0199147A (ja) 1989-04-18
MX166611B (es) 1993-01-21
KR890004230A (ko) 1989-04-20
DK439088D0 (da) 1988-08-05
US4858117A (en) 1989-08-15
AU2052288A (en) 1989-02-09
NO174528B (no) 1994-02-07
EP0306702A3 (en) 1990-08-29
JPH0578858B2 (de) 1993-10-29
NO883493D0 (no) 1988-08-05
DE3889816D1 (de) 1994-07-07
NO883493L (no) 1989-02-08
IL87295A0 (en) 1989-01-31
AU611468B2 (en) 1991-06-13
ES2053640T3 (es) 1994-08-01

Similar Documents

Publication Publication Date Title
DE3889816T2 (de) Virtuelle Ein/Ausgabebefehle.
DE68923627T2 (de) Steuerungsverfahren und -vorrichtung für Nullursprungsdatenräume.
DE69032254T2 (de) Rechner mit Tastaturkennwortfunktionen
DE3688978T2 (de) Seitenspeicherverwaltungseinheit mit der fähigkeit nach wahl mehrere adressräume zu unterstützen.
DE3587694T2 (de) Speicherzugriffssteuergerät zur Realisierung von geschützten Gebieten in einem Speicher, und mit solchem Speicherzugriffssteuergerät ausgerüsteter Speicher.
DE112005002405B4 (de) Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung
DE3587039T2 (de) Computer mit virtuellem maschinenmodus und mehrfachen schutzringen.
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE3689209T2 (de) Direkte Ein-- und Ausgabe in einer virtuellen Speicheranordnung.
DE69029504T2 (de) Verfahren zum Übersetzen und Kopieren von Adressen
DE2459006C2 (de) Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage
DE102018115489A1 (de) Krypto-erzwungene rechte für isolation
DE10394383B4 (de) Verfahren und Vorrichtung zum Laden eines vertrauenswürdigen Betriebssystems
DE3751426T2 (de) Busschnittstellenschaltung für digitalen Datenprozessor.
DE2716051C2 (de) Datenverarbeitungsanlage mit einem oder mehreren Prozessoren mit mindestem einem Ein-/Ausgabekanal mit mehreren Unterkanälen und mit einer Speicheranordnung, bei der zum Speicherzugriff Schlüssel verwendet werden
DE69531112T2 (de) Mechanismus zum verknüpfen von dateien auf einem emulierten system mit dem zentralsystem für den zugriff durch emulierte systembenutzer
DE112009000344B4 (de) Zugriffsrechte auf eine Speicher-Map
DE3783370T2 (de) Schaltung zur blockierungsverhinderung von hochprioritaetsanforderungen an eine systemsteuerung.
EP0319134A2 (de) Zugriff auf einen geschützten Speicher
DE102009017496B4 (de) Speicherzugriff in einem System mit Speicherschutz
DE112007001988T5 (de) Gemeinsames Nutzen von Informationen durch Gäste in einer Virtuelle-Maschine-Umgebung
DE112005002298T5 (de) Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen
DE102018115670A1 (de) Technologien für die Ausführung von nicht vertrauenswürdigem Code mit Prozessor-Sandbox-Unterstützung
DE112006001642T5 (de) Adressfensterunterstützung für Direktspeicherzugriffsumsetzung
DE3131204A1 (de) Adressumrechnungs- und generatoranordnung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: BULL HN INFORMATION SYSTEMS INC., BILLERICA, MASS.

8339 Ceased/non-payment of the annual fee