www.wikidata.de-de.nina.az
Deadlock oder Verklemmung bezeichnet in der Informatik einen Zustand bei dem eine zyklische Wartesituation zwischen mehreren Prozessen auftritt wobei jeder beteiligte Prozess auf die Freigabe von mindestens einem Betriebsmittel einer Ressource wartet das ein anderer beteiligter Prozess bereits exklusiv belegt hat Eine andere Form der Blockierung von Prozessen ist der Livelock Der Zustand eines Deadlocks kann als eine Menge von Prozessen definiert werden in dem sich ein Deadlock befindet sofern jeder dieser Prozesse auf ein Ereignis wartet das nur ein anderer Prozess aus dieser Menge verursachen kann 1 Vier Prozesse Fahrzeuge auf blauen Linien konkurrieren um ein Betriebsmittel Kreuzung grauer Kreis Es gilt die Rechts vor Links Regel Ein Deadlock tritt auf wenn alle vier Prozesse das Betriebsmittel gleichzeitig belegen bzw sperren schwarze Linien Die Verklemmung kann aufgelost werden indem man die Symmetrie bricht Inhaltsverzeichnis 1 Allgemeines 2 Verklemmungspravention deadlock prevention 3 Verklemmungsvermeidung deadlock avoidance 4 Verklemmungsbeseitigung recovery from deadlocks 5 Livelock 6 Bahnbetrieb 7 Siehe auch 8 Weblinks 9 EinzelnachweiseAllgemeines BearbeitenBeispielsweise kann einem Prozess p1 der Bildschirm zugeteilt worden sein Gleichzeitig benotigt p1 allerdings den Drucker Auf der anderen Seite ist der Drucker dem Prozess p2 zugeteilt der wiederum den Bildschirm fordert Ein Beispiel fur eine Verklemmung aus dem realen Leben ist eine Strassenkreuzung an der von allen vier Seiten Autos gekommen sind und nun die Regel rechts vor links vorausgesetzt darauf warten dass das jeweils rechts wartende Auto zuerst fahrt Ein weiteres Beispiel ist das Philosophenproblem Nach Coffman et al 2 sind die folgenden vier Bedingungen hinreichend fur die Moglichkeit einer Verklemmung Die Betriebsmittel werden ausschliesslich durch die Prozesse freigegeben Da Ressourcenzugriff eines Prozesses nicht unterbrochen werden kann No Preemption Die Prozesse fordern Betriebsmittel an behalten aber zugleich den Zugriff auf andere Hold and Wait Der Zugriff auf ein Betriebsmittel ist exklusiv d h nur einem einzigen Prozess wird der Zugriff auf ein Betriebsmittel gestattet Mutual Exclusion Mindestens zwei Prozesse besitzen bezuglich der Betriebsmittel eine zirkulare Abhangigkeit Circular Wait Verklemmungen konnen bei Systemen eintreten die fahig sind mehrere Prozesse parallel ablaufen zu lassen Multitasksysteme und bei denen die Reihenfolge der Betriebsmittelvergabe nicht festgelegt ist Liegen die Ausfuhrungszeiten der zirkular abhangigen Prozesse weit genug auseinander kommt es nicht zum Deadlock Besteht aber die Moglichkeit einer Verklemmung und will man uber den Vogel Strauss Algorithmus hinausgehen so muss man sie verhindern oder vermeiden ggf beseitigen Die Definitionen von Verklemmungsverhinderung und Verklemmungsvermeidung werden auch ofter vertauscht in der Literatur gefunden Verklemmungspravention deadlock prevention BearbeitenGrundsatzlich gilt Existiert nur ein Prozess in einem geschlossenen System so kann dieser niemals verklemmen Ebenso kann ein Prozess der nur ein Betriebsmittel benotigt nicht verklemmen Treten Verklemmungen ein so konnen diese in der Regel nicht normal beseitigt werden Stattdessen sollte die Betriebsmittelverwaltung versuchen praventive Massnahmen anzuwenden um eine geeignete Sequentialisierung zu erreichen Man spricht von einer Verhinderung wenn mindestens eine der vier Bedingungen fur eine Verklemmung nicht erfullt wird Preemption durchfuhren Einem Prozess werden Betriebsmittel entzogen um sie einem anderen zuzuteilen Hold and Wait verhindern Jeder Prozess gibt zu Beginn an welche Betriebsmittel er benotigt Falls alle benotigten Betriebsmittel gleichzeitig frei sind bekommt sie ein Prozess auf einmal zugeteilt Mutual Exclusion beseitigen Die benotigten Betriebsmittel fur alle Prozesse zuganglich zu machen indem man den exklusiven Zugriff auflost Alternativ Spooling Beispiel Drucker oder Virtualisierung von Betriebsmitteln Beispiel CPU Circular Wait ausschliessen Die Betriebsmittel werden linear geordnet und nur in dieser definierten Reihenfolge angefordert oder zugeteilt Verklemmungsvermeidung deadlock avoidance BearbeitenZusatzlich kann man versuchen die Verklemmung zu vermeiden stellenweise auch Verklemmungsverhutung genannt Dadurch sind Verklemmungen zwar theoretisch moglich das System versucht jedoch die Prozesse so zu uberwachen dass diese nicht verklemmen Dieses Vorgehen basiert auf der Methode des sicheren Zustands Ein Zustand gilt dann als sicher wenn mindestens eine Scheduling Reihenfolge existiert in welcher alle vorhandenen Prozesse beendet werden konnen selbst wenn diese noch ihre maximalen Ressourcenanforderungen stellen sollten Bei einer Vermeidung mussen alle moglichen folgenden Vorgange bekannt sein Hierbei wird haufig der Bankieralgorithmus angewandt bei dem die Betriebsmittel nur dann einem Prozess zugeteilt werden wenn sie vollstandig zuruckgegeben werden Beispielsweise hat ein Prozess p1 insgesamt funf Betriebsmittel und er benotigt noch drei weitere Betriebsmittel zur vollstandigen Ausfuhrung Das Betriebssystem stellt noch drei weitere Betriebsmittel zu Verfugung Ein Prozess p2 besitzt zwei Betriebsmittel und fordert noch acht Betriebsmittel Demzufolge erhalt Prozess p1 die drei Betriebsmittel Damit besitzt er alle Ressourcen um vollstandig verarbeitet zu werden worauf dem Betriebssystem nach der Verarbeitung acht Betriebsmittel frei zu Verfugung stehen die nun Prozess p2 zugeteilt werden konnen Eine Vermeidung ist oft sehr schwierig da man schlecht abschatzen kann welcher Prozess genugend Betriebsmittel wieder freigibt Zwei einfache Verfahren zur Vermeidung stellen wait die und wound wait dar Hierbei werden zyklische Abhangigkeiten vermieden indem es feste Regeln gibt wer ein Mittel behalten darf und welchen es entzogen werden kann Dieses Verfahren wird vor allem in Datenbanksystemen in Bezug auf Schreib und Lesesperren genutzt daher wird im Folgenden auch der Terminus Transaktionen und nicht Prozesse verwendet Bei beiden Verfahren wird jeder Transaktion ein Zeitstempel bei seiner Instanziierung zugewiesen wait die Fordert eine Transaktion eine Sperre an die von einer jungeren gehalten wird so wartet die altere bis die Sperre von der jungeren freigegeben wird Fordert eine Transaktion eine Sperre an die von einer alteren gehalten wird so bricht sie sich selber ab genauer sie startet neu allerdings behalt sie ihren alten Zeitstempel bei um so alter zu wirken und ihre Chancen zu erhohen diesmal komplett durchlaufen zu konnen wound wait Fordert eine Transaktion eine Sperre an die von einer jungeren gehalten wird so wird die jungere abgebrochen genauer neu gestartet und die altere bekommt die Sperre zugewiesen Fordert eine Transaktion eine Sperre an die von einer alteren gehalten wird so wartet sie bis die Sperre von der alteren wieder freigegeben wird Die Terminologie ist wie folgt zu verstehen wait die bzw wound wait geben an wie sich die anfordernde Transaktion verhalt wenn ein Sperrkonflikt auftritt Der erste Terminus gibt jeweils an was passiert wenn die anfordernde Transaktion die altere ist der zweite Terminus gibt an was passiert wenn die anfordernde Transaktion die jungere ist Wait bedeutet jeweils die anfordernde Transaktion wartet auf die Freigabe der Sperre englisch die stirbt bedeutet die anfordernde Transaktion wird zuruckgesetzt wound verwundet bedeutet die anfordernde Transaktion verwundet den Sperrbesitzer d h die anfordernde Transaktion versucht den Sperrbesitzer zuruckzusetzen Um unnotige Rucksetzungen zu vermeiden kann beim wound auf die Rucksetzung dann verzichtet werden wenn sich der Sperrbesitzer bereits in der Freigabe befindet In diesem Fall wartet die anfordernde Transaktion entgegen der Regel weil sichergestellt ist dass der Sperrbesitzer an keinem Deadlock beteiligt ist Verklemmungsbeseitigung recovery from deadlocks BearbeitenBeseitigung durch Prozessabbruch Die einfachste Art eine Verklemmung zu beseitigen ist das gezielte Abbrechen von Prozessen Hierbei sollte nach Moglichkeit ein Prozess gewahlt werden der die Verklemmung sicher lost Ansonsten muss das Verfahren wiederholt werden bis alle Konflikte beseitigt wurden Der meist unvermeidliche Datenverlust kann bei geschickter Prozessauswahl minimiert werden wodurch dieses Verfahren nur sehr schlecht automatisiert werden kann Beseitigung durch Preemption Eine etwas elegantere Losung um Verklemmungen zu beseitigen ist einen Prozess der eine Ressource belegt zu suspendieren und erst zu einem spateren Zeitpunkt dessen Ausfuhrung fortzusetzen In der Zwischenzeit konnen die blockierten Prozesse ihre Aufgabe vollenden wodurch die Verklemmung beseitigt wird Allerdings ist es fur diese Vorgehensweise entscheidend genau uber die Tatigkeit des zu unterbrechenden Prozesses Bescheid zu wissen um Fehler ausschliessen zu konnen Es ist meist praktisch nicht moglich Deadlocks durch dieses Verfahren automatisch zu beseitigen Beseitigung durch Rollback Eine weitere Moglichkeit ist das Ausfuhren eines Rollback auf einem ausgewahlten Prozess der fur die Verklemmung verantwortlich gemacht werden kann Hierzu werden von jedem Prozess in vorher festgelegten zeitlichen Abstanden Sicherungen angelegt zu denen bei Bedarf zuruckgesprungen werden kann Tritt eine Verklemmung auf wird ein Prozess ausgewahlt auf den zuletzt gesicherten Zustand zuruckgesetzt und suspendiert um die Verklemmung zu beseitigen Nicht alle Arten von Prozessen konnen problemlos auf diese Weise zuruckgesetzt werden Beispielsweise eignet sich ein Festplatten Schreibvorgang in den meisten Fallen besser als ein CD DVD Brennvorgang Der unterbrochene Prozess wird seine Ausfuhrung erst fortsetzen wenn die benotigten Betriebsmittel bereitstehen wodurch dieser in ungunstigen Fallen verhungern kann Livelock BearbeitenEine andere Form der Blockierung von Prozessen die wie ein Deadlock die weitere Ausfuhrung des Programms verhindert ist der Livelock Er bezeichnet eine Form der Blockierung zweier oder mehrerer Prozesse die im Unterschied zum Deadlock nicht in einem Zustand verharren sondern standig zwischen mehreren Zustanden wechseln aus denen sie nicht mehr entkommen konnen Jeder einzelne Prozess verharrt also nicht fur immer im Wartezustand sondern ist weiterhin aktiv kann aber auch nicht seine Aufgabe abarbeiten 3 Anschaulich kann man sich zum Livelock zwei Personen vorstellen die sich in einem Gang entgegenkommen und fortwahrend versuchen einander in der gleichen Absolut Richtung auszuweichen und sich gerade dadurch immer gegenseitig blockieren Beim Deadlock wurden sich in dieser Veranschaulichung bleibend die zwei Personen nur gegenuberstehen und jeweils darauf warten dass die andere beiseite geht was nicht geschieht Bahnbetrieb BearbeitenIm Bahnbetrieb bezeichnet Deadlock eine Betriebssituation in der zwei oder mehrere Zuge sich gegenseitig so blockieren dass die Sicherungstechnik keine regularen Zugfahrten mehr zulasst 4 Hier besteht eine Analogie zur Informatik Jeder Zug blockiert einen Zugfolgeabschnitt und wartet darauf in den nachsten Abschnitt einfahren zu konnen Ein Deadlock lasst sich in Algorithmen zur Steuerung von Stellwerken dadurch erkennen dass durch das Stellen einer Fahrstrasse ein Zirkelbezug auftritt 5 6 Siehe auch BearbeitenLock Petri Netz PhilosophenproblemWeblinks Bearbeiten nbsp Wiktionary Deadlock Bedeutungserklarungen Wortherkunft Synonyme Ubersetzungen Deadlock ErkennungEinzelnachweise Bearbeiten Andrew S Tanenbaum Modern Operating Systems Prentice Hall International 2008 ISBN 978 0 13 813459 4 E C Coffman Michael John Elphick A Shoshani System Deadlocks In Computing Surveys Band 3 Nr 2 1971 S 67 78 cs umass edu PDF 896 kB Andrew S Tanenbaum Moderne Betriebssysteme Pearson Studium 2009 ISBN 978 3 8273 7342 7 S 539 eingeschrankte Vorschau in der Google Buchsuche Streckenblock auf eingleisiger Strecke Stellwerke de abgerufen am 25 Juli 2013 Jacob Kohlruss Untersuchung von Methoden zur Vermeidung von Deadlocks in synchronen Eisenbahnsimulationsprogrammen Diplomarbeit Institut fur Verkehrsmanagement Fachhochschule Braunschweig Wolfenbuttel 2007 Yong Cui Simulation Based Hybrid Model for a Partially Automatic Dispatching of Railway Operation Dissertation Universitat Stuttgart 2009 S 55ff Abgerufen von https de wikipedia org w index php title Deadlock Informatik amp oldid 232971988