[go: up one dir, main page]

DE4040992A1 - DATA PROCESSING SYSTEM - Google Patents

DATA PROCESSING SYSTEM

Info

Publication number
DE4040992A1
DE4040992A1 DE4040992A DE4040992A DE4040992A1 DE 4040992 A1 DE4040992 A1 DE 4040992A1 DE 4040992 A DE4040992 A DE 4040992A DE 4040992 A DE4040992 A DE 4040992A DE 4040992 A1 DE4040992 A1 DE 4040992A1
Authority
DE
Germany
Prior art keywords
subsystem
area
call
environment
frame
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.)
Granted
Application number
DE4040992A
Other languages
German (de)
Other versions
DE4040992C2 (en
Inventor
Konrad K Lai
Frederick J Pollack
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE4040992A1 publication Critical patent/DE4040992A1/en
Application granted granted Critical
Publication of DE4040992C2 publication Critical patent/DE4040992C2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)

Description

Moderne Datenverarbeitungssysteme sind so konzipiert, daß alle Informationen innerhalb des Systems durch Hardware er­ kannte, speicherresidente Informationsstrukturen, die Objekte genannt werden, repräsentiert sind. Dieses wird als objektori­ entierte Rechnerarchitektur bezeichnet. Ein Objekt stellt ein Datenpaket aufeinander bezogener Informationen dar, die in ei­ ner logisch zusammenhängend adressierten Menge von Speicher­ plätzen verwaltet werden.Modern data processing systems are designed so that all information within the system through hardware knew, memory-resident information structures, the objects are called, are represented. This is called objektori termed computer architecture. An object stops Data packet of related information that in ei a logically contiguous addressed amount of memory be managed.

In einem solchen objektorientierten Datenverarbeitungssy­ stem besitzt jeder Objekttyp oder jede Objektklasse eine Anzahl von Operationen, die an Objekten ausgeführt werden dürfen, wel­ che ebenfalls zu dieser Klasse gehören. Dies wird als objektbe­ zogener Zugangsmechanismus bezeichnet. Die interne Struktur der Objekte ist dem Programmierer nicht zugänglich; er kann ledig­ lich mit erlaubten Operationen die Objekte manipulieren. Zugang zu einem Objekt erhält man mittels eines auf das Objekt gerich­ teten Zeigers, der als Zugangsdeskriptor bezeichnet wird. Die­ ser Zugangsdeskriptor beschreibt die Art der Repräsentations­ rechte (rep), wie zum Beispiel Lese- oder Schreibrechte, die die verschiedenen, vom Inhaber des Zugangsdeskriptors für das Objekt erlaubten Zugangsarten definiert.In such an object-oriented data processing system Each object type or class has a number operations that may be performed on objects, wel also belong to this class. This is called objectbe termed access mechanism. The internal structure of the Objects is not accessible to the programmer; he can single with allowed operations to manipulate the objects. Access to an object you get by means of a on the object court tiled pointer, which is called an access descriptor. the This access descriptor describes the type of representation rights (rep), such as reading or writing, the the various, from the owner of the access descriptor for the Object defined access types defined.

In einem in der US-Patentanmeldung 4 55 625 beschriebenen System wird die Komplexität der Programmierung in einem ob­ jektorientierten Computersystem durch die Kennung von in Spei­ chern gespeicherten Wörtern reduziert, so daß der Schutzmecha­ nismus zwischen gewöhnlichen Daten und geschützten Zugangs­ deskriptoren unterscheiden kann. Diese Art von Schutz bezeich­ net man als einen leistungsbezogenen Schutzmechanismus entgegen der älteren statusbezogenen Schutzmechanismen. Ein statusbezo­ gener Schutzmechanismus basiert auf einem Überwachungsprogramm­ status und einem Benutzerstatus, wobei privilegierte Befehle lediglich im Überwachungszustand ausgeführt werden können. Um Kompatibilität mit älteren, kennungslosen und neuen Betriebssy­ stemen mit Kennung herzustellen, ist das Mapping von Überwa­ cheraufrufen eines Betriebssystems ohne Kennung auf ein Be­ triebssystem mit Kennung wünschenswert.In one described in US patent application 4 55 625 System will increase the complexity of programming in one jector-oriented computer system by the identifier of in Spei saved words, so that the protective mechanism between ordinary data and protected access descriptors can differ. This type of protection is called net as a performance-related protection mechanism the older status-related protection mechanisms. A status-related The protection mechanism is based on a monitoring program status and user status, with privileged commands can only be executed in the monitoring state. Around Compatibility with older, dangling and new operating systems To create stemen with identifier is the mapping of Überwa  Calling an operating system without an ID on a Be drive system with identifier desirable.

Daher besteht eine Aufgabe der vorliegenden Erfindung darin, einen Aufruf/Return-Mechanismus bereitzustellen, der mit einerseits einem leistungsbezogenen Schutzmechanismus und ande­ rerseits einem statusbezogenen Schutzmechanismus funktionieren kann.Therefore, an object of the present invention to provide a call / return mechanism with on the one hand a performance-related protection mechanism and others on the other hand, a status-based protection mechanism can.

Die oben beschriebenen Aufgaben werden erfindungsgemäß da­ durch erreicht, daß ein erstes Prozessorobjekt und eine erste Ausführungsumgebung, die mit einem ersten Bereichsobjekt ver­ knüpft ist, definierendes erstes Prozeßobjekt und eine mit ei­ nem zweiten Bereichsobjekt verknüpfte zweite Ausführungsumge­ bung vorgesehen sind. Ein erstes Umgebungstabellenobjekt wird mit dem ersten Prozeß verknüpft. Dieses erste Umgebungstabel­ lenobjekt beinhaltet einen Subsystemverbindungsinformationen enthaltenden Steuerkellerspeicher (Steuerstack), der ein Feld von Steuerkellerspeichereinträgen darstellt, die den Status der ersten, aufrufenden Ausführungsumgebung zur Wiederherstellung durch Rückkehr von der zweiten Ausführungsumgebung bewahrt.The above-described objects are provided according to the invention achieved by a first processor object and a first Execution environment that verifies with a first range object is linked, defining first process object and one with egg second execution set associated with the second range object are provided. A first environment table object becomes linked to the first process. This first environment bar lenobjekt contains a subsystem connection information containing Steuerkellerspeicher (tax stack), a field of control cell storage entries representing the status of the first, calling execution environment for recovery by returning from the second execution environment.

Das erste Bereichsobjekt beinhaltet einen Zugangsdeskriptor der Region 0 zur Bezugnahme auf das die Region 0 der zweiten (Ziel-) Ausführungsumgebung definierende Objekt, die das Ziel eines Subsystemaufrufes ist, und ferner einen Zugangsdeskriptor der Region 1 zur Referenz des Objekts, welches die Region 1 der zweiten (Ziel-) Ausführungsumgebung definiert, die das Ziel ei­ nes Subsystemaufrufes ist, sowie ein Subsystem ID, welches auf einen Eintrag in einer Subsystemtabelle in der innerhalb des ersten Prozeßobjekts verknüpften ersten Umgebungstabelle zeigt. Ein Subsystemeintrag in der Subsystemtabelle spezifiziert das die Region 2 der Zielausführungsumgebung definerende Objekt, den Rahmenzeiger und den Kellerspeicherzeiger des obersten Kel­ lerspeicherrahmens in der Zielumgebung. Ein Überwachungskeller­ speicherzeiger, d. h. eine lineare Adresse (in Worten) für den Überwachungskellerspeicher, der beim Aufrufen eines Überwa­ chungsaufrufs in dem Benutzermodus (anstelle eines Kellerspei­ cherzeigers in dem aktuellen Rahmen) zur Lokalisierung des neuen Rahmens benutzt wird, ist vorgesehen.The first area object includes a region 0 access descriptor for referring to the object defining region 0 of the second (target) execution environment, which is the target of a subsystem call, and also an access descriptor of region 1 for referencing the object, which is the region 1 of FIG defines a second (target) execution environment, which is the target of a subsystem call, and a subsystem ID, which points to an entry in a subsystem table in the first environment table associated within the first process object. A subsystem entry in the subsystem table specifies the object defining the region 2 of the destination execution environment, the frame pointer, and the cellar memory pointer of the topmost window storage frame in the target environment. A watchdog memory pointer, ie, a linear address (in words) for the watchdog store used in invoking a watch call in the user mode (instead of a cell memory pointer in the current frame) to locate the new frame, is provided.

Das erste Bereichsobjekt beinhaltet ferner Prozedurein­ träge, die den Typ und die Adresse der Zielprozedur spezifizie­ ren. Jeder dieser Prozedureinträge beinhaltet ein Prozedurein­ tragstypenfeld, welches den aufzurufenden Prozedurentyp anzeigt und allerdings nicht ausschließlich eine Überwachungsprozedur und eine Subsystemprozedur und einen Offset in die Zielausfüh­ rungsumgebung enthält. Dieser Offset spezifiziert den ersten Befehl der Zielprozedur.The first domain object further includes procedures idle, specifying the type and address of the destination procedure Each of these procedure entries includes a procedure Support type field, which indicates the type of procedure to be called and not just a monitoring procedure and a subsystem procedure and an offset into the destination execution environment contains. This offset specifies the first one Command of the target procedure.

Gemäß einem Aspekt der Erfindung enthält das Umgebungsta­ bellenobjekt zwei Datenstrukturen, eine Subsystemtabelle und einen Steuerkellerspeicher. Die Subsystemtabelle ortet alle Kellerspeicherobjekte des Bereichs 2 und ihren dazugehörigen obersten Rahmen und ihre einem Prozeß zugeordneten Keller­ speicherzeiger.According to one aspect of the invention, the environment stack object includes two data structures, a subsystem table and a control store memory. The subsystem table locates all of the cell store objects of area 2 and their associated topmost frame and their cell store pointers associated with a process.

Gemäß einer Weiterbildung der Erfindung wird ein aktuelle Subsystem ID in dem zweiten Prozeßobjekt zusammen mit dem aktu­ ellen Subsystemtabellenoffset für den aktuellen Subsystemein­ trag in die mit dem ersten Prozeß verknüpfte Subsystemtabelle und andererseits die lineare Adresse des obersten Rahmen und des Kellerspeicherzeigers in dem Subsystemeintrag unter der Be­ dingung bewahrt, daß ein Subsystem mittels eines Aufrufs eines anderen Subsystems verlassen wird.According to one embodiment of the invention is a current Subsystem ID in the second process object together with the aktu Subsystem table offset for the current subsystem into the subsystem table associated with the first process and on the other hand, the linear address of the uppermost frame and the cellar memory pointer in the subsystem entry under the Be preserves a subsystem by means of a call of a another subsystem is left.

Diese und andere Aufgaben, Eigenschaften und Vorteile der Erfindung werden aus der folgenden detaillierten Beschreibung eines Ausführungsbeispiels der Erfindung deutlich, das in den Zeichnung dargestellt ist. In den Zeichnungen zeigt:These and other tasks, features and benefits of The invention will become apparent from the following detailed description an embodiment of the invention, which in the Drawing is shown. In the drawings shows:

Fig. 1 ein Blockschaltbild von Prozessorregistern und Sy­ stemobjekten, in welchem die Erfindung realisiert ist; Fig. 1 is a block diagram of processor registers and Sy stemobjekten in which the invention is implemented;

Fig. 2 ein detailliertes Blockschaltbild der linearen Adreßraumstruktur der Ausführungsumgebung von Fig. 1; Fig. 2 is a detailed block diagram of the linear address space structure of the execution environment of Fig. 1;

Fig. 3 ein detailliertes Blockschaltbild eines Bereichsob­ jekts von Fig. 1; FIG. 3 is a detailed block diagram of a region object of FIG. 1; FIG.

Fig. 4 ein detailliertes Blockschaltbild eines Proze­ dureintrags in dem Bereichsobjekt von Fig. 2; FIG. 4 is a detailed block diagram of a process entry in the region object of FIG. 2; FIG.

Fig. 5 ein detailliertes Blockschaltbild des Umgebungsta­ bellenobjekts von Fig. 1; Fig. 5 is a detailed block diagram of the ambient state object of Fig. 1;

Fig. 6 ein detailliertes Blockschaltbild eines Subsyste­ meintrags des Umgebungstabellenobjekts von Fig. 5; Fig. 6 is a detailed block diagram of a subsystem entry of the environment table object of Fig. 5;

Fig. 7 ein detaillierste Blockschaltbild des Steuerkeller­ speichereintrags des Umgebungstabellenobjekts von Fig. 5; Fig. 7 is a most detailed block diagram of the control cell storage entry of the environment table object of Fig. 5;

Fig. 8 und 9 ein Ablaufdiagramm des Aufrufsystembefehls; Figs. 8 and 9 are a flowchart of the calling system command;

Fig. 10 ein Ablaufdiagramm der Intersubsystemaufrufsubrou­ tine des Aufrufsystembefehls von den Fig. 8 und 9; und Fig. 10 is a flow chart of the intersubsystem call subroutines of the polling system command of Figs. 8 and 9; and

Fig. 11 ein Ablaufdiagramm der Intrasubsystemaufrufsubrou­ tine des Aufrufsystembefehls der Fig. 8 und 9. Fig. 11 is a flowchart of Intrasubsystemaufrufsubrou tine of the call instruction system of FIG. 8 and 9.

Eine objektorientierte Rechnerarchitektur in einem Daten­ verarbeitungssytem ist so konzipiert, daß alle Informationen innerhalb des Systems durch Hardware-erkannte, speicherresi­ dente Informationsstrukturen, die Objekte genannt werden, re­ präsentiert sind. Ein Objekt stellt ein Datenpaket aufeinander bezogener Informationen dar, die in einer zusammenhängend adressierten Menge von Speicherplätzen verwaltet werden.An object-oriented computer architecture in a data processing system is designed to contain all information within the system by hardware-recognized, memory resi dente information structures called objects, re are presented. An object puts a data packet on top of each other related information in a coherent way addressed amount of memory spaces are managed.

In einem solchen objektorientierten Datenverarbeitungssy­ stem besitzt jeder Objekttyp oder jede Objektklasse eine Anzahl von Operationen, die an Objekten ausgeführt werden dürfen, wel­ che ebenfalls zu dieser Klasse gehören. Dies wird als objektbe­ zogener Zugangsmechanismus bezeichnet. Die interne Struktur der Objekte ist dem Programmierer nicht zugänglich; er kann ledig­ lich mit erlaubten Operationen die Objekte manipulieren. Zugang zu einem Objekt erhält man mittels eines auf das Objekt gerich­ teten Zeigers, der als Zugangsdeskriptor bezeichnet wird. Die­ ser Zugangsdeskriptor beschreibt die Art der Repräsentations­ rechte (rep), wie zum Beispiel Lese- oder Schreibrechte, die die verschiedenen, dem Inhaber des Zugangsdeskriptors für das Objekt erlaubten Zugangsarten definiert.In such an object-oriented data processing system Each object type or class has a number operations that may be performed on objects, wel also belong to this class. This is called objectbe termed access mechanism. The internal structure of the Objects is not accessible to the programmer; he can single with allowed operations to manipulate the objects. Access to an object you get by means of a on the object court tiled pointer, which is called an access descriptor. the  This access descriptor describes the type of representation rights (rep), such as reading or writing, the the various, the owner of the access descriptor for the Object defined access types defined.

In der Beschreibung eines Prozesses ist ein Operator das, was die an Operanden durchzuführenden Tätigkeiten anzeigt. Ein Operand wird gewöhnlich durch einen Adreßteil eines Befehls identifiziert. Jeder Befehl spezifiziert einen Operator und mehrere Referenzen. Der Operator spezifiziert gegenüber dem Prozessor, welche Hardwareoperation durchgeführt wird, und die Referenzen wählen die zu benutzenden oder zu manipulierenden Operanden. Der in einem Befehl spezifizierte Operator ist in zwei Feldern codiert, dem Klassenfeld und dem Operationscode­ feld. Das Klassenfeld spezifiziert die Operatorklasse, zu wel­ cher der Operator gehört; das Operationscodefeld wählt die aus dieser Klasse heraus durchzuführende Hardwareoperation.In the description of a process, an operator is the, which indicates the activities to be performed on operands. On Operand is usually given by an address part of a command identified. Each command specifies an operator and several references. The operator specifies that Processor, which hardware operation is performed, and the References select the one to use or manipulate Operands. The operator specified in a command is in encoded two fields, the class field and the opcode field. The class field specifies the operator class, to wel the operator belongs; the opcode field selects them out of this class of hardware operation.

Ausführungsumgebungexecution environment

Ein Prozeß sieht einen ebenen, linearen Adreßraum, aus dem er Daten, Befehle und Kellerspeicherraum zuordnet. Ein Abrufbe­ fehl bildet einen neuen Kellerspeicherrahmen (Aktivierungs-da­ tensatz) auf einem sequentiell zugeordneten Kellerspeicher. Mehr Informationen über Kellerspeicherrahmen können in der US-PS 48 11 208 gefunden werden.A process sees a flat, linear address space from which he assigns data, commands and cellar storage space. A callback fails forms a new basement storage frame (Activation da Tensatz) on a sequentially allocated basement memory. More information about basement storage frames can be found in the US-PS 48 11 208 can be found.

Eine Ausführungsumgebung besteht aus den folgenden Objek­ ten: einem linearen Adreßraum, einer Gruppe von Global- und Gleitpunktregistern, einem Befehlszeiger und einem Arithmetik­ steuerregister.An execution environment consists of the following object a linear address space, a group of global and Floating-point registers, an instruction pointer, and arithmetic tax register.

Die Globalregister werden beim Überschreiten von Prozeßbe­ reichsgrenzen nicht angetastet. Eines dieser Register beinhal­ tet den aktuellen Rahmenzeiger (FP), während der Rest aus Uni­ versalregistern besteht. Dieser FP enthält die lineare Adresse (Zeiger) in die aktuelle Ausführungsumgebung für den aktuellen (obersten) Kellerspeicherrahmen. Die mit einem Prozeß verknüpf­ ten Globalregister werden in dem Prozeßsteuerblock gesichert, während keine Prozeßausführung abläuft.The global registers are displayed when the process is exceeded Reich borders not touched. One of these registers beinhal sets the current frame pointer (FP) while the rest is Uni general registers. This FP contains the linear address (Pointer) into the current execution environment for the current one (top) basement storage frame. The associated with a process global registers are saved in the process control block,  while no process execution is running.

Ebenfalls werden in dem Prozeßsteuerblock die mit einen Prozeß verknüpften Gleitpunktregister gesichert, während der Prozeß nicht läuft. Eine Ausführungsumgebung entspricht einem prozeßweiten Adreßraum in anderen Systemen. Das System unter­ stützt pro Prozeß mehrfache Ausführungsumgebungen, jedoch kann lediglich eine Ausführungsumgebung zu einer bestimmten Zeit für jeden Prozeß aktiv sein.Also in the process control block are those with a Process linked floating-point registers saved while the Process is not running. An execution environment is equivalent to one process-wide address space in other systems. The system under supports multiple execution environments per process, but can only one execution environment at a given time for to be active every process.

Die Arithmetiksteuerungen werden zur Steuerung der Arithme­ tik- und Fehlereigenschaften der numerischen Befehle und zur Speicherung der Bedingungscodes benutzt. Ist ein Prozeß ausge­ setzt, so wird die Arithmetiksteuerungsinformation in dem Pro­ zeßsteuerblock bewahrt. Wird eine Aufrufoperation zu einem neuen Rahmen durchgeführt, wird der Return-Befehlszeiger im Kellerspeicherrahmen in dem aktuellen, linearen Adreßraum ge­ speichert.The arithmetic controls are used to control the arithmetic tic and error properties of the numerical commands and to Storage of condition codes used. Is a process ended? If so, the arithmetic control information in the Pro stored control block. Becomes a call operation to a new frame is performed, the return instruction pointer is in the Cellar storage frame in the current, linear address space stores.

Befehlszeigerinstruction pointer

Der Befehlszeiger (IP) ist eine lineare Adresse (Zeiger) in den aktuellen, linearen Adreßraum zum ersten Byte des aktuellen Befehls.The instruction pointer (IP) is a linear address (pointer) in the current, linear address space to the first byte of the current one Command.

Das Registermodell besteht aus den sechzehn Globalregistern und vier Gleitpunktregistern die über Prozeßbereichsgrenzen hinaus geschützt werden, und aus Mehrfachgruppen von sechzehn lokalen (oder Rahmen-) Registern. Das Registermodell ist in der oben benannten US-Patentanmeldung 9 35 193 näher beschrieben.The register model consists of the sixteen global registers and four floating point registers across process area boundaries Be protected, and from multiple groups of sixteen local (or frame) registers. The register model is in the described above US Patent Application 9 35 193.

Zu jeder Zeit kann ein Befehl sechsunddreißig der Register wie folgt adressieren:At any one time, an instruction can have thirty-six of the registers address as follows:

Registertypregister type Registernameregister name Globalregister|G0 . . . G15Global register | G0. , , G15 Gleitpunktregister (Gleitpunktoperand)Floating point register (floating point operand) FP0 . . . FP 3FP0. , , FP 3 Lokalregisterlocal register L0 . . . L15L0. , , L15

GlobalregisterGlobal register

Es gibt sechzehn mit einem Prozeß verknüpfte Register, die, während der Prozeß nicht aktiviert ist, im Prozeßsteuerblock gespeichert sind.There are sixteen registers associated with a process which, while the process is not activated, in the process control block are stored.

Von den sechzehn 32-Bit-Registern enthält G15 den aktuellen Rahmenzeiger (FP) und G0 . . . G14 sind Universalregister. Der FP beinhaltet die lineare Adresse des aktuellen (obersten) Keller­ speicherrahmens. Da Kellerspeicherrahmen auf SALIGN*16 Byte-Be­ reichsgrenzen ausgerichtet sind (SALIGN ist ein von einer spe­ ziellen Implementation abhängiger Wert), werden die N niedrig bewerteten Bits des FP ignoriert und immer als Null interpre­ tiert (N ist durch SALIGN*16 = 2**N gegeben). Dieses Register wird durch Aufruf initialisiert und durch Rückläufe (returns) zurückgeführt.Of the sixteen 32-bit registers, G15 contains the current one Frame pointer (FP) and G0. , , G14 are universal registers. The FP contains the linear address of the current (top) cellar memory frame. Since basement storage frame is set to SALIGN * 16 byte loading aligned (SALIGN is one of a spe dependent implementation), the N become low ignored valued FP bits and always interpreting as zero (N is given by SALIGN * 16 = 2 ** N). This register is initialized by call and by returns recycled.

Eine Referenz auf ein Register als ein Operand, der größer als 32 Bits ist, verwendet die Register mit aufeinanderfolgend höheren Registernummern.A reference to a register as an operand that is larger is 32 bits, uses the registers with consecutive higher register numbers.

Gleitpunktregisterfloating-point registers

Es gibt vier mit einem Prozeß verknüpfte Gleitpunktregi­ ster, die, während kein Prozeßablauf stattfindet, im Prozeß­ steuerblock gespeichert werden. Gleitpunktregister sind nur als Operanden von Gleitpunktbefehlen zugänglich.There are four floating point regi associated with a process In the process, while no process is taking place be stored in the control block. Floating point registers are only available as Operands accessible from floating point instructions.

Lokale (oder Rahmen-) RegisterLocal (or frame) registers

Die Register L0 . . . L15, die Lokalregister bezeichnen keine Register gewöhnlicher Art; sie sind Prozeßaufrufen zugeordnet, und die Zuordnung wird auf Returns hin rückgängig gemacht.The registers L0. , , L15, the local registers denote none Register of the ordinary kind; they are assigned to process calls, and the mapping is undone on returns.

Es sind mehrfache Bänke von Lokalregistern vorgesehen, näm­ lich je eine pro Prozeßaktivierung, soweit das Programm die Re­ gister nicht explizit speichern und zurückbringen muß.Multiple banks of local registers are provided, viz one per process activation, as far as the program contains the Re gister does not need to explicitly save and return.

Müssen diese Register in einem Speicher gespeichert werden, so werden sie in den ersten sechzehn Wörtern des Kellerspei­ cherrahmens des zugehörigen Prozesses gespeichert. Sie reprä­ sentieren die ersten sechzehn Wörter des Kellerspeicherrahmens, soweit das Register L0 in die lineare Adresse FP+0 bis FP+3, das Register Li in die lineare Adresse FP+4i bis FP+4i+3 abge­ bildet wird usw..If these registers have to be stored in a memory, they are stored in the first sixteen words of the cell memory frame of the associated process. They represent the first sixteen words of the cellar memory frame as far as the register L 0 is formed into the linear address FP + 0 to FP + 3, the register Li is formed into the linear address FP + 4i to FP + 4i + 3, etc.

Da Befehle an Wortbereichsgrenzen (4-Byte) beginnen müssen, sind die zwei niedrig bewerteten (low-order) Bits des Befehls­ zeigers immer Null.Because commands must begin at word boundary (4-byte), are the two low-order bits of the command pointer always zero.

Arithmetiksteuerungenarithmetic controls

Die Arithmetiksteuerungen (AC) werden zur Steuerung der Arithmetik- und Fehlereigenschaften der numerischen Befehle und zur Speicherung der Bedienungscodes benutzt. Ist ein Prozeß un­ terbrochen, so werden die Arithmetiksteuerungen in dem Prozeß­ steuerblock gespeichert.The arithmetic controls (AC) are used to control the Arithmetic and error properties of numeric commands and used to store the operating codes. Is a process un broken, so are the arithmetic controls in the process stored in the control block.

Arithmetiksteuerungen (AC) beinhalten die folgenden Infor­ mationen:
Bedingungscode (Bits 0-2): Eine Gruppe von durch Ver­ gleichsbefehle (und andere Befehle) gesetzte und durch bedingte Verzweigungsbefehle (und andere Befehle) untersuchten Flags.
Arithmetic Control (AC) includes the following information:
Condition Code (Bits 0-2): A set of flags set by compare instructions (and other instructions) and examined by conditional branch instructions (and other instructions).

Arithmetikstatus (Bits 3-6): Dieses Feld wird als ein Indi­ kator durch bestimmte Gleitpunktbefehle verändert.Arithmetic Status (Bits 3-6): This field is called an Indi changed by certain floating point commands.

Ganzzahlüberlaufflag (Bit 8): Der Flag wird gesetzt, immer wenn ein Ganzzahlüberlauf eintritt und die Maske gesetzt ist. Der Flag wird niemals implizit gelöscht.Integer Overflow Flag (Bit 8): The flag is set, always if an integer overflow occurs and the mask is set. The flag is never deleted implicitly.

Ganzzahlüberlaufmaske (Bit 12): Ist diese Maske gesetzt, so führt ein Ganzzahlüberlauf nicht zu einem Arithmetikfehler. Ist S die Zielgröße, so werden S am niedrigsten bewertete Bits des Ergebnisses im Ziel gespeichert, es sei denn, andere Vorgaben sind gemacht worden.Integer overflow mask (bit 12): If this mask is set, then an integer overflow does not cause an arithmetic error. is S is the target size, then S becomes the least significant bits of the Results stored in the target, unless other specifications have been made.

NO IMPRECISE-Fehler (Bit 15): Ist dieser Fehler (NIF) ge­ setzt, so müssen Fehler präzise sein. Ist NIS gelöscht, können gewisse Fehler unpräzise sein.NO IMPRECISE error (bit 15): Is this error (NIF)? sets, so mistakes must be precise. If NIS is deleted, you can certain mistakes be imprecise.

Gleitpunktüberlaufflag (Bit 16): Der Flag ist gesetzt, im­ mer wenn ein Gleitpunktüberlauf eintritt und die Maske gesetzt ist. Der Flag wird niemals implizit gelöscht.Floating point overflow flag (bit 16): The flag is set, in when a floating point overflow occurs and the mask is set is. The flag is never deleted implicitly.

Gleitpunktunterlaufflag (Bit 17): Der Flag ist gesetzt, im­ mer wenn ein Gleitpunktunterlauf eintritt und die Maske gesetzt ist. Der Flag wird niemals implizit gelöscht.Floating point underflow flag (Bit 17): The flag is set, in when a floating point underflow occurs and the mask is set  is. The flag is never deleted implicitly.

Gleitpunkt-ungültig-op-Flag (Bit 18): Der Flag ist gesetzt, immer wenn eine ungültige Gleitpunktoperation stattfindet und die Maske gesetzt ist. Der Flag wird niemals implizit gelöscht.Floating point invalid op flag (Bit 18): The flag is set, whenever an invalid floating point operation takes place and the mask is set. The flag is never deleted implicitly.

Gleitpunkt-Nulldivision-Flag (Bit 19): Der Flag wird ge­ setzt, immer wenn eine Gleitpunktdivision durch Null stattfin­ det und die Maske gesetzt ist. Der Flag wird niemals implizit gelöscht.Floating Point Zero Division Flag (Bit 19): The flag is loosened sets whenever a floating point division is zero det and the mask is set. The flag never becomes implicit deleted.

Gleitpunkt-Inexakt-Flag (Bit 20): Der Flag ist gesetzt, im­ mer wenn ein inexaktes Gleitpunktresultat auftritt und die Maske gesetzt ist. Der Flag wird niemals implizit gelöscht.Floating Point Inexact Flag (Bit 20): The flag is set, in when an inexact glide point result occurs and the Mask is set. The flag is never deleted implicitly.

Gleitpunktüberlaufmaske (Bit 24): Ist diese gesetzt, so führt ein Gleitpunktüberlauf nicht zu einem REAL_ARITHMETIC- Fehler.Floating point overflow mask (bit 24): If this is set, then Floating point overflow does not lead to a REAL_ARITHMETIC Error.

Gleitpunktunterlaufmaske (Bit 25): Ist diese gesetzt, so führt ein Gleitpunktunterlauf nicht zu einen REAL_ARITHMETIC- Fehler.Floating point underflow mask (bit 25): If this is set, then Floating point underflow does not lead to a REAL_ARITHMETIC Error.

Gleitpunkt-ungültig-op-Maske (Bit 26): Ist diese gesetzt, so führt eine ungültige Gleitpunktoperation nicht zu einen REAL_ARITHMETIC-Fehler.Floating point op-op mask (bit 26): If set, so an invalid floating-point operation does not result in one REAL_ARITHMETIC error.

Gleitpunktnulldivision-Maske (Bit 27): Ist diese gesetzt, so führt eine Gleitpunktdivision durch Null nicht zu einem REAL_ARITHMETIC-Fehler.Floating-point zero-division mask (bit 27): If this is set, Thus, a floating-point division by zero does not lead to a REAL_ARITHMETIC error.

Gleitpunkt-Inexakt-Maske (Bit 28): Ist diese gesetzt, so führt ein inexaktes Gleitpunktresultat nicht zu einen REAL_ARITHMETIC-Fehler.Floating point inexact mask (bit 28): If this is set, then does not lead to an inexact glide point result REAL_ARITHMETIC error.

Gleitpunktnormalisierungsmodus (Bit 29): Ist dieser Modus gesetzt, so werden denormalisierte Zahlen in Reellen, langen Reellen oder erweiterten Reellen zunächst normalisiert, bevor die Arithmetik durchgeführt wird. Besteht dieser Modus nicht, so führen denormalisierte Zahlen zu einem REAL_ARITHMETIC-Feh­ ler.Floating Point Normalization Mode (Bit 29): Is this mode set, then denormalized numbers in real, long Real or extended reals first normalized before the arithmetic is performed. Does this mode not exist so denormalized numbers lead to a REAL_ARITHMETIC error ler.

Gleitpunktrundungssteuerung (Bits 31-30): Dieses Feld zeigt den aktuellen Rundungsmodus für Gleitpunktberechnung an:Slide point rounding control (bits 31-30): This field shows the current rounding mode for floating point calculation:

00 - Rundung zum nächsten (gerade),
01 - Abrunden (in Richtung minus unendlich),
10 - Aufrunden (in Richtung plus unendlich),
11 - Abstreichen (Rundung gegen Null).
00 - rounding to the next one (even),
01 - rounding off (towards minus infinity),
10 - rounding up (towards plus infinity),
11 - skip (rounding to zero).

KellerspeicherrahmenStack frame

Der Kellerspeicherrahmen ist ein zusammenhängender Teil ak­ tuellen linearen Adreßraumes, der Daten stapelweise enthält. Dieser Stapel wächst von den niedrigen Adressen zu den hohen Adressen. Es gibt hierbei einen Kellerspeicherrahmen pro akti­ vierter Prozeß, welcher Lokalvariable, Parameter und Verbin­ dungsinformationen enthält. Eine Aufrufoperation erfaßt einen neuen Kellerspeicherrahmen, während eine Return-Operation die­ sen wieder freigibt. Sobald ein neuer Kellerspeicherrahmen er­ faßt ist, ist er auf eine SALIGN*16 Byte-Bereichsgrenze ausge­ richtet, in der SALIGN ein vordefinierter Wert ist.The basement storage frame is a contiguous part ak linear linear address space containing data in batches. This stack grows from low addresses to high ones Addresses. There is a basement storage per akti fourth process, which local variable, parameters and verbin contains information about the training. A call operation detects a new basement storage frame, while a return operation the release again. As soon as a new basement storage frame he is set, it is set to a SALIGN * 16 byte range limit in which SALIGN is a predefined value.

Die Seite oder das Einfachobjekt, in die oder das die er­ sten 64 Bytes eines Rahmens abgebildet werden, müssen Lokalle­ bensdauer besitzen. Die Lebensdauer der Seite oder des Einfach­ objekts wird während eines Aufrufs überprüft. Diese Restriktion ist für die effiziente Manipulation von Zugangsdeskriptoren in den Lokalregistern notwendig.The page or the simple object into which he or she 64 bytes of a frame must be mapped possess own lifetime. The life of the page or the simple object is checked during a call. This restriction is for the efficient manipulation of access descriptors in necessary to the local registers.

Zusätzlich zu dem Erfordernis, daß ein Rahmen auf eine Lo­ kalseite oder ein lokales Einfachobjekt abgebildet wird, wird das gemischte Bit der Seite oder des Objektdeskriptors gesetzt, obwohl kein Kennungsbit in den Rahmen geschrieben sein muß. Diese Restriktion ist wiederum zur effizienten Manipulation von Zugangsdeskriptoren in den Lokalregistern notwendig. Die Felder in den Kellerspeicherrahmen werden wie folgt definiert:
Auffüllbereich: Dieser Bereich wird zur Ausrichtung des Rahmenzeigers auf die nächste SALIGN 16 Byte-Bereichsgrenze be­ nutzt. Die Größe dieses Bereichs variiert von Null bis SA­ LIGN*16-1 Bytes. Wird eine Aufrufoperation durchgeführt, so wird der Auffüllbereich addiert, um den Kellerspeicherzeiger des Aufrufers auf die nächste Bereichsgrenze zu runden, damit der Rahmenzeiger für diesen Rahmen gebildet werden kann. Ist der Kellerspeicherzeiger des Aufrufers schon ausgerichtet, so fehlt der Auffüllbereich.
In addition to the requirement that a frame be mapped to a local page or a local simple object, the mixed bit of the page or object descriptor is set, although no tag bit must be written to the frame. This restriction is again necessary for the efficient manipulation of access descriptors in the local registers. The fields in the basement storage frames are defined as follows:
Padding area: This area is used to align the frame pointer to the next SALIGN 16 byte area boundary. The size of this range varies from zero to SA LIGN * 16-1 bytes. When a call operation is performed, the padding area is added to round the calling memory cellar pointer to the next range boundary so that the frame pointer for that frame can be formed. If the cellar memory pointer of the caller is already aligned, the padding area is missing.

Rahmenstatus (L0): Der Rahmenstatus erfaßt nach einem Auf­ ruf die mit dem Rahmen verknüpften Informationen, die bei einem Rücksprung aus dem Rahmen benutzt werden sollen. Die Felder ei­ nes Rahmenstatus werden wie folgt definiert:
Returnstatus RRR (Bits 0-2): Dieses 3-Bit-Feld erfaßt den in der Bildung dieses Rahmens benutzten Aufrufmechanismus und wird zur Auswahl des zum Return benutzten Return-Mechanismus verwendet. Die Codierungen dieses Feldes sind:
Frame status (L0): The frame status, after a call, captures the information associated with the frame that should be used when returning from the frame. The fields of a frame status are defined as follows:
Return Status RRR (Bits 0-2): This 3-bit field captures the call mechanism used in forming this frame and is used to select the return mechanism used for the return. The encodings of this field are:

000 Lokal,
001 Fehler,
010 Überwacher, Ablaufverfolgung wurde vor dem Aufruf inak­ tiviert,
011 Überwacher, Ablaufverfolgung wurde vor dem Aufruf akti­ viert,
100 Subsystem (Intrasubsystem),
101 Subsystem (Intersubsystem),
110 Ruheunterbrechung,
111 Unterbrechung.
000 local,
001 error,
010 monitor, trace was disabled before call,
011 Supervisor, trace was enabled before the call,
100 subsystem (intrasubsystem),
101 subsystem (intersubsystem),
110 break,
111 interruption.

Prereturn-Ablaufverfolgung, P (Bit 3): Während eines Re­ turns von einem Rahmen bei einem auf Eins stehenden Prereturn- Ablaufverfolgungsbit tritt eine Prereturnablaufverfolgung (falls aktiviert) ein, bevor irgendeine Bedienungsvorgangsver­ knüpfung mit der Return-Operation durchgeführt wird. Dieses Bit ist bei einem Aufruf zu Null initialisiert, wenn keine Aufruf- Ablaufverfolgung eintritt; ansonsten ist es zu Eins initiali­ siert.Prereturn trace, P (bit 3): During a Re turns from a frame in a single-prereturn Trace bit occurs prereturn trace (if enabled) before any operation procedure linkage with the return operation. This bit is initialized on a call to zero, if no call Tracing occurs; otherwise it is initiali to one Siert.

Vorhergehender Rahmen-Zeiger, PFP (Bit 4-31): Eine lineare Adresse zum ersten Byte des vorhergehenden Rahmens. Da Rahmen auf Bereichsgrenzen von sechzehn Bytes oder mehr ausgerichtet sind, werden lediglich die 28 signifikantesten Bits des Rahmen­ zeigers gespeichert. Previous Frame Pointer, PFP (Bit 4-31): A linear Address to the first byte of the previous frame. As frame aligned to area boundaries of sixteen bytes or more are only the 28 most significant bits of the frame saved.  

Während eines Aufrufes wird das RRR-Feld wie folgt initia­ lisiert:During a call, the RRR field becomes initia as follows lisiert:

000 - Lokalaufruf oder Überwacheraufruf aus dem Überwa­ chungsmodus,
001 - Fehleraufruf,
01T - Überwacheraufruf von dem Benutzermodus,
100 - Intrasubsystem-Aufruf,
101 - Intersubsystem-Aufruf,
110 - Unterbrechungsaufruf aus dem Ruhezustand,
111 - Unterbrechungsaufruf aus dem Ausführungszustand
000 - Local call or monitor call from monitor mode,
001 - error call,
01T - monitor call from the user mode,
100 - intrasubsystem call,
101 - intersubsystem call,
110 - Interrupt call from hibernation,
111 - Interrupt call from the execution state

T stellt den Wert des Ablaufverfolgungaktivierungsflag aus den Prozeßsteuerungen dar. Bei allen Returns werden die PRRR- Bits wie folgt interpretiert:T outputs the value of the trace enable flag process controls. For all returns, the PRRR Bits interpreted as follows:

1xxx Erzeugung einer Prereturn-Ablaufverfolgung,
0000 Durchführung eines lokalen Returns,
0001 Durchführung eines Fehlerreturns,
001T im Überwachermodus Durchführung eines Überwacher-Re­ turns.
1xxx generation of a prereturn trace,
0000 performing a local return,
0001 execution of an error return,
001T in supervisor mode performing a supervisor reset.

Das T-Bit wird in den Prozeßsteuerungen dem Ablaufverfol­ gungaktivierungsbit zugeordnet, das Ausführungsmodus-Bit wird auf Benutzer gesetzt. Ansonsten wird ein lokaler Return durch­ geführt.The T bit is traced in the process controllers associated with the activation bit, which becomes the execution mode bit set to user. Otherwise, a local return will occur guided.

010x Durchführung eines Subsystem-Returns,
0110 Durchführung eines Ruheunterbrechungs-Returns,
0111 Durchführung eines Unterbrechungs-Returns.
010x execution of a subsystem return,
0110 Execution of a rest interruption return,
0111 Performing an interrupt return.

Kellerspeicherzeiger, SP (L1): Dieses stellt eine lineare Adresse zum ersten freien Byte des Stapels dar, d. h. die Adresse des letzten Byte in dem Stapel plus Eins. Der SP wird durch die Aufrufoperation dazu initialisiert, auf den FP plus 64 zu zeigen.Basement memory pointer, SP (L1): This represents a linear Address to the first free byte of the stack, d. H. the Address of the last byte in the stack plus one. The SP will initialized by the call operation to the FP plus 64 to show.

Return-Befehlszeiger, RIP (L2): Wenn eine Aufrufoperation an einem neuen Rahmen durchgeführt wird, so wird der Return-Be­ fehlszeiger hier gespeichert. Wird der Prozeß unterbrochen, so wird der Befehlszeiger des nächsten Befehls hier gespeichert. Return instruction pointer, RIP (L2): If a call operation is performed on a new frame, the return be error pointer stored here. If the process is interrupted, so the instruction pointer of the next instruction is stored here.  

Er enthält eine 32-Bit lineare Adresse an die die Steuerung nach Rückkehr zu diesem Rahmen zurückgegeben wird. Der Inhalt des Return-Befehlszeigers des aktuellen Rahmens ist nicht defi­ niert. Es besteht die Implikation, daß ein Prozeßaufruf den Be­ fehlszeiger in einem Register des aktuellen Rahmens speichert. Da implizite Prozeßaufrufe eintreten können (aufgrund von Feh­ lern und Unterbrechungen), sollten Programme dieses Register nicht für andere Zwecke benutzen.It contains a 32-bit linear address to the controller after returning to this frame is returned. The content of the return instruction pointer of the current frame is not defi ned. There is the implication that a process call the Be stores the miss pointer in a register of the current frame. Because implicit process calls can occur (due to errors) learning and interruptions), programs should use this registry do not use for other purposes.

Lineare AdreßraumstrukturLinear address space structure

Jede Ausführungsumgebung definiert einen 32-Bit linearen Adreßraum, der, wie in Fig. 2 gezeigt ist, in vier Bereiche (Bereiche 0-3) aufgeteilt ist. Die ersten drei Bereiche einer Ausführungsumgebung sind spezifisch für den aktuellen Prozeß (z. B. durch den Prozeßsteuerungsblock definiert). Die Zusammen­ stellung dieser prozeßspezifischen Bereiche kann durch einen Subsystem-Aufruf/-Return geändert werden. Der vierte Bereich einer Ausführungsumgebung wird von allen Prozessen gemeinsam benutzt d. h. von dem Prozeßsteuerungsblock definiert). Das Sy­ stem schränkt dabei nicht ein, wo in dem linearen Adreßraum Be­ fehle, Kellerspeicherrahmen oder Daten platziert sind.Each execution environment defines a 32-bit linear address space which, as shown in Fig. 2, is divided into four areas (areas 0-3 ). The first three regions of an execution environment are specific to the current process (eg, defined by the process control block). The composition of these process-specific areas can be changed by a subsystem call / return. The fourth area of an execution environment is shared by all processes ie defined by the process control block). The Sy stem does not limit, where in the linear address space Be missing, cellar storage frame or data are placed.

Dem System vorbehalten sind das physikalische Adreß-Mapping von linearen Adressen von 16#e000_0000′ bis 16#efff_ffff# oder die Bereich-3-Offsets von 16#2000_0000 bis 16#2fff_ffff#. Diese Plätze können für das Objekt des Bereichs 3 in physikalische Adressen unabhängig vom Objektadressiermechanismus abgebildet werden.Reserved to the system are the physical address mapping of linear addresses from 16 # e000_0000 'to 16 # efff_ffff # or the range 3 offsets from 16 # 2000_0000 to 16 # 2fff_ffff #. These locations can be mapped into physical addresses for the area 3 object independent of the object addressing mechanism.

Ein statischer linearer Adreßraum mit transparenten Be­ reichsgrenzen kann durch gemeinsames Bezutzen von Seitentabel­ len erreicht werden, wenn alle Bereiche zweiseitig sind. Die Zugangsdeskriptoren zu den vier Bereichen werden immer so in­ terpretiert, als hätten sie Lese/Schreib-Repräsentationsrechte. Es ist nicht möglich, jeden Bereich mittels Zugangsdeskriptor- Repräsentationsrechten unterschiedlich zu schützen. Seitenebe­ nenschutz kann zum feineren Kornschutz benutzt werden. Darüber­ hinaus muß die Implementation die Kennungsbits auf den Be­ reichszugangsdeskriptoren nicht überprüfen (d. h. sie hat die Option, Zugangsdeskriptoren erforderlich zu machen oder Daten als Bereichszugangsdeskriptoren zu interpretieren).A static linear address space with transparent Be Reichsgrenzen can by common use of Seitentabel be achieved when all areas are two-sided. The Access descriptors to the four areas are always so in interpreted as having read / write representation rights. It is not possible to access each area using the access descriptor Protect representation rights differently. Seitenebe Protection can be used for finer grain protection. above  In addition, the implementation must include the tag bits on the Be do not check riches descriptors (that is, they have the Option to require access descriptors or data to interpret as scope access descriptors).

Die Größe jedes Bereichs kann unabhängig geändert werden. Es entsteht am Ende eines Bereichs eine Lücke, wenn das zur De­ finition eines Bereichs benutzte Objekt weniger als ein Giga­ byte ist.The size of each area can be changed independently. It creates a gap at the end of an area, when the de Finition of an area used object less than a giga byte is.

Es kann ein Einfachobjekt zur Definition eines Bereichs be­ nutzt werden, wenn das Objekt entweder 512, 1K, 2K oder 4K By­ tes groß ist. Die Basisadresse eines Einfachbereichsobjekts muß auf physikalische Adreßbereichsgrenzen ausgerichtet sein, wel­ che Vielfache ihrer Größe sind. Wird ein Einfachobjekt zur De­ finition eines Bereichs benutzt, werden Länge und Basisadresse des Einfachobjekts als den obigen Anfordernissen genügend be­ trachtet.It can be a simple object to define an area be used when the object is either 512, 1K, 2K or 4K By This is great. The base address of a single-range object must be be directed to physical address area boundaries, wel are multiples of their size. If a simple object to De The finition of an area uses length and base address of the simple object as the above requirements seeks.

Wenn ein Prozeß abläuft, müssen alle vier Bereiche einmalig sein (in dem Sinne, daß jeder ein unterschiedliches Auftreten eines Bereichsdeskriptors haben muß).When a process expires, all four areas must be unique (in the sense that everyone has a different appearance an area descriptor must have).

Ist der Fehlerbehandler für virtuelle Speicherfehler kein Subsystem-Fehlerbehandler, geschieht das folgende. Für jegli­ chen Prozeß in dem Ausführungsstatus, dem Ready-Status oder blockierten Status, müssen die Deskriptoren dessen Bereich als gültig markiert sein (d. h. die V-Flags müssen gesetzt sein).The virtual memory error handler is not Subsystem error handler, the following happens. For anybody process in the execution state, the ready state, or blocked status, the descriptors must have its area as be valid (that is, the V flags must be set).

Befehlsschutzcommand protection

Damit der Prozessor Befehle ausführen kann, sind Leserechte für Speicherplätze notwendig, die Befehle beinhalten.For the processor to be able to execute commands, it is read-only necessary for memories containing instructions.

Befehl-CachespeicherungCommand-caching

Das System erlaubt ein Nur-Lese-Caching von Bytes in dem Befehlsstrom in einer intransparenten Weise. Die Befehl-Cache- Speicherung ist unabhängig von dem Cache-speicherbaren Bit in der Seite, wo Befehle lokalisiert sind. Selbstmodifizierte Pro­ gramme werden durch das System nicht in einer transparenten Weise unterstützt. The system allows read-only caching of bytes in the Instruction stream in a non-transparent manner. The command cache Storage is independent of the cache-storable bit in the page where commands are located. Self-modified Pro gramme are not in a transparent by the system Way supported.  

Lokaler ProzeßmechanismusLocal process mechanism

Ein Prozeß beginnt bei einer beliebigen Wortadresse in ei­ nem linearen Adreßraum. Prozeßaufrufe und -returns benutzen einen Stapel in dem linearen Adreßraum, wie in Fig. 1 darge­ stellt.A process begins at any word address in a linear address space. Process calls and returns use a stack in the linear address space, as shown in FIG .

Es sind hierbei zwei Parametermeldungsmechanismen möglich:
Globalregister: Parameter werden durch den Aufrufer in die Globalregister kopiert und (falls nötig) durch den Aufgerufenen nach dem Aufruf aus den Globalregistern herauskopiert. Return- oder Ergebnisparameter werden durch den Aufgerufenen in die Globalregister kopiert und durch den Aufrufer aus den Globalre­ gistern nach einem Return herauskopiert. Dieses wird für Pro­ zesse mit einer geringen Anzahl von Parametern optimiert.
Two parameter message mechanisms are possible:
Global register: Parameters are copied by the caller into the global registers and (if necessary) copied out by the called party after the call from the global registers. Return or result parameters are copied to the global registers by the called party and copied out by the caller from the global registers after a return. This is optimized for processes with a small number of parameters.

Argumentenliste: Ein Argumentenzeiger auf eine Argumenten­ liste auf dem Stapel wird benutzt. Dies ist als Escape-Mecha­ nismus gedacht, wenn es mehr Parameter gibt, als mittels der Globalregister weitergemeldet werden können.Argument List: An argument pointer to an argument list on the stack is used. This is called Escape Mecha nism, if there are more parameters than by means of the Global registers can be forwarded.

Der Globalregister-Weg ist hierbei immer schneller als der Weg des Argumentenzeigers. Daher sollte der letztgenannte Weg lediglich als Escape-Mechanismus und nicht als einziger Mecha­ nismus benutzt werden.The global register way is always faster than that Path of the argument pointer. Therefore, the latter way should be only as an escape mechanism and not the only mecha be used.

Wenn ein Prozeß niemals einen anderen Prozeß aufruft, kann er das Kopieren seiner Parameter von den Globalregistern auf den Kellerspeicherrahmen vermeiden.If a process never invokes another process, can he copying his parameters from the global registers avoid the basement storage frame.

Befehlecommands

Lokalaufruf
CALL
CALL_EXTENDED.
local call
CALL
CALL_EXTENDED.

CALL und CALL_EXTENDED rufen die Prozeß an der spezifizier­ ten Adresse auf. CALL spezifiziert die Prozeß als Befehlszeiger plus einer 24-Bit-Verschiebung. CALL_EXTENDED spezifiziert die Prozeß mittels einer Allgemeinspeicher-Effektivadresse.CALL and CALL_EXTENDED call the process at the specifier address. CALL specifies the process as an instruction pointer plus a 24-bit shift. CALL_EXTENDED specifies the Process by means of a general storage effective address.

Während der Aufrufoperation wird ein neuer Kellerspeicher­ rahmen zugeordnet und wird der Steuerablauf auf den spezifi­ zierten Prozeß übertragen.During the call operation becomes a new cellar memory assigned to the framework and the tax procedure is based on the specifi  transferred process.

Return-Befehls-ReturnReturn command return

Der Return-Befehl überträgt die Steuerung zurück zu der Aufrufprozedur und gibt den Kellerspeicherrahmen des aufgerufe­ nen Prozesses frei. Die Befehlsausführung läuft bei dem Befehl, auf den der Returnbefehlszeiger (RIP) in dem Rahmen des aufge­ rufenen Prozesses zeigt, weiter.The return command transfers the control back to the Call procedure and gives the cellar storage frame of the called free of charge. The command execution runs at the command, to which the Return Command Pointer (RIP) in the frame of the further process.

Verschiedene BefehleVarious commands

MODIFY_AC
FLUSH_LOCAL_REGISTERS
CONVERT_ADDRESS
MODIFY_AC
FLUSH_LOCAL_REGISTERS
CONVERT_ADDRESS

MODIFY_AC wird zum Lesen oder zur Modifikation der aktuel­ len Arithmetriksteuerungen benutzt. FLUSH_LOCAL_REGISTERS schreibt alle Lokalregistersätze außer den aktuellen in ihre zugehörigen Rahmen im Speicher. Da die Bereichszugangsdeskrip­ toren nicht direkt zugänglich sind, kann der CONVERT_ADDRESS- Befehl zur Konvertierung einer linearen Adresse in eine virtu­ elle Adresse benutzt werden.MODIFY_AC is used to read or modify the current len arithmetic controls used. FLUSH_LOCAL_REGISTERS writes all local register sets except the current ones into theirs associated frame in memory. Since the area access descrip are not directly accessible, the CONVERT_ADDRESS Command to convert a linear address into a virtu same address can be used.

Der Mikroprozessor ist logisch in fünf größere Einheiten unterteilt: Die Befehlabrufeinheit, den Befehlsdecodierer und Mikrobefehlsortierer, den Adressenumsetzpuffer, den Logalbus­ sortierter und die Ganzzahlausführungs- und Gleitpunkteinheit.The microprocessor is logical in five larger units subdivided: the instruction fetch unit, the instruction decoder and Microinstruction sorter, the address translation buffer, the logical bus sorted and the integer execution and floating point unit.

Inter-UmgebungstransferInter-area transfer

Verwiesen sei auf Fig. 1. Inter-Umgebungsaufrufe/-Returns führen zu synchroner Kommunikation zwischen Ausführungsumgebun­ gen. Zusätzlich zu einem 2-Status-Schutzmechanismus (Benutzerstatus und Überwacherstatus) unterstützt das System ebenfalls einen Objekt-orientierten, Schutzmechanismus auf Sub­ system-Basis.Reference is made to Figure 1. Inter-environment calls / returns result in synchronous communication between execution environments. In addition to a 2-status protection mechanism (user status and monitor status), the system also supports an object-oriented, subsystem-based protection mechanism.

Gemäß der vorliegenden Erfindung ist der Prozeßaufruf über Umgebungsbereichsgrenzen vorgesehen, damit ein Prozeß Zugang zu solchen Datenstrukturen und Prozeduren gewinnen kann, die an­ sonsten für eine Umgebung privat sind. Ein Bereichsobjekt wird zur Darstellung des "öffentlichen" Interface einer Umgebung be­ nutzt. Ein Bereichsobjekt wird ebenfalls als Interface für einen bereichsbasierenden und einen Überwacher-Aufrufmechanis­ mus verwendet. Ein Bereichsobjekt beinhaltet eine Prozedurta­ belle, die die Adressen und Typen (Subsystem oder Überwacher) aller öffentlicher Prozeduren bzw. Operationen enthält. Der Be­ griff "Subsystem-Transfer" (Aufruf/Return) wird zur Beschrei­ bung des Subsystem-Schutzmechanismus benutzt. Der Begriff Überwachertransfer" wird zur Beschreibung des Überwacher­ schutzmechanismus benutzt.According to the present invention, the process call is via Surroundings boundaries provided to allow a process access to such data structures and procedures can win otherwise for a private environment. An area object becomes to represent the "public" interface of an environment be  uses. An area object is also used as an interface for an area-based and a supervisor call mechanism mus used. An area object includes a procedure ta belle, the addresses and types (subsystem or supervisor) all public procedures or operations. The Be handle "subsystem transfer" (call / return) becomes a descrip- tion use of the subsystem protection mechanism. The term Supervisor Transfer "becomes the description of the supervisor protection mechanism used.

Ausführungsmodiexecution modes

Es können zwei Ausführungsmodi auftreten, der Benutzermodus und der Überwachermodus, so daß konventionelle Betriebssysteme emuliert werden können. Das System definiert hierbei nicht den Begriff eines privilegierten Befehls. Es können alle Befehle entweder im Benutzermodus oder im Überwachermodus ausgeführt werden. Ein Programm wird durch die Art seiner Zugangsrechte und seinen Ausführungsmodus privilegiert. Zugangsrechter werden als Repräsentationsrechte (rep rights) bezeichnet, wie Nur- Lese-, Lese/Schreib-Rechte oder kein Zugang. Die Seitenreprä­ sentationsrechte in dem aktuellen linearen Adreßraum werden verschieden, abhängig von dem Ausführungsmodus interpretiert. Vom Betriebssystem benutzter Speicher besitzt generell Seiten­ repräsentationsrechte, die den Benutzerzugang nicht erlauben, die aber Nur-Lese-Rechte oder Lese/Schreib-Rechte in dem Über­ wachungsmodus haben.There may be two execution modes, user mode and the supervisor mode, so that conventional operating systems can be emulated. The system does not define the Concept of a privileged command. It can handle all commands either in user mode or in supervisor mode become. A program is governed by the nature of its access rights and privileges its execution mode. Become more accessible as rep rights, as Nuremberg Read, read / write rights or no access. The page representation be sentation rights in the current linear address space different, depending on the execution mode interpreted. Memory used by the operating system generally has pages representation rights that do not allow user access, but the read-only rights or read / write rights in the About have watch mode.

In Systemen mit inaktivierter Kennung kann das Kennungsbit auch nicht zur Unterscheidung zwischen Daten und Zeigern auf Zugangsdeskriptoren (ADs) genannten Daten benutzt werden. Da alle Operanden Kennungsbits von Null haben, führt jeder Ver­ such, Befehle oder Operandenspezifizierer auszuführen, die einen Zugangsdeskriptor erfordern, zu einem Fehler in dem Be­ nutzermodus. In dem Überwachermodus wird der Fehler inaktiviert und werden die Daten als ein Zugangsdeskriptor behandelt. Die­ ser Überwachungsmodus erlaubt die Ausführung von Befehlen, die Zugangsdeskriptoren als Operanden benutzen (z. B. erfordert der Befehl Senden einen Zugangsdeskriptor zu einen Portobjekt).In systems with disabled identifier, the identifier bit also not to distinguish between data and pointers Access Descriptors (ADs). There all operands have tag bits of zero, each ver performs to execute instructions or operand specifiers that require an access descriptor, an error in the Be user mode. In supervisor mode, the error is disabled and the data is treated as an access descriptor. the This monitor mode allows you to execute commands that  Use access descriptors as operands (eg, the Command sending an access descriptor to a port object).

In Systemen mit aktivierter Kennung besteht der einzige Un­ terschied zwischen dem Benutzer- und Überwachermodus in der In­ terpretation der Seitenrepräsentationsrechte. Die automatische Interpretation von Daten als Zugangsdeskriptoren in dem Überwa­ chungsmodus wird nicht unterstützt. Befehle, die Zugangsde­ skriptoren erfordern, können dann ausgeführt werden, wenn der spezifizierte Operand einen Zugangsdeskriptor darstellt.In systems with activated identifier, the only Un difference between the user and supervisor mode in the In Interpretation of the page representation rights. The automatic Interpretation of Data as Access Descriptors in the Survey The backup mode is not supported. Commands, the access require scribes can then be executed when the specified operand represents an access descriptor.

In einem System ohne Kennung besteht der einzige Weg, den Ausführungsmodus fehlerfrei auf Überwachungsmodus zu ändern, in dem Befehl CALL_SYSTEM. Der Systembericht beinhaltet einen Satz von Eintragsprozeduren für das Betriebssystem.In a system without an identifier, the only way is the Execution mode to change to audit mode error free, in the command CALL_SYSTEM. The system report contains a sentence entry procedures for the operating system.

ÜberwacherprozedurmechanismusSupervisor procedure mechanism

Der Überwacherprozeduraufruf ist einem Lokalaufruf ähnlich. Wenn eine Überwacherprozedur in der Prozedurtabelle in einem Bereichsobjekt spezifiziert ist, so spezifiziert das Bereichs­ objekt den neuen Überwacher-Kellerspeicherzeiger. Wenn der Pro­ zeß sich im Benutzermodus abspielt, so wird dieser Überwacher- Kellerspeicherzeiger als neuer Rahmenzeiger benutzt. Befindet sich der Prozeß schon im Überwachermodus, so wird der Keller­ speicherzeiger im aktuellen Rahmen auf die nächste 64-Byte-Be­ reichsgrenze ausgerichtet, um den neuen Rahmenzeiger zu bilden. Dies erlaubt den Aufruf von Überwacherprozeduren aus einer Überwacherprozedur heraus. Der Überwacherkellerspeicher muß da­ bei eingefroren sein. Dies stellt einen Intra-Ausführungsumge­ bung-Transfer dar, mit der Ausnahme, daß der Ausführungsmodus (und die Ablaufverfolgungsaktivierung) des Prozesses als Teil des Aufrufes geändert werden kann.The supervisor procedure call is similar to a local call. If a supervisor procedure in the procedure table in a Area object is specified, so specifies the area object the new supervisor basement store pointer. If the pro If it is in user mode, this monitor will Cellar memory pointer used as a new frame pointer. is If the process already in the supervisor mode, so will the basement Memory pointer in the current frame to the next 64-byte Be aligned to form the new frame pointer. This allows calling supervisor procedures from one Supervisor procedure out. The supervisor store must there be frozen at. This represents an intra-execution environment tion transfer, except that the execution mode (and the trace activation) of the process as part of the call can be changed.

Das Return-Statusfeld wird zur Signalisierung eines Überwa­ cher-Returns bei einem Return aus dem Rahmen benutzt. Ein Über­ wacherreturn wird lediglich dann durchgeführt, wenn der Prozess sich zu Beginn des Befehls im Überwachermodus befindet. Anson­ sten wird ein Lokal-Return durchgeführt. Dies verhindert die Modifikation der Ablaufsteuerung und die Auswahl von entweder einem Fehler oder einem Unterbrechungs-Return durch eine Opera­ tion im Benutzermodus.The return status field is used to signal a monitor cher returns when using a return from the frame. An over Alarm clock is only performed when the process is in supervisor mode at the beginning of the command. Anson a local return is performed. This prevents the  Modification of the flow control and the selection of either an error or an interrupt return by an Opera tion in user mode.

Der Überwacher-Prozedurmechanismus wird bei einfachen Be­ triebssystemen ohne Kennung verwendet, die lediglich zwei Kel­ lerspeicher bzw. Stapel (Benutzerkellerspeicher und Überwacher­ kellerspeicher) erfordern, welche denselben linearen Adreßraum und zwei Schutzebenen gemeinsam benutzen.The supervisor procedure mechanism becomes simple used without identification, the only two Kel memory or stack (user store memory and monitor cellar memory), which require the same linear address space and share two levels of protection.

Schutz auf Subsystem-BasisProtection on a subsystem basis

In Fig. 1 ist ein Subsystemtransfermechanismus dargestellt. Die Ausführungsumgebungen benutzen einen bereichsbasierenden Schutzmechanismus. Die Zielausführungsumgebung eines Subsystem­ aufrufes wird durch den Inhalt eines Bereichsobjekts 100 defi­ niert. Die Prozedurtabelle 102 in einem Bereichsobjekt ist un­ abhängig von derjeningen in einem anderen Bereich für dieselbe Ausführungsumgebung; somit können ausgewählte Prozeduren in dem Bereich mittels eines anderen Bereichsobjekts zusammengefaßt werden. Diese Eigenschaft unterstützt auch Prozeß- bzw. Proze­ durvariablen.In Fig. 1, a subsystem transfer mechanism is shown. The execution environments use a region-based protection mechanism. The target execution environment of a subsystem call is defined by the content of a scope object 100 . The procedure table 102 in one area object is independent of those in another area for the same execution environment; Thus, selected procedures in the area can be grouped together using another area object. This property also supports process or process variables.

Öffentliche Informationen oder einer Umgebung zugeordnete Objekte können für in anderen Umgebungen ausführende Programme zugänglich sein. Diese Objekte sind durch ein Bereichsobjekt zugänglich, welches den Zugriff (durch andere Ausführungsumge­ bungen) auf lediglich die öffentlichen Prozeduren, öffentliche Konstanten und öffentliche Variablen eines Datenpakets be­ schränkt.Public information or an environment associated with it Objects can run programs running in other environments be accessible. These objects are through an area object accessible, the access (by other Ausführungsumge exercises) on public procedures only, public Constants and public variables of a data package limits.

Private Informationen oder einer Umgebung zugeordnete Ob­ jekte sind nicht direkt über ein Bereichsobjekt von anderen Ausführungsumgebungen aus zugänglich. Objekte und Daten, zu denen das Bereichsobjekt keinen Zugang findet, werden als in dem Bereich privat angesehen. Als Teil einer Subsystem-Aufrufo­ peration werden die Ausführungsumgebung definierende Objekte innerhalb der Ausführungsumgebung zugänglich gemacht.Private information or an environment associated with Ob Objects are not directly about an area object of others Execution environments accessible. Objects and data, too to whom the area object does not find access are called as in viewed privately. As part of a subsystem call peration objects that define the execution environment within the execution environment.

Die Repräsentationsrechte des Zugangsdeskriptors (AD) 101 zur Referenz auf ein Bereichsobjekt werden auf Nur-Lese-Rechte gesetzt, um Zugang zu öffentlichen Nur-Lese-Informationen, in direkten Zugang zu den die öffentlichen Variablen des Bereichs enthaltenen Objekt und Zeiger auf die öffentlichen Prozeduren zu erlauben. Mit Ausnahme des Bereichsobjekttypmanagers wird einem Bereichsobjektzugangsdeskriptor 101 keine Schreibrecht gegeben. Wäre dies anders, so könnte der Schutz durch Modifi­ zierung eines Bereichsobjekts umgangen werden. Die öffentliche Nur-Lese-Information kann in dem Bereichsobjekt zur Vermeidung einer zusätzlichen indirekten Ebene kopiert werden, wenn sie in einem separaten Objekt angeordnet ist. Die veränderbaren öf­ fentlichen Variablen werden in einem separaten Objekt angeord­ net, zu dem sowohl der Bereich als auch die Zielausführungsum­ gebung 104 einen Zugangsdeskriptor mit Schreib-Lese-Rechten be­ sitzen.The representation rights of the access descriptor (AD) 101 for reference to a domain object are set to read-only rights to access public read-only information, in direct access to the object's public variables, and pointers to the public procedures to allow. With the exception of the range object type manager, a range object access descriptor 101 is not given write permission. If this were different, the protection could be circumvented by modifying a domain object. The read-only public information may be copied in the area object to avoid an additional indirect level if it is located in a separate object. The variable public variables are placed in a separate object to which both the domain and the target execution environment 104 have an access descriptor with read-write privileges.

ZielausführungsumgebungTarget execution environment

Ein Bereichsobjekt 100 wird zur Spezifizierung der Zielum­ gebung 104 eines Subsystemaufrufes benutzt. Ein Subsystemtrans­ fer kann ein oder mehrere Objekte ändern, die die aktuelle Aus­ führungsumgebung definieren. Bei einer geeigneten Anordnung in drei Bereiche (Datenobjekt, Befehlsobjekt und Stapel- bzw. Kel­ lerspeicherobjekt) von statischen Daten, Kellerspeicherrahmen und Befehlen braucht ein Subsystemtransfer nicht gleichzeitig alle drei Bereiche zu ändern. Diese Informationen sind in den drei Bereichen wie folgt angeordnet:
Datenobjekt: Bereich 0 (110) wird für statische Daten und Privatvariable benutzt. Ein Subsystemaufruf/-Return verändert wenigstens diesen Bereich 0.
An area object 100 is used to specify the destination environment 104 of a subsystem call. A subsystem transfer can modify one or more objects that define the current execution environment. With a suitable arrangement in three areas (data object, command object and stack or Kel storage object) of static data, basement storage frames and commands, a subsystem transfer does not need to change all three areas simultaneously. This information is arranged in the three areas as follows:
Data Object: Range 0 (110) is used for static data and private variables. A subsystem call / return changes at least this range 0 .

Befehlsobjekt: Bereich 1 (112) wird für Befehle verwendet. Dies erlaubt die gemeinsame Nutzung des Befehlsteils eines Be­ reiches durch Kopieren eines einzelnen Zugangsdeskriptors, ohne daß die Seitentabelle gemeinsam benutzt werden muß. Dieser Be­ reich kann während eines Subsystemaufrufes/-Returns unverändert bleiben, wenn sich die Ausführungsumgebungen in derselben Kom­ pilationseinheit befinden.Command Object: Region 1 (112) is used for commands. This allows the command portion of a domain to be shared by copying a single access descriptor without having to share the page table. This area can remain unchanged during a subsystem call / return if the execution environments are in the same compilation unit.

Stapel- bzw. Kellerspeicherobjekt: Bereich 2 (114) wird für Kellerspeicherrahmen benutzt. Dieser Bereich ist prozeß-spezi­ fisch und kann nicht von Prozessen gemeinsam genutzt werden. Dieser Bereich kann während eines Subsystemaufrufes/-Returns unverändert bleiben, wenn sich die Ausführungsumgebungen in demselben geschützten Subsystem befinden.Batch Storage Object: Area 2 (114) is used for basement storage frames. This area is process-specific and can not be shared by processes. This area can be left unchanged during a subsystem call / return if the execution environments are in the same protected subsystem.

Ist der Fehlerbehandler für virtuelle Speicherfehler in der Fehlertabelle als ein Subsystem spezifiziert, so müssen die Ob­ jekttabelleneinträge (OTE) für die Bereiche dieses Subsystems als gültig gekennzeichnet werden. Bei fehlender Kennzeichnung führt dies zu einem Systemfehler oder einen inkorrekten Rahmen oder Stapel- bzw. Kellerspeicherzeiger, wenn der Fehlerbehand­ ler aufgerufen wird.The virtual memory error handler is in the Error table specified as a subsystem, the ob object table entries (OTE) for the areas of this subsystem be marked as valid. In case of missing marking This leads to a system error or an incorrect frame or stack memory pointer when error handling ler is called.

Subsystem-ID und SubsystemtabelleSubsystem ID and subsystem table

Ein Bereich 100 spezifiziert nicht direkt den Bereich 2 Zu­ gangsdeskriptor (AD) der Zielumgebung 104, sondern indirekt mittels eines Subsystem-ID 106. Die Subsystemtabelle 108 loka­ lisiert alle Kellerspeicherobjekte des Bereichs 2 und ihren da­ zugehörigen obersten Rahmen und ihre Kellerspeicherzeiger, die einem Prozeß zugeordnet sind. Es besteht eine 1:1-Korrespondenz zwischen einem Subsystem-ID und einem Zugangsdeskriptor für Be­ reich 2 innerhalb eines Prozesses. Ein Subsystem-ID kann auf verschiedene Zugangsdeskriptoren für Bereich 2, die alle ver­ schiedenen Prozessen zugeordnet sind, abgebildet werden. Subsy­ stem-ID wird zur Auswahl eines Subsystemeintrags 107 in der Subsystemtabelle 108 in dem dem aktuellen Prozeß zugeordneten Umgebungstabellenobjekt (Fig 5) verwendet. Ein Subsystemeintrag (Fig. 6) wiederum spezifiziert den Zugangsdeskriptor für Be­ reich 2 (109) und den obersten Kellerspeicherrahmen in dem Be­ reich.A region 100 does not directly specify the region 2 access descriptor (AD) of the target environment 104 , but indirectly by means of a subsystem ID 106 . The subsystem table 108 locates all the cellar storage objects of the area 2 and their associated topmost frame and their cellar memory pointers associated with a process. There is a one-to-one correspondence between a subsystem ID and an access descriptor for area 2 within a process. A subsystem ID can be mapped to various area 2 access descriptors associated with all of the various processes. Subsy stem ID is used to select a subsystem entry 107 in subsystem table 108 in the environment table object associated with the current process (FIG. 5 ). A subsystem entry ( Figure 6), in turn, specifies the access descriptor for area 2 (109) and the top cellar storage frame in the area.

Das ein Subsystem-ID enthaltende Wort kann entweder ein Zu­ gangsdeskriptor oder ein Datenelement sein. Wenn Zugangsde­ skriptoren zur Darstellung von Subsystem-IDs benutzt werden, so liefert das Objektindexfeld des Zugangsdeskriptors ein system­ weites und einmalige ID für das Subsystem. Ansonsten ordnet Software jedem Subsystem innerhalb eines einzelnen Prozesses einmalige ID zu. Das Subsystem-ID dient zusammen mit der Sub­ systemtabelle den folgenden Funktionen:
Gemeinsame Stapel bzw. Kellerspeicherobjekt-Nutzung unter Bereichen: Bereiche in demselben geschützten Subsystem benutzen dasselbe Subsystem-ID, um eine gemeinsame Nutzung eines Keller­ speicherobjekts zu ermöglichen.
The word containing a subsystem ID may be either an access descriptor or a data element. When access descriptors are used to represent subsystem IDs, the object index field of the access descriptor provides a system wide and unique ID for the subsystem. Otherwise, software assigns a unique ID to each subsystem within a single process. The subsystem ID, along with the sub system table, serve the following functions:
Shared stacks or basement storage object usage under scopes: Scopes in the same protected subsystem use the same subsystem ID to allow sharing of a baseline storage object.

Wiedereingang eines Kellerspeicherobjekts: Wenn ein Subsy­ stem über einen Aufruf in ein anderes Subsystem verlassen wird, so wird die lineare Adresse des obersten Rahmens in dem Subsy­ stemeingang gespeichert. Dieses erlaubt einen Aufruf von Subsy­ stem A zu Subsystem B, welches wiederum Subsystem A ohne Return aus dem Subsystem B aufruft.Re-entry of a cellar storage object: If a Subsy stem from a call to another subsystem, so does the linear address of the topmost frame in the subsy stored. This allows a call to subsy stem A to subsystem B, which in turn subsystem A without return from the subsystem B calls.

Vertraute Subsysteme: Ein Null-Subsystem-ID zeigt an, daß das aktuelle Kellerspeicherobjekt für Bereich 2 benutzt wird. Dies erlaubt zwei gegenseitig mißtrauischen Subsystemen die ge­ meinsame Nutzung eines vertraulichen Bibliotheksmodul (z.B. eine Laufzeitbibliothek).Familiar Subsystems: A Null Subsystem ID indicates that the current Tier 2 storage object is being used. This allows two mutually suspicious subsystems to share a confidential library module (eg a runtime library).

Garantiekellerspeicherresource: Da die einem Subsystem zu­ geordnete Kellerspeicherresource nicht mit anderen Subsystemen geteilt werden muß, kann die Software in einigen Situationen garantieren, daß die Kellerspeicherresourcen niemals ausgehen. Dies erlaubt die synchrone Behandlung von bestimmten Fehlern. Bereichsobjektteilung unter Prozessen: Das Subsystem-ID erlaubt ebenfalls die Verwendung desselben Bereichs durch verschiedene Prozesse, obgleich derselbe Bereich auf verschiedene Zugangsdeskriptoren für Bereich 2 mittels verschiedener prozeß­ spezifischer Kellerspeicher abgebildet wird.Warranty Store Storage Resource: Because the subsystem's cached storage resource does not need to be shared with other subsystems, in some situations the software can guarantee that the basement storage resources never run out. This allows the synchronous treatment of certain errors. Area Object Division Among Processes: The subsystem ID also allows the same area to be used by different processes, although the same area is mapped to different area 2 access descriptors using various process specific cellars.

Steuerstapelcontrol stack

Der Subsystemaufruf/-Return-Mechanismus verwaltet einen Steuerstapel bzw. -kellerspeicher (in dem einem Prozeß zugeord­ neten Umgebungstabellenobjekt) für die Subsystemverbindungsin­ formationen. Ein Steuerstapel stellt eine Matrix von Steuersta­ peleinträgen dar, welche den Status der bei einem Return zu re­ staurierenden Ausführungsumgebung speichert.The subsystem call / return mechanism manages one Control stack or store (in which a process zugeord Neten environment table object) for the subsystem connection  formations. A tax stack represents a matrix of tax dollars peleinträge, which indicates the status of a return storing execution environment.

Erweiterte SubsystemumgebungExtended subsystem environment

Wird das Subsystemmodell benutzt, so ist die Ausführungsum­ gebung unter Einschluß des folgenden erweitert:
Umgebungstabellenobjekt: Dieses beinhaltet sowohl die Sub­ systemtabelle als auch den Steuerkellerspeicher bzw. -stapel.
If the subsystem model is used, the execution environment is extended to include the following:
Environment table object: This contains both the subsystem table and the control store memory or stack.

Aktuelles Subsystem-ID: Dieser Prozeß ist einem Subsystem- ID zugeordnet, welches zusammen mit zugehöriger Information wie dem aktuellen Subsystemtabellenoffset für den aktuellen Subsy­ stemeintrag in dem Prozeßobjekt gespeichert ist.Current Subsystem ID: This process is a subsystem ID assigned, which together with associated information such as the current subsystem table offset for the current subsystem stem entry is stored in the process object.

Wenn das Subsystemmodell nicht verwendet wird, so sind die Felder in der erweiterten Umgebung unbenutzt und können fort­ fallen.If the subsystem model is not used, then the Fields in the advanced environment are unused and can continue fall.

Unterbrechungs-/RuheumgebungInterrupt / rest area

Wenn sich der Prozeß im unterbrochenen Zustand oder im Ru­ hezustand befindet, wird ein Unterbrechungsumgebungstabellenob­ jekt in Subsystemaufrufen benutzt. Die Unterbrechungsumgebungs­ tabelle beinhaltet einen zusätzlichen systemdefinierten Eintrag für das Standardunterbrechungssubsystem-ID.When the process is in an interrupted state or in Ru is an interruption environment table ject in subsystem calls. The interruption environment table contains an additional system-defined entry for the standard interrupt subsystem ID.

Bereichsobjekteobjects section

In Fig. 3 ist ein Bereichsobjekt dargestellt. Ein Bereich­ sobjekt besitzt einen architekturdefinierten Systemtyp. Die Ty­ penrechte in einem Bereichsobjektzugangsdeskriptor werden nicht interpretiert. Die Felder eines Bereichsobjekts werden wie folgt definiert:In Fig. 3, a range object is shown. An area sobjekt has an architected system type. The type rights in a range object access descriptor are not interpreted. The fields of a range object are defined as follows:

Zugangsdeskriptor für Bereich 0 (Bytes 0-3): Dieser Zu­ gangsdeskriptor nimmt Bezug auf das Objekt, das den Bereich 0 der Zielausführungsumgebung für einen Subsystemaufruf defi­ niert. Ist das Kennungsbit 0, so wird ein CON­ STRAINT.INVALID_AD-Fehler hervorgerufen.Area 0 Access Descriptor (Bytes 0-3): This access descriptor references the object that defines area 0 of the target execution environment for a subsystem call. If the identification bit is 0, a CONSTRAINT.INVALID_AD error is caused.

Zugangsdeskriptor für Bereich 1 (Bytes 4-7): Dieser Zu­ gangsdeskriptor nimmt Bezug auf das Objekt, welches den Bereich 1 der Zielausführungsumgebung für einen Subsystemaufruf defi­ niert. Ist das Kennungsbit 0, so wird ein CON­ STRAINT.INVALID_AD-Fehler hervorgerufen.Area 1 access descriptor (bytes 4-7): This access descriptor references the object that defines area 1 of the target execution environment for a subsystem call. If the identification bit is 0 , a CONSTRAINT.INVALID_AD error is caused.

Subsystem-ID (Bytes 8-11): Dieser gemischte Wert stellt das Subsystems-ID dar, das zur Auswahl eines Eintrags in der Subsy­ stemtabelle in der innerhalb des Prozeßobjekts zugeordneten Um­ gebungstabelle verwendet wird. Ein Subsystemeintrag in der Sub­ systemtabelle spezifiziert das Objekt, das den Bereich 2 der Zielausführungsumgebung und den Rahmenzeiger des obersten Kel­ lerspeicherrahmens in der Umgebung definiert. Ist dieses Feld ein Datenwort von Null, wird der aktuelle Bereich 2 benutzt und der aktuelle Rahmen ist der oberste Kellerspeicherrahmen. Bits 6-31 des Subsystem-ID werden zur Bildung eines Kontrollwertes in der Subsystemtabelle benutzt.Subsystem ID (bytes 8-11): This mixed value represents the subsystem ID used to select an entry in the subsystem table in the environment table associated with the process object. A subsystem entry in the subsystem table specifies the object that defines the region 2 of the target execution environment and the frame pointer of the top most Kelster storage frame in the environment. If this field is a data word of zero, the current area 2 is used and the current frame is the topmost cellar storage space. Bits 6-31 of the subsystem ID are used to form a control value in the subsystem table.

Ablaufverfolgungssteuerung T (Byte 12, Bit 0): Dieses Bit spezifiziert das Ablaufverfolgungs-Aktivierungsbit des Prozes­ ses nach einem Subsystem-oder Überwacheraufruf mittels dieses Objektes. Dieses Bit kann zur Aktivierung oder Inaktivierung der Ablaufverfolgung innrhalb einer neuen Ausführungsumgebung dienen. Das Bit wird ignoriert, wenn der Aufruf einer Überwa­ cherprozedur in dem Überwachungsmodus stattfindet. Es hat die­ selbe Codierung wie das Bit in den Prozeßsteuerungen.Trace Control T (Byte 12, Bit 0): This bit specifies the trace activation bit of the process After a subsystem or supervisor call by means of this Object. This bit can be used for activation or inactivation tracing within a new execution environment serve. The bit is ignored when calling a monitor in the monitoring mode. It has the same encoding as the bit in the process controllers.

Überwacherstapelzeiger (Bytes 12-15, Bits 2-31):
Dieser stellt eine lineare Adresse (in Worten) für den Überwacherkellerspeicher dar. Dieses Feld wird bei einem Aufruf eines Überwacheraufrufs in dem Benutzermodus zur Lokalisierung des neuen Rahmens benutzt (anstelle des Kellerspeicherszeigers im aktuellen Rahmen).
Supervisor stack pointer (bytes 12-15, bits 2-31):
This represents a linear address (in words) to the supervisor stack. This field is used in a call of a supervisor call in the user mode to locate the new frame (instead of the stack pointer in the current frame).

Der Prozeß unterscheidet lediglich zwischen einem Benutzer­ stapel bzw. -kellerspeicher (im Benutzermodus) und einem Über­ wacherstapel bzw. -kellerspeicher (im Überwachermodus). Wenn die Überwacherstapelzeiger in verschiedenen Bereichen verschie­ dene Werte enthalten, so müssen alle Kellerspeicher groß genug sein, um den Anforderungen aller Überwacherprozeduren zu genü­ gen. Daher sollten die von einem Prozeß benutzten Überwacher­ stapelzeiger gleich sein. Da die Fehlertabelle einem Prozessor zugeordnet ist, müssen alle, denselben Prozessor teilenden Pro­ zesse einen Überwacherkellerspeicher besitzen, wie er durch die Überwacher-Fehlerbehandler-Prozeduren spezifiziert wird. So sollte der Überwacherstapelzeiger eine systemweite Konstante sein.The process only distinguishes between one user stack or shelf (in user mode) and one over Conserve stack or store storage (in supervisor mode). If the supervisor stack pointers vary in different areas dene values, all cellar storage must be large enough to meet the requirements of all supervisor procedures  Therefore, the monitors used by a process should stack pointer to be the same. Because the error table is a processor All the Pro sharing the same processor must be assigned have a supervisor cellar storage, as he through the Supervisor error handler procedures. So the supervisor stack pointer should be a system-wide constant his.

Prozedureinträge (von Byte 48 zum Objektende): Ein Proze­ dureintrag, wie in Fig. 4 gezeigt, spezifiziert den Typ und die Adresse der Zielprozedur. Die Felder eines Prozedureintrags werden wie folgt definiert:.Procedure entries (from byte 48 to the end of the object): A process entry, as shown in Figure 4, specifies the type and address of the destination procedure. The fields of a procedure entry are defined as follows:

Prozedureintragtyp (Bits 0-1): Dieses Feld zeigt den aufzu­ rufenden Prozedurtyp an. Die Codierungen dieses Feldes sind wie folgt:Procedure Entry Type (bits 0-1): This field shows the entry calling procedure type. The encodings of this field are like follows:

00 - Lokalprozedur
01 - Spezifische Implementation
10 - Überwacherprozedur
11 - Subsystemprozedur
00 - local procedure
01 - Specific implementation
10 - monitor procedure
11 - Subsystem procedure

Offset (Bits 2-31): Dieses 30-Bit-Feld ist ein Wortoffset in die Zielausführungsumgebung zum ersten Befehl der Zielproze­ dur.Offset (bits 2-31): This 30-bit field is a word offset in the target execution environment to the first command of the target process major.

UmgebungstabellenobjektEnvironment table object

Das Umgebungstabellenobjekt, in Fig. 1 gezeigt, enthält zwei Datenstrukturen: Eine Subsystemtabelle 111 und einen Steu­ erkellerspeicher bzw. -stapel 113. Dieses Objekt enthält die für alle Subsystemtransfers innerhalb eines einzelnen Prozesses nötigen Informationen; daher besteht eine 1 : 1-Entsprechung zwi­ schen einem Prozeßobjekt und einem Umgebungstabellenobjekt.The environment table object, shown in FIG. 1, includes two data structures: a subsystem table 111 and a controller storage stack 113 . This object contains the information necessary for all subsystem transfers within a single process; therefore, there is a one-to-one correspondence between a process object and an environment table object.

Dies ist genauer in Fig. 5 gezeigt. Das Umgebungstabellen­ objekt besitzt keinen definierten Systemtyp. Die Felder eines Umgebungstabellenobjekts werden wie folgt definiert: Subsy­ stemtabelle: Dieser Bereich wird im folgenden Abschnitt be­ schrieben. Der ersten Eintrag wird zur Speicherung des aktuel­ len Steuerkellerspeicherzeigers, der Steuerkellerspeichergrenze und der Subsystemtabellengröße benutzt.This is shown in more detail in FIG . The environment table object has no defined system type. The fields of an environment table object are defined as follows: Subsy stemtable: This area is described in the following section. The first entry is used to store the current control cell storage pointer, the control cell storage limit, and the subsystem table size.

Steuerkellerspeicher: Dieser Bereich wird in dem folgenden Abschnitt beschrieben.Steuerkellerspeicher: This area is in the following Section described.

Subsystemtabellesubsystem table

Während eines Subsystemaufrufes spezifiziert ein Bereichs­ objekt direkt lediglich zwei von drei Objekten, die die neue Ausführungsumgebung definieren. Das Bereichsobjekt beinhaltet ein Subsystem-ID 106, das das dritte Objekt 114 der neuen Aus­ führungsumgebung indirekt spezifiziert. Eine Subsystemtabelle stellt eine Datenstruktur innerhalb eines Umgebungstabellenob­ jektes dar, welches das mapping eines Subsystem-ID 106 auf einen Zugangsdeskriptor zum Bereich 2 (109) der neuen Umgebung bewirkt. Bereich 2 wird zur Zuordnung der Kellerspeicherrahmen bei Aufrufen/Return verwendet; daher kann dieses Objekt nicht von verschiedenen Prozessen gemeinsam benutzt werden.During a subsystem call, an area object directly specifies only two out of three objects that define the new execution environment. The scope object includes a subsystem ID 106 that indirectly specifies the third object 114 of the new execution environment. A subsystem table represents a data structure within an environment table object that causes the mapping of a subsystem ID 106 to an access descriptor to area 2 (109) of the new environment. Area 2 is used to allocate the basement storage frames on calls / returns; therefore, this object can not be shared by different processes.

Der erste Eintrag der Subsystemtabelle von Fig. 5 ist ein Blindeintrag mit den folgenden, definierten Feldern:
Aktueller Steuerkellerspeicherzeiger, CCSP, (Bytes 0-3, Bits 4-31): Dies ist ein Vier-Wort-Index für dieses Objekt auf den nächsterreichbaren Steuerkellerspeichereintrag (CSE). Die­ ses Feld wird bei einem Subsystemaufruf inkrementiert und bei einem Subsystem-Return dekrementiert.
The first subsystem table entry of Figure 5 is a blind entry with the following defined fields:
Current control store memory pointer, CCSP, (bytes 0-3, bits 4-31): This is a four-word index for this object on the next available control store entry (CSE). This field is incremented on a subsystem call and decremented on a subsystem return.

Steuerkellerspeichergrenze, CSL, (Bytes 4-7, Bits 4-31): Dies ist ein Vier-Wort-Index für dieses Objekt auf den ersten für den Steuerstapelüberlauf-Fehlerbehandler reservierten CSE (d. h. nicht für die reguläre Verwendung). Wie in Fig. 11 ge­ zeigt, wird ein CONTROL_STACK.OVERFLOW-Fehler generiert, wenn nach Beendigung eines Subsystemsaufrufs CCSP gleich CSL ist.Control Cell Memory Limit, CSL, (bytes 4-7, bits 4-31): This is a four-word index for this object on the first CSE reserved for the control stack overflow error handler (ie, not for regular use). As shown in Fig. 11, a CONTROL_STACK.OVERFLOW error is generated when CCSP is equal to CSL upon completion of a subsystem call.

Subsystemtabellengröße (Bytes 12-125, Bits 4-29): Dieses Feld beinhaltet die Größen (in Einheiten von Subsystemeinträ­ gen) -1 der Subsystemtabelle. Diese Subsystemtabellengröße muß eine Potenz von 2 sein; daher enthält dieses Feld eine Bit- Maske von Einsen in den am niedrigsten bewerteten Bits. Anson­ sten ist ihr Verhalten nicht vorhersehbar.Subsystem table size (12-125 bytes, 4-29 bits): This Field contains the sizes (in units of subsystem entries) gen) -1 of the subsystem table. This subsystem table size must be a power of 2; therefore, this field contains a bitmap  Mask of ones in the least significant bits. Anson their behavior is unpredictable.

Subsystem-ID zum Subsystemeintrag-mappingSubsystem ID for subsystem entry mapping

Wie in Fig. 9 gezeigt ist, wählt der Subsystem-Befehlsde­ codierer den entsprechenden Subsystemeintrag in der Subsy­ stemtabelle wie folgt:
Wenn das angegebene Subsystem-ID 0 oder gleich dem aktuel­ len Subsystem-ID ist, wird das aktuelle Subsystem-ID benutzt. Ansonsten muß die Subsystemtabelle nach der folgenden Beschrei­ bung durchsucht werden.
As shown in Fig. 9, the subsystem command decoder selects the corresponding subsystem entry in the subsystem stem table as follows:
If the specified subsystem ID is 0 or equal to the current subsystem ID, the current subsystem ID is used. Otherwise, the subsystem table must be searched for the following description.

Bits 6-31 des spezifizierten Subsystem-ID stehen in logi­ scher UND-Verknüpfung mit der Subsystemtabellengröße, um den anfänglichen Subsystemeintrag-Index zu bilden.Bits 6-31 of the specified subsystem ID are in logi ANDing the subsystem table size to the initial subsystem entry index.

Das Folgende wird wiederholt:The following is repeated:

  • 1) Wenn das Subsystem-ID im ausgewählten Subsystemeintrag 0 ist, kann ein OPERATION.SUBSYSTEM_NOT-FOUND-Fehler hervorge­ rufen werden.1) If the subsystem ID in the selected subsystem entry 0, an OPERATION.SUBSYSTEM_NOT-FOUND error may result will call.
  • 2) Paßt das Subsystem-ID im ausgewählten Subsystemeintrag zu dem des spezifizierten Subsystem-IDs (compare_mixed), ist aus der Suche herauszugehen.2) Fits the subsystem ID in the selected subsystem entry to that of the specified subsystem ID (compare_mixed) to go out of the search.
  • 3) Der vorhergehende Subsystemeintrag ist zu wählen, d.h. es ist rückwärts zu suchen. Der Eintrag Null läuft zu dem letz­ ten Eintrag um, auf den durch die Systemtabellengröße hingewie­ sen wird.3) The previous subsystem entry should be chosen, i. it's looking backwards. The entry zero runs to the last The entry is pointed to by the system table size will be.
  • 4) Wenn dies der anfängliche Subsystemeintrag ist und der Prozeß sich nicht im Unterbrechungszustand befindet, ist ein OPERATION.SUBSYSTEM_NOT_FOUND-Fehler hervorzurufen. Befindet sich der Prozeß im Unterbrechungsstatus, so wird das aktuelle Subsystem benutzt.4) If this is the initial subsystem entry and the Process is not in the interruption state is a OPERATION.SUBSYSTEM_NOT_FOUND error. is If the process is in the interruption state, then the current one becomes Subsystem used.
Subsystemeintragsubsystem entry

Die Struktur eines Subsystemeintrags ist in Fig. 6 darge­ stellt. Die Felder eines Subsystemseintrags werden wie folgt definiert:
Oberster Rahmenzeiger (Bytes 0-3, Bits 6-31): Dieses Feld beinhaltet den Rahmenzeiger des obersten Kellerspeicherrahmens. Während eines Subsystemaufrufs in dieser Umgebung wird dieses Feld als vorhergehender Rahmenzeiger in dem neuen Rahmen be­ nutzt. Während eines Subsystemaufrufs von dieser Umgebung wird der aktuelle Rahmenzeiger hier gespeichert. Während eines Sub­ system-Returns zu dieser Umgebung wird er als Zielrahmenzeiger benutzt. Während eines Subsystem-Returns von dieser Umgebung wird der vorhergehende Rahmenzeiger im aktuellen Rahmen hier gespeichert.
The structure of a subsystem entry is shown in FIG. 6. The fields of a subsystem entry are defined as follows:
Top Frame Pointer (Bytes 0-3, Bits 6-31): This field contains the frame pointer of the uppermost cellar memory frame. During a subsystem call in this environment, this field will be used as the previous frame pointer in the new frame. During a subsystem call from this environment, the current frame pointer is stored here. During a sub system return to this environment, it will be used as the target frame pointer. During a subsystem return from this environment, the previous frame pointer is stored in the current frame here.

Oberster Kellerspeicherzeiger (Bytes 4-7): Dieses Feld be­ inhaltet den Kellerspeicherzeiger in dem obersten Kellerspei­ cherrahmen. Während eines Subsystemaufrufs in dieser Umgebung wird dieses Feld zur Berechnung des Rahmenzeigers des neuen Rahmens verwendet. Während eines Subsystemaufrufs von dieser Umgebung wird der aktuelle Kellerspeicherzeiger hier gespei­ chert. Während eines Inter-Subsystem-Returns von dieser Umge­ bung wird der aktuelle Kellerspeicherzeiger (d. h. der gerundete Kellerspeicherzeiger im vorhergehenden Rahmen) hier gespei­ chert. Während anderer Inter-Subsystem-Returns von dieser Umge­ bung wird der aktuelle Rahmenzeiger -64 (d. h. der gerundete Kellerspeicherzeiger in dem vorhergehenden Rahmen) hier gespei­ chert. Während eines Returns zu dieser Umgebung wird dieses Feld ignoriert.Upper Cellar Memory Pointer (Bytes 4-7): This field be includes the basement store pointer in the top cellar cherrahmen. During a subsystem call in this environment this field is used to calculate the frame pointer of the new one Frame used. During a subsystem call from this Surroundings the current cellar memory pointer is fedi here chert. During an inter-subsystem return from this environment The current cellar memory pointer (ie the rounded cell Cellar memory pointer in the previous frame) here fedi chert. During other inter-subsystem returns from this environment The current frame pointer -64 (that is, the rounded Cellar memory pointer in the previous frame) here chert. During a return to this environment this becomes Field ignored.

Subsystem-ID (Bytes 8-11): Dieses ID 105 identifiziert das Subsystem, das der Zielausführungsumgebung zugeordnet ist. Die­ ses ID wird als Schlüssel zur Anpassung des Subsystem-IDs 106 an das Objekt für den Bereich 2-114 verwendet; somit ist es in­ nerhalb der Subsystemtabelle einmalig. Ein Wert des Subsystem- ID von Null zeigt an, daß dieser Subsystem-Eintrag nicht zuge­ ordnet ist. Ein Subsystemtabelleneintrag Null mit einem Subsy­ stem-ID nur aus Einsen wird zur Speicherung von Steuerkeller speicherinformationen benutzt.Subsystem ID (bytes 8-11): This ID 105 identifies the subsystem associated with the target execution environment. This ID is used as a key to adapt the subsystem ID 106 to the object for the range 2-114 ; thus it is unique within the subsystem table. A subsystem ID value of zero indicates that this subsystem entry is not assigned. A subsystem table entry zero with a subsystem only subsystem ID is used to store control cell memory information.

Ereignisfehlerinaktivierung (Byte 8, Bit 2): Wenn dieses Subsystem eingegeben wird, definiert dieser Flag den aktuellen Wert des Ereignisfehlerinaktivierungsbit. Wird das Ereignisfeh­ lerinaktivierungsbit gesetzt, so wird kein Event.Notice-Fehler signalisiert. Wenn das Ereignisfehlerinaktivierungsbit gelöscht ist, so tritt ein Event.Notice-Fehler auf, wenn die Ereignis­ fehleranforderungsflags gesetzt sind. Bei einem Intersubsystem­ aufruf/-Return, der den Ereignisfehler-Flag auf Null stellt, wird eine anstehende Ereignisfehleranforderung nach dem Auf­ ruf/Return hervorgerufen.Event Error Inactivation (Byte 8, Bit 2): If this Subsystem is entered, this flag defines the current one  Value of the event error inactivation bit. Will the event go lerinaktivierungsbit set, then no Event.Notice error signaled. When the event error inactivation bit is cleared is an Event.Notice error occurs when the event error request flags are set. In an intersubsystem call / return, which sets the event error flag to zero, becomes an upcoming event error request after the up call / return.

Bereich 2 AD (Bytes 12-15): Dieser Zugangsdeskriptor (109) nimmt Bezug auf das Objekt, welches den Bereich 2 der teilweise durch diesen Eintrag spezifizierten Zielausführungsumgebung de­ finiert. Dieser Zugangsdeskriptor muß Schreib/Leserechte bein­ halten, da ansonsten ein protection.ad-rep-rights-Fehler her­ vorgerufen werden kann.Area 2 AD (bytes 12-15): This access descriptor ( 109 ) references the object which defines area 2 of the destination execution environment partially specified by this entry. This access descriptor must have read / write access, otherwise a protection.ad-rep-rights error can be called.

Steuerkellerspeicher(stapel)Control stack memory (stack)

Die Organisation des Steuerkellerspeichers 113 ist in Fig. 5 dargestellt. Ein Steuerkellerspeichereintrag (Fig. 7) wird auf den Steuerkellerspeicher bei einem Subsystemaufruf gegeben und bei einem Subsystem-Return dem Steuerkellerspeicher entnom­ men. Der Steuerkellerspeicher ist an dem niedrigen Ende durch einen reservierte Steuerkellereintrag, an dem hohen Ende durch die Steuerkellerspeichergremnze + einer Anzahl reservierter Einträge (für den Steuerkellerspeicherüberlauf-Fehlerbehandler) begrenzt. Die Anzahl der Einträge, die für den Kellerspeicher­ überlauf-Fehlerbehandler reserviert sind, ist Software-defi­ niert.The organization of the control cell storage 113 is shown in FIG . A control cell storage entry ( Figure 7) is placed on the control cell storage at a subsystem call and removed from the control cell storage on a subsystem return. The control cell memory is limited at the low end by a reserved control cell entry, at the high end by the control cell storage area + a number of reserved entries (for the control cell storage overflow error handler). The number of entries reserved for the cellar overflow error handler is software-defined.

Wird der entsprechende Prozeß ausgeführt, werden Teile oder der gesamte Steuerkellerspeicher intern in dem Prozessor gehal­ ten (d. h. das Speicherbild ist eventuell nicht akurat, und das Lesen oder Schreiben des Speicherbildes hat nicht notwendiger­ weise einen Effekt auf den Steuerkellerspeicher). Der load_control_stack_pointer-Befehl kann benutzt werden, um jeg­ liche Cache-gespeicherte Information zu fluten und ungültig werden zu lassen. If the corresponding process is executed, parts or the entire Steuerkellerspeicher internally in the processor gehal (that is, the memory image may not be accurate, and that Reading or writing the memory image is not necessary have an effect on the Steuerkellerspeicher). The load_control_stack_pointer command can be used to remove any flood cached information and invalidate it to be let.  

SteuerkellerspeichereintragControl stack entry

Das Format eines Steuerkellerspeichereintrags ist in Fig. 6 gezeigt. Die Felder eines Steuerkellerspeichereintrags werden wie folgt definiert:
Return-Zugangsdeskriptor für Bereich 0 (Bytes 0-3): Dieser Zugangsdeskriptor nimmt Bezug auf das Objekt, welches den Be­ reich 0 der aufrufenden Ausführungsumgebung des entsprechenden Subsystemaufrufes definiert. Bei einem Subsystem-Return wird Bereich 0 auf dieses Objekt zurückgeführt. Dieser Zugangsde­ skriptor muß Schreib/Leserechte beinhalten, da ansonsten ein protection. ad_rep_rights-Fehler hervorgerufen wird.
The format of a control cell storage entry is shown in FIG . The fields of a control cell storage entry are defined as follows:
Range 0 return access descriptor (bytes 0-3): This access descriptor refers to the object that defines area 0 of the calling execution environment of the corresponding subsystem call. With a subsystem return, area 0 is returned to this object. This accessor script must contain read / write permissions, otherwise protection. ad_rep_rights error is caused.

Return-Zugangsdeskriptor für Bereich 1 (Bytes 4-7): Dieser Zugangsdeskriptor nimmt Bezug auf das Objekt, welches den Be­ reich 1 der aufrufenden Ausführungsumgebung des entsprechenden Subsystemaufrufes definiert. Bei einem Subsystem-Return wird Bereich 1 zu diesem Objekt zurückgeführt. Dieser Zugangsde­ skriptor muß Schreib/Leserechte enthalten, da sonst ein protec­ tion. ad_rep_rights-Fehler hervorgerufen wird.Return-Zugangsdeskriptor for region 1 (4-7 bytes): this Zugangsdeskriptor refers to the object, which defines the loading rich 1 the calling execution environment of the corresponding subsystem call. With a subsystem return, area 1 is returned to this object. This accessor script must contain read / write permissions, otherwise a protec tion. ad_rep_rights error is caused.

Ablaufverfolgungssteuerung, T, (Byte 8, Bit 0): Dieses Bit enthält das Ablaufverfolgungsaktivierungsbit in den Prozeß­ steuerungen während der entsprechenden normalen Subsystemauf­ rufe. Während eines Subsystem-Returns wird die Ablaufverfol­ gungssteuerung zu diesem Bit zurückgeführt.Trace Control, T, (Byte 8, Bit 0): This bit contains the trace enable bit in the process controls during the corresponding normal subsystem call. During a subsystem return, the trace becomes tion control returned to this bit.

Return-Modus, MMM (Byte 8, Bits 1-3): Dieses 3-Bit-Feld zeigt den Eintragungstyp an. Dieses Feld ist wie folgt codiert:Return mode, MMM (byte 8, bits 1-3): This 3-bit field indicates the entry type. This field is encoded as follows:

000-Normal000-Normal Intrasubsystemintra subsystem 001-Normal001-Normal IntersubsystemInter subsystem 010-Reserviert010 Reserved (CONTROLSTACK.UNDERFLOW-Fehler)(CONTROLSTACK.UNDERFLOW error) 011-Reserviert011 Reserved (CONTROLSTACK.UNDERFLOW-Fehler)(CONTROLSTACK.UNDERFLOW error) 100-Fehler100 Error Intrasubsystemintra subsystem 101-Fehler101 Error IntersubsystemInter subsystem 110-Reserviert110 Reserved (CONTROLSTACK. UNDERFLOW-Fehler)(CONTROLSTACK UNDERFLOW error) 111-Reserviert111-Reserved (CONTROLSTACK. UNDERFLOW-Fehler)(CONTROLSTACK UNDERFLOW error)

Return-Subsystemeintragsoffset (Bytes 8-11, Bits 4-31): Dieses Feld enthält den Eintragungsindex in die Subsystemta­ belle (in die Umgebungstabelle) für den Subsystemeintrag der den Bereich 2 der aufrufenden Ausführungsumgebung definiert.Return subsystem entry offset (bytes 8-11, bits 4-31): This field contains the entry index in the subsystem table (in the environment table) for the subsystem entry that defines area 2 of the calling execution environment.

Wenn eine Subsystemtabelle erweitert und wieder kontrol­ liert wird, ändert sich der Subsystemeintragungsoffset und muß auf den aktuellen Stand gebracht werden.When a subsystem table expands and re-checks is changed, the subsystem entry offset changes and must be brought up to date.

Zugangsdeskriptor für den Bereich des aufgerufenen (Bytes 12-15): Dieser Zugangsdeskriptor (120) nimmt Bezug auf das in diesem Subsystem aufrufbenutzte Bereichsobjekt. Dies wird wäh­ rend eines Aufrufs initialisiert, aber während eines Returns nicht benutzt.Access descriptor for the area of the called (bytes 12-15): This access descriptor ( 120 ) refers to the area object used in this subsystem. This is initialized during a call, but not used during a return.

Aufruf-ReturnCall Return CALL_DOMAIN-BefehlCALL_DOMAIN command

Der CALL_DOMAIN-Befehl ruft die durch die Prozedurzahl in dem spezifizierten Bereichsobjekt spezifizierte Prozedur auf und ändert entsprechend der Spezifikation durch das Bereichsob­ jekt, die Ausführungsumgebung. Der spezifizierte Bereichszu­ gangsdeskriptor, muß Leserechte besitzen. Die Prozedurzahl wird als Wortindex in die Prozedurtabelle im spezifizierten Bereich­ sobjekt für einen Prozedureintrag benutzt.The CALL_DOMAIN command calls the through number in the specified area object specified procedure and changes according to the specification by the area ob project, the execution environment. The specified range must have reading rights. The procedure number becomes as a word index in the procedure table in the specified area sobjekt used for a procedure entry.

CALL_SYSTEM-BefehlCALL_SYSTEM command

Der CALL_SYSTEM-Befehl ruft eine Prozedur in dem Systembe­ reich auf. Der Systembereich ist ein Bereich, auf den der Pro­ zessorsteuerblock Bezug nimmt. Es ist nötig, Überwacheraufrufe in einem System ohne Kennung zu erlauben. In einem System mit Kennung wird der Systembereich zum mapping von Überwacheraufru­ fen eines Betriebssystems ohne Kennung auf ein Betriebssystem mit Kennung benutzt.The CALL_SYSTEM command calls a procedure in the system rich. The system area is an area to which the Pro controller control block. It is necessary, supervisor calls in a system without an identifier. In a system with Identifier is the system area used to map supervisor fen of an operating system without identification on an operating system used with identifier.

Die Fig. 8 bis 11 stellen ein Ablaufdiagramm des CALL_SYSTEM-Befehls dar. Fig. 10 zeigt detailliert die Inter­ subsystemaufruf-Subroutine des Systemaufrufbefehls und Fig. 11 zeigt die Intrasubsystemaufruf-Subroutine des Systemaufrufbe­ fehls. Figs. 8 to 11 illustrate a flow chart of the CALL_SYSTEM command. Fig. 10 shows in detail the intersubsystem call subroutine of the system call command, and Fig. 11 shows the intrasubsystem call subroutine of the system call command.

Return-BefehlReturn instruction

Der spezielle Return-Vorgang ist durch das Return-Status­ feld im vorhergehenden Rahmenfeld des aktuellen Rahmens be­ stimmt. Dieses erlaubt den Aufruf von Prozeduren von innerhalb oder außerhalb ihrer zugehörigen Bereiche, selbst wenn ver­ schiedene Vorgänge durchgeführt werden.The special return process is due to the return status field in the previous frame of the current frame be Right. This allows the calling of procedures from within or outside their associated areas, even if ver various operations are performed.

LOAD_CONTROL_STACK_POINTER-BefehlLOAD_CONTROL_STACK_POINTER command

Der LOAD_CONTROL_STACK_POINTER führt den aktuellen Steuer­ kellerspeicherzeiger des Prozesses zurück.The LOAD_CONTROL_STACK_POINTER keeps the current control basement store pointer of the process back.

Claims (5)

1. Datenverarbeitungssystem zur Kommunikationsherstellung zwischen einer aktuellen (aufrufenden) Ausführungsumgebung und einer (aufgerufenen) Zielausführungsumgebung, wobei eine Mehr­ zahl von ein erstes Prozessorobjekt und ein erstes Prozeßobjekt (64) enthaltenden adressierbaren Objekten, welche eine einem ersten Bereichsobjekt zugeordnete erste Ausführungsumgebung und eine einem zweiten Ausführungsobjekt zugeordnete Ausführungsum­ gebung definieren und in einem Adreßraum des Speichers gespei­ chert sind, dadurch gekennzeichnet,
daß ein erstes Umgebungstabellenobjekt dem ersten Prozeß zugeordnet ist, daß das Umgebungstabellenobjekt einen Steuer­ kellerspeicher zur Speicherung von Subsystemverbindungsinforma­ tionen enthält, wobei der Steuerkellerspeicher ein Feld von Steuerkellerspeichereinträgen ist, die den Status der bei einem Return von der zweiten Ausführungsumgebung wiederherzustellen­ den aufrufenden ersten Ausführungsumgebung speichern,
daß das zweite Bereichsobjekt einen Bereich 0-Zugangsde­ skriptor zur Bezugnahme auf ein Objekt, welches Bereich 0 der zweiten (Ziel-) Ausführungsumgebung als Ziel eines Subsystem­ aufrufes definiert, einen Bereich 1-AD zur Bezugnahme auf ein Objekt, welches Bereich 1 der zweiten (Ziel-) Ausführungsumge­ bung als Ziel eines Subsystemsaufrufes definiert, und ein Sub­ system-ID enthält, das innerhalb des Prozeßobjektes auf einen Eintrag in einer Subsystemtabelle in der Umgebungstabelle zeigt, wobei ein Subsystemeintrag in dieser Subsystemtabelle das den Bereich 2 der Zielausführungsumgebung und den Rahmen­ zeiger des obersten Kellerspeicherrahmens in der Zielumgebung definierende Objekt spezifiziert, und wobei ein Überwacherkel­ lerspeicherzeiger vorgesehen ist, der eine lineare Adresse (in Worten) für den zum Aufruf eines Überwacheraufrufs in dem Be­ nutzermodus (anstelle des Kellerspeicherzeigers in dem aktuel­ len Rahmen) zur Lokalisierung des neuen Rahmens benutzten Über­ wacherkellerspeicher darstellt, und
daß das Bereichsobjekt Prozedureinträge enthält, die den Typ und die Adresse der Zielprozedur spezifizieren, wobei jeder dieser Prozedureinträge ein Prozedureintragtypenfeld enthält, welches den Typ der aufzurufenden Prozedur anzeigt, der eine Überwacherprozedur und eine Subsystemprozedur enthält, und wel­ ches ferner ein den ersten Befehl der Zielprozedur spezifizie­ rendes Offset in die Zielausführungsumgebung beinhaltet.
A data processing system for communicating between a current (calling) execution environment and a (called) target execution environment, wherein a plurality of addressable objects containing a first processor object and a first process object ( 64 ) having a first execution environment associated with a first domain object and a second Define execution environment associated with the execution object and stored in an address space of the memory, characterized
that a first environment table object is associated with the first process that the environment table object contains a control cell storage for storing subsystem connection information, the control cell storage being an array of control cell storage entries that store the status of the retrieving first execution environment upon a return from the second execution environment;
in that the second area object defines an area 0 access descriptor for reference to an object which defines area 0 of the second (target) execution environment as the target of a subsystem call, an area 1 -AD for referring to an object which area 1 of the second ( Destination) execution environment as the destination of a subsystem call, and includes a subsystem ID that points to an entry in a subsystem table in the environment table within the process object, with a subsystem entry in that subsystem table showing area 2 of the destination execution environment and the frame specifying the object defining the topmost cell storage frame in the target environment, and providing a linear address store (in words) for calling a supervisor call in the user mode (instead of the stack pointer in the current frame) to locate the new one Framework used over wacherke represents llerpeicher, and
the scope object contains procedure entries specifying the type and address of the destination procedure, each of these procedure entries containing a procedure entry type field indicating the type of procedure to call, including a supervisor procedure and a subsystem procedure, and further including the first command of the destination procedure Specifying the specified offset into the target execution environment.
2. System gemäß Anspruch 1, dadurch gekennzeichnet, daß das Umgebungstabellenobjekt zwei Datenstrukturen, eine Subsystemta­ belle und einen Steuerkellerspeicher bzw. Steuerstapel enthält, und daß die Subsystemtabelle alle Kellerspeicherobjekte (114) für Bereich 2 und ihren entsprechenden obersten Rahmen und ei­ nem Prozeß zugeordneten Kellerspeicherzeiger lokalisiert.2. System according to claim 1, characterized in that the environment table object contains two data structures, a Subsystemta belle and a Steuerkellerspeicher or control stack, and in that the Subsystemtabelle all Kellerspeicherobjekte ( 114 ) for area 2 and its corresponding uppermost frame and egg nem process associated basement memory pointer localized. 3. System nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß ein aktuelles Subsystem-ID in dem zweiten Prozeßobjekt zu­ sammen mit dem aktuellen Subsystemtabellenoffset für den aktu­ ellen Subsystemeintrag in der dem ersten Prozeß zugeordneten Subsystemtabelle gespeichert wird.3. System according to claim 1 or 2, characterized that a current subsystem ID in the second process object too together with the current subsystem table offset for the aktu ellen subsystem entry in the first process associated Subsystem table is stored. 4. System nach einem der Ansprüche 1 bis 3, dadurch gekenn­ zeichnet, daß die lineare Adresse des obersten Rahmens im Sub­ systemeintrag unter der Bedingung gespeichert wird, daß ein Subsystem bei einem Aufruf zu einem anderen Subsystem verlassen wird.4. System according to one of claims 1 to 3, characterized draws that the linear address of the topmost frame in the sub system entry is stored under the condition that a Subsystem on a call to another subsystem left becomes. 5. System nach einem der Ansprüche 1 bis 4, dadurch gekenn­ zeichnet, daß der Bereich 0 ein statische Daten und private Va­ riablen enthaltendes Datenobjekt (110), Bereich 1 ein Befehl enthaltendes Befehlsobjekt (112) und Bereich 2 ein Kellerspei­ cherobjekt (114) ist, das einem spezifischen Prozeß zugeordnete Kellerspeicherrahmen enthält.5. System according to one of claims 1 to 4, characterized in that the area 0 a data object containing static data and private variables ( 110 ), area 1, a command object containing object ( 112 ) and area 2, a cell memory object ( 114 ). is that contains a cellar storage frame associated with a specific process.
DE4040992A 1989-12-22 1990-12-20 Data processing system Expired - Fee Related DE4040992C2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US45562689A 1989-12-22 1989-12-22

Publications (2)

Publication Number Publication Date
DE4040992A1 true DE4040992A1 (en) 1991-06-27
DE4040992C2 DE4040992C2 (en) 2002-10-31

Family

ID=23809601

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4040992A Expired - Fee Related DE4040992C2 (en) 1989-12-22 1990-12-20 Data processing system

Country Status (3)

Country Link
JP (1) JP3554320B2 (en)
DE (1) DE4040992C2 (en)
GB (1) GB2239334B (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2836569B1 (en) * 2002-02-28 2005-02-25 Gemplus Card Int MEMORY SPACE FOR APPLICATION DATA DOWNLOADED IN A CHIP CARD
US8601456B2 (en) 2006-08-04 2013-12-03 Microsoft Corporation Software transactional protection of managed pointers
US8006227B2 (en) 2007-06-01 2011-08-23 Microsoft Corporation Efficiently locating transactional code blocks in a transactional memory system
US8099719B2 (en) 2007-06-19 2012-01-17 Microsoft Corporation Transactional debugger for a transactional memory system and detecting conflicts
US8032870B2 (en) 2007-06-25 2011-10-04 Microsoft Corporation Transacting accesses via unmanaged pointers
US8196123B2 (en) 2007-06-26 2012-06-05 Microsoft Corporation Object model for transactional memory
US7941411B2 (en) 2007-06-29 2011-05-10 Microsoft Corporation Memory transaction grouping

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4545012A (en) * 1981-05-22 1985-10-01 Data General Corporation Access control system for use in a digital computer system with object-based addressing and call and return operations
US4811208A (en) * 1986-05-16 1989-03-07 Intel Corporation Stack frame cache on a microprocessor chip

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4545012A (en) * 1981-05-22 1985-10-01 Data General Corporation Access control system for use in a digital computer system with object-based addressing and call and return operations
US4811208A (en) * 1986-05-16 1989-03-07 Intel Corporation Stack frame cache on a microprocessor chip

Also Published As

Publication number Publication date
JPH03240134A (en) 1991-10-25
GB2239334A (en) 1991-06-26
GB9019821D0 (en) 1990-10-24
JP3554320B2 (en) 2004-08-18
GB2239334B (en) 1994-07-06
DE4040992C2 (en) 2002-10-31

Similar Documents

Publication Publication Date Title
DE68924720T2 (en) Access rights control method and apparatus.
DE4040963C2 (en) Data processing system
DE69227774T2 (en) STORAGE MANAGEMENT PROCEDURE
DE69132005T2 (en) Device and method for a space-saving address translation buffer for content addressable memories
DE3587694T2 (en) Memory access control device for realizing protected areas in a memory, and memory equipped with such a memory access control device.
DE10357804B4 (en) Reclaim existing fields in address translation data structures to extend memory access control
DE69027165T2 (en) Method and device for protecting a computer system
DE69029504T2 (en) Procedure for translating and copying addresses
DE10297433B4 (en) A memory management unit, method for providing memory access security based on a linear address and processor
DE69032795T2 (en) Method and device for updating "firmware" resident in an EEPROM memory
DE2458065C2 (en) Data processing system
DE69620055T2 (en) Multi-user computer system
DE3689961T2 (en) Process for processing interruptions in a digital computer system.
DE3587622T2 (en) Emulation device in a data processing system.
DE2517276A1 (en) DATA PROCESSING SYSTEM
DE112004001605T5 (en) Computer system in which a secure execution environment is applied and in which a memory controller is formed, which is designed to erase the memory
DE4040994A1 (en) DATA PROCESSING SYSTEM AND METHOD
DE112004000464T5 (en) Invalidating memory entries, deleting cache entries
DE69705302T2 (en) FLEXIBLE EXTENSION OF VIRTUAL STORAGE ADDRESSING
DE10196440T5 (en) Control access to multiple isolated stores in an isolated execution environment
EP1639475B1 (en) Processor architecture for exact index identification
DE69231278T2 (en) APPLICATION SOFTWARE FOR HARDWARE INTERRUPTIONS.
DE4040992A1 (en) DATA PROCESSING SYSTEM
DE4234695C2 (en) Computer storage system and method for maintaining cache coherence between a data cache and a segment descriptor cache
DE112004000626T5 (en) Method and apparatus for creating a program run or execution shield

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06F 9/40

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee