DE3607889A1 - Verfahren zum steuern von unterbrechungen in einem virtuellen maschinensystem und virtuelles maschinensystem zur durchfuehrung des verfahrens - Google Patents
Verfahren zum steuern von unterbrechungen in einem virtuellen maschinensystem und virtuelles maschinensystem zur durchfuehrung des verfahrensInfo
- Publication number
- DE3607889A1 DE3607889A1 DE19863607889 DE3607889A DE3607889A1 DE 3607889 A1 DE3607889 A1 DE 3607889A1 DE 19863607889 DE19863607889 DE 19863607889 DE 3607889 A DE3607889 A DE 3607889A DE 3607889 A1 DE3607889 A1 DE 3607889A1
- Authority
- DE
- Germany
- Prior art keywords
- virtual machine
- control program
- interrupt
- address
- vector table
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Description
Beschreibung
Die Erfindung befaßt sich mit einem virtuellen Maschinensystem und betrifft ein Verfahren zum Steuern der Programmunterbrechungen
in einem virtuellen Maschinensystem sowie ein virtuelles Maschinensystem zur Ausführung der Steuerung der Programmunterbrechung
en.
Wie es im Grundkonzept in Figur 1 der zugehörigen Zeichnung dargestellt ist, erlaubt es ein virtuelles Maschinensystem,
eine Vielzahl von Betriebssystemen 506, 507 in einer Grundmaschine
501 scheinbar gleichzeitig auszuführen. Dazu ist keine direkte Grundmaschinenschnittstelle zwischen jedem Betriebssystem
506, 507 und der Grundmaschine 501 sondern ein spezielles Steuerprogramm, beispielsweise ein virtueller Maschinenmonitor
502 vorgesehen, das in der Grundmaschine 501 unter der Steuerung einer Grundmaschinenschnittstelle 503 arbeitet, um
für jedes Betriebssystem 506, 507 eine Grundmaschinenschnittstelle 508 zu unterstützen, die der Grundmaschinenschnittstelle
503 äquivalent ist. Eine Maschine, die im Grundkonzept dann gebildet wird, wenn der virtuelle Maschinenmonitor 502 die
Grundmaschinenschnittstelle aufbaut, wird als virtuelle Maschine bezeichnet. Obwohl in Figur 1 zwei virtuelle Maschinen 504,
505 vorgesehen sind, in denen die Betriebssysteme 506, 507 jeweils arbeiten, kann eine willkürliche Anzahl von virtuellen
Maschinen gebildet werden. Die virtuellen Maschinen 504, 505 werden unter der Steuerung des virtuellen Maschinenmonitors
502 so umgeschaltet, daß sie virtuell gleichzeitig arbeiten.
Die Betriebssysteme 506, 507 stützen andererseits erweiterte Maschinenschnittstellen 513, 514 für Anwenderprogramme 515,
und 517, 518 jeweils, um dadurch erweiterte Maschinen 509 bis
512 zu bilden. Jede erweiterte Maschine 509 bis 512 hat die
Funktion, in den jeweiligen Betriebssystemen eine Verarbeitung
auf eine Verarbeitungsanforderung, beispielsweise auf einen Aufruf an das Organisationsprogramm oder einen Funktionsaufruf
ansprechend, auszuführen, der für eine Gruppe von Funktionen von einem Anwenderprogramm ausgegeben wird, das der erweiterten
Maschine und einer Grundmaschinenschnittstellenfunktion zugeordnet ist, die durch die erweiterte Maschinenschnittstelle unterstützt wird. Wenn somit die Betriebssysteme
506, 507 voneinander verschieden sind, haben die dazu gehörenden erweiterten Maschinen beispielsweise die Maschinen
509 und 511 jeweils verschiedene Funktionen.
Wie es oben beschrieben wurde, macht es das virtuelle Maschinensystem
möglich, eine Vielzahl von Betriebssystemen in einer einzigen Grundmaschine scheinbar gleichzeitig auszuführen, was
erwartungsgemäß folgendes bewirkt:
1. Die Arbeit eines laufenden Systems muß nicht unterbrochen
werden, um einen Programmfehler zu beheben oder ein neues entwickeltes System auszutesten.
2. Da eine Vielzahl von verschiedenen Betriebssystemen in einer einzigen Grundmaschine arbeiten kann, können die Hardware-Betriebsmittel
wirksamer ausgenutzt werden.
3. Eine Grundmaschine erlaubt es, virtuell ein Maschinensystem mit einer anderen Architektur oder einem anderen Systemaufbau
auszubilden, so daß ein Steuerprogramm einer neuen Maschine oder eines neuen Maschinensystems selbst dann getestet werden
kann, wenn die betreffende Hardware tatsächlich nicht existiert.
Zur Ausführung des virtuellen Maschinensystems wird das spezielle Steuerprogramm, der virtuelle Maschinenmonitor 502 unterstützt.
Um effektiv die virtuellen Maschinen 504, 505 zu betreiben, unterteilt der virtuelle Maschinenmonitor 502 die
Hardware-Betriebsmittel der Grundmaschine 501 bezüglich der Zeit und des Raumes unter Verwendung des Mehrprogrammbetriebes, um
dadurch die Hardware-Betriebsmittel jeder virtuellen Maschina
504, 505 zuzuordnen. Befehle zum Handhaben der Hardware-Betriebsmittel werden als privilegierte Befehle formuliert, um
die Systemintegrität des gesamten virtuellen Maschinensystems zu garantieren, und können nur in einer Betriebsart ausgeführt
werden, die eine privilegierte Betriebsart genannt wird. Wenn wahrgenommen wird, daß ein derartiger privilegierter Befehl
vom Betriebssystem 506 oder 507 ausgegeben wurde, wird dieser Befehl vom virtuellen Maschinenmonitor 502 selbst interpretiart
und ausgeführt. Wenn die Ausführung abgeschlossen ist, führt dieser die Steuerung zu einem Betriebssystem zurück, das gerade
läuft. Diese Verarbeitung ist notwendig, um die Betriebsmittel der Grundmaschine 501 unter den virtuellen Maschinen
aufzuteilen und das Zeitintervall, das für die Verarbeitung benötigt wird, wird zu einem zusätzlichen Zeitintervall, das
nur das virtuelle Maschinensystem betrifft. Da darüberhinaus ein aufgeteilter Hauptspeicher unter Verwendung von Techniken
verwirklicht wird, die dem virtuellen Speichersystem zugeordnet sind, ist das Zeitintervall, das dazu benutzt wird, die Adressen
für die virtuelle Speicherung umzusetzen , gleichfalls in dem zusätzlichen Zeitintervall enthalten. Dieses zusätzliche
Zeitintervall, das nur das virtuelle Maschinensystem betrifft, kann kurz in der folgenden Weise klassifiziert werden:
1. Zusätzliche Zeit aufgrund einer Simulationsverarbeitung eines
privilegierten Befehls.
2. Zusätzliche Zeit aufgrund einer Simulationsverarbeitung eines ünterbrechungsprogrammes.
3. Zusätzliche Zeit aufgrund einer AdressenumSetzung zur Unterstützung
der virtuellen Speicherfunktion.
4. Zusätzliche Zeit, die zu einer Verteilungsverarbeitung (Umschalten)
zwischen den virtuellen Maschinen gehört.
Bisher wurde ein virtuelles Maschinensystem hauptsächlich auf dem Gebiet von großen Allzweckrechnern, nämlich Großrechnern
und Großrechenprozessoren in Betracht gezogen. Ein bemerkenswerter Fortschritt in der jüngsten Hochintegrationstechnik hat
andererseits die Mikrocomputertechnik stark weiterentwickelt. Das hat zur Folge, daß Kombinationen aus Mikrocomputern und
peripheren Geräten, nämlich sogenannte Personalcomputer, entwickelt
wurden. Viele Anwenderprogramme für verschiedene Personalcomputer werden gegenwärtig entwickelt. In dieser Situation
ist es wünschenswert, nützliche Anwenderprogramme, die für einen Personalcomputer entwickelt wurden, auch bei einem anderen
Personalcomputer verwenden zu können. Derartige Anwenderprogramme wurden jedoch so entwickelt, daß sie unter den jeweiligen
speziellen Betriebssystemen arbeiten. Für Personalcomputer sind die Anwenderprogramme besonders an das Betriebssystem
gekoppelt. Es ist vorauszusehen, daß es wünschenswert wird, derartige Anwenderprogramme auch bei einem anderen Personalcomputer
mit einem anderen Betriebssystem auszuführen und daß es notwendig werden wird, das Betriebssystem generell auszutauschen,
um erneut Teile der Anwenderprogramme zu bilden, die in einer engen Beziehung zu dem Betriebssystem stehen. Das
ist in vielen Fällen außerordentlich unzweckmäßig. Es ist daher außerordentlich effektiv, zur Lösung dieses Problems ein virtuelles
Maschinensystem zu verwenden, das es erlaubt,daß eine Vielzahl von Betriebssystemen in einer einzigen Grundmaschine arbeitet,
da beispielsweise die Größe des Betriebssystems für einen Personalcomputer wesentlich geringer als die Größe des
Betriebssystems einer Großmaschine ist.
Es gibt gegenwärtig jedoch keinen Computer, der mit Einrichtungen zur Verringerung des zusätzlichen Zeitbedarfs versehen ist,
der durch den virtuellen Maschinenmonitor verursacht wird, wie es oben beschrieben wurde. Es ist erwünscht, den zusätzlichen
Zeitbedarf so weit wie möglich herabzusetzen, wenn das virtuel-.Ie
Maschinensystem bei einem Personalcomputer angewandt wird.
3607883
Eine typische Mikroprozessorarchitektur, die gegenwärtig benutzt wird, ist beispielsweise in "A Microprocessor Architecture
for a Changing World: The Motorola 68000" Computer Bd. 12, Seite 43 bis 51 (1979-2), IEEE und "iAPX 86 Family User's
Manual", Intel Corporation: Document No. 205885, beschrieben.
Durch die Erfindung sollen daher ein Steuerverfahren und eine Steuereinrichtung in einem virtuellen Maschinensystem für ein
kleinformatiges Computersystem wie beispielsweise einen Personalcomputer mit Mikroprozessoren geschaffen werden, wobei das
Verfahren und die Vorrichtung auf das Auftreten einer Ablaufunterbrechung oder einer Unterbrechungsbedingung, beispielsweise
einer Unterbrechung bei einer Teilung durch Null in einem Anwenderprogramm, das unter der Steuerung eines Betriebssystems
ausgeführt wird, das der virtuellen Maschine zugeordnet ist, anspricht und den zusätzlichen Verarbeitungszeitbedarf verringert,
der durch das Eingreifen eines virtuellen Maschinenmonitors verursacht wird.
Durch die Erfindung soll das Eingreifen des virtuellen Maschinenmonitors
so weit wie möglich bei der Unterbrechungsverarbeitung herabgesetzt werden, um direkt ein UnterbrechungsVerarbeitungsprogramm
oder Alarmverarbeitungsprogramm der virtuellen Maschine auszulösen.
Im folgenden wird zunächst die Verarbeitung beschrieben, die dann erfolgt, wenn eine Programmunterbrechung beispielsweise
eine Teilung durch Null in einem virtuellen Maschinensystem auftritt, das mit einem Personalcomputer ausgeführt wird, der
einen Mikroprozessor umfaßt, wobei das erfindungsgemäße Steuerverfahren dargestellt wird. Wenn ein virtuelles Maschinensystem
von einem Personalcomputer gebildet wird, enthält jede virtuelle Maschine 504 und 505 eine Vektortabelle. Die Grundmaschine
501, die einen Mikroprozessor umfaßt, enthält andererseits eine echte Vektortabelle.
10
--*- 3607883
--*- 3607883
Bei einer Verarbeitung, bei der das Anwenderprogramm 515 unter
der Steuerung des Betriebssystems 506 ausgeführt wird, das einer virtuellen Maschine entspricht, wird dann, wenn eine
Unterbrechung gefordert ist und die Forderung die Unterbrechungsbedingung erfüllt, die Ausführung der folgenden Befehle
des Anwenderprogramms 515 unterbrochen und beginnt ein Mikroprogramm
in der Hardware der Grundmaschine 501 mit dem Ablauf einer Unterbrechungsverarbeitung. Der Inhalt und die Abfolge
dieser Arbeitsweise werden kurz in der folgenden Weise zusammengefaßt.
1. Der Mikroprozessorstatus wird in Betriebsregistern sichergestellt.
2.Es wird eine Eintragsposition (Eintragsadresse einer Vektortabelle)
für eine Unterbrechungsnummer (Unterbrechungsidentifikationsnummer)
in der echten Vektortabelle des virtuellen Maschinenmonitors 502 berechnet.
3. In einem Stack- oder Stapelbereich des virtuellen Maschinenmonitors
502 werden der Inhalt eines Programmzählers (Befehlsadressenregister)
und verschiedener Betriebsregister sowie der oben im Schritt !.sichergestellte Status gespeichert.
4. Es wird eine Adresse eines neuen Befehls auf der Grundlage der Vektoradresse gelesen, die im Schritt 2. erhalten wird,
und es wird die Adresse in den Programmzähler eingegeben.
Die oben beschriebene Verarbeitung wird über Mikroprogramme im Mikroprogrammverarbeitungsteil 501A von Figur 2 ausgeführt.
Wenn der Schritt 4 ausgeführt ist, geht die Steuerung auf den virtuellen Maschinenmonitor 502 über.
Fig.2 zeigt schematisch kurz den Ablauf des Unterbrechungsprogramms
gemäß der Erfindung. Zum Vergleich ist der Ablauf eines Unterbrechungsprogramms nach einem anderen denkbaren Steuerverfahren
in gestrichelten Linien dargestellt, wohingegen der Ablauf des erfin-
— ν —
dungsgemäßen Steuerverfahrens durch ausgezogene Linien dargestellt
ist. Wie es in Figur 2 dargestellt ist, hält jede Eintragsposition einer Vektortabelle 550 im virtuellen Maschinenmonitor
502 die erste Adresse eines Programmes, um eine Unterbrechung auszuführen, die mit einer Unterbrechungsnummer
versehen ist, die dem Programm zugeordnet ist. Der Eintrag 551 entspricht beispielsweise einer privilegierten
Befehlsunterbrechung und hält die erste Adresse eines Programmes 552 zum Simulieren eines privilegierten Befehls. Der
Eintrag 553 entspricht einer Unterbrechung durch eine Teilung durch Null und hält somit die erste Adresse eines Arbeitsprogramms 554 zum Auslösen einer Unterbrechungsverarbeitung.
Die Vektortabelleneinträge, die der Anweisungsunterbrechung, der Eingangs/Ausgangsunterbrechung und der Zeitgeberunterbrechung
zugeordnet sind, werden darüberhinaus im virtuellen Maschinenmonitor 502 gebildet.
Wenn das erfindungsgemäße Steuersystem nicht angewandt wird, wird die Adresse der den Unterbrechungsablauf auslösenden Verarbeitung
554 zum Unterbrechen des Betriebssystems 506 der betreffenden virtuellen Maschine im virtuellen Maschinenmonitor
am Unterbrechungseintrag 553 für das Teilen durch Null
in der echten Vektortabelle 550 gesetzt, so daß das Verarbeitungsprogramm 554 erforderlichenfalls ausgeführt wird.
Das die Unterbrechungsverarbeitung auslösende Arbeitsprogramm 554 führt eine Verarbeitung, die der Arbeit des Mikroprogrammteils
501A des Mikroprozessors äquivalent ist, unter Verwendung einer Vektortabelle 555 und eines Stacks 201 der virtuellen
Maschine aus, wobei diese Verarbeitung einen zusätzlichen Zeitbedarf des virtuellen Maschinenmonitors hervorruft.
Im Gegensatz dazu wird gemäß der Erfindung jeder Eintrag der Vektortabelle des virtuellen Maschinenmonitors,auf den die
K 3607883
Grundmaschinen-Hardware bei dem Auftreten einer Unterbrechung Bezug nimmt, vorher mit der Adresse des Unterbrechungsverarbeitungsprogramms
einer virtuellen Maschine beladen, das für eine Unterbrechungsnummer zu verwenden ist, die dem Eintrag
zugeordnet ist. Natürlich ist keine Unterbrechung, wie beispielsweise eine Zeitgeberunterbrechung, enthalten, für die
der virtuelle Maschine die Verarbeitung direkt ausführen muß. Wenn somit eine aufgetretene Unterbrechung direkt
durch die virtuelle Maschine verarbeitet werden darf, wird der virtuelle Maschinenmonitor nicht aktiviert, d.h. kann das
Unterbrechungs-Verarbeitungsprogramm der virtuellen Maschine unmittelbar die notwendige Verarbeitung bewirken, was den zusätzlichen
Zeitbedarf ausschließt, der mit dem Eingriff des virtuellen Maschinenmonitors verbunden ist.
Darüberhinaus wird auch der Inhalt des System-Stack-Zeigers, der den Stack anzeigt, vorher eingegeben oder gesetzt, um den
Stack der laufenden virtuellen Maschine anzugeben. Folglich werden die Inhalte der Register, die für eine Unterbrechungsverarbeitung sicherzustellen sind, direkt im Stack der laufenden
virtuellen Maschine gespeichert, so daß ein zusätzlicher Zeitbedarf aufgrund der Verwendung des Stack des virtuellen
Maschinenmonitors nicht auftritt.
Wenn der virtuelle Maschinenmonitor eine Verteilungsverarbeitung zum Verteilen der Betriebsmittel der Grundmaschine von
Figur 1 auf die virtuellen Maschinen durchführt, ändert er gemäß der Erfindung somit den Wert des Eintrags 553 der Vektortabelle
550 und den Wert des System-Stack-Zeigers, wie es später
beschrieben wird, so daß die Inhalte der Programmzähler und der verschiedenen Betriebsregister und der Status des Prozessors
direkt im Stack 556 des Betriebssystems 506 in der virtuellen Maschine und nicht in einem Stack 558 des virtuellen
Maschinenmonitors 502 im Programmschritt G) des Mikroprogramm-Verarbeitungsteils
501A in der Grundmaschine sichergestellt werden. Da die Adresse des Stack 558 gewöhnlich durch den
System-Stack-Zeiger angegeben wird, wird eine direkte Sicherstellung
dadurch ausgeführt, daß der Inhalt des System-Stack-Zeigers durch die Adresse des Stack 201 bei der Verteilungsverarbeitung ersetzt wird.
Beim Programmschritt (4) des Mikroprogrammverarbeitungsteils 501A
wird weiterhin die erste Adresse eines Unterbrechungsverarbeitungsprogramms 557 des Betriebssystems 506 in der virtuellen
Maschine direkt in den Programmzähler eingegeben. Dieser Arbeitsvorgang wird bei der Verteilung dadurch ausgeführt, daß
der Inhalt des entsprechenden Eintrags 553 der Vektortabelle 550 im virtuellen Maschinenmonitor durch die erste Adresse des
Unterbrechungsverarbeitungsprogramms 557 des Betriebssystems in der virtuellen Maschine ersetzt wird.
Folglich kann das den Unterbrechungsbetrieb auslösende Verarbeitungsprogramm
beispielsweise das Programm 554 fehlen, das von gestrichelten Linien im virtuellen Maschinenmonitor 502
umgeben ist. Das hat zur Folge, daß das Zeitintervall, das für die Ausführung von 500 bis 600 Befehlen zum Auslösen der Verarbeitung,
d.h. der zusätzliche Zeitbedarf des virtuellen Maschinenmonitors vermieden werden kann.
Im folgenden werden anhand der zugehörigen Zeichnung besonders bevorzugte Ausführungsbeispiele der Erfindung näher beschrieben.
Es zeigen
Figur 1 in einem Plandiagramm ein virtuelles Maschinensystem,
Figur 2 eine Momentdarstellung des erfindungsgemäßen Unterbrechungsprogrammablaufs,
Figur 3 in einem Blockschaltbild ein Beispiel eines
Personalcomputers, bei dem das erfindungsgemäße
Verfahren und die erfindungsgemäße Vorrichtung angewandt werden können,
Figur 4 in einem schematischen Blockdiagramm einen Speicher-
und Steuerblock eines Speichers einer virtuellen Maschine und eines echten Speichers,
Figur 5 in einem Diagramm den Aufbau des Mikroprozessors CPU von Fig. 3,
Figur 6 in einem Flußdiagramm die Arbeitsabfolge des Mikroprogrammprozessorteils
von Figur 5 und
Figur 7 in einem Flußdiagramm den Programmteil des Verteilungsprogramms,
das im virtuellen Maschinenmonitor gemäß der Erfindung auszuführen ist.
In Figur 3 ist ein Ausführungsbeispiel eines Personalcomputers gemäß der Erfindung dargestellt. Die in Figur 3 dargestellte
Anordnung umfaßt einen Mikroprozessor 51, einen Taktgenerator
52, eine Unterbrechungssteuerschaltung 53 und einen Hauptspeicher RAM 54, der als Echtspeicher 200 von Figur 4 arbeitet.
Der RAM dient dazu, das Steuerprogramm, das virtueller Maschinenmonitor 502 genannt wird, das Betriebssystem 506 und das Anwenderprogramm
515 und ähnliches zu speichern, wie es in Fig.1 und 2 dargestellt ist. Der virtuelle Maschinenmonitor 502 enthält
die Steuerinformationen, wie beispielsweise die Steuerblöcke 1, 2 und eine Unterbrechungsliste 11 in Figur 4. Das
in Figur 3 dargestellte System enthält eine Speicher-Steuereinheit 55, eine Plattensteuerschaltung 56, eine Magnetplattendatei
DISC 57, eine Druckersteuerschaltung 58, einen Drucker PRT 59, eine Anzeigetastatur-(D/K)-Steuerschaltung 60, eine
Bildschirmeinheit CRT mit Tastatur KEY 61, eine Datenübermittlungssteuerschaltung
62 und eine Datenübermittlungsschaltungseinheit 63. Diese peripheren Ein richtungen können wahlweise
vorgesehen sein, es können auch andere als die in Fig. 3 dargestellten peripheren Einrichtungen benutzt werden.
Die Zentraleinheit CPU 51 ist mit jeder Systemkomponente über eine 24-Bit-Adressensammelleitung 66, eine 16- oder 32-Bit-Datensammelleitung
67, eine Gruppe von Steuersignalleitungen zu den jeweiligen Einheiten und eine Gruppe von Beantwortungssignalleitungen
71 verbunden. Die CPU 51 ist mit der Speichersteuereinheit 55 über eine Funktionssammelleitung 68, die eine
Information zum Anzeigen der Betriebsart der CPU 51, der Nummer
einer virtuellen Maschine, einer Zugriffsart und ähnliches überträgt, und über eine Gruppe von Signalleitungen 73 verbunden,
die von der Speichersteuereinheit 55 zur CPU 51 eine Adressenunterbrechung, einen Speicherfehler und ähnliches melden.
Figur 4 zeigt in einem Blockdiagramm die Beziehung zwischen dem Verfahren der Zuordnung des Echtspeichers im RAM 54 von Fig.
und der logischen Speicherbereiche 220, 230 jeder virtuellen Maschine und der Steuerinformation in Form der Steuerblöcke 1
bis 3 und 11, die notwendig ist, um das virtuelle Maschinensystem auszuführen. Die Steuerinformationen sind in einem Speicherbereich
210 des virtuellen Maschinenmonitors gespeichert. Die Speicherbereiche 201 und 202 werden fortlaufend den virtuellen
Maschinen zugeordnet.
Die Bereiche 201 (physikalische Adressen «* bis ß-1) und 202
(physikalische Adressen ß bis N) des Echtspeichers 200 werden einem Adressierungsbereich 220 (logische Adressen 0 bis m) urd
einem Adressierungsbereich 230 (logische Adressen 0 bis n) jeweils zugeordnet, wohingegen der Bereich 210 (physikalische
Adressen 0 bis oC-1) des Echtspeichers 200 dem virtuellen Maschinenmonitor
502 zugeordnet wird.
Der Bereich 210 des virtuellen Maschinenmonitors ist den virtuellen
Maschinen 504, 505 entsprechend mit Steuerblöcken VMLIST.
und VMLIST22 versehen, die die Steuerinformation halten, die für
die Verteilungsverarbeitung notwendig ist. Die Adresse eines Steuerblockes, der der laufenden virtuellen Maschine zugeordnet
ist, wird durch einen Steuerblockzeiger VMIDM3 angezeigt, der gleichfalls im Bereich 210 des virtuellen Maschinenmonitors
angeordnet ist. Die Einträge der Steuerblöcke halten eine nächste Steuerblockadresse 4, eine erste Adresse eines Echtspeicherbereiches,
der der entsprechenden virtuellen Maschine 5 züge-
3607883
ordnet ist, die Größe des Ausdehnung des Bereiches 6, eine Adresse der Vektortabelle der virtuellen Maschine 7, eine
Adresse 8 der Unterbrechungsliste 11, die später beschrieben
wird, einen Wert 9 des Stack-Zeigers für die virtuelle Maschine
und verschiedene Register 10 der virtuellen Maschine. Die Unterbrechungsliste 11, die durch den Eintrag 8 angegeben ist,
ist gleichfalls im Bereich 210 des virtuellen Maschinenmonitors
gespeichert, um Unterbrechungsnummern 12 bis 14 zu halten,
für die die virtuelle Maschine direkt das Programm ausführen darf, ohne daß der virtuelle Maschinenmonitor eingreift, und
um die Anzahl der Einträge 15 (darin gehaltene Unterbrechungsnummern) zu halten.
Wenn die Arbeit einer virtuellen Maschine ausgelöst wird, führt der virtuelle Maschinenmonitor 502 die Verteilungsverarbeitung
aus, um die echte Hardware wie beispielsweise die CPU 51 und die Register der virtuellen Maschine zuzuordnen. Während dieses
Arbeitsvorganges werden die Register 10 im Steuerblock gehalten und wird VMLIST zur Gruppe von Registern in der CPU 51 bewegt.
Während der Verteilungsverarbeitung werden der Inhalt der Vektortabelle 550, die im folgenden als Systemvektortabelle bezeichnet
wird, in dem virtuellen Maschinenmonitor 502 und der Inhalt des System-Stack-Zeigers ersetzt, wie es oben beschrieben wurde. Die Arbeitsabfolge wird später im einzelnen anhand
von Figur 7 beschrieben.
Figur 5 zeigt in einem Blockschaltbild schematisch den Mikroprozessor
CPU 51 von Figur 3. Die in Figur 5 dargestellte Anordnung umfaßt eine Gruppe von Datenregistern 81, eine Gruppe
von Adressenregistern 82, eine Gruppe von Arbeitsregistern WR 83,
ein Befehlsregister IR 84, ein Statusregister SR 85 und ein Befehlsadressenregister IAR 86, die jeweils mit einer internen
Datensammelleitung £11 verbunden sind.
Es sind weiterhin eine arithmetische oder logische Operationsschaltung 87, die Additionen, Subtraktionen und Verschiebungsoperationen ausführt , ein ODER-Glied 88, ein Kennzeichen 89,
das das Auftreten einer Unterbrechungsbedingung anzeigt,und ein Kennzeichen 90 vorgesehen, das dann benutzt wird, wenn die
logischen Speicherbereiche 220, 230 jeder virtuellen Maschine den Bereichen des Echtspeichers 200 zugeordnet werden, wie es
in Figur 4 dargestellt ist, um anzuzeigen, ob der Wert der ersten Adresse im Echtspeicher, nämlich der Wert 5 in Figur 4,
dem Wert des logischen Bereiches jeder virtuellen Maschine zuaddiert ist oder nicht. Wenn das Kennzeichen 90 auf "1" gesetzt
ist, ist der erste Adressenwert des Echtspeichers dem Wert des logischen Bereiches der virtuellen Maschine zuaddiert.
Die Anordnung von Figur 5 umfaßt weiterhin ein Register IVEC?? 91,
das die Ursache für eine Unterbrechungsbedingung, das Auftreten einer Ablaufunterbrechung hält, einen Multiplexer MPX 92,ein
Register BASE 93,das einen ersten Adressenwert des Echtspeichers hält, der dem logischen Bereich jeder virtuellen Maschine entspricht,
einen Addierer 94, ein Datenregister DR 95, das Daten hält, und ein Adressenregister ADR 96, das eine Adresse hält.
Ein Unterbrechungsprogrammteil 97 bestimmt, ob eine Unterbrechungsursache,
die von der Unterbrechungssteuerschaltung 53 von Figur 3 gemeldet wird, zur Unterbrechung des Mikroprogrammverarbeitungsteils
501A unter Verwendung des Statusregisters
SR 85 und zur Steuerung eines Arbeitsablaufes führt, bei dem die Unterbrechungsnummer dem IVECT 91 geliefert wird, wenn die
Unterbrechung verursacht wird.
Unter den Signalleitungen, die in Figur 5 dargestellt sind, sind die durch —>>— und —<
<— bezeichneten Leitungen Hauptsignalleitungen zu und von einer Einrichtung, die bezüglich
des CPU-Plättchens extern angeordnet ist.
In einem Mikroprograiranverarbeitungsteil mit einer Gruppe
von Mikroprogrammen wird eine Abfolge von Befehlen, die im
Echtspeicher des Mikroprogrammverarbeitungsteils gespeichert
sind, der Reihe nach abgefragt und kurzzeitig im Befehlsregister 84 gehalten, woraufhin die Befehle interpretiert werden. Dieser Teil 501A steuert weiterhin die Arbeit der arithmetischen oder logischen Operationsschaltung 87 entsprechend
einer Angabe des Befehls und führt eine einer Unterbrechung
zugehörige Verarbeitung durch, wenn Unterbrechungsverhältnisse auftreten, wie es in Figur 2 dargestellt ist.
von Mikroprogrammen wird eine Abfolge von Befehlen, die im
Echtspeicher des Mikroprogrammverarbeitungsteils gespeichert
sind, der Reihe nach abgefragt und kurzzeitig im Befehlsregister 84 gehalten, woraufhin die Befehle interpretiert werden. Dieser Teil 501A steuert weiterhin die Arbeit der arithmetischen oder logischen Operationsschaltung 87 entsprechend
einer Angabe des Befehls und führt eine einer Unterbrechung
zugehörige Verarbeitung durch, wenn Unterbrechungsverhältnisse auftreten, wie es in Figur 2 dargestellt ist.
Im folgenden wird im einzelnen anhand von Figur 6 der Arbeitsablauf beschrieben, der dann bewirkt wird, wenn eine Unterbrechungsbedingung / nämlich eine Ablaufunterbrechung, auftritt.
Der Mikroprogrammverarbeitungsteil 501A gibt die Anweisung,
für eine Folge von Befehlen vom RAM 54 in Figur 3 auf der Grundlage des Speicheradressenwertes abzurufen, der im Befehlsadressenregister 86 gehalten ist. Wenn das Befehlsadressenregister 86 einen logischen Adressenwert einer virtuellen Maschine, nämlich den Wert der Adressen 0 bis m des Speichers 220 in Figur 4 enthält (M Kennzeichen 90 ist an), wird der
Wert des Registers BASE 93 dem Speicheradressenwert 930 im Addierer 94 zuaddiert, wonach zum Speicher RAM 54 eine Leseanforderung ausgegeben wird.
für eine Folge von Befehlen vom RAM 54 in Figur 3 auf der Grundlage des Speicheradressenwertes abzurufen, der im Befehlsadressenregister 86 gehalten ist. Wenn das Befehlsadressenregister 86 einen logischen Adressenwert einer virtuellen Maschine, nämlich den Wert der Adressen 0 bis m des Speichers 220 in Figur 4 enthält (M Kennzeichen 90 ist an), wird der
Wert des Registers BASE 93 dem Speicheradressenwert 930 im Addierer 94 zuaddiert, wonach zum Speicher RAM 54 eine Leseanforderung ausgegeben wird.
Die Folge der Befehle, die vom Speicher 54 gelesen und im Datenregister
95 gehalten sind, werden über die Datensammelleitung €11 übertragen und im Befehlsregister 84 gespeichert. Auf der
Grundlage der Befehlsdaten im Befehlsregister 84 werden Operationen wie beispielsweise Additionen, Subtraktionen oder Divisionen
zwischen den Werten der Gruppe von Datenregistern 81 und denen des Speichers RAM 54 ausgeführt. Wenn eine Unterbrechung
aufgrund einer Teilung durch Null als Folge dieser Operationen auftritt, wird ein Signal, das diese Verhältnisse angibt, über
die Signalleitung £.14 und das ODER-Glied 88 übertragen, damit
das Kennzeichen E 89 das Auftreten dieser Verhältnisse anzeigt. Eine Nummer, die eine Unterbrechung aufgrund einer Teilung
durch Null angibt, wird über eine Signalleitung 6. 12 ausgegeben,
so daß sie im Register IVECT 91 gehalten wird.
Figur 6 zeigt ein Flußdiagramm der Arbeitsabfolge, die im Mikroprogrammverarbeitungsteil
501A von Figur 5 ausgeführt wird. Zunächst wird in einem Beurteilungsschritt 101 festgestellt, ob
eine Ablaufunterbrechung aufgetreten ist oder nicht. Wenn eine
Ablaufunterbrechung aufgetreten ist, d.h. wenn eine Unterbrechung festgestellt wird, werden als Folge davon die Verarbeitungsschritte
102 bis 109 ausgeführt. Ein Verarbeitungsschritt 110 führt eine übliche Befehlsinterpretation aus. Wenn das Kennzeichen
M im Schritt 102 aus ist, wird der Wert des Registers BASE 93 nicht zum Wert des logischen Bereiches zuaddiert, wenn
auf den Echtspeicher des RAM 54 von Figur 3 zugegriffen wird.
Die Verarbeitungsschritte 103 bis 107 zeigen Einzelheiten des
Mikroprogrammablaufes, der im Mikroprogrammverarbeitungsteil
von Figur 2 auszuführen ist. Das Kennzeichen E für das Auftreten einer AbIaufunterbrechung ist im Verarbeitungsschritt 108
aus, die Betriebsart, bei der der Wert des Registers BASE 93 dem Wert des logischen Bereiches zuaddiert wird, wird im Verarbeitungsschritt
109 wiederhergestellt und anschließend wird der Befehl im Verarbeitungsschritt 110 ausgeführt. Folglich
wird eine Gruppe von Befehlen ausgeführt, die im Speicherbereich beginnend mit der Speicheradresse gespeichert sind, die
am Eintrag der Vektortabelle 550 liegt.
Wenn gemäß der Erfindung der virtuelle Maschinenmonitor eine Verteilungsverarbeitung für die virtuelle Maschine ohne Änderung
des Mikroprogrammverarbeitungsflusses durchführt, werden der Inhalt der Vektortabelle 550 (Systemvektortabelle) im virtuellen
Maschinenmonitor 502 und der Inhalt des System-Stack-Zeigers dadurch ersetzt, daß der Programmablauf gemäß Fluß-
- VS -
diagramm von Figur 7 ausgeführt wird.
In einem Verarbeitungsschritt 31 von Figur 7 wird auf einen Steuerblock beispielsweise den Block VMLIST11 durch VMID 3
zugegriffen. Der Steuerblock enthält verschiedene Zustandsinformationen einer virtuellen Maschine, beispielsweise der
virtuellen Maschine 504, für die zu arbeiten ist.
In einem Verarbeitungsschritt 32 wird eine Adresse 7 einer Vektortabelle beispielsweise die Vektortabellenadresse 555
der virtuellen Maschine vom Steuerblock VMLIST.1 gelesen. Es
sei angenommen, daß der erhaltene Adressenwert durch "a" wiedergegeben wird.
In einem Verarbeitungsschritt 33 wird eine Adresse 8 der Unterbrechungsliste
11 vom Steuerblock VMLIST.1 gelesen und wird
anschließend auf die Unterbrechungsliste 11 unter Verwendung der Adresse 8 zugegriffen, um die Zahl "1" der Einträge 15
zu erhalten.
Der Zählwert "i" des Zählers wird auf "0" in einem Verarbeitungsschritt
34 initialisiert und der Wert "1" wird in einem Verarbeitungsschritt 35 zuaddiert. In einem Verarbeitungsschritt
36 wird der Zählwert "i" mit der Zahl der Einträge "1" verglichen. Wenn "i" höchstens gleich "1" ist, werden die Verarbeitungsschritte
37 bis 39 ausgeführt. Die Verarbeitungsschritte 35 bis 39 werden wiederholt ausgeführt, bis der Zählwert "i"
größer als "1" ist, d.h. bis alle Einträge der Unterbrechungsliste 11 verarbeitet sind.
Im Verarbeitungsschritt 37 wird auf i-ten Eintrag
der Unterbrechungsliste 11 zugegriffen, um davon eine darin
gespeicherte Unterbrechungsnummer zu lesen. Es sei angenommen, daß die erhaltene Unterbrechungsnummer durch "b" wiedergegeben
wird.
Im Verarbeitungsschritt 38 wird eine in der Vektortabelle der virtuellen Maschine gespeicherte Adresse eines Eintrags,der
der Unterbrechungsnummer "b" entspricht, unter Verwendung der Vektortabellenadresse "a", die im Verarbeitungsschritt 32 erhalten wurde, und der Unterbrechungsnummer "b" berechnet, die aus dem Verarbeitungsschritt 37 resultiert. Diese Berechnung
erfolgt in der folgenden Weise:
der Unterbrechungsnummer "b" entspricht, unter Verwendung der Vektortabellenadresse "a", die im Verarbeitungsschritt 32 erhalten wurde, und der Unterbrechungsnummer "b" berechnet, die aus dem Verarbeitungsschritt 37 resultiert. Diese Berechnung
erfolgt in der folgenden Weise:
a + b χ (Eintragsgröße),
wobei die Eintragsgröße die Anzahl der Bytes ist, die einen
Eintrag der Vektortabelle bilden und gewöhnlich gleich 4 ist.
Anschließend wird der Inhalt des Zieleintrags unter Verwendung der in dieser Weise erhaltenen Adresse ausgelesen. Der Inhalt dieses Eintrags ist die erste Adresse (logische Adresse) eines Verarbeitungsprogrammes beispielsweise des Unterbrechungsverarbeitungsprogrammes 557 der virtuellen Maschine für die durch die Nummer "b" angegebene Unterbrechung. Es sei angenommen, daß diese Adresse durch "c" wiedergegeben ist.
Eintrag der Vektortabelle bilden und gewöhnlich gleich 4 ist.
Anschließend wird der Inhalt des Zieleintrags unter Verwendung der in dieser Weise erhaltenen Adresse ausgelesen. Der Inhalt dieses Eintrags ist die erste Adresse (logische Adresse) eines Verarbeitungsprogrammes beispielsweise des Unterbrechungsverarbeitungsprogrammes 557 der virtuellen Maschine für die durch die Nummer "b" angegebene Unterbrechung. Es sei angenommen, daß diese Adresse durch "c" wiedergegeben ist.
Im Verarbeitungsschritt 39 wird der in dieser Weise erhaltene Wert "c" der ersten Adresse 5 des virtuellen Maschinenspeicherbereiches
zuaddiert, von der angenommen wird, daß sie durch "d" wiedergegeben wird und die im Steuerblock VMLIST11 gespeichert
ist, um dadurch die erste physikalische Adresse des Unterbrechungsverarbeitungsprogramms
der virtuellen Maschine entsprechend der Unterbrechungsnummer "b" zu liefern.
Im nächsten Verarbeitungsschritt 40 wird der Inhalt des Eintrages,
beispielsweise des Eintrags 533 der Systemvektortabelle 550, die zu der Unterbrechungsnummer "b" gehört, durch den
Wert £c+d3,der sich aus dem Verarbeitungsschritt 39 ergibt,
nämlich durch die erste physikalische Adresse des Unterbrechungsverarbeitungsprogrammes der virtuellen Maschine entsprechend der Unterbrechungsnummer "b" ersetzt.
Wert £c+d3,der sich aus dem Verarbeitungsschritt 39 ergibt,
nämlich durch die erste physikalische Adresse des Unterbrechungsverarbeitungsprogrammes der virtuellen Maschine entsprechend der Unterbrechungsnummer "b" ersetzt.
Wenn der Zählwert "i" den Wert "1" im Verarbeitungsschritt 36 überschreitet, sind die Verarbeitungen 37 bis 40 für alle Einträge
der Unterbrechungsliste abgeschlossen. Die Steuerung geht folglich auf einen Verarbeitungsschritt 41 über, in dem der Inhalt
des System-Stack-Zeigerregisters durch einen Wert ersetzt wird, der dadurch erhalten wird, daß die erste Adresse "d"
des Bereiches dem Wert 9 des System-Stack-Zeigers dieser virtuellen Maschine im Steuerblock VMLIST1I zuaddiert wird. Der Wert
des System-Stack-Zeigers ist eine logische Adresse für einen Stack-Bereich, beispielsweise dem Stack-Bereich 201, der betreffenden
virtuellen Maschine, so daß der Inhalt des System-Stack-Zeigerregisters nicht den Stack-Bereich 558 des virtuellen Maschinenmonitors,
wie es bei dem herkömmlichen Verfahren der Fall ist, sondern einen Stack-Bereich , beispielsweise den Stack-Bereich
201 der laufenden virtuellen Maschine angibt. Obwohl das System-Stack-Zeigerregister in der Zeichnung nicht dargestellt
ist, ist es ein Register, das im Mikroprozessor vorgesehen ist und auf das durch ein Programm Bezug genommen werden
kann und das durch ein Programm fortgeschrieben werden kann. Die erste Adresse "d" des virtuellen Maschinenspeicherbereiches
wird addiert, um die erste Adresse des Unterbrechungsverarbeitungsprogramms der virtuellen Maschine, die in der System-Vektortabelle
im Verarbeitungsschritt 39 zu speichern ist, und den Stack-Zeigerwert der virtuellen Maschine zu bestimmen, der
im System-Stack-Zeigerregister im Verarbeitungsschritt 41 zu
speichern ist. Die Additionsoperation muß jedoch nicht notwendigerweise während des oben beschriebenen Ablaufs der Verteilungsverarbeitung
ausgeführt werden. Die Steuerblöcke 1, 2 und die Unterbrechungsliste 11 werden gebildet, wenn der virtuelle
Maschinenmonitor jede virtuelle Maschine bildet. Als Alternative kann folglich dann, wenn diese virtuellen Maschinen gebildet
werden, jeder Eintrag der Unterbrechungsliste 11 mit der ersten physikalischen Adresse, die dann erhalten wird, wenn
"d" zum Adressenwert zuaddiert wird, der in der Vektortabelle der virtuellen Maschine gespeichert ist, des entsprechenden
Unterbrechungsverarbeitungsprogramm der virtuellen Maschine zusätzlich
zur Unterbrechungsnummer geladen werden und kann die
3607883
- J-9 -
physikalische Adresse des Stacks der virtuellen Maschine als Wert 9 des Stack-Zeigers im Steuerblock VMLSTI1I gespeichert
werden. Dann können der Adressenwert in der Unterbrechungsliste und der Stack-Zeigerwert im Steuerblock direkt in der Systemvektortabelle
und im System-Stack-Zeigerregister jeweils gespeichert werden.
Gemäß der Erfindung wird die den Unterbrechungsbetrieb auslösende Verarbeitung des virtuellen Maschinenmonitors, die bei
bekannten Systemen unabdingbar ist, nicht mehr notwendig, so daß ein zusätzlicher Zeitbedarf aufgrund der Verarbeitung ausgeschlossen
wird, und somit ein wirkungsvolles virtuelles Maschinensystem geschaffen wird, das sich insbesondere für kleinformatige
Rechner, wie beispielsweise einen Personalcomputer eignet.
- Leerseite -
Claims (6)
1. Verfahren zum Steuern von Unterbrechungen in einem virtuellen
Maschinensystem, bei dem mehrere virtuelle Maschinen (504, 505) dadurch verwirklicht werden, daß wahlweise unter der Steuerung
eines ersten Steuerprogramms (502) eines von mehreren
zweiten Steuerprogrammen (506,507) ausgeführt wird, die jeweils die Ausführung der unter den virtuellen Maschinen auszuführenden
Programme steuern, wobei das erste Steuerprogramm eine zugehörige erste Vektortabelle (550) aufweist, die die
physikalischen Adressen hält, die benötigt werden, um die Unterbrechungsverarbeitungsprogramme (557) entweder im ersten
Steuerprogramm oder in dem einen ausgeführten zweiten Steuerprogramm zu beginnen,und jedes zweite Steuerprogramm eine zugehörige
zweite Vektortabelle (555) aufweist, die logische Adressen hält, die die Unterbrechungsverarbeitungsprogramme
(557) in jedem zweiten Steuerprogramm angeben, dadurch gekennzeichnet, daß
(i) physikalische Adressen (c+d) erzeugt werden, die die Adressen der Unterbrechungsverarbeitungsprogramme (557)
angeben, die in dem einen zweiten Steuerprogramm enthalten sind,das als Folge der Ausführung des ersten Steuerprogramms
als das als nächstes auszuführende gewählt wird, wobei die Erzeugung der Adressen auf der Grundlage der
logischen Adressen (c) erfolgt, die durch die zweite Vektortabelle gehalten sind, die dem gewählten zweiten Steuerprogramm
zugeordnet ist,
(ii) die erzeugten physikalischen Adressen in Einträge in der ersten Vektortabelle geschrieben werden, die als Einträge
zum Halten der Adressen vorbestimmt sind, die benötigt werden, um die ünterbrechungsverarbeitungsprogramme im gewählten
zweiten Steuerprogramm zu beginnen,
(iii) die Ausführung des gewählten Steuerprogramms nach dem zweiten Schritt (ii) begonnen wird,
(iv) eine der Adressen, die von der ersten Vektortabelle gehalten sind, entsprechend der Unterbrechungsursache einer erzeugten
Unterbrechungsanforderung (E) und auf diese Anforderung (E) ansprechend ausgelesen wird ι und
(v) ein Unterbrechungsverarbeitungsprogramm (557), das durch
die ausgelesenen Adressen (c+d) angegeben wird, unabhängig davon begonnen wird, ob das angegebene Unterbrechungsverarbeitungsprogramm
irn ersten S teuer programm oder in dem gewählten zweiten Steuerprogramm enthalten ist.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der erste Verfahrensschritt (i) einen
Verfahrensschritt (39) enthält, in dem ein Adressenwert (c),
der in der zweiten Vektortabelle (555) für das gewählte zweite Steuerprogramm gehalten ist, einer ersten Adresse (5,d) eines
Hauptspeicherbereiches (200) zuaddiert wird, der dem gewählten zweiten Steuerprogramm zugeordnet ist, um die physikalischen
Adressen zu bestimmen.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der erste Verfahrensschritt (i) einen
Verfahrensschritt (38) enthält, in dem auf jeden Eintrag in
der zweiten Vektortabelle für das gewählte zweite Steuerprogramm auf der Grundlage einer Startadresse (7,8) der zweiten
Vektortabelle (555) des gewählten zweiten Steuerprogramms
und einer der Unterbrechungsidentifikationsnummern (12,1 3/14.,b)
zugegriffen wird, die für die Unterbrechungsanforderungen vorbestimmt
sind, die durch jedes der Unterbrechungsverarbeitungsprogramme
im gewählten zweiten Steuerprogramm durchgeführt werden sollten,und daß der zweite Verfahrensschritt (ii) einen
Verfahrensschritt (40) enthält, in dem auf jeden Eintrag in der ersten Vektortabelle (550) auf der Grundlage einer Unterbrechungsidentifikationsnummer
(12,13,14,b) zugegriffen wird.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß der vierte Verfahrensschritt (iv) einen
Verfahrensschritt (40) enthält, in dem auf einen Eintrag in der ersten Vektortabelle (550) auf der Grundlage einer Unterbrechungsnummer
(12,13,14/b) in der erzeugten Unterbrechungsanforderung zugegriffen wird.
5. Virtuelles Maschinensystem mit virtuellen Maschinen (504,505), die in einer Grundmaschine (501) unter der Steuerung
eines Steuerprogramms (502) laufen, gekennzeichnet durch
(i) einen Speicherbereich (201,202) wenigstens einer der virtuellen Maschinen (504,505) im Hauptspeicher (200)
der Grundmaschine (501), wobei der Speicherbereich (201, 202),der der Verarbeitung unterworfen ist, fortlaufend
zugeordnet wird,
(ii) eine Einrichtung (90,94),die bei einer Ausführung eines
normalen Befehls arbeitet, um eine erste Adresse (93,5,d)
des Speicherbereichs (201,202) der virtuellen Maschine (504,505) zu einer Speicheradresse (930) zu addieren,
die bei der Ausführung des Befehls erzeugt wird, (iii) eine Einrichtung (90) , die beim Auftreten einer Unterbrechung
arbeitet, um die Addition einer ersten Adresse (93,5,d) des Speicherbereiches (201,202) der virtuellen
Maschine (504,505) und einer Speicheradresse (930), die bei der Ausführung des Befehles erzeugt wird, zu sperren,
und
(iv) eine Einrichtung (90) zum Freigeben der Sperre der Addition bevor die Steuerung zur Ausführung eines normalen
Befehls nach Abschluß einer Unterbrechungsverarbeitung zurückkehrt.
6. Virtuelles Maschinensystem nach Anspruch 5, dadurch gekennzeichnet, daß die Grundmaschine (501) einen
Mikroprozessor umfaßt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP60046676A JPS61206043A (ja) | 1985-03-11 | 1985-03-11 | 仮想計算機システムにおける割込制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3607889A1 true DE3607889A1 (de) | 1986-09-11 |
DE3607889C2 DE3607889C2 (de) | 1993-07-29 |
Family
ID=12753974
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19863607889 Granted DE3607889A1 (de) | 1985-03-11 | 1986-03-10 | Verfahren zum steuern von unterbrechungen in einem virtuellen maschinensystem und virtuelles maschinensystem zur durchfuehrung des verfahrens |
Country Status (3)
Country | Link |
---|---|
US (1) | US4812967A (de) |
JP (1) | JPS61206043A (de) |
DE (1) | DE3607889A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1854014A2 (de) * | 2005-03-28 | 2007-11-14 | Microsoft Corporation | Systeme und verfahren für eine erweiterte unterbrechungssteuerung und synthetische unterbrechungsquellen |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63182749A (ja) * | 1987-01-26 | 1988-07-28 | Nec Corp | 計算機システムのタイマ制御装置 |
JPH0193830A (ja) * | 1987-10-05 | 1989-04-12 | Nec Corp | 仮想計算機システムにおける割り込み制御方式 |
US5129064A (en) * | 1988-02-01 | 1992-07-07 | International Business Machines Corporation | System and method for simulating the I/O of a processing system |
JP2629278B2 (ja) * | 1988-06-30 | 1997-07-09 | 株式会社日立製作所 | 仮想計算機システム |
JPH02171934A (ja) * | 1988-12-26 | 1990-07-03 | Hitachi Ltd | 仮想計算機システム |
US5369767A (en) * | 1989-05-17 | 1994-11-29 | International Business Machines Corp. | Servicing interrupt requests in a data processing system without using the services of an operating system |
US5222220A (en) * | 1989-11-16 | 1993-06-22 | Mehta Hemang S | Microprocessor stack built-in guards |
US5115506A (en) * | 1990-01-05 | 1992-05-19 | Motorola, Inc. | Method and apparatus for preventing recursion jeopardy |
US5187791A (en) * | 1990-01-26 | 1993-02-16 | Apple Computer, Inc. | Microprocessor with improved interrupt response with data saving dependent upon processor status using status flag |
US5095526A (en) * | 1990-01-26 | 1992-03-10 | Apple Computer, Inc. | Microprocessor with improved interrupt response with interrupt data saving dependent upon processor status |
US5134580A (en) * | 1990-03-22 | 1992-07-28 | International Business Machines Corporation | Computer with capability to automatically initialize in a first operating system of choice and reinitialize in a second operating system without computer shutdown |
US5287523A (en) * | 1990-10-09 | 1994-02-15 | Motorola, Inc. | Method for servicing a peripheral interrupt request in a microcontroller |
JPH0776951B2 (ja) * | 1990-10-30 | 1995-08-16 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータシステム、複数の入出力アダプタによるアドレス空間共用システム、及び複数の入出力装置とコンピュータプロセッサ間の通信管理方 |
WO1992017839A1 (en) * | 1991-04-01 | 1992-10-15 | Cray Research, Inc. | Privileged instruction trap for operating system control |
JP2870254B2 (ja) * | 1991-10-02 | 1999-03-17 | 日本電気株式会社 | 仮想計算機の入出力割り込み処理方式 |
JP3300407B2 (ja) * | 1992-05-15 | 2002-07-08 | 富士通株式会社 | 仮想計算機システム |
JPH0695898A (ja) * | 1992-09-16 | 1994-04-08 | Hitachi Ltd | 仮想計算機の制御方法および仮想計算機システム |
US5386563A (en) * | 1992-10-13 | 1995-01-31 | Advanced Risc Machines Limited | Register substitution during exception processing |
JPH06187178A (ja) * | 1992-12-18 | 1994-07-08 | Hitachi Ltd | 仮想計算機システムの入出力割込み制御方法 |
US5526503A (en) * | 1993-10-06 | 1996-06-11 | Ast Research, Inc. | Virtual addressing buffer circuit |
US5684948A (en) * | 1995-09-01 | 1997-11-04 | National Semiconductor Corporation | Memory management circuit which provides simulated privilege levels |
US5734910A (en) * | 1995-12-22 | 1998-03-31 | International Business Machines Corporation | Integrating multi-modal synchronous interrupt handlers for computer system |
DE19723676A1 (de) * | 1997-06-05 | 1998-08-27 | Siemens Ag | Verfahren zum Nachladen von Programmen auf eine Chip-Karte |
US6496847B1 (en) * | 1998-05-15 | 2002-12-17 | Vmware, Inc. | System and method for virtualizing computer systems |
US8631066B2 (en) | 1998-09-10 | 2014-01-14 | Vmware, Inc. | Mechanism for providing virtual machines for use by multiple users |
US7516453B1 (en) * | 1998-10-26 | 2009-04-07 | Vmware, Inc. | Binary translator with precise exception synchronization mechanism |
US7124327B2 (en) * | 2002-06-29 | 2006-10-17 | Intel Corporation | Control over faults occurring during the operation of guest software in the virtual-machine architecture |
US6996748B2 (en) * | 2002-06-29 | 2006-02-07 | Intel Corporation | Handling faults associated with operation of guest software in the virtual-machine architecture |
US7181744B2 (en) * | 2002-10-24 | 2007-02-20 | International Business Machines Corporation | System and method for transferring data between virtual machines or other computer entities |
US20040117532A1 (en) * | 2002-12-11 | 2004-06-17 | Bennett Steven M. | Mechanism for controlling external interrupts in a virtual machine system |
JP4012517B2 (ja) * | 2003-04-29 | 2007-11-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 仮想計算機環境におけるロックの管理 |
US7130949B2 (en) * | 2003-05-12 | 2006-10-31 | International Business Machines Corporation | Managing input/output interruptions in non-dedicated interruption hardware environments |
US7177967B2 (en) * | 2003-09-30 | 2007-02-13 | Intel Corporation | Chipset support for managing hardware interrupts in a virtual machine system |
US7237051B2 (en) * | 2003-09-30 | 2007-06-26 | Intel Corporation | Mechanism to control hardware interrupt acknowledgement in a virtual machine system |
US7475002B1 (en) * | 2004-02-18 | 2009-01-06 | Vmware, Inc. | Method and apparatus for emulating multiple virtual timers in a virtual computer system when the virtual timers fall behind the real time of a physical computer system |
US7418584B1 (en) * | 2004-05-11 | 2008-08-26 | Advanced Micro Devices, Inc. | Executing system management mode code as virtual machine guest |
EP1669864B1 (de) * | 2004-12-03 | 2010-06-02 | STMicroelectronics Srl | Ein Verfahren zum Verwalten von virtuellen Maschinen in einer körperlichen Verarbeitungsmaschine, ein entsprechendes Prozessorsystem und Computerprogrammprodukt dafür |
US7814496B2 (en) * | 2005-08-19 | 2010-10-12 | Intel Corporation | Method and system for replicating schedules with regard to a host controller for virtualization |
US7849287B2 (en) | 2006-11-13 | 2010-12-07 | Advanced Micro Devices, Inc. | Efficiently controlling special memory mapped system accesses |
US7873770B2 (en) | 2006-11-13 | 2011-01-18 | Globalfoundries Inc. | Filtering and remapping interrupts |
US7533207B2 (en) * | 2006-12-06 | 2009-05-12 | Microsoft Corporation | Optimized interrupt delivery in a virtualized environment |
JP2010277177A (ja) * | 2009-05-26 | 2010-12-09 | Panasonic Corp | マルチオペレーティングシステム制御方法及びプロセッサシステム |
US9043562B2 (en) | 2011-04-20 | 2015-05-26 | Microsoft Technology Licensing, Llc | Virtual machine trigger |
US8631212B2 (en) | 2011-09-25 | 2014-01-14 | Advanced Micro Devices, Inc. | Input/output memory management unit with protection mode for preventing memory access by I/O devices |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4400769A (en) * | 1979-02-21 | 1983-08-23 | Fujitsu Limited | Virtual machine system |
DE2948285C2 (de) * | 1978-12-01 | 1984-07-12 | Fujitsu Ltd., Kawasaki, Kanagawa | Adressensteuereinrichtung für einen Datenprozessor |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6013501B2 (ja) * | 1978-09-18 | 1985-04-08 | 富士通株式会社 | 仮想計算機システムにおけるチヤネルアドレス制御方式 |
US4253145A (en) * | 1978-12-26 | 1981-02-24 | Honeywell Information Systems Inc. | Hardware virtualizer for supporting recursive virtual computer systems on a host computer system |
US4456954A (en) * | 1981-06-15 | 1984-06-26 | International Business Machines Corporation | Virtual machine system with guest architecture emulation using hardware TLB's for plural level address translations |
US4564903A (en) * | 1983-10-05 | 1986-01-14 | International Business Machines Corporation | Partitioned multiprocessor programming system |
-
1985
- 1985-03-11 JP JP60046676A patent/JPS61206043A/ja active Pending
-
1986
- 1986-03-07 US US06/837,345 patent/US4812967A/en not_active Expired - Fee Related
- 1986-03-10 DE DE19863607889 patent/DE3607889A1/de active Granted
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2948285C2 (de) * | 1978-12-01 | 1984-07-12 | Fujitsu Ltd., Kawasaki, Kanagawa | Adressensteuereinrichtung für einen Datenprozessor |
US4400769A (en) * | 1979-02-21 | 1983-08-23 | Fujitsu Limited | Virtual machine system |
Non-Patent Citations (3)
Title |
---|
GUNTER, Tom: A Microprocessor Architecture for a Changing World: The Motorola 68000. In: IEEE Computer, 1979-2, S. 43-52 * |
STRITTER, Edward * |
STRITTER, Edward, GUNTER, Tom: A Microprocessor Architecture for a Changing World: The Motorola 68000. In: IEEE Computer, 1979-2, S. 43-52 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1854014A2 (de) * | 2005-03-28 | 2007-11-14 | Microsoft Corporation | Systeme und verfahren für eine erweiterte unterbrechungssteuerung und synthetische unterbrechungsquellen |
EP1854014A4 (de) * | 2005-03-28 | 2010-03-31 | Microsoft Corp | Systeme und verfahren für eine erweiterte unterbrechungssteuerung und synthetische unterbrechungsquellen |
Also Published As
Publication number | Publication date |
---|---|
US4812967A (en) | 1989-03-14 |
DE3607889C2 (de) | 1993-07-29 |
JPS61206043A (ja) | 1986-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3607889C2 (de) | ||
DE2948285C2 (de) | Adressensteuereinrichtung für einen Datenprozessor | |
DE2722099C2 (de) | ||
EP0010198B1 (de) | Vorrichtung zur Steuerung des Seitenaustausches in einem Datenverarbeitungssystem mit virtuellem Speicher | |
DE2411963C3 (de) | Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken | |
DE2629459C2 (de) | ||
DE3833933C2 (de) | Informationsverarbeitungseinrichtung mit einer Adressenerweiterungsfunktion | |
DE102007025397B4 (de) | System mit mehreren Prozessoren und Verfahren zu seinem Betrieb | |
DE3942669A1 (de) | Virtuelles maschinensystem | |
DE2251876A1 (de) | Datenverarbeitungsanlage | |
DE2517276A1 (de) | Datenverarbeitungssystem | |
DE2350884A1 (de) | Datenverarbeitungssystem | |
DE4228756A1 (de) | Mikroprozessorsystem | |
DE2912738A1 (de) | System mit direkter uebertragung zwischen subsystemen | |
DE2243956A1 (de) | Speicherprogrammierte datenverarbeitungsanlage | |
DE3131204A1 (de) | Adressumrechnungs- und generatoranordnung | |
DE2714805A1 (de) | Datenverarbeitungssystem | |
DE2030812A1 (de) | Modulare Datenrechnersysteme | |
DE2721623A1 (de) | System zur bearbeitung eines zielsystemprogrammes | |
DE2737353A1 (de) | Verfahren zum testen der adressbildung in einem dv-system und vorrichtung zur durchfuehrung des verfahrens | |
DE3338329C2 (de) | ||
DE1909090C3 (de) | Schutzeinrichtung für den Arbeitsspeicher einer Rechenanlage | |
EP1230590B1 (de) | Prozessorsystem | |
DE2617127A1 (de) | Mehrfachprogramm-datenverarbeitungssystem | |
DE2149200A1 (de) | Anordnung zum Steuern der Informationsuebertragung zwischen einerseits dem Zentralteil und andererseits entweder einem beliebig zugreifbaren Schnellspeicher oder einem beliebig zugreifbaren direkt adressierbaren Grossspeicher einer elektronischen Datenverarbeitungsanlage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8128 | New person/name/address of the agent |
Representative=s name: STREHL, P., DIPL.-ING. DIPL.-WIRTSCH.-ING. SCHUEBE |
|
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |