50 - 10.4.9 Kreiseln: Anhang zu Mikrotransaktionen [ID:25769]
50 von 215 angezeigt

Für die weitere Betrachtung des Transaktionsprinzips, das wir im zweiten Teil der Vorlesung kennengelernt

haben, möchte ich noch mal auf diese Kassoperation zu sprechen kommen.

Und zwar, wenn man eine prozedurale Abstraktion dieses Befehls vornimmt, da sollte man sich

dann immer im Klaren darüber sein, was denn eigentlich der Mehraufwand ist, der dann einfach

aufgrund von Prozedurkonzepten hinzukommt.

Man sieht es ein bisschen hier, wo man dann tatsächlich diese Kassoperation wirklich

als normale C-Prozedur oder C-Funktion hat, aber die eigentlichen Operationen hier selbst

des Kasses sich praktisch nur auf die Zeilen 6, 7 und 8 beschränken.

Das andere dazu, was wir haben, also hier ein Register retten, hier unten wieder Register

herstellen und hier im Wesentlichen dann auf die Argumente der Prozedur Kass entsprechend

zuzugreifen, also die Werte hier vom Stack dann letztendlich lesen und in die entsprechenden

Register transportieren, damit man denn innerhalb der Prozedur mit den Werten dann arbeiten

kann, sind schon großer Mehraufwand im Vergleich zu dem eigentlichen funktionalen Anteil, den

man jetzt hier mit dem Kass dann eigentlich verbindet.

Das heißt, diese Unkosten im Vergleich zu den intrinsischen Funktionen, die der Compiler

halt hat, sind schon beträchtlich und deshalb sollte man halt eher diese intrinsischen

Funktionen des Compilers auch wirklich nutzen, damit da dann halt eben eine entsprechend

optimierte Code herauskommt und der Overhead letztendlich nicht zu groß ist.

Man muss einfach diesen Code, den wir hier haben auf der Folie 37, einmal vergleichen

mit dem Code, wo denn die Inline-Variante von diesem Compay Exchange denn verwendet

worden ist, wo doch drei Befehle versus diese zwölf Befehle, die wir halt hier denn eigentlich

in Kauf nehmen müssen für die Durchführung einer solchen Kassoperation gegenüberzustellen

sind und damit der Mehraufwand denn durchaus deutlich wird.

Aber ein anderer Punkt ist eigentlich für die Kassoperation wichtig, denn es ist eine

bestimmte Untiefe, so eine Sache, die halt als ABA-Problem oder ABAP-Problem bezeichnet

wird, die so typisch ist für so eine Operation wie diesen Kass.

Dahinter steckt eine falsch-positive Aussage, die man halt oder eine Annahme, die man letztendlich

trifft, ein sogenanntes false-positive bei der Ausführung oder bei der Ergebnisauswertung

genau genommen von so einer Kassoperation bezogen auf den Inhalt einer bestimmten Variable,

die in einer bestimmten Adresse denn halt steht.

Denn wenn das Kass erfolgreich ausgeführt wird, dann gehen wir erstmal davon aus, dass

die Transaktion ja offensichtlich gelungen ist.

Das heißt, die Kassoperation ist insofern gelungen, dass die Wertzuweisung stattgefunden

hat, aber da diese Kassoperation in eine Transaktion in so einem größeren umfassenden Kontext eingebettet

ist, muss man sich schon die Frage stellen, ob denn damit tatsächlich auch die Transaktion

als gelungen wirklich gilt.

Und das ist durchaus ein Problem, denn man weiß eben eigentlich nur, dass die Vergleichen

mit Operanten identisch sind und damit assoziiert man denn eigentlich mit dieser Gleichheit

durchaus eine bestimmte Bedingung bezüglich eines globalen Zustands.

Das ist sozusagen die positive Sicht, die man hat.

Es kann aber sein, dass genau diese Behauptung, die man jetzt hier aufstellt oder diese Annahme,

die man hier trifft, in dem Moment, wo man denn wirklich das Kass durchführt, man kommt

praktisch aus diesem Kassbefehl zurück, nicht mehr stimmt, faktisch nicht mehr stimmt.

Das sind Faults.

Dazu müssen wir uns mal ein Beispiel angucken.

Nehmen wir mal an, wir haben hier zwei Prozesse P1 und P2, die verwenden also gleichzeitig

einen Wert, der an der Adresse li denn letztendlich steht.

Und das soll jetzt so sein, dass ein Wert a gelesen wird von dem Prozess P1 aus dieser

Speicherstelle I und Prozess P1 nimmt damit einen bestimmten globalen Zustand halt an,

den wir es eins bezeichnen würden.

Teil eines Kapitels:
10.4 Kreiseln

Zugänglich über

Offener Zugang

Dauer

00:18:50 Min

Aufnahmedatum

2020-12-04

Hochgeladen am

2020-12-05 02:28:44

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen