-
Hintergrund der Erfindung
-
Urheberrechts-Autorisierung
-
Ein
Teil der Offenbarung dieses Patentdokuments enthält Material, das einem Urheberrechtsschutz unterliegt.
Der Urheberrechts-Eigentümer
hat keine Einwände
gegen die Faksimile-Reproduktion der-Patentoffenbarung durch Dritte,
wie dieselbe in den Patentakten oder -aufzeichnungen des U.S.-Patent- und Markenamts
erscheint, behält
sich jedoch anderweitig jegliche Urheberrechte vor.
-
Gebiet der Erfindung
-
Das
Gebiet der vorliegenden Erfindung bezieht sich allgemein auf ein
System zur verteilten Steuerung gemeinschaftlich verwendeter Ressourcen
auf einem Computernetz. Insbesondere bezieht sich das Gebiet der
Erfindung auf ein Verteilen einer Steuerung zwischen den mehreren
Hosts in einer vernetzten Umgebung über Betriebsmittel, wie z.
B. Speichervorrichtungen, Datenbanken und Projekte.
-
Hintergrund
-
Es
ist in Computersystemen üblich,
Dateiinformationen mit mehreren Computern durch eine Vielzahl von
Kommunikationsmitteln gemeinschaftlich zu verwenden. Einige der üblichen
Weisen, auf die Computer Dateiinformationen zu anderen Computern
senden, geschieht durch die Verwendung von Modems und Netzen bzw.
Netzwerken. Modems sind verglichen mit Netzen sehr langsam. Netze
benötigen
Dateiserver, wobei für Hochgeschwindigkeitsnetze
die Geschwindigkeit des Dateiser vers zu einem Flaschenhals wird.
Dieser Flaschenhals ist eine Behinderung für Anwendungen, die die Dateiinformationen
mit einer Geschwindigkeit gemeinschaftlich verwenden müssen, die
höher als
diejenige ist, mit der der Dateiserver Schritt halten kann. Dateiserver
arbeiten unter etwas, was das Klient/Server-Paradigma bezeichnet
wird. Unter diesem Paradigma stellt ein Klient Anforderungen an
einen Server, der die Anforderungen dann ausführt. In dem Fall eines Dateiservers
kann es mehrere Klienten geben, die Anforderungen an den Dateiserver
stellen. Der Dateiserver empfängt
die Anforderungen, gibt dieselben in eine Warteschlange und bedient
dann jeweils eine derselben zu einem Zeitpunkt. Auf diese Weise
wird eine Dateisystemkonsistenz beibehalten, da eine Entität, nämlich der
Dateiserver, in Bezug auf die Datenstrukturen arbeitet, die das
Dateisystem steuern, wo sich die Dateiinformationen auf eine logische
und kohärente
Art und Weise auf einem Speichermedium befinden.
-
Einige
Fortschritte in der Netztechnologie haben es ermöglicht, daß verschiedene Einrichtungen
einen Speicher direkt an dem Netz anschließen können, wie man einen Drucker
an das Netz als ein vernetztes Peripheriegerät (NAP) anschließen würde. Das
NAP-Paradigma ermöglicht
die Beseitigung von Geschwindigkeitsflaschenhälsen, die einem Dateiserver
zugeordnet sind, jedoch zu dem Preis einer Flexibilität. Unter
dem NAP-Paradigma gibt es kein Verfahren zur Beibehaltung einer
Dateisystemkonsistenz. Dies führt
zu einem Einschränken
der mehreren Computer auf einen Nur-Lese-Zugriff auf die Dateiinformationen,
wobei so die Modifizierung der Dateiinformationen verhindert wird.
Wenn mehrere Computer die Dateiinformationen modifizieren sollten,
würde das
Dateisystem verfälscht
werden, da es keine Art und Weise zur Beibehaltung der Datenstrukturen
des Dateisystems auf eine logische und kohärente Art und Weise auf dem
Speichermedium gibt, da mehrere Entitäten versuchen, das Dateisystem
zu modifizieren, ohne daß eine
Einrichtung zur Beibehaltung der Kohärenz zwischengespeicherter
Dateisystem-Datenstrukturen vorliegt. Deshalb zeigen sich diese NAP-Typ-Systeme als
hochgeschwindigkeitsmäßige Nur-Lese-Systeme
einer gemeinschaftlichen Verwendung von Dateiinformationen.
-
Es
werden ein verbessertes System und ein verbessertes Verfahren zum
gemeinschaftlichen Verwenden von Dateiinformationen benötigt. Vorzugsweise
würde ein
derartiges System den Dateiserver-Flaschenhals zur Erhöhung einer
Zugriffsgeschwindigkeit beseitigen, wie dies durch das NAP-Paradigma
vorgesehen ist, während
gleichzeitig die Flexibilität
des Klient/Server-Paradigmas beibehalten wird.
-
Es
ist in Computersystemen zur Berechnung intensiver Prozesse üblich, daß bis zur
Fertigstellung derselben eine enorme Zeitmenge vergeht. In Mehrprozessorsystemen
kann die Berechnung durch die Verteilung des Prozesses über die
Prozessoren, die in dem Computer vorhanden sind, beschleunigt werden.
Dies ist möglich,
da die Prozessoren, die sich in einer einzelnen Maschine befinden,
auf eine direktverbundene Art und Weise die gleichen physischen
Ressourcen (z. B. PCI, Speicher, Platte und CPU-Busse), auf denen
die Prozesse basieren, gemeinschaftlich verwenden. Der Nachteil
an diesem Ansatz besteht darin, daß er eine sehr teure und unübliche Hardware-Ausrüstung benötigt, wobei
eine Software geschrieben werden muß, um diese Fähigkeit
auf einem bestimmten Hardware-Modell auszunutzen. Zusätzlich ist
die Verarbeitungsleistung streng auf die Anzahl von CPUs eingeschränkt, die
in ein einzelnes Computersystem gegeben werden können. Der Einmaschinen-Mehrprozessor-Ansatz
ist ferner durch die starken Flaschenhälse eingeschränkt, die
entstehen können,
da die physischen Ressourcen unter einer ansteigenden Anzahl von
CPUs geteilt werden.
-
Ein
zweiter Ansatz ist die Verteilung des Prozesses auf mehrere Prozessoren,
die durch ein Netzsystem angeschlossen sind. Dieser Ansatz ist attraktiv,
da die Anzahl teilnehmender Prozessoren praktisch unbeschränkt ist
und der Typ verwendeter Maschinen billig und üblich sein kann. Eine Anzahl
von Nachteilen hat diesen Ansatz jedoch extrem in effizient und in
vielen Fällen
praktisch nutzlos gemacht. Der Hauptnachteil einer Netzprozeßverteilung
besteht darin, daß die
Kommunikation der Informationen, die durch jede Maschine benötigt werden,
damit der Prozeß läuft, sowie
die Kommunikation der Prozeßergebnisse
sehr langsam sein können,
da dieselben über
eine üblicherweise
langsame Netzverbindung, durch ein herkömmliches Klient/Server-Netz
(gemeinsam mit den zugeordneten Flaschenhälsen des Klient/Server-Modells),
gehen müssen.
Diese Einschränkungen
erzeugen in Fällen
sehr großen
Verarbeitungsmehraufwand, die es erforderlich machen, daß große Mengen
an Daten eingegeben und/oder ausgegeben werden. Die Wirksamkeit
des verteilten Prozesses wird ferner durch den erhöhten Netzverkehr
verschlechtert, da mehr Maschinen zu dem Prozeß hinzugefügt werden.
-
Die
Dokumente FR2567293 sowie XP000502425 des Stands der Technik lehren
Zugriffssteuermechanismen auf eine gemeinschaftlich verwendete Ressource
in einem Computersystem mit mehreren Klienten. Die Klienten fordern
einen Zugriff auf die gemeinschaftlich verwendete Ressource durch
ein Senden von Zugriffsanforderungen an eine Zentralentität an, die
eine Verriegelungstabelle aufweist. Mittels Einträgen in der Verriegelungstabelle
kann ein exklusiver Zugriff auf die gemeinschaftlich verwendete
Ressource oder bestimmte Regionen der gemeinschaftlich verwendeten
Ressource den jeweiligen Klienten erteilt werden.
-
Benötigt werden
ein verbessertes System und ein verbessertes Verfahren zum verteilten
Verarbeiten über
ein Netz. Ein derartiges System würde die Flaschenhälse und
Nachteile, die gegenwärtigen
verteilten Netzen zugeordnet sind, beseitigen, während gleichzeitig ihre Vorteile
beibehalten werden. Ein derartiges System würde es ferner ermöglichen,
daß die
Verteilung von Prozessen in einer plattformübergreifenden Umgebung funktioniert
und verwaltet werden kann.
-
Zusammenfassung der Erfindung
-
Verteilte Steuerung eines
Datenträgers
-
Die
Erfindung ist durch die beigefügten
unabhängigen
Ansprüche
1, 8 und 17 definiert. Bestimmte und bevorzugte Aspekte der vorliegenden
Erfindung sind in den angefügten
abhängigen
Ansprüchen
dargelegt.
-
Bei
einem ersten Beispiel ist ein verteiltes Datenträgerverwaltungssystem offenbart.
Bei diesem Beispiel teilen sich mehrere Klienten auf einem Netz
eine Steuerung über
und eine Verantwortlichkeit für
die Kohärenz
eines Datenspeicherungsdatenträgers.
Das System umfaßt
eine Steuerungstabelle, die dem Datenspeicherungsdatenträger zugeordnet
ist. Die Steuerungstabelle umfaßt
Verfügbarkeitsindizien
zum Anzeigen, ob die Steuerungstabelle verfügbar ist, und Identifizierungsindizien
zum Anzeigen einer Eigentümerschaft
der Steuerungstabelle. Das System umfaßt ebenso Steuerungsprozesse,
die jeweils auf einem Klient ausgeführt werden. Die Steuerungsprozesse
fordern eine exklusive Eigentümerschaft
der Steuerungstabelle an und erfassen dieselbe, um dem Klienten
einen exklusiven Schreibzugriff auf den Datenspeicherungsdatenträger bereitzustellen.
-
Bei
einem weiteren Beispiel weist ein Verfahren zum Durchsetzen eines
gegenseitig exklusiven Schreibzugriffs auf einen Datenspeicherungsdatenträger unter
einer Mehrzahl von Klienten, die mit dem Datenspeicherungsdatenträger verbunden
sind, die folgenden Schritte auf:
-
Einleiten
einer Anforderungsroutine auf dem ersten Klient ansprechend auf
den Erfassungsschritt, wobei die Anforderungsroutine folgende Handlungen
bzw. Schritte durchführt:
-
- a) Bestimmen auf der Basis von Eigentümerschaftsindizien
in der Steuerungstabelle, daß ein
zweiter Klient einen Schreibzugriff auf den Datenspeicherungsdatenträger aufweist;
und
- b) Senden einer Freigabeanforderung an den zweiten Klienten,
um einen Schreibzugriff freizugeben, ansprechend auf den Bestimmungsschritt;
- c) ansprechend auf eine bejahende Benachrichtigung von dem zweiten
Klienten:
- i) Ersetzen der Eigentümerschaftsindizien
in der Steuerungstabelle durch Eigentümerschaftsindizien des ersten
Klienten;
- ii) Vorbereiten des Datenspeicherungsdatenträgers für einen Schreibzugriff; und
- Erfassen der Freigabeanforderung an dem zweiten Klienten;
- Einleiten einer Freigaberoutine auf dem zweiten Klienten ansprechend
auf den Erfassungsschritt, wobei die Freigaberoutine folgende Schritte
durchführt:
- a) Freigeben eines Schreibzugriffs auf den Datenspeicherungsdatenträger; und
- b) Senden einer bejahenden Benachrichtigung an den ersten Klienten
des Freigabeschritts.
-
Verteilte Steuerung
einer Datenbank
-
Bei
einem weiteren Beispiel ist ein verteiltes Datenbankverwaltungssystem
offenbart. Bei diesem Ausführungsbeispiel
teilen sich mehrere Klienten auf einem Netz eine Steuerung über und
eine Verantwortung für die
Kohärenz
einer gemeinschaftlich verwendeten Datenbank mit mehreren Aufzeichnun gen.
Die Klienten konkurrieren untereinander für einen exklusiven Bearbeitungszugriff
auf jedes der Felder innerhalb jeder Aufzeichnung. Das Datenbankverwaltungssystem
umfaßt
Verriegelungsfelder, die jedem Feld in den mehreren Aufzeichnungen
zugeordnet sind. Jeder Klient führt
einen residenten Kohärenzprozeß aus. Der
Kohärenzprozeß ist ansprechend
auf eine Anforderung zur Bearbeitung eines Felds. Der Prozeß bewilligt
die Anforderung, wenn es keine Feldverriegelung bezüglich des
Feldes gibt. Wenn die Anforderung bewilligt wird, aktiviert der Kohärenzprozeß eine exklusive
Eigentümerschaft
des Feldes durch ein Plazieren einer Verriegelung auf dem Feld.
Der Kohärenzprozeß ist ebenso
ansprechend auf eine Anforderung, aus einer Bearbeitung des Felds auszutreten.
Wenn die Bearbeitungsaustritt-Anforderung empfangen wird, deaktiviert
der Kohärenzprozeß die exklusive
Eigentümerschaft
des Feldes durch ein Entfernen der Verriegelung. Jeder Klient führt außerdem einen
Datenbankprozeß aus:
zum Empfang einer Abfrage, zur Bereitstellung von Aufzeichnungen
aus der Datenbank ansprechend auf die Abfrage, zur Annahme einer
Anforderung zur Bearbeitung eines Feldes und zum Weiterleiten der
Anforderung zur Bearbeitung des Feldes an den Kohärenzprozeß. Der Datenbankprozeß nimmt
außerdem
eine Anforderung zum Austreten aus der Bearbeitung eines Feldes
an und leitet die Anforderung zum Austreten aus einer Bearbeitung
des Feldes an den Kohärenzprozeß weiter.
-
Bei
einem weiteren Beispiel umfaßt
das Verfahren zum Verwalten einer Datenbank mit mehreren Aufzeichnungen
und zum Bereitstellen eines exklusiven Bearbeitungszugriffs auf
jedes der Felder innerhalb jeder Aufzeichnung für die Klienten, die mit der
Datenbank verbunden sind, die folgenden Schritte:
-
Erfassen
einer Anforderung zur Bearbeitung eines Feldes bei einem ersten
Klienten;
-
Einleiten
einer Kohärenzroutine
auf dem ersten Klienten ansprechend auf den Erfassungsschritt, wobei
die Kohärenzroutine
folgende Schritte umfaßt:
-
- a) Bestimmen auf der Basis von Eigentümerschaftsindizien,
die dem Feld zugeordnet sind, daß ein weiterer der Mehrzahl
von Klienten einen Bearbeitungszugriff für das Feld aufweist; und
- b) Warten, ansprechend auf den Bestimmungsschritt, daß die Eigentümerschaftsindizien,
die dem Feld zugeordnet sind, deaktiviert werden;
- c) ansprechend auf eine Deaktivierung der Eigentümerschaftsindizien,
die dem Feld zugeordnet sind:
- i) Anbringen von Eigentümerschaftsindizien
des ersten Klienten an dem zu bearbeitenden Feld; und
- ii) Bereitstellen eines Bearbeitungszugriffs für das Feld;
und
- Erfassen einer Anforderung zum Verlassen der Bearbeitung eines
Feldes an einem ersten der Mehrzahl von Klienten,
- Einleiten einer Kohärenzroutine
auf dem ersten Klienten ansprechend auf den Erfassungsschritt, wobei
die Kohärenzroutine
die Eigentümerschaftsindizien
des ersten Klienten aus dem Feld entfernt.
-
Verteilte Steuerung einer
Verarbeitung:
-
Bei
einem weiteren Beispiel ist ein verteiltes Projektverwaltungssystem
offenbart. Bei diesem Ausführungsbeispiel
teilen sich mehrere Klienten auf einem Netz eine Steuerung über und
Verantwortung für
ein Projekt, das in einem Pro jektverwaltungsordner definiert ist,
der auf dem Netz gespeichert ist, und auf den durch die Klienten
zugegriffen werden kann. Der Projektverwaltungsordner enthält eine
oder mehrere Aufzeichnungen. Die Aufzeichnung umfaßt: einen
Quellendateinamen, einen Quellendateiort, einen Anwendungsnamen, einen
Anwendungsprogrammcode, einen Zieldateinamen und einen Zieldateiort.
Jeder Klient auf dem Netz führt
einen Verwaltungsprozeß zum
Lokalisieren der Ordner und zum Lesen der Aufzeichnung in einem
Ordner aus. Wenn eine Aufzeichnung gelesen wird, wird eine Bestimmung
hinsichtlich dessen durchgeführt,
ob die Ressource, d. h. die Anwendung, die die Aufzeichnung aufruft,
auf dem Klient vorhanden ist. Wenn dies nicht der Fall ist, leitet
der Klient den Ordner weiter. Wenn die Ressourcen vorhanden sind,
lesen die Verwaltungsprozesse den Inhalt der Aufzeichnung, einschließlich des
Quellendateinamens, des Quellendateiorts, des Anwendungsnamens,
des Anwendungsprogrammcodes, des Zieldateinamens und des Zieldateiorts.
Die Verwaltungsprozesse bewirken dann, daß die auf dem Klient residente
Anwendung/Ressource die in der Aufzeichnung genannte Quellendatei öffnet. Dann
bewirken die Verwaltungsprozesse, daß die auf dem Klient residente Anwendung
die Prozesse bezüglich
dieser Quellendatei unter der Anweisung des Anwendungsprogrammcodes
ausführt,
der ebenso aus der Aufzeichnung erhalten wurde. Wenn die Verwaltungsprozesse
erfassen, daß die
Anwendung eine Aufgabe gemäß dem Anwendungsprogrammcode
fertiggestellt hat, weisen die Verarbeitungsprozesse die Anwendung/Ressource
an, die fertiggestellte Aufgabe/das Arbeitsprodukt in einer Datei
mit einem Namen zu speichern, der dem Zieldateinamen in der Aufzeichnung
entspricht, und diese Datei an einem Ort auf dem Netz zu speichern,
der dem Zieldateiort entspricht, der in der Aufzeichnung gefunden wird.
Die Verwaltungsprozesse markieren dann die Aufzeichnung in dem Projektverwaltungsordner
als abgeschlossen.
-
Bei
einem Beispiel umfaßt
das Verfahren eines Verteilens der Verwaltung eines Projekts an
ausgewählte
Klienten, die an ein Computernetz angeschlossen sind, die folgenden
Schritte:
-
- Erzeugen einer Projektverwaltungsdatei auf
dem Computernetz und dem Projektverwaltungsordner, die zumindest
eine Aufzeichnung enthält,
die folgendes umfaßt:
einen Quellendateinamen, einen Quellendateiort, einen ersten Anwendungsnamen,
einen ersten Anwendungsprogrammcode, einen ersten Anwendungszieldateinamen
und einen ersten Anwendungszieldateiort;
- Erfassen des Orts auf dem Netz einer Projektverwaltungsdatei
an einem ersten Klienten;
- Einleiten eines Verwaltungsprozesses auf dem ersten Klienten
ansprechend auf dem Erfassungsschritt, wobei der Verwaltungsprozeß eine Durchführung der
folgenden Schritte umfaßt:
- a) Lesen der Aufzeichnung in der Projektverwaltungsdatei;
- b) Bestimmen, daß der
erste Anwendungsname mit einer entsprechenden Anwendung auf dem
ersten Klient übereinstimmt;
- c) Weiterleiten des ersten Anwendungsprogrammcodes an die entsprechende
Anwendung, um zu bewirken, daß die
entsprechende Anwendung Operationen in Bezug auf die Quellendatei
gemäß dem ersten
Anwendungsprogrammcode durchführt
und an dem Zieldateiort das resultierende Arbeitsprodukt in einer
Datei mit dem Zieldateinamen speichert; und
- d) Markieren der zumindest einen Aufzeichnung als vollständig.
-
Kurze Beschreibung
der Zeichnungen
-
Diese
und weitere Merkmale und Vorteile der vorliegenden Erfindung werden
für Fachleute
auf diesem Gebiet aus der folgenden detaillierten Beschreibung in
Verbindung mit den beigefügten
Zeichnungen besser ersichtlich:
-
1A ist ein Hardware-Blockdiagramm
eines Klient-Server-Netzes
des Stands der Technik.
-
1B zeigt die Software-Module,
die auf jedem der Klienten aus 1A vorhanden
sind.
-
1C zeigt die Funktionsbeziehung
der Module aus 1B.
-
2A ist ein Hardware-Blockdiagramm,
das eine serverfreie Netzverbindung zwischen mehreren Klienten und
gemeinschaftlich verwendeten Speicherungsdatenträgern zeigt.
-
2B zeigt die Software-Module,
die auf jedem Klienten aus 2A vorhanden
sind.
-
2C zeigt die Funktionsbeziehung
zwischen den Software-Modulen aus 2A.
-
3A zeigt die Zugriffssteuerungstabelle
auf dem gemeinschaftlich verwendeten Speicherungsdatenträger aus 2A.
-
3B zeigt die Datenträgersteuerungstabellen
in dem gemeinschaftlich verwendeten Speicherungsdatenträger aus 2A.
-
4 zeigt ein Beispiel einer
Dateiverzeichnisstruktur für
den gemeinschaftlich verwendeten Speicherungsdatenträger aus 2A.
-
5A bis 5E zeigen die Vorgänge für ein Ermöglichen dessen, daß mehrere
Klienten sich einen Lese- und Schreibzugriff auf einen gemeinschaftlich
verwendeten Speicherungsdatenträger
teilen.
-
6 ist ein Hardware-Blockdiagramm
eines Datenbankservers des Stands der Technik, der mit einem Klientennetz
verbunden ist.
-
7 ist ein Hardware-Blockdiagramm,
bei dem mehrere Klienten direkt an eine Datenbank auf einem gemeinschaftlich
verwendeten Speicherungsdatenträger
angeschlossen sind.
-
8A zeigt die Zugriffssteuerungstabelle
auf dem gemeinschaftlich verwendeten Datenträger aus 7.
-
8B zeigt die Datenträgersteuerungstabellen
auf dem gemeinschaftlich verwendeten Datenträger aus 7.
-
8C zeigt die Aktualisierungsliste
auf dem gemeinschaftlich verwendeten Datenträger aus 7.
-
9A und 9B zeigen jeweils die verbesserten Datenstrukturen,
die entweder einer relationalen oder flachen Datenbank auf dem gemeinschaftlich
verwendeten Datenträger
aus 7 zugeordnet sind.
-
10 ist ein Funktionsblockdiagramm,
das die Software-Module
auf jedem Klienten zeigt, die die verteilten Datenbankvorgänge implementieren.
-
11 ist ein Gesamtprozeßfluß, der alle 10A – 10F innerhalb der Gesamtstruktur einer
Datenbankmaschine beinhaltet.
-
12A bis 12F zeigen die Prozesse, die auf jedem
Klienten aus 7 implementiert
sind, um eine kohärente
Datenbank auf dem gemeinschaftlich verwendeten Speicherungsdatenträger beizubehalten.
-
13A bis 13C zeigen eine Netzumgebung, in der
mehrere Klienten kooperativ die Aufgabe verarbeiten, die durch eine
Projektverwaltungsdatei vorgegeben wird.
-
14A bis 14D sind detaillierte Datenstrukturen,
die den Projektverwaltungsdateien der 13A – 13C zugeordnet sind.
-
15A bis 15B zeigen Beispiele von Projekten,
die auf dem Netz der 13A – 13C implementiert sein können.
-
16A bis 16D zeigen die Bildschirmschnittstellen,
die dem Prozeß aus 15A zugeordnet sind.
-
17A bis 17F zeigen die Prozesse, die auf den
Klienten der 13A – 13C zum Implementieren einer verteilten
Prozeßverwaltung
implementiert sind.
-
Beschreibung
-
1A ist ein Hardware-Blockdiagramm
eines Klient/Server-Netzes
des Stands der Technik. Das Netz weist Klienten 54 – 56 (als
Klienten A bzw. B bezeichnet), einen Server 60 und Speicherungsdatenträger 64 und 66 auf.
Der Speicherungsdatenträger 66 ist
eine Kompaktplatte. Der Speicherungsdatenträger 64 ist ein redundantes
Plattenarray (RAID). Jeder Speicherungsdatenträger weist ein Dateiverzeichnis
auf, das demselben zugeordnet ist. Der Speicherungsdatenträger 64 enthält ein Dateiverzeichnis 62.
Jeder der Klienten 54 – 56 enthält jeweilige
Cache-Kopien 50 – 52 des
Dateiverzeichnisses 62.
-
Die
Computer 54 – 56 sind über ein
lokales Netz (LAN) mit dem Server 60 verbunden. Der Server 60 ist
mit den Speicherungsdatenträgern 64 und 66 durch
eine Kleincomputersystemschnittstellen- (SCSI-) Verbindung verbunden.
Damit die Klienten A–B
mit einem der Datenträger 64 – 66 verbunden
sind, müssen
sie zuerst eine Zugriffsanforderung bei dem Server 60 registrieren.
Ansprechend darauf führt
der Server 60 Prozesse 58 durch, die einem Datenträgerverwaltungs-Schreibprozeß und einer
Dateiverwaltung entsprechen, um die Kohärenz der Speicherungsdatenträger beizubehalten.
-
1B zeigt die Hardware-
und Software-Module auf dem Server 60 während eines Einschaltens. Der Server 60 weist
einen nicht-flüchtigen
Speicher 84, eine CPU 80 und eine lokale Speicherungsvorrichtung 86 auf.
Innerhalb der nichtflüchtigen
Speicherungsvorrichtung 84 befindet sich ein Software-Modul,
das als der Betriebssystem- (OS-) Kern identifiziert ist. Die Speicherungsvorrichtung 86 enthält das vollständige OS 90, zugeordnete
Treiber 92 und eine Hochfahrkonfiguration 94.
In Betrieb leitet beim Einschalten die CPU 80 die Codesequenz
des Betriebssystem-Kerns 88 ein. Die CPU greift dann auf
das Hauptbetriebssystem 90 auf der Speicherungsvorrichtung 86 zu.
In dem Verlauf der Betriebssystemeinleitung werden verschiedene
Treiber 92 initialisiert. Diese Treiber verbinden die CPU
mit Peripheriegeräten,
wie z. B. Tastatur, Monitor, Drucker und Speicherungsvorrichtungen.
Nachdem das Betriebssystem initialisiert ist, wird eine Hochfahrdatei 94 implementiert,
was dazu führt,
daß eine
oder mehrere Anwendungen aktiviert werden.
-
In
dem Software-Modulblock 82 gezeigt sind die Software-Module, die während des
Einschaltens aktiviert werden. Die dem OS zugeordneten Module sind
das Zugriffssteuerungs-Modul 96,
das Befehlsempfangs-Modul 98, das Zeitplanungs-Modul 102 und
das Modul 110 einer Übersetzung
von logisch zu physisch und einer Raumzuteilung. Die Module sind
der Bildschirmtreiber 104, der CD-Treiber 106 und
der RAID-Speicherungstreiber 108.
Schließlich
wird das Anwendungsmodul 100 durch die Hochfahrdatei 94 aktiviert.
-
1C ist ein Blockdiagramm,
das die Funktions-Eingabe/Ausgabe-I/O-Beziehung zwischen den Software-Modulen
der 1B – 1C zeigt, was eine Klient-Anwendung 150 umfaßt, die
mit dem Server 60 kommuniziert, der wiederum mit einer
der Speicherungsvorrichtungen 64 oder 66 kommuniziert,
wie zu Beginn in 1A gezeigt
ist. Der Dateiserver 60 weist einen logischen I/O-Block 158 und
einen physischen I/O-Block 160 auf. Der logische I/O-Block 158 weist
ein Befehlsempfangs-Modul 98, Zugriffssteuerungs-Module 96 und Dateiverzeichnisse 166 auf.
Der physische I/O-Block 160 weist ein Zeitplanungs-Modul 102,
ein Modul 110 einer Umsetzung von logisch zu physisch und
Raumzuteilung und Treiber 104 – 108 auf, die dem
Monitor, der CD bzw. der RAID-Speicherungsvorrichtung zugeordnet
sind. Die RAID-Speicherungsvorrichtung 64 umfaßt ein Dateiverzeichnis 62,
das den Verzeichnisbaum und Zugriffsrechte für alle Daten, die sich auf
der Speicherungsvorrichtung 64 befinden, enthält.
-
In
Betrieb kommuniziert eine Klientenanwendung 150 über den
Server 60 mit einer der Speicherungsvorrichtungen 64 und 66.
Befehle, die von der Klient-Anwendung 150 empfangen werden,
umfassen: Erzeugen, Löschen, Öffnen, Schließen, Lesen
und Schreiben. Jeder dieser Befehle wird durch einen Logikdateinamen
begleitet. Ein Befehl wird von dem Befehlsempfangsmodul 98 an
das Zugriffssteuerungs-Modul 96 weitergeleitet. Die Zugriffssteuerungs-Module 96 sind
jeweils schnittstellenmäßig mit
einem entsprechenden der Dateiverzeichnisse 166 verbunden.
Es gibt im allgemeinen ein Dateiverzeichnis für jeden physischen Datenträger. Zusätzlich könnte ein
Datenträger über mehrere
physische Speicherungsvorrichtungen existieren, wie bei einem Software-Striping.
Ein physischer Datenträger
kann eine einzelne Speicherungsvorrichtung oder eine Partition auf
einer Speicherungsvor richtung sein. Ein Dateiverzeichnis wird in
Verbindung mit 4 detaillierter
erläutert
und umfaßt
im allgemeinen einen Verzeichnisbaum mit Logikdateinamen und Zugriffsberechtigungen,
die jedem Dateinamen zugeordnet sind. Das Zugriffssteuerungs-Modul 96 bestimmt
auf der Basis von Zugriffsberechtigungen, die in den Dateiverzeichnissen 166 enthalten
sind, ob ein spezifischer Befehl implementiert werden sollte oder
nicht. Wenn z. B. ein Anwendungsbefehl eine Schreibanforderung an
eine Datei oder einen Datenträger
aufweist, die/der als Nur-Lesen aufgelistet ist, wird diese Anforderung
durch das Zugriffssteuerungs-Modul nicht implementiert. Alternativ
werden, wenn ein Befehl empfangen wird, den das Zugriffssteuerungs-Modul
implementiert, die Daten, die diesem Befehl zugeordnet sind, direkt
an das Zeitplanungs-Modul 102 weitergeleitet. Der physische
I/O-Block ist die
Hauptschnittstelle mit der Umgebung außerhalb des Computersystems.
Der physische I/O beschäftigt
sich mit Blöcken
von Daten, die mit Platten- oder Bandsystemen ausgetauscht werden.
So ist er mit der Plazierung dieser Blöcke auf der sekundären Speicherungsvorrichtung
und mit dem Puffern bzw. Zwischenspeichern dieser Blöcke in dem
Hauptspeicher beschäftigt,
das Zeitplanungs-Modul ist mit einem zeitlichen Planen von Platten-
oder Bandzugriffen für
die Optimierung einer Leistung beschäftigt. I/O-Puffer sind zugewiesen
und ein sekundärer
Speicher ist auf dieser Ebene zugewiesen. Von dem Zeitplanungs-Modul 102 wird
ein Befehl, z. B. zum Lesen von Daten von einem spezifischen logischen
Ort, an das Modul 110 einer Umsetzung von logisch zu physisch
und Raumzuteilung weitergeleitet. Dieses Modul ist verantwortlich
für ein
Umsetzen eines logischen Orts in einen tatsächlichen physischen Ort auf
einer spezifischen Speicherungsvorrichtung. Eine Datei ist unter
Umständen
z. B. auf keinem zusammenhängenden
Abschnitt einer Speicherungsvorrichtung gespeichert. Statt dessen
ist dieselbe unter Umständen
auf fragmentierten Segmenten gespeichert. Dieses Modul führt dann
die Umsetzung eines Logikdateinamens in eine Serie physischer Segmente
durch. Dieses Modul ist auch verantwortlich für eine Raumzuteilung, eine
Raum zuteilung in dem Sinn, daß,
wenn Schreibbefehle empfangen werden, die tatsächlichen physischen Orte, an
die die Daten geschrieben werden, durch das Modul 110 bestimmt
werden. Die letztendliche Software-Schnittstelle zwischen dem Server 60 und
der Speicherungsvorrichtung ist über
einen geeigneten Vorrichtungstreiber. Jeder Vorrichtungstreiber
handhabt einen Vorrichtungstyp. Der Vorrichtungstreiber ist der
einzige Teil des Betriebssystems, der weiß, wie viele Register die Plattensteuerung
aufweist, und wofür dieselben
verwendet werden. Er allein weiß über Sektoren,
Spuren, Zylinder, Kopf-Arm-Bewegung, Verschachtelungsfaktoren, Motorantriebe,
Kopf-Einrichtzeiten und alle anderen mechanischen Details, damit
die Speicherungsvorrichtung ordnungsgemäß arbeitet, Bescheid. Allgemein
ausgedrückt,
besteht die Aufgabe eines Vorrichtungstreibers darin, abstrakte
Anforderungen von der vorrichtungsunabhängigen Software über denselben
anzunehmen und dafür
zu sorgen, daß die
Anforderung ausgeführt
wird.
-
2A ist ein Hardware-Blockdiagramm
eines bevorzugten Ausführungsbeispiels
der gegenwärtigen Erfindung,
bei dem Klienten direkt an eines oder mehrere gemeinschaftlich verwendete
Speicherungsdatenträger
ohne den Verlust einer Kohärenz
der Daten, die in diesen Datenträgern
enthalten sind, angeschlossen sein können. Klienten 54 – 56,
Speicherungsvorrichtungen 64 – 66 und ein Server 60 sind
gezeigt. Die RAID-Speichervorrichtung 64 umfaßt ein Dateiverzeichnis 204,
eine Zugriffssteuerungstabelle 206 und eine Datenträgersteuerungstabelle 208.
Die Klienten 54 – 56 implementieren
jeweils Prozesse für
eine verteilte Verwaltung der Speicherungsdatenträger 64 – 66.
Der Klient 54 implementiert einen Prozeß 214 und der Klient 56 implementiert
einen Prozeß 216.
Die Klienten 54 – 56 umfassen
residente Kopien 200 – 202 des
Dateiverzeichnis 62.
-
Der
Server 60, wie durch eine x-Markierung 212 angezeigt
ist, wird nicht weiter benötigt,
um eine Anforderung von einem Klienten 54 oder 56 an
die Speicherungsdatenträger 64 – 66 zu
bedienen. Statt dessen sind die Klienten 54 – 56 direkt
mit den Speicherungsdatenträgern 64 – 66 verbunden.
Bei einem bevorzugten Ausführungsbeispiel
basiert die Verbindung entweder auf dem Faserkanal-ANSI-Standard
X3.230 und/oder dem SCSI-3-ANSI-Standard X3.270, obwohl auch weitere
Medienverbindungssysteme unterstützt
werden können.
Andere Ausführungsbeispiele
der vorliegenden Erfindung können
angepaßt
sein, um weitere Verfahren einer Verbindung von Speicherung 802 und
Hosts 804 zu unterstützen,
wie z. B. Ausführungsbeispiele,
die Fast-40 (Ultra-SCSI), eine Seriellspeicherarchitektur (SSA), „FireWire"-IEEE-Standard P1394,
einen asynchronen Übertragungsmodus
(ATM) oder den Skalierbar-Kohärenz-Schnittstellen-
(SCI-) IEEE-Standard 1596 – 1992 verwenden,
oder eine bestimmte Kombination von obigen, unter weiteren Möglichkeiten.
Die Faserkanalarchitektur liefert Hochgeschwindigkeits-Schnittstellenverbindungen
für sowohl
serielle Kommunikationen als auch eine Speicherungs-I/O. Diese Verbindungen
können
Daten unter Verwendung von Industriestandard-Schnittstellen mit
zehnfacher bis hundertfacher Geschwindigkeit gegenwärtig existierende
Architekturen übertragen.
Der Faserkanal ist ein Teil einer sehr neuen Revolution bei Datenkommunikationen,
der durch ein Einschließen
von serieller Übertragungsleitung,
von -entwurfstechniken und -technologien in Anwendungen und eine
Computerarchitektur bewirkt wird, die herkömmlicherweise einen Datentransporttyp
auf Parallelbus-Basis verwendet haben. Übertragungsleitungen weisen überlegene
Charakteristika für
einen Datentransport und bus-basierte Entwürfe auf, was es ermöglicht,
daß Signale
fehlerfrei über
größere Entfernungen und/oder
mit höheren
Datengeschwindigkeiten übertragen
werden können.
Der Faserkanal unterstützt
eine flexible Topologie, einschließlich Punkt-zu-Punkt-Verbindungen, Paketschalten
und Schleifentopologien gemeinschaftlich verwendeter Medien. Bei
einem bevorzugten Ausführungsbeispiel
verbindet ein Faserkanalnetz die Klienten 54 – 56 mit
beiden Speicherungsdatenträgern 64 – 66.
Der Speicherungsdatenträger 64 ist mit
einer Striping- bzw. Streifenbildungs-Software ausgestattet, die
Daten gleich zeitig über
mehrere Platten hinweg liest und schreibt. Die Striping-Fähigkeit
erlaubt es, daß die
Bandbreite des Netzmediums, d. h. des Faserkanals, gleich der Bandbreite
der Speicherungsvorrichtung gemacht werden kann. Dies ist trotz
der Tatsache so, daß einzelne
Platten auf der Speichervorrichtung Daten nur mit einem Bruchteil
der Bandbreite der Netzverbindung bereitstellen können. Durch
eine Streifenbildung einer Datei über mehrere Platten hinweg
werden Bandbreiteneinschränkungen,
die durch die physischen Grenzen auf den Kopf-Arm auferlegt werden, überwunden,
indem mehrere Platten parallel arbeiten können, um Datentreiber bereitzustellen.
-
Um
eine Kohärenz
der Daten beizubehalten, die durch einen der Klienten A oder B an
die Speichervorrichtung 64 geschrieben werden, werden Prozesse 214 – 216 auf
den jeweiligen Klienten 54 – 56 implementiert.
Jeder Prozeß steuert
das Anbringen bzw. Vorbereiten neuer Datenträger, einen Schreibzugriff und eine
Dateiverwaltung. Um Daten an die Speichervorrichtung 64 zu
schreiben, muß ein
Klient zuerst bestimmt haben, daß eine Schreibbedingung sowohl
innerhalb der Zugriffssteuerungstabelle 206 als auch der
Datenträgersteuerungstabelle 208 auf
dem gemeinschaftlich verwendeten Speicherungsdatenträger vorliegt.
Wenn bestimmt wird, daß diese
Bedingung vorliegt, kann der Klient an den Speicherungsdatenträger schreiben.
Wenn diese Bedingung nicht vorliegt, wird eine Schreibanforderung
abgelehnt. Bei einem bevorzugten Ausführungsbeispiel befinden sich
die Zugriffssteuerungstabelle und die Datenträgersteuerungstabelle auf einem
separaten Datenträger
auf einer physischen Speichervorrichtung, die sowohl eine Lese-
als auch eine Schreibfähigkeit
aufweist. So müssen
sich die Zugriffs- und die Datenträgersteuerungstabelle nicht
auf der gleichen physischen Vorrichtung befinden, für die sie
einen Zugriff steuern, und tun dies normalerweise auch nicht. Statt
dessen verwendet jeder der Prozesse 214 und 216 die
gemeinschaftlich verwendeten Zugriffs- und die Datenträgersteuerungstabelle,
um zu bestimmen, wann und unter welchen Bedingungen sie an einen
einer Anzahl von Datenträgern
schreiben können,
an die dieselben angeschlossen sein können.
-
2B ist ein Hardware-Software-Blockdiagramm
des Klient 54. Der Klient 54 weist eine CPU 250, einen
nichtflüchtigen
Speicher 254 und eine lokale Speichervorrichtung 258 auf.
Der nicht-flüchtige
Speicher 254 weist ein OS 256 auf. Der nicht-flüchtige Speicher 258 weist
das Haupt-OS 260, Vorrichtungstreiber 262 und
Hochfahrdateien 264 auf.
-
Beim
Einschalten lädt
die CPU 250 den OS-Kern von dem Boot-ROM 254 hoch und liest den
verbleibenden Abschnitt des Betriebssystems 260 von der
lokalen Speichervorrichtung 258, d. h. einem Plattenlaufwerk.
Während
der letzteren Stufen der Betriebssystemaktivierung werden die Vorrichtungstreiber 262 und
die Hochfahrdatei 264 aktiviert. Der Software-Modulblock 252 zeigt
die Software-Module, die während
des Einschaltens aktiviert werden. Während der Aktivierung des Betriebssystems 260 sind
das Befehlsempfangs-Modul 98, die Zugriffssteuerungs-Module 96,
das Zeitplanungs-Modul 102, das Modul 110 einer
Umsetzung von logisch zu physisch und Raumzuteilung und die Konverter-Module 268 aktiviert.
Während
der Aktivierung der Vorrichtungstreiber 262 sind der Bildschirmtreiber 104,
der CD-Treiber 106 und
der RAID-Treiber 270 aktiviert. Während der Initialisierung der
Hochfahrdatei sind die Datenträgersteuerungsanwendung 266 und
eine residente Anwendung 100 aktiviert.
-
2C zeigt die Funktionsbeziehung
zwischen den Software-Modulen,
die während
eines Einschaltens aktiviert und in 2B gezeigt
sind. Der Klient 54 und die physischen Speichervorrichtungen 64 und 66 sind
gezeigt. Die physische Speichervorrichtung 64 umfaßt ein Dateiverzeichnis 62,
eine Zugriffssteuerungstabelle 206, eine Datenträgersteuerungstabelle 208 und
Blöcke
1 bis N. Die physische Speichervorrichtung 62 umfaßt ihr eigenes
Dateiverzeichnis und Daten blöcke
1 bis N. Der Klient 54 umfaßt eine Datenträgersteuerungsanwendung 266,
einen logischen I/O-Block 158 und einen physischen I/O-Block 160.
Der logische I/O-Block 158 umfaßt ein Befehlsempfangs-Modul 98,
Zugriffssteuerungs-Module 96, ein Dateiumwandlungs-Modul 268 und
ein Dateiverzeichnis 166. Der physische Block 160 umfaßt ein Zeitplanungs-Modul 102, ein
Modul 110 einer Umsetzung von logisch zu physisch und Raumzuteilung
und Vorrichtungstreiber 104 – 106 und 270.
-
In
Betrieb ist der Vorrichtungstreiber 270 während der
Initialisierung des Betriebssystems nicht vollständig aktiviert. So erscheint
die physische Vorrichtung 64 dem Klient 54 nicht
als verfügbar,
d. h. verbunden. Wenn die Datenträgersteuerung 266 aktiviert
wird, sendet dieselbe eine Serie von Befehlen an das Befehlsempfangs-Modul 98.
Diese Befehle führen
zu der Entdeckung des Verriegelungsspeichertreibers 270 durch das
Datenträgersteuerungs-Modul 266.
In dem Verlauf dieses Entdeckungsprozesses entdeckt das Datenträgersteuermodul
auch die Zugriffs- und die Datenträgersteuerungstabelle 206 und 208 auf
der physischen Vorrichtung 64. Während dieses Entdeckungsprozesses
weist keine andere Anwendung als die Datenträgersteuerungsanwendung Zugriff
auf die physische Speichervorrichtung 64 auf. Wenn das
Datenträgersteuer-Modul 266 die
Zugriffs- und die Datenträgerberechtigungen
von der jeweiligen Zugriffssteuerungs- und Datenträgersteuerungstabelle 206, 208 gelesen
hat, befaßt
es sich mit einer Serie von Befehlen, die entworfen sind, um diese
Zugriffsberechtigungen an die Dateiverzeichnisse 166 zu
schreiben. Wenn z. B. bestimmt wird, daß die Datenträgersteuerungstabelle
anzeigt, daß der
Klient 54 einen Lese/Schreib-Zugriff auf die physische
Vorrichtung 64 erhalten soll, gibt das Datenträgersteuerungsmodul
einen Vorbereiten-R/W- bzw. L/S-Befehl aus, der, wenn er durch das
Befehlsempfangs-Modul empfangen wird, bewirkt, daß das Dateiverzeichnis 166 aktualisiert
wird und diese Berechtigungen umfaßt. Nachfolgend wird, wenn
das Dateiverzeichnis 166 zurück an die physische Vorrichtung 64 geschrieben wird,
das Dateiverzeichnis 62, das sich auf der tatsächlichen
physischen Vorrichtung 64 befindet, ebenso aktualisiert.
So werden die Zugriffs- und Datenträgerberechtigungen von der Zugriffs-
und der Datenträgersteuerungstabelle
gelesen und durch das Datenträgersteuerungs-Modul 266 an
das zwischengespeicherte 166 und physische 62 Dateiverzeichnis
geschrieben. Dieser Prozeß kann über mehrere
physische Vorrichtungen auf der Basis einer Zugriffs- und Datenträgersteuerungstabelle
ausgeführt
werden, die sich bei dem bevorzugten Ausführungsbeispiel in nur einer
dieser Vorrichtungen befindet, wobei jedoch auch andere Orte für diese
Tabellen möglich
sind.
-
Das
verbleibende Modul, das in Bezug auf die Funktion noch nicht erläutert wurde,
ist das Protokollumwandlungs-Modul 268. Das Protokollumwandlungs-Modul 268 verbindet
schnittstellenmäßig das
Zugriffssteuerungs-Modul 69 mit den Dateiverzeichnissen 166 und
behält
eine einheitliche Dateiverzeichnisstruktur über heterogene Betriebssysteme
bei, wie dies z. B. auf den Klienten 54 und 56 vorhanden
sein kann. Der Klient 54 z. B. kann auf einem MacIntosh
System 7®-Betriebssystem laufen,
während
der Klient 56 auf Windows NT laufen kann. Die Protokollumwandlungs-Module 268 auf
jedem dieser Klienten setzen eine homogene Dateiverzeichnisstruktur
durch, wobei so eine plattformübergreifende
Operation der gegenwärtigen
Erfindung ermöglicht
wird. Das Protokollumwandlungs-Modul 268 liefert eine Kommunikationsvorschriftumwandlung
und eine Befehlsformatumwandlung zu den Kommunikationsvorschriften
und dem Befehlsformat der gemeinsamen API. So können Verzeichnisse und Dateien
in einem Dateiformat über
mehrere Betriebssysteme hinweg gespeichert sein. Das Format weist
spezifische ASCII-Zeichen, Übereinkünfte für Dateinamen
und spezifische Übereinkünfte auf,
die in Verbindung mit 4 für die Dateiverzeichnis-
und Zugriffssteuerung noch detaillierter erläutert werden. Wenn die Protokollumwandlungseinheit
einen Befehl empfängt,
ruft sie eine Verarbeitungsroutine in sich selbst auf, die dem Typ
von Befehl entspricht, wobei diese Verarbeitungsroutine den Befehl handhabt.
-
3A zeigt eine detaillierte
Datenstruktur für
die Zugriffssteuerungstabelle 206, die oben in Verbindung
mit den 2A – 2C erläutert wurde. Angemeldete Felder 356 der
Zugriffssteuerungstabelle zeigen an, welche Benutzerprozesse 214 – 216 [siehe 2A] bei der Zugriffssteuerungs-
und der Datenträgersteuerungstabelle
angemeldet sind. Bis ein Benutzer bei der Zugriffssteuerungstabelle
angemeldet ist, kann keine Anwendung auf diesem Klient auf eine
der physischen Vorrichtungen zugreifen, deren Vorrichtungstreiber
eine Verriegelungssteuerung ähnlich
wie der Vorrichtungstreiber 270 [siehe 2C] aufweisen. Die Zugriffssteuerungstabelle
weist außerdem
ein Auffrischen-Benachrichtigungsfeld 358 auf,
das jedem Klient zugeordnet ist. Eine boolesche Wahr-Bedingung in
einem Feld, das einem spezifischen Klient zugeordnet ist, stellt
sicher, daß der
Klient durch seinen residenten Datenträgersteuerungsprozeß benachrichtigt
wird, wenn Veränderungen
an den Zugriffsberechtigungen weiterer Benutzer auf dem System stattfinden.
Eine boolesche Falsch-Bedingung weist die entgegengesetzte Wirkung
auf, d. h. keine Benachrichtigung wird durch den Datenträgersteuerungsprozeß auf einem
Klient bereitgestellt, der eine boolesche Falsch-Bedingung in dem
Auffrischen-Benachrichtigungsfeld der Zugriffssteuerungstabelle
aufweist. Die Zugriffssteuerungstabelle liefert außerdem eine
Nachrichtenweiterleitungsfähigkeit
zwischen Klienten. Ein Feld 360 enthält eine Anforderungsnachricht.
Ein Feld 362 und 354 enthalten eine text-basierte
bzw. eine Boolebasierte Antwortnachricht. Schließlich umfaßt die Zugriffssteuerungstabelle
ein Semaphorenfeld 352. Das Vorliegen eines Semaphors in
dem Semaphorenfeld zeigt an, daß einer
der Klienten 54 oder 56 eine Steuerung über die
Zugriffs- bzw. Datenträgersteuerungstabelle 206 – 208 ergriffen
hat. Ein Klientprozeß,
der einen Identifizierer in das Semaphorenfeld 352 geschrieben hat,
kann die Berechtigungen, die jedem Datenträger zugeordnet sind, verändern und
kann eine Veränderung des
Schreibstatus einleiten.
-
3B zeigt die Datenstrukturen,
die den Datenträgersteuerungstabellen 208 zugeordnet
sind. Insbesondere sind Tabellen 208A und 208B gezeigt.
Es gibt eine Datenträgersteuerungstabelle
für jeden
Datenträger,
was eine verteilte Steuerung durch mehrere Schreiber unterstützt. Die
Felder innerhalb der Datenträgersteuerungsaufzeichnung 208A sind
alle mit dem Anhang „A" identifiziert. Die
innerhalb der Datenträgersteuerungstabelle 208B identifizierten
Felder enthalten alle einen „B"-Anhang. Ein Feld 390 identifiziert
den Logikdatenträger,
der einer spezifischen Datenträgersteuerungstabelle
zugeordnet ist. Ein Feld 390A zeigt an, daß die RAID-Speichervorrichtung 64[siehe 2A] der Datenträgersteuerungstabelle 208A zugeordnet
ist. Ein Feld 390B zeigt an, daß der CD-ROM 66 [siehe 2A] der Datenträgersteuerungstabelle 208B zugeordnet
ist. Ein Feld 392 enthält
eine boolesche WAHR/FALSCH-Bedingung, die anzeigt, ob ein spezifischer
Datenträger
schreib-aktiviert ist oder nicht. Ein Feld 392A zeigt an,
daß die
RAID-Vorrichtung 64 [ siehe 2A] schreib-aktiviert
ist. Ein Feld 392B zeigt an, daß der CD-ROM 66 [siehe 2A] nicht schreib-aktiviert
ist. Ein Feld 394 zeigt an, welcher Klient gegenwärtig einen
Schreibzugriff auf einen spezifischen Datenträger aufweist. Ein Feld 394-A zeigt
an, daß der
Klient 54 [siehe 2A]
gegenwärtig
einen Schreibzugriff auf die RAID-Speichervorrichtung 64 aufweist.
Ein Feld 394B zeigt an, daß kein Klient einen Schreibzugriff
auf die CD-ROM 66 [ siehe 2A]
aufweist. Ein Feld 388 zeigt an, welche Klienten Zugriff-Vorbereiten-Berechtigungen
für jeden
spezifischen Datenträger
aufweisen. Eine boolesche Wahr-Bedingung
zeigt an, daß der
Klient den Datenträger
vorbereiten kann. Eine boolesche Falsch-Bedingung zeigt das Gegenteil
an. Ein Feld 396 zeigt für jeden Klienten die Fähigkeit
an, eine Veränderung
an seinen gegenwärtigen
Datenträgereinstellungen anzufordern.
Eine boolesche Falsch-Bedingung
zeigt an, daß ein
Klient nicht für
ein Stellen von Veränderungsanforderungen
gesperrt ist, wie z. B. Nur-Lesen
zu Nur-Schreiben (oder umgekehrt). Eine boolesche Wahr-Bedingung
zeigt an, daß ein
Klient für
ein Stellen von Veränderungsanforderungen
gesperrt ist. Ein Feld 384 ist eine boolesche Wahr/Falsch-Bedingung,
die anzeigt, ob ein Klient mit Nur-Lese-Berechtigungen aktualisiert wird
oder nicht, wenn Veränderungen
an dem Datenträger
durch weitere Klienten in Bezug auf einen spezifischen Datenträger durchgeführt werden.
Felder 386 sind Zeitstempel, die die letzte Zeit anzeigen,
zu der ein Klient eine aktualisierte Kopie eines Dateiverzeichnisses 62 empfangen
hat [siehe 2A]. Ein
Feld 382 ist ein Zeitstempel, der die letzte Modifizierungszeit
für einen
spezifischen Datenträger
durch einen Klient anzeigt. Durch ein Vergleichen des Letzte-Modifizierungszeit-Feld 386 mit
dem Datenträgermodifizierungszeit-Feld 382 können die
Prozesse 214 – 216 [siehe 2A] bestimmen, wann ein
Klient mit Auto-Aktualisierungsberechtigungen eine Dateiverzeichnis-Auffrischung
benötigt.
-
Das
Folgende ist eine Auflistung, die die Datenstrukturen und Funktionsaufrufe
bei einem weiteren Ausführungsbeispiel
der Datenträger-
und Zugriffssteuerungstabellen darstellt. Die Auflistungen zeigen
einige der Datenstrukturelemente für diese Tabellen. Die Zugriffstabelle
weist einen Studio-BOSS_DB_Header
14xx (StudioBOSS_DB_Anfangsblock) und ein Array von Partition Volume
Record's 14xx (Partition
Datenträger Aufzeichnungen
14xx) auf.
-
Volume DB Header 14xx (Datenträger DB Anfangsblock
14xx)
-
Der
Volume_DB_Header 14xx ist bei einem ersten Ausführungsbeispiel der vorliegenden
Erfindung an dem Anfang der Datenträgertabelle gespeichert, obwohl
die tatsächliche
Position variieren könnte.
Eine Beschreibung jedes seiner Felder ist wie folgt:
-
- Table_Version_Number 14xx (Tabellen_Versions_Zahl 14xx)
Die
Versionszahl des Tabellenformats. Gegenwärtig eingestellt auf SB_DB_VERSION
14xx. Für
eine zukünftige
Kompatibilität
beabsichtigt.
- Table_Open_Counter 14xx (Tabelle_Offen_Zähler 14xx)
Verfolgt die
Anzahl von Malen, die die Tabelle jemals geöffnet wurde. Gegenwärtig verwendet
bei DEMO-Kopien, um eines der Kriterien zum Ablauf der DEMO-Version
zu bestimmen (siehe SB DB OPENS UNTIL EXPIRE 14xx(SB DB ÖFF-NUNGEN BIS ABLAUF
14xx)).
- Table_Write_Lockout_Semaphore 14xx (Tabelle Schreiben Sperren
Semaphor 14xx)
Einstellen auf MAXIMUM USERS 14xx (MAXIMALE
BENUTZER 14xx), wenn Tabelle sicher für einen Zugriff ist. Andernfalls
Einstellen auf die Benutzerzahl, die das Semaphor ergriffen hat.
Wenn es ergriffen wurde, ist die Tabelle nicht zuverlässig und
keine Veränderungen
sollten durchgeführt
werden.
- Number_ Of_Users 14xx (Anzahl_Von_Benutzern 14xx)
Gesamtzahl
von Benutzern, die in der Tabelle erzeugt werden.
- Number Of Volumes 14xx (Anzahl Von Datenträgern 14xx)
Gesamtzahl
von Datenträgern
in der Tabelle.
- User_Names[MAXIMUM_USERS 14xx] 14xx (Benutzer_Namen[MAXIMA-LE_BENUTZER 14xx]
14xx)
Namen der Benutzer in der Tabelle in Pascal-Zeichenfolgenformat
(Längenbyte
+ Zeichen). ANMERKUNG: Um den nächsten
Namen in der Liste zu finden, wird das Array nach der nächsten Nicht-Null-Länge-Zeichenfolge
durchsucht.
- User_Has_Owner [MAXIMUM_USERS 14xx] 14xx (Benutzer_Hat_Eigentümer[MAXIMALE_BENUTZER 14xx]
14xx)
Setzen auf WAHR, wenn Benutzer gültig, andernfalls FALSCH.
- User_Logged_On [MAXIMUM_USERS 14xx] 14xx (Benutzer_Angemeldet
[MAXIMALE_BENUTZER 14xx] 14xx)
Setzen auf WAHR, wenn der Benutzer
gegenwärtig
bei Tabelle angemeldet ist, andernfalls FALSCH.
- User_Refresh_DB [MAXIMUM-USERS 14xx] 14xx (Benutzer_Auffrischung_DB
[MAXIMALE-BENUTZER 14xx] 14xx)
Setzen auf WAHR, wenn dieser
Benutzer über
Veränderungen
benachrichtigt werden muß,
die in der Tabelle vorgenommen werden, die ein vollständiges Herunterfahren/Neustarten
der Tabellendatei benötigen
(wie dann, wenn Datenträger
hinzugefügt
oder entfernt werden, wenn Benutzer angemeldet sind, usw .).
- User_Receiving_Request 14xx (Benutzer_Empfängt_Anforderung 14xx)
Benutzerzahl
der empfangenden Partei, andernfalls Setzen auf MAXIMUM USERS 14xx.
- User-Sending-Request 14xx (Benutzer-Sendet-Anforderung 14xx)
Benutzerzahl
der sendenden Partei, andernfalls Setzen auf MAXIMUM USERS 14xx.
- Volume_With_Request_Position 14xx (Datenträger_Mit_Anforderung_Position
14xx)
Index von Beginn der Datei der Datenträgeraufzeichnung,
die Anforderung betreffend, andernfalls 0.
- Request_Response 14xx (Antwort_Anforderung 14xx)
Setzen
auf WAHR, wenn die Antwort positiv war und die Antwort Nachricht
gültig
ist.
- Sender_Message 14xx (Sender_Nachricht 14xx)
Pascal-Stil-Zeichenfolge
einer Nachricht, die als Teil einer Anforderung von dem Sender an
den Empfänger gesendet
werden soll.
- Response_Message 14xx (Antwort_Nachricht 14xx)
Pascal-Stil-Zeichenfolge
der Nachricht, die als Teil einer Anforderung von dem Empfänger an
den Sender gesendet werden soll.
- DB_Header_Filler [400] [DB_Anfangsblock_Ftüller [400] )
Reserviert.
Sollte auf 0 gesetzt sein.
-
Partition Volume Record
[MAXIMUM VOLUMES 14xx] 14xx (Partitions Datenträger Aufzeichnung [MAXIMALE DATENTRÄGER 14xx]
14xx)
-
Der
Volume DB Header 14xx wird gefolgt durch MAXI-MUM VOLUMES 14xx (200) Partition Volume Record's 14xx. Eine Beschreibung
jedes der Felder ist wie folgt:
-
- Volume_Info 14xx (Datenträger_Info 14xx)
Das Feld
ist eine Partition Volume Header 14xx-Aufzeichnung und enthält Informationen
in Bezug auf den nächsten
Datenträger
in der Tabelle. Siehe unten für
eine vollständige
Beschreibung der Felder.
- Users [MAXIMUM_USERS 14xx] 14xx (Benutzer [MAXIMALE_BE-NUTZER 14xx] 14xx)
Dieses
Feld ist ein Array von Partition_User_Record 14xx-Aufzeichnungen und
enthält
Informationen in Bezug auf die bis zu MAXIMUM USERS 14xx (200) Benutzer
des Datenträgers.
Siehe unten für
eine vollständige
Beschreibung der Felder.
-
Partition Volume Header
14xx (Partitions Datenträger
Anfangsblock 14xx)
-
Eine
Beschreibung der Partition_Volume_Header 14xx-Aufzeichnung-Felder ist wie folgt:
-
- Volume_Name 14xx (Datenträger_Name 14xx)
Pascal-Zeichenfolge
des Namens des Datenträgers.
- Writer_User_Number 14xx (Schreiber_Benutzer_Zahl 14xx)
Benutzerzahl,
die einen Schreibzugriff auf den Datenträger aufweist. Falls keiner,
Setzen auf MAXIMUM USERS 14xx.
- Volume_Last_Modified_Time 14xx (Datenträger_Zuletzt_Modifiziert Zeit
14xx)
Enthält
die letzte Zeit, zu der die Software bemerkt hat, daß der Datenträger verändert wurde.
- Vol_Header_Filler [100] 14xx (Datenträger_Anfangsblock_Füller [100]
14xx)
Reserviert, sollte auf 0 gesetzt sein.
-
Parition User Record 14xx
(Partitions Benutzer Aufzeichnung 14xx)
-
Eine
Beschreibung der Partition User Record 14xx-Aufzeichnung-Felder
folgt:
-
- User_Number 14xx (Benutzer_Zahl 14xx)
Dies ist die
Benutzerzahl in der Tabelle. Sie muß gleich ihrem Index in das
Benutzer- [MAXIMUM USERS 14xx]-Array sein.
- Write_Access 14xx (Schreib_Zugriff 14xx)
Setzen auf WAHR,
wenn der Benutzer Lese/Schreib-Zugriff aufweist, andernfalls FALSCH.
- Mount_Access 14xx (Zugriff_Anbringen bzw. _Vorbereiten 14xx)
Setzen
auf WAHR, wenn der Benutzer will, daß der Datenträger für einen
Zugriff vorbereitet werden soll.
- Auto_Update 14xx (Auto_Aktualisierung 14xx)
Setzen auf
WAHR, wenn der Benutzer möchte,
daß der
Datenträger
automatisch auf Veränderungen
hin geprüft
und aktualisiert wird. Wenn FALSCH, ist das Auto Update Check Seconds
14xx- (Auto Aktualisierung_Prüfung_Sekunden
14xx-) Feld unten ungültig.
- Auto_Update_Check_Seconds 14xx (Auto_Aktualisierung_Prüfung_Sekunden
14xx)
Wenn Auto Update 14xx WAHR ist, stellt dies die Anzahl
von Sekunden dar, die verstreichen müssen, bevor der Datenträger wieder
auf Veränderungen
hin überprüft wird.
- Last_Modified_Time 14xx (Zuletzt_Modifiziert_Zeit 14xx)
Enthält die letzte
Zeit, zu der der Benutzer bemerkt hat, daß der Datenträger verändert wurde.
- Reserved [50] (Reserviert [50])
Reserviert, sollte auf
0 gesetzt sein.
Auf jedem Host-Computer befindet sich eine
Bevorzugungsdatei, die aus einer Preference Record 14xx (Bevorzugung
Aufzeichnung 14xx) besteht. Der Zweck dieser Informationen besteht
darin, jedem Host eine eindeutige Benutzerzahl im Inneren der Datenträgertabelle
zu ermöglichen,
so daß jeder
Host sich in der Datenträgertabelle
anmelden kann und seinen eigenen Satz von Parametern haben kann,
die für
jedes Dateisystem konfiguriert sind.
- File_Signature 14xx (Datei Signatur_14xx)
Dies ist auf
einen eindeutigen Wert gesetzt, der anzeigt, daß die folgenden Informationen
sehr wahrscheinlich ein gültiger
Satz Daten sind, auf die man sich als Preference Record 14xx verlassen
kann.
- Admin_Expired 14xx (Verw_Abgelaufen 14xx)
Dies ist ein
Wert, entweder auf WAHR oder FALSCH gesetzt, der anzeigt, ob dies
eine abgelaufene DEMO-Kopie der Software ist.
- Total_tables 14xx (Gesamt_Tabellen 14xx)
Dieser Wert zeigt
die Gesamtzahl von Datenträgertabellen
an, die konfiguriert und bei einer vorherigen Suche gefunden wurden.
Dies ist die Zahl, von der automatisch erwartet wird, daß sie bei
einem Netto-Hochfahren gefunden wird.
- SB_Process_Ticks 14xx (SB_Prozeß_Ticks 14xx)
Dies ist
ein Zeitwert zwischen Zeiten, wenn die Datenträgerdateisteuerungs-Softwarekomponente
aufgerufen wird, um Benutzer-Ereignisse oder Tabellenänderungen
zu prüfen.
- Monitor_DB_Ticks 14xx
Dies ist der Zeitwert, der ablaufen
muß, bevor
die Datenträgerdateisteuerungs-Softwarekomponente
auf Tabellenveränderungen
hin prüft,
wie z. B. eine Anforderung nach einem Schreibzugriff von einem weiteren
Benutzer.
- User_Name 14xx (Benutzer_Name 14xx)
Dies ist eine Zeichenfolge,
die den Namen des Benutzers anzeigt, nach dem nach einer Datenträgertabelle-Anmeldung
gesucht wird, aus der eine Benutzerzahl erzeugt und für einen
späteren
Zugriff verwendet werden soll.
- Admin_Password 14xx (Verw_Paßwort 14xx)
Dies ist eine
Zeichenfolge, die das gegenwärtige
Paßwort
anzeigt, das für
einen Zugriff auf die Administratorfunktionen der Datenträgerdateisteuerungs-Softwarekomponente
für diesen
Host benötigt
wird.
- Volume_Volume_Names[MAXIMUM_Volume] 14xx (Datenträger_Datenträger_Namen[MAXIMAL
Datenträger]
14xx)
Dies ist ein Array von Zeichenfolgen, die die Namen des
Dateisystems anzeigen, wo die Datenträgerdateisteuerungs-Softwarekomponente
nach Datenträgertabellen
suchen sollte.
- Pref_Filler [396] 14xx (Bevorz_Füller [396] 14xx)
Dies
ist ein Array von Bytes, die ein Platzhalter für eine zukünftige Erweiterung sind.
- Ignore Bad_Mounts 14xx (Ignorieren_Schlechter_Vorbereitungen
14xx)
Dies ist eine Variable, die auf WAHR oder FALSCH gesetzt
sein kann, die anzeigt, ob der Benutzer über Fehler während Vorbereitungsversuchen
von Dateisystemen, die fehlschlagen, informiert werden sollte.
- Lockout_Access_Changes 14xx (Sperren_Zugriff_Veränderungen
14xx)
Dies ist eine Variable, die auf WAHR oder FALSCH gesetzt
sein kann, die anzeigt, ob der Benutzer Veränderungen an der Datenträgertabelle
vornehmen darf, wie z. B. Anforderungen einer Veränderung
von Lese/Schreib-Berechtigungen. Dies kann durch den Administrator
gesetzt werden, wenn bestimmt wird, daß ein Benutzer nicht in der
Lage sein sollte, Einstellungen zu verändern.
- Keep_DB_Volume_Locked 14xx (DB_Datenträger_Verriegelt_Halten 14xx)
Dies
ist eine Variable, die auf WAHR oder FALSCH gesetzt sein kann und
anzeigt, ob die Datenträgerdateisteuerungs-Softwarekomponente
das Dateisystem behält,
wo die Datenträgertabellendatei
verriegelt angeordnet ist oder nicht. Es ist vorzuziehen, daß dies auf
WAHR gesetzt ist, ist jedoch kein Erfordernis.
- Keep DB_Volume_Unmounted 14xx (DB_Datenträger_Entvorbereitet_Halten 14xx)
Dies
ist eine Variable, die auf WAHR oder FALSCH gesetzt sein kann und
anzeigt, ob die Datenträgerdateisteuerungs-Softwarekomponente
die Dateisysteme behalten sollte, wo Datenträgertabellen entvorbereitet
angeordnet sind. Es ist vorzuziehen, daß dies auf WAHR gesetzt ist,
wobei dies jedoch kein Erfordernis ist.
Eine Volume Node Record
14xx (Datenträger
Knoten Aufzeichnung 14xx) ist eine Datenstruktur, die durch die Datenträgerdateisteuerungs-Softwarekomponente
verwendet wird, in der Form einer verbundenen Liste, nämlich einer
für jedes
Dateisystem, das überwacht
werden soll.
- Next_Volume_Node 14xx (Nächster_Datenträger_Knoten
14xx)
Dies ist eine Variable, die ein Zeiger auf die nächste Volume
Node Record 14xx in der verbundenen Liste ist.
- Volume_Reference 14xx (Datenträger_Referenz 14xx)
Dies
ist eine Datenstruktur, die eine Referenz auf das Dateisystem und
seine internen betriebssystemabhängigen
Strukturen ist. Sie wird für
eine Referenz des Dateisystems verwendet, um weitere Informationen,
wie z. B. freien Raum, letzte modifizierte Zeit, usw., zu verriegeln/entriegeln,
vorzubereiten/entvorzubereiten und zu finden.
- Volume_Check_Timer 14xx (Datenträger_Prüfung_Zeitgeber 14xx)
Diese
Variable ist ein Zeitgeber, der, wenn er abgelaufen ist, anzeigt,
daß es
Zeit ist, den Datenträger
zu prüfen, um
zu sehen, ob er aufgefrischt werden muß.
- Free_Megabytes 14xx (Freie_Megabytes 14xx)
Diese Variable
zeigt die Menge freien Raums auf dem Dateisystem an.
- Volume_Record_Position 14xx (Datenträger_Aufzeichnung_Position 14xx)
Diese
Variable ist eine Anzeige der Position in der Datenträgertabelle,
die dieses Dateisystem für
diesen Host beschreibt.
- User_Record_Position 14xx (Benutzer_Aufzeichnung_Position 14xx)
Diese
Variable ist eine Anzeige der Position in der Datenträgertabelle,
die diese Benutzerinformationen für diesen Host anzeigt.
- SN_DB_File_Reference 14xx (SN_DB_Datei_Referenz 14xx)
Diese
Variable ist eine Referenzdatenstruktur, die zum Zugriff auf die
Datenträgertabelle
selbst verwendet wird.
- Volume_Enabled 14xx (Datenträger_Aktiviert
14xx)
Dies ist eine Variable, entweder WAHR oder FALSCH, die
anzeigt, ob dieses Dateisystem aktiviert oder deaktiviert ist. Deaktivierte
Dateisysteme weisen keine normalen Über wachungsfunktionen auf,
die denselben zugeordnet sind. Dies bedeutet, daß deaktivierte Datenträger nicht
aktualisiert und aufgefrischt werden, falls dies nötig ist.
Normalerweise sind Datenträger
aktiviert, wobei so ermöglicht
wird, daß das
Dateisystem an dem System als eine normale Entität teilnimmt.
-
Einige
Datenstrukturen, die global für
die Datenträgerdateisteuerungs-Softwarekomponente
nützlich sind,
sind die folgenden:
-
- SB_Admin_Preferences 14xx (SB_Verw_Bevorzugungen 14xx)
Die
Preference File Record 14xx (Bevorzugung Datei Aufzeichnung 14xx)
für diesen
Host.
- Head_Volume_Node 14xx (Kopf_Datenträger_Knoten 14xx)
Ein Zeiger
auf den Anfang der verbundenen Liste von Volume Node Records 14xx,
die zum Durchsuchen der Liste von dem Anfang verwendet werden.
- Tail_Volume_Node 14xx (Ende_Datenträger_Knoten 14xx)
Ein Zeiger
auf das Ende der verbundenen Liste von Volume Node Records 14xx,
die zur Einfügung
neuer Aufzeichnungen verwendet werden.
- Current_Volume_Node 14xx (Gegenwärtiger_Datenträger_Knoten
14xx)
Ein Zeiger auf die gegenwärtige, gerade überwachte
Volume Node Record 14xx.
- Current_DB_Header Ptr 14xx (Gegenwärtiger_DB_Anfangsblock_Zeiger
14xx)
Ein Zeiger auf dem gegenwärtigen Volume_DB_Header (Datenträger DB Anfangsblock)
der Tabelle, der das gegenwärtige
gerade überwachte
Dateisystem hauptleitungsmäßig bearbeitet,
wie angezeigt durch Current Volume Node 14xx
- Current_DB_Volume_Header_Ptr 14xx (Gegenwärtiger_DB_Datenträger_Anfangsblock_Zeiger
14xx)
Ein Zeiger auf den gegenwärtigen Partition Volume_Header
14xx (Partition Datenträger
Anfangsblock 14xx), der zu dem gegenwärtigen gerade überwachten
Dateisystem gehört.
- Current_DB_User_Record_Ptr 14xx (Gegenwärtiger_DB_Benutzer_Aufzeichnung_Zeiger
14xx)
Ein Zeiger auf die gegenwärtige Parition_User_Record
14xx (Partition_Benutzer_Aufzeichnung 14xx), die zu dem gegenwärtigen gerade überwachten
Dateisystem gehört.
- SB_Process_Timer 14xx (SB_Prozeß_Zeitgeber 14xx)
Ein
Zeitgeber, der, wenn er abgelaufen ist, anzeigt, daß es Zeit
ist, das nächste
Dateisystem zu prüfen.
- Monitor_DB_Timer 14xx (Überwacher_DB_Zeitgeber
14xx)
Ein Zeitgeber, der, wenn er abgelaufen ist, anzeigt,
daß es
Zeit ist, auf bevorstehende Tabellenanforderungen hin zu prüfen.
- Administration_Mode 14xx (Verwaltung_Modus 14xx)
Eine Variable,
entweder WAHR oder FALSCH, die anzeigt, wann die Datenträgerdateisteuerungs-Softwarekomponente
mit Administratorfunktionen arbeitet, die für den Benutzer verfügbar sind.
- Restart_Volume 14xx (Neustart_Datenträger 14xx)
Eine Variable,
entweder WAHR oder FALSCH, die anzeigt, ob es Zeit ist, das System
herunterzufahren und neu zu starten, indem alle Tabellen abgemeldet
und wieder neu angemeldet werden.
- Suspend_Operations 14xx (Operationen_Aussetzen-14xx)
Eine
Variable, entweder WAHR oder FALSCH, die anzeigt, ob die gesamte
Dateisystem- und Tabellenüberwachung
ausgesetzt werden sollte.
-
4 ist ein detailliertes
Datenstrukturdiagramm für
ein eindeutiges Dateiverzeichnisformat, das auf beiden Klienten
A–B unter
Verwendung der gegenwärtigen
Erfindung implementiert werden kann. Diese Verzeichnisstruktur kann
trotz des Betriebssystems auf jedem Klienten, und zwar durch die
Protokollumwandlungsmodule 268, die oben in 2C erläutert wurden, beibehalten werden.
In 4 gezeigt sind das
Dateiverzeichnis 62 und eine physische Adreßabbildung 452 für die Speichervorrichtung 64.
Das Dateiverzeichnis 62 weist einen Datenträgeranfangsblock 454,
eine Verzeichnisaufzeichnung 456, eine Dateiaufzeichnung 458 und
eine Dateiortsaufzeichnung (Extent) 460 auf. Diese Verzeichnisstruktur
ist im allgemeinen dem HFS-Dateiverzeichnisformat zugeordnet, das
dem Betriebssystem System 8 zugeordnet ist, das mit MacIntosh®-Computern
geliefert wird. Der Datenträ geranfangsblock 454 enthält den Namen
des Datenträgers,
sein Erzeugungsdatum, sein Aktualisierungsdatum, eine Softwareverriegelung,
eine Auflistung von Attributen und Berechtigungen und eine Datenträgerverfügbarkeits-Bittabelle
und eine Anzahl weiterer Parameter, die den physischen Datenträger breit
definieren. Der Datenträgeraufzeichnung 454 zugeordnet
ist eine Mehrzahl von Verzeichnisaufzeichnungen, wobei auf die Aufzeichnung 456 verwiesen
wird. Jede Verzeichnisaufzeichnung umfaßt einen Zeiger auf ein Stammverzeichnis,
einen Namen, eine Erzeugungszeit und eine Modifizierungszeit. Als
nächstes
folgt die Mehrzahl von Dateiaufzeichnungen, die jedem Verzeichnis
zugeordnet sind, wobei auf die Dateiaufzeichnung 458 verwiesen
wird. Jede Dateiaufzeichnung enthält einen Namen, einen Typ,
einen Verriegelungsindikator, eine Erzeugungs- und eine Modifizierungszeit
und weitere Dateiebenen-Informationen. Jeder Datei- und Verzeichnisaufzeichnung
zugeordnet ist eine Mehrzahl von Dateiortsaufzeichnungen, wobei auf
die Aufzeichnung 460 verwiesen wird. Jede Dateiortsaufzeichnung
umfaßt
einen Zeiger auf die physische Adresse, bei der die Datei beginnt,
und eine Anzeige in Bezug auf die Länge der Datei. Wenn eine Datei
in nicht-zusammenhängenden
Segmenten gespeichert ist, gibt es einen Überlaufindikator, der die physische Adresse
des nächsten
Abschnitts der Datei und die Länge
dieses Abschnitts anzeigt. Wie in der physischen Adreßaufzeichnung 452 angezeigt
ist, entsprechen die Dateiortsaufzeichnungsadressen und Adreßlängen den
tatsächlichen
physischen Adreßorten
des Dateiinhalts. In der Dateiortsaufzeichnung 460 z. B.
ist eine Datei EINS als bei der physischen Adresse 1000 beginnend
mit einer Länge
von 44 Sektoren aufgelistet. In der physischen Adreßaufzeichnung 452 beginnt
die Datei EINS bei einer physischen Speicheradresse 1000 und erstreckt
sich bis zu der physischen Adresse 1044 über eine
Gesamtlänge
von 44 Sektoren. Jedes Betriebssystem weist seine eigene Dateiverzeichnisstruktur
auf, die in zahlreichen Aspekten von der in 4 offenbarten unterschiedlich ist. Bei
einem bevorzugten Ausführungsbeispiel
dieser Erfindung, das oben in 2C erläu tert wurde,
setzen Protokollumwandlungs-Module 268, die jedem von Klientenprozessen 214 – 216 zugeordnet
sind, ein einheitliches Dateiverzeichnisformat trotz des Betriebssystems
auf jedem Klienten durch. Dies stellt sicher, daß es eine plattformübergreifende
Kompatibilität
zwischen jeder Anwendung auf einem der Klienten trotz des OS gibt,
das auf dem Klienten vorhanden sein kann. So kann ein Klient, der
auf dem Betriebssystem Macintosh System 8® läuft, eine
Datei lesen oder schreiben, die durch einen weiteren Klient erzeugt wurde,
der unter dem Betriebssystem Windows NTTM arbeitet.
-
Die 5A – 5E zeigen die Prozesse 214 – 216,
die jeweiligen Klienten A und B zugeordnet sind, wie in 2A gezeigt ist. Jeder Klient
implementiert alle Fähigkeiten,
die in den 5A – 5E gezeigt sind.
-
Die
Prozesse, die einem Hochfahren und Anmelden zugeordnet sind, sind
in 5A gezeigt. Beginnend
mit einem Prozeß 500 werden
die Vorrichtungstreiber und die Datenträgersteuerungs-Prozesse auf
den Klienten geladen. Die Steuerung gelangt dann zu Prozeß 502,
in dem sich die Vorrichtungstreiber, die kundenspezifisch angepaßt wurden,
um das Verriegelungsmerkmal einzuschließen, befinden. Zusätzlich wird
ein spezifischer Vorrichtungstreiber, der mit dem physischen Datenträger verbunden
ist, der die Datenträger- und Zugriffssteuerungstabellen
[siehe 2C] enthält, identifiziert.
Die Steuerung gelangt dann zu einem Entscheidungsprozeß 504.
In dem Entscheidungsprozeß 504 wird
eine Bestimmung durchgeführt,
ob eine Datenträger- und
Zugriffssteuerungstabelle erzeugt wurde. Wenn diese Bestimmung negativ
ist, gelangt die Steuerung zu einem Prozeß 506, bei dem der
Datenträgersteuerungsprozeß einem
Administrator eine Schablone vorlegt, auf der eine Zugriffs- und
Datenträgersteuerungstabelle
erzeugt werden soll. Die Steuerung gelangt dann zu einem Prozeß 508,
bei dem die neu-erzeugten Zugriffs- und Datenträgersteuerungstabelle auf einem
Datenträger
mit einem kundenspezifischen, d. h. verriegelbaren Treiber gespeichert
werden. Die Steuerung gelangt dann zu einem Entscheidungsprozeß 512.
Alternativ gelangt, wenn in dem Entscheidungsprozeß 504 eine
bejahende Bestimmung erzielt wird, d. h. eine Datenträgersteuerungstabelle
liegt vor, die Steuerung direkt zu dem Entscheidungsprozeß 512.
-
In
dem Entscheidungsprozeß 512 wird
eine Bestimmung durchgeführt,
ob das Semaphorenfeld 352[siehe 3A] leer ist. Wenn diese Bestimmung
negativ ist, gelangt die Steuerung zu Prozessen 510 für die Einführung einer
Verzögerung,
wonach die Verzögerungsintervallsteuerung
zu dem Entscheidungsprozeß 512 zurückkehrt.
Wenn eine bejahende Bestimmung in dem Entscheidungsprozeß 512 erreicht
wird, d. h. das Semaphorenfeld 352 der Zugriffssteuerungstabelle 206 [siehe 2A] ist leer, gelangt die
Steuerung zu einem Prozeß 514.
Bei dem Prozeß 514 wird
der Klientenidentifizierer in das Semaphorenfeld geschrieben. Die
Steuerung gelangt dann zu einem Prozeß 516, bei dem der
Klient, der die Zugriffs- und
Steuertabelle ergriffen hat, die Zugriffs- und Steuerungstabellen
liest. Die Steuerung gelangt dann zu einem Entscheidungsprozeß 518. In
dem Entscheidungsprozeß 518 wird
eine Bestimmung durchgeführt,
ob der Klientenidentifizierer in dem Feld 352 die ID des
Klients ist, auf dem der Prozeß läuft. Wenn
diese Bestimmung negativ ist, hat der Klient keine Steuerung der
Zugriffs- und Datenträgertabellen
ergriffen. Deshalb kehrt die Steuerung zurück zu dem Entscheidungsprozeß 512.
Wenn eine Bestimmung in dem Entscheidungsprozeß 518 bejahend durchgeführt wird,
daß ein
Klient die Steuerung der Zugriffs- und Steuertabelle ergriffen hat,
gelangt die Steuerung zu einem Prozeß 522. In dem Prozeß 522 liest
der Klient die Zugriffs- und Datenträgersteuerungstabellen. Die
Steuerung gelangt dann zu einem Prozeß 520. In dem Prozeß 520 schreibt
der Klient seine ID in das entsprechende Anmeldefeld 356 [siehe 3A] in der Zugriffssteuerungstabelle 206.
Die Steuerung gelangt dann zu einem Prozeß 524. In dem Prozeß 524 gibt
der Klient die Zugriffs- und Steuerungstabellen durch ein Entfernen
seines Identifizierers aus dem Semaphorenfeld 352 frei.
Die Steuerung gelangt dann zu Prozessen 526, in denen das Zugriffssteuerungs-Modul 266[siehe 2C] die Zugriffsberechtigungen
für jede
physische Vorrichtung gemäß den Berechtigungen
setzt, die in der Zugriffs- und Steuerungstabelle für den spezifischen
Klient angezeigt sind, auf dem dieser Prozeß läuft. Wie oben in 2C erläutert wurde, werden diese Berechtigungen
durch den Datenträgersteuerungsprozeß gesetzt,
der Datenträger-Vorbereiten-Befehle
an das Befehlsempfangs-Modul 98 sendet, die durch entweder
eine Lese- oder Lese/Schreibberechtigung begleitet werden. Die Steuerung
gelangt dann zu einem Verbindungsblock A.
-
5B zeigt die Prozesse,
die auf einem Klient ausgeführt
werden, der einem Anfordern einer Schreibberechtigung für ein Dateisystem
oder einen Datenträger
zugeordnet ist. Beginnend bei dem Verbindungsblock A gelangt die
Steuerung zu einem Entscheidungsprozeß 550. In dem Entscheidungsprozeß 550 wird
eine Bestimmung durchgeführt,
ob eine Schreibanforderung durch den Datenträgersteuerungsprozeß 266 [
siehe 2C] empfangen
wurde. Diese Schreibanforderung kann zu jeder Zeit durch den Datenträgersteuerungsprozeß über eine
graphische Benutzerschnittstelle (GUI) empfangen werden. Die GUI
ermöglicht es
einem Benutzer, einen spezifischen Datenträger auszuwählen, in Bezug auf den der
Benutzer Lese-Berechtigungen aufweist, sowie anzufordern, daß diese
Berechtigungen zu Schreibberechtigungen verändert werden. Alternativ kann
eine Schreibanforderung programmäßig über einen
weiteren Prozeß durchgeführt werden.
Wenn eine negative Bestimmung erzielt wird, d. h. keine Schreibanforderung
wurde durch den Datenträgersteuerungsprozeß empfangen
oder erzeugt, gelangt die Steuerung zu einem Verbindungsblock D.
Alternativ gelangt, wenn in dem Entscheidungsprozeß 550 eine
bejahende Bestimmung erzielt wird, die Steuerung zu einem Entscheidungsprozeß 554.
In dem Entscheidungsprozeß 554 wird
eine Bestimmung durchgeführt,
ob ein Semaphor in dem Feld 352 in der Zugriffssteuerungstabelle
[siehe 3A] vorhanden
ist. Falls diese Bestimmung negativ ist, gelangt die Steuerung zu
einem Prozeß 552 zur
Einführung
einer Pause. Die Steuerung kehrt dann zurück zu dem Entscheidungsprozeß 554.
Wenn eine bejahende Bestimmung in dem Entscheidungsprozeß 554 erzielt
wird, gelangt die Steuerung zu einem Prozeß 556, bei dem ein
Schreibbefehl ausgegeben wird und der Identifizierer für den Klient,
auf dem der Prozeß läuft, an
das Feld 352 geschrieben wird. Die Steuerung wird dann
zu einem Prozeß 558 geleitet.
In dem Prozeß 558 wird
der Wert für
das Feld 352 gelesen. Die Steuerung wird dann zu einem
Entscheidungsprozeß 560 geleitet.
Bei der Entscheidung 560 wird eine Bestimmung durchgeführt, ob
der Wert in dem Feld 352 der Klienten-ID des Klienten entspricht,
auf dem der Prozeß läuft. Falls
diese Bestimmung negativ ist, kehrt die Steuerung zurück zu dem
Entscheidungsprozeß 554.
Alternativ gelangt, wenn eine bejahende Bestimmung in dem Entscheidungsprozeß 560 erzielt
wird, die Steuerung zu einem Entscheidungsprozeß 562. In dem Entscheidungsprozeß 562 wird
eine Bestimmung auf der Basis des Zugriffsvorbereitungsfelds 338 [siehe 3B] durchgeführt, ob
dieser bestimmte Klient den Datenträger vorbereiten kann, auf den
die Schreibanforderung gerichtet ist. Wenn diese Bestimmung negativ
ist, gelangt die Steuerung zu einem Prozeß 570, bei dem eine
Benachrichtigung gegeben wird, daß die Schreibanforderung abgelehnt
wurde. Die Steuerung gelangt dann zu dem Verbindungsblock D. Alternativ
gelangt, wenn in dem Entscheidungsprozeß 562 eine Bestimmung
erreicht wird, daß der
Datenträger
in Bezug auf diesen bestimmten Klienten, auf dem der Prozeß läuft, vorbereitbar
ist, die Steuerung zu einem Entscheidungsprozeß 564. In dem Entscheidungsprozeß 564 wird
eine Bestimmung auf der Basis der Felder 396 [ siehe 3B] durchgeführt, ob
dieser Klient einen Schreibzugriff für den spezifischen Datenträger erhalten
kann, oder ob der Klient für
einen Anforderungszugriff gesperrt ist. Wenn eine bejahende Bestimmung
erzielt wird, d. h. der Klient kann keinen Schreibzugriff erhalten,
gelangt die Steuerung zu dem Prozeß 570, der oben erläutert ist.
Alternativ gelangt, wenn eine negative Entscheidung in dem Entscheidungsprozeß 564 erzielt
wird, d. h. der Klient ist für
ein Erhalten eines Schreibzugriffs auf den Datenträger nicht
gesperrt, die Steuerung zu einem Entscheidungsprozeß 566.
In dem Entscheidungsprozeß 566 wird
eine Entscheidung auf der Basis des Feldes 394 [siehe 3B] und der Felder 356 [siehe 3A] durchgeführt, ob
der gegenwärtige
Schreiber sich tatsächlich
an dem Netz abgemeldet hat. Wenn diese Bestimmung bejahend ist,
gelangt die Steuerung zu einem Prozeß 572, in dem ein
Entvorbereiten-Befehl
für den
Datenträger
ausgegeben wird. Die Steuerung wird dann zu einem Prozeß 574 geleitet,
bei dem ein Datenträger-Vorbereiten-Befehl
durch den Datenträgersteuerungsprozeß 266[siehe 2C] an das Befehlsempfangs-Modul 98 gesendet
wird. Dies bewirkt, daß der
Datenträger vorbereitet
wird, der die jüngsten
Veränderungen
widerspiegelt. Die Steuerung gelangt dann zu einem Prozeß 576,
in dem das Feld 394[siehe 3B]
in der Datenträgersteuerungstabelle
mit der ID des Klienten aktualisiert wird, auf dem der Prozeß läuft. Die
Steuerung gelangt dann zu einem Prozeß 578, bei dem der
Klient die Zugriffs- und Datenträgersteuerungstabellen
durch ein Entfernen seines Semaphors, d. h. der ID, aus dem Semaphorenfeld 352 [siehe 3A] der Datenträgersteuerungstabelle
freigibt. Die Steuerung gelangt dann zu einem Verbindungsblock C.
-
Alternativ
gelangt, wenn in dem Entscheidungsprozeß 566 eine Bestimmung
durchgeführt
wird, daß der
gegenwärtige
Schreiber sich nicht abgemeldet hat, die Steuerung zu einem Prozeß 568.
In dem Prozeß 568 wird
eine Schreibanforderung an das Anforderungsfeld 360 [siehe 3A] der Zugriffssteuerungstabelle geschrieben.
Diese Anforderung umfaßt
einen Identifizierer des Datenträgers,
an den die Schreibanforderung gerichtet ist; den Identifizierer
des Klienten, der die Anforderung stellt; und eine Textnachricht
von dem Anforderer. Der Identifizierer des Datenträgers, an
den die Schreibanforderung gerichtet ist, wird aus dem Feld 394 der
Datenträgeraufzeichnung
gelesen. Die Textnachricht kann manuell in eine GUI-Schnittstelle
eingegeben werden, die durch den Datenträgersteuerungsprozeß 266 [siehe 2] bereitgestellt wird.
Die Steuerung gelangt dann zu einem Entscheidungsprozeß 580.
In dem Entscheidungsprozeß 580 werden
das Antwortnachricht- und das Antwort-Boole-Feld 362 bzw. 354 [siehe 3A] gelesen und die Bestimmung
wird auf der Basis dieser Felder durchgeführt, ob die Schreibberechtigung
durch den gegenwärtigen
Schreiber abgegeben wurde. Wenn diese Bestimmung bejahend ist, gelangt
die Steuerung zu Prozeß 574,
wie oben erläutert
wurde. Alternativ gelangt die Steuerung, wenn diese Bestimmung negativ
ist, zu einem Prozeß 578,
in dem der gegenwärtige
Anforderer seine ID aus dem Semaphorenfeld 352 der Zugriffssteuerungstabelle
entfernt [siehe 3A],
wobei die Steuerung dann zu dem Verbindungsblock C.
-
5C zeigt die Prozesse,
die mit einer Antwort auf einen weiteren Klienten verbunden sind,
der eine Schreibzugriffsberechtigung anfordert. Der Prozeßabschnitt
beginnt bei einem Verbindungsblock B und die Steuerung gelangt zu
einem Prozeß 600.
In dem Prozeß 600 werden
die Zugriffssteuerungstabelle und insbesondere das Anforderungsnachrichtenfeld 360 [siehe 3A] gelesen. Die Steuerung
wird dann zu einem Entscheidungsprozeß 602 geleitet. In
dem Entscheidungsprozeß 602 wird
eine Bestimmung durchgeführt,
ob die Klienten-ID, die der Anforderung zugeordnet ist, der ID des
Klienten entspricht, auf dem der Prozeß läuft. Wenn eine bejahende Bestimmung
durchgeführt
wird, d. h. der Klient, auf dem der Prozeß läuft, ist der Klient, an den die
Anforderung gerichtet ist, gelangt die Steuerung zu einem Entscheidungsprozeß 604.
In dem Entscheidungsprozeß 604 wird
eine Bestimmung durchgeführt,
ob eine Auto-Antwort-Fähigkeit
für diesen
spezifischen Klienten aktiviert wurde. Bei einem bevorzugten Ausführungsbeispiel
könnte
diese Bestimmung auf der Basis noch eines weiteren Feldeintrags
in der Zugriffssteuerungstabelle 206 [siehe 3A] durchgeführt werden.
Es gäbe
bei diesem Ausführungsbeispiel
ein Feld, das jedem Klienten entspricht, in dem eine boolesche Wahr-Bedingung anzeigen
würde,
daß eine
Auto-Antwort aktiviert wurde, und eine boolesche Falsch-Bedingung
anzeigen würde,
daß dieselbe
nicht aktiviert wurde. Wenn eine Bestimmung in dem Entscheidungsprozeß 604 durchgeführt wird,
daß die
Auto-Antwort aktiviert wurde, würde
die Steuerung direkt zu einem Entscheidungsprozeß 610 gelangen. In
dem Entscheidungsprozeß 610 würde eine
Bestimmung auf der Basis der gegenwärtigen Verarbeitung auf dem
Klienten durchgeführt
werden, ob die Steuerung zu diesem Zeitpunkt abgegeben werden könnte. Wenn
z. B. der Klient in der Mitte der Ausführung eines großen Aufbereitungsprojekts ist,
würde eine
negative Entscheidung erzielt werden. Wenn eine derartige Bestimmung
erzielt wird, könnte
die Steuerung zu einem Prozeß 614 gelangen.
In dem Prozeß 614 würde der
antwortende Klient eine boolesche Falsch-Bedingung in das Antwortnachrichtenfeld 362 [siehe 3A] der Zugriffssteuerungstabelle
schreiben. Die Steuerung würde
dann zu dem Verbindungsblock D gelangen.
-
Alternativ
würde,
wenn in dem Entscheidungsprozeß 602 eine
Bestimmung durchgeführt
wird, daß die Klienten-ID,
die der Anforderung zugeordnet ist, nicht die ID des Klienten war,
auf dem der Prozeß abläuft, die Steuerung
direkt zu dem Verbindungsblock D geleitet werden.
-
Alternativ
würde,
wenn in dem Entscheidungsprozeß 604 eine
Bestimmung durchgeführt
wird, daß die Anforderung
von einem Klient bestellt wurde, auf dem der Prozeß läuft (Prozeßblock 602 JA)
und ferner, daß das
Auto-Antwort-Merkmal nicht aktiviert war, die Steuerung direkt zu
einem Prozeß 606 geleitet
werden. In dem Prozeß 606 wird
eine Nachrichtenaufforderung durch einen GUI-Abschnitt des Datenträgersteuerprozesses 622 [siehe 2C] dem Benutzer vorgelegt.
Dem Benutzer würde
die Alternative gegeben werden, die Anforderung mit Ja oder Nein
zu beantworten, sowie in die Antwort eine textbasierte Nachricht
einzuschließen. Diese
Antwort würde
an das Antwortnachrichten- und das Boole-Antwortfeld 362 bzw. 354 [siehe 3A] geschrieben werden.
Die Steuerung wird dann an einen Entscheidungsprozeß 608 weitergeleitet.
In dem Entscheidungsprozeß 608 wird
eine Bestimmung erzielt, ob der Benutzer eine Schreibberechtigung
abgegeben hat. Falls diese Bestimmung bejahend ist, gelangt die
Steuerung zu einem Prozeß 616.
In einem Entscheidungsprozeß 610 wird,
wenn eine Bestimmung durchgeführt
wird, daß die
Schreibsteuerung zu dem gegenwärtigen
Zeitpunkt nicht abgegeben werden kann, die Steuerung ebenso zu dem
Prozeß 616 geleitet.
In dem Prozeß 616 wird
die boolesche Wahr-Bedingung an die Zugriffssteuerungstabelle geschrieben
und insbesondere das boolesche Antwortfeld 354 [ siehe 3A]. Dies zeigt an, daß der Klient,
der die Anforderung empfängt
und gegenwärtig
Schreibberechtigungen aufweist, dabei ist, diese Berechtigungen
freizugeben. Die Steuerung wird dann zu einem Prozeß 618 geleitet.
In dem Prozeß 618 werden
alle Dateien auf dem angeforderten Datenträger geschlossen und der Datenträger wird
in Bezug auf einen Lese- und Schreibzugriff entvorbereitet und erneut
in einem Nur-Lese-Zugriffsmodus vorbereitet. Die Steuerung wird
dann an den Verbindungsblock D geleitet.
-
Alternativ
gelangt, wenn in dem Entscheidungsprozeß 608 eine Entscheidung
durchgeführt
wird, daß der
Benutzer gewählt
hat, die Schreibzugriffsberechtigung für den angeforderten Datenträger nicht
abzugeben, die Steuerung zu einem Prozeß 612. Bei Prozeß 612 wird
eine boolesche Falsch-Bedingung in die Zugriffssteuerungstabelle
geschrieben und insbesondere das boolesche Antwortfeld 354 derselben
[siehe 3A]. Die Steuerung
wird dann zu dem Verbindungsblock D geleitet.
-
5D zeigt den Abschnitt
der Prozesse, die mit einem Umwandeln einer Schreibberechtigung
in einen tatsächlichen
Schreibzugriff auf ein Dateisystem verbunden sind. Der Prozeßabschnitt
beginnt bei dem Verbindungsblock C, bei dem die Steuerung zu einem
Entscheidungsprozeß 650 geleitet
wird. In dem Entscheidungsprozeß 650 wird
eine Bestimmung auf der Basis von Feld 392 in der Datenträgersteuertabelle
[siehe 3B] durchgeführt, ob
der Datenträger,
an den die Schreibanforderung gerichtet ist, tatsächlich aktiviert ist.
Wenn diese Bestimmung negativ ist, wird die Steuerung zu einem Prozeß 666 geleitet,
bei dem eine Nachricht durch den GUI-Schnittstellenabschnitt des
Datenträgersteuerprozesses 266 [siehe 2C] an den Benutzer geliefert
wird, die anzeigt, daß der
Datenträger
deaktiviert ist und ein Schreibzugriff nicht bereitgestellt werden
kann. Die Steuerung wird dann zu dem Verbindungsblock B geleitet.
Alternativ gelangt, wenn in dem Entscheidungsprozeß 650 eine
bejahende Bestimmung erzielt wird, d. h. der Datenträger, an
den die Schreibanforderung gerichtet ist, ist tatsächlich aktiviert,
die Steuerung zu einem Entscheidungsprozeß 652. In dem Entscheidungsprozeß 652 wird
eine Bestimmung durchgeführt,
ob der Datenträger
für den
Klient vorbereitet ist, auf dem der Prozeß läuft. Wenn diese Bestimmung
negativ ist, wird die Steuerung zu einem Prozeß 658 geleitet, bei
dem der Datenträgersteuerungsprozeß 266 [siehe 2C] einen Vorbereiten-Befehl
mit Lese-Schreib-Berechtigungen an das Befehlsempfangs-Modul 98 [siehe 2C] sendet. Dies führt dazu,
daß der
Datenträger
mit Lese-Schreib-Berechtigungen
vorbereitet wird. Die Steuerung wird dann zu einem Entscheidungsblock 654 geleitet.
Alternativ wird, wenn in dem Entscheidungsprozeß 652 eine bejahende
Bestimmung erreicht wird, d. h. der Datenträger ist mit entweder einer
Lese- oder Lese/Schreibberechtigung vorbereitet, die Steuerung ebenso
zu dem Entscheidungsprozeß 654 geleitet.
In dem Entscheidungsprozeß 654 wird
eine Bestimmung durchgeführt,
ob ein Dateiverzeichnisebenen-Softwareverriegelungsbit in Bezug
auf diesen spezifischen Datenträger
aktiviert ist, und ob dieses Softwareverriegelungsbit einen Zugriff
auf den Datenträger
ausschließt.
Wenn diese Bestimmung bejahend ist, wird die Steuerung zu einem
Prozeß 660 geleitet. In
dem Prozeß 660 werden
die Softwareverriegelung und das Dateiverzeichnis entweder umgangen
oder deaktiviert. Bei einem bevorzugten Ausführungsbeispiel ist es vorzuziehen,
die Softwareverriegelung zu umgehen. Dies hat den Vorteil, daß vermieden
wird, daß Klienten
auf dem Netz, die die Datenträgersteuerungsprozeßform nicht
aufweisen, unbeabsichtigt auf den gesteuerten Datenträger zugreifen.
Die Steuerung wird dann zu einem Entscheidungsprozeß 656 geleitet.
Alternativ wird, wenn in dem Entscheidungsprozeß 654 entweder die
Bestimmung erzielt wird, daß keine
Softwareverriegelung auf der Dateiverzeichnisebene vorliegt, oder
daß die
Softwareverriegelung auf der Dateiverzeichnisebene durch die Befehle
des Datenträgersteuerungsprozesses 266 umgangen
werden kann, die Steuerung direkt zu einem Entscheidungsprozeß 656 geleitet.
-
In
dem Entscheidungsprozeß 656 wird
eine Bestimmung durchgeführt,
ob der Datenträger
gegenwärtig
mit Lese- und Schreibberechtigung vorbereitet ist. Falls die Bestimmung
negativ ist, wird die Steuerung zu einem Prozeß 662 geleitet, bei
dem der Datenträgersteuerungsprozeß 266 ein
Datenträger-Entvorbereiten
gefolgt durch ein Datenträger-Vorbereitung-Lesen/Schreiben
für den
angeforderten Datenträger
an das Befehlsempfangs-Modul 98 [siehe 2C] sendet. Dies hat die Wirkung eines
erneuten Vorbereitens des Datenträgers mit den Lese-Schreib-Berechtigungen
in Bezug auf diesen Klient. Die Steuerung wird dann zu dem Verbindungsblock
D geleitet. Alternativ gelangt, wenn in dem Entscheidungsprozeß 656 eine
bejahende Bestimmung erzielt wird, d. h. ein Datenträger vorbereitet
ist und mit Lese-Schreib-Berechtigungen
vorbereitet ist, die Steuerung direkt zu dem Verbindungsblock B.
Die Veränderungen
an dem Dateiverzeichnis, die durch die Prozesse aus 5D bewirkt werden, zeigen sich zuerst
in der zwischengespeicherten Kopie 166 des Dateiverzeichnisses,
die dem Datenträger
entspricht, für
den ein Schreibzugriff bereitgestellt wird [siehe 2C]. Die Aktualisierung der zwischengespeicherten
Kopie werden dann zu dem Dateiverzeichnis auf der physischen Vorrichtung 64 zurückgebracht
oder zurückgeschrieben,
was zu einem kohärenten
Satz von Dateiverzeichnissen führt,
in denen sich die neuen Zugriffsberechtigungen zeigen.
-
5E umfaßt den Abschnitt der Prozesse,
der Nur-Lese-Datenträgern zugeordnet
ist. Ein Klient, der in einen Nur- Lese-Zustand für einen Datenträger vorbereitet
ist, wird nicht in Bezug auf Veränderungen
an dem Dateiverzeichnis aktualisiert, die in Bezug auf diesen Datenträger stattfinden
könnten,
d. h. wenn Schreiboperationen an diesem Datenträger an anderen Klienten auf
dem System ausgeführt
werden. Für
diese Klienten, die eine Auto-Aktualisierungsfähigkeit möchten, liefern deshalb die
Prozesse aus 5E diese
Fähigkeit.
Die Prozesse beginnen an dem Verbindungsblock D, bei dem die Steuerung
zu einem Entscheidungsblock 700 gelangt. In dem Entscheidungsblock 700 wird
eine Bestimmung auf der Basis der Felder 384 [siehe 3B] der Datenträgersteuerungstabelle
durchgeführt,
ob Datenträger,
mit denen der Klient gegenwärtig
in einem Nur-Lese-Zustand verbunden ist, zur Auto-Aktualisierung
angezeigt sind. In Bezug auf jeden dieser Datenträger wird
das Zuletzt-Modifiziert-Zeit-Feld 386 [siehe 3B] für diesen bestimmten Klienten
in einem Prozeß 702 gelesen
und mit dem Feld 382 [siehe 3B]
verglichen. Der Zweck dieses Prozesses ist wie folgt.
-
Normalerweise
frischt ein Klient mit Nur-Lese-Berechtigungen für einen Datenträger seine
lokale zwischengespeicherte Kopie des Dateiverzeichnisses für den Datenträger nicht
auf. Als ein Ergebnis kann die Kopie veraltet werden, d. h. entweder
Verzeichnisse/Dateien zeigen, die nicht mehr existieren, oder Verzeichnisse/Dateien,
die existieren, nicht zeigen. Es ist deshalb wichtig, daß Klienten
mit Nur-Lese-Zugriff
in der Lage sind, über
die Option zu verfügen,
daß ihre
zwischengespeicherten Verzeichniskopien in periodischen Abständen aufgefrischt
werden, wenn andere Klienten Veränderungen
an dem Datenträger
vornehmen. Diese Auffrischungs- und Aktualisierungs-Option wird
durch das Feld 384 [siehe 3B]
bereitgestellt. Die Bestimmung, ob eine Auffrischung/Aktualisierung
benötigt
wird, wird in Prozessen 704 – 706 durchgeführt, an
die die Steuerung als nächstes
geleitet wird. Bei dem Prozeß 704 wird
ein Vergleich zwischen den Zeitstempeln für die letzte Datenträgerveränderung,
d. h. Feld 382, und der letzten Zeit durch geführt, zu
der der Klient eine Entvorbereitung und eine Vorbereitung ausgeführt hat,
um eine frische Kopie des Dateiverzeichnisses zu erhalten, d. h.
Feld 386. In dem Entscheidungsprozeß 706 wird eine Bestimmung
durchgeführt,
ob die zwischengespeicherte Verzeichniskopie des Klienten veraltet
ist. Wenn diese Bestimmung negativ ist, enthält der Klient die neueste Kopie
des Dateiverzeichnisses, das sich auf dem Datenträger befindet.
Die Steuerung gelangt deshalb zu dem Verbindungsblock A, da keine
Aktualisierung nötig
ist. Alternativ wird, wenn in dem Entscheidungsprozeß 706 eine
bejahende Bestimmung durchgeführt
wird, d. h. das zwischengespeicherte Dateiverzeichnis 166 [siehe 2C] ist veraltet, die Steuerung
zu einem Entscheidungsprozeß 708 geleitet.
In dem Entscheidungsprozeß 708 wird
eine Bestimmung durchgeführt,
ob das Zugriffssteuerungsdatenbank-Semaphorenfeld 352 [siehe 3A] leer ist. Wenn diese
Bestimmung negativ ist, wird die Steuerung zu einem Prozeß 710 geleitet.
In dem Prozeß 710 wird
eine Pause eingeführt,
nach der die Steuerung zu dem Entscheidungsprozeß 708 zurückkehrt.
Alternativ wird, wenn in dem Entscheidungsprozeß 708 eine Bestimmung durchgeführt wird,
daß das
Semaphorenfeld 352 verfügbar
wird, die Steuerung zu einem Prozeß 712 geleitet, bei
dem die Klienten-ID an das Semaphorenfeld in der Zugriffssteuerungstabelle 206 [siehe 3A] geschrieben wird. Die
Steuerung gelangt dann zu einem Prozeß 714, bei dem der
Semaphorenfeldabschnitt der Zugriffssteuerungstabelle gelesen wird
und die Steuerung dann zu einem Entscheidungsprozeß 716 geleitet
wird. In dem Entscheidungsprozeß 716 wird
eine Bestimmung durchgeführt,
ob die Klienten-ID, die in dem Semaphorenfeld vorhanden ist, identisch
mit der ID des Klients ist, der diesen Prozeß ausführt. Wenn diese Bestimmung
negativ ist, hat der Klient keine Steuerung der Zugriffssteuerungstabelle
ergriffen und die Verarbeitung kehrt zurück zu dem Entscheidungsprozeß 708.
Alternativ gelangt, wenn eine bejahende Bestimmung erzielt wird,
d. h. der Klient hat eine Steuerung der Zugriffssteuerungstabelle
ergriffen, die Steuerung zu einem Prozeß 718. In dem Prozeß 718 wird
ein Datenträ ger-Entvorbereiten-Befehl,
gefolgt durch einen Vorbereitenmit-Nur-Lese-Zugriff-Befehl durch
den Datenträgersteuerungsprozeß 266 [siehe 2C] an das Befehlsempfangs-Modul 98 gesendet.
Dies führt
dazu, daß eine
aktualisierte Kopie des Dateiverzeichnisses 166 dem Benutzer
bei einem Prozeß 720 angezeigt
wird. Die Benutzeranzeige kann Informationen in Bezug auf alle Datenträger und
den Status aller Klienten in Bezug auf diese Datenträger umfassen,
d. h. Vorbereiten/Entvorbereiten, Nur-Lesen, Lesen/Schreiben, Verriegelt/Entriegelt.
Die Steuerung gelangt dann zu dem Verbindungsblock A.
-
Verteilte Datenbank
-
6 zeigt eine Klient-Datenbank-Server-Konfiguration
des Stands der Technik. Die Hardware-Komponenten umfassen Klienten 54 – 56,
einen Server 60 und eine Speichervorrichtung 64.
Eine Datenbank 754 mit mehreren Aufzeichnungen, wobei jede
eine Mehrzahl von Feldern aufweist, ist auf der Speichervorrichtung 64 gespeichert,
die durch eine SCSI-Verbindung
mit dem Server 60 verbunden ist. Der Server 60 ist über ein LAN
mit beiden Klienten 54 und 56 verbunden. Einer
der Klienten 54 oder 56 setzt eine Abfrage ab
und ansprechend auf diese Abfrage implementiert der Server 60 Datenbankfunktionen 750.
Dann erhält
der Server 60 eine Kopie 752 der Datenbank, die
auf der physischen Vorrichtung 64 gespeichert ist, und
sieht die Aufzeichnungen durch, um diejenigen zu finden, die mit
der Klientenabfrage übereinstimmen.
Dann liefert der Server nur diejenigen Aufzeichnungen, die mit der
Abfrage übereinstimmen,
an den Klienten. Diese Architektur des Stands der Technik hat den
Vorteil, daß der
umfassende Auftrag eines Sortierens und Durchsuchens der Datenbank
dem Hochgeschwindigkeitsserver überlassen
bleibt und es möglich
gemacht wird, daß weniger teure
Klient-Arbeitsplatzrechner sich mit dem Abfrageprozeß befassen.
-
7 zeigt ein weiteres Ausführungsbeispiel
der vorliegenden Erfindung, bei dem eine gemeinschaftlich verwendete
Ressource, d. h. eine Datenbank, einer verteilten Verwaltung durch
alle der Klienten unterworfen ist, mit denen dieselbe direkt verbunden
ist. Diese Architektur weist den Vorteil auf, daß kein Server zwischen der
physischen Vorrichtung, auf der die Datenbank gespeichert ist, und
den Klienten, die auf diese Datenbank zugreifen, benötigt wird.
Diese Architektur weist den Nachteil auf, daß jeder Klient eine vollständige Datenbankmaschine
implementieren muß.
Trotzdem kann in bestimmten Datenbankanwendungen, in denen die Datenbank
eine Serie von Feldern aufweist, wobei jedes einen Zeiger auf ein
umfangreiches Bild, eine Animation oder eine Videodatei aufweist,
die vorliegende Erfindung vorteilhaft verwendet werden. Bei diesem
Beispiel ist die Verarbeitungszeit auf einem der Klienten enger
mit dem Bildübertragungsprozeß korreliert
als mit dem tatsächlichen
Abfrage- und Durchschauprozeß,
der bei einem Finden des Zeigers auf die Bildaudiodatei oder Animation,
die übertragen
werden soll, ausgeführt
wird. Unter diesen Bedingungen ist es von Vorteil, wenn ein Server
kein Flaschenhals ist. Ebenso müßte eine
Modifizierung an diesem Ausführungsbeispiel
sein, daß mehrere
herkömmliche
Server vorhanden sind (mit ihren LAN-angeschlossenen Klienten),
die alle direkt mit dem gemeinschaftlich verwendeten Speicher verbunden
sein müßten, was
eine höhere
Datenverfügbarkeit erlauben
würde,
da alle Daten an einem einzelnen Ort gespeichert wären, der
durch alle Server (und deshalb durch alle Klienten) zugänglich ist.
-
Die
Komponenten aus 7 umfassen
die Klienten 54 – 56,
die als Klienten A bzw. B bezeichnet sind, und den Server 60 und
die Speichervorrichtung 64. Eine Datenbank 804 befindet
sich auf der physischen Speichervorrichtung 64 und umfaßt zusätzliche
Felder, die für
die Implementierung dieses Ausführungsbeispiels der
Erfindung geeignet sind. Diese zusätzlichen Felder werden detailliert
in den folgenden 9A – B beschrieben. Die Speichervorrichtung 64 ist direkt
mit jedem der Klienten A–B
verbunden. Die Netzverbindung kann z. B. ein Faserkanal sein, wie
in 2A beschrieben und
erläutert
ist. Dieser Typ von Netz liefert einen Kommunikationspfad mit sehr
hoher Bandbreite zwischen der Speichervorrichtung 64 und
jedem der Klienten. Dies ermöglicht
eine schnelle Übertragung
von bit-abgebildeten Bildern, Animation oder Ton-Clips ohne die Behinderung
eines Servers, der beseitigt wurde, wie durch eine Löschen-Markierung 212 angezeigt
ist. Die Klienten 54 – 56 enthalten
jeweils eine Zwischenspeicher-Kopie der Datenbanksortier-Indizes.
Die Sortier-Indizes 800 sind dem Klient 54 zugeordnet,
während
die Sortier-Indizes 802 dem Klient 56 zugeordnet
sind. Diese Indizes werden in periodischen Abständen von den Haupt-Indizes
aufgefrischt, die auf der tatsächlichen physischen
Vorrichtung 64 gespeichert sind. Jeder der Klienten 54 – 56 implementiert
verbesserte Datenbankprozesse 808 bzw. 810. Zusätzlich zu
den normalen Datenbankfunktionen der Abfrage, Übereinstimmung und Verriegelung
umfassen diese Prozesse außerdem
eine Aufzeichnungsverriegelungs-, Aufzeichnungsaktualisierungs-
und Datenträgersteuerungsfunktion,
die noch detaillierter erläutert
werden. Die Kohärenz
eines Datenbankzugriffs auf einzelne Aufzeichnungen und Felder innerhalb
einer Aufzeichnung wird mittels der Interaktion von klient-residenten
Prozessen 808 – 810 mit
einer Zugriffssteuerungstabelle 206, einer Datenträgersteuerungstabelle 208 und
einer Aktualisierungsliste 806 beibehalten, die sich alle
auf einem Datenträger
innerhalb der physischen Vorrichtung 64 befinden, wobei
der Datenträger
für alle
Klienten lese/schreib-zugänglich
ist.
-
8A zeigt die detaillierte
Datenstruktur für
die Zugriffssteuerungstabelle 206. Die Zugriffssteuerungstabelle
ist identisch zu der, die in 3A beschrieben
und erläutert
wurde. Diese Zugriffssteuerungstabelle wird in den Prozessen verwendet,
die in der folgenden 12F erläutert sind.
-
8B zeigt die detaillierte
Datenstruktur für
die Datenträgersteuerungstabelle,
die dem Lese-Datenträger 64 zugeordnet
ist, auf dem die Datenbank 804 [siehe 7] gespeichert ist. Es wird angemerkt,
daß in den
Sperrfeldern 396A jeder der Klienten 54 und 56 als
Boole-mäßig falsch
angezeigt ist, was bedeutet, daß beide
Schreibberechtigungen in Bezug auf diesen Datenträger aufweisen.
Zusätzlich
sind beide Klienten A und B in dem Feld 394A als gleichzeitig
eine Schreibberechtigung aufweisend identifiziert.
-
8C zeigt die detaillierte
Datenstruktur für
die Aktualisierungsliste 806 [siehe 7]. Die Aktualisierungsliste enthält für jedes
Klientenfeld 830 einen entsprechenden Aufzeichnungszeiger 832,
der dem Feld zugeordnet ist, das ein Klient gerade bearbeitet. Diese
Liste wird durch die verbesserten Datenbankprozesse 808 – 810 [siehe 7] zum Rundsenden von Aktualisierungen
an einem Feld an alle Klienten verwendet, die gegenwärtig die
entsprechende Aufzeichnung betrachten. Wie in Feldern 832 angezeigt
ist, betrachten gegenwärtig
beide Klienten 54 und 56 ein Feld innerhalb der
Aufzeichnung 2.
-
9A zeigt die detaillierten
Datenstrukturen, die einem Ausführungsbeispiel
einer relationalen Datenbank 804A der Datenbank 804,
die in 7 erläutert ist,
zugeordnet sind. Die relationale Datenbank umfaßt eine Namentabelle 804A-1,
eine Arbeitsadreßtabelle 804A-2 und
eine Heimadreßtabelle 804A-3.
Jede der Tabellen enthält
mehrere Felder und für
jedes Feld gibt es ein entsprechendes Verriegelungsfeld. In der
Tabelle 804A-1 gibt es ein Präfix- und ein Nachname-Feld
für jede
Aufzeichnung. Verriegelungsfelder 856 sind jedem der Präfix-Felder
zugeordnet und Verriegelungsfelder 858 sind den Nachname-Feldern
zugeordnet. In der Arbeitsadreßtabelle
befinden sich die Straßenfelder
und Ort-Felder für
jede Aufzeichnung. Jedem der Straße-Felder zugeordnet ist eine
entsprechende Feldverriegelung 862. Jedem der Ort-Felder
zugeordnet ist eine Feldverriegelung 864. Die Heimadreßtabelle 804A-3 umfaßt sowohl
ein Straßen- als auch ein Ort-Feld
für jede der
Aufzeichnungen. Das Straßenfeld
weist ein entsprechendes Verriegelungsfeld 868 auf. Das
Ort-Feld weist ein entsprechendes Verriegelungsfeld 870 auf.
Jeder Aufzeichnung in jeder der Tabellen zugeordnet sind freie Felder 860, 866 und 872,
die einen von zwei Zuständen,
nämlich
Aktiv oder Frei, anzeigen. Eine Aufzeichnung, bei der ein freies
Feld als Aktiv markiert ist, enthält gültige Daten. Eine Aufzeichnung,
bei der ein freies Feld als Frei markiert ist, enthält keine
Daten und ist für
die Verwendung als eine neue, zusätzliche Aufzeichnung verfügbar. Ein
freies Feld, das als Gelöscht
markiert ist, enthält
eine Aufzeichnung, die vorbestimmt ist, um physisch aus der Datenbank
entfernt zu werden, um die Speicheranforderungen der Datenbank zu
reduzieren. Das Löschen
einer Aufzeichnung aus der Datenbank kann deshalb entweder durch
ein Markieren der Aufzeichnung als Frei oder durch ein Markieren
derselben als Löschen
erzielt werden. Eine Aufzeichnung kann zu der Datenbank entweder
durch ein Umwandeln eines freien Feldes in ein aktives Feld oder
durch ein physisches Hinzufügen
neuer Aufzeichnungen zu der Datenbank hinzugefügt werden. Die mit diesen Aktivitäten verbundenen
Prozesse sind detaillierter in den 12A – 12F erläutert.
-
9B zeigt detaillierte Datenstrukturen,
die einer Implementierung einer flachen Datenbank 804B der
Datenbank 804 zugeordnet sind. Die Datenbank 804B weist
Zeilen auf, die jeweils einer einzelnen Aufzeichnung entsprechen.
Die Datenbank enthält
ein Präfix-Feld,
ein Nachnamen-Feld, ein Heim- und ein Arbeitsadreßfeld und
ein Ort-Feld. Dem Präfix-Feld
zugeordnet ist ein Verriegelungsfeld 880B. Den Nachname-Feldern
zugeordnet ist ein entsprechendes Verriegelungsfeld 882B.
Jedem der Heim/Arbeitsadresse-Felder zugeordnet ist ein entsprechendes
Verriegelungsfeld 884B. Jedem der Ort-Felder zugeordnet
ist ein entsprechendes Verriegelungsfeld 886B. Jeder Aufzeichnung
zugeordnet ist ein entsprechendes freies Feld 888B, in
dem die möglichen
Zustände
Aktiv, Frei oder Löschen
sind. Die Wirkung dieser drei Feld-Zustände ist identisch zu der, die
in 9A erläutert wurde.
-
10 zeigt die Software-Module
auf jedem Klient zum Verwalten der verteilten Datenbank. Ein Klient 54 und
eine RAID-Speichervorrichtung 64 sind gezeigt. Die RAID-Speichervorrichtung 64 enthält eine
Datenbank und Verriegelungsfelder 804. Der Klient 54 umfaßt einen
Laufzeit-Supervisor 900,
Transaktionsroutinen 902, ein Befehls- und Pfadabfangmechanismus 904,
einen Zwischenspeicherverwalter 908, einen Verriegelungsverwalter 906 und
einen Verriegelungsumleiter 910.
-
In
Betrieb wird eine Abfrage durch den Laufzeit-Supervisor 900 empfangen
und an ein Transaktionsroutinen-Modul 902 geleitet. Das
Transaktionsroutinen-Modul legt eine Anforderung nach Aufzeichnungen
von dem Speichermedium 64 vor. Diese Anforderung wird durch
das Befehls- oder Pfad-Abfang-Modul 904 abgefangen.
Das Befehl-Pfad-Abfang-Modul leitet die verteilten Verwaltungsfunktionen
ein, die in den 12A – F detaillierter erläutert werden,
bevor die Anforderung an den Zwischenspeicherverwalter 908 geleitet
wird. Der Zwischenspeicherverwalter 908 liest Daten von
der Datenbank 804 in der Speichervorrichtung 64 und
schreibt Daten an dieselbe. Wenn eine Transaktionsanforderung an
das Befehls- und Pfad-Abfang-Modul 904 gesendet wird, wird
diese auch an den Verriegelungsverwalter 906 gesendet.
Der Verriegelungsverwalter gibt eine Verriegelungsanforderung für die angeforderte
Ressource aus. Diese Anforderung wird durch den Verriegelungsumleiter 910 abgefangen.
Der Verriegelungsumleiter 910 ist verantwortlich für ein Implementieren
der Feldverriegelungsprozeduren, was in den 12C – F detaillierter erläutert wird.
-
11 zeigt den Gesamtprozeßfluß, der mit
einem der verteilten Datenbankprozesse 808 – 810 auf jeweiligen
Klienten 54 – 56 verbunden
ist. Die Verarbeitung beginnt bei einem Prozeß 950, bei dem ein
Administrator eine Daten bank auf einem spezifischen Speicherungsdatenträger aufbaut,
der spezifische Feld- und Aufzeichnungscharakteristika aufweist
und mehrere Schreiber erlaubt. Felder innerhalb der Datenbank können Text-
oder numerische Daten oder Zeiger auf Bilddateien, Tondateien und
Animationsdateien enthalten. Bei einem bevorzugten Ausführungsbeispiel
wird die Datenbank mit einer Mehrzahl leerer/freier/verfügbarer Aufzeichnungen
mit vordefinierter Größe zur zukünftigen
Verwendung eingerichtet. So können
neue Aufzeichnungen zu der Datenbank hinzugefügt werden, ohne daß der Raum
der physischen Speicherung verändert werden
müßte. Die
Steuerung wird dann zu einem Prozeß 952 geleitet, in
dem eine GUI dem Benutzer zu Zwecken eines Annehmens und Verarbeitens
einer Abfrage vorgelegt wird. Die Steuerung wird dann zu einem Prozeß 954 geleitet,
bei dem die aus der Datenbank wiedergewonnenen Aufzeichnungen betrachtet
werden. Die Steuerung gelangt dann zu einem Teilroutinenblock 956.
Der Teilroutinenblock 956 entspricht den Prozessen, die
in 12A detaillierter
gezeigt sind. Die Steuerung gelangt dann zu einem Entscheidungsblock 958.
In dem Entscheidungsblock 958 wird eine Bestimmung durchgeführt, ob
der Benutzer ein spezifisches Feld innerhalb der Aufzeichnung bearbeiten
möchte,
die gerade betrachtet wird. Wenn diese Bestimmung negativ ist, gelangt
die Steuerung zu einem Entscheidungsblock 966. Alternativ
gelangt, wenn eine bejahende Entscheidung erzielt wird, d. h. ein
Feld soll bearbeitet werden, die Steuerung zu einem Teilroutinenblock 960.
Die Prozesse in der Teilroutine 960 sind in 12C detaillierter dargelegt.
Die Steuerung kehrt dann zu einem Entscheidungsprozeß 962 zurück. In dem
Entscheidungsprozeß 962 wird
eine Bestimmung durchgeführt,
wann der Benutzer das gerade bearbeitete Feld verlassen hat. Wenn
eine bejahende Bestimmung erzielt wird, d. h. der Benutzer hat das
Feld verlassen, gelangt die Steuerung zu einem Teilroutinen-Modul 964.
Das Teilroutinen-Modul 964 entspricht den Prozessen, die
in 12D detaillierter
dargelegt sind. Nach der Ausführung
der Teilroutine kehrt die Steuerung zu einem Entscheidungsprozeß 966 zurück. In dem
Entscheidungsprozeß 966 wird
eine Bestimmung durchgeführt,
ob der Benutzer die Aufzeichnung verlassen hat. Wenn diese Bestimmung
negativ ist, kehrt die Steuerung zu dem Entscheidungsblock 958 zurück. Alternativ
gelangt, wenn die Bestimmung bejahend ist, d. h. der Benutzer hat
die Aufzeichnung verlassen, die Steuerung zu einem Teilroutinenblock 968.
Der Teilroutinenblock 968 entspricht den Prozessen, die
in 12B detaillierter
beschrieben sind. Von der Teilroutine 968 gelangt die Steuerung
zu einem Entscheidungsprozeß 970.
In dem Entscheidungsprozeß 970 wird
eine Bestimmung durchgeführt,
ob der Benutzer eine Aufzeichnung hinzufügen möchte. Wenn diese Bestimmung
bejahend ist, gelangt die Steuerung zu einer Teilroutine 972.
Die Teilroutine 972 entspricht Prozessen, die in 12F detaillierter erläutert werden.
Nach einer Rückkehr
von der Teilroutine 972 gelangt die Steuerung zu einem
Entscheidung-Löschen-Prozeß 974.
Alternativ gelangt, wenn in dem Entscheidungsprozeß 970 eine
negative Entscheidung erzielt wird, d. h. der Benutzer möchte keine
Aufzeichnung hinzufügen,
die Steuerung direkt zu dem Entscheidung-Löschen-Prozeß 974. In dem Entscheidung-Löschen-Prozeß 974 wird
eine Bestimmung durchgeführt,
ob der Benutzer eine Aufzeichnung löschen möchte. Wenn diese Bestimmung
negativ ist, kehrt die Steuerung zu dem Abfrageprozeß 952 zurück. Alternativ
gelangt, wenn eine bejahende Bestimmung erzielt wird, d. h. der
Benutzer möchte
eine Aufzeichnung löschen,
die Steuerung zu einem Teilroutinen-Modul 976. Das Teilroutinen-Modul 976 umfaßt die Prozesse,
die in der folgenden 12E detaillierter
beschrieben sind.
-
12A stellt die Prozesse
dar, die mit dem Aufzeichnung-Betrachten-Teilroutinen-Modul 956 verbunden
sind, das oben in 11 erläutert wurde.
Der Prozeß beginnt
bei einem Verbindungsblock A und gelangt zu einem Abfangprozeß 1000.
In dem Abfangprozeß 1000 wird
ein Aufzeichnungszeiger, der der gerade betrachteten Aufzeichnung
entspricht, durch das Befehlspfad-Abfang-Modul 904 [siehe 10] abgefangen. Die Steuerung
gelangt zu einem Sektor-Reservieren-Prozeß 1002. In dem Sektor-Reservieren-Prozeß 1002 wird der
Sektor in der Speichervorrichtung 64, der der Aufzeichnungsaktualisierungstabelle 806 [siehe 8C] entspricht, reserviert.
Die Steuerung gelangt dann zu einem Reservieren-Bestätigung-Entscheidungsprozeß 1004.
In dem Reservieren-Bestätigung-Entscheidungsprozeß 1004 wird
eine Bestimmung durchgeführt,
ob der Sektor tatsächlich
reserviert wurde. Wenn diese Bestimmung bejahend ist, gelangt die
Steuerung zu einem Sektor-Lesen-Prozeß 1006. In dem Sektor-Lesen-Prozeß 1006 wird
der Sektor, der die Aktualisierungstabelle enthält, gelesen und ein Zeiger
wird für
die spezifische Aufzeichnung in der Tabelle erhalten, die eine ID
aufweist, die identisch zu der ID des Klienten ist, auf dem der
Prozeß läuft. Die
Steuerung gelangt dann zu einem Prozeß 1008. In dem Prozeß 1008 wird
die Aufzeichnungs-ID und/oder ein Aufzeichnungszeiger, der in dem Prozeß 1000 erhalten
wird, an das Feld in der Steuerungstabelle geschrieben, das dem
Klient entspricht, auf dem dieser Prozeß läuft. Die Steuerung gelangt
dann zu einem Sektor-Freigeben-Prozeß 1010. In dem Prozeß 1010 wird
der gerade gelesene Sektor freigegeben. Die Steuerung kehrt dann über einen
Verbindungsblock B zurück.
-
12B zeigt die Aufzeichnungsaustritt-Prozesse,
die dem oben in 11 beschriebenen
Teilroutinen-Modul 968 zugeordnet sind. Eine Teilroutine
beginnt bei einem Verbindungsblock C und die Steuerung gelangt zu
einem Prozeß 1030.
In dem Prozeß 1030 wird
ein Aufzeichnungszeiger für
die Aufzeichnung, aus der der Benutzer austritt, durch das Befehlspfad-Abfang-Modul 904 [siehe 10] erhalten. Die Steuerung
wird dann zu einem Sektor-Reservieren-Prozeß 1032 geleitet. In
diesem Prozeß wird
der Sektor auf der Speichervorrichtung 64, in dem sich
die Aktualisierungstabelle [siehe 8C]
befindet, reserviert. Die Steuerung gelangt dann zu einem Reservieren-Bestätigung-Entscheidungsprozeß 1034.
Bei diesem Entscheidungsprozeß wird
eine Bestimmung durchgeführt,
ob die Sektorreservierung angenommen und implementiert wurde. Wenn eine
bejahende Bestimmung erzielt wird, gelangt die Steuerung zu einem
Sektor-Lesen-Prozeß 1036.
In dem Sektor-Lesen-Prozeß 1036 wird
die Aktualisierungstabelle gelesen und ein Zeiger für die spezifische
Zeile innerhalb dieser Tabelle, die dem Klient entspricht, der den
Prozeß implementiert,
wird erhalten. Die Steuerung wird dann zu einem Prozeß 1038 geleitet.
In dem Prozeß 1038 wird
das Aufzeichnungs-ID-Feld, das dem Klient entspricht, auf dem der
Prozeß läuft, gelöscht. Dies
zeigt an, daß der
Benutzer diese Aufzeichnung nicht mehr betrachtet. Die Steuerung
wird dann zu einem Prozeß 1040 geleitet.
In dem Prozeß 1040 wird
der Reservieren-Sektor freigegeben und die Steuerung kehrt über einen
Verbindungsblock D zurück.
-
12C zeigt den Prozeß, der durch
das Teilroutinen-Modul 960 [siehe 11] zur Bearbeitung eines Felds implementiert
wird. Die Teilroutine beginnt bei einem Verbindungsblock E und die
Steuerung gelangt zu einem Prozeß 1070. In dem Prozeß 1070 fängt das
Befehlspfad-Abfang-Modul 904 [ siehe 10] den Feldzeiger ab, der dem gerade
bearbeiteten Feld entspricht. Die Steuerung gelangt dann zu einem
Prozeß 1072. In
dem Prozeß 1072 wird
eine Sektor-Reservieren-Anforderung
für einen
Sektor in der physischen Speichervorrichtung 64 [siehe 10], in der das Feld gespeichert
ist, plaziert. Die Steuerung wird dann zu einem Bestätigung-Entscheidungsprozeß 1074 geleitet.
In dem Bestätigung-Entscheidungsprozeß 1074 wird
eine Bestimmung durchgeführt,
ob der angeforderte Sektor tatsächlich
reserviert wurde. Falls eine negative Bestimmung erzielt wird, gelangt
die Steuerung zu einem Rundsenden-Entscheidungsprozeß 1076.
In dem Rundsenden-Entscheidungsprozeß 1076 wird eine Entscheidung
durchgeführt,
ob ein weiterer Klient, der gegenwärtig den Sektor reserviert,
eine Nachricht rundgesendet hat, die anzeigt, daß der Sektor freigegeben wurde.
In dem Fall einer bejahenden Bestimmung kehrt die Steuerung zu dem
Sektor-Reservieren-Prozeß 1072 zurück. Wenn
in dem Entscheidungsprozeß 1074 eine
bejahende Bestimmung erzielt wird, gelangt die Steuerung zu einem
Prozeß 1078.
In dem Prozeß 1078 wird
der Reservieren-Sektor gelesen. Die Steue rung gelangt dann zu einem
Entscheidungsprozeß 1080.
In dem Entscheidungsprozeß 1080 wird
eine Bestimmung durchgeführt, ob
das Feld, bezüglich
dessen Bearbeitungsrechte angefordert werden, tatsächlich frei
ist. Diese Bestimmung wird auf der Basis der Verriegelungsfelder
durchgeführt,
die oben in den 9A – B beschrieben und erläutert sind.
Falls eine negative Bestimmung erreicht wird, wird die Steuerung
zu einem Sektor-Freigeben-Prozeß 1082 geleitet.
In dem Prozeß 1082 wird
der Sektor freigegeben und die Steuerung kehrt zurück zu dem
Rundsenden-Entscheidungsprozeß 1076.
-
Alternativ
gelangt, wenn in dem Entscheidungsprozeß 1080 eine bejahende
Bestimmung erzielt wird, d. h. das angeforderte Feld ist entriegelt,
die Steuerung zu einem Prozeß 1084.
In dem Prozeß 1084 schreibt der
Verriegelungsumleiter 910 [siehe 10] die Klienten-ID an das zu bearbeitende
Verriegelungsfeld. Die Steuerung wird dann an einen Sektor-Freigeben-Prozeß 1086 geleitet.
In dem Sektor-Freigeben-Prozeß 1086 wird
der reservierte Sektor freigegeben und die Steuerung zu einem Prozeß 1088 geleitet.
In dem Prozeß 1088 bearbeitet
der Benutzer das ausgewählte
Feld und die Steuerung kehrt über
einen Verbindungsblock F zurück.
-
12D zeigt die Prozesse,
die durch das Teilroutinen-Modul 964 [siehe 11] zum Verlassen eines bearbeiteten
Felds implementiert werden. Das Teilroutinen-Modul 964,
das oben in Verbindung mit 11 beschrieben
und erläutert
wurde, entspricht diesen Prozessen. Die Teilroutine beginnt bei
einem Verbindungsblock G und die Steuerung gelangt zu einem Prozeß 1100.
In dem Prozeß 1100 werden
der Feldzeiger für
das Feld, das verlassen wird, und der entsprechende Aufzeichnungszeiger
durch das Befehlspfad-Abfang-Modul 904 [ siehe 10] erhalten. Die Steuerung
wird dann zu einem Prozeß 1102 geleitet.
In dem Prozeß 1102 wird
der Sektor auf der physischen Speichervorrichtung, auf der sich
die Aufzeichnung und das Feld befinden, reserviert. Die Steuerung
wird dann zu einem Reservieren-Bestätigung-Entschei dungsprozeß 1104 geleitet.
In dem Entscheidungsprozeß 1104 wird
eine Entscheidung durchgeführt,
ob der Sektor tatsächlich
reserviert wurde. Falls diese Bestimmung negativ ist, wird die Steuerung
zu einer Rundsenden-Entscheidung 1106 geleitet. In der
Rundsenden-Entscheidung 1106 wird eine Bestimmung durchgeführt, wann
der Sektor durch einen Klienten freigegeben wird, der gegenwärtig diesen
Sektor reserviert hat. Die Steuerung gelangt dann auf eine Freigabe
hin zu dem Prozeß 1102.
Alternativ gelangt, wenn eine bejahende Bestimmung in dem Entscheidungsprozeß 1104 erzielt
wird, d. h. der Sektor wurde reserviert, die Steuerung zu einem
Prozeß 1108.
In dem Prozeß 1108 wird
der Reservieren-Sektor gelesen und die Steuerung gelangt zu einem
Prozeß 1110.
In dem Prozeß 1110 löscht der
Verriegelungsumleiter 910 [siehe 10] das Blockieren-Feld, das dem Feld
zugeordnet ist, das verlassen wird, und die Steuerung gelangt zu
einem Prozeß 1112.
In dem Prozeß 1112 leitet
das Befehlspfad-Abfang-Modul 904 [siehe 10] die Aktualisierung
an dem bearbeiteten Feld an die physische Speichervorrichtung 64 weiter.
Die Steuerung wird dann zu einem Prozeß 1114 geleitet. In
dem Prozeß 1114 wird
die Aktualisierungstabelle 806 [ siehe 8C] gelesen und durch die Aufzeichnungszeigerfelder 832 [siehe 8C] sortiert. Die Steuerung
gelangt dann zu einem Prozeß 1116,
bei dem Klienten, die die gleiche Aufzeichnung wie diejenige betrachten,
die dem Feld zugeordnet ist, das gerade aktualisiert wurde, identifiziert werden.
Die Steuerung gelangt dann zu einem Prozeß 1118. In dem Prozeß 1118 wird
eine Rundsendenachricht an die Klienten gesandt, die die aktualisierte
Aufzeichnung betrachten. Die Nachricht enthält einen Identifizierer, der
der Aufzeichnung entspricht, die ein Feld dessen ist, was gerade
aktualisiert wurde. Die Steuerung gelangt dann zu 1120. In dem Prozeß 1120 wird
der reservierte Sektor freigegeben und die Steuerung kehrt über einen
Verbindungsblock H zurück.
-
12E zeigt die detaillierten
Prozesse, die einem Löschen
einer Aufzeichnung zugeordnet sind und dem Teilrouti nen-Modul 976 entsprechen,
das oben in 11 beschrieben
und erläutert
wurde. Der Prozeß beginnt
bei einem Verbindungsblock I und die Steuerung gelangt zu einem
Prozeß 1150.
In dem Prozeß 1150 wird
der Zeiger auf die zu löschende
Aufzeichnung durch das Befehlspfad-Abfang-Modul 904 [ siehe 10] abgefangen. Die Steuerung
gelangt dann zu einem Prozeß 1152.
In dem Prozeß 1152 wird
der Sektor in der physischen Speichervorrichtung, der einer zu löschenden
Aufzeichnung zugeordnet ist, reserviert. Die Steuerung gelangt dann
zu einem Entscheidungsprozeß 1154.
In dem Entscheidungsprozeß 1154 wird
eine Bestimmung durchgeführt,
ob der reservierte Sektor tatsächlich
reserviert wurde. Falls eine negative Bestimmung erzielt wird, kehrt
die Steuerung zu einem Entscheidungsprozeß 1156 zurück. In dem
Entscheidungsprozeß 1156 wird
eine Bestimmung durchgeführt,
ob der andere Klient, der diesen Sektor reserviert hat, den Sektor freigibt.
Wenn eine derartige bejahende Bestimmung erzielt wird, kehrt die
Steuerung zu dem Prozeß 1152 zurück.
-
Alternativ
gelangt, wenn in dem Entscheidungsprozeß 1154 eine bejahende
Bestimmung erzielt wird, d. h. der Sektor wurde reserviert, die
Steuerung zu einem Prozeß 1158.
In dem Prozeß 1158 liest
der Verriegelungsumleiter 910 [siehe 10] den Sektor auf der physischen Speichervorrichtung,
der die Aufzeichnung enthält.
Die Steuerung gelangt dann zu einem Entscheidungsprozeß 1160,
in dem eine Bestimmung durch den Verriegelungsumleiter durchgeführt wird,
ob alle Verriegelungsfelder innerhalb dieser Aufzeichnung frei sind. Falls
die Bestimmung negativ ist, d. h. nicht alle Felder sind frei und
ein weiterer Klient bearbeitet deshalb gleichzeitig eines der Felder,
gelangt die Steuerung zu einem Prozeß 1162. In dem Prozeß 1162 wird
der Reservieren-Sektor
freigegeben und die Steuerung kehrt zu dem Rundsenden-Entscheidungsprozeß 1156 zurück.
-
Alternativ
gelangt, wenn in dem Entscheidungsprozeß 1160 eine bejahende
Bestimmung erzielt wird, d. h. alle Verriegelungsfelder in der zu
löschenden
Aufzeichnung sind frei, die Steuerung zu einem Prozeß 1164.
In dem Prozeß 1164 schreibt
der Verriegelungsumleiter 910 einen Löschen-Indikator an das freie Feld [siehe 9A – B]. Die Steuerung gelangt dann zu einem
Prozeß 1166.
In dem Prozeß 1166 werden
alle Felder innerhalb der gelöschten
Aufzeichnung durch den Verriegelungsumleiter 910 gelöscht. Die
Steuerung gelangt dann zu einem Prozeß 1168. In dem Prozeß 1168 wird
der Reservieren-Sektor freigegeben. Die Steuerung kehrt dann über einen
Verbindungsblock J zurück.
-
12F zeigt die detaillierten
Prozesse, die einem Hinzufügen
einer Aufzeichnung zugeordnet sind, die oben in Verbindung mit dem
Teilroutinen-Modul 972 in 11 beschrieben
und erläutert
werden. Die Steuerung beginnt bei einem Verbindungsblock K und gelangt
zu einem Prozeß 1180.
In dem Prozeß 1180 fängt das
Befehlspfad-Abfang-Modul 904 [ siehe 10] die Transaktion-Hinzufügen-Anforderung
ab und leitet die Steuerung zu einem Prozeß 1182. In dem Prozeß 1182 werden
die freien Felder aller Aufzeichnungen in der Datenbank analysiert
und die Steuerung wird zu einem Entscheidungsprozeß 1184 geleitet.
In dem Entscheidungsprozeß 1184 wird
eine Bestimmung durchgeführt,
ob eines der freien Felder, die jeder Aufzeichnung zugeordnet sind,
die gegenwärtig
in der Datenbank ist, einen Frei-Indikator enthält. Falls die Bestimmung negativ ist,
d. h. keine Aufzeichnungen sind verfügbar, gelangt die Steuerung
zu einem Prozeß 1186.
In dem Prozeß 1186 wird
ein Semaphorenfeld 352[siehe 8A] für die Zugriffssteuerungstabelle
ergriffen [siehe 5A, Prozesse 510 + 518].
Die Steuerung gelangt dann zu einem Prozeß 1188. In dem Prozeß 1188 wird
der tatsächliche
Raum der physischen Speicherung, der für die Datenbank reserviert
ist, durch ein Hinzufügen
neuer Aufzeichnungen erhöht.
Die freien Felder dieser neuen Aufzeichnungen werden mit einem Frei-Indikator
markiert. Die Steuerung gelangt dann zu einem Prozeß 1190.
In dem Prozeß 1190 wird
das Semaphorenfeld 352 für die Steuerungstabelle 206 [siehe 8A] freigegeben. Die Steuerung
kehrt dann zu einem Prozeß 1192 zurück.
-
Wenn
in dem Entscheidungsprozeß 1184 eine
bejahende Bestimmung erzielt wird, d. h. es gibt freie Aufzeichnungen,
die gegenwärtig
in der Datenbank existieren, gelangt die Steuerung zu dem Prozeß 1192.
In dem Prozeß 1192 wird
der physische Sektor, der der freien Aufzeichnung zugeordnet ist,
reserviert. Die Steuerung gelangt dann zu einem Entscheidungsprozeß 1194.
In dem Entscheidungsprozeß 1194 wird
eine Bestimmung durchgeführt,
ob der Sektor tatsächlich
reserviert wurde. Wenn diese Bestimmung negativ ist, gelangt die
Steuerung zu einem Entscheidungsprozeß 1196. In dem Entscheidungsprozeß 1196 wird
eine Bestimmung durchgeführt,
wann der Klient, der gegenwärtig
eine Reservierung auf diesem Sektor plaziert hat, diese Reservierung
freigegeben hat. Wenn eine derartige Bestimmung bejahend ist, kehrt
die Steuerung zu dem Prozeß 1192 zurück. Alternativ
gelangt, wenn in dem Entscheidungsprozeß 1194 eine bejahende
Bestimmung erzielt wird, d. h. der Sektor wurde tatsächlich reserviert,
die Steuerung zu einem Prozeß 1198.
In dem Prozeß 1198 wird
der physische Sektor, der die freie Aufzeichnung enthält, gelesen.
Die Steuerung gelangt dann zu einem Prozeß 1200. In dem Prozeß 1200 wird
ein Aktiv-Indikator
in das freie Feld der Aufzeichnung [siehe 9A – B] geschrieben. Dies zeigt
an, daß die
Aufzeichnung in eine Verwendung übernommen
wurde. Die Steuerung gelangt dann zu einem Prozeß 1202. In dem Prozeß 1202 wird
der reservierte Sektor freigegeben und die Steuerung kehrt über einen
Verbindungsblock L zurück.
-
Verteilte Verarbeitung
-
Die 13A – C zeigen das Gesamtformat zum Verteilen
einer Steuerung über
mehrere Prozessoren in einer Netzumgebung. Die Netzumgebung kann
als eines oder beide eines NAP-Paradigmas
oder eines Klient-Server-Paradigmas konfiguriert sein. Die 13A – C umfassen Klienten 54 – 56 und 1302 – 1304,
die mit einem Netz 1300 verbunden sind. Eine Serie von
Projektverwaltungsordnern 1314 – 1320 ist für alle Klienten auf
dem Netz verfügbar.
Jeder Klient umfaßt
Anwendungsprogramme und einen verteilten Projektverwaltungsprozeß. Der Klient 54 umfaßt einen
verteilten Projektverwaltungsprozeß 1310, der Klient 56 umfaßt einen
verteilten Projektverwaltungsprozeß 1312, der Klient 1302 umfaßt einen
verteilten Projektverwaltungsprozeß 1306 und der Klient 1304 umfaßt einen
verteilten Projektverwaltungsprozeß 1308. Die verteilten
Projektverwaltungsprozesse umfassen jeweils die Fähigkeit,
einen Projektverwaltungsordner zur Initialisierung der Verarbeitung
eines ausgewählten
Abschnitts dieses Projektverwaltungsordners auszuwählen und
eine resultierende Datei an einem Anordnungsort zu speichern. So
kann ein komplexes Projekt, wie z. B. eine Multimediapräsentation,
die Bildbearbeitung, -aufbereitung und Schlüsselrahmenumwandlung erzielt,
kooperativ durch die mehreren Klienten in einer Netzumgebung erzielt
werden.
-
In 13B haben die Klienten 54 – 56 und 1302 jeweils
jeweilige Kopien 1314A – C des Projektverwaltungsordners 1314 erhalten.
Jeder Klient hat ein Segment des Projekts ausgewählt, das in der Projektverwaltungsdatei
[PMF] 1314 definiert ist. Die Projektverwaltungsprozesse 1310 – 1312 und 1306 beschäftigen sich
mit Anwendungen, die auf ihren jeweiligen Klienten vorhanden sind,
bei der Verarbeitung, die den ausgewählten Segmenten der PMF 1314 zugeordnet
ist. Wenn residente Anwendungen die erforderliche Aufgabe abschließen, werden
die Ergebnisse in Dateien gespeichert.
-
13C zeigt, daß die Klienten 54 – 56 und 1302 ihre
Kopien der PMF 1314 freigegeben haben. Zusätzlich haben
die residenten Prozesse 1310 – 12 und 1306 bewirkt,
daß das
durch die lokalen Anwendungen erzeugte Arbeitsprodukt auf dem Netz
gespeichert wird. Der Klient 54 hat sein Arbeitsprodukt
auf dem Netz in der Datei 1330 gespeichert, die zu Beispielszwecken
als der linke Abschnitt 1500 eines Bildrahmens bildmäßig dargestellt
ist. Der Klient 56 hat sein Arbeitsprodukt auf dem Netz
in der Datei 1332 gespeichert, die als der Mittelabschnitt 1502 des
Bildrahmens bildmäßig dargestellt
ist. Der Klient 1302 hat sein Arbeitsprodukt auf dem Netz
in der Datei 1334 gespeichert, die bildmäßig als
der rechte Abschnitt 1504 des Bildrahmens dargestellt ist.
Der Ort jeder dieser Dateien auf dem Netz ist in der PMF 1314 aufgezeichnet.
-
Die
nächste
PMF, bei der eine Bearbeitung begonnen wird, ist eine PMF 1318.
Die Klienten 1302 – 1304
haben jeweilige Kopien 1318C – D der PMF 1318 erhalten.
Diese Klienten melden sich auch für die Verarbeitung bestimmter
Segmente dieser PMF an.
-
Die 14A – 3D zeigen die Datenstrukturen, die einem
Projektverwaltungsordner zugeordnet sind. 14A zeigt die Datenstrukturen, die einem
Projektverwaltungsordner entsprechen. Der Projektverwaltungsordner 1314 ist
gezeigt, um eine Projektdatei 1450, eine Kapazitätstabelle 1350 und
Prozeßoptionsschablonen 1400A – B zu
umfassen.
-
14B zeigt die detaillierten
Datenstrukturen, die der Kapazitätstabelle 1350 zugeordnet
sind. Die Kapazitätstabelle 1350 enthält eine
Zeile/Aufzeichnung für
jeden Klienten auf dem Netz. Für
jeden Klienten zeichnen Aufzeichnungsanwendungs-Verfügbarkeitsfelder 1356 – 1362 die
Verfügbarkeit
der Anwendungen auf dem Klienten auf. Für jede dieser Anwendungen gibt
es einen Indikator für
den Prozentsatz der Verarbeitungsbandbreite, der durch die Anwendung
verbraucht wird. Der Klient A [54] ist z. B. mit einem elektrischen Bildaufbereitungspaket 1358 gezeigt,
das 25 % seiner Verarbeitungskapazität verbraucht. Ein CAD-Paket 1360 ist
gezeigt, um 10 % der Verarbeitungskapazität auf dem Klient A [54] zu
verbrauchen. Ein Aufbereitungspaket 1362 ist gezeigt, um
25 % der Verarbeitungsbandbreite des Klienten A [54] zu verbrauchen.
Schließlich verbrauchen
verbleibende nicht-spezifizierte Anwendungen und das Betriebssystem
weitere 10 % der Verarbeitungsbandbreite des Klienten A. Zusätzlich ist
das Textverarbeitungspaket in dem Feld 1356 als nicht-zutreffend
(N/A) aufgelistet, was anzeigt, daß diese Anwendung sich nicht
einmal auf dem Klient A [54] befindet. Die Felder 1352 zeichnen
für jeden
Klienten und insbesondere in diesem Beispiel den Klient A [54] die
Ansammlung der Benutzungseinträge
in den Feldern 1356 – 1362 auf.
So weist der Klient A einen Gebrauch 1352 auf, der bei
70 % seiner Gesamtverarbeitungsbandbreite aufgelistet ist. Die verbleibenden
Felder in der Kapazitätstabelle
sind die Verarbeitungsgeschwindigkeit in Bezug auf Millionen Instruktionen
pro Sekunde (MIPS) 1354. Der Klient A [54] ist aufgelistet,
um eine Verarbeitungsfähigkeit
von 266 MIPS aufzuweisen. Entsprechende Informationen sind für alle Klienten
auf dem Netz verfügbar.
Jede Aufzeichnung in der Kapazitätstabelle
wird durch einen entsprechenden der verteilten Projektverwaltungsprozesse 1306 – 1312 beibehalten und
aktualisiert. Die Prozesse bewirken, daß Betriebssystemaufrufe erzeugt
werden. Diese Aufrufe geben Variablen zurück, die einem Prozentsatzgebrauch
entsprechen, der auf einer anwendungsspezifischen Basis zerlegt
ist. Die Prozesse schreiben dann diese aktualisierten Ergebnisse
an die entsprechenden Felder, die ihrer Aufzeichnung in der Steuerungstabelle
zugeordnet sind. So wird eine einzelne Tabelle verwendet, um einen Prozentsatzgebrauch
für alle
Netz-Ressourcen
an einem gemeinsamen Ort aufzuzeichnen.
-
14C zeigt die detaillierten
Datenstrukturen, die Prozeßoptionsschablonen 1400A – B entsprechen. Üblicherweise
ist eine Prozeßoptionsschablone
einer spezifischen Anwendung zugeordnet. Eine Prozeßoptionsschablone
bewirkt, daß eine
Anwendung, die sich auf einem Klient befindet, auf eine spezifische Art
und Weise ausgeführt
wird. Die Prozeßoptionsschablone 1400A ist
z. B. der Software-Anwendung Electric Image® zugeordnet.
Felder 1402A – 1408A zeichnen
die geeignete Rahmengröße, Komprimierung,
Format, Rahmen pro Sekunde bzw. Dauerindikatoren für die Anwendung
auf. In dem in 14C gezeigten
Beispiel ist eine Rahmengröße 1402A von
640×480
gezeigt. Eine JPEG-Komprimierungstechnik 1404A ist angezeigt. Eine
Wiedergabegeschwindigkeit 1406A, die in Rahmen/Sekunde
ausgedrückt
ist, ist als 15 angezeigt. Schließlich beträgt die beabsichtigte Dauer 1408A der
Animation zwei Sekunden.
-
Die
Prozeßoptionsschablone 1400B ist
einer computergestützten
Entwurfs- (CAD-) Anwendung zugeordnet. Für diese Anwendung sind eine
Rahmengrößenkomprimierungstechnik
und eine Bittiefenpräferenz
in jeweiligen Feldern 1402B – 1408B angezeigt.
Die X-Achse-Rahmengröße beträgt 24, die
Y-Achse-Rahmengröße beträgt 12, die
Komprimierungstechnik ist TIFF und die Bitauflösung beträgt 8 Bit. Jede der Prozeßoptionsschablonen
kann auf einer einer Vielzahl von Weisen erzeugt werden. Die Prozeßoptionsschablonen
können
durch einen Benutzer erzeugt werden, der eine Anwendung aktiviert
und bevorzugte Verarbeitungsparameter ausgewählt und diese mit einer zugeordneten
Ausgangsdatei speichert. Alternativ kann eine Prozeßoptionsschablone
administrativ erzeugt und an eine spezifische Datei in einem Schalenprogramm
angehängt werden,
das für
gerade einen derartigen Zweck vorgesehen ist.
-
14D zeigt die detaillierten
Datenstrukturen der Projektdatei 1450. Die Projektdatei
umfaßt
einen Anfangsblock mit Anmeldefeldern 1454 und Master-Präferenz-Feldern 1452.
Die Anmeldefelder zeigen an, welche unter den verschiedenen Klienten
auf dem Netz sich für
das Projekt angemeldet haben. Die Klienten A, B und C sind angezeigt,
um sich bei dem Projekt angemeldet zu haben, während dies bei dem Klient D
nicht der Fall ist. Keiner der Klienten hat einen Master-Status
angefordert oder denselben erhalten, da alle Einträge in den
Master-Status-Feldern 1452 Null sind.
-
Die
Projektdatei 1450 umfaßt
einen Ressourcenanforderungsabschnitt. Dieser Abschnitt umfaßt die Namen
der Anwendungen, die zur Fertigstellung des Projekts benötigt werden.
Zusätzlich
nennen ausführbare Pfadfelder 1456 die
ausführbare
Datei für
die Anwendung. Quellendatendateifelder 1458 zeigen an,
welche Dateien durch jede Anwendung geladen werden sollten. Dieses
bestimmte Projekt benötigt
die Textverarbeitungsanwendung, die elektrische Bildanwendung, die
CAD-Anwendung und eine Aufbereitungsanwendung. Die elektrische Bildanwendung
benötigt
eine Quellendatendatei mit dem Namen „center.vsd" und der Pfad zu dieser
Datei ist als c:\...\center.vsd aufgelistet. Der nächste Abschnitt
der Projektdatei sind die Segmentabschnitte. Zwei Segmentabschnitte
sind gezeigt. Im allgemeinen entspricht die Anzahl dieser Abschnitte
der Anzahl von Klienten auf dem Netz, die sich gleichzeitig mit
der Verarbeitung, die einem bestimmten Projekt zugeordnet ist, beschäftigen können. Einige
Projekte haben nur ein Segment, während andere komplexe Aufbereitungsprojekte,
die unter einer großen
Anzahl von Klienten aufgeteilt werden können, eine große Anzahl
von Segmenten aufweisen.
-
Jedes
Segment weist ein Segmentdefinitionsfeld 1460, ein Programmfeld 1462,
ein Speicherpfadfeld 1464, ein Prioritätsfeld 1466, ein Verarbeitet-Durch-Feld 1468 und
ein Segment-Status-Feld 1470 auf.
-
Das
Segmentdefinitionsfeld 1460 definiert den Anfangs- und
den Endpunkt für
ein spezifisches Segment. Der Anfangs- und der Endpunkt für die elektrische
Bildanwendung in dem ersten Segment sind als Rahmen 1 – 2 aufgelistet.
Das Programmsteuerungsfeld 1462 enthält ein Steuerungs-Script, wie
z. B. Visual Basic®, JavaTM oder „DDE Script", das bewirkt, daß die Anwendung
auf eine Art und Weise durchgeführt
wird, die geeignet für
dieses spezifische Projekt ist. Anmerkung: Der Ausdruck „Anwendungen" umfaßt alle
Prozesse, die auf einem Computer laufen, von Programmen auf hoher
Ebene, wie z. B. Auto-Cad®, bis zu Anwendungen auf
niedriger Ebene, einschließlich
des OS. Die Speicherpfadfelder 1464 zeigen an, wo die Ergebnisse gespeichert
werden sollen [siehe 13C,
Bezugszeichen 1330 – 1334].
Die Felder 1466 bestimmen die Verarbeitungsreihenfolge
von Anwendungen und Segmenten innerhalb eines Projekts. Die Verarbeitet-Durch-Felder 1468 zeigen
an, welcher unter den Klienten auf dem Netz bewirkt hat, daß eine lokal
residente Anwendung ein Segment der PMF ausführt. In dem Segment 1 z.
B. zeigt der „a"-Identifizierer,
daß die
Projektverwaltungsprozesse auf dem Klient A die Verarbeitung von
Segment 1 der elektrischen Bildaufgabe angenommen haben. Schließlich zeigt
das Segment-Status-Feld 1470 für jedes Segment und für jede Anwendung
innerhalb einer Projektdatei an, welcher der Status dieses Segments
ist. Mögliche
Einträge
sind „0", „1" oder „2". Ein O-Eintrag zeigt
an, daß das
Segment noch nicht verarbeitet wurde, ein „1"-Eintrag zeigt an, daß das Segment
gerade verarbeitet wird, und ein „2"-Eintrag
zeigt an, daß die
Segmentverarbeitung abgeschlossen ist, und daß die Datei, die als ein Ergebnis
dieser Verarbeitung erzeugt wurde, an dem Speicherpfadort auf dem
Netz gespeichert wurde. Der nächste
Abschnitt der Projektdatei ist der Anordnungsabschnitt, der Felder 1472 – 1478 aufweist.
Das Feld 1472 ist ein ID-Feld, das anzeigt, welcher unter
den verschiedenen Klienten die letztendliche Anordnung durchgeführt hat.
Das Feld 1474 enthält
den Programmcode oder die DDE-Sequenz, der/die einer Durchführung dieser
Aufgaben zugeordnet ist. Das Feld 1478 zeigt den Ort auf
dem Netz an, an dem die Ergebnisse gespeichert werden sollen. Der
nächste
Abschnitt der Projektdatei sind die Prozeßoptionsschablone-Felder 1480.
Dieses Feld listet jede Anwendung, eine entsprechende Prozeßoptionsschablone
oder einen Prozeßoptionsschablonenpfad
auf.
-
Die 15A – B zeigen zwei Beispiele verteilter Projekte. 15A zeigt ein zweidimensionales
Bild, wobei ein Bild, das aufbereitet werden soll, in drei Abschnitte
unterteilt ist, wobei jeder derselben auf einem separaten Klient
aufbereitet wird. Der Abschnitt 1500 ist die linke Seite
des Bildes, der Abschnitt 1502 ist der Mittelteil des Bildes
und der Abschnitt 1504 ist der rechte Teil des Bildes.
Jeder dieser Abschnitte ist in einer entsprechenden Datei 1330 – 1334 auf
dem Netz gespeichert.
-
15B ist eine Animationssequenz,
die aus sechs Rahmen besteht. Die ersten beiden Rahmen 1522 werden
durch einen Klient erzeugt und in einer Datei 1330 auf
dem Netz gespeichert. Der nächste
Abschnitt 1524 weist die Rahmen 3 und 4 des Animationsstreifens
auf und ist in einer Datei 1332 auf dem Netz gespeichert.
Der letzte Abschnitt 1526 des Projekts sind die Rahmen
5 und 6, die in einer Datei 1334 auf dem Netz gespeichert
sind. Wenn die Dateien 1330 – 1334 während einer
letztendlichen Anordnung kombiniert werden, wird die resultierende
Animationssequenz 1520 erzeugt.
-
Die 16A – D zeigen, wie bewirkt wird, daß eine auf
dem Klienten residente Anwendung 1550 unter der Anweisung
eines verteilten Projektverwaltungsprozesses eine Quellendatendatei
[siehe 16A – B] öffnet, um eine Datei [siehe 16C] zu verarbeiten und
die Datei [16D] zu
speichern. Das Steuerungs-Script 1462[siehe 14D], das einem Segment
zugeordnet ist, bewirkt, daß die
Anwendung auf diese Weise durchgeführt wird. Dieser Code wird
durch die verteilten Verwaltungsprozesse hochgeladen und durch diese
Prozesse verwendet, um die Durchführung der Anwendung auf eine
vorbestimmte Weise zu bewirken. In 16A ist
die GUI 1550 für
die Anwendung gezeigt. Über
diese GUI gelagert ist eine Datei-Öffnen-GUI 1554. Die
Datei-Öffnen-GUI
wird durch das Programmcode-Script aktiviert, das den Datei-Öffnen-Befehl implementiert,
der in dem Dateimenü 1552 zu
finden ist. Innerhalb des GUI-Operators 1554 befindet sich
ein Vorschaufenster 1556, in dem der Inhalt der ausgewählten Datei 1558 gezeigt
ist. In 16B ist das
Bild 1560, das der Datei 1558 zugeordnet ist, in der GUI 1550 angezeigt.
-
In 16C hat der Projektverwaltungsprozeß die nächste Zeile
eines ausführbaren
Codes an die CAD-Anwendung gesendet, was dazu führt, daß eine Schattierungsoperation
aus dem Tool-Menü 1562 ausgewählt wird.
Als ein Ergebnis dieser Auswahl schattiert die CAD-Anwendung einen
Abschnitt 1564 des Bilds 1560 und zeigte denselben
an. In 16D wird die
nächste
Zeile des Codes durch die verteilten Projektverwaltungsprozesse
an die Anwendung geliefert. Auf einen Empfang der nächsten Zeile
des Codes hin wird bewirkt, daß die
Anwendung eine Datei-„Speichern-Unter"-Funktion durchführt, die
in dem Menübaum 1552 zu finden
ist. Ansprechend wird eine „Speichern-Unter"-GUI-Schnittstelle 1566 aktiviert
und der Dateiname „center.vsd" wird in dem Dateinamenfenster
plaziert. Nachfolgend wird die Datei, die dem Segment entspricht,
das gerade verarbeitet wurde, auf dem Netz gespeichert.
-
Die 17A – F sind Prozeßflußdiagramme, die die verschiedenen
verteilten Projektverwaltungsprozesse zeigen.
-
17A zeigt die Projekt-Erzeugen-Prozesse.
Beginnend bei dem Startblock gelangt die Steuerung zu einem Prozeß 1652.
In dem Prozeß 1652 wird
eine Projektdatei erzeugt. Bei einem bevorzugten Ausführungsbeispiel
wird dem Benutzer eine GUI-Schnittstelle vorgelegt, die der in 14D gezeigten nicht unähnlich ist.
Unter Verwendung dieser Schablone geben dieselben die verschiedenen
Parameter für
die Projektdatei ein. Die Steuerung gelangt dann zu einem Prozeß 1654.
In dem Prozeß 1654 werden
die eine oder die mehreren Prozeßoptionsschablonen erzeugt.
Bei einem bevorzugten Ausführungsbeispiel
werden dieselben ebenso durch einen Benutzer über eine GUI-Schnittstelle
erzeugt, die der aus 14C ähnelt. Die
Steuerung gelangt dann zu einem Prozeß 1656. In dem Prozeß 1656 werden
die Prozeßverwaltungsdateien
und verwandte Prozeßoptionsschablonen
auf dem Netz gespeichert. Die Steuerung gelangt dann zu einem Verbindungsblock A.
-
17B zeigt die Prozesse,
die mit einem Beibehalten der Gebrauchs/Kapazitätstabelle 1350 aus 14B verbunden sind. Wie
oben beschrieben und erläutert
wurde, führen
die verteilten Verwaltungsprozesse 1302, 1304, 1310 und 1312[ siehe 13A – C] unabhängig diese Prozeßschritte
durch. Beginnend bei dem Verbindungsblock A gelangt die Steuerung zu
einem Prozeß 1680.
Ein Funktionsaufruf wird an das OS gesendet, um Gebrauchsinformationen
zu erhalten, die durch eine Anwendung zerteilt wurden. Die Steuerung gelangt
dann zu einem Prozeß 1682.
In dem Prozeß 1682 wird
die Gebrauchstabelle entdeckt und gelesen. Die Steuerung wird dann
zu einem Prozeß 1684 geleitet.
In dem Prozeß 1684 wird
die Zeile/Aufzeichnung in der Gebrauchstabelle, die dem Klient entspricht,
auf dem dieser Prozeß läuft, identifiziert.
Die Steuerung wird dann zu einem Prozeß 1686 geleitet. In
dem Prozeß 1686 werden
die oben bei dem Prozeß 1680 erhaltenen Werte
in das geeignete Feld in der Gebrauchstabelle plaziert. Die Steuerung
wird dann zu einem Prozeß 1688 geleitet.
In dem Prozeß 1688 wird
die Verarbeitungsgeschwindigkeit für den in die Gebrauchstabelle
eingegebenen Klienten aus dieser Tabelle gelesen. Die Steuerung
gelangt dann zu einem Prozeß 1690.
In dem Prozeß 1690 werden
Funktionsaufrufe an das OS gesendet, um die Verarbeitungsgeschwindigkeit
des Klienten zu erhalten. Die Steuerung wird dann an einen Entscheidungsprozeß 1692 geleitet.
In dem Entscheidungsprozeß 1692 wird
eine Bestimmung durchgeführt,
ob der Eintrag in der Tabelle der tatsächlichen Verarbeitungsgeschwindigkeit
des Klienten entspricht, auf dem der Prozeß läuft. Falls die beiden nicht übereinstimmen,
wird der Prozeß zu
einem Prozeß 1694 geleitet,
in dem der Eintrag in die Tabelle aktualisiert wird, um die gegenwärtige Verarbeitungsleistung
des Klienten widerzuspiegeln. Die Steuerung gelangt dann zu einem
Verbindungsblock B. Alternativ gelangt, wenn in dem Entscheidungsprozeß 1692 eine
bejahende Bestimmung erzielt wird, d. h. der Eintrag in der Gebrauchstabelle
für diesen
Klienten ist korrekt, die Steuerung direkt zu dem Verbindungsblock
B.
-
17C zeigt den Abschnitt
der verteilten Verwaltungsprozesse, der durchgeführt wird, wenn eine Master/Slave-
bzw. Haupt/Neben-Beziehung aktiviert wurde. Es gibt im Grunde genommen
zwei Betriebsmodi für
die Verteilungsprozeßverwaltung.
In dem Master/Slave-Modus leitet der Klient, der entweder für den Master-Status
vorbestimmt ist, oder der zuerst die PMF ergreift und den Master-Status
erhält,
die nachfolgende Verarbeitung aller Segmente der Projektdatei an.
Bei einem weiteren Ausführungsbeispiel
wird ein Punktzu-Punkt- bzw. Partner-zu Partner-Ansatz für eine verteilte
Verarbeitung implementiert. Bei dem Punkt-zu-Punkt-Ansatz sieht
jeder Klient fortwährend
nach einer unvollständigen
zu verarbeitenden PMF.
-
In 17C beginnen die Prozesse
bei dem Verbindungsblock B. Die Steuerung gelangt zu einem Prozeß 1720,
bei dem die nächste
PMF lokalisiert wird. Bei einem bevorzugten Ausführungsbeispiel wird die nächste PMF
aus einer Zuerst-Hinein-Zuerst-Hinaus-
(FIFO-) Warteschlange ausgewählt
und die Verarbeitung bezüglich
dieser PMF wird fortgesetzt, bis alle Segmente in der Datei vollständig sind
und die letztendliche Anordnung durchgeführt wurde. Bei einem anderen
bevorzugten Ausführungsbeispiel
wäre die
nächste
PMF als die Datei definiert, die unvollständige Segmente aufweist, oder
die nicht letztlich angeordnet wurde. Die Steuerung gelangt dann
zu einem Prozeß 1722,
in dem die ausgewählte
PMF gelesen wird. Die Steuerung gelangt dann zu einem Entscheidungsprozeß 1724.
In dem Entscheidungsprozeß 1724 wird
eine Bestimmung durchgeführt,
ob dieser bestimmte Projektverwaltungsordner für einen Master/Slave-Status
aktiviert ist. Falls diese Bestimmung negativ ist, gelangt die Steuerung
zu einem Verbindungsblock D. Alternativ gelangt, wenn diese Bestimmung
bejahend ist, die Steuerung zu einem Entscheidungsprozeß 1726.
In dem Entscheidungsprozeß 1726 wird
eine Bestimmung auf der Basis von Master-Feldern 1452 [siehe 14D] durchgeführt, ob
ein Master sich bei diesem Projektverwaltungsordner angemeldet hat.
Falls diese Bestimmung bejahend ist, gelangt die Steuerung zu einem
Verbindungsblock C. Alternativ gelangt, wenn eine negative Bestimmung
erzielt wird, die Steuerung zu einem Entscheidungsprozeß 1728.
In dem Entscheidungsprozeß 1728 wird
eine Bestimmung durchgeführt,
ob der Klient, der für
den Master-Status in den Master-Status-Feldern 1452 [siehe 14D] bezeichnet wurde,
eine ID aufweist, die der entsprechenden ID entspricht, d. h. des
Klients, auf dem dieser Prozeß läuft. Falls
diese Bestimmung negativ ist, gelangt die Steuerung zu dem Verbindungsblock
C. Alternativ gelangt, wenn diese Bestimmung bejahend ist, die Steuerung
zu einem Prozeß 1730.
In dem Prozeß 1730 meldet
sich der Klient als den Master-Status annehmend an und tut dies
durch ein Schreiben eines Anmeldeidentifizierers in das geeignete
Feld 1454 in dem Projektverwaltungsordner. Die Steuerung
gelangt dann zu einem Prozeß 1732.
In dem Prozeß 1732 wird
die Gebrauchstabelle gelesen, um eine Slave-Verfügbarkeit und
Verarbeitungskapazität
zu bestimmen. Die Steuerung wird dann zu einem Prozeß 1734 geleitet.
In dem Prozeß 1734 wird
die Segmentaufzeichnung mit der höchsten Priorität 1466 [siehe 14D], deren Segment-Status-Feld 1470 [siehe 14D] noch nicht mit einer „2" markiert wurde,
erhalten und die Anwendung 1456, die für dieses Segment benötigt wird,
wird bestimmt. Die Steuerung wird dann zu einem Prozeß 1736 geleitet.
-
In
dem Prozeß 1736 beschäftigt sich
der Master mit einem Slave-Werben- und/oder einem Slave-Zuweisung-Prozeß. Nur diejenigen
Slaves mit lokal residenten Anwendungen, die mit der Anwendung 1456 für das Segment übereinstimmen,
werden ausgewählt.
Zusätzlich
werden Slaves mit einer höheren
verfügbaren Verarbeitungsleistung
und weniger Gebrauch, wie in dem Prozeß 1732 bestimmt wurde,
gegenüber
denjenigen mit geringerer Verarbeitungsgeschwindigkeit und eingeschränkter Kapazität bevorzugt.
Die Steuerung gelangt dann zu einem Entscheidungsprozeß 1738.
In dem Entscheidungsprozeß 1738 wird
eine Bestimmung durchgeführt,
welche Slaves einen Slave-Status angenommen haben. Für diejenigen
Slaves, die einen Slave-Status angenommen haben, gelangt die Steuerung
zu einem Prozeß 1740,
in dem die Slave-ID bestimmt wird. Die Steuerung gelangt dann zu
einem Prozeß 1742.
In dem Prozeß 1742 werden
Informationen durch den Master basierend auf dem PMF-Segment an
den Slave gesendet, das der Slave zur Bearbeitung bezeichnet hat.
Diese Informationen umfassen: einen Zeiger auf die Quellendatei,
die der Slave benötigt,
um sich mit dem Prozeß zu
beschäftigen,
eine Segmentdefinition, die anzeigt, welches Segment verarbeitet
werden soll, eine ausführbare
Code-Sequenz, um es zu ermöglichen,
daß der
Slave seine residente Anwendung/en aktiviert, und eine Prozeßoptionsschablone.
Schließlich
sendet der Master einen Zeiger auf den Ort auf dem Netz an den Slave,
an dem der Slave sein Arbeitsprodukt speichern soll. Die Steuerung
gelangt dann zu einem Entscheidungsprozeß 1744. In dem Entscheidungsprozeß 1744 wird
eine Bestimmung durchgeführt,
ob es verbleibende unvollständige
Segmente gibt, und falls dies der Fall ist, gelangt die Steuerung
zu dem Entscheidungsprozeß 1738 für die Auswahl
des nächsten
Slaves. Wenn keine verbleibende unvollständige Objekte vorliegen, gelangt
die Steuerung zu einem Entscheidungsprozeß 1746. In dem Entscheidungsprozeß 1746 wird
eine Bestimmung durchgeführt,
ob alle Slaves ihre Arbeit abgeschlossen haben. Der Abschluß der Arbeit wird
auf der Basis von Einträgen
bestimmt, die durch die Slaves in die Projektdatei gemacht werden,
und insbesondere die Segment-Status-Felder 1470 [siehe 14D]. Wenn eine bejahende
Bestimmung erzielt wird, d. h. alle Segmente wurden verarbeitet,
gelangt die Steuerung zu einem Prozeß 1748. In dem Prozeß 1748 schließt der Master
die letztliche Anordnung der Segmente der Projektdatei gemäß den Instruktionen
ab, die in dem Anordnungsabschnitt der Projektdatei [siehe 14D] enthalten sind. Die
Steuerung gelangt dann zu einem Prozeß 1750. In dem Prozeß 1750 schreibt
der Master einen Status-Indikator in die PMF und insbesondere Felder 1472,
der anzeigt, daß die
letztliche Anordnung abgeschlossen ist, und daß dieser Projektverwaltungsordner
geschlossen werden kann. Die Steuerung gelangt dann zu dem Verbindungsblock
A.
-
17D legt die Prozesse dar,
mit denen sich ein Slave beschäftigt.
Die Verarbeitung beginnt bei dem Verbindungsblock C und die Steuerung
wird zu einem Entscheidungsprozeß 1780 geleitet. In
dem Entscheidungsprozeß 1780 wird
eine Bestimmung durchgeführt,
ob eine Master-Anforderung empfan gen wurde oder nicht. Falls diese
Bestimmung negativ ist, gelangt die Steuerung zu dem Verbindungsblock
B. Alternativ gelangt, wenn eine bejahende Bestimmung erzielt wird,
die Steuerung zu einem Prozeß 1782.
In dem Prozeß 1782 sendet
der Slave eine bejahende Antwort an den Master, die anzeigt, daß sie den
Slave-Status akzeptiert. Die Steuerung wird dann zu einem Prozeß 1784 geleitet,
bei dem der Slave die Informationen von dem Master empfängt, die
er benötigt,
damit er sein bezeichnetes Segment der Projektdatei verarbeiten
kann. Die Steuerung gelangt dann zu einem Prozeß 1786. In dem Prozeß 1786 aktiviert
der Slave die eine oder die mehreren bezeichneten Anwendungen und
steuert diese Anwendung mit dem geeigneten Steuerungs-Script und der
Prozeßoptionsschablone.
Dies bewirkt, daß die
Anwendung ihre bezeichneten Funktionen durchführt. Die Steuerung wird dann
zu einem Prozeß 1786 geleitet.
In dem Prozeß 1786 schreibt
der Slave einen Status-„1"-Indikator an das
entsprechende Segment-Status-Feld 1470 in der Projektdatei
[siehe 14D]. Dies zeigt
jedem Klienten, der die Projektdatei liest, an, daß das Segment
gegenwärtig
durch den Slave verarbeitet wird. Die Steuerung gelangt dann zu
einem Entscheidungsprozeß 1788,
in dem der Slave bestimmt, ob die residente Anwendung ihr Projektsegment
abgeschlossen hat oder nicht. Wenn eine bejahende Bestimmung erzielt
wird, wird die Steuerung zu einem Prozeß 1790 geleitet. In
dem Prozeß 1790 wird
bewirkt, daß die
Anwendung ihr Arbeitsprodukt an dem Ort speichert, der in dem Prozeß 1784 bezeichnet
ist, und die Anwendung geschlossen wird. Die Steuerung gelangt dann
zu einem Prozeß 1800.
In dem Prozeß 1800 wird
ein Segment-Vollständig-Indikator „2" an das geeignete
Feld 1470 in der Projektdatei geschrieben. Die Steuerung
gelangt dann zu dem Verbindungsblock B.
-
17E offenbart den Abschnitt
der verteilten Projektprozesse, der einer Punkt-zu-Punkt- anstatt
einer Master/Slave-Beziehung zwischen den Klienten zugeordnet ist.
Die Verarbeitung beginnt bei dem Verbindungsblock D. Die Steuerung
gelangt zu einem Prozeß 1820,
in dem die nächste PMF
gelesen wird. Die Steuerung gelangt dann zu einem Prozeß 1822,
in dem die Gebrauchstabelle gelesen wird. Die Steuerung gelangt dann
zu einem Prozeß 1824,
in dem die Segmente innerhalb der PMF nach Priorität sortiert
werden, und eine Entscheidung durchgeführt wird, welches der Segmente
noch nicht vollständig
ist. Diese Bestimmung basiert auf dem Eintrag in den oben erwähnten und
erläuterten
Prioritäts-
und Segment-Status-Feldern 1466 und 1470 [siehe 14D]. Die Steuerung gelangt
dann zu einem Entscheidungsprozeß 1826. In dem Entscheidungsprozeß 1826 wird
eine Bestimmung durchgeführt,
ob verbleibende unvollständige
Segmente vorliegen. Wenn diese Entscheidung negativ ist, wird die
Steuerung zu einem Verbindungsblock E geleitet. Alternativ wird,
wenn eine bejahende Bestimmung erzielt wird, d. h. es gibt verbleibende
Segmente, die verarbeitet werden sollen, die Steuerung zu einem
Prozeß 1828 geleitet.
In dem Prozeß 1828 wird
eine Bestimmung durchgeführt,
ob die dem nächsten
priorisierten Segment zugeordnete Anwendung auf dem Klient verfügbar ist,
auf dem dieser Prozeß läuft. Die
Steuerung gelangt dann zu einem Entscheidungsprozeß 1830,
in dem diese Bestimmung implementiert ist.
-
In
dem Prozeß 1736 beschäftigt sich
der Master mit einem Slave-Werben- und/oder einem Slave-Zuweisung-Prozeß. Nur diejenigen
Slaves mit lokal residenten Anwendungen, die mit der Anwendung 1456 für das Segment übereinstimmen,
werden ausgewählt.
Zusätzlich
werden bei einem bevorzugten Ausführungsbeispiel Slaves mit einer
höheren
verfügbaren
Verarbeitungsleistung und einem geringeren Gebrauch, wie in dem
Prozeß 1732 bestimmt
wird, gegenüber
denjenigen mit einer langsameren Verarbeitungsgeschwindigkeit und
einer eingeschränkten
Kapazität
bevorzugt. Wenn der Klient, auf dem der Prozeß läuft, nicht die Anwendung aufweist,
die aufgerufen wird, gelangt die Steuerung zu dem Verbindungsblock
B. Alternativ gelangt, wenn eine bejahende Bestimmung erzielt wird,
d. h. der Klient weist die angeforderte residente Anwendung auf,
die Steuerung zu einem Prozeß 1832.
In dem Prozeß 1832 meldet
sich der Klient bei einem Segment innerhalb der Projektdatei an.
Der Klient tut dies durch ein Schreiben eines Status-„1"-Indikators in das
geeignete Segment-Status-Feld 1470 in der Projektdatei.
[Siehe 14D] Die Steuerung
gelangt dann zu einem Prozeß 1834.
In dem Prozeß 1834 liest
der Klient die geeigneten Segment-Informationen von der Prozeßdatei, die
einen Zeiger auf die Quellendatei, eine Segmentdefinition, einen
Anwendungsverarbeitungscode, eine Prozeßoptionsschablone und/oder
eine Pfadaussage zu der Prozeßoptionsschablone
und einen bezeichneten Ort umfassen, in dem das Arbeitsprodukt gespeichert
werden soll. Die Steuerung gelangt dann zu einem Prozeß 1836.
In-dem Prozeß 1836 aktiviert
der Klient seine residente Anwendung unter Verwendung der Programmcodesequenz
und der Prozeßoptionsschablone,
die demselben von der Projektdatei geliefert wird. Die Steuerung
gelangt dann zu einem Prozeß 1838,
in dem die Anwendung, die das Projekt fertiggestellt hat, ihr Arbeitsprodukt
speichert. Der Speicherort entspricht dem bezeichneten Quellenpfad 1464 [
siehe 14D]. Die Steuerung
gelangt dann zu einem Prozeß 1840.
In dem Prozeß 1840 wird
das geeignete der Status-Felder 1470 auf einen Status „2" aktualisiert, um
in der Projektdatei anzuzeigen, daß dieses bestimmte Segment
abgeschlossen ist. Die Steuerung gelangt dann zu dem Verbindungsblock
B.
-
17F zeigt die Prozesse
an, die mit einer Punkt-zu-Punkt-Beziehung
beschäftigt
sind, die der Neuanordnung einer Projektdatei zugeordnet ist, in
der alle Segmente abgeschlossen wurden. Die Verarbeitung beginnt
bei einem Verbindungsblock E und gelangt zu einem Prozeß 1860.
In dem Prozeß 1860 wird
der Projektverwaltungsordner gelesen. Die Steuerung gelangt dann
zu einem Entscheidungsprozeß 1862.
In dem Entscheidungsprozeß 1862 wird
eine Bestimmung auf der Basis der Letztliche-Anordnung-Felder 1472 in
der Projektdatei [siehe 14D]
durchgeführt,
ob die PMF angeordnet wurde. Wenn diese Bestimmung bejahend ist,
kehrt die Steuerung zu dem Verbindungsblock B zurück. Alternativ
gelangt, wenn eine negative Bestimmung erzielt wird, d. h. die PMF
wurden noch keiner letztlichen Anordnung unterzogen, die Steuerung
zu einem Prozeß 1864.
In dem Prozeß 1864 wird
die letztendliche Anordnung gemäß den in
der PMF gespeicherten Anordnungsinstruktionen durchgeführt. Die
Steuerung gelangt dann zu einem Prozeß 1866. In dem Prozeß 1866 werden
das/die geeigneten Letztendliche-Anordnung-Felder mit einem Status „2" markiert, der anzeigt, daß die letztliche
Anordnung abgeschlossen ist. Die Steuerung kehrt dann zu dem Verbindungsblock
B zurück.
-
Inter Application Calls
(Inter Anwendung Aufrufe)
-
Distribute
Process (POT File Pathname, Project File Pathname) (Prozeß Verteilen
(POT Datei Pfadname, Projekt Datei Pfadname) )
-
Launch
Process (Prozeß Starten)
-
Process
Segment (PMF File Pathname, Plugin ID, Timestamp, Segment Parameters)
Prozeß Segment
(PMF Datei Pfadname, Einsteckelement ID, Zeitstempel, Segment Parameter))
-
-
Processing
Segment (PME_File_Pathname, Plugin_ID, Timestamp, Segment_Parameters) (Verarbeitung_Segment(PMF_Datei_Pfadname,
Einsteckelement_ID, Zeitstempel, Segment_Parameter))
-
Segment_Done(PMF_File_Pathmane,
Plugin_ID, Timestamp, Segment_Parameters) (Segment_Erledigt(PME_Datei_Pfadname,
Einsteckelement_ID, Zeitstempel, Segment_Parameter))
-
Quit
Process (Prozeß Verlassen
bzw. Beenden)
-
Assemble_Process(PME_File_Pathname,
Plugin_ID, Timestamp) (Prozeß_Anordnen(PME_Datei_Pfadname,
Einsteckelement_ID, Zeitstempel))
-
Assembly_Done(PME_File_Pathname,
Plugin_ID, Timestamp) (Anordnung_Erledigt(PME_Datei_Pfadname, Einsteckelement_ID,
Zeitstempel))
-
Process_Complete(POT_File
Pathname, Project_File_Pathname) (Prozeß_Abgeschlossen(POT_Datei_Pfadname,
Projekt_Datei_Pfadname))
-
StudioBOSS-zu-StudioBOSS-Aufrufe
ZUR PROZESSSTEUERUNG
-
SB_Process_Segment(PMF_File_Pathname,
PMF_Reference) (SB Prozeß_Segment(PMF_Datei
Pfadname, PMF_Referenz))
-
SB_Processing
Segment (PME Reference) (SB Verarbeitung Segment(PMF Referenz))
-
SB_Segment_Done
(PME_Reference) (SB_Segment_Erledigt(PMF_Referenz))
-
SB_Quit_Process
(PMF_Reference) (SB_Prozeß_Verlassen(PME_Referenz)
)
-
SB_Assemble_Process(PME_Reference)
(SB_Prozeß Anordnen(PMF_Referenz))
-
FÜR ENTSCHEIDUNG MASTER/SlAVE-STEUERUNG
-
SB_Become_Slave(PME_File_Pathname,
PMF_Reference) (SB_Wird Slave(PMF_Datei_Pfadname, PMF_Referenz))
-
SB_Slave_Response(PME_File_Pathname,
PMF_Reference, Response) (SB_Slave_Antwort(PME_Datei_Pfadname, PMF_Referenz,
Antwort))
-
SB_Become_Free
(SB_Wird_Frei)
-
Plugin- bzw. Einsteckelement-Aufrufe
-
- PI_Process_Segment(PMF_File_Pathname) (PI_Prozeß_Segment(PMF_Datei_Pfadname))
wird
aufgerufen, um ein Prozeßsegment
zu verteilen, führt
zu einem Process Segment IAC-Aufruf.
- PI_Assemble_Process(PMF_File_Pathname) (PI_Prozeß_Anordnen(PMF_Datei
Pfadname))
wird aufgerufen, um Prozeßergebnisse anzuordnen. Das
Plugin kann entweder die Ergebnisse ohne eine Prozeßanwendungsinteraktion
anordnen oder kann als eine Option einen Assemble_Process IAC-Aufruf,
um alles anzuordnen, ausgeben. Legende
MPA | Master-Prozeß-Anwendung |
MPCA | Multi-Prozeß-Steuerungsanwendung |
PI | Einsteckelement
bzw. Plugin |
PMF | Prozeßverwaltungsdatei |
SB | StudioBOSS |
MSB | Master-StudioBOSS |
SSB | Slave-StudioBOSS |
POT | Prozeßoptionsschablone |
SBPI | StudioBOSS-Plug-In
bzw. -Einsteckelement, exi |
| stiert
innerhalb MSB oder SSB |
-
Prozeßoptionsschablone (POT)
-
- Template_Signature (Schablone_Signatur)
- (anwendungsspezifische Optionen)
- POT-Beispiel, Ergebnisse in Speicher angeordnet – für einen
rahmenbasierten Prozeß
- Template-Signature (Schablone Signatur)
- Bit_Depth (Bit_Tiefe)
- Frame-Size_X (Rahmen_Größe_X)
- Frame_Size_Y (Rahmen_Größe_Y)
- OT-Beispiel, Ergebnisse in Dateien angeordnet – für einen
- zeitbasierten_Prozeß
- Template_Signature (Schablone Signatur)
- Frame_Size (Rahmen Größe)
- Frames_Per_Second (Rahmen Pro Sekunde)
- Compressor (Komprimierer)
- Start_Time (Start_Zeit)
- End_Time (End_Zeit)
-
PME
-
- Project_File_Path (Projekt_Datei-Pfad)
- Remaining_Segments_To_Process (Verbleibende_Segmente_Zur_Verarbeitung)
- Process_Application_Signature (Prozeß_Anwendung_Signatur)
- Master Host ID (Master-Host-ID)
- Reassembly_Method (Neuanordnung_Verfahren)
- Number_Of_Slaves (Anzahl_Von_Slaves) (für jeden Slave folgendes)
- Slave ID
- Segment_Being_Processed (Gerade_Verarbeitetes_Segment)
- Segment_Status (not_processing, processing in progress, Processing_complete)
(Segment_Status (nicht_verarbeitet, Verarbeitung_läuft_gerade,
Verarbeitung_abgeschlossen))
- Result_Location (Ergebnis_Ort)
- Process Option Template (Prozeß Option Schablone)
-
Die
vorangegangene Beschreibung eines bevorzugten Ausführungsbeispiels
der Erfindung wurde zu Darstellungs- und Beschreibungszwecken vorgelegt.
Sie soll weder ausschließlich
sein, noch die Erfindung auf die genauen offenbarten Formen einschränken. Offensichtlich
sind für
Fachleute auf diesem Gebiet viele Modifizierungen und Variationen
ersichtlich. Es ist beabsichtigt, daß der Schutzbereich der Erfindung
durch die folgenden Ansprüche
und ihre Äquivalente
definiert sein soll.
-
Weitere
und bevorzugte Ausführungsbeispiele
gemäß der vorliegenden
Erfindung werden nun Bezug nehmend auf die folgenden numerierten
Sätze aufgezählt.