DE69621263T2 - Verteilter Datencachespeicher für Multiprozessorsystem mit Cachespeicher - Google Patents
Verteilter Datencachespeicher für Multiprozessorsystem mit CachespeicherInfo
- Publication number
- DE69621263T2 DE69621263T2 DE69621263T DE69621263T DE69621263T2 DE 69621263 T2 DE69621263 T2 DE 69621263T2 DE 69621263 T DE69621263 T DE 69621263T DE 69621263 T DE69621263 T DE 69621263T DE 69621263 T2 DE69621263 T2 DE 69621263T2
- Authority
- DE
- Germany
- Prior art keywords
- file
- cache
- processors
- processor
- caching
- 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 - Lifetime
Links
- 238000000034 method Methods 0.000 claims description 139
- 230000015654 memory Effects 0.000 claims description 26
- 230000008569 process Effects 0.000 description 133
- 230000007704 transition Effects 0.000 description 16
- 230000008859 change Effects 0.000 description 12
- 230000004044 response Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 101001137642 Homo sapiens Kinase suppressor of Ras 1 Proteins 0.000 description 1
- 102100021001 Kinase suppressor of Ras 1 Human genes 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000007595 memory recall Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/311—In host system
Landscapes
- Engineering & Computer Science (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)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die vorliegende Erfindung betrifft das Gebiet der Speicherung von Daten in Cachespeichern im allgemeinen, und insbesondere das Problem der Speicherung von Daten in Cachespeichern in einem Multiprozessorsystem.
- Eine Anwendung eines Multiprozessorsystems besteht in der Bereitstellung von Redundanz. Beispielsweise kann, wenn zwei Prozessoren in einem Multiprozessorsystem dieselben Programme zum selben Zeitpunkt ausführen, wenn einer ausfällt, das Programm auf dem zweiten Prozessor fortgesetzt werden. Natürlich bewirkt, wenn das Multiprozessorsystem eine Einzelausfallstelle enthält, wie z. B. eine gemeinsam genutzte elektrische Energieversorgung, der Ausfall an der Einzelstelle den Ausfall aller Multiprozessoren. Daher verbessert die Verringerung von Einzelausfallstellen die Zuverlässigkeit des Multiprozessorsystems und erhöht die Wahrscheinlichkeit, dass der Fehler ein behebbarer Fehler ist.
- Wenn ein Prozessor Daten von einem Plattensystem lesen oder darauf schreiben muss, tritt eine bestimmte Verzögerung beim Übertragen der Daten und bis zum Erhalt der Daten von einer Platte im Falle von Lesevorgängen auf. Um die Leistung zu verbessern, wird ein Cachespeicher zwischen dem Prozessor und dem Plattensystem verwendet. Der Cachespeicher ist in der Lage, Daten schneller als das Plattensystem einzugeben und auszugeben, so dass, wenn ein Datenblock von dem Cachespeicher statt von dem Plattensystem geliefert werden kann, sich die Leistung verbessert.
- In einem typischen Multiprozessorsystem, in welchem mehrere Prozessoren Zugriff auf nur ein Plattensystem haben, ist der Cachespeicher in einem gemeinsamen Speicher gespeichert, in welchem jeder Prozessor Zugriff auf den gemeinsamen Speicher hat. Dieses stellt jedoch eine Einzelausfallstelle dar, und es ist ein zuverlässigeres Cachespeichersystem erforderlich.
- EP 0447161 (IBM) offenbart ein Multiprozessorsystem mit einem verteilten Cachespeicher, welcher einen globalen Sperrmanager zur Minimierung der Zuweisung von Seitensperren und der Anzahl von unerledigten Sperren enthält, während die Konsistenz von Seiten, welche lokal von den Prozessoren in einem Cachespeicher gespeichert werden, mit den Originalversionen der Seiten in einem externen gemeinsamen Speicher sichergestellt wird. Weitere Beispiele verteilter Cachespeichersysteme sind in Computer, vol. 23, no. 6, 1 June 1990, pages 12-24, XP000173736 Stentstrom P: 'A Survey of Cache Coherence Schemes for Multiprocessors' und Frank S. et al., 'The KSR1: Bridging the Gate Between Shared Memory and MPPS' 22 February 1993, Proceedings of the Spring Computer Society International Conference (COMCON), San Francisco, Feb. 22-26. 1933, Nr. Conf.38, pages 285-295, Institute of Electrical and Electronics Engineers XP0003979047 beschrieben.
- Die vorliegende Erfindung stellt ein Multiprozessorsystem gemäß Anspruch 1 und ein Verfahren zur Anzeige eines Cachespeicherungszustandes für eine Datei in einem Multiprozessorsystem gemäß Anspruch 5 bereit.
- Die vorliegende Erfindung stellt einen zuverlässigeren Cachespeicher bereit, indem der Cachespeicher über die Prozessoren ohne gemeinsam genutzten Speicher verteilt ist, um die Cachespeicherdaten zu halten. In einer Ausführungsform unterhält jeder Prozessor eines Multiprozessorsystems einen Cachespeicher, welcher die Cachespeicherdateien, die Blöcke jeder Datei, welche im Cachespeicher gespeichert wird, und den Cachespeicherungszustand für jede Datei identifiziert. Der Zustand einer von dem Prozessor für eine Prozessbearbeitung daran geöffneten Datei ist einer von "Keine Cachespeicherung", "Lese-Cachespeicherung" und "Lese/Schreib-Cachespeicherung" (abgekürzt rd/wr; sowohl Lese- als auch Schreibvorgänge sind im Cachespeicher ausführbar). So lange kein Prozessor eine Datei für einen Lese/Schreib-Zugriff öffnet, ist jedem Prozessor eine Lese-Cachespeicherung an der Datei erlaubt. Wenn ein Prozessor eine Datei für einen Lese/Schreib-Zugriff öffnet, und ein weiterer Prozessor die Datei geöffnet hat, ist keinem Prozessor eine Cachespeicherung der Datei erlaubt. Dieses erfolgt durch ein Plattensystem, welches eine Cachespeicher-Herunterstufungsmeldung an die Prozessoren sendet, welche die Datei geöffnet haben und diese im Cachespeicher haben. Wenn ein Prozessor eine Datei öffnet oder einen Datenblock aus einer Datei holt, führt das System ein Flag ein, welches anzeigt, welcher Cachespeicherungszustand erlaubt ist. Nachdem der letzte Prozessor mit einem Lese/Schreib-Zugriff auf eine Datei die Datei schließt, zeigt das Plattensystem bei anschließenden Zugriffen an, dass die Datei wieder im Cachespeicher gespeichert werden kann. Innerhalb eines Prozessors laufen mehrere Prozesse ab und mehr als ein Prozess kann eine Datei für eine Lese-Cachespeicherung oder Lese/Schreib-Cachespeicherung unter der Steuerung des Dateisystemsprogramms für den Prozessor im Cachespeicher speichern.
- Ein Vorteil der vorliegenden Erfindung besteht darin, dass die Synchronisation der Cachespeicher ohne gemeinsamen Speicher erfolgen kann. Die Synchronisation erfolgt unter Verwendung von Zwischenprozessmeldungen zwischen den Prozessoren, welche effizient genug sind, dass immer noch ein Leistungsgewinn im Bezug auf eine Konstruktion ohne Cachespeicherung erzielt werden kann.
- Ein weitergehendes Verständnis der Natur und der Vorteile der Erfindung hierin kann durch Bezugnahme auf die restlichen Abschnitte der Beschreibung und die beigefügten Zeichnungen erhalten werden.
- Fig. 1 ist ein Blockschaltbild eines Multiprozessorsystems, welches mehrere Prozessoren und ein Plattensystem zeigt;
- Fig. 2 ist ein detaillierteres Blockschaltbild eines in Fig. 1 dargestellten Prozessors; und
- Fig. 3 ist ein Zustandsdiagramm für eine Datei, welche im Cachespeicher eines Prozessors gespeichert wird.
- Fig. 1 ist ein Blockschaltbild eines Multiprozessorsystems 10, welches mehrere Prozessoren 12 (Prozessoren 12(A)-(C) sind dargestellt), und einen PlattenProzess 14 enthält, welcher mit den Prozessoren 12 über IPC-(interprocess communication)-Meldungen 16 kommuniziert. Ein Prozessor 12 enthält einen Speicher zur Speicherung der von einer zentralen Verarbeitungseinheit (CPU) ausgeführten Anwendungsprogramme sowie einen Speicher für Daten, welcher von der CPU und anderen Elementen des Prozessors verwendet wird. Ein von dem Prozessor ausgeführtes Programm wird als Prozess bezeichnet. Wenn mehrere Prozesse laufen, kann es der Fall sein, dass nicht alle Prozesse zu einem einzelnen Zeitpunkt laufen, aber aufgrund der Zeitteilung werden sie alle logisch zum selben Zeitpunkt ausgeführt.
- Der Plattenprozess 14 wird von einem der Prozessoren 12 ausgeführt, so dass der Plattenprozess mit anderen Prozessen seines Hostprozessors direkt kommunizieren könnte, während er mit Prozessen auf anderen Prozessoren über IPC-Meldungen kommuniziert. Jedoch arbeitet wegen der Robustheit, Symmetrie und aus anderen Gründen der Plattenprozess 14 so, als ob sein Hostprozessor entfernt wäre, und kommuniziert mit den anderen Prozessen auf dem Hostprozessor nur über IPC-Meldungen. Gemäß Darstellung in Fig. 1 werden IPC-Meldungen zum Senden eines Wiederaufrufsignals (recall signal) vom Plattenprozess 14 an einem Prozessor 12, zum Senden einer Platten-E/A-Anforderung von einem Prozessor 12 und einem Plattenprozess 14, zum Senden einer Antwort auf die Anforderung von dem Plattenprozess 14 an den Prozessor 12 und zum Senden eines Cachespeicherungszustands-Flags von dem Plattenprozess 14 an den Prozessor 12 verwendet. Um den Overhead der IPC-Meldungen zu reduzieren, kann der Cachespeicherungszustand in derselben IPC-Meldung wie die Antwort auf die Platten-E/A-Anforderung gesendet werden. Um den Overhead weiter zu reduzieren, werden IPC-Meldungen, welche keine Wirkung haben, nicht gesendet. Beispielsweise wird eine Cachespeicher-Wiederaufrufmeldung für eine Datei nicht an die Prozessoren gesendet, welche die Datei nicht geöffnet haben, oder die bereits die Datei nicht mehr im Cachespeicher speichern (wie es der Fall sein könnte, wenn der Zustand hochgestuft wurde, aber der Prozessor niemals informiert wurde).
- In einer Ausführungsform ist der Prozessor 12 ein Tandern- Prozessor und der Plattenprozess 14 ist mit einem (nicht dargestellten) Sicherungsplattenprozess 14'(backup disk process)gepaart. Der Sicherungsprozess 14' wird aktuell gehalten und übernimmt, wenn der primäre Plattenprozess 14 ausfallen sollte. In dieser Ausführungsform sind der Prozessor 12 und dessen lokaler Speicher als ein Tandemprozessor konfiguriert, welcher den Tandern-Nonstop-Kernel mit einer Unix-artigen Schnittstelle zu dem Betriebssystem (bekannt als "OSS") bearbeitet.
- Der Plattenprozess 14 steuert den Zugriff auf ein Plattenvolumen 18. Ein Plattenprozess 14 (oder ein gespiegeltes Paar) existiert für jedes für die Prozessoren zugängliche Plattenvolumen. Der gezeigte Plattenprozess 14 enthält eine Zustandsdatenbank 20, eine Zustandssteuerung 22 und eine Platten-E/A 24. Die Zustandsdatenbank 20 enthält eine Liste darüber, welche Dateien von welchen Prozessen auf welchen Prozessoren geöffnet sind, sowie über den Cachespeicherungszustand für jede Datei und den Schreibzugriff für jede Datei für jeden Prozess. Die Zustandsdatenbank 20 enthält einen Eintrag für jede "offene" Datei, was bedeutet, dass zu jedem Zeitpunkt, bei dem ein Prozess eine Datei öffnet, ein Eintrag in der Zustandsdatenbank 20 erzeugt wird. In einigen Implementationen wird der Cachespeicherungszustand von dem Schreibzugriff und der Anzahl unterschiedlicher Prozessoren abgeleitet, welche die Datei geöffnet haben. Eine Beispielanordnung der Zustandsdatenbank 20 ist in Tabelle 1 dargestellt. Tabelle 1 Zustandsdatenbank 20
- R: Lesen; R/W: Lesen/Schreiben
- Wenn die Zustandsdatenbank 20 so wie in Tabelle 1 dargestellt ist, ist die Datei A (in der typischen Ausführungsform sind die Datei-ID's speziellen Dateinamen zugeordnete Zahlen) von den Prozessoren A, B und D geöffnet. Der Prozessor B hat die Datei A für einen Lese/Schreib-Vorgang geöffnet, so dass keinem Prozessor ein Cachespeichervorgang an der Datei A gestattet ist. Die Datei B ist für einen Lesevorgang nur durch die Prozessoren A und C geöffnet. Da jeder der Prozessoren A und C nur einen Lesezugriff hat, ist die Datei auf beiden Prozessoren zum Lesen im Cachespeicher speicherbar. Der Prozessor C wurde jedoch noch nicht über die Hochstufung des Cachespeicherungszustandes informiert, so dass er immer noch keine Cachespeicherung der Datei B durchführt.
- Die Datei C ist nur bei einem einzigen Prozessor, dem Prozessor A, für zwei Prozesse geöffnet. Das Prozess-ID-Feld wird von dem Plattenprozess 14 verwendet, um die mehrfachen Öffnungen einer Datei für einen einzelnen Prozessor zu verfolgen. Der Datei C ist ein R/W-Cachespeicherungszustand gestattet, da nur ein einziger Prozessor die Datei geöffnet hat.
- Die Zustandsdatenbank 20 speichert auch weitere Daten, welche auf einer Pro-Öffnung und Pro-Datei-Basis benötigt werden, wie z. B. die Offen-Attribute und Datei-Attribute, welche nur auf einer Pro-Datei-Basis existieren. Die Offen- Attribute werden von einem Prozess spezifiziert, wenn er eine Datei öffnet, und sie enthalten den Zugriffstyp, das 0_APPEND- Flag (d. h., es kann auf "wahr" gesetzt oder auf "falsch" zurückgesetzt sein), das 0_DSYNC-Flag und die Position eines Datei-Zeigers auf die Datei.
- Das Zugriffstypattribut ist in Tabelle 1 dargestellt und kann entweder Lesen oder Lesen/Schreiben sein. Wenn das 0_APPEND-Flag gesetzt ist, erfolgen alle Schreibvorgänge am Ende der Datei. Wenn das 0_DSYNC-Flag gesetzt ist, müssen alle Schreibvorgänge durchgeschrieben werden. Diese Flags werden nur benötigt, wenn die geöffnete Datei für Lesen/Schreiben ist. Der Dateizeiger zeigt an, wo in der Datei der nächste Lese- oder Schreibvorgang (sofern nicht 0_APPEND gesetzt ist) auftritt. Diese Attribute werden bei dem Dateisystem des Prozessors in einem Cachespeicher gespeichert, zu welchem die offene Datei gehört, sofern nicht eine gemeinsame offene Datei zwischen Prozessoren aufgetreten ist, wobei in diesem Falle diese Attribute nur von dem Plattenprozess gehalten werden. In OSS werden eine geöffnete Datei und deren Attribute gemeinsam zwischen aufgeteilten Prozessen genutzt, so dass jedesmal, wenn ein Teilprozess den Wert von einer der Attribute der offenen Datei ändert, der andere Teilprozess die Veränderung sieht.
- Der Plattenprozess verwaltet auch mehrere Daten auf einer Datei-Basis, einschließlich:
- - End-of-File Position (EOF) (Dateiendeposition): Diese wird von Schreibern benötigt, da diese sie aktualisieren können. Die EOF wird von Lesern verwendet, um ein Lesen über die Datei hinaus zu verhindern.
- - Allocated Size (Zugeordnete Größe): Schreiber müssen diese kennen, so dass sie nicht über den Umfang der Datei hinaus schreiben, und wissen, wann sie eine zusätzliche Umfangszuordnung bewirken müssen.
- - File Times (Dateizeiten): mtime (Zeit der letzten Modifikation), ctime (Zeit der letzten Änderung) und atime (Zeit des letzten Zugriffes) werden alle für die Datei gespeichert.
- - File Attributes (Dateiattribute): S_NONSTOP ist ein Dateiattribut in dem Dateivorspann. Wenn dieses Attribut gesetzt ist, ist die Datei nicht im einem Cachespeicher speicherbar. Dieses Attribut wird insbesondere für kritische Daten verwendet, bei welchen die Integrität der Datei wichtiger ist als die durch das Lese/Schreib-Cachespeicherung bereitgestellte Leistungsverbesserung. Wenn dieses Attribut gesetzt ist, führt der Plattenprozess 14 ebenfalls keine Lese/Schreib- Cachespeicherung der Datei aus, sondern schreibt Daten, sobald sie erhalten werden, auf das Plattenvolumen 18 aus.
- Die Dateizeiten werden von den Schreibern aktualisiert, und wenn Cachespeichern erlaubt ist, speichern die Schreiber diese Zeiten im Cachespeicher. Leser aktualisieren nur atime und speichern sie im Cachespeicher, wenn Lese-Cachespeicherung erlaubt ist. Zeiten werden nicht tatsächlich im Cachespeicher gespeichert, da die Zeitaktivität für eine Datei auftritt, wenn die Aktivität bei dem Plattenprozess 14 auftritt. Das Dateisystem speichert jedoch die Zeiten für sich selbst im Cachespeicher, um die Notwendigkeit für Meldungen an den Plattenprozess jedesmal zu vermeiden, wenn eine Zeit benötigt wird.
- Die Zustandssteuerung 22, wie sie nachstehend detaillierter erläutert wird, sendet Cachespeicher-Wiederrufsignale als IPC-Meldungen, um die Cachespeicherungsfähigkeit von Dateien in Prozessoren, welche die Datei geöffnet haben, herunterzustufen. Die Zustandssteuerung 22 liefert auch eine Zustandsinformation an einen Prozessor zu dem Zeitpunkt, an dem der Plattenprozess 14 auf eine Platten-E/A-Anforderung aus diesem Prozessor antwortet. Diese Zustandsinformation wird üblicherweise von dem Prozessor verwendet, um die Cachespeicherungsfähigkeit einer Datei hochzustufen. Die Cachespeicherungszustände und der Betrieb des in Fig. 1 dargestellten Systems werden detaillierter anhand der Beschreibung von Fig. 3 beschrieben. Da die Hochstufung eines Cachespeichers synchron ist (erst bei einer Platten-E/A- Anforderung erfolgt), kann ein Prozessor mehr als erforderlich eingeschränkt sein, wobei dies aber nur der Fall ist, bis der Prozessor eine Plattenaktivität mit der Datei hat. Die Herunterstufung eines Cachespeichers ist asynchron, da sie als Teil der offenen Datei stattfinden muss, welche das Herunterstufen bewirkt.
- Fig. 2 ist ein detailliertes Blockschaltbild eines Prozessors 12, welcher einen oder mehrere Prozesse 30 einschließlich eines Cachespeicher-Managerprozesses ausführt, welcher Dateizugriffe von Zeit zu Zeit durch Aufrufen von Systembibliotheksroutinen (read(), write(), open(), close(), usw.) in einem Dateisystem 33 ausführt, das ein Satz von Routinen eines privilegierten Systembibliothekscodes ist. Der Cachespeichermanager 32 steht mit einem Cachespeicher 36 und einer Cachespeicher-Zeigertabelle 34 in Verbindung, wovon beide für den Prozessor 12 lokal sind und für die Cachespeicherung von Plattendaten verwendet werden (der Plattenprozess 14 könnte auch eine zentrale Cachespeicherung von Daten aus dem Plattenvolumen 18 durchführen. Die Cachespeicher-Zeigertabelle 34 zeigt für jede von dem Prozessor 12 geöffneten Datei den erlaubten Cachespeicherungszustand für die Datei zusammen mit anderen Attributen an. Eine Datei ist für einen Prozessor offen, wenn mindestens ein Prozess aus diesem Prozessor die Datei geöffnet hat. Wenn mindestens ein Prozess auf diesem Prozessor die Datei zum Lesen/Schreiben geöffnet hat, wird gesagt, dass dieser Prozessor die Datei zum Lesen/Schreiben offen hat.
- Der Cachespeichermanager 32 und das Dateisystem 33 sind die einzigen Elemente, welche mit dem Plattenprozess 14 kommunizieren und sie tun dieses unter Verwendung von IPC-Meldungen, wie es nachstehend beschrieben wird. Die hier interessierenden Platten-E/A-Anforderungen sind:
- - Open Request (Öffnungsanforderung): Das Dateisystem 33 fordert von dem Plattenprozess 14 an, dass die Datei für einen Prozess geöffnet wird. Die Anforderung enthält einen Dateinamen (oder einen anderen Dateiidentifikator), einen Zugriffstyp, das 0_Append-Flag (wenn die Datei zum Lesen/Schreiben geöffnet wird), eine Anfangsposition für einen Dateizeiger und das 0_DSYNC-Flag. Der Plattenprozess 14 antwortet mit dem Ergebnis der offenen Datei und dem zugelassenen Cachespeicherungszustand.
- - Close Request (Schließanforderung): Das Dateisystem 33 fordert die Schließung der Datei für einen Prozess an. In einigen Fällen nimmt das Dateisystem 33, wie nachstehend erläutert, die sich ergebende Änderung in Cachespeicherungszustand vorweg vor.
- - Write Request (Schreibanforderung): Das Dateisystem 33 fordert, dass der der Anforderung hinzugefügte Datenblock auf das Plattenvolumen 18 geschrieben wird. Der Plattenprozess 14 fügt den Cachespeicherungszustand in die Antwort mit ein.
- - Read Request (Leseanforderung): Das Dateisystem 33 fordert, dass ein Datenblock von dem Plattenvolumen 18 gelesen wird. Der Plattenprozess 14 fügt den Cachespeicherungszustand in den gelesenen Datenblock ein.
- - Lseek Request (Suche-Position-Anforderung): Das Dateisystem 33 fordert, dass der Dateizeiger auf die spezifizierte Position in der Partei bewegt wird.
- - Getpos Request (Hole-Position-Anforderung): Das Dateisystem 33 fordert die aktuelle Position des Dateizeigers von dem Plattenprozess 14 an.
- - Truncate Request (Abbruchanforderung): Das Dateisystem 33 fordert, dass die Datei zum Lesen/Schreiben geöffnet wird und dass die Datei geleert wird. Dies erfordert, dass in Cachespeicher gespeicherte Lesevorgänge gelöscht werden, da sie nicht mehr gültig sind.
- - Cache Recall (Cachespeicher-Wiederaufruf): Der Plattenprozess 14 fordert von dem Cachespeichermanager 32, dass der Cachespeicher für eine Datei wieder aufgerufen und dessen Cachespeicherungszustand heruntergestuft wird. Da diese Anforderung von dem Plattenprozess 14 aus erfolgt, ist sie asynchron, d. h., der Plattenprozess 14 wartet nicht, bis der Prozessor eine Anforderung an die Datei macht.
- Die von dem Dateisystem 33 ausgeführten Anforderungen erfolgen als Antwort auf Aufrufe durch ein Prozess 30 oder von dem Cachespeichermanagerprozess 32. Für jeden Aufruf bearbeitet das Dateisystem 33 entweder den Aufruf aus dem Cachespeicher 36 und der VTABLE 34, oder das Dateisystem 33 formuliert eine IPC-Meldung für die Anforderung und sendet die Meldung an den Plattenprozess 14. Die Cachespeicher-Wiederaufrufanforderungen werden von dem Plattenprozess 14 initialisiert und gehen an den Cachespeichermanager 32.
- In einer spezifischen Ausführungsform ist der Cachespeicher 36 in Blöcke von 4K Bytes unterteilt und jeder Eintrag (VNODE) VTABLE 34 zeigt auf den ersten Cachespeicherblock in einer Verbindungsliste von Speicherblöcken. Die nicht benutzen Blöcke können auch mittels einer Verbindungsliste nicht benutzter Blöcke verfolgt werden. VTABLE enthält einen VNODE- Eintrag für jede von dem Prozessor 12 geöffnete Datei, (d. h., jede von einem oder mehreren Prozessen 30 des Prozessors 12). Für jeden VNODE führt VTABLE 34 die nachstehenden Felder:
- - File ID (Datei-ID): Oft wird eine Verarbeitungsnummer anstelle eines Dateinamens verwendet.
- - CACHE STATE (Cachespeicherungszustand): Dieser ist einer von:
- -- Keine Cachespeicherung (am stärksten einschränkender Zustand)
- -- Lese-Cachespeicherung
- -- Lese/Schreib-Cachespeicherung (am wenigsten einschränkender Zustand)
- - LINKED LIST HEAD (Verbindungslistenkopf): Zeigt auf in Cachespeicher gespeicherte Blöcke der Datei,
- - OPEN ATTRIBUTES (Offen-Attribute): diese sind für die offene Datei spezifische Variable, welche vorstehend diskutiert wurden, wie z. B. eine Dateizeigerposition, Zugriffstyp usw.
- Tatsächlich kann die Datei einen vierten Cachespeicherungszustand aufweisen: "nicht offen", wobei dieses aber kein in VTABLE gefundener Zustand ist, da er nur Einträge für Dateien enthält, welche offen sind.
- Der Cachespeichermanager 32 und das Dateisystem 33 führen auch eine Cachespeicherungs-Reihenfolgenummer (SEQNO). Diese Nummer wird als eine Markierung für die verschiedenen Kommunikationen zwischen dem Cachespeichermanager 32, dem Dateisystem 33 und dem Plattenprozess 14 verwendet, so dass diese Prozesse die korrekte Reihenfolge für die Reaktion auf Anforderungen bestimmen können.
- Fig. 3 ist ein Zustandsdiagramm, welches die Zustände einer Datei und die Übergangsereignisse darstellt, welche den Übergang von Zustand zu Zustand bewirken. Der Zustand einer Datei ist derselbe über alle Prozessoren hinweg, welche die Datei offen haben, obwohl einige Prozessoren den Zustand noch eventuell nicht hochgestuft haben. Ein Zustand einer Datei wird hochgestuft, indem sie von einem eingeschränkteren Zustand in einen weniger eingeschränkten Zustand geändert wird, und die Herunterstufung ist das Gegenteil der Hochstufung. Für diejenigen Prozessoren, bei welchen die Datei nicht offen ist, ist der Zustand "nicht offen". Zur Vereinfachung beziehen die Übergangsereignisse von Fig. 3 nur zwei Prozessoren A und B ein, obwohl es aus der Figur offensichtlich sein sollte, dass sich das Zustandsdiagramm für ein Multiprozessorsystem mit mehr als zwei Prozessoren ergibt, indem lediglich die Bezeichnung "Prozessor B" in "irgend einen anderen Prozessor als Prozessor A" geändert wird. Die dargestellten Zustände gelten für eine Datei auf dem Prozessor A (und irgendeinem anderen Prozessor, welcher die Datei geöffnet hat, wenn, und nur dann, wenn der Prozessor A die Datei geöffnet hat).
- Die Übergänge sind wie folgt:
- Dieser Übergang tritt auf, wenn der Prozessor A die Datei zum Lesen öffnet und der Prozessor B die Datei bereits zum Lesen/Schreiben geöffnet hat. Dieser Übergang tritt ebenfalls auf, wenn A die Datei zum Lesen/Schreiben öffnet und der Prozessor B die Datei bereits (zum Lesen oder Lesen/Schreiben) geöffnet hat. Wenn ein Schreiber die Datei offen hat, und sich nicht alle Öffner auf demselben Prozessor befinden, ist keine Cachespeicherung erlaubt, da die Prozesse nicht dieselben Daten "sehen" könnten. Dieses Problem würde auftreten, wo ein Prozess glaubt, dass er die Daten geschrieben hat, aber immer noch in dem Cachespeicher ist, und der eine Prozess eine Anforderung an einen weiteren Prozess signalisiert, die Daten zu lesen. Dieser andere Prozess wäre, wenn er sich auf einem anderen Prozessor befindet, nicht in der Lage, die aktualisierten Daten zu lesen, so dass er veraltete Daten auslesen würde. Wenn sich alle Prozesse auf demselben Prozessor befinden, kann dieser Prozessor die Prozesswechselwirkung intern steuern, so dass ein Leser die neuesten Daten entweder von der Platte oder aus dem Cachespeicher liest, welche für den Prozessor lokal ist, aber zwischen Prozessen auf diesem Prozessor aufgeteilt ist.
- Der Prozessor A verfolgt nicht die offenen Dateien auf dem Prozessor B, erfährt aber von dem Plattenprozess 14 in der Antwort auf die open()-Anforderung, dass die Datei nicht im Cachespeicher gespeichert werden kann. Der. Plattenprozess 14 bearbeitet als Teil der open()-Anforderung auch den Wiederaufruf des Cachespeichers aus dem Prozessor B, wenn er die Datei im Cachespeicher speichert. Für einen Wiederaufruf wird der Cachespeicher gelöscht, d. h., alle Blöcke, die sich in einem Lese-Cachespeicher befinden, werden aus dem Cachespeicher 36 entfernt, und alle Blöcke, welche sich in dem Schreib-Cachespeicher befinden, werden an den Plattenprozess 14 gesendet.
- Wenn eine Datei von einem Prozessor in einem entfernt angeordneten Multiprozessorsystem geöffnet wird, wird keine Cachespeicherung von Daten für diese Datei erlaubt.
- Dieser Übergang tritt auf, wenn der Prozessor A die Datei zum Lesen öffnet und der Prozessor B, wenn er irgendwelche Dateien offen hat, diese nicht zum Lesen/Schreiben offen hat. Der Prozessor A wird über diesen Cachespeicherungszustand in der Antwort auf die open-Anforderung informiert.
- Wenn der Prozessor A die Datei zum Lesen/Schreiben öffnet und entweder das 0_DSYNC-Flag für die offene Datei oder das S_NONSTOP-Flag für die Datei gesetzt sind, wird die Datei ohne Schreib-Cachespeicherung geöffnet (aber möglicherweise mit Lese-Cachespeicherung). Zur Vereinfachung wird in einigen Ausführungsformen die Schreib-Cachespeicherung an allen Prozessoren gesperrt, wenn irgendein Prozessor die Datei öffnet, während das 0_DSYNC-Flag gesetzt ist. Wenn das S_NONSTOP-Flag gesetzt ist, werden die an dem Plattenprozess 14 gesendeten Aktualisierungen überprüft. Überprüfen ist der Prozess einer synchronen Aktualisierung von Backup-Prozessen (Backup-Plattenprozess 14' in diesem Falle) vor dem Abschluß einer Aktion.
- Dieser Übergang erfolgt, wenn der Prozessor A die Datei zum Lesen/Schreiben öffnet und der Prozessor B die Datei nicht offen hat. Der Prozessor A wird über diesen Cachespeicherungszustand in der Antwort auf die Öffnungsanforderung informiert.
- Diese drei Übergänge treten auf, wenn der Prozessor A als letzter die Datei schließt. Der Prozessor A behandelt diese als Herunterstufungen, da sie erfordern, dass die Cachespeicher als Teil des Schließprozesses geleert werden. Nach dem Leeren löscht der Prozessor A den entsprechenden VNODE aus VTABLE 34.
- Dieser Übergang tritt auf, wenn der Prozessor B die Datei zum Lesen oder Lesen/Schreiben öffnet. Der Prozessor A wird auf diese Herunterstufung über eine Cachespeicher-Wiederaufrufmeldung aufmerksam gemacht.
- Dieser Übergang tritt auf, wenn der Prozessor B die Datei zum Lesen/Schreiben öffnet. Wenn der Prozessor A nur eine Lese-Cachespeicherung durchführt, ist es dann kein Problem, wenn der Prozessor B die Datei liest, wenn jedoch der Prozessor B die Datei beschreibt, kann der Prozessor A die Datei nicht im Cachespeicher speichern. Der Prozessor A wird auf diese Herunterstufung über eine Cachespeicher- Wiederaufrufmeldung aufmerksam gemacht.
- Dieser Übergang ist eine Hochstufung, welche auftritt, wenn der letzte Öffner auf dem Prozessor B die Datei schließt. Der Plattenprozess 14 wartet bis zu dem nächsten Zugriff auf die Datei durch den Prozessor A, um den Prozessor A über die Hochstufung zu informieren. Somit kann für eine bestimmte Zeit der Prozessor A nicht auf dem aktuellen Stand sein und einen restriktiveren Cachespeicherungszustand aufweisen, als erforderlich ist. Natürlich könnte der Plattenprozess 14 einen Zusatzaufwand betreiben und eine Meldung an den Cachespeichermanager 32 senden, welcher ihn über die Hochstufung informiert, wobei aber dieser Overhead nicht viel Gewinn bringt, da der Cachespeicher bei dem nächsten Zugriff aktualisiert wird. Da die Datei nicht im Cachespeicher gespeichert wurde, bedeutet dies, dass die erste E/A-Anforderung nach der Hochstufung die Hochstufung erfaßt.
- Dieser Übergang wird in ähnlicher Weise zu dem vorherigen bearbeitet. Er tritt auf, wenn der letzte Schreiber auf dem Prozessor B die Datei schließt.
- Dieser Übergang tritt auf, wenn der letzte Schreiber auf dem Prozessor A die Datei schließt, aber andere Prozesse die Datei noch zum Lesen geöffnet haben. Da dieser Übergang vollständig von dem Prozessor A vorhergesagt werden kann (d. h., es erfordert keine Information über den Prozessor B), führt der Prozessor A die Herunterstufung synchron mit der Anforderung aus, und der Plattenprozess 14 nimmt an, dass der Prozessor darauf achtet, und spart damit eine Meldung ein.
- Dieser Übergang tritt auf, wenn der Prozessor A die Datei zum Lesen geöffnet hat und der Prozessor B nicht und der Prozessor A zuerst die Datei zum Lesen/Schreiben öffnet. Wenn der Prozessor A zuerst die Datei zum Schreiben öffnet, weiß er, dass sich der Cachespeicherungszustand ändern wird, und übergibt die ausschließliche Steuerung von VNODE an den Cachespeichermanager 34. Der Cachespeicherungszustand wird entweder auf Schreib-Cachespeicherung hochgestuft, wenn der Prozessor B die Datei nicht offen hat, oder er wird heruntergestuft, wenn der Prozessor B die Datei offen hat.
- Aufgrund der asynchronen Verarbeitung der Änderung des Cachespeicherungszustandes müssen sie in einer Reihenfolge durchgeführt werden, um eine Verarbeitung außerhalb der Folge zu vermeiden. Daher enthält jede Anforderung, welche eine Änderung des Cachespeicherungszustands beinhaltet, ebenfalls eine Cachespeicherungs-Reihenfolgenummer (seqno). Da der Plattenprozess entscheidet, wann die Zustandsänderungen auftreten, inkrementiert er die Reihenfolgenummer, obwohl die Cachespeichermanager 32 auf den verschiedenen Prozessoren ebenfalls den Wert speichern. Das Dateisystem 33 verarbeitet keine Änderung des Cachespeicherungszustandes, wenn die Veränderungen eine Reihenfolgenummer kleiner als die aktuelle Reihenfolgenummer haben, da diese Veränderungen bereits implementiert worden sind, da der Plattenprozess 14 die Reihenfolgenummer nur inkrementiert, nachdem alle Veränderungen für diese Reihenfolgenummer erfolgreich abgeschlossen worden sind.
- Wenn das Dateisystem 33 eine Anforderung sendet, welche einen Cachespeicherungszustand verändern könnte, enthält die Anforderung die Reihenfolgenummer des Dateisystems (das Dateisystem kann eine Reihenfolgenummer pro offene Datei verwalten, es reicht aber aus, eine Reihenfolgenummer pro Prozessor zu verwalten). Wenn die Reihenfolgenummer kleiner als die aktuelle Reihenfolgenummer ist, verarbeitet der Plattenprozess 14 die Anforderung, wenn aber die Reihenfolgenummer größer als die aktuelle Reihenfolgenummer ist, legt der Plattenprozess 14 die Anforderung in eine Warteschlange. Der letztere Fall ist möglich, wenn ein Prozess eine Anforderung macht, aber der Cachespeichermanager noch nicht eine Cachespeicher-Wiederaufrufsverarbeitung abgeschlossen hat.
- Das Nachstehende ist eine Beschreibung des Ablaufs von Ereignissen, welche für mehrere Szenarien auftreten, in welchem ein Cachespeicher-Wiederaufruf erfolgt. Wie vorstehend nimmt die Beschreibung an, dass die Aktivität bei einem Prozessor A auftritt und dass ein Prozessor B ebenfalls Teil des Multiprozessorsystems ist. Wie offensichtlich sein dürfte, geht dadurch die Allgemeingültigkeit nicht verloren.
- 1. Anforderungen mit einer Reihenfolgenummer größer als der aktuellen Reihenfolgenummer sind unmöglich, da der Prozessor synchron mit dem Plattenprozess 14 aktualisiert wird. Wenn der Prozessor A eine derartige Anforderung sendet, wird er von dem Plattenprozess 14 angehalten, um eine weitere Zerstörung zu verhindern.
- 2. Jede Anforderung kann von dem Plattenprozess 14 verarbeitet werden, wenn sie ankommt und nicht in eine Warteschlange eingereiht werden muss.
- 1. Das Dateisystem 33 des Prozessor A nimmt die Möglichkeit eines Cachespeicherwiederaufrufs vorweg, und erwirbt vor dem Senden einer Meldung an den Plattenprozess 14 exklusive Rechte für die Modifikation des VNODE der Datei.
- Eine Möglichkeit zur Steuerung der exklusiven Rechte besteht über ein exklusives VNODE-Signal. Dieses ist ein einem VNODE zugeordnetes Flag, welches von einem Prozess gesetzt wird, welcher die ausschließliche Schreibsteuerung des VNODE haben möchte und zurückgesetzt wird, wenn der Prozess keine exklusive Schreibsteuerung mehr ermöglicht. Natürlich kann ein Prozess das Flag nicht setzen, wenn es bereits von einem anderen Prozess gesetzt ist. Wenn dies der Fall ist, "blockiert" üblicherweise der letztere Prozess und wartet auf das Rücksetzen des Flags, worauf er dann die Exklusivität durch Setzen des Flags erwirbt.
- 2. Die Öffnungsanforderung wird verarbeitet und mit dem neuen Cachespeicherungszustand (welcher "Keine Cachespeicherung" ist) und der neuen Cachespeicherungs- Reihenfolgenummer beantwortet. Die aktuelle Reihenfolgenummer bei dem Plattenprozess 14 ist immer noch die Reihenfolgenummer wie unmittelbar vor dem Wiederaufruf, da sie nicht aktualisiert wird, bis die gesamte Änderung des Cachespeicherungszustands abgeschlossen ist. Somit ist es für den Prozessor A möglich, den Wiederaufruf zu bearbeiten und mehrere Anforderungen an den Plattenprozess 14 zu senden, bevor andere Prozessoren auf den Widerruf reagiert haben. In diesem Falle haben die Anforderungen die höhere (um eins) Cachespeicherungs-Reihenfolgenummer und werden von dem Plattenprozess 14 in eine Warteschlange eingereiht.
- 3. Wenn der Prozessor B Daten für die Datei in dem Cachespeicher speichert, sendet der Plattenprozess 14 seine Cachespeicher-Wiederaufrufsanforderung (d. h., an alle anderen Prozessoren, welche Daten für die Datei in dem Cachespeicher speichern, wird die Anforderung gesendet). Der neue Zustand ist immer "Keine Cachespeicherung" und es werden keine Cachespeicher-Widerrufmeldungen an Prozessoren gesendet, welche die Datei nicht im Cachespeicher speichern (üblicherweise weil sie niemals etwas über eine Cachespeicherungszustandhochstufung erfahren haben).
- 4. Der neue Cachespeicherungszustand und die Reihenfolgenummer werden für alle Prozessoren unabhängig davon gesetzt, ob ihnen der Wiederaufruf mitgeteilt wurde oder nicht.
- 5. Die Cachespeicherungs-Reihenfolgenummer wird zu der aktuellen Reihenfolgenummer gemacht, sobald der gesamte Wiederaufruf abgeschlossen ist.
- 1. Eine Anforderung, welche die Wiederaufruf-Reihenfolgenummer enthält, wird von dem Plattenprozess 14 in eine Warteschlange eingereiht, da sie von einem Prozessor kam, welche auf dem neusten Stand ist, aber die anderen Prozessoren als noch nicht auf dem neuesten Stand bestätigt sind.
- 2. Eine Anforderung mit einer Reihenfolgenummer kleiner als die Wiederaufruf-Reihenfolgenummer wird nicht verarbeitet und der Plattenprozess 14 antwortet mit der Wiederaufruf- Reihenfolgenummer und dem neuen Zustand (welcher immer "Keine Cachespeicherung" ist). Auf diese Antwort muss nicht unmittelbar von dem Dateisystem reagiert werden, da es nicht in der Lage sein könnte, das exklusive VNODE-Signal zu erfassen. Der Plattenprozess 14 weiß jedoch, wenn er abgeschlossen ist, da der Prozessor auf die Wiederaufrufanforderung antwortet.
- 3. Eine Anforderung kann keine Reihenfolgenummer aufweisen, welche größer als die Wiederaufruf-Reihenfolgenummer ist. Der Plattenprozess 14 hält einen Prozessor an, wenn er eine derartige Anforderung sendet.
- 4. Das erste Öffnen (first open) von einem Prozessor erfordert keine Reihenfolgenummer. Diese Anforderung wird verarbeitet, und ihr ein Cachespeicherungszustand "Keine Cachespeicherung" gegeben.
- 1. An diesem Punkt haben alle Prozessoren ihre Kopie des Cachespeicherungszustandes aktualisiert und haben für diesen Zweck dem Plattenprozess 14 geantwortet.
- 2. Der Plattenprozess 14 macht die Wiederaufruf- Reihenfolgenummer zu der aktuellen Reihenfolgenummer.
- 3. Die Cachespeicherungszustände aller Prozessoren werden neu berechnet. Wenn ein Zustand hochgestuft wird (aufgrund einer Schließung oder eines Prozessorfehlers während der Wiederaufrufprozedur) wird er hochgestuft und die Reihenfolgenummer nochmals inkrementiert.
- Der Plattenprozess 14 bearbeitet Anforderungen bezüglich einer Datei auf dem Prozessor A wie folgt:
- Wenn der Prozessor B eine Schreib-Cachespeicherung der Datei ausführt, wenn der Prozessor A eine Öffnungsanforderung sendet, schließt der Plattenprozess 14 einen Cachespeicher- Wiederaufruf ab, bevor er die Öffnungsanforderung abschließt und antwortet.
- Wenn die Anforderung des Prozessors A für eine Lese/Schreiböffnung ist und der Prozessor B eine Lese- Cachespeicherung durchführt, schließt der Plattenprozess 14 einen Cachespeicher-Wiederaufruf ab, bevor er die Öffnungsanforderung abschließt und auf diese antwortet. Wenn der Prozessor A bereits ein eine Lese-Cachespeicherung ausführender Prozessor ist, nimmt er den möglichen Bedarf für einen Widerruf vorweg. Wenn ein Wiederaufruf gerechtfertigt ist, informiert der Plattenprozess 14 den Prozessor A in der Antwort auf die Öffnung, und der Prozessor A sollte in der Lage sein, die Herunterstufung des Cachespeichers synchron zu bearbeiten.
- Wenn der Prozessor A eine Cachespeicherung der Datei durchführt und der Prozessor A die endgültige Schließung der Datei sendet, muss der Cachespeicher für diese Datei ungültig gemacht werden. Das Dateisystem 33 nimmt dieses vorweg und erfaßt das exklusive VNODE-Signal bevor es die Schließmeldung an den Plattenprozess 14 sendet. Dieses garantiert, dass das Dateisystem 33 den Cachespeicherungszustand synchron mit dem Empfang der Schließantwort herunterstufen kann.
- Ebenso muss dann, wenn der Prozessor A eine Lese/Schreib- Cachespeicherung durchführt und die aktuelle Anforderung eine Schließanforderung für die letzte schreibgeöffnete Datei (aber nicht für die letzte offene) ist, der Cachespeicher heruntergestuft werden. Wiederum nimmt das Dateisystem 33 die Notwendigkeit der Erfassung des exklusive VNODE-Signals vorweg und führt die Herunterstufung des Cachespeicherungszustandes vor dem Senden der Anforderung aus.
- Die Cachespeicherungs-Reihenfolgenummer in der Schließanforderung wird nicht verwendet, da alle Schließ-Anforderungen unmittelbar bearbeitet werden.
- Leseanforderungen sind von einem Prozessor mit einem Cachespeicherungszustand von "Keine Cachespeicherung" und "Lese-Cachespeicherung" zulässig. Lese-Anforderung sind von einem Prozessor unzulässig, welcher eine Lese/Schreib- Cachespeicherung durchführt, weil er Blockleseanforderungen durchführen sollte, welche mit dem Cachespeicher 36 verglichen werden, bevor sie verarbeitet werden. Um Nutzen aus der Cachespeicherung zu ziehen, sollten Leseanforderungen aus einem eine Lese-Cachespeicherung ausführendem Prozessor ebenfalls Blockleseanforderungen sein.
- Leseanforderungen mit einer Reihenfolgenummer gleich der aktuellen Reihenfolgenummer werden verarbeitet, sofern nicht die vorstehenden Regeln verletzt werden.
- Leseanforderungen mit einer Reihenfolgenummer kleiner als der aktuellen werden immer verarbeitet. Selbst wenn der erzeugende Prozessor eine Lese/Schreib-Cachespeicherung durchführt, wird diese Anforderung verarbeitet, weil, damit dies erfolgt, der erzeugende Prozessor nicht die Benachrichtigung zur Hochstufung des Cachespeicherungszustandes auf den Lese/Schreib-Cachespeicherungszustand verarbeitet haben kann.
- Leseanforderungen mit einer Reihenfolgenummer größer als der aktuellen werden in eine Warteschlange eingereiht. Dieses sind nur von Prozessoren möglich, welche sich an einem Cachespeicher-Wiederaufruf beteiligen.
- Blockleseanforderungen sind von nur Prozessoren zulässig, welche keine Lese-Cachespeicherung oder Lese/Schreib- Cachespeicherung durchführen. Blockleseanforderungen sind (unabhängig von der Reihenfolgenummer) immer von Prozessoren ohne Cachespeicherung unzulässig, da entweder der Plattenprozess 14 niemals den Prozessor benachrichtigt hat, dass er eine Cachespeicherung durchführen könnte oder der Plattenprozess 14 einen Cachespeicher-Widerruf durchführte. In dem letzteren Falle aktualisiert der Plattenprozess 14 nur den Cachespeicherungszustand, nachdem das Dateisystem 33 die Änderung des Cachespeicherungszustands verarbeitet hat.
- Blockleseanforderungen mit einer Reihenfolgenummer gleich der aktuellen werden verarbeitet, so lange die vorstehenden Regeln nicht verletzt werden.
- Blockleseanforderungen mit einem Reihenfolgenummer kleiner oder größer als der aktuellen sind nicht möglich, da die Veränderung des Cachespeicherungszustand in einem eine Cachespeicherung ausführendem Prozessor immer synchron erfolgt.
- Schreibanforderungen von eine Lese-Cachespeicherung ausführenden Prozessoren sind unzulässig. Eine Schreibanforderung mit einer Reihenfolgenummer gleich oder kleiner als der aktuellen wird verarbeitet, sofern nicht die Anforderung unzulässig ist.
- Man beachte, dass der Plattenprozess 14 keine Schreibanforderung verarbeiten kann, wenn er nicht das EOF für die Datei besitzt.
- Eine Schreibanforderung mit einer Reihenfolgenummer größer als der aktuellen wird in eine Warteschlange eingereiht. Eine derartige Anforderung könnte auftreten, wenn sich der anfordernde Prozessor an einem Cachespeicher-Wiederaufruf beteiligt.
- Blockschreibanforderungen sind aus einem Prozessor nur für eine Datei zulässig, welche einen Cachespeicherungszustand der Lese/Schreib-Cachespeicherung aufweist. Blockschreibanforderungen sind (unabhängig von der Reihenfolgenummer) immer unzulässig von Prozessoren, welche keine Lese/Schreib- Cachespeicherung ausführen, da dazu entweder der Plattenprozess 14 niemals dem Prozessor meldete, dass er eine Lese/Schreib-Cachespeicherung durchführen könnte, oder der Plattenprozess 14 einen Cachespeicher-Wiederaufruf ausführte. In dem letzteren Falle aktualisiert der Plattenprozess 14 nur den Cachespeicherungszustand, nachdem das Dateisystem 33 die Änderung des Cachespeicherungszustands verarbeitet hat.
- Blockschreibanforderungen mit einer Reihenfolgenummer gleich der aktuellen werden verarbeitet, sofern nicht die vorstehenden Regeln verletzt werden.
- Blockschreibanforderungen mit einer Reihenfolgenummer kleiner oder größer als der aktuellen sind nicht möglich, da die Änderung des Cachespeicherungszustandes in einem Prozessor mit Cachespeicherung immer synchron erfolgt.
- Typischerweise werden die Position des Dateizeigers und das 0_APPEND-Flag durch das Dateisystem 33 in einem Cachespeicher gespeichert.
- Nach einer Verzweigung und Ausführung über verschiedene Prozessoren hinweg können die offenen Dateien über die Prozessoren verteilt sein. In diesen Fällen kann die Position nicht von dem Dateisystem 33 verfolgt werden, da mehr als ein Dateisystem involviert ist. Somit verfolgt der Plattenprozess 14 die Position. Wenn sich die offene Datei in eine zurückverwandelt, die nicht mehr über Prozessoren verteilt ist, gibt der Prozess 14 die Position an das Dateisystem 33 zurück.
- Falls von dem Dateisystem 33 benötigt oder angefordert oder erwünscht, wird die Position synchron an den Plattenprozess 14 zu dem Ausführungszeitpunkt über eine "Leite Öffnungs-Anforderung weiter" übergeben. Die Position wird asynchron an das Dateisystem 33 über die Antworten die nachstehenden Anforderungen übergeben: Öffnen, Lesen, Schreiben, Suche-Position (Lseek), Hole Position (Getpos), übergeben.
- Die Cachespeicherung von Daten führt zu einer Anzahl von Problemen, welche durch die vorliegende Erfindung gelöst werden. Beispielsweise gehen dann, wenn ein eine Lese/Schreib- Cachespeicherung ausführender Prozessor ausfällt, alle im Cachespeicher gespeicherten schmutzigen (in dem Cachespeicher geschriebenen aber nicht auf die Platte geschriebenen) Dateiblöcke und die im Cachespeicher gespeicherte schmutzige EOF (Dateieendeposition) verloren. Der Plattenprozess 14 muss dann annehmen, dass die momentan der Datei zugeordnete EOF (in dem Datei-Label) die korrekte ist, und die Verarbeitung fortsetzen.
- Ohne spezielle Vorsichtsmaßnahmen könnte dieses Prozessorausfall-Szenario "Löcher" in der Datei hinterlassen. Ein Loch ist ein Bereich in der Datei vor der EOF, welche Mülldaten enthält. Um unerwartete Konsequenzen zu vermeiden, stellt der Plattenprozess 14 sicher, dass jedes Byte vor der EOF entweder explizit von einem Prozess geschrieben wird oder dieser mit "00" Bytes aufgefüllt wird. Um derartige Löcher zu vermeiden, verbietet der Prozess 14 Schreibvorgänge außerhalb der in dem Datei-Label gespeicherten EOF. Der Plattenprozess 14 aktualisiert die EOF in der Dateimarkierung jedesmal, wenn ein Schreibvorgang außerhalb der EOF in dem Datei-Label endet. Mit anderen Worten, das Dateisystem 33 muss die schmutzigen Blöcke zum Plattenprozess 14 in aufsteigender Reihenfolge schreiben.
- Ein weiteres Problem ist, wenn ein die Position im Cachespeicher speichernder Prozess ausfällt. In diesem Falle wird dann, wenn nur ein Prozessor die Position im Cachespeicher speichert, nur die Position für diesen Prozessor ohne weitere Konsequenz verloren. Wenn sich mehr als ein Prozessor eine offene Datei teilen, ist die Position nicht in einem Cachespeicher gespeichert und ist nicht verloren, wenn einer der Prozessoren ausfällt.
- Wenn 0_DSYNC wahr ist, verfolgt der Plattenprozess 14 die schmutzigen Daten oder die schmutzige EOF für diese offene Datei im Speicher nicht. Schmutzige Daten und die EOF- Aktualisierungen werden auf die Platte geschrieben, bevor die Anforderung beantwortet wird. Man beachte, dass weitere Non_0_DSYNC-schreibgeöffnete Dateien bestehen können; derartig geöffnete Dateien schreiben ihre Daten und EOF- Aktualisierungen nicht weiter.
- Wenn 0_DSYNC wahr ist, erlaubt der Plattenprozess 14 keine Lese/Schreib-Cachespeicherung der Datei, da es keinen Sinn macht, für den Overhead des Schreibvorgangs während jeder Aktualisierung im Plattenprozess 14 zu bezahlen, während schmutzige Daten in dem Öffnerprozessor gepuffert werden.
- Die Zeitwerte werden immer auf die Platte geschrieben, bevor sie an den Anforderer gesendet werden. Daher gibt es keine Fehlertoleranz-Bedenken mit den in Cachespeicher gespeicherten Zeitpunkten.
- Die vorstehende Beschreibung ist veranschaulichend und nicht einschränkend. Viele Varianten der Erfindung werden für den Fachmann auf diesem Gebiet nach der Betrachtung dieser Offenbarung offensichtlich sein. Der Schutzumfang der Erfindung sollte deshalb nicht durch Bezugnahme auf die vorstehende Beschreibung bestimmt sein, sondern sollte statt dessen durch Bezugnahme auf die beigefügten Ansprüche zusammen mit deren Äquivalenten bestimmt sein.
Claims (8)
1. Multiprozessorsystem mit einem verteilten
Cachespeicher, aufweisend:
- eine Mehrzahl von Prozessoren (12A, 12B, 12C), wovon
jeder Prozessor eine Plattenzugriffseinrichtung (33) und
einen Cachespeicher (36) aufweist;
- ein Plattensystem (14, 18), welches Daten in Dateien
speichert und auf welches zum Lesen und Schreiben über
die Plattenzugriffseinrichtung (33) von jedem der
Mehrzahl der Prozessoren zugegriffen wird;
- wobei der Cachespeicher (36) jedes Prozessors ferner
eine Einrichtung (32) zum Identifizieren eines
Cachespeicherzustandes von jeder von dem entsprechenden
Prozessor geöffneten Datei aufweist, wobei eine Datei die
Einheit ist, für welche ein Cachespeicherzustand
aufrechterhalten wird;
wobei das Plattensystem (14, 18) aufweist:
- eine Einrichtung (22) zum Senden einer Cachespeicher-
Herunterstufungsmeldung an die Prozessoren (12A, 12B,
12C), welche die Datei geöffnet haben und sie im Cachespeicher
speichern, wobei die Einrichtung (22)
betreibbar ist, wenn ein erster von den Prozessoren eine Datei
für einen Lese/Schreib-Zugriff öffnet und ein zweiter
von den Prozessoren die Datei geöffnet hat, oder wenn
ein erster von den Prozessoren die Datei zum Lesen
öffnet und ein zweiter von den Prozessoren die Datei
bereits für einen Lese/Schreib-Zugriff geöffnet hat, wobei
die Herunterstufungsmeldung zu einem Zustand ohne
Cachespeicherung führt, in welchem es keinem von den
Prozessoren gestattet ist, diese Datei in einem Cachespeicher
zu speichern; und
- eine Einrichtung (22) zum Anzeigen, dass eine
Chachespeicherung einer Datei zulässig ist, wenn keiner von
den Prozessoren diese Datei für einen
Lese/Schreib-Zugriff geöffnet hat.
2. System nach Anspruch 1, wobei der
Cachespeicherungszustand einer von (a) dem Zustand ohne Cachespeicherung,
(b) einem Lese-Cachespeicherungszustand ist, in welchen es
den Prozessoren gestattet ist, eine Lese-Cachespeicherung
an der Datei auszuführen, und (c) ein
Lese/Schreib-Cachespeicherungszustand ist, in welchem nur ein Prozessor die
Datei geöffnet hat und es diesem Prozessor gestattet ist,
eine Cachespeicherung der Datei zum Lesen und Schreiben
auszuführen.
3. System von Anspruch 1 oder 2, wobei die Einrichtung
(22) zum Senden der Herunterstufungsmeldung so betreibbar
ist, dass sie die Herunterstufungsmeldung ausschließlich
30 an die Prozessoren sendet, welch die Datei geöffnet haben
und die Daten bereits im Cachespeicher speichern.
4. System nach einem der Ansprüche der 1 bis 3, wobei die
Einrichtung (22) zum Senden der Herunterstufungsmeldung
unabhängig auf eine Anforderung hin, welche von
irgendeinem der Prozessoren (12A, 12B, 12C) bezüglich der Datei
erfolgt, betreibbar ist.
5. Verfahren zum Anzeigen eines Cachespeicherzustandes für
eine Datei in einem Multiprozessorsystem mit mehreren
Prozessoren (12A, 12B, 12C), in welchem Dateien von einem
Plattensystem (14, 18) gespeichert werden und in welchem
jeder von den Prozessoren (12A, 12B, 12C) einen
Cachespeicher unterhält;
- wobei eine Cachespeicher-Herunterstufungsmeldung an die
Prozessoren (12A, 12B, 12C) gesendet wird, welche die
Datei geöffnet haben und sie im Cachespeicher speichern,
um den Cachespeicherzustand von einem Zustand, in
welchem die Cachespeicherung zulässig ist, auf einen
Zustand ohne Cachespeicherung herunterzustufen, in welchem
es keinem der Prozessoren (12A, 12B, 12C) gestattet ist,
eine Cachespeicherung der Datei auszuführen, wobei die
Herunterstufungsmeldung gesendet wird, wenn ein erster
von den Prozessoren die Datei für einen Lese/ Schreib-
Zugriff öffnet und ein zweiter von den Prozessoren die
Datei geöffnet hat, oder wenn ein erster von den
Prozessoren die Datei zum Lesen öffnet und ein zweiter von den
Prozessoren die Datei bereits für einen Lese/ Schreib-
Zugriff geöffnet hat; und
- wobei es angezeigt wird, dass die Datei im Cachespeicher
gespeichert werden kann, wenn keiner von den Prozessoren
diese Datei für einen Lese/Schreib-Zugriff geöffnet hat.
6. Verfahren nach Anspruch 5, wobei der
Cachespeicherungszustand einer von (a) dem Zustand ohne Cachespeicherung,
(b) einem Lese-Cachespeicherungszustand ist, in welchen es
den Prozessoren gestattet ist, eine Lese-Cachespeicherung
an der Datei auszuführen, und (c) einem
Lese/Schreib-Cachespeicherungszustand ist, in welchem nur ein Prozessor
die Datei geöffnet hat und es diesem Prozessor gestattet
ist, eine Cachespeicherung der Datei zum Lesen und
Schreiben auszuführen.
7. Verfahren nach Anspruch 5 oder 6, wobei eine
Cachespeicher-Rückmeldung für die Anzeige der Herunterstufung des
Speicherzustandes an die Prozessoren (12A, 12B, 12C)
gesendet wird, aber nicht an Prozessoren, welche die Datei
nicht geöffnet haben oder die bereits die Datei nicht mehr
im Cache speichern.
8. Verfahren nach einem der Ansprüche 5 bis 7, wobei die
Herunterstufungsmeldung an die Prozessoren unabhängig von
einer Anforderung von irgendeinem der Prozessoren
bezüglich der Datei gesendet wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US37931195A | 1995-01-23 | 1995-01-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69621263D1 DE69621263D1 (de) | 2002-06-27 |
DE69621263T2 true DE69621263T2 (de) | 2002-12-19 |
Family
ID=23496721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69621263T Expired - Lifetime DE69621263T2 (de) | 1995-01-23 | 1996-01-15 | Verteilter Datencachespeicher für Multiprozessorsystem mit Cachespeicher |
Country Status (5)
Country | Link |
---|---|
US (1) | US5835942A (de) |
EP (1) | EP0723230B1 (de) |
JP (1) | JPH0922384A (de) |
CA (1) | CA2167780A1 (de) |
DE (1) | DE69621263T2 (de) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11120048A (ja) * | 1997-10-20 | 1999-04-30 | Fujitsu Ltd | クライアント/サーバ分散システムにおけるデータキャッシング装置及び方法並びにデータキャッシングプログラムを記録した媒体 |
US7010532B1 (en) * | 1997-12-31 | 2006-03-07 | International Business Machines Corporation | Low overhead methods and apparatus for shared access storage devices |
JP2978882B1 (ja) | 1998-06-03 | 1999-11-15 | 三菱電機株式会社 | デバイス間データ転送装置及びデバイス間データ転送方法 |
JP3578265B2 (ja) * | 1999-11-19 | 2004-10-20 | 日本電気株式会社 | 不揮発性メモリへのデータ書き込み方法および情報処理装置ならびに記録媒体 |
JP3759048B2 (ja) * | 2002-02-04 | 2006-03-22 | 日本電気株式会社 | ディスクアレイ装置のディスクキャッシュ管理方法 |
US6922757B2 (en) * | 2002-02-15 | 2005-07-26 | Exanet Inc. | Flexible and adaptive read and write storage system architecture |
JP4257785B2 (ja) * | 2003-04-22 | 2009-04-22 | 株式会社日立製作所 | キャッシュストレージ装置 |
US7200718B2 (en) | 2004-04-26 | 2007-04-03 | Broadband Royalty Corporation | Cache memory for a scalable information distribution system |
US8032650B2 (en) * | 2006-03-15 | 2011-10-04 | Arris Group, Inc. | Media stream distribution system |
CN104461929B (zh) * | 2013-09-23 | 2018-03-23 | 中国银联股份有限公司 | 基于拦截器的分布式数据缓存方法 |
CN106647412B (zh) * | 2017-01-17 | 2018-12-18 | 爱普(福建)科技有限公司 | 一种基于组态元件的分布式控制器之间的数据共享方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4622631B1 (en) * | 1983-12-30 | 1996-04-09 | Recognition Int Inc | Data processing system having a data coherence solution |
US4669043A (en) * | 1984-02-17 | 1987-05-26 | Signetics Corporation | Memory access controller |
US5179680A (en) * | 1987-04-20 | 1993-01-12 | Digital Equipment Corporation | Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus |
US4833599A (en) * | 1987-04-20 | 1989-05-23 | Multiflow Computer, Inc. | Hierarchical priority branch handling for parallel execution in a parallel processor |
US5175851A (en) * | 1989-05-15 | 1992-12-29 | International Business Machines Corporation | System and method for controlling client machine access to a portion of a file with a variable length |
US5113519A (en) * | 1989-05-15 | 1992-05-12 | International Business Machines Corporation | Maintenance of file attributes in a distributed data processing system |
US5283886A (en) * | 1989-08-11 | 1994-02-01 | Hitachi, Ltd. | Multiprocessor cache system having three states for generating invalidating signals upon write accesses |
US5317752A (en) * | 1989-12-22 | 1994-05-31 | Tandem Computers Incorporated | Fault-tolerant computer system with auto-restart after power-fall |
JP2820752B2 (ja) * | 1990-01-19 | 1998-11-05 | 日本電信電話株式会社 | 密結合マルチプロセッサシステムにおけるキャッシュメモリ一致制御方法 |
US5301290A (en) * | 1990-03-14 | 1994-04-05 | International Business Machines Corporation | Method for minimizing lock processing while ensuring consistency among pages common to local processor caches and a shared external store |
US5297269A (en) * | 1990-04-26 | 1994-03-22 | Digital Equipment Company | Cache coherency protocol for multi processor computer system |
US5347648A (en) * | 1990-06-29 | 1994-09-13 | Digital Equipment Corporation | Ensuring write ordering under writeback cache error conditions |
US5893117A (en) * | 1990-08-17 | 1999-04-06 | Texas Instruments Incorporated | Time-stamped database transaction and version management system |
US5287473A (en) * | 1990-12-14 | 1994-02-15 | International Business Machines Corporation | Non-blocking serialization for removing data from a shared cache |
US5410654A (en) * | 1991-07-22 | 1995-04-25 | International Business Machines Corporation | Interface with address decoder for selectively generating first and second address and control signals respectively in response to received address and control signals |
US5327570A (en) * | 1991-07-22 | 1994-07-05 | International Business Machines Corporation | Multiprocessor system having local write cache within each data processor node |
US5394555A (en) * | 1992-12-23 | 1995-02-28 | Bull Hn Information Systems Inc. | Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory |
-
1996
- 1996-01-15 DE DE69621263T patent/DE69621263T2/de not_active Expired - Lifetime
- 1996-01-15 EP EP96300262A patent/EP0723230B1/de not_active Expired - Lifetime
- 1996-01-22 CA CA002167780A patent/CA2167780A1/en not_active Abandoned
- 1996-01-22 JP JP8008625A patent/JPH0922384A/ja active Pending
-
1997
- 1997-01-21 US US08/785,567 patent/US5835942A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0723230A3 (de) | 1996-12-18 |
CA2167780A1 (en) | 1996-07-24 |
JPH0922384A (ja) | 1997-01-21 |
EP0723230B1 (de) | 2002-05-22 |
US5835942A (en) | 1998-11-10 |
EP0723230A2 (de) | 1996-07-24 |
DE69621263D1 (de) | 2002-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69031926T2 (de) | Instandhaltung von Dateiattributen in einem verteilten Datenverarbeitungssystem | |
DE69322549T2 (de) | Verteilte Transaktionsverarbeitung mit einem Zwei-Phasen-Bindungsprotokoll mit erwarteter Bindung ohne Aufzeichnungspflicht | |
DE3853460T2 (de) | Raumverwaltungsanordnung für das Datenzugriffssystem eines Dateizugriffsprozessors. | |
DE69032685T2 (de) | Verfahren und system mit einem cache für offene dateien in einem netzwerkrechnersystem | |
DE69901291T2 (de) | Verfahren und vorrichtung zur datenübertragung zwischen der caches von netzwerkknoten | |
DE68924306T2 (de) | Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern. | |
DE69618131T2 (de) | Anordnung und Verfahren zur Betriebsmittelverwaltung von verteilten Objekten | |
DE3889739T2 (de) | Anordnung und Verfahren zur Benutzung der Cachespeicherdaten in einem Ortsnetzknoten nach der Neuöffnung einer Datei eines entfernten Knoten in einem verteilten Netz. | |
DE69703181T2 (de) | Registrierdateioptimierung in einem Client/Server-Rechnersystem | |
DE69126066T2 (de) | Verfahren und Gerät zur Optimierung des Logbuchaufhebungsgebrauchs | |
DE3854909T2 (de) | Cacheverwaltungsverfahren und System in einem anteilig genutzten Dateisystem | |
DE69226858T2 (de) | Kommunikationssystem | |
DE69528338T2 (de) | Verfahren zur Verwaltung von schwachkonsistenten replizierten Datenbanken | |
DE69421058T2 (de) | Vorrichtung und Verfahren zur Cache-Speicher Kohärenz Überprüfung mit doppelter Abhörmechanismus | |
DE3689664T2 (de) | Verfahren und Gerät zur Verwaltung von veralteten Datenobjekten. | |
DE69730449T2 (de) | Erzeugung einer spiegeldatenkopie (bild) unter verwendung von referenzetiketten | |
DE69327679T2 (de) | Nachrichtenübertragung zwischen Prozessoren und einer Koppeleinrichtung | |
DE60312746T2 (de) | Wiederherstellung nach fehlern in datenverarbeitungsanlagen | |
DE69521839T2 (de) | Datenbanksystem | |
DE69130580T2 (de) | Cache-Speicheranordnung | |
DE69025232T2 (de) | Verfahren zur Aufrechterhaltung der Cache-Speicherkohärenz in einem Mehrrechnersystem | |
DE69617112T2 (de) | Informationsverarbeitungssystem zur Ermöglichen des Zugriffs auf verschiedene Typen von Dateien und Steuerungsverfahren | |
DE68925182T2 (de) | Zuverlässige Anordnung zur Datenbankverwaltung | |
DE3856552T2 (de) | Multiprozessor-Digitaldatenverarbeitungssystem und Verfahren zum Betreiben dieses Systems | |
DE69913984T2 (de) | Verteiltes transaktionales verarbeitungssystem und verfahren |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |