REFERAT-MenüDeutschGeographieGeschichteChemieBiographienElektronik
 EnglischEpochenFranzösischBiologieInformatikItalienisch
 KunstLateinLiteraturMathematikMusikPhilosophie
 PhysikPolitikPsychologieRechtSonstigeSpanisch
 SportTechnikWirtschaftWirtschaftskunde  



Inkonsistenz durch parallelen Zugriff auf Dateien

3. EDBS - REFERAT




Thema:


Inkonsistenz durch

parallelen Zugriff

auf Dateien


Transaktionen





verwendete Literatur:


Konzepte der Betriebssysteme







Inkonsistenz durch parallelen Zugriff auf Dateien


Das gleichzeitige Zugreifen von zwei Prozessen auf ein und dieselbe Datei ist, in den meisten Fällen gefährlich. Werden nicht besondere Vorsichtsmaßnahmen getroffen, werden fehlerhafte Ergebnisse produziert oder sogar Daten zerstört. Nur das gleichzeitige Lesen ist ohne Gefahr möglich.


Schutzmaßnahmen sehen vor, daß jeder weitere Prozeß nicht auf eine schon geöffnete Datei, die bearbeitet wird, zugreifen kann. Wurde ein Prozeß abgewiesen, kann er entscheiden, ob er aufgibt oder nach einer gewissen Zeit einen erneuten Versuch startet. Das Betriebssystem kann aufgrund der Information, ob die Datei bearbeitet oder nur gelesen werden soll, entscheiden ob der Zugriff gestattet ist. Dies ist eine Entscheidungsmatrix mit den Bearbeitungsarten 'Lesen' und 'Schreiben':



2. Prozeß


1. Prozeß

Lesen

Schreiben

Lesen

Ja

Nein

Schreiben

Nein

Nein



Durch diese Strategie werden aber auch Fälle, wie gleichzeitiges Lesen und Schreiben auf derselben Datei, das in manchen Fällen durchaus möglich ist, verhindert. Das hängt natürlich immer von der Anwendung ab.


Gibt der Benutzer noch zusätzliche Angaben bekannt, kann das Betriebssystem besser über eine Sperre der Datei entscheiden. Es werden noch die Bearbeitungsarten Erweitern, Lesen/Erweitern und Lesen/Schreiben hinzugefügt.





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



Diese Tabelle zeigt, daß gleichzeitiges Andern von zwei Prozessen einer Datei nicht möglich ist. Diese Einschränkung ist allerdings immer noch zu stark, da es besonders in Echtzeit-Anwendungen erforderlich ist, von parallel laufenden Programmen aus Veränderungen derselben Datei durchzuführen. Das Betriebssystem darf also gleichzeitiges Schreiben von verschiedenen Prozessen auf eine Datei nicht prinzipiell ausschließen, hier kann aber dann der Fall einer Inkonsistenz beim Andern auftreten.



Auf diesem Bild ist dargestellt, daß zwei Prozesse nahezu gleichzeitig ein und denselben Satz verändern wollen. Durch dieses Zusammentreffen werden die Anderungen, die Prozeß A durchgeführt hat, durch die Anderungen, die von Prozeß B durchgeführt werden, zunichte gemacht.


Es ist also offensichtlich, daß diese zwei Prozesse synchronisiert werden müssen. Eine Lösung besteht darin, daß ein Prozeß mit der Operation Lock einen Satz sperrt und mit Unlock die Sperre des Satzes wieder aufhebt. Schließt der sperrende Prozeß die Datei oder beendet er seine Ausführung, hebt das System automatisch die Sperre wieder auf. Die Sperre soll in Bezug auf Dauer und Umfang so gering wie nur möglich sein. Eine Sperre kann entweder den vollständigen Zugriff  oder nur das Schreiben des Satzes verbieten.



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.


Dehnt ein Prozeß eine Satzsperre sehr lange aus, kann dies in der Praxis sehr unangenehm sein.



Diese Situation ist keine Verklemmung, da der Prozeß A den Satz x früher oder später freigeben wird. Laufen diese Prozesse im Rahmen einer Echtzeit-Anwendung, kommt es so zu einer Verzögerung von unbestimmter Dauer. Muß beim Sperren eines Satzes nicht unbedingt auf das Freiwerden des Satzes gewartet werden, kann die Gefahr der Verklemmung und die der Verzögerung ausgeschalten werden. Nach einem erfolglosen Versuch mit mehr oder weniger langer Wartezeit kann der Prozeß in einer der Anwendung angepaßten Weise reagieren.




Transaktionen


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



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



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.



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 Anderungen, die Prozeß A durchgeführt hat, durch die Anderungen, die von Prozeß B durchgeführt werden, zunichte gemacht.







Haupt | Fügen Sie Referat | Kontakt | Impressum | Nutzungsbedingungen