home *** CD-ROM | disk | FTP | other *** search
/ Knowledge & Learning / WISS_LERN.iso / doslern / computer / educard / bs___4.sti < prev    next >
Encoding:
Text File  |  1992-02-13  |  26.7 KB  |  677 lines

  1. YCPAA #!!# - Deadlocks -
  2. @CEInhalt
  3.  
  4. @CPDas Thema von BS___4 sind Deadlocks.
  5.  
  6. Start mit ⌐Betriebsmittel II@BS___4¬
  7. AHBAA #!!# Betriebsmittel II
  8. @HEWas sind Betriebsmittel ?
  9. @HB⌐Betriebsmittel@BS1¬ sind die in einem Datenverarbeitungssystem zur
  10. Erledigung eines Prozesses einsetzbaren technischen Einrichtungen
  11. (Hardware) und Dienstleistungen (Software).
  12.  
  13. Beispiele technischer Einrichtungen:
  14.   - Drucker,
  15.   - Bandgeräte,
  16.   - Speicher,
  17.   - CPU,
  18.   - Terminal,
  19.   - Kanalwerk, ...
  20. Beispiele Dienstleistungen (im weiteren Sinne):
  21.   - Programme,
  22.   - Dateien,
  23.   - Daten,
  24.   - Prozesse,
  25.   - Routinen, ...
  26. @HEVerwendung von Betriebsmitteln:
  27.  
  28. @HBDie Verwendung von Betriebsmitteln wird unterschieden in:
  29.  
  30. a) @HPwiederverwendbare@HB (reusable)
  31.    Sie können nach ihrer Freigabe einem neuen ⌐Prozeß@BS1¬ zugewiesen
  32.    werden. Beispiele:
  33.  
  34.    - CPU,
  35.    - Speicher,
  36.    - Dateien, ...
  37.  
  38. b) @HPnicht wiederverwendbare@HB (consumable)
  39.    Sie können nach ihrer Freigabe nicht wieder verplant werden, da sie
  40.    aufgebraucht sind. Beispiele:
  41.  
  42.    - Nachrichten,
  43.    - ⌐Rechenzeit@BS2¬, ...
  44. @HEZuteilung von Betriebsmitteln:
  45.  
  46. @HBDie Zuteilung von Betriebsmitteln wird unterschieden in:
  47.  
  48. a) @HPentziebare@HB (preemptible)
  49.    Sie können dem Prozeß jederzeit ohne Schaden entzogen werden.
  50.    Beispiele:
  51.  
  52.    - CPU,
  53.    - Arbeitsspeicher, ...
  54.  
  55. b) @HPnicht entziehbare@HB (non preemptible)
  56.    Sie müssen dem Prozeß so lange zugewiesen bleiben, bis dieser sie
  57.    von sich aus zurückgibt. Beispiele:
  58.  
  59.    - Drucker,
  60.    - Bandgeräte, ...
  61.  
  62. @HEZugriff auf Betriebsmittel:
  63.  
  64. @HBDer Zugriff auf Betriebsmittel wird unterschieden in:
  65.  
  66. a) @HPexklusiv benutzbar@HB (exclusive controllable)
  67.    Sie können zu einem Zeitpunkt nur von einem einzigen Prozeß belegt
  68.    werden. Beispiele:
  69.    - Drucker,
  70.    - Bandgeräte,
  71.    - Schreibzugriff auf Dateien, ...
  72.  
  73. b) @HPgemeinsam benutzbar@HB (common controllable)
  74.    Sie können zu einem Zeitpunkt von mehreren Prozessen belegt werden.
  75.    Beispiele:
  76.    - Lesezugriff auf Dateien,
  77.    - Code von Programmen,
  78.    - Compiler in reentrant geschrieben, ...
  79.  
  80.  
  81. @HB   weiter mit ⌐Deadlock II@BS___4¬
  82. AHBAA #!!# Deadlock II
  83. @HEWas ist ein Deadlock ?
  84.  
  85. @HBEin Prozeßsystem mehrerer paralleler Prozesse Pi
  86.  
  87.   @HAPARBEGIN P1, P2, ..., Pn PAREND;
  88.  
  89. @HBist ein ⌐Deadlock@BS1¬, wenn der Prozeßfortschritt unendlich lange
  90. blockiert ist, weil zwei oder mehr Prozesse sich gegenseitig blockieren,
  91. indem sie selbst bereits exklusive, nicht-entziehbare ⌐Betriebsmittel@BS1¬
  92. belegen, die ein anderer ⌐Prozeß@BS1¬ zur Fortsetzung seiner Arbeit
  93. benötigt.
  94.  
  95.            siehe auch: ⌐Betriebsmittel II@BS___4¬
  96.  
  97.  
  98.  
  99.  
  100.  
  101. @HE1. Beispiel:
  102. @HB
  103. @DP                                           @HB
  104. @DP              │            │               @HB
  105. @DP              │ @DB╔═╗@DP        │               @HB  Deadlock-gefährdet
  106. @DP              │ @DB╠═╣@DP        │               @HB
  107. @DP              │ @DA╚═╝@DP        │               @HB  Noch leicht auflösbar,
  108. @DP     ─────────┘  @DM|     /|\@DP └─────────      @HB  wenn ein Fahrer auf
  109. @DP             @DM/___|______|___@DA╔@DB══╦══╗        @HB  Vorfahrt verzichtet.
  110. @DP             @DM\   |      |   @DA╚@DB══╩══╝        @HB
  111. @DP       @DB╔══╦══@DA╗@DM___|______|___\              @HB
  112. @DP       @DB╚══╩══@DA╝@DM   |      |   /              @HB
  113. @DP     ─────────┐ @DM\|/     |  @DP┌─────────      @HB
  114. @DP              │        @DA╔═╗@DP │               @HB
  115. @DP              │        @DB╠═╣@DP │               @HB
  116. @DP              │        @DB╚═╝@DP │               @HB
  117. @DP              │            │               @HB
  118. @DP                                           @HB
  119. @HE2. Beispiel:
  120. @HB
  121. @DP                                           @HB
  122. @DP              │            │               @HB
  123. @DP              │            │               @HB  Deadlock eingetreten
  124. @DP              │            │               @HB
  125. @DP              │            │               @HB  Zur Auflösung müßte   
  126. @DP     ─────────┘ @DB╔═╗@DP        └─────────      @HB  mindestens ein Fahrer
  127. @DP                @DB╠═╣ @DA╔@DB══╦══╗                @HB  zurückgesetzt werden.
  128. @DP                @DA╚═╝ ╚@DB══╩══╝                @HB
  129. @DP               @DB╔══╦══@DA╗ ╔═╗                 @HB  Das entspricht dem
  130. @DP               @DB╚══╩══@DA╝ @DB╠═╣                 @HB  Abbruch eines Prozesses.
  131. @DP     ─────────┐        @DB╚═╝@DP ┌─────────      @HB  ==> Schaden
  132. @DP              │            │               @HB
  133. @DP              │            │               @HB
  134. @DP              │            │               @HB
  135. @DP              │            │               @HB
  136. @DP                                           @HB
  137. @HE3. Beispiel:
  138.  
  139.       @HAt                                    @HBZwei Prozesse bewerben sich
  140.   @HAP2 @HP/│\                                   @HBum ein exklusiv benutzbares
  141.       @HP│                                    @HBBetriebsmittel.
  142.   @HAt2e @HP│@HA_________
  143.       @HP│         @HM▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓        @HBDas rote Rechteck ist nicht
  144.       @HP│         @HM▓▓nicht betretbar▓▓        @HBbetretbar, da das Betriebs-
  145.       @HP│         @HM▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓        @HBmittel nur exklusiv verwend-
  146.   @HAt2a @HP│@HA_________@HM▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓        @HBbar ist. Es muß also umgangen
  147.       @HP│         @HA|                 |        @HBwerden.
  148.       @HP│         @HA|                 |
  149.       @HP│         @HA|                 |
  150.       @HP└─────────────────────────────────────────────> @HAt
  151.                @HAt1a               t1e            P1
  152.  
  153. @HBIm dargestellten Prozeßverlauf wird P2 zwar behindert, aber es kommt zu
  154. keiner gegenseitigen Blockade.   ???
  155. @HE4. Beispiel:
  156.                   @HC▒ @HBunsicherer Bereich
  157.       @HAt           @HM▓ @HBnicht betretbar, da exklusives Betriebsmittel (BM)
  158.   @HAP2 @HP/│\                                                               
  159.       @HP│                                  @HBP1 fordert zuerst BM b und
  160.   @HG____@HP│@HG______                            @HBwährend er noch b belegt, a an.
  161.  @HG│    @HP│      @HM▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓         @HBP2 fordert zuerst BM a und
  162. @HAb@HG│   @HG_@HP│@HG______@HM▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓         @HBwährend er noch a belegt, b an.
  163.  @HG│  │ @HP│      @HM▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓     @HBDer rote Bereich muß wieder
  164.  @HG│__│_@HP│@HG______@HM▓▓▓▓x▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓     @HBumgangen werden.             
  165.    @HAa@HG│ @HP│      @HC▒▒▒▒@HM▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓     @HBGelangt ein Prozeß in den un-
  166.     @HG│_@HP│@HG______@HC▒▒▒▒@HM▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓     @HBsicheren Bereich, dann errei-
  167.       @HP│      @HG|   |             |   |     @HBchen beide Prozesse den Punkt x.
  168.       @HP└──────@HG|@HP───@HG|@HP─────────────@HG|@HP───@HG|@HP────────────────> @HAt
  169.              @HG└───|────@HAb@HG────────┘   |            @HAP1
  170.                  @HG└────────@HAa@HG────────┘
  171. @HBVom Punkt x an sind beide Prozesse im Deadlock. Hätten die Prozesse die
  172. BM in gleicher Reihenfolge angefordert, hätte es keinen Deadlock gegeben.
  173. @HENotwendige Bedingungen für das Entstehen eines Deadlocks:
  174.  
  175. @HB4 Bedingungen sind für das Entstehen eines Deadlocks notwendig:
  176.  
  177.   1. Bedingung des @HPgegenseitigen Ausschlusses@HB (mutual exclusion)
  178.      Die angeforderten und vergebenen Betriebsmittel (also alle BM)
  179.      sind exklusiv verwendbar.
  180.   2. Bedingung der @HPNicht-Unterbrechbarkeit@HB (non preemption)
  181.      Die Betriebsmittel können einem Prozeß nicht entzogen werden.
  182.      Der Prozeß muß sie von sich aus freigeben.
  183.   3. Bedingung des @HPWartens auf weitere Betriebsmittel@HB (resource waiting)
  184.      Die Prozesse belegen die bereits erhaltenen exklusiven Betriebsmittel,
  185.      während sie auf die Zuteilung noch weiterer Betriebsmittel warten.
  186.   4. Bedingung der @HPgeschlossenen Kette@HB (chains of tasks)
  187.      Die Prozesse warten aufeinander, das heißt jeder Prozeß der Kette
  188.      belegt bereits Betriebsmittel, die von einem anderen Prozeß der Kette
  189.      benötigt werden.
  190.  
  191. @HE3 prinzipielle Verfahren zur Behandlung von Deadlocks:
  192. @HB  1. @HPVerhindern@HB von Deadlocks (prevention)
  193.      Das Betriebssystem ist so entworfen, daß Deadlocks unmöglich sind.
  194.      Eine oder mehrere der notwendigen Bedingungen zur Entstehung eines
  195.      Deadlocks werden ausgeschlossen.
  196.   2. @HPVermeiden@HB von Deadlocks (avoidance)
  197.      Das Betriebssystem muß in der Lage sein, während des Prozeßablaufes
  198.      dynamisch Maßnahmen zu starten, um es nicht zu einem Deadlock kommen
  199.      zu lassen. Es muß vor dem Start eines Prozesses wissen, wieviel
  200.      Betriebsmittel dieser von welchem Typ braucht (Maximalanforderung des
  201.      Prozesses). Das Betriebssystem kontrolliert die Zuteilung von
  202.      Betriebsmitteln mit Hilfe dieser Informationen so, daß nicht alle
  203.      der notwendigen Bedingungen für das Entstehen eines Deadlocks gleich-
  204.      zeitig erfüllt sind.
  205.   3. @HPErkennen und Beheben@HB von Deadlocks (detection and recovery)
  206.      Das Betriebssystem testet von Zeit zu Zeit das Prozeßsystem, ob ein
  207.      Deadlock vorliegt. Erkennt es einen Deadlock, so muß es diesen mit
  208.      minimaler Schadensentstehung beseitigen.
  209. @HEVerhindern von Deadlocks (prevention)
  210. @HBDeadlocks kann man durch folgende Methoden verhindern:
  211.  
  212.   1. Streng sequentieller Ablauf der Prozesse.
  213.      - unrealistisch, da gerade Parallelität gewünscht ist.
  214.  
  215.   2. Jeder Prozeß muß zu Beginn sämtliche Betriebsmittel, die er
  216.      gebrauchen will, anfordern und zugeteilt bekommen.
  217.      - unökonomisch, da ein Prozeß Betriebsmittel, die er nur zu Beginn
  218.        oder am Ende benötigt, die restliche Zeit unnötig belegt.
  219.  
  220.   3. Prozesse, die Betriebsmittel nachfordern, müssen zunächst alle
  221.      Betriebsmittel, die sie bereits besitzen, freigeben.
  222.      - Realisierung nur in speziellen Fällen möglich.
  223.        Beispiel: Ein Prozeß fordert ein Bandgerät nach. Er muß dann zu-
  224.                  nächst alle Bandgeräte, die er schon besitzt, freigeben.
  225.                  Sie werden ihm praktisch entzogen. Magnetbandgeräte sind
  226.                  aber typische nicht-entziehbare Betriebsmittel.
  227. @HB  4. Betriebsmittel werden hierarchisch angeordnet. Ein Prozeß darf sie
  228.      nur in dieser hierarchischen Reihenfolge anfordern, das heißt,
  229.      er stellt zunächst Anforderungen an Betriebsmittel vom Typ Ti, die er
  230.      braucht. Erst dann darf er Anforderungen an Ti+j (j ≥ 1) stellen.
  231.      Betriebsmittel vom Typ Ti kann er dann nicht mehr bekommen.
  232.  
  233.    Beweisidee:
  234.  
  235.    1. Fall: @HPEs gibt einen Prozeß mit Anforderung an höchste Ti.
  236.             @HBForderungen nach Typen > Ti liegen noch nicht vor. Er braucht
  237.             also auf keinen Prozeß zu warten und wird garantiert fertig.
  238.  
  239.    2. Fall: @HPEs gibt 2 oder mehr Anforderungen an höchste Ti.
  240.             @HBMindestens einer kann weiter, der dann auf keinen anderen
  241.             Prozeß warten muß. Dies wird rekursiv fortgesetzt bis man
  242.             zum 1. Fall gelangt.
  243.  
  244.  
  245. @HEBeispiel: Deadlockfreiheit beim ⌐5 Philosophen@BS___3¬-Problem
  246.           durch hierarchische Rangfolge der Betriebsmittel (= Gabeln):
  247.  
  248.                                @HM┌────┐@HB
  249.                                @HM│  0 │@HB
  250.                      @HJ└┼┘@HB       @HM└────┘@HB       @HJ└┼┘@HB
  251.                      @HJ │@HB1                     @HJ│@HB0
  252.  
  253.                 @HM┌────┐@HB                        @HM┌────┐@HB
  254.                 @HM│  1 │@HB        @HPSPAGHETTI@HB       @HM│  4 │@HB
  255.                 @HM└────┘@HB        @HO≈≈≈≈≈≈≈≈≈       @HM└────┘@HB
  256.                     @HJ└┼┘@HB                      @HJ└┼┘@HB
  257.                      @HJ│@HB2                       @HJ│@HB4
  258.                         @HM┌────┐@HB   @HJ└┼┘@HB  @HM┌────┐@HB
  259.                         @HM│  2 │@HB    @HJ│@HB3  @HM│  3 │@HB
  260.                         @HM└────┘@HB        @HM└────┘@HB
  261.  
  262. @HBPrioritäten: Gabel_0 < Gabel_1 < Gabel_2 < Gabel_3 < Gabel_4
  263. @HBJeder Prozeß (= Philosoph) muß nun eine bestimmte Reihenfolge der
  264. P-Operationen entsprechend der Rangfolge der Betriebsmittel einhalten:
  265.  
  266.   @HAProzeß_i: CYCLE
  267.               BEGIN
  268.                 Denken;
  269.                 P (Gabel geringerer Priorität);
  270.                 P (Gabel höherer Priorität);
  271.                   Essen;
  272.                 V (Gabel geringerer Priorität);
  273.                 V (Gabel höherer Priorität);
  274.               END;
  275.  
  276. @HBAngenommen alle 5 Philosophen wollen jetzt gleichzeitig essen. Dann wird
  277. den Philosophen 0 bis 3 ihre erste Gabel zugewiesen. Philosoph 4 möchte
  278. als erstes Gabel_0, die hat aber schon Philosoph 0. Nur der 3. Philosoph
  279. bekommt auch noch seine 2. Gabel (Gabel_4) und kann essen. ==> Schlechte
  280. Auslastung der Betriebsmittel, da nur einer ißt, obwohl zwei könnten.
  281.  
  282.  
  283.   weiter mit ⌐Deadlock-Vermeidung@BS___4¬
  284. AHBAA #!!# Deadlock-Vermeidung
  285. @HEVermeiden von Deadlocks (avoidance)
  286.  
  287. @HBBeim Vermeiden von ⌐Deadlock@BS1¬s muß jeder ⌐Prozeß@BS1¬ vor dem Start
  288. seine Maximalanforderungen der einzelnen ⌐Betriebsmittel@BS1¬-Typen bekannt
  289. geben. Es muß vom System garantiert werden, daß die Prozesse ihre
  290. Maximalforderungen auch in Anspruch nehmen können.
  291.  
  292. Im Gegensatz zum Verhindern von Deadlocks (siehe ⌐Deadlock II@BS___4¬) wird
  293. auf Grund der Informationen der Prozesse über ihre Betriebsmittel-
  294. Anforderungen und -Belegungen erst bei Neuanforderung von Betriebsmitteln
  295. überprüft, ob diese Neuanforderung zulässig ist oder nicht. Zulässig heißt
  296. hier, daß nicht alle für das Entstehen eines Deadlocks notwendigen
  297. Bedingungen erfüllt sind.
  298.  
  299. Exklusiven Zugriff kann man aus logischen und physikalischen Gründen
  300. nicht verbieten. Nicht-Entziehbarkeit ist wegen der sonst entstehenden
  301. Schäden ebenfalls nicht zu verbieten.
  302.  
  303. @HEGrößenabkürzungen:
  304.  
  305. @HB   - System P besteht aus n Prozessen
  306.      @HPP = {P1, ..., Pn}@HB
  307.    - Anzahl der Betriebsmittel-Typen : @HPT@HB
  308.    - Anzahl der vorhandenen Betriebsmittel : m
  309.      @HPm = (m1, ..., mT)@HB
  310.    - Anzahl der vorhandenen Betriebsmittel : FREE
  311.      @HPFREE = (free1, ..., freeT)@HB
  312.    - Maximalwerte der Betriebsmittel für Prozeß Pi : MAXi
  313.      @HPMAXi = (max1, ..., maxT),      1 ≤ i ≤ n@HB
  314.    - aktuell angeforderte Betriebsmittel : REQ
  315.      @HPREQ = (req1, ..., reqT)@HB
  316.    - Anzahl der zugewiesenen Betriebmittel für Prozeß Pi : DEVi
  317.      @HPDEVi = (dev1, ..., devT),      1 ≤ i ≤ n@HB
  318.    - Anzahl der noch benötigten Betriebsmittel für Pi : NEEDi
  319.      @HPNEEDi = (need1, ..., needT),   1 ≤ i ≤ n@HB
  320.  
  321. @HBOffensichtlich muß gelten:
  322.  
  323.   1. Die Anzahl der noch freien Betriebsmittel ist gleich der
  324.  
  325.                Anzahl der vorhandenen
  326.        minus   der Summe der zugewiesenen Betriebsmittel aller Prozesse@HP
  327.                                    n
  328.            FREE = m - (für alle j: Σ dev ij),    1 ≤ j ≤ T
  329.                                   i=1
  330.  
  331. @HB  2. Die Anzahl der Betriebsmittel, die ein Prozeß noch benötigt, ist
  332.      gleich der
  333.  
  334.                Maximalanforderung des Prozesses
  335.        minus   der ihm bereits zugewiesenen Betriebsmittel@HP
  336.  
  337.            NEEDi = MAXi - DEVi
  338.  
  339. @HEKriterien für die Realisierbarkeit eines Zustandes
  340.  
  341. @HBEs gibt drei Forderungen damit ein Zustand realisierbar ist:
  342.  
  343.   1. Kein Prozeß kann mehr Betriebsmittel anfordern,
  344.      als im System überhaupt vorhanden sind.
  345.  
  346.            @HPMAXi ≤ m
  347.  
  348. @HB  2. Kein Prozeß darf mehr Betriebsmittel zugewiesen bekommen,
  349.      als er an Maximalanforderung zu Prozeßbeginn angegeben hat.
  350.  
  351.            @HPDEVi ≤ MAXi
  352.  
  353. @HB  3. Kein Prozeß kann mehr Betriebsmittel eines Typs anfordern,
  354.      als noch frei sind.
  355.  
  356.            @HPREQ ≤ FREE
  357. @HBDie Realisierbarkeit eines Zustandes ist notwendig, aber nicht
  358. hinreichend, um Deadlockfreiheit zu garantieren.
  359.  
  360. @HEBeispiel:
  361.  
  362.   @HAm   = (4)
  363.   @HAMAX = (4, 4, 2)                 @HBDer dargestellte Zustand ist zwar
  364.   @HADEV = (1, 1, 1)                 @HBrealisierbar, aber er ist nicht sicher.
  365.                                   @HBEin unsicherer Zustand gilt bereits
  366.   @HAAnzahl BM                       @HBals Deadlock.
  367.      @HP/│\
  368.      @HA4@HP┤
  369.       @HP┤
  370.       @HP┤
  371.      @HA1@HP┤@HJ░░░░░░ ▒▒▒▒▒▒ ▓▓▓▓▓▓
  372.       @HP└──────┬──────┬──────┬──> @HAProzesse
  373.          @HAP1     P2     P3
  374.  
  375. @HEFall 1
  376.  
  377. @HBP1 (oder auch P2) fordert noch freies Betriebsmittel an.
  378.  
  379.   @HAm   = (4)
  380.   MAX = (4, 4, 2)
  381.   DEV = (1, 1, 1)
  382.  
  383.   @HAAnzahl BM
  384.      @HP/│\
  385.      @HA4@HP┤
  386.       @HP┤
  387.       @HP┤@HJ░░░░░░
  388.      @HA1@HP┤@HJ░░░░░░ ▒▒▒▒▒▒ ▓▓▓▓▓▓
  389.       @HP└──────┬──────┬──────┬──> @HAProzesse
  390.          @HAP1     P2     P3
  391.  
  392. @HB==>  Deadlock, wenn Maximalanforderungen in Anspruch genommen werden.
  393. @HEFall 2
  394.  
  395. @HBP3 fordert noch freies Betriebsmittel an.
  396.  
  397.   @HAm   = (4)                       @HBDeadlock, da P3 zwar fertig werden kann,
  398.   @HAMAX = (4, 4, 2)                 @HBaber die frei gewordenen Betriebs-
  399.   @HADEV = (1, 1, 1)                 @HBmittel nicht für einen der anderen
  400.                                   @HBProzesse ausreichen.
  401.   @HAAnzahl BM
  402.      @HP/│\
  403.      @HA4@HP┤
  404.       @HP┤
  405.       @HP┤              @HJ▓▓▓▓▓▓
  406.      @HA1@HP┤@HJ░░░░░░ ▒▒▒▒▒▒ ▓▓▓▓▓▓
  407.       @HP└──────┬──────┬──────┬──> @HAProzesse
  408.          @HAP1     P2     P3
  409.  
  410.  
  411. @HESicherer Zustand
  412.  
  413. @HBEin Prozeßsystem P ist in einem sicheren Zustand Z, wenn eine der
  414. beiden folgenden Bedingungen erfüllt ist:
  415.  
  416.   a) |P| ≤ 1,    das heißt es gibt keinen oder nur einen Prozeß
  417.  
  418.   b) Es gibt einen Prozeß Pi, der beendbar ist, und der Folgezustand Z+
  419.      mi P - {Pi} und FREE+ = FREE + DEVi ist sicher.
  420.  
  421.      Anders gesagt:
  422.      Zu jedem Zeitpunkt gibt es einen Prozeß, der seine
  423.      Maximalanforderungen erfüllt bekommen kann, also beendet werden kann.
  424.  
  425.  
  426.      weiter mit ⌐Deadlock-Algorithmen@BS___4¬
  427. AHBAA #!!# Deadlock-Algorithmen
  428. @HEHabermann'sche Forderung
  429.  
  430. @HBAusgangspunkt der Habermann'schen Forderung ist ein sicherer Zustand
  431. (siehe ⌐Deadlock-Vermeidung@BS___4¬). Nach Zuteilen einer Betriebsmittel-
  432. anforderung muß es eine Folge beendbarer Prozesse geben, in der sämtliche
  433. Prozesse enthalten sind.
  434.  
  435. Genauer:
  436. Nach Zuteilen einer Betriebsmittel-Anforderung muß es mindestens einen
  437. Prozeß geben, der fertig werden kann. Dieser gibt dann seine Betriebs-
  438. mittel frei. Jetzt muß es einen Prozeß geben, der mit den jetzt vor-
  439. handenen Betriebsmitteln fertig werden kann. Usw.
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446. @HL  NEEDk1 ≤ FREE
  447.   NEEDk2 ≤ FREE + DEVk1
  448.     :
  449.     :
  450.   NEEDkj ≤ FREE + DEVk1 + DEVk2 + ... + DEVk(j-1)     <==>
  451.   NEEDkj ≤ FREE + S (k-1),       k = 1..n
  452.  
  453. @HBDa gilt @HLNEEDi = MAXi - DEVi @HBergibt sich
  454.   @HLMaxk - DEVk ≤ FREE + S (k-1)
  455.   MAXk        ≤ FREE + DEVk + S (k-1)
  456.   MAXk        ≤ FREE + S (k)
  457.  
  458. @HBSetzt man die Habermann'sche Forderung in einen Algorithmus um, der diese
  459. Folge von beendbaren Prozessen findet, so muß dieser unter Umständen
  460. sämtliche Permutationen der n Prozesse durchlaufen, das heißt eine als
  461. nicht sicher erkannte Folge immer wieder umstellen. Da es n Prozesse sind
  462. gibt es n! Permutationen. Der Aufwand des Algorithmus ist bei
  463. T Betriebsmittel-Typen etwa von der Ordnung: O (T * n) bis O (T * n²).
  464. @HEDeadlockalgorithmus für einen einzigen Betriebsmittel-Typ
  465. @HBVorüberlegungen:
  466. Gegeben seien m Betriebsmittel vom gleichen Typ.
  467.  
  468. @HEA) Für jeden Prozeß muß dann gelten:
  469.    @HB1. @HP1 ≤ MAXi ≤ m
  470.    @HB   Entspricht dem 1. Kriterium für die Realisierbarkeit eines
  471.       Zustandes. Kein Prozeß kann mehr Betriebsmittel eines Typs anfordern
  472.       als im System überhaupt vorhanden sind.
  473.    2. @HP0 ≤ DEVi ≤ MAXi
  474.    @HB   Entspricht dem 2. Kriterium für die Realisierbarkeit eines
  475.       Zustandes. Keinem Prozeß darf mehr Betriebsmittel zugewiesen werden,
  476.       als er an Maximalforderung zu Prozeßbeginn angegeben hat.
  477.    @HB3.            @HPn
  478.          @HPS (n) = Σ DEVi ≤ m
  479.                 @HPi=1
  480.    @HB   Es können nicht mehr Betriebsmittel eines Typs zugewiesen werden,
  481.       als im System überhaupt vorhanden sind.
  482. @HEB) Abschätzen der Anzahl von Betriebsmitteln m
  483. @HB   Sei G der größte zulässige Maximalwert einer Anforderung eines
  484.    Prozesses. Dann kann kein Deadlock auftreten, wenn m ≥ n * G ist.
  485.    Andererseits rechen bereits genau n * G Betriebsmittel aus.
  486.    Als untere Grenze für die Anzahl der Betriebsmittel liegt G fest, da
  487.    die Maximalanforderung erfüllt werden können muß.
  488.    m muß also im Bereich von G bis N * G liegen. Dieser Bereich läßt sich
  489.    aufteilen in einen Bereich, in dem Deadlocks auftreten können und in
  490.    einen Deadlock freien Bereich:
  491.  
  492.      @HPDeadlock gefährdeter Bereich: [G .. n * (G - 1)]
  493.      Deadlock freier      Bereich: [n * (G - 1) + 1 .. n * G]
  494.  
  495.    @HBDer Bereich läßt sich noch genauer angeben durch:
  496.      @HPuntere Grenze: max (MAXi),        1 ≤ i ≤ n
  497.                      n
  498.      obere Grenze : (Σ (MAXi - 1)) + 1
  499.                     i=1
  500. @HEC) Habermann'sches Theorem
  501.  
  502.    @HBHabermann verwendet für das Vermeiden von Deadlocks bei nur einem
  503.    Betriebsmittel-Typ eine m*n-Matrix, in der für jeden Prozeß Pi seine
  504.    Maximalanforderung und die Anzahl der aktuell belegten Betriebsmittel
  505.    eingetragen sind. (siehe auch nächste Seite)
  506.  
  507.             n
  508.    ist m < (Σ (MAXi - 1)) + 1, so kann man durch Abzählen feststellen, ob
  509.            i=1
  510.    ein Deadlock vorliegt oder nicht. Man wählt eine horizontale Linie
  511.    y = k und zählt die schraffierten Flächen oberhalb und unterhalb dieser
  512.    Linie. Die Zahl der oberhalb belegten Betriebsmittel bezeichnet man mit
  513.    Uk (upper), die Zahl der unterhalb belegten Betriebsmittel mit
  514.    Lk (lower).
  515.  
  516.    Uk plus Lk ist die Summe aller belegten Betriebsmittel: Uk + Lk = S (n)
  517.  
  518. @HEVeranschaulichung der n*m-Matrix
  519.  
  520.   @HAAnzahl BM
  521.      @HP/│\
  522.      @HA4@HP┤
  523.       @HP┤@HJ░░░░░░
  524.       @HP┤@HJ░░░░░░
  525.      @HA1@HP┤@HJ░░░░░░ ▒▒▒▒▒▒ ▓▓▓▓▓▓
  526.       @HP└──────┬──────┬──────┬──> @HAProzesse
  527.          @HAP1     P2     P3
  528.  
  529.  
  530. @HBIm dargestellten Systemzustand sei T = 1, n = 3, m = 7.
  531. Für k = 2 gilt dann zum Beispiel Uk = 1 und Lk = 4
  532. Insgesamt sind Uk + Lk = 5 Betriebsmittel belegt.
  533. DEV1 = 3, DEV2 = DEV3 = 1.
  534. |FREE| ist also = 2.
  535.  
  536. @HEHabermann'sches Theorem
  537.  
  538.    @HPEin Zustand enthält dann und nur dann einen Deadlock, wenn
  539.    es ein k aus 0..m gibt, für das gilt: Uk > m - k
  540.  
  541.    @HBPositiv ausgedrückt:
  542.    @HPEin Zustand ist dann und nur dann deadlockfrei, wenn
  543.    für alle k aus 0..m gilt: Uk ≤ m - k
  544.  
  545.    @HBBeweisidee:
  546.      I. Es muß gelten: @HPUk + Lk ≤ m
  547.         @HBDas heißt es können nicht mehr Betriebsmittel vergeben werden
  548.         als vorhanden sind.
  549.     II. Es muß gelten:      @HPLk ≥ k - FREE
  550.    @HBIII. Es gilt:       @HPUk + Lk = m - FREE
  551.         @HBDie belegten Betriebsmittel ergeben sich, indem man von allen
  552.         Betriebsmitteln die freien abzieht.
  553.  
  554.  
  555. @HB   Die hinreichende und notwendige Bedingung für Deadlock-Freiheit
  556.  
  557.       @HPfür alle k aus 0..m gilt: Uk ≤ m - k
  558.  
  559. @HB   ergibt sich also durch II. und III.:
  560.  
  561.    Uk + Lk = m - FREE
  562.  
  563.    Lk auf die rechte Seite bringen und Ersetzen durch k - FREE.
  564.  
  565.    Wegen Lk >= k - FREE folgt dann die Behauptung.
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572. @HEAlgorithmus zur Deadlockuntersuchung (für einen Betriebsmittel-Typ)
  573.  
  574. @HBMan führt eine Tabelle mit den Maximalanforderungen und aktuell
  575. belegten Betriebsmitteln für jeden Prozeß.
  576.  
  577. Der Vektor U enthält die aktuellen Uk's der Prozesse Pi. Fordert ein
  578. Prozeß ein Betriebsmittel an, so wird erst geprüft, ob der neue Zustand
  579. realisierbar ist. Ist dies der Fall, so wird der Vektor U auf den neuen
  580. Stand gebracht.
  581.  
  582. Die Deadlockuntersuchung erfolgt nach der Theorem-Ungleichung:
  583.  
  584.   @HPFür alle k aus 0..m muß gelten: Uk ≤ m - k
  585.  
  586. @HBWird ein Deadlock entdeckt, müssen alle Änderungen rückgängig gemacht
  587. werden.
  588.  
  589. Wird keiner entdeckt, so wird dem Prozeß das Betriebsmittel zugewiesen.
  590. @HEAufwand:
  591. @HB  O (max (MAXi))
  592.   Der Vektor ändert sich ab dem Index MAXi - DEVi - 1 = k
  593.  
  594. Der Algorithmus läßt sich noch verbessern, indem man eine neue Größe k_min
  595. einführt. k_min ist der kleinste Wert von k, für den gilt: Uk = m - k.
  596.  
  597. Durch die Zuweisung eines Betriebsmittels an der Stelle j ändern sich alle
  598. Werte von U für k < j  (Uk := Uk + 1).
  599.  
  600. Deadlockfreiheit kann nur garantiert werden für j < k_min.
  601. Für j > k_min kann Uj > m - j gelten, d. h. Deadlockgefahr.
  602.  
  603. @HEAufwand nun:
  604. @HBWird kein Deadlock entdeckt, gleiche Ordnung wie oben.
  605. Wird jedoch einer entdeckt braucht nicht mehr der ganze Vektor U
  606. durchsucht zu werden. Es reicht die Abfrage j > k_min.
  607.  
  608. @HEDeadlock-Algorithmus für mehrere Betriebsmittel-Typen
  609.  
  610. @HBDer Deadlock-Algorithmus für einen einzigen Betriebsmittel-Typ ist
  611. nicht anwendbar bei mehreren Betriebsmittel-Typen. Man kann Fälle
  612. konstruieren, in denen zwar für jeden einzelnen Betriebsmittel-Typ der
  613. Zustand deadlockfrei ist, der Gesamtzustand aber nicht.
  614.  
  615. @HEAlgorithmus-Idee:
  616.   @HAMenge aller Prozesse
  617.   REPEAT
  618.     Überprüfe für alle Prozesse:
  619.       Kann die Anforderung von Prozeß i erfüllt werden ?
  620.       Falls ja, streiche ihn aus der Menge aller Prozesse und verwende
  621.                 die frei gewordenen Betriebsmittel wieder.
  622.   UNTIL die Anforderung keines Prozesses kann erfüllt werden.
  623.   Ist am Ende der Überprüfung die Menge leer, so ist der Zustand sicher,
  624.   sonst ist der Zustand unsicher.
  625.  
  626. @HEAufwand des Algorithmus für mehrere Betriebsmittel-Typen T
  627. @HB
  628.   a) günstiger Fall    : Es kann immer der nächste Kandidat aus der Menge
  629.                          gestrichen werden.
  630.                          @HPO (n * T)
  631. @HB
  632.   b) ungünstigster Fall: Es kann immer erst der letzte Kandidat der Menge
  633.                          gestrichen werden.
  634.                          @HPO (T * n²)
  635.  
  636. @HEBemerkung:
  637. @HBPermutationen in der Prozeßreihenfolge (Ordnung der Menge aller Prozesse)
  638. ändern nichts an dem Zustand (sicher bzw. unsicher). Wenn x Prozesse aus
  639. der Menge gestrichen sind, so ist eine bestimmte Menge von Betriebsmitteln
  640. frei. Durch eine Permutation dieser x Prozesse ändert sich nichts an
  641. dieser Menge.
  642. Durch eine Permutation der Prozesse kann sich aber der Aufwand des
  643. Algorithmus ändern.
  644. @HEErkennen und Beseitigen von Deadlocks
  645.  
  646. @HBDas Erkennen und Beseitigen von Deadlocks auf der einen und das Vermeiden
  647. von Deadlocks auf der anderen Seite unterscheiden sich nur
  648.  
  649.   a) durch den Zeitpunkt der Untersuchung,
  650.  
  651.   b) dadurch, daß man die Maximalanforderungen der Prozesse nicht mehr
  652.      kennen braucht.
  653.  
  654. @HEDas Erkennen von Deadlocks
  655.  
  656. @HBVon Zeit zu Zeit wird der aktuelle Zustand auf Deadlockfreiheit unter-
  657. sucht. Man testet, ob Prozesse, die auf die Erfüllung ihrer Anforderungen
  658. warten, jemals die angeforderten Betriebsmittel erhalten können. Man ver-
  659. wendet dazu die selben Algorithmen wie beim Vermeiden von Deadlocks
  660. (man ersetzt lediglich "NEED" durch "REQ", restliche Anforderung durch
  661. aktuelle).
  662. @HEDas Beseitigen von Deadlocks
  663.  
  664. @HBIst ein Deadlock entdeckt, so wird festgestellt, welche Prozesse
  665. daran beteiligt sind. (Z.B. sind dies die noch verbliebenen Prozesse in
  666. der Menge aller Prozesse im obigen Algorrithmus.) Es wird dann derjenige
  667. Prozeß abgebrochen, bei dem der entstandene Schaden am geringsten ist.
  668.  
  669. @HEBemerkung
  670. @HBDas Erkennen und Beseitigen von Deadlocks wird dem Vermeiden von
  671. Deadlocks in einigen Systemen vorgezogen, weil der Aufwand geringer als
  672. bei den anderen Lösungen ist. Es ist allerdings zu bezweifeln, daß der
  673. Zeitgewinn den entstandenen Schaden beim Beseitigen eines Deadlocks
  674. aufwiegt.
  675.  
  676.        weiter mit ⌐Scheduling II@BS___5¬
  677.