Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Aufbau eines DLM-Locks

&pagelevel(5)&pagelevel

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-Modus

    angeforderter Lock-Modus

    NU
    1

    CR
    2

    CW
    3

    PR
    4

    PW
    5

    EX
    6

    schwach

    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-
    TING

    Die 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-Modus

    zum 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