Einige Betriebssyteme enthalten die Funktion des befristeten Wartens bei Satzsperren nicht im Kern, sondern erwarten, daß Datenbanksysteme oder andere zentrale Module die für den Datenzugriff erforderliche Synchronisation wahrnehmen. Ein nicht unbeträchtliches Argument gegen die Satzsperre im Kern eines Betriebssystem ist die Tatsache, daß sowohl die Synchronisation der Zugriffe als auch das atomare Schreiben erforderlich sind, im die Konsistenz bei Veränderungen in Datenbeständen zu erzielen. Nur wenn Veränderungen atomar durchführbar sind, garantiert die Satzsperre die Integrität. Da hierbei die logische Integrität der Daten auch dann noch gewahrt bleiben soll, wenn die Daten auf mehrere Dateien verteilt sind, ergibt sich daraus die Notwendigkeit, eine Reihe von Veränderungen in mehreren Dateien atomar durchführen zu können. Dieses Konzept wird als Transaktionsverarbeitung bezeichnet.
Eine Transaktion ist ein logisch in sich abgeschlossener Vorgang beim Ablauf einer Applikation, der normalerweise auch Ein- und Ausgabeoperationen auf Dateien umfaßt. Das Ziel bei der Verarbeitung einer Transaktion ist es, alle angestrebten Veränderungen auf Dateien entweder korrekt und vollständig oder gar nicht durchzuführen. Bei einem typischen Ablauf einer Transaktion findet zuerst an einem Terminal ein Dialog mit einem Benutzer zur Auswahl einer Funktion und zur Eingabe von Daten statt. Der Dialogprozeß übergibt den Auftrag an den sogenannten Server-Prozeß. Der Server führt die erforderlichen Dateizugriffe durch und meldet die Ergebnisse seinem Auftraggeber, der sie dem Benutzer am Bildschirm anzeigt.
Der Programmierer muß gegenüber einem herkömmlichen Programm folgende Änderungen durchführen:
das Problem muß geteilt werden und Dialog und Dateizugriff in zwei kooperierenden Prozesse untergebracht werden
die sensiblen Dateien müssen besonders gekennzeichnet werden
für das Zwischenspeichern von Transaktionen ist entsprechender Speicherplatz auf der Magnetplatte anzulegen
Beginn und Ende einer Transaktion sind durch spezielle Aufrufe zu markieren
zusätzlich steht ein Aufruf zum Abbrechen einer Transaktion zur Verfügung, mit dem alle bisher im Verlauf der Transaktion durchgeführten Veränderungen wieder rückgängig gemacht werden - entsprechendes gilt für den Fall, daß eine Transaktion vom System abgebrochen wird
Dialog-Prozesse und Server-Prozesse übergeben einander die Kontrolle über die Transaktion durch Senden von Nachrichten
Alle anfallenden Ausgaben auf eine Datei während einer Transaktion werden vom Transaktionsverarbeitungssystem im Transaktions-Speicherbreich auf der Magnetplatte angelegt. Gelesene Sätze werden automatisch gesperrt. Mißlingt das Lesen oder Schreiben eines Satzes, wird die Transaktion abgebrochen. Erst wenn die Transaktion normal abgeschlossen wird, wird die Veränderung auf der Datei selbst durchgeführt. Jede Transaktion durchläuft zwei Phasen, die durch folgende Zeitpunkte begrenzt sind:
Beginn Phase 1: die Transaktion ist gestartet
Ende Phase 1, Beginn Phase 2: die Transaktion ist logisch beendet oder sie wird abgebrochen
Ende Phase 2: die Transaktion ist abgeschlossen
Die Beschaffenheit des Transaktionsverarbeitungsbereiches muß jederzeit so sein, daß er entweder eine unvollständige Transaktion ausweist (Phase 1) oder die vollständige Durchführung einer Transaktion ermöglicht (Phase 2). Wird in Phase 1 unterbrochen, ist die Transaktion nicht durchführbar, und die aufgezeichneten Veränderungen werden einfach gelöscht. Stürzt das System ab und es wird eine Transaktion in Phase 2 gefunden, müssen die dort gespeicherten Veränderungen wiederholt werden.
2. Prozeß
1. Prozeß Lesen Schreiben
Lesen Ja Nein
Schreiben Nein Nein
2.Prozeß
Lesen / Lesen /
1. Prozeß Lesen Schreiben Erweitern Schreiben Erweitern
Lesen Ja Ja Ja Nein Nein
Lesen/Schreiben Ja Ja Ja Ja Nein
Lesen/Erweitern Ja Ja Ja Nein Ja
Schreiben Nein Ja Nein Nein Nein
Erweitern Nein Nein Ja Nein Nein
das Problem muß geteilt werden und Dialog und Dateizugriff in zwei kooperierenden Prozesse untergebracht werden
die sensiblen Dateien müssen besonders gekennzeichnet werden
für das Zwischenspeichern von Transaktionen ist entsprechender Speicherplatz auf der Magnetplatte anzulegen
Beginn und Ende einer Transaktion sind durch spezielle Aufrufe zu markieren
zusätzlich steht ein Aufruf zum Abbrechen einer Transaktion zur Verfügung, mit dem alle bisher im Verlauf der Transaktion durchgeführten Veränderungen wieder rückgängig gemacht werden - entsprechendes gilt für den Fall, daß eine Transaktion vom System abgebrochen wird
Dialog-Prozesse und Server-Prozesse übergeben einander die Kontrolle über die Transaktion durch Senden von Nachrichten
Beginn Phase 1: die Transaktion ist gestartet
Ende Phase 1, Beginn Phase 2: die Transaktion ist logisch
beendet oder sie wird abgebrochen
Ende Phase 2: die Transaktion ist abgeschlossen
Kontrollfragen
1. Nenne die Zeitpunkte durch die jede Transaktion begrenzt ist.
Beginn Phase 1: die Transaktion ist gestartet
Ende Phase 1, Beginn Phase 2: die Transaktion ist logisch beendet oder sie wird abgebrochen
Ende Phase 2: die Transaktion ist abgeschlossen
2. Beschreibe die Verklemmung eines Satzes durch den Zugriff von zwei Prozessen
Diese Abbildung zeigt wie zwei Prozesse versuchen, jeweils zwei Sätze zu sperren. Prozeß A muß beim Versuch den Satz y zu sperren, warten, da dieser bereits von Prozeß B gesperrt wurde. Prozeß B wird beim Zugriff auf den Satz x blockiert, hier entsteht die klassische Situation der Verklemmung.
3. Erkläre die Situation, wenn zwei Prozesse ungehindert gleichzeitig auf ein und denselben Satz zugreifen.
Auf diesem Bild ist dargestellt, daß zwei Prozesse nahezu gleichzeitig ein und denselben Satz verändern wollen. Durch dieses Zusammentreffen werden die Änderungen, die Prozeß A durchgeführt hat, durch die Änderungen, die von Prozeß B durchgeführt werden, zunichte gemacht.
|