DE3607889C2 - - Google Patents
Info
- Publication number
- DE3607889C2 DE3607889C2 DE3607889A DE3607889A DE3607889C2 DE 3607889 C2 DE3607889 C2 DE 3607889C2 DE 3607889 A DE3607889 A DE 3607889A DE 3607889 A DE3607889 A DE 3607889A DE 3607889 C2 DE3607889 C2 DE 3607889C2
- Authority
- DE
- Germany
- Prior art keywords
- interrupt
- control program
- virtual machine
- address
- executed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
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
Description
Die Erfindung betrifft ein Verfahren zum Steuern von Unterbrechungen
in einem virtuellen Maschinensystem gemäß dem
Oberbegriff des Anspruchs 1 sowie eine Vorrichtung zur Durchführung
eines solchen Verfahrens gemäß dem Oberbegriff des
Anspruchs 5.
Wie es im Grundkonzept in Fig. 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 Fig. 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, 516
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 Maschine
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 interpretiert
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, führt zu einem Verwaltungszeitbedarf, der
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
der zusätzlichen Verwaltungszeit enthalten. Diese zusätzliche
Zeit, die nur das virtuelle Maschinensystem betrifft,
kann kurz in der folgenden Weise klassifiziert werden:
- 1. Verwaltungszeit aufgrund einer Simulationsverarbeitung eines privilegierten Befehls.
- 2. Verwaltungszeit aufgrund einer Simulationsverarbeitung eines Unterbrechungsprogrammes.
- 3. Verwaltungszeit aufgrund einer Adressenumwandlung zur Unterstützung der virtuellen Speicherfunktion.
- 4. Verwaltungszeit, 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 sogenannten 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, beim Austauschen des Betriebssystems
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ßerodentlich 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 virtuelle
Maschinensystem bei einem Personalcomputer angewandt wird.
Eine typische Mikroprozessorarchitektur, die gegenwärtig benutzt
wird, ist beispielsweise in "A Microprocessor Architecture
for a Changing World: The Motorola 68 000" Computer Bd. 12,
Seite 43 bis 52 (1979-2), IEEE und "iAPX 86 Family User′s
Manual", Intel Corporation: Document No. 205 885, beschrieben.
Ein Verfahren und eine Vorrichtung der eingangs bezeichneten
Art sind aus US 44 00 769 A bekannt. Diese Druckschrift bezieht
sich auf einen Allzweckcomputer und befaßt sich insbesondere
mit derjenigen Verwaltungszeit, die ein im Anspruch 1
als erstes Steuerprogramm bezeichneter Maschinenmonitor zur
Simulation eines privilegierten Befehls, d. h. eines Betriebssystembefehls,
benötigt.
Auch DE 29 48 285 C2 beschreibt die allgemeinen Funktionen,
die ein virtueller Maschinenmonitor in einem System von virtuellen
Maschinen auszuführen hat. Dabei ist auch der Verwaltungszeitaufwand
in Zusammenhang mit der Verarbeitung von Unterbrechungen
angesprochen.
Der Erfindung liegt die Aufgabe zugrunde, ein Steuerverfahren
und eine Steuervorrichtung in einem virtuellen Maschinensystem
für ein Personalcomputersystem mit Mikroprozessoren zu
schaffen, wobei das Eingreifen des virtuellen Maschinenmonitors
bei der Unterbrechungsverarbeitung so weit wie möglich
herabgesetzt wird, um den Verwaltungszeitbedarf des Betriebssystems
zu verringern.
Diese Aufgabe wird durch das in Anspruch 1 gekennzeichnete
Verfahren bzw. die in Anspruch 5 gekennzeichnete Vorrichtung
gelöst.
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.
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 ein Mikroprogramm
in der Hardware der Grundmaschine 501 beginnt 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 Speicherbereich (im folgenden auch kurz als "Stack" bezeichnet) des virtuellen Maschinenmonitors 502 werden der Inhalt eines Programmzählers (Befehlsadressenregister) und verschiedener Betriebsregister sowie der oben im Schritt 1. 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 Fig. 2 ausgeführt.
Wenn der Schritt 4 ausgeführt ist, geht die Steuerung auf den
virtuellen Maschinenmonitor 502 über.
Fig. 2 zeigt in ausgezogenen Linien schematisch den Ablauf des Unterbrechungsprogramms
bei Anwendung der Erfindung. Zum Vergleich ist der Ablauf eines
Unterbrechungsprogramms nach einem anderen denkbaren Steuerverfahren
in gestrichelten Linien dargestellt.
Wie in Fig. 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.
Ohne Anwendung der Erfindung
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 Verwaltungs-Zeitbedarf
des virtuellen Maschinenmonitors bedingt.
Im Gegensatz dazu wird bei Anwendung der Erfindung jeder Eintrag der
Vektortabelle des virtuellen Maschinenmonitors, auf den die
Grundmaschinen-Hardware bei dem Auftreten einer Unterbrechung
Bezug nimmt, vorher mit der Adresse des Unterbrechungsverarbeitungsprogramms
einer virtuellen Maschine geladen, 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
die virtuelle Maschine die Verarbeitung direkt ausführen
muß. Wenn somit eine aufgetretene Unterbrechung direkt
durch die virtuelle Maschine verarbeitet werden kann, wird
der virtuelle Maschinenmonitor nicht aktiviert, d. h. kann das
Unterbrechungs-Verarbeitungsprogramm der virtuellen Maschine
unmittelbar die notwendige Verarbeitung bewirken, was den
Verwaltungs-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 (Speicherbereich) 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ß kein Verwaltungs-Zeitbedarf
auftritt.
Wenn der virtuellen Maschinenmonitor eine Verteilungsverarbeitung
zum Verteilen der Betriebsmittel der Grundmaschine von
Fig. 1 auf die virtuellen Maschinen durchführt, ändert er
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 201 des Betriebssystems 506 in der
virtuellen Maschine und nicht in einem Stack 558 des virtuellen
Maschinenmonitors 502 im Programmschritt (3) des Mikroprogrammverarbeitungsteils
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 506
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 Verwaltungs-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 zeigt
Fig. 1 in einem Plandiagramm ein virtuelles Maschinensystem,
Fig. 2 eine vergleichende Darstellung des Unterbrechungsablaufs
bei einem bekannten und bei dem erfindungsgemäßen System,
Fig. 3 in einem Blockschaltbild ein Beispiel eines
Personalcomputers, bei dem das erfindungsgemäße
Verfahren und die erfindungsgemäße Vorrichtung
angewandt werden können,
Fig. 4 in einem schematischen Blockdiagramm einen Speicher-
und Steuerblock eines Speichers einer virtuellen Maschine
und eines echten Speichers,
Fig. 5 in einem Diagramm den Aufbau des Mikroprozessors
(CPU 51) von Fig. 3,
Fig. 6 in einem Flußdiagramm die Arbeitsabfolge des Mikroprogrammprozessorteils
von Fig. 5 und
Fig. 7 in einem Flußdiagramm den Programmteil des Verteilungsprogramms,
das im virtuellen Maschinenmonitor
gemäß der Erfindung auszuführen ist.
Der in Fig. 3 im Blockschaltbild dargestellte Personalcomputer
umfaßt einen Mikroprozessor 51 , einen Taktgenerator
52, eine Unterbrechungssteuerschaltung 53 und einen Hauptspeicher
RAM 54, der als Echtspeicher (Hauptspeicher) 200 von Fig. 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 Fig. 4. Das
in Fig. 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 Einrichtungen 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 70
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.
Fig. 4 zeigt in einem Blockdiagramm die Beziehung zwischen dem
Verfahren der Zuordnung des Echtspeichers im RAM 54 von Fig. 3
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) und
einem Adressierungsbereich 230 (logische Adressen 0 bis n) jeweils
zugeordnet, wohingegen der Bereich 210 (physikalische
Adressen 0 bis α-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₁ 1
und VMLIST₂ 2 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 VMIDM 3 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 5 eines Echtspeicherbereiches,
der der entsprechenden virtuellen Maschine zugeordnet
ist, eine Bereichsgröße 6, eine
Adresse 7 der Vektortabelle der virtuellen Maschine, eine
Adresse 8 der Unterbrechungsliste 11, die später beschrieben
wird, einen Wert 9 des Stack-Zeigers für die virtuellen 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 und enthält Unterbrechungsnummern 12 bis 14,
für die die virtuelle Maschine direkt das Programm ausführen
kann, ohne daß der virtuelle Maschinenmonitor eingreift, sowie
die Anzahl der Einträge 15 (darin gehaltene Unterbrechungsnummern).
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 Fig. 7 beschrieben.
Fig. 5 zeigt in einem Blockschaltbild schematisch den Mikroprozessor
CPU 51 von Fig. 3. Die in Fig. 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 l11 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 Fig. 4 dargestellt ist, um anzuzeigen, ob der Wert der ersten
Adresse im Echtspeicher, nämlich der Wert 5 in Fig. 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 Fig. 5 umfaßt weiterhin ein Register IVECT 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 Unterbrechungsverarbeitungsteil 97 bestimmt, ob eine Unterbrechungsursache,
die von der Unterbrechungssteuerschaltung 53
von Fig. 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 Fig. 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 Mikroprogrammverarbeitungsteil 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 Fig. 2 dargestellt ist.
Im folgenden wird im einzelnen anhand von Fig. 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 Fig. 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 Fig. 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
l11 ü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 l14 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 l12 ausgegeben,
so daß sie im Register IVECT 91 gehalten wird.
Fig. 6 zeigt ein Flußdiagramm der Arbeitsabfolge, die im Mikroprogrammverarbeitungsteil
501A von Fig. 5 ausgeführt wird. Zunächst
wird in einem Beurteilungsschritt 101 festgestellt, ob
eine Ablaufunterbrechung aufgetreten ist oder nicht. Wenn eine
Ablaufunterbrechung aufgetragen 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 Fig. 3 zugegriffen wird.
Die Verarbeitungsschritte 103 bis 107 zeigen Einzelheiten des
Mikroprogrammablaufes, der im Mikroprogrammverarbeitungsteil
von Fig. 2 auszuführen ist. Das Kennzeichen E für das Auftreten
einer Ablaufunterbrechung 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 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ßdiagramm
von Fig. 7 ausgeführt wird.
In einem Verarbeitungsschritt 31 von Fig. 7 wird auf einen
Steuerblock beispielsweise den Block VMLIST₁ 1 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 "l" wird in einem
Verarbeitungsschritt 35 zuaddiert. In einem Verarbeitungsschritt
36 wird der Zählwert "i" mit der Zahl der Einträge "l" verglichen.
Wenn "i" höchstens gleich "l" 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 "l" 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:
a + b x (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.
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 VMLIST₁ 1 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+d], 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 VMLIST₁ 1 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
Unterbrechungsverarbeitungsprogramms der virtuellen Maschine zusätzlich
zur Unterbrechungsnummer geladen werden und kann die
physikalische Adresse des Stacks der virtuellen Maschine als
Wert 9 des Stack-Zeigers im Steuerblock VMLIST₁ 1 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.
Claims (6)
1. Verfahren zum Steuern von Unterbrechungen in einem virtuellen
Maschinensystem, bei dem mehrere virtuelle Maschinen
(504, 505) dadurch realisiert werden, daß unter Steuerung
eines ersten Steuerprogramms (502) wahlweise eines von mehreren
zweiten Steuerprogrammen (506, 507), die den Ablauf der
von den virtuellen Maschinen auszuführenden Programme steuern,
ausgeführt wird, wobei das erste Steuerprogramm (502) eine
erste Vektortabelle (550) aufweist, die die physikalischen
Adressen zum Starten von in dem ersten Steuerprogramm (502)
oder in dem geraden ausgeführten zweiten Steuerprogramm (506,
507) enthaltenen Unterbrechungs-Verarbeitungsprogrammen (557)
umfaßt, und wobei jedes zweite Steuerprogramm (506, 507) eine
zweite Vektortabelle (555, 559) aufweist, die die logischen
Adressen von in dem betreffenden zweiten Steuerprogramm (506,
507) enthaltenen Unterbrechungs-Verarbeitungsprogrammen umfaßt,
dadurch gekennzeichnet,
- (i) daß aufgrund der logischen Adressen (c), die in der dem gerade ausgeführten zweiten Steuerprogramm (506, 5507) zugeordneten zweiten Vektortabelle (555, 559) enthalten sind, physikalische Adressen (c+d) erzeugt werden, die die Adressen der in diesem zweiten Steuerprogramm enthaltenen Unterbrechungs-Verarbeitungsprogramme (557) angeben,
- (ii) daß die erzeugten physikalischen Adressen (c+d) in Plätze der ersten Vektortabelle (550) eingeschrieben werden, die zur Aufnahme von Adressen zum Starten der Unterbrechungs-Verarbeitungsprogramme in dem besagten zweiten Steuerprogramm (506, 507) bestimmt sind,
- (iii) daß anschließend mit der Ausführung des betreffenden zweiten Steuerprogramms (506, 507) begonnen wird,
- (iv) daß bei Auftreten einer Unterbrechungs-Anforderung entsprechend der Unterbrechungsursache eine der in der ersten Vektortabelle (550) enthaltenen Adressen ausgelesen wird, und
- (v) daß das durch die ausgelesene Adresse bezeichnete Unterbrechungs-Verarbeitungsprogramm (557) unabhängig davon gestartet wird, ob dieses Unterbrechungs-Verarbeitungsprogramm in dem ersten Steuerprogramm (502) oder in dem gerade ausgeführten zweiten Steuerprogramm (506, 507) enthalten ist.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß in
dem ersten Verfahrensschritt (i) zur Bestimmung der physikalischen
Adressen (c+d) die in der zweiten Vektortabelle (555,
559) enthaaltene erste logische Adresse (c) eines bei Auftreten
einer Unterbrechung ausgeführten Programms zu der ersten Adresse
(5, d) eines dem gerade ausgeführten zweiten Steuerprogramm
(506, 507) zugeordneten Bereichs des Hauptspeichers (200) hinzuaddiert
wird.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß in
dem ersten Verfahrensschritt (i) aufgrund einer Startadresse
der zweiten Vektortabelle (555, 559) des gerade durchgeführten
zweiten Steuerprogramms (506, 507) sowie aufgrund einer von
mehreren Unterbrechungs-Kennummern (12, 13, 14, b), die für
von jedem der Unterbrechungs-Verarbeitungsprogramme in dem
zweiten Steuerprogramm (506, 507) auszuführenden Unterbrechungs-Anforderungen
vorgegeben sind, zu jedem vom mehreren
Plätzen in der dem besagten zweiten Steuerprogramm (506, 507)
zugeordneten zweiten Vektortabelle (555, 559) Zugriff genommen
wird, und daß in dem zweiten Verfahrensschritt (ii) aufgrund
der besagten einen Unterbrechungs-Kennummer (12, 13, 14, b) zu
jedem Platz in der ersten Vektortabelle (550) Zugriff genommen
wird.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß in
dem vierten Verfahrensschritt (iv) aufgrund einer in der bestehenden
Unterbrechungs-Anforderung enthaltenen Unterbrechungs-Kennummer
(12, 13, 14, b) zu einem Platz in der ersten
Vektortabelle (550) Zugriff genommen wird.
5. Vorrichtung zur Durchführung des Verfahrens nach Anspruch
1, gekennzeichnet durch
- (a) einen in dem Hauptspeicher (220) einer Grundmaschine (501) vorhandenen, fortlaufend einer der virtuellen Maschinen (504, 505) zugeordneten Speicherbereich (201, 202),
- (b) eine Einrichtung (94), die bei Ausführung eines normalen Befehls die erste Adresse (93, 5, d) des Speicherbereichs der virtuellen Maschine (504, 505) zu der bei der Ausführung des Befehls erzeugten Speicheradresse (930) der Grundmaschine (501) hinzuaddiert, und
- (c) eine Einrichtung (97, 91, 501A), die bei Auftreten einer Unterbrechung den besagten Additionsvorgang sperrt und nach Abschluß der Unterbrechung die Sperre aufhebt, bevor die Steuerung zur Ausführung des normalen Befehls zurückkehrt.
6. Vorrichtung nach Anspruch 5, dadurch gekennzeichnet, daß
die Grundmaschine (501) einen Mikroprozessor (51) 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 DE3607889A1 (de) | 1986-09-11 |
DE3607889C2 true 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 |
---|---|---|---|---|
DE19723676A1 (de) * | 1997-06-05 | 1998-08-27 | Siemens Ag | Verfahren zum Nachladen von Programmen auf eine Chip-Karte |
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 |
US5095526A (en) * | 1990-01-26 | 1992-03-10 | Apple Computer, Inc. | Microprocessor with improved interrupt response with interrupt data saving dependent upon processor status |
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 |
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 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータシステム、複数の入出力アダプタによるアドレス空間共用システム、及び複数の入出力装置とコンピュータプロセッサ間の通信管理方 |
EP0578646B1 (de) * | 1991-04-01 | 1995-06-28 | Cray Research, Inc. | Auffangen eines priviligierten befehlswortes zur kontrolle eines betriebssystems |
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 |
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 |
US6996748B2 (en) * | 2002-06-29 | 2006-02-07 | Intel Corporation | Handling faults associated with operation of guest software in the virtual-machine architecture |
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 |
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 |
US8127098B1 (en) * | 2004-05-11 | 2012-02-28 | Globalfoundries Inc. | Virtualization of real mode execution |
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 |
US7689747B2 (en) * | 2005-03-28 | 2010-03-30 | Microsoft Corporation | Systems and methods for an augmented interrupt controller and synthetic interrupt sources |
US7814496B2 (en) * | 2005-08-19 | 2010-10-12 | Intel Corporation | Method and system for replicating schedules with regard to a host controller for virtualization |
US7873770B2 (en) | 2006-11-13 | 2011-01-18 | Globalfoundries Inc. | Filtering and remapping interrupts |
US7849287B2 (en) | 2006-11-13 | 2010-12-07 | Advanced Micro Devices, Inc. | Efficiently controlling special memory mapped system accesses |
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 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6013501B2 (ja) * | 1978-09-18 | 1985-04-08 | 富士通株式会社 | 仮想計算機システムにおけるチヤネルアドレス制御方式 |
JPS5576447A (en) * | 1978-12-01 | 1980-06-09 | Fujitsu Ltd | Address control system for software simulation |
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 |
JPS55112651A (en) * | 1979-02-21 | 1980-08-30 | Fujitsu Ltd | Virtual 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
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19723676A1 (de) * | 1997-06-05 | 1998-08-27 | Siemens Ag | Verfahren zum Nachladen von Programmen auf eine Chip-Karte |
Also Published As
Publication number | Publication date |
---|---|
DE3607889A1 (de) | 1986-09-11 |
JPS61206043A (ja) | 1986-09-12 |
US4812967A (en) | 1989-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3607889C2 (de) | ||
DE2948285C2 (de) | Adressensteuereinrichtung für einen Datenprozessor | |
DE2251876C3 (de) | Elektronische Datenverarbeitungsanlage | |
DE2722099C2 (de) | ||
DE3833933C2 (de) | Informationsverarbeitungseinrichtung mit einer Adressenerweiterungsfunktion | |
DE102007025397B4 (de) | System mit mehreren Prozessoren und Verfahren zu seinem Betrieb | |
DE2517276A1 (de) | Datenverarbeitungssystem | |
DE2912738A1 (de) | System mit direkter uebertragung zwischen subsystemen | |
DE2243956A1 (de) | Speicherprogrammierte datenverarbeitungsanlage | |
DE3942669A1 (de) | Virtuelles maschinensystem | |
DE2350884A1 (de) | Datenverarbeitungssystem | |
DE4011745A1 (de) | Taskverfolgungseinrichtung | |
DE2936932A1 (de) | Kanaladressen-steuersystem in einem virtuellen maschinensystem | |
DE2030812A1 (de) | Modulare Datenrechnersysteme | |
DE2721623C2 (de) | ||
EP0010185A1 (de) | Virtuell-Adressiervorrichtung für einen Computer | |
EP0799441B1 (de) | Verfahren zur steuerung von technischen vorgängen | |
DE19955776C1 (de) | Multitasking-Prozessorsystem | |
DE2617127A1 (de) | Mehrfachprogramm-datenverarbeitungssystem | |
DE3338329A1 (de) | Computersystem | |
DE2658950A1 (de) | Mikroprogrammierte verarbeitungseinheit sowie verfahren zur organisation derselben | |
EP0010135B1 (de) | Mikroprogrammgesteuerte Ein-/Ausgabeeinrichtung und Verfahren zum Durchführen von Ein-/Ausgabeoperationen | |
DE2847737C2 (de) | Schaltung zur Umsetzung virtueller Adressen in eine reelle Adresse von größerer Länge | |
DE2900460A1 (de) | Warteschlangenstruktur | |
DE102007015507B4 (de) | Prozessor mit einem ersten und einem zweiten Betriebsmodus und Verfahren zu seinem Betrieb |
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 |