[gesichtete Version] | [gesichtete Version] |
Kwastg (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
|||
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
<p><loop_index>Circular wait condition, Deadlock | <p><loop_index id="5fa97854178b8">Circular wait condition, Deadlock</loop_index><loop_index id="5fa978a8e0c97">Deadlock, Circular wait condition</loop_index> | ||
Die vierte der [[Vier Bedingungen nach Coffman|gerade beschriebenen Bedingungen]] (Circular wait condition) liefert eine Möglichkeit, nach der ein bereits eingetretener Deadlock-Zustand auf einem System entdeckt werden kann. Man realisiert dies durch die Konstruktion eines speziellen Graphen, der anschließend untersucht wird. | Die vierte der [[Vier Bedingungen nach Coffman|gerade beschriebenen Bedingungen]] (Circular wait condition) liefert eine Möglichkeit, nach der ein bereits eingetretener Deadlock-Zustand auf einem System entdeckt werden kann. Man realisiert dies durch die Konstruktion eines speziellen Graphen, der anschließend untersucht wird. | ||
</p> | </p> | ||
Zeile 6: | Zeile 6: | ||
<br /> | <br /> | ||
== Betriebsmittelgraph == | == Betriebsmittelgraph == | ||
<loop_index>Betriebsmittelgraph | <loop_index id="5fa97854178c1">Betriebsmittelgraph</loop_index><loop_index id="5fa978545b9b9">Belegungs-Anforderungs-Graph</loop_index><loop_index id="5fa978545b9c8">Zyklus im Betriebsmittelgraph</loop_index><loop_index id="5fa978545b9d4">Konstruktion Betriebsmittelgraph</loop_index> | ||
<br /> | <br /> | ||
<p> | <p> | ||
Zeile 22: | Zeile 22: | ||
<p> | <p> | ||
<loop_area icon="Video.png" icontext="Video"> | <loop_area icon="Video.png" icontext="Video"> | ||
<loop_media type="video" title="Deadlocks erkennen mit Hilfe eines Betriebsmittelgraphen (09:46)" description="http://youtu.be/mhrohwfGQU0" copyright="CC-BY" index=true show_copyright=true>{{#ev:youtube|mhrohwfGQU0|700}}</loop_media> | <loop_media type="video" title="Deadlocks erkennen mit Hilfe eines Betriebsmittelgraphen (09:46)" description="http://youtu.be/mhrohwfGQU0" copyright="CC-BY" index=true show_copyright=true id="5fa97854178c9">{{#ev:youtube|mhrohwfGQU0|700}}</loop_media> | ||
</loop_area> | </loop_area> | ||
</p> | </p> | ||
Zeile 33: | Zeile 33: | ||
<p> | <p> | ||
<loop_area type="task"> | <loop_area type="task"> | ||
<loop_task title="Deadlocks erkennen mit Hilfe eines Betriebsmittelgraphen"> | <loop_task title="Deadlocks erkennen mit Hilfe eines Betriebsmittelgraphen" id="5fa97854178d1"> | ||
<p> | <p> | ||
Mache dich mit dem [http://olli.informatik.uni-oldenburg.de/Deadlock/Start.html Tutorial Deadlock-Algorithmen] der Universität Oldenburg vertraut und vollziehe insbesondere die beiden Schritte [http://olli.informatik.uni-oldenburg.de/Deadlock/Html/Erkennung1_Aufbau.html Konstruktion] und [http://olli.informatik.uni-oldenburg.de/Deadlock/Html/Erkennung1_Zyklus.html Überprüfung] des Betriebsmittelgraphen nach! | Mache dich mit dem [https://web.archive.org/web/20161225060601/http://olli.informatik.uni-oldenburg.de/Deadlock/Start.html Tutorial Deadlock-Algorithmen] der Universität Oldenburg vertraut und vollziehe insbesondere die beiden Schritte [https://web.archive.org/web/20170319180602/http://olli.informatik.uni-oldenburg.de/Deadlock/Html/Erkennung1_Aufbau.html Konstruktion] und [https://web.archive.org/web/20160113173933/http://olli.informatik.uni-oldenburg.de/Deadlock/Html/Erkennung1_Zyklus.html Überprüfung] des Betriebsmittelgraphen nach! | ||
</p> | </p> | ||
</loop_task> | </loop_task> | ||
Zeile 46: | Zeile 46: | ||
<p> | <p> | ||
<loop_area type="task"> | <loop_area type="task"> | ||
<loop_task title="Zeichne den Betriebsmittelgraph und erkenne den Deadlock!"> | <loop_task title="Zeichne den Betriebsmittelgraph und erkenne den Deadlock!" id="5fa97854178d9"> | ||
<p> | <p> | ||
Gegeben seien die Prozesse ''P1'' bis ''P5'' und die Ressourcen ''Drucker'', ''Plotter'', ''Modem'', ''Magnetbandlaufwerk'' sowie ''Diskettenlaufwerk'' und ''CD-ROM-Laufwerk''. Jede Ressource sei genau einmal vorhanden. | Gegeben seien die Prozesse ''P1'' bis ''P5'' und die Ressourcen ''Drucker'', ''Plotter'', ''Modem'', ''Magnetbandlaufwerk'' sowie ''Diskettenlaufwerk'' und ''CD-ROM-Laufwerk''. Jede Ressource sei genau einmal vorhanden. | ||
Zeile 103: | Zeile 103: | ||
<br /> | <br /> | ||
<p> | <p> | ||
Prof. Dr. [http://www2.informatik.hu-berlin.de/~hs/ Holger Schlingloff] vom Institut für Informatik der Humboldt-Universität zu Berlin geht darauf in seinem Aufsatz [ | Prof. Dr. [http://www2.informatik.hu-berlin.de/~hs/ Holger Schlingloff] vom Institut für Informatik der Humboldt-Universität zu Berlin geht darauf in seinem Aufsatz [https://link.springer.com/chapter/10.1007/978-3-540-76394-9_9 Zyklensuche] <small>(hier auch als [http://www.imn.htwk-leipzig.de/~jahn/Cprog/Alg_Inf_Jahr_pdf/zyklensuche.pdf PDF])</small> ein. | ||
</p> | </p> | ||
<p> | <p> | ||
Zeile 134: | Zeile 134: | ||
<br /> | <br /> | ||
== Aufgabe 3 == | == Aufgabe 3 == | ||
<p> | <p> | ||
<loop_area type="task"> | <loop_area type="task"> | ||
<loop_task title="Was tun bei erkanntem Deadlock?"> | <loop_task title="Was tun bei erkanntem Deadlock?" id="5fa97854178e0"> | ||
<p> | <p> | ||
Was sollte das Betriebssystem tun, wenn es einen Deadlock erkannt und die zugehörigen Prozesse und Betriebsmittel identifiziert hat? | Was sollte das Betriebssystem tun, wenn es einen Deadlock erkannt und die zugehörigen Prozesse und Betriebsmittel identifiziert hat? | ||
Zeile 152: | Zeile 153: | ||
<p> | <p> | ||
<loop_area type="task"> | <loop_area type="task"> | ||
<loop_task title="Wie oft nach einem Deadlock suchen?"> | <loop_task title="Wie oft nach einem Deadlock suchen?" id="5fa97854178e7"> | ||
<p> | <p> | ||
Wie oft sollte ein Betriebssystem die Suche nach einem eventuell existenten Deadlock durchführen? | Wie oft sollte ein Betriebssystem die Suche nach einem eventuell existenten Deadlock durchführen? |
Die vierte der gerade beschriebenen Bedingungen (Circular wait condition) liefert eine Möglichkeit, nach der ein bereits eingetretener Deadlock-Zustand auf einem System entdeckt werden kann. Man realisiert dies durch die Konstruktion eines speziellen Graphen, der anschließend untersucht wird.
Das folgende Video veranschaulicht diese beiden Schritte:
Wenn (mindestens ein) Zyklus im Graphen vorhanden ist, dann liegt ein Deadlock vor.
Wenn Sie dieses Element öffnen, werden Inhalte von externen Dienstleistern geladen und dadurch Ihre IP-Adresse an diese übertragen.
Ein Betriebsmittelgraph wird in gängiger Literatur alternativ auch Belegungs-Anforderungs-Graph genannt.
Mache dich mit dem Tutorial Deadlock-Algorithmen der Universität Oldenburg vertraut und vollziehe insbesondere die beiden Schritte Konstruktion und Überprüfung des Betriebsmittelgraphen nach!
Gegeben seien die Prozesse P1 bis P5 und die Ressourcen Drucker, Plotter, Modem, Magnetbandlaufwerk sowie Diskettenlaufwerk und CD-ROM-Laufwerk. Jede Ressource sei genau einmal vorhanden.
Aktuell besteht folgende Ressourcenzuteilung und -anforderung:
Zeichne den Betriebsmittelgraph! Achte dabei auf die Pfeilrichtungen!
Offensichtlich liegt hier ein Deadlock vor.
Wie man sieht, hilft der Betriebsmittelgraph tatsächlich bei der Erkennung eines Deadlocks. Aber:
Wenn du die letzte Aufgabe zum Betriebsmittelgraphen durchgeführt hast, dann hast du (ein Mensch!) den Deadlock erkannt.
Eigentlich ist es aber die Aufgabe des Betriebssystems einen Deadlock zu erkennen!
Die Frage ist also:
Kann ein Betriebssystem auch einen Betriebsmittelgraphen konstruieren und einen Zyklus darin erkennen?
Die Antwort ist: Ja, das geht!
Prof. Dr. Holger Schlingloff vom Institut für Informatik der Humboldt-Universität zu Berlin geht darauf in seinem Aufsatz Zyklensuche (hier auch als PDF) ein.
Es wird an dieser Stelle nicht näher erläutert, wie die Graphenkonstruktion (bzw. -repräsentation) im Rechner, sowie die anschließende Zyklensuche abläuft.
Es sei aber darauf verwiesen, dass diese Tätigkeit eine Reihe anderer Dinge benutzt, die für Studierende an Hochschulen üblicherweise in Vorlesungen zur Mathematik oder zu Algorithmen und Datenstrukturen behandelt werden.
Falls du diese Vorlesungen bereits gehört hast, kommen dir diese Stichwörter vielleicht bekannt vor: Adjazenzmatrix, Nachbarschaftsliste, Rekursion, Tiefensuche, Breitensuche.
Es ist jetzt also klar, dass ein Betriebssystem die folgenden beiden Dinge tun muss, um einen gegebenenfalls vorhandenen Deadlock-Zustand zu erkennen:
Falls ein Zyklus erkannt wird, so liegt ein Deadlock vor, und es können auch die beteiligten Prozesse und Ressourcen identifiziert werden.
Falls kein Zyklus erkannt wird, so besteht die Gewissheit, dass "alles in Ordnung" ist, d.h. es liegt kein Deadlock vor.
Was sollte das Betriebssystem tun, wenn es einen Deadlock erkannt und die zugehörigen Prozesse und Betriebsmittel identifiziert hat?
Überlege, recherchiere und diskutiere in deiner Lerngruppe! Schätze für jeden Vorschlag auch die möglichen Folgen ab.
Wie oft sollte ein Betriebssystem die Suche nach einem eventuell existenten Deadlock durchführen?
Die pragmatischte Antwort lautet immer: "Es kommt darauf an!"
Dann erläutere doch mal: Worauf kommt es an?
Vielleicht liefert die Antwort auf die letzte Aufgabe ja auch Gründe für das nächste Thema: Deadlocks ignorieren.
Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png