DE69710034T2 - Verfahren und Vorrichtung zum Schützen von Speicherteilen - Google Patents
Verfahren und Vorrichtung zum Schützen von SpeicherteilenInfo
- Publication number
- DE69710034T2 DE69710034T2 DE69710034T DE69710034T DE69710034T2 DE 69710034 T2 DE69710034 T2 DE 69710034T2 DE 69710034 T DE69710034 T DE 69710034T DE 69710034 T DE69710034 T DE 69710034T DE 69710034 T2 DE69710034 T2 DE 69710034T2
- Authority
- DE
- Germany
- Prior art keywords
- memory
- hidden
- processor
- operating system
- server
- 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
- 238000000034 method Methods 0.000 title claims description 50
- 238000012545 processing Methods 0.000 claims description 32
- 238000004891 communication Methods 0.000 claims description 23
- 230000004044 response Effects 0.000 claims description 9
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 description 36
- 238000013519 translation Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 239000000872 buffer Substances 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000002950 deficient Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Hardware Redundancy (AREA)
- Storage Device Security (AREA)
Description
- Die vorliegende Erfindung betrifft Datenverarbeitungssysteme im Allgemeinen und insbesondere den Schutz der Daten, die in Teilen des Speichers gespeichert werden, der sich in den Datenverarbeitungssystemen befindet. Insbesondere werden Mechanismen offen gelegt, die Daten zwischen einem Datenverarbeitungssystem und einem Teil des Speichers übertragen, auf den das Betriebssystem keine Direktzugriffrechte hat.
- Wenn ein Prozess auf einem Datenverarbeitungssystem läuft, verwendet der Prozess bestimmte Teile des Speichers, um Daten zu speichern und abzurufen. Andere Prozesse können gegebenenfalls auch auf diese bestimmten Teile des Speichers zugreifen.
- Wenn ein erster Prozess, der auf einem Datenverarbeitungssystem läuft, angehalten und später wieder aufgenommen wird, kann ein zweiter Prozess, der auf dem Datenverarbeitungssystem läuft, während der erste Prozess angehalten wird, Zugriff auf den Teil des Speichers haben, der zuvor von dem ersten Prozess verwendet wurde. Wenn der zweite Prozess, während der erste Prozess angehalten wird, Datenwerte überschreibt, die von dem ersten Prozess in dem Speicher abgelegt wurden, stehen die Datenwerte, die der erste Prozess im Speicher abgelegt hat, bevor er angehalten wurde, bei der Wiederaufnahme des ersten Prozesses möglicherweise nicht mehr zur Verfügung. Dies kann Fehler erzeugen.
- Wenn mehrere Prozesse gleichzeitig in einem Datenverarbeitungssystem laufen, kann ein Prozess außerdem Daten in einem Teil des Speichers speichern, der von einem anderen Prozess verwendet wird. Bevor ein Prozess die Daten abruft, die er gespeichert hat, können diese Daten somit beschädigt sein.
- Es ist auch typisch, dass ein Datenverarbeitungssystem gegebenenfalls neu gestartet werden muss. Ein solches Datenverarbeitungssystem kann eine in Ausführung befindliche Software-Anwendung haben, die Datenpufferspeicher bereitstellt, deren Inhalt als Teil eines System-Neustarts nicht gelöscht wird. Diese Situation kann man beispielsweise in einem Software-Paket vorfinden, das die Bezeichnung Transaction Processing Facility (TPF) trägt und von der IBM Corporation, Armonk, New York hergestellt wird. Bei TPF wird der Inhalt bestimmter Datenpufferspeicher bei einem Neustart des Systems nicht gelöscht. Nachdem der Neustart abgeschlossen ist und TPF an dem Punkt weiterläuft, an dem es sich vor dem Neustart des Systems befand, ist es wünschenswert, dass der Inhalt der nicht gelöschten Datenpufferspeicher unverändert bleibt. Auf diese Datenpufferspeicher hat jedoch jede beliebige Anwendung Zugriff, die auf dem System läuft. Der Inhalt dieser Datenpufferspeicher könnte daher durch Fehler entweder im Betriebssystem oder den Anwendungen, die auf dem Betriebssystem laufen, beschädigt werden.
- "Solution for intercommunication between protected mode and real mode programs", IBM Technical Disclosure Bulletin, Band 36, Nr. 09A, September 1993, Seiten 549 bis 550, beschreibt ein Schema für ein Datenverarbeitungssystem, das einen Speicher, einen Prozessor und ein Betriebssystem enthält. Das Schema umfasst einen sichtbaren Teil des Speichers, der vom Prozessor und dem Betriebssystem adressiert werden kann, einen verborgenen Teil des Speichers, dessen Adressierbarkeit durch das Betriebssystem ausgeschlossen ist, einen Kommunikationsbereich, der sich im sichtbaren Teil des Speichers befindet und zur Kommunikation zwischen dem Betriebssystem und einem Programm für Windows, das im geschützten Modus ausgeführt wird, dient, wobei das Programm für Windows, das im geschützten Modus ausgeführt wird, sowohl den sichtbaren Teil des Speichers als auch den verborgenen Teil des Speichers adressiert.
- "Address protection in user level process", Research Disclosure, Nr. 348, April 1993, Seite 220, legt ein vertrauenswürdiges Programm/einen vertrauenswürdigen Prozess offen, der kritische Daten uneingeschränkt adressieren kann und als Server für nicht vertrauenswürdige Client-Prozesse dient. Ein Client-Prozess erlangt indirekt Zugriff auf die kritischen Daten, indem er Anforderungen an den Server-Prozess sendet und von diesem Antworten empfängt.
- Gemäß der vorliegenden Erfindung wird ein Datenverarbeitungssystem nach Anspruch 1 und ein Verfahren nach Anspruch 7 zum Schutz von Daten bereitgestellt, die in einem Speicher gespeichert werden, der sich in einem Datenverarbeitungssystem befindet.
- Folglich stellt die Erfindung ein Datenverarbeitungssystem bereit, das einen Speicher, mindestens einen Prozessor, Anwendungsprogramme und ein Betriebssystem enthält und Folgendes umfasst: einen sichtbaren Teil des Speichers, der von den Anwendungsprogrammen und dem Betriebssystem adressiert werden kann; einen verborgenen Teil des Speichers, a) dessen Adressierbarkeit durch die Anwendungsprogramme und das Betriebssystem ausgeschlossen ist, und b) der zur Speicherung von Daten dient, die von mindestens einem der Anwendungsprogramme und dem Betriebssystem übertragen werden; einen Kommunikationsbereich, der sich in dem sichtbaren Teil des Speichers befindet, um Anforderungen für den Zugriff auf Daten von mindestens einem der a) Anwendungsprogramme und b) dem Betriebssystem zu empfangen; und einen verborgenen Server, der sich in dem verborgenen Teil des Speichers befindet und a) sowohl den sichtbaren Teil des Speichers als auch den verborgenen Teil des Speichers adressiert, b) die Anforderungen für den Zugriff auf Daten von dem Kommunikationsbereich empfängt, c) den Datenzugriff von dem verborgenen Teil einleitet und d) Antworten auf die Anforderungen in den Kommunikationsbereich stellt.
- Die Erfindung stellt auch ein Verfahren zum Schutz von Daten bereit, die in einem Speicher gespeichert werden, der sich in einem Datenverarbeitungssystem befindet, wobei das Datenverarbeitungssystem mindestens einen Prozessor, Anwendungsprogramme und ein Betriebssystem enthält, wobei das Verfahren die folgenden Schritte umfasst: Zuordnen eines sichtbaren Teils des Speichers, der von den Anwendungsprogrammen und dem Betriebssystem adressiert werden kann; Zuordnen eines verborgenen Teils des Speichers, a) dessen Adressierbarkeit durch die Anwendungsprogramme und das Betriebssystem ausgeschlossen ist, und b) der zur Speicherung von Daten dient, die von mindestens einem der Anwendungsprogramme und dem Betriebssystem übertragen werden; Empfangen von Anforderungen von mindestens einem a) der Anwendungsprogramme und b) dem Betriebssystem in einem Kommunikationsbereich, der sich in dem sichtbaren Speicher befindet; und Empfangen einer jeden der Anforderungen durch einen verborgenen Server, der sich in dem verborgenen Teil des Speichers befindet und sowohl den sichtbaren Teil des Speichers als auch den verborgenen Teil des Speichers adressiert; Einleiten einer jeden der Anforderungen von dem verborgenen Speicher und Platzieren der Antworten auf die Anforderungen in dem Kommunikationsbereich.
- Fig. 1 ist ein Blockdiagramm, das die Konfiguration des Speichers und seine Beziehung zu einer Vielzahl von Prozessoren und einer Vielzahl von Eingabe-/Ausgabe-(E/A- )Einheiten gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung zeigt.
- Fig. 2 ist ein Blockdiagramm, das die Konfiguration des in Fig. 1 gezeigten sichtbaren Speichers und den Kommunikationspfad zwischen dem sichtbaren Speicher und dem ebenfalls in Fig. 1 gezeigten verborgenen Speicher zeigt.
- Fig. 3 ist ein Blockdiagramm, das die interne Konfiguration des in Fig. 1 gezeigten verborgenen Speichers zeigt.
- Fig. 4 ist ein Flussdiagramm, das bestimmte Verarbeitungsschritte zeigt, damit das Betriebssystem gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung die Steuerung eines Prozessors an den verborgenen Server übergeben kann.
- Fig. 5 ist ein Flussdiagramm, das die Schritte zeigt, die von dem verborgenen Server von Fig. 3 gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung durchgeführt werden.
- Fig. 6 ist ein Blockdiagramm, das die Konfiguration der Warteschlange zeigt, die verwendet wird, um Anforderungen gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung dem verborgenen Server zu übergeben.
- Fig. 1 zeigt ein Datenverarbeitungssystem gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung. Wie gezeigt ist, enthält die Hardware des Datenverarbeitungssystems einen oder mehrere Prozessoren 15a bis 15n, die über einen Bus oder einen anderen Verbindungsmechanismus 10 mit dem Speicher 20 verbunden sind.
- Ein beliebiges Datenverarbeitungssystem kann verwendet werden, gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung wird jedoch ein Durable Memory RS/6000 (DM/6000) verwendet, wie es von M. Abbott, D. Har, L. Herger, M. Kauffman, K. Mak, J. Murdock, C. Schulz, T.B. Smith, B. Tremaine, D. Yeh, L. Wong in "Durable Memory RS/6000 System Design", Digest of the 24th International Symposium on Fault Tolerant Computing, Seiten 414 bis 423, Juni 1994, beschrieben ist. Bei diesem System ist die Hardware redundant ausgelegt, so dass der Ausfall einer beliebigen Hardware-Komponente oder elektrischer Stromversorgungen den Rechner nicht zum Erliegen bringt.
- Ein Teil des Speichers 20 ist der sichtbare Speicher 30. Programme, die auf jedem Prozessor 15a bis 15n laufen, haben das Recht, auf den sichtbaren Speicher 30 zuzugreifen.
- Wie in Fig. 2 gezeigt ist, enthält der sichtbare Speicher 30 ein Universalbetriebssystem 40 wie zum Beispiel AIX (das von der IBM Corporation, Armonk, New York, hergestellt wird) sowie die Anwendungsprogramme 5a bis 5n. Ein weiterer Teil des Speichers 20 ist der verborgene Speicher 60. Es gibt mehrere Verfahren, dem Betriebssystem 40 und den Anwendungsprogrammen 5a bis 5n den Zugriff auf diesen verborgenen Speicher zu verwehren. Ein bevorzugtes Verfahren macht sich die Fähigkeit zunutze, AIX zu informieren, dass bestimmte Teile des Speichers 20 defekt sind. Wenn AIX hochgefahren wird, geht es davon aus, einen IPL-Steuerblock anzutreffen, der eine Beschreibung der Speicherbereiche enthält, die defekt sind. AIX greift nie auf den Inhalt eines als defekt gekennzeichneten Speichers zu oder ändert diesen in irgendeiner Weise, und es nimmt keine Eintragung eines solchen Speichers in seinen virtuellen Adresstabellen vor. Als solcher wird dieser Speicher wirksam verborgen, sobald AIX die virtuelle Adressumsetzung für denjenigen Prozessor einschaltet, den es von den Prozessoren 15a bis 15n verwendet. Auf diese Weise besteht für den Speicher 60 nie die Gefahr, dass sein Inhalt geändert wird, nicht einmal während des kurzen Zeitraums der Initialisierung, während dessen auf ihn zugegriffen werden kann. Andere Betriebssysteme machen die Kennzeichnung von freiem Speicher möglich, wenn sie hochgefahren werden. Wenn während des Hochfahrens angezeigt wird, dass die verfügbare Speicherkapazität geringer als die tatsächliche Gesamtspeicherkapazität ist, sind die Teile des Speichers, die außerhalb der als verfügbar gekennzeichneten Speicherbereiche liegen, für das Betriebssystem unsichtbar.
- Ein verborgener Server 70 steuert den Zugriff auf den verborgenen Speicher 60. Der verborgene Server 70 ist ein Programm, das in den verborgenen Speicher 60 geladen wird. Die Adressumsetzung im verborgenen Server 70 kann ausgeschaltet werden. Der verborgene Server 70 und sowohl das Betriebssystem 40 als auch die Anwendungsprogramme 5a bis 5n verwenden einen im sichtbaren Speicher 30 liegenden Kommunikationsbereich 80 gemeinsam. Dies ist der Mechanismus, über den der verborgene Server 70 sowie das Betriebssystem 40 und die Anwendungsprogramme 5a bis 5n kommunizieren. Indem alle Kommunikationsmechanismen in den sichtbaren Speicher 30 gestellt werden, wird die Möglichkeit ausgeschlossen, dass dem verborgenen Speicher durch das Betriebssystem 40 und die Anwendungsprogramm 5a bis 5n Schaden zugefügt wird.
- In der bevorzugten Ausführungsform enthält der Kommunikationsbereich 80 eine Warteschlange 90 und die Anforderungsblöcke 100a bis 100n. Die Warteschlange 90 belegt vorzugsweise eine einzige Seite des Speichers, und alle Zeiger, die zur Bildung der Kettenelemente der Warteschlange verwendet werden, sind vorzugsweise keine Adressen, sondern vielmehr Offsets innerhalb dieser Seite. Somit kann die Warteschlange 90 von Programmen, die unter dem Betriebssystem 40 laufen, das bei eingeschalteter virtueller Adressumsetzung arbeitet, und von dem verborgenen Server 70 manipuliert werden, der bei ausgeschalteter virtueller Adressumsetzung arbeiten kann. Die Einträge in der Warteschlange 90 haben Ketten-Offsets, um die Einträge in der Warteschlange und die realen Adressen der Anforderungsblöcke 100a bis 100n zu verknüpfen. Durch Verwendung der realen Adresse für den Anfangszeiger der Warteschlange kann der verborgene Server 70 den Anfangszeiger benutzen, ohne beispielsweise die Mechanismen von AIX für die virtuelle Adressumsetzung in Anspruch zu nehmen.
- Wie in Fig. 3 gezeigt ist, ist ein Teil des verborgenen Speichers 60 der stabile Speicher 110. Dieser enthält einen Deskriptor 120 des stabilen Speichers, den der verborgene Server 70 lokalisieren kann, indem er eine vorher festgelegte Adresse verwendet, und mit dem der verborgene Server 70 feststellt, welche Teile des stabilen Speichers 110 gerade verwendet werden. Ein kleiner Teil des stabilen Speichers 110 wird von dem verborgenen Server 70 für seine eigene Datensatzverwaltung verwendet, aber der größte Teil des stabilen Speichers 110 wird von speziellen Diensten 130a bis 130n genutzt, bei denen es sich um Programme handelt, auf die der verborgene Server 70 zugreifen kann. Die bevorzugte Ausführungsform enthält beispielsweise einen VDISK-Dienst 130a und einen PCACHE-Dienst 130b sowie andere Dienste.
- Der VDISK-Dienst 130a verarbeitet Befehle zur Nutzung von Speicherbereich im stabilen Speicher 110, um Daten so zu speichern, als befänden sie sich auf einer oder mehreren Platten. Jeder Speicherbereich, der auf diese Weise verwendet wird, wird als VDISK bezeichnet, Der VDISK-Dienst 130a ist vorzugsweise zumindest in der Lage, die Abwicklung von Anforderungen für die Zuordnung von Speicherbereich im stabilen Speicher 110, der zur Speicherung von Daten genutzt werden soll, und von Anforderungen, Daten aus dem sichtbaren Speicher 30 in den stabilen Speicher 110 zu kopieren, anzubieten. Der PCACHE-Dienst 130b legt Daten, die zu einem späteren Zeitpunkt auf Platte geschrieben werden sollen, im Cachespeicher ab. Die Plattenadresse der Daten wird vom PCACHE-Dienst 130b zusammen mit den Daten selbst gespeichert, um nach einem Ausfall des Betriebssystems 40 die Wiederherstellung der Cachespeicher-Informationen zu ermöglichen.
- Wenn der verborgene Server 70 geladen und gestartet wird, wird der Deskriptor 120 des stabilen Speichers auf Gültigkeit geprüft, und wenn er nicht gültig ist, initialisiert, um anzuzeigen, dass gerade kein Teil des stabilen Speichers belegt wird. Mögliche Gültigkeitsprüfungen bestehen zum Beispiel im Vergleich eines Prüfsummenwertes mit einem neu berechneten Prüfsummenwert für den Inhalt des Deskriptors 120 des stabilen Speichers, die Summierung der Speicherbelegungs- Zählstände, um festzustellen, ob sie der Gesamtkapazität des stabilen Speichers 110 entsprechen, und im Vergleich von charakteristischen Schlüsselwerten, die nach abgeschlossener Initialisierung des Speichers des verborgenen Servers 70 im Deskriptor 120 des stabilen Speichers abgelegt werden. Diese Verwendung des bereits vorhandenen Deskriptors 120 des stabilen Speichers durch eine neu gestartete Version des verborgenen Servers 70 macht es möglich, Code für den verborgenen Server 70 ohne erkennbaren Verlust von Informationen zu ersetzen. Es ist natürlich erwünscht, dass die neue Version des verborgenen Servers 70 in der Lage ist, die alte Version des Deskriptors 120 des stabilen Speichers zu interpretieren.
- Der verborgene Server 70 verwendet einen Teil des Deskriptors 120 des stabilen Speichers, um die Dienst-Datenkennungen 115a bis 115n abzulegen, die jeweils einem anderen Dienst 130a bis 130n zugeordnet werden. Eine Dienst-Datenkennung zeigt auf einen Datendeskriptor. Ein Datendeskriptor zeigt Teile des verborgenen Speichers 60 an, die für einen entsprechenden Dienst zur Verfügung stehen.
- Der VDISK-Dienst 130a verwendet beispielsweise einen VDISK- Datendeskriptor 140a. Immer wenn der verborgene Server 70 gestartet wird, wird der VDISK-Dienst 130a gestartet (sowie alle anderen Dienste 130b bis 130n) und erhält eine Kopie seiner Dienst-Datenkennung 115a, die entweder null oder ein Zeiger auf den VDISK-Datendeskriptor 140a ist. Der VDISK- Dienst 130a bestätigt, dass seine Dienst-Datenkennung 115a auf den VDISK-Datendeskriptor 140a zeigt, und er bestätigt die Gültigkeit dieses Deskriptors 140a, ebenso wie der verborgene Server 70 das Vorhandensein und die Gültigkeit des Deskriptors 120 des stabilen Speichers bestätigt. Wenn der VDISK-Dienst 130a keinen gültigen VDISK-Datendeskriptor 140a findet, fordert er die Zuordnung eines solchen Deskriptors durch den verborgenen Server 70 an und initialisiert ihn, um anzuzeigen, dass noch keine VDISKs vorhanden sind. Mit dem VDISK- Datendeskriptor 140a wird protokolliert, welche Teile des stabilen Speichers 110 gerade zur Speicherung von Daten im Namen ihrer Benutzer im Betriebssystem 40 und den Anwendungen 5a bis 5n verwendet werden.
- Diese Verwendung der Dienst-Datenkennungen 115a bis 115n und der Datendeskriptoren 140a bis 140n ermöglicht es in ziemlich der gleichen Weise, wie der verborgene Server 70 angehalten, ersetzt und neu gestartet werden kann, dass ein Dienst 130a bis 130n angehalten und neu gestartet werden kann, ohne dass Informationen verloren gehen oder der Betrieb erkennbar unterbrochen wird. Wie beim verborgenen Server 70 ist es erwünscht, dass die Datendeskriptoren 140a bis 140n, die von den alten Versionen der Dienste 130a bis 130n erzeugt werden, von der neuen Version der Dienste 130a bis 130n verstanden werden.
- In der bevorzugten Ausführungsform enthalten Anforderungen an den verborgenen Server 70 den Namen des Dienstes 130a bis 130n, der die Anforderung verarbeiten soll, so dass der verborgene Server 70 die Anforderung diesem Dienst 130a bis 130n übergeben kann. Zusätzliche Anforderungsinformationen, die ein beliebiger Dienst gegebenenfalls benötigt, können im Anforderungsblock 100a bis 110n gefunden werden. Im Falle des VDISK-Dienstes 130a gehört dazu ein Befehlscode, der anzeigt, ob ein VDISK erzeugt werden soll, Speicherbereich für Operanden wie eine VDISK-Kennung, um anzuzeigen, an welchem VDISK Operationen durchgeführt werden sollen, und Speicherbereich für beliebige Antwortinformationen wie einen Rückkehrcode, der anzeigt, ob die Anforderung erfolgreich durchgeführt werden konnte oder erfolglos blieb, und ein Abschluss-Bit (completion bit), um anzuzeigen, wann der VDISK- Dienst 130a die Verarbeitung der Anforderung abgeschlossen hat.
- In der bevorzugten Ausführungsform wird der VDISK-Dienst 130a von einem VDISK-Einheitentreiber 160a verwendet, der im Betriebssystem 40 installiert wird. Der VDISK-Einheitentreiber 160a stellt dieselbe Schnittstelle wie jeder Platten- Einheitentreiber bereit, der im Betriebssystem 40 installiert ist, wobei er anstelle einer echten Platteneinheit für die Speicherung und den Abruf von Daten den VDISK-Dienst 130a nutzt. Dadurch können das restliche Betriebssystem 40 und die Anwendungsprogramme 5a bis 5n VDISKS wie echte Platten verwenden. Da der Inhalt des verborgenen Speichers 60 nie durch einen Ausfall eines Programms, das im sichtbaren Speicher 30 läuft, beschädigt wird, weil der Inhalt des stabilen Speichers 110 trotz Neustarts des verborgenen Servers 70 und seiner zugehörigen Dienste 130a bis 130n erhalten bleibt, und aufgrund der Fehlertoleranz und der Schutzfunktionen zur Sicherstellung der Stromversorgung, die die DM/6000-Hardware bietet, können die Daten, die vom VDISK- Dienst 130a im stabilen Speicher 110 gespeichert werden, als genauso sicher gespeichert betrachtet werden, als ob sie auf echten Magnetplatten gespeichert würden.
- Alle Adressen, die dem verborgenen Server 70 übergeben werden, sind reale Adressen im sichtbaren Speicher 30, die der VDISK- Einheitentreiber 160a, der unter AIX läuft, mit Hilfe der Kernel-Dienste von AIX festlegt, und die Anforderungsblöcke 100a bis 100n sind vorzugsweise auf eine einzige Seite des Speichers beschränkt, um Probleme mit der Adressumsetzung zu vermeiden.
- Wenn der verborgene Server 70 auf einer Untergruppe der Prozessoren 15a bis 15n läuft, die von derjenigen, auf der das Betriebssystem 40 läuft, getrennt ist, erfolgt die Verarbeitung von Anforderungen durch den verborgenen Server 70 gleichzeitig mit der Verarbeitung durch das Betriebssystem 40 und die Anwendungsprogramme 5a bis 5n. Wenn der verborgene Server 70 und das Betriebssystem 40 und die Anwendungsprogramme 5a bis 5n dieselben Prozessoren 15a bis 15n gemeinsam benutzen, wird die Steuerung vorzugsweise zwischen dem verborgenen Server und dem Betriebssystem hin- und herübertragen, wobei ein Übertragungsprogramm 170 verwendet wird, das den Zustand der Prozessoren 15a bis 15n als gerade zur Verwendung durch das Betriebssystem 40 eingestellt verzeichnet und den Zustand der Prozessoren 15a bis 15n anschließend ändert, um dafür zu sorgen, dass der verborgene Server 70 ordnungsgemäß funktioniert. Der zu verzeichnende Zustand kann unter anderem den Inhalt von Registern und die Einstellungen der Umsetzungseinheit für die virtuellen Adressen beinhalten.
- In der bevorzugten Ausführungsform wird das Übertragungsprogramm 170 in den ersten 64 KByte des Speichers gespeichert. AIX setzt seine virtuellen Speichertabellen immer so, dass die virtuellen Adressen dieses Teils des Speichers gleich seinen realen Adressen sind. Programme in diesem Speicherbereich können die Adressumsetzung daher ein- und ausschalten und die Befehlsausführung dennoch zum nächsten Befehl in demselben Programm weiterschalten lassen.
- Obwohl andere Mittel zur Signalisierung zwischen dem VDISK- Einheitentreiber 160a, der unter dem Betriebssystem 40 läuft, und dem VDISK-Dienst 130a möglich sind, beispielsweise die Verwendung von Unterbrechungen, verwendet die bevorzugte Ausführungsform eine Abschluss-Markierung (completion flag) im Antwortbereich des Anforderungsblocks 100a bis 100n. Der VDISK-Einheitenreiber 160a durchläuft synchron eine Schleife, in der er zum einen die Abschluss-Markierung prüft und zum anderen die Steuerung dem verborgenen Server 70 übergibt, wenn dieser verborgene Server 70 denselben Prozessor wie das Betriebssystem 40 verwendet.
- Der gesamte Ablaufpfad einer Anforderung für Daten in einer VDISK von einer Anwendung 5a bis 5n bis zur Übergabe dieser Daten an diese Anwendung ist wie folgt. Die Anforderung gelangt zuerst zum Betriebssystem 40, das feststellt, ob die Einheit eine VDISK-Einheit ist. Die Anforderung wird daher dem VDISK-Einheitentreiber 160a übergeben, der feststellt, welche VDISK die Daten enthält und in einem Anforderungsblock 100a bis 100n eine Anforderung erstellt, die anzeigt, dass dies eine Anforderung für den VDISK-Dienst ist, von welcher VDISK die Daten abgerufen werden sollen, an welcher Stelle in der VDISK mit dem Lesen der Daten begonnen werden soll, wie viele Daten übertragen werden sollen und an welcher Stelle im sichtbaren Speicher 30 die zu lesenden Daten abgelegt werden sollen. Man beachte, dass die Abschluss-Markierung im Anforderungsblock 100a bis 100n zu diesem Zeitpunkt so gesetzt ist, dass sie anzeigt, dass die Anforderung nicht abgearbeitet ist. Als Nächstes stellt der VDISK-Einheitentreiber 160a einen Warteschlangeneintrag in die Warteschlange 90, der auf diesen Anforderungsblock 100a bis 100n zeigt, und beginnt, darauf zu warten, dass die Abschluss-Markierung anzeigt, dass die Anforderung abgearbeitet ist. Während er wartet, ruft der VDISK-Einheitentreiber 160a das Übertragungsprogramm 170 auf, um dem verborgenen Server 70 die Steuerung des Prozessors 15a bis 15n zu übertragen, wenn der Prozessor 15a bis 15n vom Betriebssystem 40 und dem verborgenen Server 70 gemeinsam benutzt wird. In jedem Fall entnimmt der verborgene Server 70 wiederum diesen Warteschlangeneintrag aus der Warteschlange und stellt fest, ob der Anforderungsblock 100a bis 100n vom VDISK-Dienst 130a verarbeitet werden soll. Mit Hilfe seiner Dienst-Datenkennung 115a lokalisiert der VDISK-Dienst 130a seinen VDISK-Datendeskriptor 140a und damit die VDISK-Daten, die er dann in den Teil des sichtbaren Speichers kopiert, der im Anforderungsblock 100a bis 100n angegeben ist, und anschließend setzt er die Abschluss-Markierung, um anzuzeigen, dass die Operation vollständig durchgeführt wurde. Die Steuerung des Prozessors 15a bis 15n wird wieder dem verborgenen Server 70 übergeben, der, wenn der Prozessor vom verborgenen Server 70 und dem Betriebssystem 30 gemeinsam benutzt wird, die Steuerung wiederum an das Übertragungsprogramm 170 und folglich an den VDISK- Einheitentreiber 130a zurückgibt. In jedem Fall steuert der VDISK-Einheitentreiber 160a schließlich den Prozessor 15a bis 15n und überwacht, dass die Abschluss-Markierung gesetzt wird, und gibt die Steuerung an das Betriebssystem 30 zurück, welches die Steuerung an das Anwendungsprogramm 5a bis 5n zurückgibt, das die ursprüngliche Anforderung gestellt hat.
- Der PCACHE-Einheitentrelber 160b ist dem VDISK- Einheitentreiber 160a sehr ähnlich, da er dem Betriebssystem 40 und den Anwendungsprogrammen 5a bis 5n als eine echte Platteneinheit erscheint und mit Hilfe des verborgenen Servers 70 und des PCACHE-Dienstes 130b auch Daten im stabilen Speicher ablegt und daraus abruft. Der Unterschied besteht darin, dass der PCACHE-Einheitentreiber 160b nur den PCACHE- Dienst 130b verwendet, um einen Cachespeicher mit Daten zu verwalten, die vor kurzem von einer echten Platte 18a bis 18n gelesen oder darauf geschrieben wurden, auf die der PCACHE- Einheitentreiber 160b mit Hilfe des Einheitentreibers 160a bis 160n für diese bestimmte Platteneinheit 18a bis 18n zugreift. Dies entspricht weitgehend der Arbeitsweise des VSD- Einheitentreibers, der in "Design and Implementation of a Recoverable Virtual Shared Disk" von C.R. Attanasio, M. Butrico, C.A. Polyzois, S.E. Smith, IBM T.J. Watson Research Center, RC 19843, 22. November 1994, beschrieben ist.
- Im Falle eines Ausfalls des Betriebssystems 40 ist der Inhalt des sichtbaren Speichers 30 vollständig verloren. Wenn das Betriebssystem 40 neu gestartet wird, stellt der PCACHE- Einheitentreiber 160b sein Verzeichnis mit Informationen über die Speicherplätze im Cachespeicher wieder her, indem er vom PCACHE-Dienst 130b die Liste der Ausgangsadressen von denjenigen Blöcken anfordert, die im stabilen Speicher gerade vorhanden sind. Der PCACHE-Einheitentreiber 160c kann dann jedwede interne Datenstruktur wiederherstellen, die er zur Überwachung des Zustands des Cachespeichers verwendet, beispielsweise eine Hash-Tabelle, so dass die vom PCACHE- Dienst 130b gespeicherten Verzeichnisinformationen während des Normalbetriebs nicht in Anspruch genommen werden müssen.
- Fig. 4 ist ein logisches Flussdiagramm der Schritte, die vom Betriebssystem 40 oder genauer gesagt einem im Betriebssystem installierten Einheitentreiber 160a bis 160n und dem Übertragungsprogramm 170 durchgeführt werden, um diese Übertragung der Steuerung vorzunehmen. Zuerst wird jedwede Anforderung, die vom verborgenen Server 70 und einem speziellen Dienst 130a bis 130n verarbeitet werden soll, in den Kommunikationsbereich 80 in einem Anforderungsblock 100a bis 100n gestellt (Schritt 410). Dann wird der Zustand des Prozessors 15a bis 15n, der diese Schritte ausführt, irgendwo im sichtbaren Speicher 30 abgelegt (Schritt 420). Um den verborgenen Speicher 60 für diesen Prozessor sichtbar zu machen (Schritt 430), wird in der bevorzugten Ausführungsform die Umsetzung virtueller Adressen durch den Prozessor ausgeschaltet, obwohl auch andere Maßnahmen durchaus möglich wären. Da nun dieser Prozessor auf den verborgenen Speicher 60 zugreifen kann, kann er mit der Ausführung von Befehlen beginnen, die in dem Programm des verborgenen Servers 70 enthalten sind (Schritt 440). Immer wenn der verborgene Server 70 bereit ist, die Steuerung des Prozessors abzugeben, wird die Ausführung im Übertragungsprogramm 170 im nächsten Schritt dieses Programms wieder aufgenommen, der damit fortfährt, den verborgenen Speicher 60 zu verbergen (Schritt 450). In der bevorzugten Ausführungsform wird dies durchgeführt, indem die Umsetzung der virtuellen Adressen wieder eingeschaltet wird. Der restliche Zustand des Prozessors kann wiederhergestellt werden (Schritt 460), und die Steuerung kann an den Einheitentreiber 160a bis 160n zurückgegeben werden, der die Übertragung eingeleitet hat. Antwortdaten, die in den Kommunikationsbereich 80 aber auch an eine beliebige andere Stelle im sichtbaren Speicher 30 gestellt wurden, können dann geprüft werden (Schritt 470).
- Fig. 5 ist ein logisches Flussdiagramm der Schritte, die von dem verborgenen Server 70 durchgeführt werden, um eine Anforderung zu verarbeiten. Der erste Schritt 510 besteht darin, auf das Erscheinen einer Anforderung im Kommunikationsbereich 80 zu warten. Wenn dies geschieht, wird im Schritt 520 die der Art der gestellten Anforderung entsprechende Verarbeitung durchgeführt. Die Anforderungsdaten geben zum Beispiel einen bestimmten Dienst an, an den die Anforderung übergeben werden soll, und den Befehl, den dieser Dienst ausführen soll. Als Ergebnis werden Antwortinformationen in den Kommunikationsbereich 80 oder an eine beliebige andere Stelle im sichtbaren Speicher 30 gestellt (Schritt 530). Beispielsweise kann der Inhalt der ursprünglichen Anforderung eine Stelle im sichtbaren Speicher 30 ausweisen, die sich jedoch außerhalb des Kommunikationsbereichs befindet, in den die Antwortinformationen für eine bestimme Anforderung gestellt werden sollen. Im Schritt 540 wird dann geprüft, ob der Prozessor, der jetzt das Programm in Form des verborgenen Servers 70 ausführt, auch zur Ausführung des Betriebssystems 40 verwendet wird. Diese Prüfung kann auf vielerlei Weise durchgeführt werden, beispielsweise, indem Konfigurationsinformationen geprüft werden, die sich im Kommunikationsbereich befinden. Wenn der Prozessor gemeinsam benutzt wird, würde der verborgene Server an diesem Punkt 340 die Steuerung an das Betriebssystem 40 zurückgeben (Schritt 550).
- Fig. 6 ist ein Beispiel dafür, wie die Warteschlange 90 im Kommunikationsbereich 80 aussehen könnte, nachdem eine Reihe von Anforderungen in die Warteschlange gestellt wurden. Der Eintrag A ist der älteste Eintrag, während der Eintrag E 610 der zuletzt zur Warteschlange 90 hinzugefügte Eintrag ist. Um zu vermeiden, dass es zwischen dem Hinzufügen von Einträgen zu der Warteschlange und der Entnahme von Einträgen aus der Warteschlange zu Störungen kommt, ist eine Form der Synchronisation notwendig. Während beispielsweise eine "TEST- and-SET"(IBM 370-)Befehlsfolge verwendet werden kann, um eine Synchronisation sicherzustellen, werden in der bevorzugten Ausführungsform die Befehle "load-and-reserve" ("laden und reservieren") und "store conditionally" ("bedingt speichern") der PowerPC-Architektur verwendet. Wie in der Technik bekannt ist, veranlasst der Befehl "load-and-reserve" die Reservierung eines Speicherplatzes zur Verwendung durch den Befehl "store conditionally". Der Befehl "store conditionally" stellt zuerst fest, ob der Speicherplatz, an dem gerade versucht wird, Daten zu speichern, bereits reserviert ist. Wenn es eine Reservierung gibt, findet die Speicherung statt, und die Reservierung wird aufgehoben. Wenn es keine Reservierung gibt, wird der Befehl abgearbeitet, ohne den Inhalt des Speichers zu ändern.
- Um einen Eintrag in die Warteschlange zu stellen, wird an dem Wort im Warteschlangen-Kopfbereich, der den Offset des ersten Eintrags in der Warteschlange enthält, ein Befehl "load-andreserve" ausgeführt. Der "nächste" Offset des neuen Eintrags wird dann auf diesen Wert gesetzt. Schließlich wird der Offset des neuen Eintrags im Warteschlangen-Kopfbereich gespeichert, vorausgesetzt, dass die für dieses Wort vorgenommene Reservierung immer noch Bestand hat. Wenn nicht, wird die Prozedur des Hinzufügens von Einträgen zur Warteschlange wiederholt.
- Der Eintrag E 610 wurde beispielsweise hinzugefügt, indem der Anfangszeiger 600 mit einer Reservierung geladen wurde, welcher vor dem Hinzufügen des Eintrags E 610 auf den Eintrag D 620 gezeigt hatte. Dieser Zeiger wird in das nächste Feld 613 des Eintrags E 610 gestellt. Zum Schluss wird die Adresse des Eintrags E 610 im Anfangszeiger 600 bedingt gespeichert. Wenn die Speicherung gelingt, ist der Vorgang des Hinzufügens von Einträgen zur Warteschlange abgeschlossen. Andernfalls wird der Prozess wiederholt.
- Dies ergibt natürlich eine nach dem LIFO-Prinzip aufgebaute Warteschlange. Der Aufbau der Warteschlange nach dem FIFO- Prinzip geschieht beim Prozess der Entnahme von Einträgen aus der Warteschlange. Um einen Eintrag aus der Warteschlange zu entfernen, wird der Kopf-Offset in den Kopfbereich der Warteschlange geladen und reserviert. Dann wird die ganze Warteschlange aus dem Warteschlangen-Kopfbereich entfernt, indem anstelle dieses Werts eine Null bedingt gespeichert wird. Dem Server, dem der ganze Inhalt der Warteschlange zur Verfügung steht, steht es frei, die älteste Anforderung aus der Warteschlange zu entfernen. Wenn die Warteschlange ansonsten leer ist, ist die Entnahme von Einträgen aus der Warteschlange (Dequeuing) abgeschlossen. Andernfalls wird der übrig gebliebene Rest an den Warteschlangen-Kopfbereich zurückgegeben.
- Wenn der übrig gebliebene Rest an den Warteschlangen- Kopfbereich zurückgegeben wird, sofern in der Zwischenzeit andere Einträge in die Warteschlange gestellt wurden, werden die Einträge vorzugsweise mit der Gruppe von Einträgen zusammengelegt, die mittels des Dequeuing-Prozesses entfernt wurden. Um die Zusammenlegung durchzuführen, wird der Kopf- Offset (das Wort im Warteschlangen-Kopfbereich, das auf den ersten Eintrag in der Warteschlange zeigt) dem Vorgang "Laden und reservieren" (load-and-reserve) unterworfen. Wenn der Kopf-Offset eine Null enthält, gibt es keine neuen Einträge. Der Offset des Eintrags, der sich nun am Anfang derjenigen Einträge befindet, die an die Warteschlange zurückgegeben werden, wird folglich bedingt gespeichert. Andernfalls wird eine Null bedingt gespeichert, und der Wert, der geladen wird, wird als Start einer neuen Warteschlange verwendet, die mit der alten Warteschlange zusammengelegt werden soll. Der Prozess wird dann wiederholt. In beiden Fällen wird der ganze Prozess wiederholt, wenn die Speicherung nicht gelingt.
- Um einen Eintrag 610 bis 650 aus der Warteschlange zu entfernen, wird der älteste Eintrag gewünscht. In diesem Beispiel ist dies der Eintrag A 630. Um dies durchzuführen, wird die ganze Kette entfernt, indem der Anfangszeiger 600 wiederholt mit einer Reservierung geladen und an seiner Stelle eine Null bedingt gespeichert werden. Dieser Vorgang wird wiederholt durchgeführt, bis die Speicherung gelingt. Die Warteschlange wird dann durchlaufen, bis ein Eintrag erreicht wird, dessen Endezeiger einen Wert ungleich null hat. In diesem Beispiel wäre dies der Endezeiger 632 des Eintrags A 630. Die Einträge vor dem Eintrag A 630 erscheinen in der Reihenfolge nach dem "Last-in-first-out"-Prinzip, wie es von dem Algorithmus, der das Hinzufügen von Einträgen zur Warteschlange steuert (Enqueue-Algorithmus), festgelegt wurde. Die Einträge nach dem Eintrag A 630 erscheinen in der Reihenfolge nach dem "First-in-first-out"-Prinzip, das der verborgene Server 70 beibehalten würde, indem er die Einträge in die Reihenfolge B-C-D-E umordnen würde (der Eintrag A 630 ist nicht vorhanden, weil dieser Eintrag aus der Warteschlange 90 entfernt wurde). Der Eintrag B 640 würde seinen Anfangszeiger 642 so gesetzt haben, dass er auf den Eintrag E 610 zeigt. Dies weist auf zwei Dinge hin: dass der Eintrag B 640 der erste der First-in-first-out-Einträge ist und dass neue Einträge, die in der Last-in-first-out-Reihenfolge angetroffen werden, hinter den Eintrag gestellt werden sollten, auf den der Anfangszeiger 642 zeigt. Dadurch muss die ganze Warteschlange 90 nicht jedes Mal, wenn sie umgeordnet werden muss, in Folge durchlaufen werden.
- Der Vorgang der Rückgabe der restlichen Einträge an die Warteschlange 90 ist dem Vorgang des Hinzufügens eines Eintrags zu der Warteschlange sehr ähnlich. Den Unterschied stellt man fest, wenn ein paar andere Einträge in die Warteschlange 90 gestellt wurden, während der verborgene Server 70 die Einträge als Teil des Dequeueing-Prozesses manipuliert hat. In diesem Fall ist der Wert, der vom Anfangszeiger 600 geladen wird, ungleich null und zeigt auf die Einträge, die neu zur Warteschlange hinzugekommen sind. Die korrekte Antwort ist, dass der verborgene Server 70 diese Einträge wie beim normalen Dequeueing-Prozess entfernt und mit denjenigen Einträgen kombiniert, die er zuvor entfernt hat, um eine einzige Liste zu bilden und zurückzukehren, um den Prozess zu wiederholen, in dem diese Liste in die Warteschlange 90 zurückgestellt wird.
- Eine Optimierung wird vorgenommen, um zu verhindern, dass jedes Mal, wenn der älteste Eintrag in der Kette gewünscht wird, die LIFO-Kette bis zu ihrem Ende durchlaufen werden muss. Dazu müssen die Einträge umgeordnet werden, bevor die Liste an die Warteschlange zurückgegeben wird. Die umgeordneten Einträge, die sich jetzt in FIFO-Reihenfolge befinden, enthalten alle den Offset des Listenendes. Dadurch können die Einträge in FIFO-Reihenfolge von den Einträgen in LIFO-Reihenfolge unterschieden werden, die anstelle eines Ende-Offsets eine Null haben, und das Ende kann sehr schnell lokalisiert werden, um dort Einfügungen vorzunehmen. Während neue Einträge in die Warteschlange gestellt werden, gibt es ein paar LIFO-Einträge, auf die ein paar FIFO-Einträge folgen, aber dies kann von dem verborgenen Server korrigiert werden, wenn er das nächste Mal Einträge aus der Warteschlange entfernt.
Claims (12)
1. Datenverarbeitungssystem, das einen Speicher (20),
mindestens einen Prozessor (15a bis 15n),
Anwendungsprogramme (5a bis 5n) und ein Betriebssystem
(40) enthält und Folgendes umfasst:
einen sichtbaren Teil (30) des Speichers, der von den
Anwendungsprogrammen und dem Betriebssystem adressiert
werden kann;
einen verborgenen Teil (60) des Speichers, a) dessen
Adressierbarkeit durch das Betriebssystem und die
Anwendungsprogramme (5a bis 5n) ausgeschlossen ist, und b)
der zur Speicherung von Daten dient, die von mindestens
einem der Anwendungsprogramme und dem Betriebssystem
übertragen werden;
einen Kommunikationsbereich (80), der sich in dem
sichtbaren Teil des Speichers befindet, um Anforderungen
für den Zugriff auf Daten von mindestens einem der a)
Anwendungsprogramme und b) dem Betriebssystem zu
empfangen; und
einen verborgenen Server (70), der sich in dem verborgenen
Teil (60) des Speichers befindet und a) sowohl den
sichtbaren Teil des Speichers als auch den verborgenen
Teil des Speichers adressiert, b) die Anforderungen für
den Zugriff auf Daten von dem Kommunikationsbereich
empfängt und c) den Datenzugriff von dem verborgenen Teil
einleitet und d) Antworten auf die Anforderungen in den
Kommunikationsbereich stellt.
2. Datenverarbeitungssystem nach Anspruch 1, wobei der
verborgene Server (70) von einem ersten Prozessor des
mindestens einen Prozessors (15a bis 15n) ausgeführt wird
und das Betriebssystem (40) von einem zweiten Prozessor
des mindestens einen Prozessors ausgeführt wird.
3. Datenverarbeitungssystem nach Anspruch 1, wobei sich ein
Prozessor des mindestens einen Prozessors in einem ersten
Zustand befindet, in dem der verborgene Speicher (60) für
den Prozessor nicht sichtbar ist, und in einem zweiten
Zustand, in dem der verborgene Speicher für den Prozessor
sichtbar ist, wobei das System des Weiteren Folgendes
umfasst:
ein Mittel, um den Prozessor zwischen dem ersten Zustand
und dem zweiten Zustand hin- und herzuschalten;
ein Mittel, um eine gewünschte Operation durch den
verborgenen Server einzuleiten, während sich der Prozessor
in dem zweiten Zustand befindet.
4. Datenverarbeitungssystem nach Anspruch 1, wobei der
verborgene Server (70) erneut geladen und neu gestartet
werden kann und wobei der verborgene Teil des Speichers
sowohl unmittelbar vor als auch unmittelbar nach dem
Neustart des verborgenen Servers gleich ist.
5. Datenverarbeitungssystem nach Anspruch 1, das des Weiteren
ein RAM-Plattendienstmittel (130a) umfasst, um Daten in
dem verborgenen Teil (60) des Speichers (20) zu speichern
und um Fehler und Neustarts des Betriebssystems (40) sowie
das erneute Laden und Neustarts des verborgenen Servers
(70) zu überstehen.
6. Datenverarbeitungssystem nach Anspruch 1, das des Weiteren
ein Plattencachespeicher-Dienstmittel (130b) umfasst, um
Daten in dem verborgenen Teil (60) des Speichers (20) zu
speichern und um Fehler und Neustarts des Betriebssystems
(40) sowie das erneute Laden und Neustarts des verborgenen
Servers (70) zu überstehen.
7. Verfahren zum Schutz von Daten, die in einem Speicher (20)
gespeichert werden, der sich in einem
Datenverarbeitungssystem befindet, wobei das
Datenverarbeitungssystem mindestens einen Prozessor (15a
bis 15n), Anwendungsprogramme (5a bis 5n) und ein
Betriebssystem (40) enthält, wobei das Verfahren die
folgenden Schritte umfasst:
Zuordnen eines sichtbaren Teils (30) des Speichers (20),
der von den Anwendungsprogrammen und dem Betriebssystem
adressiert werden kann;
Zuordnen eines verborgenen Teils (60) des Speichers, a)
dessen Adressierbarkeit durch das Betriebssystem und die
Anwendungsprogramme (5a bis 5n) ausgeschlossen ist, und b)
der zur Speicherung von Daten dient, die von mindestens
einem der Anwendungsprogramme und dem Betriebssystem
übertragen werden;
Empfangen von Anforderungen von mindestens einem a) der
Anwendungsprogramme und b) dem Betriebssystem in einem
Kommunikationsbereich (80), der sich in dem sichtbaren
Speicher befindet; und
Empfangen einer jeden der Anforderungen durch einen
verborgenen Server (70), der sich in dem verborgenen Teil
des Speichers befindet, und sowohl den sichtbaren Teil des
Speichers als auch den verborgenen Teil des Speichers
adressiert;
Einleiten einer jeden der Anforderungen von dem
verborgenen Speicher; und
Platzieren der Antworten auf die Anforderungen in dem
Kommunikationsbereich.
8. Verfahren nach Anspruch 7 zum Schutz von Daten, die in
einem Speicher (20) gespeichert werden, das des Weiteren
die folgenden Schritte umfasst:
Überführen eines Prozessors von dem mindestens einen
Prozessor aus einem ersten Zustand, in dem der verborgene
Teil (60) des Speichers (20) für den Prozessor (15a bis
15n) nicht sichtbar ist, in einen zweiten Zustand, in dem
der verborgene Teil des Speichers für den Prozessor
sichtbar ist;
Übertragen (440) der Steuerung des Prozessors auf den
verborgenen Server (70);
Empfangen einer Anforderung durch den verborgenen Server
für die Durchführung einer gewünschten Operation;
Einleiten der gewünschten Operation durch den verborgenen
Server;
Beenden der Steuerung des Prozessors durch den verborgenen
Server; und
Überführen des Prozessors aus dem zweiten Zustand in den
ersten Zustand.
9. Verfahren nach Anspruch 8 zum Schutz von Daten, die in
einem Speicher (20) gespeichert werden, das des Weiteren
die folgenden Schritte umfasst:
erneutes Laden des verborgenen Servers (70);
Neustarten des verborgenen Servers; und
den Schritt, in dem der verborgene Teil des Speichers
sowohl unmittelbar vor als auch unmittelbar nach dem
Neustart des verborgenen Servers im gleichen Zustand
gehalten wird.
Halten des verborgenen Teils des Speichers im gleichen
Zustand sowohl unmittelbar vor als auch unmittelbar nach
dem Neustart des verborgenen Servers.
10. Verfahren nach Anspruch 7 zum Schutz von Daten, die in
einem Speicher (20) gespeichert werden, das des Weiteren
den Schritt der Bereitstellung eines RAM-Plattendienstes
(130a) umfasst, der Daten in dem verborgenen Teil (60) des
Speichers speichert und Fehler und Neustarts des
Betriebssystems (40) sowie das erneute Laden und Neustarts
des verborgenen Servers (70) übersteht.
11. Verfahren nach Anspruch 7 zum Schutz von Daten, die in
einem Speicher (20) gespeichert werden, das des Weiteren
den Schritt der Bereitstellung eines Plattencachespeicher-
Dienstes (130b) enthält, der Daten in dem verborgenen Teil
(60) des Speichers speichert und Fehler und Neustarts des
Betriebssystems (40) sowie das erneute Laden und Neustarts
des verborgenen Servers (70) übersteht.
12. Verfahren nach Anspruch 7 zum Schutz von Daten, die in
einem Speicher (20) gespeichert werden, wobei der
verborgene Server (70) von einem ersten Prozessor des
mindestens einen Prozessors ausgeführt wird und das
Betriebssystem (40) von einem zweiten Prozessor des
mindestens einen Prozessors ausgeführt wird.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US3149496P | 1996-11-26 | 1996-11-26 | |
US08/816,917 US5897658A (en) | 1996-11-26 | 1997-03-13 | Method and apparatus for protecting portions of memory by providing access requests to a communications area for processing by a hidden server |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69710034D1 DE69710034D1 (de) | 2002-03-14 |
DE69710034T2 true DE69710034T2 (de) | 2002-09-26 |
Family
ID=26707316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69710034T Expired - Fee Related DE69710034T2 (de) | 1996-11-26 | 1997-11-06 | Verfahren und Vorrichtung zum Schützen von Speicherteilen |
Country Status (6)
Country | Link |
---|---|
US (1) | US5897658A (de) |
EP (1) | EP0844565B1 (de) |
JP (1) | JP3552502B2 (de) |
CN (1) | CN1082688C (de) |
DE (1) | DE69710034T2 (de) |
SG (1) | SG73478A1 (de) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3904808B2 (ja) * | 2000-06-08 | 2007-04-11 | 株式会社日立製作所 | 分散オブジェクト管理方法及びその実施装置並びにその処理プログラムを記録した記録媒体 |
US6701421B1 (en) * | 2000-08-17 | 2004-03-02 | International Business Machines Corporation | Application-level memory affinity control |
US6973666B1 (en) * | 2001-02-28 | 2005-12-06 | Unisys Corporation | Method of moving video data thru a video-on-demand system which avoids paging by an operating system |
US7895239B2 (en) * | 2002-01-04 | 2011-02-22 | Intel Corporation | Queue arrays in network devices |
US6792520B2 (en) * | 2002-08-07 | 2004-09-14 | Hewlett-Packard Development Company, L.P. | System and method for using a using vendor-long descriptor in ACPI for the chipset registers |
US7461131B2 (en) * | 2003-03-07 | 2008-12-02 | International Business Machines Corporation | Use of virtual targets for preparing and servicing requests for server-free data transfer operations |
TWI343531B (en) * | 2003-12-19 | 2011-06-11 | Oce Tech Bv | Erasing a stored information pattern on a storage medium |
US20050182796A1 (en) * | 2004-02-12 | 2005-08-18 | International Business Machines Corporation | Method and system for protecting data associated with a replaced image file during a re-provisioning event |
US7278122B2 (en) * | 2004-06-24 | 2007-10-02 | Ftl Systems, Inc. | Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization |
KR100652506B1 (ko) | 2004-09-24 | 2006-12-06 | 삼성전자주식회사 | 시스템 운용 데이터 자가 복구 장치 및 방법 |
US7412705B2 (en) * | 2005-01-04 | 2008-08-12 | International Business Machines Corporation | Method for inter partition communication within a logical partitioned data processing system |
US7437618B2 (en) * | 2005-02-11 | 2008-10-14 | International Business Machines Corporation | Method in a processor for dynamically during runtime allocating memory for in-memory hardware tracing |
US7437617B2 (en) * | 2005-02-11 | 2008-10-14 | International Business Machines Corporation | Method, apparatus, and computer program product in a processor for concurrently sharing a memory controller among a tracing process and non-tracing processes using a programmable variable number of shared memory write buffers |
US7418629B2 (en) * | 2005-02-11 | 2008-08-26 | International Business Machines Corporation | Synchronizing triggering of multiple hardware trace facilities using an existing system bus |
US8683159B2 (en) * | 2007-12-27 | 2014-03-25 | Intel Corporation | Delivering secured media using a portable memory device |
US9110793B2 (en) * | 2009-11-03 | 2015-08-18 | International Business Machines Corporation | Inner process |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4564903A (en) * | 1983-10-05 | 1986-01-14 | International Business Machines Corporation | Partitioned multiprocessor programming system |
US5673394A (en) * | 1990-10-31 | 1997-09-30 | Microsoft Corporation | Method of sharing memory between an operating system and an application program |
JPH06236284A (ja) * | 1991-10-21 | 1994-08-23 | Intel Corp | コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム |
US5423044A (en) * | 1992-06-16 | 1995-06-06 | International Business Machines Corporation | Shared, distributed lock manager for loosely coupled processing systems |
US5649099A (en) * | 1993-06-04 | 1997-07-15 | Xerox Corporation | Method for delegating access rights through executable access control program without delegating access rights not in a specification to any intermediary nor comprising server security |
-
1997
- 1997-03-13 US US08/816,917 patent/US5897658A/en not_active Expired - Fee Related
- 1997-10-28 CN CN97121209A patent/CN1082688C/zh not_active Expired - Fee Related
- 1997-10-29 SG SG1997003909A patent/SG73478A1/en unknown
- 1997-11-06 EP EP97308904A patent/EP0844565B1/de not_active Expired - Lifetime
- 1997-11-06 DE DE69710034T patent/DE69710034T2/de not_active Expired - Fee Related
- 1997-11-14 JP JP31352797A patent/JP3552502B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10254786A (ja) | 1998-09-25 |
EP0844565A2 (de) | 1998-05-27 |
EP0844565B1 (de) | 2002-01-23 |
DE69710034D1 (de) | 2002-03-14 |
JP3552502B2 (ja) | 2004-08-11 |
CN1201189A (zh) | 1998-12-09 |
US5897658A (en) | 1999-04-27 |
SG73478A1 (en) | 2000-06-20 |
CN1082688C (zh) | 2002-04-10 |
EP0844565A3 (de) | 1999-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69710034T2 (de) | Verfahren und Vorrichtung zum Schützen von Speicherteilen | |
DE69802437T2 (de) | Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen | |
DE69626054T2 (de) | Verfahren zur Priorisierung und Behandlung von Fehlern in einem Rechnersystem | |
DE69721590T2 (de) | Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung | |
DE69029504T2 (de) | Verfahren zum Übersetzen und Kopieren von Adressen | |
DE69621841T2 (de) | Rechnersicherungssystem mit offenen Dateien | |
DE69629800T2 (de) | Adressenübersetzungsbuffer in einem rechnersystem | |
DE69703181T2 (de) | Registrierdateioptimierung in einem Client/Server-Rechnersystem | |
DE69128367T2 (de) | System und Verfahren zur Transaktionsbearbeitung mit verminderter Verriegelung | |
DE4220198C2 (de) | Transaktionsverarbeitungsverfahren für einen digitalen Computer und Transaktionsverarbeitungssystem | |
DE69311952T2 (de) | Verfahren und System zur inkrementalen Datensicherung | |
DE68927172T2 (de) | Multiprozessorsystem mit cache-speichern | |
DE3854616T2 (de) | Nichthierarchischer Programmberechtigungsmechanismus. | |
DE69628480T2 (de) | Ausnahmebehandlung in einem Datenprozessor | |
DE3854368T2 (de) | Cachespeicher mit einer Elastizität in der Verarbeitung verschiedener Adressenfehler. | |
DE3851488T2 (de) | Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor. | |
DE69023568T2 (de) | Cache-Speicheranordnung. | |
DE69626377T2 (de) | Vorrichtung, Verfahren, Speichermedium und computerlesbare Module zur raumeffizienten Objektverriegelung | |
DE69027253T2 (de) | Multiprozessor-Cachespeichersystem | |
DE69629444T2 (de) | Datenverarbeitungsgerät und Verfahren zur Ersetzung von ausgefallenen Speichereinheiten | |
DE69025658T2 (de) | Verfahren zur Verbesserung der Leistung eines mehrstufigen Cachespeichers durch erzwungene Fehlgriffe | |
DE2414311C2 (de) | Speicherschutzeinrichtung | |
DE68923863T2 (de) | Ein-/Ausgabecachespeicherung. | |
DE68925470T2 (de) | Verfahren zum Abrufen von potentiell ungültigen Daten in einem Mehrrechnersystem | |
DE69618221T2 (de) | Mechanismus zur wartung objektorientierter "methoden" der keine unterbrechung des computersystems erfordert |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |