Ein Lock, der über den DLM verwaltet wird, besteht aus mindestens zwei Teilen:
Den Benutzer-unabhängigen Teil, der die allgemeinen Informationen und die Verwaltungsdaten des Locks enthält. Er existiert nur einmal pro Lock und ist für alle Benutzer des Locks gültig.
Pro Benutzer, der mit dem Lock arbeitet, einen Benutzer-abhängigen Teil, der die Informationen enthält, die spezifisch für den jeweiligen Benutzer des Locks sind. Ein Benutzer-abhängiger Teil des DLM-Locks wird nachfolgend auch Lock-Anforderung genannt.
Alle Benutzer-abhängigen Teile eines Locks, d.h. alle Lock-Anforderungen, sind mit dem Benutzer-unabhängigen Teil des Locks so verknüpft, dass sich daraus der Zustand der einzelnen Lock-Anforderung ergibt. Die möglichen Zustände einer Lock-Anforderung sind abhängig vom Modus, in dem sie angefordert werden.
Lock-Modus
Der DLM bietet sechs verschiedene Lock-Modi an:
NU
Null-Modus. Eine zugeteilte Lock-Anforderung mit diesem Modus ist mit allen
anderen Lock-Anforderungen kompatibel. Sie darf aber nicht auf die Ressource
zugreifen.CR
Concurrent-Read-Modus. Dem Lock-Halter wird ein ungeschützter Lesezugriff
auf die Ressource gewährt. D.h. es sind auch andere Lese- oder Schreibzugriffe
auf diese Ressource zur gleichen Zeit erlaubt. Erlaubt sind andere Lock-Halter
nur im NU-Modus, im CR-Modus, im CW-Modus, im PR-Modus und im PW-
Modus.CW
Concurrent-Write-Modus. Dem Lock-Halter wird ein ungeschützter Schreibzugriff
auf die Ressource gewährt. D.h. es sind auch andere Lese- oder
Schreibzugriffe auf diese Ressource zur gleichen Zeit erlaubt. Erlaubt sind andere
Lock-Halter nur im NU-Modus, im CW-Modus oder im CR-Modus.PR
Protected-Read-Modus. Dem Lock-Halter wird ein geschützter Lesezugriff auf
die Ressource gewährt. D.h. es sind keine anderen Schreibzugriffe zur gleichen
Zeit erlaubt. Erlaubt sind andere Lock-Halter nur im NU-Modus, im CR-
Modus oder im PR-Modus.PW
Protected-Write-Modus. Dem Lock-Halter wird ein geschützter Schreibzugriff
auf die Ressource gewährt. Erlaubt sind andere Lock-Halter nur im CR-Modus
und im NU-Modus.EX
Exklusiv-Modus. Nur der Lock-Halter darf auf die Ressource zugreifen. Es sind
keine anderen Lese- oder Schreibzugriffe erlaubt. Lock-Halter im NU-Modus
sind zwar kompatibel zum EX-Modus, aber sie dürfen nicht auf die Ressource
zugreifen.Kompatibilität der Lock-Modi
Lock-Schutz
stärkster aktuell
zugeteilter
Lock-Modusangeforderter Lock-Modus
NU
1CR
2CW
3PR
4PW
5EX
6schwach
NU 1
+
+
+
+
+
+
:
CR 2
+
+
+
+
+
-
:
CW 3
+
+
+
-
-
-
:
PR 4
+
+
-
+
-
-
:
PW 5
+
+
-
-
-
-
stark
EX 6
+
-
-
-
-
-
+
angeforderter Lock-Modus ist kompatibel zum zugeteiltem Lock-Modus
-
angeforderter Lock-Modus ist inkompatibel zum zugeteiltem Lock-Modus
Zustände einer Lock-Anforderung
Eine Lock-Anforderung kann sich in einem der folgenden Zustände befinden (vom Benutzer aus gesehen):
GRANTED
Die Lock-Anforderung für einen Lock ist zugeteilt und ist mit allen anderen
bereits zugeteilten Lock-Anforderungen kompatibel. Neue
Lock-Anforderungen werden nur zugeteilt, wenn sie kompatibel sind oder die
zugeteilte Lock-Anforderung freigegeben wird.CONVER-
TINGDie Lock-Anforderung ist bereits in einem Modus zugeteilt, der Modus
soll jedoch geändert werden. Führt diese Konvertierung zu Inkompatibilitäten
mit anderen zugeteilten Lock-Anforderungen, muss sie warten,
bis der neue Lock-Modus kompatibel zugeteilt werden kann. Die zu
konvertierende Lock-Anforderung bleibt in ihrem ursprünglichen Lock-Modus,
bis sie konvertiert werden kann (oder bis sie das Zeitlimit
überschreitet oder gelöscht wird).WAITING
Die Lock-Anforderung wartet auf ihre erstmalige Zuteilung. Die Zuteilung
erfolgt, sobald sie zu allen bereits zugeteilten Lock-Anforderungen
kompatibel ist.Lock-Anforderungen im Zustand CONVERTING werden vor allen neuen Lock-Anforderungen im Zustand WAITING behandelt.
Existiert eine Lock-Anforderung im Zustand WAITING, die inkompatibel zu den aktuell zugeteilten Lock-Anforderungen ist, blockiert sie alle nachfolgenden Lock-Anforderungen für diesen Lock, auch wenn diese kompatibel wären (außer Locks im NU-Modus).
Zur Kompatibilität der Lock-Modi siehe Tabelle oben.
Lock-Value-Block
Der Lock-Value-Block (LVB) ist ein kleiner Speicherbereich, der einem Lock direkt zugeordnet ist. Er kann gelesen oder geschrieben werden, je nachdem, in welchem Lock-Modus die Lock-Anforderung zugeteilt ist und ob die Lock-Anforderung den Lock erhält (stärkerer Lock-Modus) oder freigibt (schwächerer Lock-Modus). Über den LVB können die Benutzer des Locks untereinander Informationen austauschen.
Der LVB besteht aus einem 16 Byte großen Bereich (Lock-Wert), der vom Benutzer mit beliebigen Informationen beschrieben werden kann. Der Lock-Wert, den der Benutzer schreiben will oder den er bei einer Leseanforderung geliefert bekommt, befindet sich im Lock-Status-Block.
Der LVB existiert solange, wie irgendeine Lock-Anforderung für diesen Lock existiert. Wird die letzte (einzige) Lock-Anforderung dieses Locks freigegeben, wird der Lock selbst gelöscht und der LVB verworfen.
Zugriffe auf den Lock-Value-Block erfolgen durch die Makros LKENQ, LKCVT und LKDEQ.
Zugriffe auf den Lock-Value-Block
vom zugeteilten
Lock-Moduszum angeforderten Lock-Modus
NU
CR
CW
PR
PW
EX
NU
r
r
r
r
r
r
CR
-
r
r
r
r
r
CW
-
-
r
r
r
r
PR
-
-
-
r
r
r
PW
w
w
w
w
w
r
EX
w
w
w
w
w
w
-
Der Lock-Wert wird weder gelesen noch geschrieben.
r (read)
Der Lock-Wert wird gelesen.
Der Lock-Wert kann vom Benutzer gelesen werden, wenn die
Lock-Anforderung zugeteilt wurde. Wird der Lock-Wert eines Locks zum ersten
Mal gelesen, enthält er den Initialisierungs-Wert (Binäre Nullen).w (write)
Der Lock-Wert wird geschrieben.
Der Lock-Wert kann vom Benutzer geschrieben werden, wenn der Lock
von einem stärkeren Lock-Modus (z.B. PW- oder EX-Modus) in einen
schwächeren oder gleichen Lock-Modus konvertiert wird. Oder während
der Freigabe eines Locks, der sich im PW- oder EX-Modus befindet.Wurde beim Makro LKENQ angegeben, dass der LVB gelesen werden soll, wird die Lock-Anforderung behandelt, als wenn sie vom NU-Modus in den angegebenen Lock-Modus konvertiert wird.
Den schematischen Aufbau eines DLM-Locks, der sich daraus ergibt, verdeutlicht das folgende Bild.
Bild 22: Schematische Darstellung eines Locks