DE68922769T2 - Verfahren zum Erzeugen eines temporären Anhaltens von Tasken, die in einem virtuellen Datenverarbeitungssystem ablaufen. - Google Patents

Verfahren zum Erzeugen eines temporären Anhaltens von Tasken, die in einem virtuellen Datenverarbeitungssystem ablaufen.

Info

Publication number
DE68922769T2
DE68922769T2 DE68922769T DE68922769T DE68922769T2 DE 68922769 T2 DE68922769 T2 DE 68922769T2 DE 68922769 T DE68922769 T DE 68922769T DE 68922769 T DE68922769 T DE 68922769T DE 68922769 T2 DE68922769 T2 DE 68922769T2
Authority
DE
Germany
Prior art keywords
program
task
virtual machine
resume
tasks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE68922769T
Other languages
English (en)
Other versions
DE68922769D1 (de
Inventor
Alton Anthony Briggs
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE68922769D1 publication Critical patent/DE68922769D1/de
Publication of DE68922769T2 publication Critical patent/DE68922769T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Description

  • Diese Erfindung bezieht sich auf die Steuerung und den Aufbau von Datenverarbeitungssystemen im allgemeinen und insbesondere auf sogenannte Betriebssysteme vom Typ "virtuelle Maschine", wie sie als Systeme 370 und 370/XA von IBM und andere gleichartige Systeme bekannt sind, und bezieht sich speziell auf einen Vorgang zum Erzeugen eines temporären Aussetzens der Verarbeitung einer Task in einem virtuellen Datenverarbeitungssystem.
  • In Betriebssystemen vom Typ virtuelle Maschine, wie etwa dem System 370 von IBM oder ähnlichen, ist es schon lange erwünscht, aber praktisch nicht durchführbar gewesen, den Ablauf eines in einer spezifischen virtuellen Maschine bearbeiteten Jobs temporär auszusetzen, ohne daß die Gefahr besteht, daß es zu Beeinträchtigungen anderer an anderen virtuellen Maschinen im gleichen System laufender Programme kommt. Es gibt zahlreiche Gründe, warum Benutzer eines derartigen Systems eine Aussetzung haben und zu einem späteren Zeitpunkt die Arbeit normal wieder aufnehmen möchten, die als Tasks in einem oder mehreren Teilen durch das Rechnersystem zu erledigen ist. Ein üblicher Grund dafür, daß die Aussetzung einer gegebenen Tasks oder mehrerer Tasks erforderlich sein könnte, besteht darin, daß für die Betriebsmittel des Rechnersystems die Konkurrenzsituation vermindert werden und eine temporären Zuordnung der Betriebsmittel zu anderen Arbeiten möglich sein soll. Beispielsweise machen die Benutzer von Dialogsystemen oft die Erfahrung einer langsameren Antwortzeit, wenn das Rechnersystem mit Langzeit-Tasks belegt ist, wie etwa Stapelverarbeitungs-Tasks, bei denen der Zeitpunkt der tatsächlichen Fertigstellung der Tasks weniger kritisch ist als bei denen, wo der Dialogbenutzer als Mitbewerber auftritt. Bei einem typischen Beispiel kann der Ablauf des "Gehaltslisten- Programms" mehrere Stunden Rechnersystemzeit erfordern, während deren Verlauf andere vorgebliche Dialogbenutzer für ihre Tasks eine Verlangsamung oder eine faktische Unfähigkeit zum Zugriff auf die Rechnerbetriebsmittel erfahren.
  • Das IBM JOURNAL OF RESEARCH AND DEVELOPMENT, Bd. 25, Nr. 5 vom September 1981, New, York, USA, Seiten 483 bis 490, zeigt in dem Artikel von R.J. CREASY: 'The origin of the VM/370 Time-Sharing System' ein Steuerprogramm CP, das aus einem allgemeinen Multiprogrammiersystem besteht, das virtuelle Maschinen zur Organisation unabhängiger Jobströme benutzt. Die gemeinsame Benutzung der Daten durch die Benutzer wird dadurch bewerkstelligt, daß vom CP Verbindungen aufgebaut werden, bei denen das CP ein Knoten zwischen zwei virtuellen Maschinen ist, die miteinander kommunizieren. Es zeigt auch RSCS, ein unterbrechungsgetriebenes Multitaskingsystem, bei dem RSCS in einer virtuellen Maschine arbeitet, die mit ihr verbundene Kommunikationsleitungen und -kanäle hat.
  • Weitere Gründe zum Anhalten von in einer virtuellen Maschine laufenden Tasks umfassen solche, bei denen der Job angehalten wird, bis ein erforderliches Betriebsmittel verfügbar ist, oder bei denen die gerade verarbeitete Tasks ausgesetzt wird, bis irgendeine verfahrenstechnische oder verarbeitungstechnische Ausgabe erfüllt worden ist.
  • Wie oben angemerkt, gab es für Benutzer keine praktisch realisierbare Verfahrensweise für die Durchführung einer Aussetzung und die Wiederaufnahme einer Operation bei in einer virtuellen Maschine laufenden Tasks oder Jobs, die nicht unangemessen riskant war oder die nicht seitens des Bedieners außerordentliche Fertigkeiten erforderte. Die Technologie des Anhaltens und Neustartens der Verarbeitung einer Tasks an angemessenen Punkten und auf sichere Weise, wobei die Tasks oder andere Arbeiten im Rechnersystem nicht gefährdet werden, kann, zumindest in der Theorie, von einem befähigten Systembediener ausgeführt werden. Das ist jedoch eine außerordentlich delikate und riskante Verfahrensweise, mit der die gesamte im System zu erledigende Arbeit leicht gefährdet werden kann. Zusätzlich sind diese Technologien gewöhnlich auf das spezielle Betriebssystem und sein aktuelles funktionelles Release-Stand beschränkt und können nicht im gleichen System mit einem gegebenen Release-Stand durchgeführt werden, das sich von dem unterscheidet, für das die Technologien entwickelt worden sind.
  • Noch andere Verfahrenswege erfordern die Modifikation des Betriebssystems selbst. Dies ist eine unerwünschte Lage, welche die meisten Benutzer aufgrund der zusätzlichen Risiken und Wartungskosten vermeiden möchten, die mit dem Auftreten eines beliebigen Fehlers in dem Betriebssystem verbunden sind, der nicht vom Lieferant der ursprünglichen Betriebsmittel verursacht wurde.
  • Frühere mögliche Technologien zum Veranlassen einer Aussetzung und zur Wiederaufnahme der Verarbeitung in einem Stapel oder in der Verarbeitungsumgebung einer virtuellen Maschine haben einfach ein unannehmbares Risiko und Unbequemlichkeiten und/oder Kosten enthalten und sind zum Gebrauch durch die üblichen Benutzer eines solchen Systems oder durch die Systembediener selbst nicht geeignet.
  • Angesichts dieser Schwierigkeiten mit den bekannten früheren Systemen ist es eine anspruchgsgemäße Aufgabe dieser Erfindung, ein Mittel zur Aussetzung und Wiederaufnahme der Verarbeitung einer Tasks in einem virtuellen Datenverarbeitungssystem zur Verfügung zu stellen, das nur standardisierte verfügbare Programmier- und Steuertechnologien benutzt und das keinerlei andere Programme oder Vorgänge beeinträchtigt, die zu dieser Zeit in dem Datenverarbeitungssystem ablaufen.
  • Die vorstehende und noch weitere, nicht im einzelnen aufgezählte Aufgaben der Erfindung werden in einer bevorzugten Ausführungsform der Erfindung realisiert, die hier nachstehend weiter beschrieben wird. Kurz gesagt, erfordert es der Vorgang der sicheren Bewerkstelligung einer Aussetzung und späteren Wiederaufnahme einer in einer virtuellen Maschine ablaufenden Tasks, daß vor dem Ablauf des Jobs selbst ein kleines spezielles Tasks-Programm in der virtuellen Maschine ausgeführt wird, in der eine gegebene Tasks oder ein gegebener Job ablaufen soll.
  • Das spezielle kleine Programm umfaßt die Technologien für das Durchführen der Aussetzung und der Wiederaufnahme der aktuellen Tasks, die in der virtuellen Maschine ablaufen soll. Wenn das spezielle Programm für die Aussetzung und Wiederaufnahme der Arbeit geladen wird, dann bewegt es sich selbst zuerst in einem anderweitig freien oder reservierten Speicherbereich, so daß sein Betrieb nicht überschrieben wird oder zu Schwierigkeiten führt, wenn das Task-Programm abläuft. Das Programm aktivert die Kommunikation mit der Steuerung der virtuellen Maschine des Benutzers innerhalb des Datenverarbeitungssystems, indem es vorhandene Einrichtungen zur Kommunikation zwischen Programmen benutzt, wie etwa die IUCV- oder VMCF-Einrichtung im System 370 von IBM.
  • Das Aussetzungs- und Wiederaufnahmeprogramm übernimmt dann die Steuerung der externen Unterbrechung des neuen Programmstatuswortes (PSW) für die virtuelle Maschine, die es so betreibt, daß sie anstelle des normalen Conversational Monitor Systems (CMS) die Steuerung über die externen Unterbrechungen für die virtuelle Maschine innehat. Diese Übernahme der Steuerung über die Steuerungen der Programmablaufsunterbrechungen für die virtuelle Maschine für Tasks ist ein kritischer Teil des Vorganges zur Durchführung der Aussetzung und der Wiederaufnahme der Tasks. Das Aussetzungungs- und Wiederaufnahmeprogramm schreibt das PSW der virtuellen Maschine neu, um alle ankommenden externen Unterbrechungen in das Programm selbst zu richten, statt daß das CMS- System sie abhandeln darf. Wenn dann ein Benutzer einen Aussetzungs- oder Wiederaufnahmebefehl an das Systemsteuerprogramm absendet, schickt das Systemsteuerprogramm den Befehl und eine Unterbrechung, die das Vorhandensein des Befehls anzeigt, an die virtuelle Maschine der Tasks, welche die ankommende Unterbrechung direkt an das Aussetzungs- und Wiederaufnahmeprogramm richtet und die Unterbrechung nicht selbst bearbeitet.
  • Das in der Task-Maschine laufende Aussetzungs- und Wiederaufnahmeprogramm wird die durch den vom Benutzer ankommenden Befehl verursachte externe Unterbrechung empfangen. Bei einer Aussetzung wird dieses Programm die externen Unterbrechungssteuerungen der virtuellen Maschine dadurch revidieren, daß deren Programmstatuswort neu geschrieben wird, so daß das PSW nur für externe Unterbrechungen zuständig ist, statt daß es zusätzlich zu den externen Unterbrechungen alle normalen Funktionen der Befehlsausführung, d.h. Abfragen, Decodieren usw. zuläßt. Damit wird die Verarbeitung des Benutzerjobs, die in der virtuellen Maschine der Tasks betrieben wird, effektiv angehalten. Gleichzeitig sichert das Aussetzungs- und Wiederaufnahmeprogramm die Inhalte der Basisadressierregister und alle zugehörigen Allgemeinregisterinhalte, um so eine "Momentaufnahme" des existierenden Zustandes der Vorgänge aufzubewahren, wie sie beim Programmablauf in der Task-Maschine zu dem Zeitpunkt durchgeführt wurden, als die Unterbrechung empfangen wurde.
  • Die Maschine verbleibt im Zustand der Aussetzung, bis eine ankommende externe Unterbrechung auftritt, und da dies die einzige Tasks ist, die behandelt werden darf, wird die ankommende Unterbrechung an das Aussetzungs- und Wiederaufnahmeprogramm gerichtet, wo sie analysiert wird und, falls das, was empfangen wird, ein Wiederaufnahmebefehl ist, wird der Vorgang wieder aufgenommen, indem das Programmstatuswort für die virtuelle Maschine neu geschrieben wird und die Registerinhalte in dem Zustand wieder aufgenommen werden, wie er zum Zeitpunkt des Empfangs der Unterbrechung zur Aussetzung war. Der Übergang der Steuerung über die Handhabung von Programmunterbrechungen von der virtuellen Maschine und ihrem Überwachungsprogramm zu einem in der virtuellen Maschine laufenden Task-Programm ist der Schlüsselschritt in dem beschriebenen Verfahren.
  • Die Erfindung wird nun ausführlicher mit Bezug auf eine ihrer bevorzugten Ausführungsformen beschrieben, die mit Berücksichtigung der Zeichnungen einer bevorzugten Ausführungsform erläutert wird, wobei
  • Figur 1 schematisch die Entwurfshierarchie einer typischen Datenverarbeitungsumgebung des Systems 370 beschreibt und erläutert, daß das Rechnersystem ein Systemsteuerprogramm und eine oder mehrere virtuelle Maschineneinheiten umfaßt.
  • Figur 2 erläutert ein Flußbild der Wirkungsweise des Aussetzungs- und Wiederaufnahmeprogramms und seiner Technologie zur Steuerung einer virtuellen Maschine, um die darin ablaufende Verarbeitung aussetzen und wieder aufnehmen zu können.
  • Eine Beschreibung einer bevorzugten Ausführungsform der Erfindung wird nun mit Bezug auf die Zeichnungen vorgenommen, die vorher schon kurz erwähnt wurden. Für diejenigen, denen die gegenwärtig auf dem Markt verfügbaren virtuellen Datenverarbeitungssysteme, wie etwa System 370 von IBM, nicht so vertraut sind, soll am Anfang ein Überblick über die verschiedenen Fachausdrücke und Abkürzungen stehen. Diese Systeme werden allgemein in den IBM Handbüchern Nr. GA22-7000 "System 370 Principles of Architecture" und Nr. SC19-6224 "VM System Programmer's Guide" und Nr. SC19-6209 "Conversational Monitor System Manual" beschrieben, welche die verschiedenen Aspekte solcher Datenverarbeitungssysteme, ihre Betriebsweise und die Einzelheiten der verschiedenen Einrichtungen diskutieren, die bei der Ausführung der vorliegenden Erfindung benutzt werden. Eine Liste der in diesen Handbüchern gewöhnlich anzutreffenden und in dieser Beschreibung verwendeten Abkürzungen ist wie folgt:
  • CP - Dies ist die Steuerprogrammkomponente des virtuellen Maschinensystems. Es ist die primäre Schnittstelle und Kontrollpunkt für die Benutzer, welche die Dienste des Systems 370 anfordern, und für die Koordinierung des Betriebs der verschiedenen im System laufenden virtuellen Maschinen. Das Steuerprogramm CP verwaltet und steuert auch den Dienst für die innerhalb seines Bereiches laufenden virtuellen Maschinen.
  • CMS - Dies ist das Conversational Monitor Systems und ist die Betriebssystemumgebung des Benutzers für eine virtuelle Maschine. Es führt viele Dienste aus, die durch die Benutzeranwendungen angefordert werden.
  • Externe Unterbrechung - Dies ist eine Art von Programmunterbrechung, die auftritt und die im allgemeinen vom CMS eine Analyse und Reaktion anfordert. Wenn eine Unterbrechung auftritt, dann wird durch das System ein Teil des Steuercodes in die alten Register des Programmstatuswortes der externen Unterbrechung eingebracht, die der virtuellen Maschine zugänglich sind, und die Verarbeitung wird gemäß der Information fortgesetzt, die in einem anderen Teil des Codes gefunden wird, der normalerweise als das neue PSW der externen Unterbrechung bezeichnet wird.
  • Allgemeinregister - dies ist eine Gruppe von Registern, die von dem in der virtuellen Maschine betriebenen Programm zur Aufbewahrung von Zwischenergebnissen, Adressenstandorten im Speicher, wo Daten gespeichert sind, und anderen Rechenergebnissen benutzt wird, wenn diese auftreten.
  • Makroinstruktion oder einfach Makro - Eine Reihe von Instruktionen für ein kleines Programm, das mit einer einzigen Programmanweisung aufgerufen werden kann. Einige zu dem in dieser Beschreibung betrachteten Programm gehörigen Beispiele sind DMSFREE, DMSKEY, LINEDIT, WRTERM, SAVE, RETURN und andere, die alle allgemein bekannt und in den vorerwähnten Systemhandbüchern vollständig dokumentiert sind.
  • PSW - Das Programmstatuswort. Dies ist eine grundlegende Komponente der Rechnersysteme von IBM von der Art, wie sie hier benutzt werden. In solchen Systemen gibt es mehrfache Paare von PSWS, von denen jedes Paar zu speziellen Zuständen des Maschinenbetriebes gehört. Jedes Paar besteht aus einem alten PSW, das den Maschinenstatus zu dem Zeitpunkt anzeigt, zu dem eine Unterbrechung stattfindet, und einem neuen PSW, das denjenigen Status der Maschine bestimmt, der einer Unterbrechung unmittelbar folgt, d.h. das PSW, auf das beim Auftreten einer Unterbrechung geschaltet wird. In VM-Systemen hat jede virtuelle Maschine ihren eigenen Satz von PSWs. Zusätzlich zu dem alten und dem neuen PSW gibt es das aktive PSW, das sich ändert, wenn Instruktionen ausgeführt werden. Wenn eine Unterbrechung erfolgt, dann wird das aktive PSW in dem Speicherbereich des "alten" PSW untergebracht, und dem zugehörigen "neuen" PSW wird von der Hardware die Steuerung übergeben. Wenn die Unterbrechung verarbeitet worden ist, kann das alte PSW wieder benutzt werden, um die Verarbeitung an dem Punkt wieder aufzunehmen, an dem die Unterbrechung erfolgte. Alle PSWs enthalten spezifische Steuerinformationen zur Steuerung der strukturellen Zustände der virtuellen Maschine einschließlich solcher Steuerungen, mit denen bestimmt wird, welche Unterbrechungen zulässig sind.
  • Rx - Dies ist eine übliche Schreibweise für das Allgemeinregister x.
  • SMSG - Dies ist eine spezielle Nachricht, eine Art von VMCF-Kommunikation, die innerhalb des Systems 370 benutzt wird, um eine Kommunikation zwischen virtuellen Maschinen zu ermöglichen.
  • Virtuelle Maschine - Dies ist die grundlegende Einheit der Arbeit, die manchmal als Tasks bezeichnet wird, die vom Steuerprogramm verwaltet wird. Beispielsweise befindet sich die Steuerung über einen Stapelverarbeitungsvorgang oder eine Tasks in einer virtuellen Maschine, und in anderen virtuellen Maschinen innerhalb des Systems laufen Benutzerjobs ab. Das spezielle Task-Programm, mit dem die Aussetzung und Wiederaufnahme von Vorgängen realisiert und das hier beschrieben wird, läuft in einer der virtuellen Maschinen gleichzeitig mit dem Benutzerjob ab.
  • VM - Die Abkürzung VM wird benutzt, um sich auf eine virtuelle Maschine zu beziehen, wobei das VM-Systemsteuerprogramm manchmal als CP bezeichnet wird, oder auf die Softwareumgebung, die als virtuelle Maschinenumgebung bekannt ist.
  • VMCF - Kommunikationsbetriebsmittel der virtuellen Maschine. Dies ist ein Systemsteuerprogramm für die Kommunikation zwischen virtuellen Maschinen und Programmen.
  • Nachdem so einige grundlegende in Frage kommende Begriffe definiert worden sind, die hier benutzt werden und den Benutzern von Strukturen virtueller Maschinen im allgemeinen bekannt sind, wird die Erfindung nun ausführlicher mit Bezug auf die Fig. 1 beschrieben.
  • In Figur 1 wird die schematische Darstellung der Umgebung eines virtuellen Datenverarbeitungssystems gezeigt. Virtuelle Maschinen, wie sie hier bezeichnet werden, bestehen aus virtuellen Rechnern einschließlich des echten Zugriffs auf E/A-Einrichtungen, Speicher, Maschinensteuerung, wie etwa Unterbrechungssteuerungen und Befehlsverarbeitungszyklen, um nur einige der Komponenten aufzuzählen. Virtuelle Maschinen beinhalten über die gemeinsame Nutzung von ein oder mehreren zentralen Betriebsmitteln ein komplettes Berechnungsleistungsspektrum arithmetischer und logischer Einheiten und werden über die Steuerung durch das CP- Steuerprogramm organisiert und betrieben. In Figur 1 wird das Gesamtsystem 1 so dargestellt, daß es ein Systemsteuerprogramm CP 2 und eine Anzahl virtueller Maschinen 3 mit den Bezeichnungen VMA, VMB usw. umfaßt. Jede typische VM-Maschine umfaßt ein Conversational Monitor System CMS, daß nur den speziellen virtuellen Maschinen Dienste zur Verfügung stellt und das normalerweise Unterbrechungen an dieser Maschine bedient, solange es die Ausführung des Anwendungsprogrammes des Benutzers unterstützt, das eine Dialog-Task oder eine Stapelverarbeitungs-Task sein soll.
  • Das Steuerprogramm 2 steuert sowohl alle physischen wie logischen Betriebsmittel, die im Rechnerprozessor und seinen peripheren Einrichtungen benutzt werden, aus denen die virtuelle Maschine besteht. Im VM-Hauptrechnersystem gibt es eine Kopie des Steuerprogramms. Das CP 2 stellt für die virtuellen Maschinen 3 spezielle Dienste zur Verfügung, die Kommunikationseinrichtungen durch die und zwischen den verschiedenen virtuellen Maschinen umfassen. Im System von IBM kann diese Kommunikation auf verschiedenen Wegen erfolgen, die beiden häufigsten aktuellen Wege sind IUCV und VMCF (einschließlich SMSG), das eine spezielle Untergruppe von VMCF ist. In Figur 1 sind die Kommunikationseinrichtungen VMCF mit 4 bezeichnet und laufen innerhalb des Systemsteuerprogramms 2 und des CMS-Teils jeder VM-Maschine 3, um die Kommunikation zwischen den virtuellen Maschinen und anderen virtuellen Maschinen über das Kommunikationsprogramm 2 zu realisieren. Das Conversational Monitor System CMS unterstützt ein Benutzeranwendungsprogramm in einer virtuellen Maschine. In Figur 1 ist der CMS-Teil mit 5 und das Anwendungsprogramm schematisch mit 6 bezeichnet. CMS 5 ist eine Programmeinrichtung, die einzelnen Benutzern entweder im Dialog- oder im Stapelverarbeitungsbetrieb zur Ausführung der Vorgänge zur Erledigung ihrer Programm-Task dient. Jeder VM-Benutzer nimmt eine seinem eigenen Gebrauch zugeordnete Kopie der CMS-Programmierung in Anspruch und hat sie auch tatsächlich im Besitz. Manche sehen das CMS-System als spezialisiertes Betriebssystem an, das so zugeordnet ist, daß es den einzelnen Benutzern Dialogbildschirme und Dialog- und Programmdienste zur Verfügung stellt. Das CMS wirkt als solches in einer gegebenen virtuellen Maschine 3 und übermittelt dem Steuerprogramm 2 Anforderungen nach realen Rechnerbetriebsmitteln, wie etwa Hauptspeicher, Platte, Speicher, Drucker und anderen E/A-Einrichtungen und fordert beispielsweise über die VMCF-Einrichtung die Kommunikation mit anderen virtuellen Maschinen an. Im allgemeinen müssen alle Betriebsmittelanforderungen und Aktionen durch den gemeinsamen Schnittpunkt der programmierten Intelligenz aneinandergereiht und verwaltet und gesteuert werden, wie er durch das Systemsteuerprogramm 2 dargestellt wird. CMS bildet die Schnittstelle dieser Dienste zum Benutzerprogramm und verarbeitet Unterbrechungen, die der Benutzer-Task vorgelegt werden, die über das Steuerprogramm 2 an letzteres gerichtet werden. CMS wird diejenigen Unterbrechungen ablegen, die unnötig sind, und wird in einigen Fällen die Unterbrechungen gemäß den Instruktionen, die früher vom Benutzer oder von der Anwendung herausgegeben wurden, mit den Benutzer oder mit der Anwendung in Zusammenhang bringen. Obgleich ein CMS-Benutzer oder eine -Anwendung die Hierarchie nicht zu kennen braucht und sie im allgemeinen auch nicht kennt, die innerhalb der Maschinenstruktur existiert, sind die einem gegebenen Benutzer oder einer in einer virtuellen Maschine laufenden Anwendungstask verfügbaren Aktionen sowohl der Verarbeitung durch das CMS des Systems 5 und das Steuerprogramm 2 unterworfen und werden durch das Steuerprogramm 2 in ihrem Zugriff auf Betriebsmittel und Benutzung der Systemkapazitäten dahingehend eingeschränkt, nur die Betriebsmittel zu benutzen, die für die virtuelle Maschine 3 des Benutzers als tatsächlich verfügbar bestimmt worden sind.
  • Daher, im Zusammenhang mit der vorliegenden Erfindung, wenn Kommunikationen zwischen der virtuellen Maschine gewünscht wird, die eine Anwendungstask eines Benutzerablaufens läßt und irgendeiner anderen virtuellen Maschine, wie etwa die Quelle der Aussetzungs- und Wiederaufnahmebefehle, ist es die VM des Benutzers, welche das Aussetzungs- und Wiederaufnahmebefehle, ist es die VM des Benutzers, welche das Aussetzungs- und Wiederaufnahmeprogramm ablaufen läßt. Die Kommunikationseinrichtung VMCF muß aufgerufen und den VM-Maschinen gültig zugeordnet werden, die sie benutzen sollen. Dies umfaßt die Koordinierung des Systemsteuerprogramms 2 und aller VM-Programme 3, die kommunizieren sollen. Dies ist schematisch dargestellt, indem im CP Kopien der VMCF/SMSG-Kommunikationseinrichtungen 4 installiert worden sind und von jeder notwendigen VM 3 aufgerufen oder empfangen werden.
  • Nun können wir als ausführliches Beispiel ein Stapelverarbeitungsprogramm betrachten, das derart beschaffen ist, wie es normalerweise beim Abarbeitung der Gehaltsliste einer Firma oder eines Inventurbearbeitungsprogramms eingesetzt wird, oder wie es Programme sind, die für große, rechenintensive Tasks verwendet werden, wie etwa Regressionsanalyse von Gleichungen, Raumfahrtnavigationsprobleme und ähnliches. Solche Stapelverarbeitungsjobs laufen normalerweise in den VM-Systemen ab, in denen sie während der Auszeiten geschrieben wurden, so daß sie nicht den Zugriff von Benutzern stören oder verhindern, die gerne interaktive Freude an den Betriebsmitteln des Datenverarbeitungssystems haben würden. Solche Benutzer haben sich die hier beschriebene Einrichtung zum Aussetzen und zur Wiederaufnahme von Vorgängen gewünscht, damit sie zeitweise mit dem Stapelverarbeitungsvorgang befaßte Betriebsmittel für eine beliebige andere Arbeit belegen können, wie etwa für einen Dialog, ohne daß diese von der Stapelverarbeitung selbst getrennt werden. Dies würde die Wirkung haben, daß alle bis zum Zeitpunkt des Auftretens der Unterbrechung erzielten Zwischenergebnisse der Stapelverarbeitung zerstört würden. Es wäre beispielsweise extrem kostenaufwendig, eine aufwendige und große Datenverarbeitungseinrichtung mit virtuellen Maschinen an einer größeren Rechen-Task arbeiten zu lassen, nur um sie dann zu unterbrechen und alle Ergebnisse der Tasks zu verlieren, die bis dahin erzeugt wurden, und um einen neuen Start und neuen Ablauf des Programms von Beginn an notwendig zu machen. Dies wäre besonders unerwünscht bei den Dialoganwendungen, welche die Benutzer gleichlaufend mit der Abarbeitung der Stapelverarbeitungs-Tasks betreiben möchten, da häufige Unterbrechungen der Stapelverarbeitungstasks mit einem daraus folgenden Verlust der Stapelverarbeitungsergebnisse auftreten könnten. Um diese Vorkommnisse zu vermeiden, lassen solche Benutzer die größeren Stapelverarbeitungs-Tasks normalerweise außerhalb der Arbeitszeit, in der Nacht, in den Ferien und an Wochenenden ablaufen, damit Störungen durch andere Dialogbenutzerprogramme oder bei diesen vermieden werden. Unterbrechung der Stapelverarbeitungs-Tasks ist normalerweise nicht zulässig, ausgenommen temporären durch das Steuerprogramm oder durch die Tasks selbst, beispielsweise um darauf zu warten, daß von der Tasks benötigte Betriebsmittel verfügbar werden. Diese Stapelverarbeitungs-Tasks nehmen gewöhnlich einen Großteil der gesamten Rechnerbetriebsmittel in Anspruch, womit sie diese Betriebsmittel für alle anderen Tasks sperren. Dennoch benötigt im Verlauf des Tages die Dialog-Task des Benutzers den Vorrang bei diesen gleichen Betriebsmitteln. Die Konkurrenzsituation an Betriebsmitteln, die von den Stapelverarbeitungs-Tasks benutzt werden, behindert die Dialogbenutzer, aber in solchen Fällen sollte es die Dialogarbeit sein, der ein eindeutiger Vorrang gegeben wird. Daher bietet die vorliegende Erfindung eine Lösung, indem sie die aktuelle Aussetzung der Stapelverarbeitungs- Tasks zuläßt, ohne daß die Zwischenergebnisse zerstört werden, die sie erreicht hat. Dies wird durch ein einfaches Mittel bewerkstelligt, das sowohl die Aussetzung wie die Wiederaufnahme der Verarbeitung realisiert, indem es die grundlegenden Mechanismen dieser Systeme benutzt, die schon lange verfügbar sind, jedoch bisher für diese Aufgabe nicht genutzt worden sind.
  • Der Vorgang der Durchführung eines Aussetzens und einer späteren Wiederaufnahme der Verarbeitung in einer virtuellen Maschine, die unter der Steuerung eines Steuerprogramms in einem virtuellen Datenverarbeitungssystem arbeitet, wie etwa von der Art der IBM 370, wird nun mit Bezug auf die Figur 2 beschrieben. Figur 2 ist ein Flußdiagramm der aufeinanderfolgenden Schritte in dem Verfahren, die ausgeführt werden müssen, damit eine effektive Aussetzung ohne Zerstörung der zu dem Zeitpunkt in der Abarbeitung befindlichen Stapelverarbeitungs- oder Taskergebnisse erfolgt, wenn der Aussetzbefehl empfangen wird, wobei eine spätere Wiederaufnahme von dem Punkt der Unterbrechung in der Stapelverarbeitung oder in der Tasks erfolgt, die ausgesetzt wurde.
  • Wenn nun Figur 2 betrachtet wird, beginnt die Beschreibung des Vorgangs mit den Schritten, welche die Installation eines speziellen Task-Programms umfassen, das die Aufgaben der Bereitstellung einer Aussetzungs- und Wiederaufnahmefunktion für eine Benutzer-Task abhandelt, die innerhalb einer virtuellen Maschine 3 unter der Steuerung teilweise durch das CMS-Systemprogramm 5 und das Steuerprogramm 2 innerhalb eines virtuellen Datenverarbeitungssystems von der Art des Systems 370 von IBM arbeitet.
  • Beginnend mit Block 100, wird das den Beginn der Benutzer-Task steuernde CMS-Programm der virtuellen Maschine der Benutzer-Task so eingestellt, daß es zuerst das spezielle kleine Task-Programm zur Behandlung der Aussetzung und Wiederaufnahme der Benutzer- Task aufruft. Das spezielle Aussetzungs- und Wiederaufnahmeprogramm wird aufgerufen, ehe die Benutzer-Task beginnt. In Block 101 beginnt das spezielle Task-Programm seine eigene Ausführungsreihenfolge. In Block 102 lagert sich das Unterprogramm zur Aussetzung/Wiederaufnahme selbst aus in einen reservierten Speicherbereich im Speicher. Dies vermeidet im Hauptspeicher, der auch als "Speicher" bekannt ist, mögliche Konflikte mit dem Task-Programm des Benutzers, das später in der gleichen virtuellen Maschine betrieben werden soll. In Block 103 initialisiert das spezielle Task-Programm zur Aussetzung und Wiederaufnahme die Steuerregister der virtuellen Maschine und versetzt sie in die Lage, die VMCF/SMSG-Kommunikationen mit einer mit der Steuerung beauftragten virtuellen Maschine oder einem Benutzer zu unterstützen, welche die möglichen Aussetzungs- oder Wiederaufnahmebefehle erteilen könnten, auf die das System ansprechen sollte.
  • Die nächste Aufgabe, die das Aussetzungs- und Wiederaufnahmeprogramm übernimmt, besteht darin, alle Unterbrechungen an der virtuellen Maschine außer Kraft zu setzen, an der es läuft. In diesem Block 104 muß das Programm die Registermaskenbits der Maschinensteuerung in das PSW der Maschine einfügen, um jegliche Unterbrechungen auszuschließen. Dies ist ein Vorbereitungsschritt und darf nicht mit dem Aussetzen oder der Wiederaufnahme der Benutzer-Task verwechselt werden, die noch gar nicht aufgerufen worden ist.
  • In Block 105 modifiziert das spezielle Aussetzungs-/Wiederaufnahme-Task-Programm die Steuerregister der virtuellen Maschine, damit sie in die Lage versetzt werden, nur externe Unterbrechungen für Kommunikationen vom Typ VMCF/SMSG anzunehmen. Der früher erwähnte Block 103 erstellte für CMS und für die virtuelle Maschine die Zuordnung der notwendigen Adressierung und Steuerung, damit eine Kommunikation zwischen der virtuellen Maschine und dem Steuerprogramm und über das Steuerprogramm mit jeder beliebigen anderen virtuellen Maschine erfolgen kann, welche die vorhandene VMCF-Kommunikationseinrichtung des Systems nutzen. In Block 105 werden die Steuerregister der virtuellen Maschine so eingestellt, daß sie für diese Art Kommunikation nur externe Unterbrechungen akzeptieren und, wie im folgenden Block 106 angemerkt wird, das spezielle Aussetzungs- und Wiederaufnahmeprogramm eine Tasks dafür hat, alle ursprünglichen Einstellungen der Steuerregister externer Unterbrechungen des CMS und PSW-Einstellungen zu sichern, die es normalerweise dem CMS-Teil des Programms ermöglichen, Unterbrechungen abzuarbeiten oder auf sie zu reagieren oder andere Einrichtungen für den Benutzer zu verwalten.
  • In Block 107 besteht die nächste Aufgabe des Aussetzungs- und Wiederaufnahmeprogramms darin, für das CMS der virtuellen Maschine, in der es läuft, ein neues PSW der neuen externen Unterbrechung zu schreiben. Das neue PSW wird benutzt, um jegliche ankommende externe Unterbrechungen zur Analyse und Beantwortung an das Spezialprogramm selbst zu leiten. In Block 107 reaktiviert das Aussetzungs-/Wiederaufnahmeprogramm auch Unterbrechungen an der virtuellen Maschine der Tasks, die vorher in Block 104 inaktiviert worden waren. An diesem Punkt ist die virtuelle Maschine wieder aktiviert worden um Unterbrechungen abzuhandeln, indem sie an das innerhalb der Maschine laufende Aussetzungs- /Wiederaufnahme-Unterprogramm weitergeleitet werden und nicht das CMS sie als erstes analysieren und beantworten darf. Alle anderen Fähigkeiten des CMS-Systems bleiben intakt und werden so wieder aufgenommen, daß seine normale Funktion zum Gebrauch bei der Abarbeitung und Bedienung der Benutzer-Task verfügbar bleiben, die in dieser virtuellen Maschine betrieben werden soll.
  • In Block 108 signalisiert das Unterprogramm zur Aussetzung und Wiederaufnahme dem CMS der virtuellen Maschine der Tasks, in der es läuft, daß die Verarbeitung der Benutzer-Task beginnt. Dies wird bewerkstelligt, indem über CMS der virtuellen Maschine der Tasks die Anlaufparameter für die Benutzer-Task geschickt werden und, wie in Block 109 bemerkt, die Benutzer-Task ihre Ausführung in der virtuellen Maschine beginnt, während das Aussetzungs- /Wiederaufnahmeprogramm im wesentlichen im Freizustand wartet und überwacht, wenn nicht und bis durch CMS eine externe Unterbrechung beauftragt wird, Kraft des neuen PSW der externen Unterbrechung, das für CMS in Block 107 zurückgeschrieben wurde.
  • Die Benutzer-Task kann normalerweise, wie es in Block 110 dargestellt ist, ohne Unterbrechung beendet werden, und zu diesem Zeitpunkt wird das Aussetzungs-/Wiederaufnahmeprogramm die Steuerung über alle weiteren Aktionen dem CMS zurückgeben, indem es CMS benachrichtigt, am Ende der Benutzer-Task eine Abmeldung aus dem Steuerprogramm CP der virtuellen Maschine durchzuführen.
  • Figur 2 fährt in Block 111 mit der Reihenfolge der Ereignisse fort, die in dem Falle auftreten, da bei CMS eine externe Unterbrechung empfangen und an die Aussetzungs-/Wiederaufnahme-Task weitergeleitet wird, die in der virtuellen Maschine läuft.
  • In Block 111 wird angenommen, daß ein ankommender Befehl zur Aussetzung oder Wiederaufnahme als Anforderung von der beauftragten Steuerung oder der virtuellen Maschine oder dem Benutzer erkannt wird, wie es in Figur 1 dargestellt wird. Eine solche Anforderung von der beauftragten Steuerung oder dem Benutzer würde die Form einer Anforderung haben, die VMCF/SMSG an eine gegebene Benutzer-Task zu senden, um deren Aussetzung oder Wiederaufnahme zu veranlassen. In Beantwortung dieser Anforderung wird das Steuerprogramm 2 in Figur 1 an der virtuellen Maschine der Tasks eine externe Unterbrechung erzeugen und wird die SMSG an diese virtuelle Maschine leiten, die sofort sowohl die Nachricht wie das Unterbrechungssignal direkt an das Aussetzungs- /Wiederaufnahme-Task-Programm weiterleiten wird, an das es durch sein neues PSW der externen Unterbrechung gerichtet war, das zur Ausführung dieser Tasks in Block 107 zurückgesetzt wurde.
  • In Block 112 empfängt das Aussetzungs-/Wiederaufnahmeprogramm die durch das CMS an es gerichtete externe Unterbrechung, und es empfängt die Nachricht, die den Aussetzungs- oder Wiederaufnahmebefehl enthalten kann, der durch das Steuerprogramm an es gerichtet worden sein kann.
  • In Block 113 beginnt das Aussetzungs-/Wiederaufnahme-Task-Programm Vorbereitungsarbeiten, indem es die Inhalte des Allgemeinenregisters Rx der virtuellen Maschine der Tasks sichert, das unmittelbar als Basisadreßregister benutzt werden soll, wodurch eine nachfolgende Adressierung von Speicherstellen möglich wird. Es lädt dann Rx mit einem vorvereinbarten Adreßwert. Als nächstes sichert das Programm im Speicher alle verbleibenden Werte des Allgemeinregisters, wie sie beim Auftreten der Unterbrechung existierten.
  • In Block 114 wird die Verarbeitung der Unterbrechung fortgesetzt, indem eine analytisierende Frage gestellt wird, ob die ankommende Unterbrechung zu einem SMSG gehört. Wenn die ankommende Unterbrechung kein SMSG ist, kann sie logischerweise kein Aussetzungs- oder Wiederaufnahmebefehl sein, und das Aussetzungs-/Wiederaufnahme-Task-Programm wird weiterhin nicht aufgerufen, um die Unterbrechung zu behandeln. Stattdessen wird, wie in Block 115 dargestellt, das Aussetzungs-/Wiederaufnahmeprogramm das neue PSW der ursprünglichen externen Unterbrechung des CMS zurückspeichern, das vorher in Block 106 gesichert wurde, indem es zur späteren Benutzung in einen Arbeitsbereich des Speichers geschrieben wird, wenn es das neue PSW des CMS erneut lädt, um CMS zugestatten die ankommenden Unterbrechungen zu bearbeiten.
  • In Block 116 speichert das Aussetzungs-/Wiederaufnahme-Task-Programm die Inhalte des Allgemeinregisters Rx und alle anderen Allgemeinregister neu, die in Block 113 mit ihren Inhalten gesichert worden waren, die zu dem Zeitpunkt existierten, als die Unterbrechung erfolgte, womit der Status der Taskmaschine so wieder aufgenommen wird, wie er bei der Unterbrechung existierte. Als nächstes veranlaßt in Block 117 die Aussetzungs- und Wiederaufnahmeroutine das erneute Laden des neuen PSW der externen Unterbrechung des CMS aus dem Arbeitsbereich, aus dem das PSW in Block 115 geschrieben worden war. Damit wird CMS veranlaßt, mit der Verarbeitung der Unterbrechung zu beginnen, da bestimmt worden ist, daß die Unterbrechung nicht vom Typ SMSG ist. Wie in Block 118 dargestellt, wird die Ausführung der Benutzer-Task fortgesetzt, was in der schematischen Darstellung der Rückkehr zu Block 109 und der Fortsetzung des Vorganges entspricht.
  • Wie schon früher im Hinblick auf Block 114 in der Beschreibung angemerkt, könnte die ankommende Unterbrechung sich in Form der SMSG befinden und könnte daher, wenn sie von einer beauftragt Steuer-VM oder einem Benutzer ist, einen Aussetzungs- oder Wiederaufnahmebefehl enthalten. Folglich wird in Block 119, wenn eine ankommende Unterbrechung den SMSG-Typ hat, vom Aussetzungs- /Wiederaufnahmevorgang eine weitere Frage gestellt, mit der bestimmt wird, ob die SMSG aus einem beauftragten Betriebsmittel stammt. Wenn dies nicht der Fall ist, dann geht das Programm weiter zu Block 130, wo die in Block 113 gesicherten Inhalte der Allgemeinregister alle wieder aufgenommen werden und in der Tat die ankommende Unterbrechung ignoriert wird, wenn sie nicht von einem beauftragten Betriebsmittel stammt, und die Verarbeitung der Tasks weitergeht.
  • Wenn jedoch das Ergebnis der Anfrage in Block 119 eine Bestätigung enthält, dann wird eine Analyse durchgeführt, mit der bestimmt wird, ob die SMSG ein Aussetzungsbefehl oder ein Wiederaufnahmebefehl ist, wie es in den Blöcken 120 und 121 dargestellt ist. Wenn die SMSG einen Aussetzungsbefehl enthält, wird Block 122 aufgerufen, in dem bestimmt wird, ob sich das System schon im Zustand der Aussetzung befindet. Wenn das System schon ausgesetzt worden ist und dies ein redundanter Befehl ist, dann geht das System weiter zu Block 130, der die Register zurückschreibt, ein Schritt, der dann tatsächlich redundant ist, wenn eine aktuelle Aussetzung erfolgt ist, da keine zwischenliegende Verarbeitung erfolgt sein könnte, und geht dann weiter zu Block 131, wo es wie angemerkt im ausgesetzten Zustand verbleibt. Wenn jedoch die Ausführung des Task-Programms noch nicht ausgesetzt worden ist, dann wird Block 123 aufgerufen, der für die Task-VM das existierende alte PSW der externen Unterbrechung sichert und die gesicherten Registerinhalte kopiert, die in Schritt 113 zur späteren erneuten Ladung in einem reservierten Speicherbereich aufbewahrt worden waren. Als nächstes wird in Block 124 der kritische Schritt durchgeführt, bei dem die Modifizierung der Einstellungen für die Programmunterbrechungssteuerungen in den PSW der Task-VM ausgeführt wird, damit nur die Task-VM in die Lage versetzt wird, allein die externen Unterbrechungen zu bearbeiten. Dies wird dadurch zustande gebracht, daß für die Task-VM ein modifiziertes PSW geladen wird, womit die weitere Verarbeitung ausgesetzt wird, da keine anderen Vorgänge oder Verarbeitungen in der Task-VM aktiviert werden, wenn nicht oder bis eine externe Unterbrechung eintritt, der einzige Vorgang, für die sie aktiviert ist.
  • Wenn der Punkt erreicht ist, wo der Aussetzzustand eintritt, wird die in der virtuellen Maschine arbeitende Tasks ausgesetzt, und es erfolgt keine weitere Aktivität, bis von der CP eine ankommende Unterbrechung, die das modifizierte externe alte PSW des CMS benutzt, an das Aussetzungs-/Wiederaufnahme-Task-Programm gerichtet wird, wo sie in Block 114 bis 121 analysiert wird. Nach Block 121 wird, falls die SMSG ein Wiederaufnahmebefehl ist, in Block 125 eine Prüfung durchgeführt, in der bestimmt wird, ob der ausgesetzte Zustand schon wirksam ist, und falls dies der Fall ist, geht Block 126 zu den Aktivitäten über, die zur Wiederaufnahme der Arbeit an der ausgesetzten Tasks erforderlich sind. Diese umfassen das Kopieren des alten PSW der externen Unterbrechung für die virtuelle Maschine der Tasks, das während des Aussetzungsschrittes in Schritt 123 in einem Arbeitsbereich des Speichers zum späteren Zugriff und Benutzen ursprünglich gesichert worden war. Sie umfassen auch die erneute Speicherung der Register der virtuellen Maschine mit deren Inhalt, wie er ursprünglich in Schritt 123 gesichert wurde, und eine erneute Ladung des alten PSW für die virtuelle Maschine der Tasks aus dem Arbeitsbereich des Speichers. Dies veranlaßt die Wiederaufnahme der Arbeit des Task-Programms von dem Punkt aus, an dem die Aussetzung erfolgte. Dies ist logisch gleichwertig mit der Rückkehr zu Block 109 im Flußdiagramm.
  • Wenn die in Block 121 analysierte ankommende SMSG kein Wiederaufnahmebefehl ist, wird in Block 127 eine weitere Frage gestellt, ob sie eine Abmeldung ist. Wenn der Befehl eine Abmeldung ist, dann läuft der Vorgang in den Blöcken 128 und 129 wie dargestellt weiter, indem jegliche offene Dateien geschlossen werden und über eine Abmeldungsanforderung an das Steuerprogramm die VM-Ausführung beendet wird. Dies ist mit dem Abschlußblock 110 gleichwertig, ausgenommen die Tatsache, daß die Benutzer- Task nicht wirklich beendet werden muß, wenn ein bestätigter Abmeldungsbefehl empfangen worden ist.
  • Damit ist die Beschreibung des grundlegenden Vorganges abgeschlossen, der durch ein spezielles kleines Aussetzungs-/Wiederaufnahme-Task-Programm ausgeführt wird, das in einer virtuellen Maschine vor und gleichzeitig mit der Ausführung der Benutzer- Task in dieser Maschine betrieben wird. Es ist zu beachten, daß das Aussetzungs-/Wiederaufnahme-Task-Programm sich selbst und die virtuelle Maschine initialisiert, um sich und nicht das CMS zu veranlassen, die erste Gelegenheit zum Analysieren und Beantworten der ankommenden externen Unterbrechungen zu besitzen. Bei solchen Unterbrechungen, die SMSG-Form haben, wird das Aussetzungs-/Wiederaufnahme-Task-Programm aufgerufen, damit es die "Momentaufnahme" des Betriebsstatus und der -bedingungen der virtuellen Maschine zu dem Unterbrechungszeitpunkt sichert und das PSW für die virtuelle Maschine in einer solchen Form festlegt, daß die weitere Verarbeitung angehalten wird. Dort erwartet das System weitere Instruktionen in Form eines Wiederaufnahmebefehls oder eines bestätigten Abmeldungsbefehls und unternimmt dann als Folge ihres Empfangs die geeigneten Schritte, wie es im Hinblick auf die Diskussion der Figur 2 angemerkt wurde. Es wäre zu beachten, daß die Einrichtungen des VM-Systems, namentlich die Programmunterbrechungssteuerungen, welche die PSWs bilden, in einer eindeutigen Weise manipuliert worden sind, damit ohne Beeinträchtigung anderer Betriebsmittel ein effektives Mittel der Aussetzung und späteren Wiederaufnahme der aktuellen Abarbeitung einer in einer virtuellen Maschine ablaufenden Stapelverarbeitung oder einer ähnlichen Tasks zur Verfügung gestellt wird. Es sind keine neuen Programmiertechnologien enthalten, noch werden irgendwelche spezialisierten Befehle oder Vorgänge aufgerufen. Stattdessen werden die normalen Kommunikations- und Steuerungswege auf neuartige Weise benutzt, um die spezielle wechselseitige Behandlung von an einer virtuellen Maschine einer Tasks ankommenden Unterbrechungen zu realisieren, die einem Task-Programm zugeordnet werden sollen, statt daß sie als erstes im Falle einer ankommenden Unterbrechung einem CMS-System zugeordnet werden, das normalerweise das Task-Programm bedient. Eine Vielzahl von Technologien für die Übernahme der Steuerung bei der Behandlung ankommender Unterbrechungen könnte ins Auge gefaßt werden; daher dient das, was in den anhängenden Ansprüchen beschrieben wird, als eine Darlegung und nicht als Einschränkung, denn es könnte der Fall eintreten, daß Fachleute die Übernahme der Steuerung für die Behandlung von Unterbrechungen in einer Vielzahl von anderen Arten ausführen könnten, als es die speziell erläuterten umfassen.

Claims (5)

1. Verfahren zum Erzeugen einer temporären Aussetzung der Verarbeitung eines Task-Programms in einem virtuellen Datenverarbeitungssystem mit mindestens einem Steuerprogramm, das in einem Rechner arbeitet, der einen Speicher und Hardware- und Software-Programmeinrichtungen hat, die eine Vielzahl von virtuellen Rechenmaschinen bilden, und mindestens eine virtuelle Maschine für Tasks hat, die Programmunterbrechungssteuerungen hat und zur Verarbeitung eines Task-Programms eines Benutzers betrieben wird, und die Kommunikationseinrichtungen zwischen virtuellen Maschinen und dem Steuerprogramm hat;
wobei das Verfahren gekennzeichnet ist durch die Schritte:
Empfangen eines Signals an dem Steuerprogramm, das die Anwesenheit einer Anforderung zur Abgabe einer Nachricht an die virtuelle Maschine für Tasks zum Veranlassen des Aussetzens oder der Wiederaufnahme der Verarbeitung des Task- Programms anzeigt,
Weiterleiten der Nachricht an das Task-Programm,
Auffinden eines Aussetzbefehls durch das Task-Programm und dazu entsprechend
Modifizieren der Programmunterbrechungssteuerungen der virtuellen Maschine für Tasks, damit nur Beantwortungen von auftretenden externen Unterbrechungen stattfinden, wodurch die weitere Verarbeitung des Task-Programms in der virtuellen Maschine für Tasks ausgesetzt wird.
2. Verfahren gemäß Anspruch 1, das weiterhin einen Schritt umfaßt:
Modifizieren der Programmunterbrechungssteuerungen der virtuellen Maschine für Tasks, um ankommende Unterbrechungen zur Analyse und Beantwortung an das Task-Programm zu richten.
3. Verfahren gemäß Anspruch 1 oder 2, das weiterhin einen Schritt umfaßt:
Sichern eines Datensatzes der Einstellungen der Programmunterbrechungssteuerungen der virtuellen Maschinen für Tasks und aller Inhalte der Allgemeinregister der Maschinen, wie sie zum Zeitpunkt existieren, da das Task-Programm die Nachricht empfängt.
4. Verfahren gemäß Anspruch 1, 2 oder 3, weiterhin die Schritte umfassend:
Erkennen eines Wiederaufnahmebefehls in der Nachricht;
und Modifizieren der Programmunterbrechungssteuerungen der virtuellen Maschine für Tasks zur Reaktivierung aller Unterbrechungen, um damit in der virtuellen Maschine für Tasks die Verarbeitung des Task-Programms wiederaufzunehmen.
5. Verfahren gemäß Anspruch 3 oder Anspruch 4, je nach Abhängigkeit vom Anspruch 3, das weiterhin ein Schritt umfaßt:
Erkennen eines Wiederaufnahmebefehls in der Nachricht; und
Zurückschreiben aller Inhalte der Allgemeinregister der virtuellen Maschine für Tasks zu deren Inhalt, wie er zu dem Zeitpunkt existiert, da das Task-Programm die Nachricht mit dem Wiederaufnahmebefehl erhielt.
DE68922769T 1988-03-15 1989-01-31 Verfahren zum Erzeugen eines temporären Anhaltens von Tasken, die in einem virtuellen Datenverarbeitungssystem ablaufen. Expired - Fee Related DE68922769T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/168,300 US4912628A (en) 1988-03-15 1988-03-15 Suspending and resuming processing of tasks running in a virtual machine data processing system

Publications (2)

Publication Number Publication Date
DE68922769D1 DE68922769D1 (de) 1995-06-29
DE68922769T2 true DE68922769T2 (de) 1995-11-30

Family

ID=22610937

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68922769T Expired - Fee Related DE68922769T2 (de) 1988-03-15 1989-01-31 Verfahren zum Erzeugen eines temporären Anhaltens von Tasken, die in einem virtuellen Datenverarbeitungssystem ablaufen.

Country Status (4)

Country Link
US (1) US4912628A (de)
EP (1) EP0333617B1 (de)
JP (1) JPH0664538B2 (de)
DE (1) DE68922769T2 (de)

Families Citing this family (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2650965B2 (ja) * 1988-05-27 1997-09-10 株式会社日立製作所 計算機システムおよびそのタスクスケジュール方法
JPH02208740A (ja) * 1989-02-09 1990-08-20 Fujitsu Ltd 仮想計算機制御方式
JP2728724B2 (ja) * 1989-04-28 1998-03-18 株式会社東芝 コンピュータシステムおよびそのシステム立ち上げ方法
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
US5155809A (en) * 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware
JPH0312742A (ja) * 1989-06-09 1991-01-21 Ricoh Co Ltd 中央演算処理装置
US5212633A (en) * 1989-08-18 1993-05-18 Sharedata System for transferring resident programs to virtual area and recalling for instant excution in memory limited DOS system using program control tables
US5167030A (en) * 1989-08-23 1992-11-24 Helix Software Company, Inc. System for dynamically allocating main memory to facilitate swapping of terminate and stay resident communication program to increase available memory space
US5317733A (en) * 1990-01-26 1994-05-31 Cisgem Technologies, Inc. Office automation system for data base management and forms generation
US5418968A (en) * 1990-10-31 1995-05-23 Gobeli; Gregg P. System and method for controlling interrupt processing
US5630128A (en) * 1991-08-09 1997-05-13 International Business Machines Corporation Controlled scheduling of program threads in a multitasking operating system
US5237684A (en) * 1991-08-12 1993-08-17 International Business Machines Corporation Customized and versatile event monitor within event management services of a computer system
US5355484A (en) * 1991-08-12 1994-10-11 International Business Machines Corporation Dynamically established event monitors in event management services of a computer system
US5625821A (en) * 1991-08-12 1997-04-29 International Business Machines Corporation Asynchronous or synchronous operation of event signaller by event management services in a computer system
US5305454A (en) * 1991-08-12 1994-04-19 International Business Machines Corporation Notification of event handlers in broadcast or propagation mode by event management services in a computer system
JP2870254B2 (ja) * 1991-10-02 1999-03-17 日本電気株式会社 仮想計算機の入出力割り込み処理方式
US5291600A (en) * 1991-10-23 1994-03-01 At&T Bell Laboratories Recovery of in-core disk data
US5592675A (en) * 1992-01-08 1997-01-07 Hitachi, Ltd. Computer controlled method and system capable of preserving information representing plural work states and recovering the work states
JP2677474B2 (ja) * 1992-01-14 1997-11-17 富士通株式会社 仮想計算機の制御情報収集装置および方法
EP0554854A3 (en) * 1992-02-04 1996-02-28 Digital Equipment Corp System and method for executing, tracking and recovering long running computations
JPH0695898A (ja) * 1992-09-16 1994-04-08 Hitachi Ltd 仮想計算機の制御方法および仮想計算機システム
JPH07160646A (ja) * 1992-12-11 1995-06-23 Internatl Business Mach Corp <Ibm> ローカル・ワークステーションにおいて遠隔起動タスクの実行を制御するシステム及び方法
JPH0749790A (ja) * 1993-06-01 1995-02-21 Matsushita Electric Ind Co Ltd プロセッサにおける割り込み制御方法及び割り込み制御回路
US5440703A (en) * 1993-09-20 1995-08-08 International Business Machines Corporation System and method for saving state information in a multi-execution unit processor when interruptable instructions are identified
US5564112A (en) * 1993-10-14 1996-10-08 Xerox Corporation System and method for generating place holders to temporarily suspend execution of a selected command
JP3588485B2 (ja) * 1994-08-26 2004-11-10 富士通株式会社 プロセススケジューリング方式
JPH08286779A (ja) * 1995-04-18 1996-11-01 Fuji Xerox Co Ltd アプリケーション自動再起動装置
US6601081B1 (en) * 1995-06-30 2003-07-29 Sun Microsystems, Inc. Method and apparatus for context maintenance in windows
US6173332B1 (en) * 1996-03-06 2001-01-09 Paul L. Hickman Method and apparatus for computing over a wide area network
JP3676882B2 (ja) 1996-06-12 2005-07-27 株式会社リコー マイクロプロセッサ及びその周辺装置
JPH10269091A (ja) * 1997-03-24 1998-10-09 Canon Inc 情報処理装置及びその方法
US6038638A (en) * 1997-10-17 2000-03-14 International Business Machines Corporation Pausing and resuming applications running in a data processing system using tape location parameters and pipes
US5987495A (en) * 1997-11-07 1999-11-16 International Business Machines Corporation Method and apparatus for fully restoring a program context following an interrupt
US6256637B1 (en) * 1998-05-05 2001-07-03 Gemstone Systems, Inc. Transactional virtual machine architecture
FR2795537B1 (fr) * 1999-06-24 2001-09-21 Cit Alcatel Procede d'execution d'une tache en temps reel par un processeur de traitement numerique du signal
CA2373036A1 (en) * 1999-07-13 2001-01-18 Sun Microsystems, Inc. Methods and apparatus for managing an application according to an application lifecycle
US7257812B1 (en) 1999-12-16 2007-08-14 Sun Microsystems, Inc. Methods and apparatus for managing an application
US6874145B1 (en) 1999-07-13 2005-03-29 Sun Microsystems, Inc. Methods and apparatus for implementing an application lifecycle design for applications
US6701334B1 (en) 1999-07-13 2004-03-02 Sun Microsystems, Inc. Methods and apparatus for implementing individual class loaders
US6377974B1 (en) * 2000-01-19 2002-04-23 Speedbit Ltd. Methods and apparatus for downloading a file from a server
JP2001256066A (ja) * 2000-02-29 2001-09-21 Internatl Business Mach Corp <Ibm> コンピュータシステム、オペレーティングシステムの切り替えシステム、オペレーティングシステムの実装方法、オペレーティングシステムの切り替え方法、記憶媒体及びプログラム伝送装置
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
GB2378535A (en) * 2001-08-06 2003-02-12 Ibm Method and apparatus for suspending a software virtual machine
US6880002B2 (en) * 2001-09-05 2005-04-12 Surgient, Inc. Virtualized logical server cloud providing non-deterministic allocation of logical attributes of logical servers to physical resources
US7016965B2 (en) * 2001-11-13 2006-03-21 International Business Machines Corporation System and method for asynchronously reading data across secure sockets layer sessions
US7073181B2 (en) * 2001-11-13 2006-07-04 International Business Machines Corporation System and method for sharing secure sockets layer sessions across multiple processes
US7574496B2 (en) 2001-11-30 2009-08-11 Surgient, Inc. Virtual server cloud interfacing
US7257584B2 (en) 2002-03-18 2007-08-14 Surgient, Inc. Server file management
US6990666B2 (en) * 2002-03-18 2006-01-24 Surgient Inc. Near on-line server
US7093086B1 (en) * 2002-03-28 2006-08-15 Veritas Operating Corporation Disaster recovery and backup using virtual machines
US7213246B1 (en) 2002-03-28 2007-05-01 Veritas Operating Corporation Failing over a virtual machine
US7603670B1 (en) 2002-03-28 2009-10-13 Symantec Operating Corporation Virtual machine transfer between computer systems
US6757778B1 (en) 2002-05-07 2004-06-29 Veritas Operating Corporation Storage management system
US7076616B2 (en) 2003-03-24 2006-07-11 Sony Corporation Application pre-launch to reduce user interface latency
US7287186B2 (en) 2003-06-02 2007-10-23 Surgient Inc. Shared nothing virtual cluster
JP3952992B2 (ja) * 2003-06-03 2007-08-01 ソニー株式会社 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US7203944B1 (en) * 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
US7643484B2 (en) * 2003-09-26 2010-01-05 Surgient, Inc. Network abstraction and isolation layer rules-based federation and masquerading
US7769004B2 (en) * 2003-09-26 2010-08-03 Surgient, Inc. Network abstraction and isolation layer for masquerading machine identity of a computer
US7246200B1 (en) 2003-11-12 2007-07-17 Veritas Operating Corporation Provisioning and snapshotting using copy on read/write and transient virtual machine technology
US7584462B2 (en) * 2003-11-24 2009-09-01 Laszlo Systems, Inc. System for optimizing application start-up
US7765543B1 (en) * 2003-12-17 2010-07-27 Vmware, Inc. Selective descheduling of idling guests running on a host computer system
US7810092B1 (en) 2004-03-02 2010-10-05 Symantec Operating Corporation Central administration and maintenance of workstations using virtual machines, network filesystems, and replication
US7383405B2 (en) 2004-06-30 2008-06-03 Microsoft Corporation Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity
GB2419702A (en) * 2004-10-29 2006-05-03 Hewlett Packard Development Co Virtual overlay infrastructures which can be suspended and later reactivated
GB2419703A (en) * 2004-10-29 2006-05-03 Hewlett Packard Development Co Isolated virtual overlay infrastructures each having an interface to control interaction with others
GB2419697A (en) * 2004-10-29 2006-05-03 Hewlett Packard Development Co Virtual overlay infrastructures each having an infrastructure controller
US7703082B2 (en) * 2004-12-07 2010-04-20 International Business Machines Corporation Controlling user intervention in a multi-processing computer system
US7308565B2 (en) * 2005-06-15 2007-12-11 Seiko Epson Corporation Saving/restoring task state data from/to device controller host interface upon command from host processor to handle task interruptions
US20070101325A1 (en) * 2005-10-19 2007-05-03 Juraj Bystricky System and method for utilizing a remote memory to perform an interface save/restore procedure
US8078728B1 (en) 2006-03-31 2011-12-13 Quest Software, Inc. Capacity pooling for application reservation and delivery
US20070244935A1 (en) * 2006-04-14 2007-10-18 Cherkasov Aleksey G Method, system, and computer-readable medium to provide version management of documents in a file management system
US8572633B2 (en) * 2006-07-31 2013-10-29 Sap Ag Exception handling for collaborating process models
US7469406B2 (en) * 2006-07-31 2008-12-23 Sap Ag Process suspension through process model design
US7996835B2 (en) * 2006-10-10 2011-08-09 International Business Machines Corporation System, method and program for managing communication with multiple configurations for virtual machine
US8224981B2 (en) * 2006-11-30 2012-07-17 Speedbit Ltd. Accelerated multimedia file download and playback
US8380987B2 (en) * 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
US7984483B2 (en) * 2007-04-25 2011-07-19 Acxess, Inc. System and method for working in a virtualized computing environment through secure access
US20090007100A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Suspending a Running Operating System to Enable Security Scanning
US8194674B1 (en) 2007-12-20 2012-06-05 Quest Software, Inc. System and method for aggregating communications and for translating between overlapping internal network addresses and unique external network addresses
JP5642338B2 (ja) 2008-03-10 2014-12-17 富士通株式会社 ジョブ管理プログラムおよびジョブ管理方法
US8577845B2 (en) * 2008-06-13 2013-11-05 Symantec Operating Corporation Remote, granular restore from full virtual machine backup
US9043454B2 (en) * 2009-08-26 2015-05-26 Red Hat Israel, Ltd. Auto suspense of virtual machine on client disconnection
US8924534B2 (en) * 2009-10-27 2014-12-30 Vmware, Inc. Resource optimization and monitoring in virtualized infrastructure
US9063932B2 (en) * 2009-12-18 2015-06-23 Vertafore, Inc. Apparatus, method and article to manage electronic or digital documents in a networked environment
US8700682B2 (en) * 2009-12-24 2014-04-15 Vertafore, Inc. Systems, methods and articles for template based generation of markup documents to access back office systems
US8566640B2 (en) 2010-07-19 2013-10-22 Veeam Software Ag Systems, methods, and computer program products for instant recovery of image level backups
US20120072685A1 (en) * 2010-09-16 2012-03-22 Hitachi, Ltd. Method and apparatus for backup of virtual machine data
US9384198B2 (en) 2010-12-10 2016-07-05 Vertafore, Inc. Agency management system and content management system integration
US8731973B2 (en) 2011-04-19 2014-05-20 Vertafore, Inc. Overlaying images in automated insurance policy form generation
US8612580B2 (en) * 2011-05-31 2013-12-17 Microsoft Corporation Distributed computing framework
US10019159B2 (en) 2012-03-14 2018-07-10 Open Invention Network Llc Systems, methods and devices for management of virtual memory systems
US9507814B2 (en) 2013-12-10 2016-11-29 Vertafore, Inc. Bit level comparator systems and methods
US9367435B2 (en) 2013-12-12 2016-06-14 Vertafore, Inc. Integration testing method and system for web services
US9747556B2 (en) 2014-08-20 2017-08-29 Vertafore, Inc. Automated customized web portal template generation systems and methods
US10303782B1 (en) 2014-12-29 2019-05-28 Veritas Technologies Llc Method to allow multi-read access for exclusive access of virtual disks by using a virtualized copy of the disk
US10591980B2 (en) 2015-01-02 2020-03-17 Mentor Graphics Corporation Power management with hardware virtualization
US11138029B2 (en) 2015-07-22 2021-10-05 Microsoft Technology Licensing, Llc Mitigation of impact of intermittent storage unavailability on virtual machines
US9600400B1 (en) 2015-10-29 2017-03-21 Vertafore, Inc. Performance testing of web application components using image differentiation
JP7249968B2 (ja) * 2020-03-09 2023-03-31 株式会社東芝 情報処理装置およびストレージ

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55112651A (en) * 1979-02-21 1980-08-30 Fujitsu Ltd Virtual computer system
JPS6123262A (ja) * 1984-07-11 1986-01-31 Fujitsu Ltd ドメイン動的再配置処理方式
JPS61141063A (ja) * 1984-12-14 1986-06-28 Fujitsu Ltd フアイル転送の中断再開方式
US4674038A (en) * 1984-12-28 1987-06-16 International Business Machines Corporation Recovery of guest virtual machines after failure of a host real machine
US4631674A (en) * 1985-02-05 1986-12-23 International Business Machines Corporation Active wait
JPS61193234A (ja) * 1985-02-20 1986-08-27 Fujitsu General Ltd プログラム一時停止装置
US4695945A (en) * 1985-02-28 1987-09-22 International Business Machines Corporation Processor I/O and interrupt filters allowing a co-processor to run software unknown to the main processor
US4642756A (en) * 1985-03-15 1987-02-10 S & H Computer Systems, Inc. Method and apparatus for scheduling the execution of multiple processing tasks in a computer system
JPS6258341A (ja) * 1985-09-03 1987-03-14 Fujitsu Ltd 入出力割込処理方式
JP2542573B2 (ja) * 1985-12-04 1996-10-09 日本電気株式会社 システムフリ−ズリスタ−ト方式

Also Published As

Publication number Publication date
DE68922769D1 (de) 1995-06-29
EP0333617B1 (de) 1995-05-24
JPH0664538B2 (ja) 1994-08-22
EP0333617A2 (de) 1989-09-20
EP0333617A3 (de) 1992-05-13
JPH01241631A (ja) 1989-09-26
US4912628A (en) 1990-03-27

Similar Documents

Publication Publication Date Title
DE68922769T2 (de) Verfahren zum Erzeugen eines temporären Anhaltens von Tasken, die in einem virtuellen Datenverarbeitungssystem ablaufen.
DE3854837T2 (de) Vorrichtung für ein Datenverarbeitungssystem mit gleichmengiger Beziehung zwischen einer Vielzahl von zentralen Datenverarbeitungseinheiten
DE68919975T2 (de) Verfahren für die simultane Ablaufverwaltung eines verteilten Anwenderprogramms in einem Hostrechner und in einer grossen Anzahl von intelligenten Benutzerstationen in einem SNA-Netzwerk.
DE4011745C2 (de)
DE3751446T2 (de) Multiprozessor-Speicherbetriebsverfahren und -vorrichtung.
DE3686873T2 (de) Untersystem fuer virtuelle terminals.
DE69024753T2 (de) Tragbarer, Ressourcen teilender Datei-Server, der gemeinsame Routines benutzt
DE3587218T2 (de) Verfahren zur Ausführung von in einer hohen Programmiersprache geschriebenen Anwenderprogrammen.
DE69522842T2 (de) Gleichzeitige Verarbeitung in parallelen und fast parallelen objektorientierten Systemen
DE3687866T2 (de) System zur verwaltung einer mehrzahl gemeinsamer unterbrechungsbehandlungsroutinen in einer datenstruktur mit verknuepften listen.
DE10085374B4 (de) Systemmanagementspeicher für die Systemmanagement-Interrupt-Behandler wird in die Speichersteuereinrichtung integriert, unabhängig vom BIOS und Betriebssystem
DE68919632T2 (de) Verfahren für die Ausführungsablauffolgeplanung von verteilten Anwendungsprogrammen an voreinstellbaren Zeiten in einer SNA LU 6.2-Netzwerkumgebung.
DE3751645T2 (de) Anteilige Nutzung von Kopie-beim-Schreiben-Segmenten in einer Datenverarbeitungsanlage mit virtuellen Maschinen und virtuellem Speicher
EP0333123B1 (de) Modular strukturiertes ISDN-Kommunikationssystem
DE68919631T2 (de) Verfahren zur Verarbeitung von Programmteilen eines verteilten Anwendungsprogramms durch einen Hauptrechner und einen intelligenten Arbeitsplatz in einer SNA LU 6.2-Netzwerkumgebung.
DE3884504T2 (de) Eingabe-Dienstsubsystem zur dynamischer Arbeitsplanung für ein Computersystem.
DE69224954T2 (de) Verfahren und Vorrichtung zur Echtzeitverwaltung von einem System mit mindestens einem zur Verwaltung mehrerer Funktionen geeignetem Prozessor
DE4104781C2 (de) Speicherzugriffssteuerung
DE69618221T2 (de) Mechanismus zur wartung objektorientierter &#34;methoden&#34; der keine unterbrechung des computersystems erfordert
EP0006164B1 (de) Multiprozessorsystem mit gemeinsam benutzbaren Speichern
DE102009018261A1 (de) Informationsverarbeitungssystem und Verfahren zur Steuerung der Aufgabenausführung
DE19728726A1 (de) Robotercontroller und dessen Steuerverfahren
DE4033336A1 (de) Verfahren zum erzeugen einer ausfallmeldung und mechanismus fuer ausfallmeldung
DE69219848T2 (de) Verfahren zur Behandlung von Datenübertragungen in einen Computersystem mit einem Zweibusbau
DE68928759T2 (de) Rechner mit intelligentem Speichersystem und zugehöriges Verfahren

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee