Schauen wir uns dieses Problem mal an einem einfachen konkreten Beispiel an.
Und ich habe hier mal eine Banküberweisung als Beispiel genommen.
Also wir unterstellen mal wie so ein Kontoführungsprozess irgendwie im Bankwesen,
denn vielleicht abläuft ja ist fiktiv, aber es stellt das Problem eigentlich auch
recht praktisch dar und ist aus der Realität tatsächlich kommend.
Ja also die Banküberweisung, da wollen wir einen bestimmten Betrag von einem Konto auf ein
anderes Konto durchführen und dafür denken wir uns mal eine Prozedur, die das macht,
so ein Transferprozedur, die wir denn halt hier sehen mit der entsprechenden Signatur,
wo wir jetzt hier das Konto from haben, wovon denn Geld abgehoben werden soll und dann haben
wir ein Konto tu, wohin denn Geld überwiesen werden soll und der Betrag soll dann sozusagen
halt hier der dritte Parameter sein. Und diese Konten, die gelten jetzt hier in
unserem Sinne eben als wiederverwendbare Betriebsmittel, wären dann also Software-Betriebsmittel,
die einfach durch irgendwelche Datenstrukturen repräsentiert werden und wir unterstellen,
dass dieser Transfer, für diesen Transfervorgang denn praktisch diese beiden Betriebsmittel eben
zeitweilig unteilbar voneinander genutzt werden müssen. Dazu haben wir denn die Claim und die
Clear-Operation, die dann praktisch beide Ressourcen anfordern, beide Betriebsmittel,
beide Konten sozusagen anfordern, belegen im Endeffekt diese Locken, wenn man so will,
bis zur Clear-Operation, da gehen wir es frei und dazwischen führen wir dann die Anweisung aus. Wie
man sieht, ist denn eigentlich tatsächlich so ein elektronischer Transfer, wenn man das genau
nimmt, eigentlich nichts weiter als eine arithmetische Operation. Kompliziert wird die halt nur dadurch
im Bankwesen, indem man dann halt verifizieren muss und validieren muss, ob man denn diesen
Transfer wirklich durchführen darf. Aber das ist jetzt nicht unser Punkt. Wir wollen das ja eben
auf ein Ressourcenverwaltungsproblem sozusagen mal zurückführen und zeigen, wie denn in so einem
Fall eines Geldtransfers es möglicherweise ist, dass dann praktisch bei der Durchführung einer
Banküberweisung die betreffenden Prozesse, die dann auf den Rechensystemen ablaufen könnten,
in eine Verklemmungssituation geraten könnten, was dann sehr unangenehm wäre für eine Banküberweisung
im realen Leben. Aber was eben auch zeigt, wie schwerwiegend so ein Problem dann wirklich für
uns selbst werden könnte. So, den Datensatz, den wir hier haben, der ist dann auch relativ einfach
ausgelegt. Im Wesentlichen haben wir dann also hier den Wert halt drin zu stehen, verzeichnet in so einem
Account, was das Guthaben von dem Prozess oder von dem Besitzer dieses Kontos dann halt ausmachen
würde. Und dann haben wir halt einen Simmaphor, der letztendlich denn steuert, den Zugriff sozusagen
auf dieses Konto, den steuert. Und wir gehen hier jetzt hier mal einfach von einem wechselseitigen
Ausschlussprinzip aus, neben ein zählenden Simmaphor mit einem Initialwert 1. Das heißt also,
das Konto kann dann zugerufen werden, aber zu einem Zeitpunkt kann nur ein Prozess sozusagen
auf dieses Konto zugreifen. Das heißt also, die Claim-Operation würde jetzt letztendlich darauf
hinauslaufen, dass man entsprechende P-Operationen durchführt und die CLEA-Operation würde darauf
hinauslaufen, dass man entsprechende V-Operationen mit den betreffenden Simmaphor-Inhalten halt
durchführt. Und das sehen wir halt hier. Da kommen wir dann zu der Betriebsmittelverwaltung für dieses
konkrete Beispiel. Wenn wir also jetzt die Konten, die Ressourcen dafür in Anspruch nehmen mit der
Claim-Operation, ja tatsächlich, dann sind es einfach zwei hintereinander folgende P-Operationen,
die einmal das eine Konto belegen wollen und dann das zweite Konto halt legen wollen. Wir haben ja
initial den Wert 1 in diesem Count-Zähler für den Simmaphor halt drin. Das heißt unter normalen
Bedingungen, wenn jetzt so ein Prozess von sich aus allein hierüber läuft und kein anderer Prozess
ihn sozusagen in die Quere kommt, dann würde er tatsächlich mit der Claim-Operation noch tatsächlich
beide Konten halt verwenden dürfen und den Transfer dann durchführen. Die inverse Operation,
das heißt also damit die Bereitstellung dieser beiden Konten für andere Operationen zur
Wiederverwendung durch andere Bankprozesse, wie die CLEAR-Operation. Naja und da haben wir jetzt
invers die V-Operation denn imt hingeschrieben und sind Programmierkonvention, die wir hier
einhalten, in der Umwelikettenreihenfolge geben was frei als in der Reihenfolge, wie wir es
angefordert haben. Das ist so das Prinzip. Nun, wenn man sich das aber genauer jetzt mal anschaut und
Presenters
Zugänglich über
Offener Zugang
Dauer
00:10:24 Min
Aufnahmedatum
2020-12-14
Hochgeladen am
2020-12-14 11:18:25
Sprache
de-DE