Vnode Schnittstelle - Frank Kardel
Vnode Schnittstelle - Frank Kardel
Vnode Schnittstelle - Frank Kardel
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
BackStage<br />
Diese Art der Auftragsbearbeitung ist allerdings mit dem Problem der verwaisten Aufrufe<br />
behaftet. Eine Transaktion kann nicht terminieren, bevor nicht alle ihre<br />
Untertransaktionen terminiert sind. Es kann vorkommen, daß die Kommunikation<br />
zwischen den Knoten längerfristig gestört ist, oder ein Knoten ganz außer Betrieb geht<br />
(Geräteausfall oder Verkauf). In diesem Falle würden Transaktionen übrigbleiben, die<br />
ohne weitere Maßnahmen bestehen bleiben. Um solche Transaktionen auch im verteilten<br />
Fall unter Kontrolle zu halten, erhält jede Transaktion eine Lebensdauer. Nach Ablauf<br />
der Lebensdauer wird die Transaktion mit abort() abgebrochen. Damit sterben verwaiste<br />
Transaktionen automatisch ohne (größere) Seiteneffekte aus [Nel81]. Hierbei ist<br />
zu bemerken, daß die Transaktionen nur als zuverlässiger Fernaufruf genutzt werden.<br />
Im allgemeinen gibt es kein gemeinsames commit oder abort. Jede Transaktion muß ihre<br />
voneinander unabhängigen Untertransaktionen selber überwachen. Werden die Untertransaktionen<br />
nicht mehr betreut, so beenden sie sich aufgrund der zeitlichen Lebensdauerbegrenzung<br />
selbst. Ist ein gemeinsames commit oder abort gewünscht, so<br />
muß dieses innerhalb der Transaktion programmiert werden. Bis jetzt erscheint es<br />
noch nicht notwendig, diese starke Forderung als Basismechanismus zu realisieren.<br />
Ein gemeinsames commit und abort wäre in diesem Falle nur schwer handhabbar, wenn<br />
man die korrekte Exterminierung aufrechterhalten möchte[GR93]. Weil die Ergebnisse<br />
einer Untertransaktion zuverlässig an die übergeordnete Transaktion übertragen werden<br />
müssen, kommt es hier in der Ergebnisübermittlungsphase grundsätzlich zu Exterminierungsproblemen.<br />
Solange eine begonnene Ergebnisübermittlung nicht korrekt<br />
bestätigt ist, kann die Transaktion nicht mehr automatisch terminiert werden,<br />
wenn eine commit-Entscheidung dieser Transaktion vorliegt. Diese kritische Phase des<br />
Kommunikationsprotokolls sollte so kurz wie möglich gehalten werden.<br />
3.3.1 Transaktionsimplementierung<br />
Wegen der geringen Verfügbarkeit von portierbaren Transaktionsbibliotheken für C/<br />
Unix wurde ein eigener Ansatz zur Realisierung der Transaktionssemantik in Verbindung<br />
mit dem Fernaufruf gewählt. Um eine weite Verbreitung (heterogene Systeme)<br />
zu erreichen, wurde C/Unix als Entwicklungsumgebung gewählt. Als sichere, atomare<br />
Systemaufrufe mit dauerhaftem Effekt gelten die Systemaufrufe creat(), link() und rename().<br />
Auf der Basis dieser Systemaufrufe lassen sich Daten stabil speichern. Weiterhin muß<br />
gewährleistet werden, daß alle geschriebenen Daten auch auf dem eigentlichen, nicht<br />
flüchtigen Datenträger hinterlegt sind. Ein Systemzusammenbruch kann somit toleriert<br />
werden. Bei BSD-Systemen bietet sich der fsync()-Systemaufruf an. Er gewährleistet,<br />
daß alle Daten der Datei auf dem Datenträger hinterlegt sind. Bei System V Varianten<br />
der Unix Betriebssysteme bietet sich hier die open()-Operation mit der Option<br />
O_SYNC an.<br />
Als Fehlermodell kommen für die Implementierung Betriebsmittelknappheit, Programmierfehler<br />
und Bedienfehler in Betracht.<br />
29