home *** CD-ROM | disk | FTP | other *** search
/ Knowledge & Learning / WISS_LERN.iso / doslern / computer / educard / bs___5.sti < prev    next >
Encoding:
Text File  |  1992-03-09  |  53.9 KB  |  1,341 lines

  1. YCPAA #!!# - Scheduling -
  2. @CEInhalt
  3.  
  4. @CPDas Thema von BS___5 ist das Scheduling.
  5.  
  6. Start mit ⌐Scheduling II@BS___5¬
  7. AHBAA #!!# Scheduling II
  8. @HEEinführung
  9. @HBFalls mehrere Prozesse gleichzeitig auf ein bestimmtes ⌐Betriebsmittel@BS1¬
  10. zugreifen möchten, muß man entscheiden, welchem dieser Prozesse das
  11. Betriebsmittel als nächstes zugeteilt wird. Man bezeichnet das Verfahren
  12. der Auswahl des zu bedienenden Prozesses als ⌐Scheduling@BS1¬ und das
  13. Programm, das diese Auswahl trifft, als ⌐Scheduler@BS1¬.
  14.  
  15. Von besonderer Bedeutung ist die Verplanung der CPU (siehe ⌐Rechnerkern@BS1¬).
  16.  
  17. Beim Scheduling unterscheidet man zwei prinzipiell verschiedene
  18. Vorgehensweisen:
  19.  
  20. @HEa) deterministisches Scheduling
  21.    @HBSind die Ausführungszeiten der einzelnen Prozesse schon vorher bekannt
  22.    (deterministisch), kann man diese zeitlich so anordnen, daß sich ein
  23.    gewünschtes Systemverhalten ergibt.
  24.    In der Praxis sind die Voraussetzungen für deterministisches
  25.    Scheduling aber meistens nicht gegeben.
  26. @HEb) probabilistisches Scheduling
  27.    @HBSind nur Erwartungswerte und Wahrscheinlichkeits-Verteilungen für die
  28.    Rechenzeiten bzw. die Ankunftszeiten der Prozesse bekannt, so muß man
  29.    das Verhalten der einzelnen Scheduling-Algorithmen durch
  30.    charakteristische Größen (z. B. ⌐Wartezeit@BS1¬, ⌐Verweilzeit@BS2¬) beschreiben.
  31.  
  32. @HEZiele des Schedulings
  33. @HBDie Ziele des Schedulings, welches Systemverhalten erzielt werden soll
  34. bzw. welche charakteristischen Größen eines bestimmten Verhaltens
  35. optimiert werden sollen, sind je nach Typ des ⌐Betriebssystem@BS1¬s verschieden:
  36.  
  37.   - Batch-System        : hoher ⌐Durchsatz@BS1¬
  38.   - Time-Sharing-System : kurze ⌐Antwortzeit@BS1¬en
  39.   - Real-Time-System    : Antworten innerhalb festgelegter garantierter
  40.                           Zeiten
  41.  
  42. Je nach Ziel muß eine unterschiedliche Verplanung vorgenommen werden.
  43.  
  44.  
  45. @HB    weiter mit ⌐probabil. Scheduling@BS___5¬
  46. AHBAA #!!# probabil. Scheduling
  47. @HEgegebene Einschränkung
  48.  
  49. @HBEs sind nur Erwartungswerte und Wahrscheinlichkeits-Verteilungen für die
  50. Bedienzeiten bzw. die Ankunftszeiten der Prozesse bekannt.
  51.  
  52. Die verschiedenen Verfahren lassen sich unterscheiden:
  53.  
  54.   - nach dem Verfahren der Prioritätszuteilung an konkurrierende Prozesse
  55.   - in statische / dynamische Prioritätsvergabe
  56.   - in Verfahren mit / ohne Preemption (siehe ⌐Deadlock II@BS___4¬)
  57.  
  58. Als Modell dient hier das einfache Warteschlangen-Modell mit
  59. ⌐Warteschlange@BS2¬ (Queue) und ⌐Bedieneinheit@BS2¬. Kann eine Anforderung an
  60. die Bedieneinheit nicht sofort bearbeitet werden, so wird sie in die
  61. Warteschlange eingereiht.
  62.  
  63.      siehe auch ⌐SET-Modell@BS1¬
  64.  
  65. @EH1. Verfahren:
  66. @HEFCFS (first come first served)
  67. @HBVerfahren ohne Preemption
  68. In diesem, auch als FIFO bezeichneten Verfahren, werden die einzelnen
  69. Prozesse streng in der Reihenfolge des Eintreffens ihrer Anforderungen
  70. bedient.
  71.  
  72. @HEWie groß ist die mittlere Wartezeit der Aufträge ?
  73. @HBGegeben sei ein M/M/1-System:
  74. @HLWartezeit = Gesamtzeit im System - ⌐Bedienzeit@BS1¬     <==>
  75.  
  76.              1     1             1
  77.         W = ─── * ───         - ───               <==>
  78.              µ    1-δ            µ
  79.  
  80.              1     δ
  81.           = ─── * ───              @HBsiehe ⌐Little@BS___2¬@HL
  82.              µ    1-δ
  83. @HBInterpretation:
  84.  
  85. Die ⌐Wartezeit@BS1¬ ist unabhängig von der (individuellen) ⌐Rechenzeit@BS2¬ der
  86. Prozesse. Das heißt im Mittel ist die Wartezeit für lange und kurze Jobs
  87. gleich lang. Die ⌐Auslastung@BS1¬ hat einen sehr starken Einfluß auf die
  88. Wartezeit.
  89.  
  90. Um die Wartezeit zu verkürzen, kann der Benutzer beim FCFS eine
  91. @HPAntistrategie@HB anwenden, indem er mehrere kleinere Prozesse zu einem
  92. größeren zusammenfaßt.
  93.  
  94. Diese Aussagen gelten auch für die Vefahren LCFS und RANDOM. Unterschiede
  95. gibt es aber in der ⌐Varianz@BS1¬ der Wartezeiten (FCFS: geringe Varianz,
  96. RANDOM: sehr starke Varianz).
  97.  
  98. Festhalten sollte man auch, daß die mittlere Wartezeit kein geeignetes
  99. Kriterium für die Güte der Algorithmen ist, da bei gleichen Wartezeiten
  100. die Varianz ganz anders sein kann.
  101. @HEMittlere Verweilzeit im System (= Gesamtzeit im System)
  102.  
  103.      @HLMittlere Verweilzeit = Wartezeit + Bedienzeit         <==>
  104.  
  105.                              1     δ     1
  106.                         V = ─── * ─── + ───                <==>
  107.                              µ    1-δ    µ
  108.  
  109.                              1     1
  110.                           = ─── * ───
  111.                              µ    1-δ
  112.  
  113.  
  114. @HEE [N] = mittlerer Anzahl Kunden im System
  115. @HL
  116.             δ
  117.    E [N] = ───
  118.            1-δ
  119. @EH2. Verfahren:
  120. @HELCFS (last come first served)
  121. @HBVerfahren mit Preemption
  122.  
  123. Bei diesem, auch als LIFO bezeichnetem Verfahren, behält der zuletzt ein-
  124. getroffene Prozeß die ⌐Bedieneinheit@BS2¬ (CPU) so lange, bis er entweder
  125. vollständig bearbeitet wurde oder durch einen neu ankommenden ⌐Prozeß@BS1¬ aus
  126. der Bedieneinheit verdrängt und an das Ende der ⌐Warteschlange@BS2¬ zur späteren
  127. Weiterbearbeitung eingereiht wird.
  128.  
  129.                          @HA┌────────────────────────┐
  130.                          │                        │
  131.                         \│/               @HE┌───────┴───────┐
  132.          @HBAnfang@HP┌┬┬┬┬┬┬┬┬┬┬┐@HBEnde           @HE│               │
  133.                @HP│││@HBQueue@HP│││├@HA──────────────>@HE│ @HBBedieneinheit @HE├@HA────────>
  134.                @HP└┴┴┴┴┴┴┴┴┴┴┘               @HE│               │
  135.             @HA─────────────────────────────>@HE└───────────────┘
  136.                     @HBneuer Prozeß
  137. @HEWie groß ist die mittlere Wartezeit W ?
  138.  
  139. @HL           1     δ
  140.       W = ─── * ───            @HB(wie bei FCFS)@HL
  141.            µ    1-δ
  142.  
  143. @HBDie Wartezeiten bei FCFS, LCFS und Round Robin sind gleich.
  144. Richter sagt jedoch, daß die Varianz der Wartezeiten bei LCFS größer 
  145. als bei Round Robin ist.
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155. @EH3. Verfahren:
  156. @HESJF (shortest job first)
  157. @HBVerfahren ohne Preemption
  158.  
  159. Bei diesem Verfahren wird jeweils der Prozeß mit der kürzesten ⌐Rechenzeit@BS2¬
  160. als nächster ausgewählt. Man muß also die Rechenzeiten der Prozesse schon
  161. im voraus wissen, um sie in die Queue einsortieren zu können.
  162. (Wieso gehört das Verfahren dann zu den probabilistischen ???)
  163.  
  164. Kurze Prozesse sollen schnell bearbeitet werden, damit die Anzahl der
  165. Prozesse im System möglichst gering ist und somit die Antwortzeiten kurz
  166. sind.
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173. @HEWie groß ist die mittlere Wartezeit W ?
  174. @HL                 __                            x
  175.              ∩ * x²                            ⌠
  176.   W (x) = ────────────────     mit g (x) = ∩ * │ t * dB (t)
  177.      @HB│@HL     2 (1 - g (x))²                      ⌡      @HB│
  178.      @HB│@HL                                        t=0     @HB└Dichte der
  179.      @HB└angenommene                                      Bedienverteilung
  180.       Rechenzeit des Prozesses
  181.  
  182.  
  183. Zum Vergleich die Mittlere Wartezeit bei FCFS mit M/M/1:
  184.  
  185. @HL           1     δ
  186.       W = ─── * ───
  187.            µ    1-δ
  188.  
  189.  
  190.  
  191. @HEVergleich der SJF- und FCFS-Wartezeiten
  192.  
  193.                                             @HBInterpretation:
  194.        @HAw (x)                  @HO* * * *       @HBBei FCFS ist die Wartezeit
  195.         @HP/│\               @HO*      @HASJF        @HBfür lange Prozesse genauso
  196.          @HP│             @HO*                    @HBgroß wie für kurze.
  197.          @HP│           @HO*
  198.          @HP│          @HO*                       @HBBei SJF ist die Wartezeit
  199.          @HP│         @HO*                        @HBfür lange Prozesse wesentlich
  200.          @HP│         @HO*                        @HBgrößer als für kurze.
  201.          @HP│        @HO*
  202.          @HP│       @HO*
  203.          @HP│     @HO*                @HAFCFS
  204.          @HP│@HO───*───────────────────────
  205.          @HP│@HO**
  206.          @HP└─────────────────────────────>
  207.                                        @HAx
  208.  
  209. @EH4. Verfahren:
  210. @HERR (round robin)
  211. @HBVerfahren mit Preemption
  212.  
  213. Bei diesem ⌐Zeitscheibenverfahren@BS2¬ werden die neu ankommenden Prozesse
  214. nach FCFS in die Queue eingereiht. Ist ein Prozeß an der Reihe, so wird
  215. ihm die Bedieneinheit für ein bestimmtes Quantum Q an ⌐Rechenzeit@BS2¬
  216. (Zeitscheibe von 100-500ms) zugeteilt. Alle Zeitscheiben sind gleich groß.
  217. Ist ein Prozeß nach Ablauf einer Zeitscheibe fertig, so verläßt er das
  218. System. Andernfalls wird er wieder an den Anfang der Queue eingereiht.
  219.  
  220.            @HA┌──────────────────────────────────────┐
  221.            │                                      │
  222.            │                              @HE┌───────┴───────┐
  223.            @HA└──>@HP┌┬┬┬┬┬┬┬┬┬┬┐               @HE│               │
  224.                @HP│││@HBQueue@HP│││├@HA──────────────>@HE│ @HBBedieneinheit @HE├@HA────────>
  225.   @HA────────────>@HP└┴┴┴┴┴┴┴┴┴┴┘               @HE│               │
  226.   @HBneuer Prozeß                            @HE└───────────────┘
  227. @HEHerleitung der Wahrscheinlichkeit gk, daß die Rechenzeit eines Prozesses
  228. zwischen to und t1 liegt, also k Zeitscheiben benötigt.
  229. @HB
  230. Bedienzeitverteilung:
  231. @HL                                     -µt
  232.             B (t) = P [x ≤ t] = 1 - e
  233.  
  234.  @HAB (t) @HP/│\
  235.         @HP│
  236.       @HA1 @HP┤                           @HB┐@HO* * * *
  237.         @HP│                   @HO*   @HB|   ├ @HAgk = ?
  238.         @HP│           @HB_@HO*@HB_ _ _ _ _ |   ┘
  239.         @HP│      @HO*   @HB|            |
  240.         @HP│   @HO*      @HB|            |
  241.         @HP│ @HO*        @HB|            |
  242.         @HP│@HO*         @HB|            |
  243.         @HP└──────────┬────────────┬───────────>
  244.                    @HAto           t1
  245. @HEHerleitung von gk
  246. @HL
  247.  
  248.                                    -µ * (k-1) * Q
  249.   to = (k-1) * Q ==> B (to) = 1 - e
  250.  
  251.                                    -µ * k * Q
  252.   t1 =     k * Q ==> B (t1) = 1 - e
  253.  
  254.  
  255.   gk = P [to ≤ x ≤ t1] = P [x ≤ t1] - P [x < to]
  256.  
  257.  
  258.                        = ...
  259.  
  260.                           k-1                                 -µQ
  261.                        = s    * (1 - s)          mit 0 < s = e    < 1
  262.  
  263. @HERechnung
  264. @HL
  265.   gk = P [to ≤ x ≤ t1] = P [x ≤ t1] - P [x < to]
  266.  
  267.                                -µkQ          -µ(k-1)Q
  268.                        = (1 - e    ) - (1 - e        )
  269.  
  270.                           -µ(k-1)Q    -µkQ
  271.                        = e         - e
  272.  
  273.                           -µ(k-1)Q         -µQ
  274.                        = e         * (1 - e   )
  275.  
  276.                           k-1                                 -µQ
  277.                        = s    * (1 - s)          mit 0 < s = e    < 1
  278.  
  279. @HBgk ist geometrisch verteilt, dem diskreten Gegenstück zur
  280. Poisson-Verteilung.
  281. @HEGrenzfälle beim RR-Verfahren
  282. @HBa) @HPQ -> ∞
  283. @HB   In diesem Extremfall verhält sich das Verfahren wie
  284.    FCFS ohne Preemption.
  285.  
  286. @HBb) @HPQ -> 0
  287.    @HBIn diesem Extremfall erhält man das Processor-Sharing-Scheduling
  288.    (PS-Scheduling).
  289.  
  290.    @HPPS-Scheduling@HB erhält man, wenn man während eines Zeitraumes die
  291.    Bedieneinheit sehr oft zwischen Prozessen umschaltet, d. h. Q -> 0.
  292.    Der Benutzer hat das Gefühl, ihm alleine stünde die Bedieneinheit zur
  293.    Verfügung, weil "immer" jeder Prozeß rechnet. Er rechnet aber nur mit
  294.    einem Bruchteil der Geschwindigkeit, die er ohne das Umschalten hätte.
  295.  
  296.    Man betrachtet oft den @HPOverhead@HB (die Zeit zum Umschalten) als
  297.    vernachlässigbar, wenn der Overhead noch erheblich kürzer ist, als die
  298.    Zeit, in der ein Prozeß die Bedieneinheit ohne Unterbrechung besitzt.
  299. @HEWie groß ist die mittlere Wartezeit bei RR ?
  300.  
  301. @HBBeim Round Robin Verfahren hängt die ⌐Antwortzeit@BS1¬ T, also auch die
  302. ⌐Wartezeit@BS1¬ W, von der Länge der gewünschten ⌐Bedienzeit@BS1¬ x ab und ist
  303. gegeben durch
  304. @HL
  305.                  1                         δ     1
  306.     T (x) = x * ───      @HBnach Little:@HL T = ─── * ───
  307.                 1-δ                       1-δ    ∩
  308.  
  309.     @HBT = Verweilzeit@HL                        1     ∩     1
  310.                                         = ─── * ─── * ───
  311.    @HB1    _@HL                                 1-δ    µ     ∩
  312.   @HB─── = x@HL
  313.    @HBµ@HL                                       1
  314.                                         = ─── * x
  315.                                           1-δ
  316.  
  317. @HL                δ
  318.    W (x) = x * ───             @HBW = Wartezeit@HL
  319.                1-δ
  320.                        @HBwegen@HL T (x) = W (x) + x  <==>  W (x) = T (x) - x
  321. @HB
  322. Eigenschaften des Round Robin Verfahrens:
  323.  
  324.   a) Die Diskriminierung eines Benutzers ist linear, das heißt,
  325.      die Antwortzeit wächst linear mit der benötigten Rechenzeit.
  326.  
  327.   b) Die Bestrafung aller Prozesse, ob groß oder klein, ist konstant,
  328.      das heißt die Wartezeit, die je nach Bedienzeit als "Strafe" aufer-
  329.      legt wird, ist konstant.
  330.                              @HL   W (x)     δ@HB
  331.      Bestrafungsfunktion:    @HL  ─────── = ───   ==>
  332.                              @HL     x      1-δ@HB
  333.  
  334.      Faire Verplanung, der Benutzer kann keine Antistrategie entwickeln.
  335. @HEVergleich der Bestrafungsfunktionen
  336.  
  337. @HAW (x) @HP/│\                                        @HM─ @HB: RR
  338. @HA─────  @HP│                                         @HO* @HB: FB
  339.   @HAx    @HP│  @HK+                                      @HLo @HB: SRR
  340.        @HP│   @HLo                                     @HK+ @HB: FCFS
  341.        @HP│    @HK+
  342.        @HP│     @HLo                @HO*    *
  343.        @HP│      @HK+          @HO*               *
  344.        @HP│       @HK+@HLo    @HO*                          *
  345.        @HP│         @HK+@HLo@HO*                                  * * * *
  346.    @HAδ   @HP│         @HO* @HK+ @HLo
  347.   @HA───  @HP┤@HM───────@HO*@HM─────@HK+@HM──@HLo@HM─────────────────────────────────────
  348.   @HA1-δ  @HP│     @HO*          @HK+    @HLo
  349.        @HP│   @HO*                    @HK+        @HLo o o o o o o o o o o
  350.        @HP│@HO*                                         @HK+ + + + + + +        @HA1
  351.        @HP└────────────────────────────────────────────────────────> @HAx = ───
  352.                                                                        @HAµ
  353. @EH5. Verfahren:
  354. @HESRR (selfish round robin)
  355. @HBVerfahren mit Preemption und mit dynamischer Vergabe von Prioritäten
  356.  
  357. Bei diesem Verfahren wird die Queue durch eine Trennlinie in zwei Teile
  358. getrennt. (selfish = egoistisch)
  359.  
  360.                           @HA┌────────────────────────┐
  361.                          @HA\│/                       │
  362.              @HBTrennlinie@HA<─@HM║@HA│                   @HE┌────┴────┐
  363.           @HB∩  @HP┌┬┬┬┬┬┬┬┬┬┬┬@HM║@HP┬┬┬┬┬┬┬┬┬┬┬┐        @HE│ @HBBedien- @HE│
  364.          @HA───>@HP││ @HBlinks @HP│││@HM║@HP│ @HBrechts @HP││├@HA───────>@HE│         ├@HA──>
  365.              @HP└┴┴┴┴┴┴┴┴┴┴┴@HM║@HP┴┴┴┴┴┴┴┴┴┴┴┘        @HE│ @HBeinheit @HE│
  366.                          @HM║                    @HE└─────────┘
  367.  
  368.              @HO├───────────┼───────────────────────────────┤
  369.                 @HBäußeres,          inneres System
  370.  
  371. @HBNeu ankommende Prozesse werden in den linken Teil der Queue aufgenommen
  372. und erhalten die Priorität 0. Die Priorität wächst dann mit der Zeit
  373. linear um den Faktor α ≥ 0.
  374.  
  375. Im rechten Teil der Queue befinden sich Prozesse, die schon bedient wurden
  376. (sie haben schon Rechenzeit aufgenommen), aber noch nicht fertig sind und
  377. Prozesse aus dem linken Teil, wenn sie eine bestimmte Priorität erreicht
  378. haben. Diese neuen Prozesse im rechten Teil werden durch Verschieben der
  379. Trennlinie darin aufgenommen.
  380.  
  381. Die Priorität in dem rechten Teil der Queue wächst linear um den Faktor ß.
  382. Es gilt dabei α ≥ ß ≥ 0. Alle Prozesse haben im rechten Teil der Queue die
  383. gleiche Priorität.
  384.  
  385. Ein Prozeß wechselt vom linken Teil der Queue in den rechten, wenn er die
  386. Priorität der Prozesse im rechten Teil erreicht hat.
  387.  
  388.  
  389. @HEHerleitung der Übergangsrate ∩' in den rechten Teil der Queue
  390.  
  391.   @HAPriorität
  392.      @HP/│\                                   @HO*
  393.       @HP│                                @HO*@HA: @HB┐             @HBα und ß sind
  394.       @HP│ @HBWechsel vom                @HO*   *@HA: @HB│             @HBdie Winkel bzw.
  395.       @HP│ @HBrechten in den         @HO*      * @HA: @HB├ y           @HBSteigungen
  396.       @HP│ @HBlinken Teil        @HO*         *  @HA: @HB│
  397.       @HP│ @HBder Queue──┐   @HO*  @HBß         @HO* @HBα @HA: @HB│
  398.       @HP│            @HO*@HA...............@HO*@HA....:.@HB┘@HA..........
  399.       @HP│           @HO*@HA:              @HO*     @HA:
  400.       @HP│          @HO* @HA:             @HO*      @HA:
  401.       @HP│ @HBProzeß i@HO*  @HA:  @HBProzeß i+1@HO*       @HA:
  402.       @HP│        @HO*   @HA:           @HO*        @HA:
  403.       @HP│       @HO* @HBα  @HA:          @HO* @HBα       @HA:
  404.       @HP└──────@HO*@HP───────────────@HO*@HP─────────────────────────────────────> @HAt
  405.              @HB├──────1/∩──────┤
  406.                    ├────────1/∩'────────┤
  407. @HEHerleitung der Übergangsrate ∩'
  408. @HL
  409.             y
  410.       ß = ────── = y * ∩'     ==> y = ß * 1/∩'
  411.            1/∩'
  412.  
  413.                 y
  414.       α = ────────────        ==> y = α * (1/∩' - 1/∩)
  415.            1/∩' - 1/∩
  416.  
  417. ==>   α * (1/∩' - 1/∩) = ß * 1/∩'               @HBgesucht ∩'@HL
  418.  
  419.     1/∩' * α - 1/∩ * α = 1/∩' * ß
  420.  
  421.        1/∩' - 1/∩' * ß = 1/∩ * α
  422.  
  423.         1/∩' * (α - ß) = 1/∩ * α                @HB* ∩ * ∩'@HL
  424.  
  425. @HL        ∩ (α - ß) = ∩' * α
  426.  
  427.            α - ß
  428.         ∩ ─────── = ∩'
  429.              α
  430.  
  431. @HBÜbergangsrate beim SRR-Verfahren:
  432.  
  433.                     @AO ╔══════════════════╗ @HB
  434.                     @AO ║              ß   ║ @HB
  435.                     @AO ║ ∩' = ∩ (1 - ───) ║ @HB
  436.                     @AO ║              α   ║ @HB
  437.                     @AO ╚══════════════════╝ @HB
  438. Ergebnis:
  439.   Die Übergangsrate ∩' von Prozessen aus dem linken Teil der Queue in den
  440.   rechten Teil der Queue ist abhängig von den Parametern α und ß. Diese
  441.   können vom Operator festgelegt werden. Er hat also einen direkten
  442.   Einfluß auf das Verhalten des Systems.
  443. @HEGrenzfälle bei der Festlegung für α und ß
  444.  
  445. @HB1) @HPα = ß > 0 : Systemverhalten FCFS@HB
  446.    α = ß bedeutet, daß die Prioritäten im linken und rechten Teil der
  447.    Queue um den gleichen Faktor wachsen.
  448.  
  449.    Findet ein Prozeß ein leeres System vor, so rutscht er direkt durch in
  450.    die Bedieneinheit. Nach Ablauf einer Zeitscheibe verläßt er sie und
  451.    seine Priorität wird erhöht, dann belegt er sofort wieder die Bedien-
  452.    einheit. Kommt ein zweiter Prozeß, so erhöht sich dessen Priorität in
  453.    gleichen Abständen und um den gleichen Faktor wie die des ersten
  454.    Prozesses. Er kann die Priorität des ersten Prozesses deshalb nie
  455.    erreichen. Also muß er solange in dem linken Teil der Queue warten,
  456.    bis der erste Prozeß das System verläßt.
  457.  
  458.    Es kann sich immer nur ein Prozeß im inneren System aufhalten. Dieser
  459.    wird komplett bedient und verläßt dann das System. Jetzt kann der
  460.    nächste Prozeß ins innere System gelangen. ==> FCFS-Verfahren.
  461. 2) @HPα = ß = 0 : Systemverhalten RR@HB
  462.    α = ß = 0 bedeutet, daß ohne Prioritäten gearbeitet wird. Neu an-
  463.    kommende Prozesse kommen sofort ins innere System, das heißt es
  464.    besteht kein linker Teil der Queue. Man erhält also das normale
  465.    RR-Verfahren.
  466.  
  467.  @HAW (x)                                @HL─ @HB: FCFS
  468.    @HP/│\       @HO*            @HKo               @HBα = ß > 0
  469.     @HP│       @HO*          @HKo
  470.     @HP│      @HO*        @HKo                 @HO* @HB: RR
  471.     @HP│     @HO*      @HKo                        @HBα = ß = 0
  472.     @HP│    @HO*    @HKo
  473.     @HP│   @HO*  @HKo                          @HKo @HB: SRR
  474.     @HP│@HL──@HO*@HKo@HL─────────────────────            @HBDie Gerade liegt irgendwo
  475.     @HP│@HKo@HO*                                   @HBzwischen den beiden anderen.
  476.     @HP│@HO*
  477.     @HP└──────────────────────────> @HAx
  478.  
  479. @HBBemerkungen:
  480.  
  481.    - Im inneren System kann man jeden beliebigen Scheduling-Algorithmus
  482.      anwenden.
  483.  
  484.    - Durch geschickte Wahl der Variablen α und ß sind die beiden
  485.      Grenzfälle einzustellen:
  486.  
  487.        a) FCFS bei α = ß > 0
  488.  
  489.        b) der Scheduling-Algorithmus des inneren Systems bei α = ß = 0
  490.  
  491.    - Je nach Beobachtung des Systems kann der Operateur α und ß verändern,
  492.      um die Wirkung eines anderen Scheduling-Algorithmusses einzustellen
  493.      (Bevorzugung von kurzen bzw. langen Prozessen, Batch Betrieb (FCFS)
  494.      oder Time-Sharing-Betrieb (RR)).
  495.  
  496.  
  497. @EH6. Verfahren:
  498. @HEFB (foreground background)
  499. @HBVerfahren mit Preemption und dynamischer Vergabe der Prioritäten
  500.  
  501. Bei diesem Verfahren wird jeweils der Prozeß bedient, der bisher am
  502. wenigsten Rechenzeit aufgenommen hat. Man benutzt mehrere Warteschlangen.
  503.  
  504. @HESystem 1 (ursprüngliches Modell)@HB
  505.   Alle neu ankommenden Prozesse werden in die 1. Warteschlange aufgenommen
  506.   und nach dem FCFS-Verfahren bedient.
  507.  
  508.   Nach der Aufnahme des ersten Bedienquantums (BQ) an Rechenzeit wird ein
  509.   noch nicht vollständig abgearbeiteter Prozeß an den Anfang der 2. Warte-
  510.   schlange eingereiht und nach dem RR-Verfahren weiter behandelt.
  511.  
  512.   Die Prozesse in der 2. Warteschlange werden nur dann bedient, wenn die
  513.   1. Warteschlange leer ist.
  514.  
  515. @HB                                                  Trifft ein neuer Prozeß
  516.    @HA┌────────────────────────────────┐             @HBwährend der Bearbeitung
  517.    @HA│ @HBniedrige Priorität             @HA│             @HBeines Prozesses aus der
  518.    @HA│   @HP┌┬┬┬┬┬┬┬┬┬┬┬┬┐          @HE┌────┴────┐        @HB2. Warteschlange ein, so
  519.    @HA└──>@HP││ @HB2. Queue @HP│├@HA─────────>@HE│         │        @HBwird der bearbeitete aus
  520.        @HP└┴┴┴┴┴┴┴┴┴┴┴┴┘          @HE│ @HBBedien- @HE│        @HBder Bedieneinheit ver-
  521.                                @HE│         ├@HA─────>  @HBdrängt, wieder an den 
  522.        @HP┌┬┬┬┬┬┬┬┬┬┬┬┬┐          @HE│ @HBeinheit @HE│        @HBAnfang der 2. Warte-
  523.    @HA───>@HP││ @HB1. Queue @HP│├@HA─────────>@HE│         │        @HBschlange eingereiht und
  524.        @HP└┴┴┴┴┴┴┴┴┴┴┴┴┘          @HE└─────────┘        @HBder neu angekommene
  525.        hohe Priorität                             Prozeß bearbeitet. Man
  526.                                                   bezeichnet die Prozesse
  527. aus der 1. Warteschlange deshalb auch als Foreground Process (in der
  528. Hoffnung, daß sie höchstens 1 BQ benötigen) und die aus der 2. Warte-
  529. schlange als Background Process (weil sie mehr BQ benötigen und als
  530. Hintergrundoperation betrachtet werden).
  531. Ein neu ankommender Prozeß kann gegenüber den Prozessen aus der
  532. 2. Warteschlange maximal 1 BQ an Rechenzeit aufholen.
  533. @HESystem 2@HB
  534.   Erweitert man das System 1 auf den Fall des PS-Verfahrens (BQ -> 0,
  535.   siehe oben "Grenzfälle beim RR-Verfahren") und nimmt man eine größere
  536.   Anzahl von Warteschlangen, so ist der Ablauf folgender:
  537.  
  538.   Trifft zu irgendeinem Zeitpunkt ein neuer Prozeß ein, so wird er so
  539.   lange exklusiv und mit voller Prozessor-Kapazität
  540.  
  541.     1 sec Bedienzeit (BZ)
  542.   (───────────────────────) bedient, bis er genauso viel Rechenzeit
  543.     1 sec Echtzeit (EZ)
  544.  
  545.   aufgenommen hat, wie der mit der bisher geringsten aufgenommenen Rechen-
  546.   zeit. Er wird anschließend in die selbe Warteschlange wie dieser einge-
  547.   reiht. Die Prozesse aus dieser Warteschlange werden abwechselnd weiter
  548.   bearbeitet, bis sie den Rückstand zum nächsten Prozeß aufgeholt haben
  549.   und anschließend in diese Warteschlange eingereiht. Von dort rücken sie
  550.   dann in die nächste Warteschlange auf, usw.
  551.    @HA┌──────────────────────────────────────┐
  552.    │   @HP┌┬┬┬┬┬┬┬┬┬┬┬┬┐                     @HA│
  553.    ├──>@HP││ @HBN. Queue @HP│├@HA──┐ @HBniedrigste       @HA│
  554.    │   @HP└┴┴┴┴┴┴┴┴┴┴┴┴┘  @HA│ @HBPriorität        @HA│
  555.    │                   │                  │
  556.    │   @HP┌┬┬┬┬┬┬┬┬┬┬┬┬┐  @HA│                  │
  557.    ├──>@HP│ @HBN-1. Queue @HP├@HA──┤                  │
  558.    │   @HP└┴┴┴┴┴┴┴┴┴┴┴┴┘  @HA│             @HE┌────┴────┐
  559.    @HA│          :        ├────────────>@HE│ @HBBedien- @HE│
  560.    @HA│          :        │             @HE│         ├@HA───>
  561.    │          :        │      ┌─────>@HE│ @HBeinheit @HE│
  562.    @HA│   @HP┌┬┬┬┬┬┬┬┬┬┬┬┬┐  @HA│      │      @HE└─────────┘
  563.    @HA└──>@HP││ @HB2. Queue @HP│├@HA──┘      │
  564.        @HP└┴┴┴┴┴┴┴┴┴┴┴┴┘         @HA│
  565.                               │
  566.        @HP┌┬┬┬┬┬┬┬┬┬┬┬┬┐         @HA│ @HBhöchste
  567.    @HA───>@HP││ @HB1. Queue @HP│├@HA─────────┘ @HBPriorität
  568.        @HP└┴┴┴┴┴┴┴┴┴┴┴┴┘
  569. @HBBeispiel:
  570.  
  571.  @HACPU Kapazität
  572.    @HP/│\
  573.   @HA1 @HP┼──────────────────┬─────────┬─────────┬───────┬──────────
  574.     @HP│                  │         │         │  @HBP2   @HP│  @HBP1
  575.     @HP│                  │         │         │       ├──────────
  576.   @HA½ @HP┤        @HBP1        @HP│   @HBP2    @HP│   @HBP3    @HP├───────┤  @HBP2
  577.     @HP│                  │         │         │       ├──────────
  578.     @HP│                  │         │         │  @HBP3   @HP│  @HBP3
  579.     @HP├──────────────────┼─────────┼─────────┼───────┼──────────> @HAt
  580.     @HAto                 ta        tb        tc      td
  581. @HB
  582.   Prozeß P1 betritt leeres System und wird mit 1 sec BZ / sec EZ
  583.     8 BQ lang bedient, bis zum Zeitpunkt ta.
  584.   Zum Zeitpunkt ta trifft Prozeß P2 ein, der P1 in die Queue mit
  585.     Priorität 8 verdrängt (1 = höchste, N = niedrigste Priorität).
  586.     P2 wird mit 1 sec BZ / sec EZ bis zum Zeitpunkt tb bedient.
  587. @HB  Zum Zeitpunkt tb trifft Prozeß P3 ein, der P2 in die Queue mit der
  588.     Priorität 5 verdrängt. Wenn bis zum Zeitpunkt ta + 2 (tb - ta) = tc
  589.     kein neuer Prozeß ins System kommt, wird P3 für (tb - ta) Zeitein-
  590.     heiten (= 5 BQ) nach seiner Ankunft exklusiv und mit voller Prozessor-
  591.     Kapazität bedient.
  592.   Zum Zeitpunkt tc = 2tb - ta haben P2 und P3 die gleiche Anzahl BQ's auf-
  593.     genommen und werden jetzt abwechselnd bzw. gleichzeitig mit halber
  594.     Prozessor-Kapazität 1 sec BZ / 2 sec EZ weiterbearbeitet.
  595.   Trifft zu irgendeinem späteren Zeitpunkt als tc ein weiterer Prozeß ein,
  596.     so wird dieser wieder solange exklusiv und mit voller Prozessor-
  597.     Kapazität bedient, bis er den Rückstand zu P2 und P3 aufgeholt hat.
  598.     Sie werden dann gemeinsam mit 1/3 Prozessorkapazität solange weiter-
  599.     bearbeitet, bis sie den Rückstand zu P1 aufgeholt haben. Dann werden
  600.     alle vier gleichzeitig weiterbearbeitet.
  601.  
  602.        siehe auch ⌐SET-Modell@BS1¬
  603.  
  604.  
  605. @HEBerechnung der mittleren Antwortzeit bei FB
  606. @HB
  607. Bei der Berechnung der mittleren Antwortzeit geht man von folgenden Über-
  608. legungen aus:
  609.  
  610. Wenn ein markierter "Job" (= Prozeß, dient der Identifizierung), der x sec
  611. Bedienzeit (BZ) benötigt, das System betritt, findet er andere Jobs im
  612. System vor. Von den anderen Jobs haben einige weniger und einige mehr als
  613. x sec BZ bereits aufgenommen.
  614.  
  615. Es ist offensichtlich, daß alle Jobs, mit einer bereits aufgenommenen BZ
  616. größer oder gleich x sec, den markierten Job nicht stören. Vom Standpunkt
  617. des markierten Jobs aus könnte jeder Job, der mehr als x sec BZ benötigt,
  618. das System bereits verlassen, wenn er x sec oder mehr BZ aufgenommen hat.
  619.  
  620. Jedem Job mit einer bisher aufgenommenen BZ kleiner als x sec wird er-
  621. laubt, bis zu x sec aufzunehmen, aber nicht zu überschreiten, bevor der
  622. markierte Job seine x sec BZ aufgenommen hat.
  623. @HBSo kommt man zu der Verteilungsfunktion Bx (t):
  624. @HL
  625.                   ┌
  626.                   │ B (t),   für t < x
  627.          Bx (t) = ┤
  628.                   │ 1,       für t ≥ x
  629.                   └
  630. @HB
  631. Die Wahrscheinlichkeit, daß die mittlere BZ eines Jobs kleiner oder gleich
  632. einer festgelegten Zeit t ist, ist B (t), wenn t kleiner als die benötigte
  633. BZ x des "markierten" Jobs ist.
  634.  
  635. Die Wahrscheinlichkeit für das Ereignis ist sicher, das heißt gleich 1,
  636. wenn t größer oder gleich der benötigten BZ x des markierten Jobs ist.
  637.  
  638. (???)
  639.  
  640.  
  641. @HEVerteilungsfunktion Bx (t)
  642.  
  643.   @HAB (t)
  644.        @HP/│\
  645.         @HP│
  646.         @HP┤@HA·······························@HO* * * * * * * * * * * @HBBx (t)
  647.         @HP│                               @HO*
  648.         @HP│                               @HO*
  649.         @HP│                      @HO*        @HA:
  650.         @HP│               @HO*               @HA:
  651.         @HP│          @HO*                    @HA:
  652.         @HP│      @HO*                        @HA:
  653.         @HP│   @HO*                           @HA:
  654.         @HP│ @HO*                             @HA:
  655.         @HP│@HO*                              @HA:
  656.         @HP└───────────────────────────────┬────────────────────> @HAt
  657.                                         @HAx
  658.  
  659. @HBDer @HPMittelwert für die Bedienzeit@HB in Abhängigkeit von x beträgt:
  660. @HL
  661.           x
  662.      __   ⌠
  663.      Xx = │ t dB (t) + x * (1 - B (x))
  664.           ⌡
  665.           0
  666. @HB
  667. Die @HPAuslastung@HB in Abhängigkeit von x des markierten Jobs beträgt:
  668. @HL              __
  669.      δx = ∩ * Xx
  670. @HB
  671. Die @HPPK-Gleichung@HB lautet dann:           (siehe ⌐M/G/1-System@BS___2¬)
  672. @HL                        _____
  673.                    ∩² * (Xx)²
  674.      E [N] = δx + ──────────── = E [N (BE)] + E [N (Q)]
  675.                     2 (1-δx)
  676.  
  677. @HBMit dem Satz von ⌐Little@BS___2¬ (E [N] = ∩ * E [T]) erhält man
  678. für die @HPWartezeit@HB:@HL
  679.  
  680.                 Ex [Na]
  681.      Ex [Ta] = ─────────   @HBund@HL   Ex [T] = Wx
  682.                    ∩
  683.  
  684.                       _____           @HBInterpretation von Wx:@HL
  685.                  ∩² * (Xx)²
  686.      Wx      = (────────────) / ∩     @HBWx ist, vom markierten Job aus@HL
  687.                   2 (1-δx)            @HBbetrachtet, die Zeit, während der@HL
  688.                                       @HBdas System noch Arbeit verrichten@HL
  689.                      _____            @HBmuß, ehe er selbst dran kommt.@HL
  690.                  ∩ * (Xx)²
  691.              = (───────────) 
  692.                   2 (1-δx)
  693.  
  694.  
  695. @HBFür die @HPVerweilzeit Tx (x)@HB ergibt sich:
  696.  
  697.                              Neue Jobs, die ankommen, während der
  698.                          └───────┬─────────┘ markierte Job im System ist.@HL
  699.                                        __    @HBDer markierte Job kommt erst@HL
  700.         Tx (x) = Wx + x + ∩ * Tx (x) * Xx    @HBwieder dran, wenn alle neuen@HL
  701.                                        __    @HBsoviel Zeit aufgenommen@HL
  702.  <==>   Wx + x = Tx (x) - ∩ * Tx (x) * Xx    @HBnommen haben, wie er selbst.@HL
  703.                                     __
  704.  <==>          = Tx (x) * (1 - ∩ * Xx)
  705.  
  706.  <==>          = Tx (x) * (1 - δx)
  707.  
  708.                   Wx + x
  709.  <==>   Tx (x) = ────────
  710.                   1 - δx
  711.  
  712.  
  713. @HB
  714. Bemerkungen:
  715.  
  716.    - Ein Job mit verschwindend geringer benötigter Bedienzeit hat eine
  717.      Antwortzeit nahe 1.
  718.  
  719.    - Ein langer Job muß mit seiner Fertigstellung so lange warten, bis
  720.      alle während seiner Bedienung eingetroffenen Jobs die gleiche BZ
  721.      aufgenommen haben, wie er selbst. Das heißt die Antwortzeitrate
  722.      entspricht dem LCFS-Verfahren (aber ohne die unerwünschte große
  723.      Varianz).
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731. @EH6. Weitere probabilistische Algorithmen
  732. @HB
  733.    - @HPHRN@HB (highest response ratio next)
  734.      Verfahren ohne Preemption und dynamischer Vergabe der Prioritäten
  735.      Idee:
  736.        Es wird versucht, das Reaktionsverhältnis
  737. @HL
  738.                W (x) + x     W (x)
  739.           C = ─────────── = ─────── + 1
  740.                    x           x
  741. @HB
  742.        dadurch konstant zu halten, daß jedem Prozeß als Priorität dieses
  743.        Verhältnis (mit W (x) = aktuelle Wartezeit) zugeordnet wird.
  744.  
  745.        Dadurch haben kurze Prozesse eine hohe Priorität, aber lange
  746.        Prozesse werden nicht so sehr verzögert wie beim SJF-Verfahren.
  747.  
  748.  
  749.    - @HPSET@HB (shortest elapsed time)
  750.      kürzeste aufgenommene Bedienzeit
  751.  
  752.    - @HPSRT@HB (shortest remaning time)
  753.      kürzeste noch benötigte Rechenzeit
  754.  
  755.    - @HPSHST@HB (shortest attained service first)
  756.      kürzeste erreichte Bedienzeit zuerst    (???)
  757.  
  758.  
  759.  
  760.           weiter mit ⌐determin. Scheduling@BS___5¬
  761. AHBAA #!!# determin. Scheduling
  762. Beim deterministischen Scheduling sind, im Gegensatz zum probabilistischen
  763. Scheduling, die Ausführungszeiten der einzelnen Prozesse schon im voraus
  764. bekannt (deterministisch).
  765.  
  766. @HEDefinitionen
  767.  
  768. @HPSchedule@HB
  769. Ein Schedule S für
  770.  
  771.    - m Prozessoren und
  772.    - eine vorgegebene Menge an Tasks (Prozessen)
  773.      mit gegebenen Abhängigkeiten
  774.  
  775. ist eine Beschreibung der Arbeit, die jeder Prozessor zu jedem Zeitpunkt
  776. zu verrichten hat.
  777.  
  778.  
  779.  
  780. @HPPräzedenz-Graph@HB
  781. Der Präzedenz-Graph beschreibt die Abhängigkeiten der Prozesse unter-
  782. einander.
  783.  
  784. Ein Pfeil vom Prozeß Ti zum Prozeß Tj bedeutet, daß Ti beendet sein muß,
  785. bevor Tj beginnen darf.
  786.  
  787. @HPGantt-Diagramm@HB
  788. Ein Gantt-Diagramm ist eine Zeitachse mit der Angabe der Prozessor/Prozeß-
  789. Zuordnungen, die Schedules darstellen.
  790.  
  791. Ein @HPSchedule@HB muß die folgenden Bedingungen erfüllen:
  792.    - Berücksichtigung der Abhängigkeiten der Prozesse voneinander
  793.      (Präzedenz-Relationen).
  794.    - Zu jeder Zeit steht einem Prozeß höchstens ein Prozessor zur
  795.      Verfügung.
  796.    - Einem fordernden Prozeß wird immer die gesamte geforderte Rechenzeit
  797.      auf einmal zugewiesen.   
  798. @HBGesucht wird immer die Länge des Scheduls, sei es die optimale oder die
  799. schlechteste.
  800.  
  801. @HPLänge eines Scheduls@HB
  802. Die Länge t (S) eines Scheduls S ist die Zeit, zu der der letzte Prozeß
  803. von S fertig wird.
  804.  
  805.  
  806. @HPFreiheit von Prozessoren@HB
  807. Ein Prozessor wird als frei (idle) bezeichnet, wenn ihm in irgendeinem
  808. Teilintervall von [0, t (S)] kein Prozeß zugewiesen ist.
  809.  
  810. Bemerkung:
  811.   Ein Schedule kann eventuell kürzer werden, wenn ein Prozessor zeitweise
  812.   frei ist.
  813.  
  814.  
  815.  
  816. @HEAllgemeines Beispiel zur Einführung:
  817.               
  818. @HBPräzedenz-Graph:    @HO█ @HLT1,1    @HO█ @HLT2,2
  819.                     @HP│         │  @HB│ └──geforderte Rechenzeiteinheiten
  820.                     @HP└────┬────┘  @HB└────Prozeß-Nummer
  821.                         @HP\│/
  822.                          @HO█ @HLT3,2    @HO█ @HLT4,1
  823.                          @HP│        ┌┴┐
  824.                          @HP└────┬───┘ └───┐
  825.                              \│/       \│/
  826.                               @HO█ @HLT5,2    @HO█ @HLT6,3
  827. @HBGrantt-Diagramm:
  828.                    @HAt:  0    1    2    3    4    5    6    7    8
  829.                        @HP┌────┬────┬─────────┬─────────┬────┬────┬────
  830.          @HAProzessor 1   @HP│ @HLT1@HP │    │   @HLT3@HP    │   @HLT5@HP    │    │    │
  831.       @HAS:               @HP├────┴────┼────┬────┴─────────┼────┼────┼────
  832.          @HAProzessor 2   @HP│   @HLT2@HP    │ @HLT4@HP │      @HLT6@HP      │    │    │ @HBt (S) = 6
  833.                        @HP└─────────┴────┴──────────────┴────┴────┴────
  834. @HB
  835.  
  836.  
  837.     weiter mit ⌐optimales Scheduling@BS___5¬
  838.  
  839.     siehe auch ⌐Scheduling@BS1¬
  840.                ⌐Scheduler@BS1¬
  841.                ⌐Scheduling II@BS___5¬
  842.                ⌐probabil. Scheduling@BS___5¬
  843. AHBAA #!!# optimales Scheduling
  844. @HPOptimales Scheduling@HB liegt vor, wenn die Länge des Scheduls minimal ist.
  845.  
  846.     siehe auch ⌐determin. Scheduling@BS___5¬
  847.  
  848. Minimale Schedules kann man im Prinzip durch Vergleichen aller möglichen
  849. Schedules finden. Dieses Verfahren ist jedoch viel zu aufwendig, da die
  850. Anzahl der möglichen Schedules exponentiell mit der Anzahl der Prozesse
  851. wächst.
  852.  
  853. Man kann im Augenblick nur für einige spezielle Fälle einen optimalen
  854. Scheduling-Algorithmus angeben.
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862. @EH             Optimales Scheduling von Doppelprozessoren (m=2)
  863. @HB
  864. Für diesen Spezialfall sind die Voraussetzungen, daß
  865.  
  866.    - die Anzahl der Proessoren m = 2 ist und
  867.  
  868.    - die Ausführungszeiten (Rechenzeiten) für alle Prozesse gleich sind.
  869.  
  870.  
  871. Idee:
  872.   Durch eine geeignete Durchnumerierung der Prozesse erhält man eine
  873.   lineare Anordnung gemäß ihrer Abhängigkeiten.
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880. @HBDefinition:
  881.   Für zwei streng monoton fallende Folgen natürlicher Zahlen
  882. @HP
  883.   N = (n1, ..., nt) @HBund@HP N' = (n'1, ..., n't')@HB, das heißt@HP
  884.  
  885.   für alle i mit ni ε N  @HBund@HP
  886.   für alle j mit nj ε N' @HBund@HP
  887.   für alle j < t' mit n'j > n'j+1
  888.  
  889.   @HBgilt:@HP  N < N', @HBwenn entweder a) @HPfür alle i : ni < n'i  AND  ???
  890.  
  891.                           @HBoder b) @HPt < t'  AND  für alle j ≤ t : nj = n'j
  892.  
  893.   @HBBeispiele:
  894.     @HAN = (7, 5, 3, 2)  N' = (7, 5, 4, 1)  ==>  N < N'  @HBBedingung a) erfüllt
  895.     @HAN = (4, 3, 1)     N' = (5, 1)        ==>  N < N'  @HBBedingung a) erfüllt
  896.     @HAN = (7, 2)        N' = (7, 2, 1)     ==>  N < N'  @HBBedingung b) erfüllt
  897.  
  898. @HBHilfe: Die Zahlen als Kommazahlen lesen:
  899.  
  900. @HA  0,7532 < 0,7541
  901.   0,431  < 0,51
  902.   0,72   < 0,721
  903.  
  904. @HENumerierungsalgorithmus
  905. @HB
  906.   @HPgegeben:@HB
  907.   Präzedenz-Graph G,
  908.   Menge aller unmittelbaren Nachfolger von Prozeß T, S (T)
  909.  
  910.   @HPZiel@HB
  911.   Jedem der n Prozesse soll eine natürliche Zahl a (T) ε {1, ..., n}
  912.   zugeordnet werden.
  913.  
  914.  
  915.  
  916. @HPDie einzelnen Schritte:
  917. @HB
  918.   1) Wähle einen beliebigen Prozeß To, der keinen Nachfolger hat,
  919.      das heißt für To gilt:  S (To) = {}, und setze a (To) = 1.
  920.   2) Numeriere alle anderen Prozesse ohne Nachfolger fortlaufend,
  921.      beginnend mit der Zahl 2.
  922.   3) Seien alle Zahlen j < k für k ≤ n vergeben.
  923.      Für jeden Prozeß T, @XE@HPdessen unmittelbare Nachfolger alle schon eine
  924.      Zahl zugeordnet bekommen haben, bezeichnet N (T) eine monoton
  925.      fallende Folge von ganzen Zahlen,@XA@HB die aus der Menge
  926.      {a (T') | T' ε S (T)} gebildet wird.
  927.      (Monotonie erhält man durch Umordnen der Menge).
  928.      Für wenigstens einen Prozeß T", für den das hervorgehobene zutrifft,
  929.      muß gelten N (T") ≤ N (T) für alle Prozesse T, für die das hervorge-
  930.      hobene gilt. Wähle einen dieser Prozesse T" und setze a (T") = k.
  931.   4) Wiederhole Schritt 3 so lange, bis allen Prozessen eine Nummer
  932.      zugeordnet ist.
  933.  
  934. @HEAlgorithmus A (Scheduling Algorithmus)
  935. @HB
  936. Wenn ein Prozessor frei wird, weise ihm den Prozeß zu, dessen sämliche
  937. Vorgänger ausgeführt sind und der unter allen noch nicht ausgeführten
  938. Prozessen die höchste Nummer a hat.
  939.  
  940. @HEBeispiel
  941. @HB
  942. In dem folgenden Beispiel ist die Anzahl der Prozessoren m = 2 und alle
  943. Prozesse haben die gleiche Rechenzeit.
  944.  
  945. Die Pfeile der Kanten in dem Präzedenzgraph wurden "aus drucktechnischen
  946. Gründen" weggelassen. Die gerichteten Kanten verlaufen aber in jedem Fall
  947. von oben nach unten.
  948.  
  949.  
  950.  
  951.  
  952. @HEPräzedenzgraph
  953.                  @HL20 @HO█      @HL21 @HO█      @HL22 @HO█      @HBNumerierung:
  954.                     @HP└─────────┼─────────┘        @HB1. Schritt: 1
  955.                            @HL19 @HO█                  @HB2. Schritt: 2, 3, ...,  6
  956.                               @HP│                  @HB3. Schritt: 7, 8, ..., 22
  957.                            @HL18 @HO█
  958.                     @HP┌─────────┴─────────┐
  959.                     @HO█ @HL17                @HO█ @HL16
  960.                     @HP├─────────┐         │
  961.           @HO█ @HL14      @HO█ @HL13      @HP└─────────@HO█ @HL15
  962.      @HP┌────┴───┐┌────┘ ┌───────┬─────────┴─────────┐
  963.    @HL1 @HO█      @HL10@HP└@HO█@HP──────┘    @HL11 @HO█@HP                @HL12 @HO█
  964.                @HP└──────┬───────┴─────────┬─────────┘
  965.                     @HL7 @HO█               @HL9 @HO█
  966.                       @HP│       ┌─────────┼──────────────┐
  967.                     @HL2 @HO█@HP───────┘       @HL8 @HO█            @HL3 @HO█
  968.                               @HP┌─────────┴─────────┐
  969.                             @HL4 @HO█                 @HL5 @HO█       @HL6 @HO█
  970. @HESchedule S
  971.  
  972.    @HAt:  0    1    2    3    4    5    6    7    8    9   10   11   12
  973.        @HP┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬───@HA
  974.    P1  @HP│ @HL22 @HP│ @HL20 @HP│ @HL19 @HP│ @HL18 @HP│ @HL17 @HP│ @HL15 @HP│ @HL12 @HP│ @HL10 @HP│  @HL9 @HP│  @HL8 @HP│  @HL5 @HP│  @HL2 @HP│ frei      .
  975. @HAS:     @HP├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┴───@HA
  976.    P2  @HP│ @HL21 @HP│ @HL14 @HP│  @HL6 @HP│  @HL1 @HP│ @HL16 @HP│ @HL13 @HP│ @HL11 @HP│frei│  @HL7 @HP│  @HL3 @HP│  @HL4 @HP│   frei
  977.        @HP└────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────────
  978.  
  979.                                                             @HBt (S) = 12
  980.  
  981. Eigenschaften der Numerierung:
  982.  
  983.    - Falls im Präzedenz-Graph T auf einer höheren Ebene liegt als T',
  984.      dann ist a (T) > a (T').
  985.      (tiefste Ebene = Knoten ohne Nachfolger,
  986.       höhere  Ebene = Knoten mit  Nachfolger)
  987.  
  988. @HB   - Falls S (T') eine echte Teilmenge von S (T) ist,
  989.      dann ist a (T) > a (T'). 
  990.  
  991.    - Falls t (T) und t (T') die Anfangszeiten von T und T' sind, und
  992.      falls T auf dem Prozessor P1 ausgeführt wird, gilt:
  993.      t (T) < t (T')  ==>  a (T) > a (T').
  994.  
  995.    - P1 ist während des gesamten Schedules nie frei.
  996.  
  997. Bemerkung:
  998.   Bei Abweichungen von den genannten Voraussetzungen braucht der Schedule
  999.   nicht mehr optimal zu sein, wie die Beispiele a) und b) zeigen.
  1000.  
  1001. Hinweis:
  1002.   Die Numerierung der Prozesse erfolgt von jetzt ab immer in genau der
  1003.   umgekehrten Reihenfolge, wie im Numerierungsalgorithmus von oben.
  1004.   Dadurch ändert sich aber am Prinzip gar nichts.
  1005.  
  1006. @HBBeispiel a) verschiedene Ausführungszeiten anstelle gleicher
  1007.  
  1008.      @HO█ @HLT1,1    @HO█ @HLT2,1    @HO█ @HLT 3,2
  1009.      @HP└────┬────┴────┬────┘
  1010.           @HO█ @HLT4,1    @HO█ @HLT5,1
  1011.                                  @HAt:  0    1    2    3    4
  1012.                                      @HP┌────┬─────────┬────┬────
  1013.                                 @HAP1   @HP│ @HLT1 @HP│   @HLT3    @HP│ @HLT5 @HP│ frei
  1014. @HBA-Schedule                   @HAS:      @HP├────┼────┬────┴────┴────
  1015.                                 @HAP2   @HP│ @HLT2 @HP│ @HLT4 @HP│    frei         @HBt (S) = 4
  1016.                                      @HP└────┴────┴──────────────
  1017.  
  1018.                                  @HAt:  0    1    2    3
  1019.                                      @HP┌─────────┬────┬─────────
  1020.                                 @HAP1   @HP│   @HLT3    @HP│ @HLT4 @HP│ frei
  1021. @HBOptimales-Schedule           @HAS:      @HP├────┬────┼────┼─────────
  1022.                                 @HAP2   @HP│ @HLT1 @HP│ @HLT2 @HP│ @HLT5 @HP│ frei       @HBt (S) = 3
  1023.                                      @HP└────┴────┴────┴─────────
  1024. @HBBeispiel b) 3 Prozessoren anstatt 2
  1025.  
  1026.             @HO█ @HLT1      @HO█ @HLT2      @HO█ @HLT3               @HO█ @HLT5
  1027.             @HP└─────────┼─────────┘   ┌─────┬─────┬──┴──┬─────┬─────┐
  1028.                       @HO█ @HLT4          @HO█ @HLT7  @HO█ @HLT8  @HO█ @HLT9  @HO█ @HLT10 @HO█ @HLT11 @HO█ @HLT12
  1029.                       @HP│
  1030.                       @HO█ @HLT6
  1031. @HBA-Schedule:
  1032.  
  1033.          @HAt:  0    1    2    3    4    5
  1034.              @HP┌────┬────┬────┬────┬────┬────
  1035.         @HAP1   @HP│ @HLT1 @HP│ @HLT4 @HP│ @HLT6 @HP│ @HLT9 @HP│ @HLT12@HP│ frei
  1036.              @HP├────┼────┼────┼────┼────┴────
  1037. @HAS:      P2   @HP│ @HLT2 @HP│ @HLT5 @HP│ @HLT7 @HP│ @HLT10@HP│  frei
  1038.              @HP├────┼────┼────┼────┼─────────
  1039.         @HAP3   @HP│ @HLT3 @HP│frei│ @HLT8 @HP│ @HLT11@HP│  frei
  1040.              @HP└────┴────┴────┴────┴─────────
  1041.                                                    @HBt (S) = 5
  1042. @HB
  1043. Optimales-Schedule:
  1044.  
  1045.          @HAt:  0    1    2    3    4
  1046.              @HP┌────┬────┬────┬────┬─────────
  1047.         @HAP1   @HP│ @HLT1 @HP│ @HLT3 @HP│ @HLT4 @HP│ @HLT6 @HP│  frei
  1048.              @HP├────┼────┼────┼────┼─────────
  1049. @HAS:      P2   @HP│ @HLT2 @HP│ @HLT7 @HP│ @HLT9 @HP│ @HLT11@HP│  frei
  1050.              @HP├────┼────┼────┼────┼─────────
  1051.         @HAP3   @HP│ @HLT3 @HP│ @HLT8 @HP│ @HLT10@HP│ @HLT12@HP│  frei
  1052.              @HP└────┴────┴────┴────┴─────────
  1053.                                                    @HBt (S) = 4
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060. @EH               Optimales Scheduling von Präzedenz-Bäumen
  1061. @HB
  1062. Man kann eine Menge von Prozessen mit gleichen Ausführungszeiten auf
  1063. m ≥ 2 Prozessoren optimal schedulen, wenn ihr Präzedenz-Graph eine
  1064. Baumstruktur hat (@HPPräzedenz-Baum@HB).
  1065.  
  1066. @HENumerierungsalgorithmus
  1067. @HB
  1068. Ordne jedem Prozeß T eine Nummer L (T), zu. L (T) entspricht der Ebene,
  1069. auf der sich T befindet.
  1070.  
  1071. L (T) ist die Länge, das heißt die Anzahl der Teilstrecken - 1, des
  1072. längsten Weges im Präzedenz-Baum von dem Prozeß T zum Terminalprozeß T~.
  1073.  
  1074. Ein Prozeß T~ ohne Nachfolger heißt @HPTerminalprozeß@HB.
  1075. Für ihn gilt: L(T~) = 1.
  1076.  
  1077. Ein Prozeß ohne Vorgänger heißt @HPInitialprozeß@HB.
  1078.  
  1079. @HEAlgorithmus B (Scheduling Algorithmus)
  1080. @HB
  1081. Wenn ein Prozessor frei wird, weise ihm den Prozeß zu, dessen sämliche
  1082. Vorgänger ausgeführt sind und der unter allen noch nicht ausgeführten
  1083. Prozessen die höchste Ebene hat. (größte L (T)-Nummer)
  1084.  
  1085. @HEBeispiel
  1086. @HB
  1087. In dem folgenden Beispiel ist die Anzahl der Prozessoren m = 3 und alle
  1088. Prozesse haben die gleiche Rechenzeit.
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096. @HEPräzedenzgraph
  1097.  
  1098.   @HC╔══╗ @HBkönnen gleichzeitig          @HC╔═══════════════════════╗
  1099.   @HC╚══╝ @HBausgeführt werden            @HC║ @HO█ @HLT1 @HK5    @HO█ @HLT2 @HK5      @HC║     @HAEbene 5
  1100.                                     @HC║ @HP└────┬────┘           @HC║
  1101.       @HC╔═════════════════════════════╩══════@HP│@HC═══════╗        ║
  1102.       @HC║                                    @HO█ @HLT3 @HK4  @HC║ @HO█ @HLT4 @HK4 @HC║     @HAEbene 4
  1103.       @HC║                                    @HP└────┬────┘      @HC║
  1104.       @HC║                  ╔══════════════════════@HP│@HC══╩═══╦════╝
  1105.       @HC║ @HO█ @HLT5 @HK3    @HO█ @HLT6 @HK3 @HC║  @HO█ @HLT7 @HK3    @HO█ @HLT8 @HK3    @HO█ @HLT9 @HK3 @HC║          @HAEbene 3
  1106.       @HC║ @HP└─────────┼─────────┘         @HP└────┬────┘      @HC║
  1107.       @HC╚═════════╦═@HP│@HC══════╩═════════════════@HP│@HC@HC═══════╦═══╝
  1108.                 @HC║ @HO█ @HLT10 @HK2                  @HO█ @HLT11 @HK2 @HC║              @HAEbene 2
  1109.                 @HC║ @HP└────────────┬───────────┘       @HC║
  1110.                 @HC╚════════════╦═@HP│@HC══════╦════════════╝
  1111.                              @HC║ @HO█ @HLT12 @HK1@HC║                           @HAEbene 1
  1112.   @HKx @HB: L (T)                  @HC╚════════╝
  1113.  
  1114. @HB B-Schedule
  1115.  
  1116.          @HAt:  0    1    2    3    4    5
  1117.              @HP┌────┬────┬────┬────┬────┬────
  1118.         @HAP1   @HP│ @HLT1 @HP│ @HLT3 @HP│ @HLT7 @HP│ @HLT10@HP│ @HLT12@HP│  frei
  1119.              @HP├────┼────┼────┼────┼────┴────
  1120. @HAS:      P2   @HP│ @HLT2 @HP│ @HLT5 @HP│ @HLT8 @HP│ @HLT11@HP│  frei
  1121.              @HP├────┼────┼────┼────┴─────────
  1122.         @HAP3   @HP│ @HLT4 @HP│ @HLT6 @HP│ @HLT9 @HP│  frei
  1123.              @HP└────┴────┴────┴──────────────
  1124.                                                    @HBt (S) = 5
  1125.  
  1126.  
  1127.                   weiter mit ⌐LPT Scheduling@BS___5¬
  1128. AHBAA #!!# LPT Scheduling
  1129. @HEScheduling unabhängiger Tasks
  1130. @HB
  1131. Für den Fall, daß die Anzahl der verfügbaren Prozessoren beliebig und die
  1132. Ausführungszeiten der Prozesse verschieden und sie völlig unabhängig von-
  1133. einander sind, läßt sich (nach heutigem Wissensstand) kein optimaler
  1134. Scheduling-Algorithmus mit akzeptablem Zeitverhalten angeben.
  1135.  
  1136. Wegen der Bedeutung des Problems "Scheduling unabhängiger Tasks" sei ein
  1137. Algorithmus angegeben, der vielleicht die einfachste und eindeutigste
  1138. Heuristik für Scheduling unabhängiger Prozesse ist, der @HPLPT Algorithmus@HB
  1139. (largest processing time).
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147. @HELPT Scheduling Algorithmus
  1148. @HB
  1149.   Wenn ein Prozessor frei ist, ordne ihm den Prozeß zu, der von allen noch
  1150.   nicht ausgeführten Prozessen die längste Ausführungszeit hat.
  1151.  
  1152. Da der LPT Algorithmus im allgemeinen nicht optimal ist, versucht man die
  1153. Frage zu beantworten, wie gut der LPT Schedule im Vergleich zum
  1154. optimalen Schedule ist. Als obere Schranke hat man herausgefunden:
  1155. @HP
  1156.        t (S_LPT)      4       1
  1157.       ──────────── ≤ ─── - ───────           @HBm = Anzahl der Prozessoren@HP
  1158.        t (S_Opti)     3     3 * m
  1159.  
  1160.                    ≤ 1       für m = 1
  1161.                    ≤ 1,17    für m = 2
  1162.                    ≤ 1,22    für m = 3 
  1163.                     :
  1164.                     :
  1165. @HBBeispiel: @HLT1=16  T2=13  T3=12  T4=8  T5=6  T6=5  T7=5  T8=2
  1166.  
  1167.              @HAt:  0    4    8   12   16   20   24
  1168.                  @HP┌───────────────────┬────┬─────────
  1169.             @HAP1   @HP│        @HLT1         @HP│ @HLT6 @HP│  frei
  1170.                  @HP├───────────────┬───┴───┬┴────┬────
  1171. @HBS_LPT       @HAP2   @HP│       @HLT2      @HP│  @HLT5   @HP│ @HLT7  @HP│  frei
  1172.                  @HP├──────────────┬┴───────┴┬──┬─┴────
  1173.             @HAP3   @HP│      @HLT3      @HP│   @HLT4    @HP│@HLT8@HP│  frei     @HBt (S_LPT)  = 24
  1174.                  @HP└──────────────┴─────────┴──┴──────
  1175.              @HAt:  0    4    8   12   16   20  23
  1176.                  @HP┌───────────────────┬────┬─────────
  1177.             @HAP1   @HP│        @HLT1         @HP│ @HLT6 @HP│  frei
  1178.                  @HP├───────────────┬───┴────┴┬──┬─────
  1179. @HBS_Opti      @HAP2   @HP│       @HLT2      @HP│    @HLT4   @HP│@HLT8@HP│  frei
  1180.                  @HP├──────────────┬┴──────┬──┴──┼─────
  1181.             @HAP3   @HP│      @HLT3      @HP│   @HLT5  @HP│ @HLT7  @HP│  frei    @HBt (S_Opti) = 23
  1182.                  @HP└──────────────┴───────┴─────┴─────
  1183. @HBAbweichung vom optimalen Schedule
  1184. @HA
  1185.           t (S_LPT)      24
  1186.          ──────────── = ──── = 1,04  @HBalso: 4 % Abweichung vom@HA
  1187.           t (S_Opti)     23                @HBoptimalen Scheduling
  1188.  
  1189.                      _
  1190. Mittlere Verweilzeit T aus der Benutzersicht:@HA
  1191.  
  1192.      _         1
  1193.      T_LPT  = ─── (16 + (16 + 5) + 13 + (13 + 6) + (13 + 6 + 5)
  1194.                8      + 12 + (12 + 8) + (12 + 8 + 2))
  1195.  
  1196.             = 18,375
  1197.      _                 _
  1198.      T_Opti = 18,375 = T_LPT
  1199.  
  1200.  
  1201. @HBWürde man an Stelle von LPT den @HPSPT Algorithmus@HB (shortest processing time)
  1202. nehmen, so käme man zu folgenden Ergebnissen:
  1203. @HA
  1204.      t (S_SPT) = 29
  1205.      _
  1206.      T_SPT     = 12,5
  1207.  
  1208. @HB
  1209.               weiter mit ⌐Prioritätslisten@BS___5¬
  1210. AHBAA #!!# Prioritätslisten
  1211. @HEScheduling nach Prioritätslisten
  1212. @HB
  1213. In dem Fall, daß die Ausführungszeiten der einzelnen Prozesse im voraus
  1214. bekannt sind, muß der Scheduler Prozesse allein nach den Informationen
  1215. des Präzedenz-Graphen auswählen. Da diese Informationen nur eine teilweise
  1216. Ordnung in der Liste der Prozesse festlegen, müssen sie noch nach einem
  1217. externen Prioritätskriterium geordnet werden.
  1218.  
  1219. Wenn ein Prozessor frei wird, so wird ihm der Prozeß aus der Liste zuge-
  1220. ordnet, dessen sämliche Vorgänger ausgeführt sind und der von allen noch
  1221. nicht ausgeführten Prozessen der nächste in der Liste ist.
  1222.  
  1223. Auch die Scheduling-Algorithmen, die bis jetzt behandelt wurden
  1224. (siehe ⌐optimales Scheduling@BS___5¬), kann man als Scheduling nach
  1225. Prioritätslisten ansehen. Beim Algorithmus A zum Beispiel ist die
  1226. Prioritätsliste, die Liste der Nummern der Prozesse. Beim ⌐LPT Scheduling@BS___5¬
  1227. Algorithmus erhält man die Ordnung der Prioritätenliste aus der Länge der
  1228. Ausführungszeiten.
  1229. @HBDie Länge des Scheduls hängt ab von:
  1230.  
  1231.    - der Anzahl m der Prozessoren,
  1232.  
  1233.    - den Ausführungszeiten der Prozesse,
  1234.  
  1235.    - den Einschränkungen durch den Präzedenz-Graphen und
  1236.  
  1237.    - der Reihenfolge der Prozesse in den Prioritätslisten.
  1238.  
  1239. Beim Scheduling nach Prioritätslisten interessiert man sich besonders für
  1240. die auftretenden Anomalien. So führt die Aufhebung oder Abschwächung der
  1241. oben genannten Einflüsse nicht unbedingt zu einer Verkürzung, sondern kann
  1242. unter Umständen sogar eine Verlängerung des erzeugten Scheduls bewirken.
  1243.  
  1244.  
  1245.  
  1246.  
  1247. @HBBeispiel:
  1248.  
  1249.                @HO█ @HLT1,3    @HO█ @HLT2,2    @HO█ @HLT3,2    @HO█ @HLT4,2
  1250.                @HP│              ┌─────────┬────┴────┬─────────┐
  1251.                @HO█ @HLT9,9         @HO█ @HLT5,4    @HO█ @HLT6,4    @HO█ @HLT7,4    @HO█ @HLT8,4
  1252.  
  1253.   @HBPrioritätsliste:  @HAL = {T1, T2, T3, T4, T5, T6, T7, T8, T9}
  1254.  
  1255.   @HBm = 3
  1256.  
  1257.          @HAt:  0     2     4     6     8    10    12
  1258.              @HP┌────────┬──────────────────────────┬─────
  1259.         @HAP1   @HP│   @HLT1   @HP│           @HLT9             @HP│  frei
  1260.              @HP├─────┬──┴──┬───────────┬───────────┼─────
  1261. @HAS:      P2   @HP│ @HLT2  @HP│ @HLT4  @HP│    @HLT5     @HP│    @HLT7     @HP│  frei
  1262.              @HP├─────┼─────┼───────────┼───────────┼─────
  1263.         @HAP3   @HP│ @HLT3  @HP│ frei│    @HLT6     @HP│    @HLT8     @HP│  frei      @HBt (S) = 12
  1264.              @HP└─────┴─────┴───────────┴───────────┴─────
  1265. @HE"Verbesserungen"
  1266. @HB
  1267.   a) Erhöhung der Prozessorzahl um einen Prozessor
  1268.  
  1269.          @HAt:  0     2     4     6     8    10    12    14 15
  1270.              @HP┌────────┬───────────┬──────────────────────────
  1271.         @HAP1   @HP│   @HLT1   @HP│    @HLT8     @HP│  frei
  1272.              @HP├─────┬──┴────────┬──┴───────────────────────┬──
  1273.         @HAP2   @HP│ @HLT2  @HP│    @HLT5     @HP│            @HLT9            @HP│
  1274. @HAS:           @HP├─────┼───────────┼──────────────────────────┴──
  1275.         @HAP3   @HP│ @HLT3  @HP│    @HLT6     @HP│  frei
  1276.              @HP├─────┼───────────┼─────────────────────────────
  1277.         @HAP4   @HP│ @HLT4  @HP│    @HLT7     @HP│  frei
  1278.              @HP└─────┴───────────┴─────────────────────────────
  1279.  
  1280.                                                          @HBt (S) = 15 (!)
  1281.  
  1282.  
  1283. @HB  b) Verkürzung der Ausführungszeiten bei allen Prozessen um eine Einheit
  1284.  
  1285.          @HAt:  0     2     4     6     8    10    12 13
  1286.              @HP┌─────┬────────┬────────┬───────────────────
  1287.         @HAP1   @HP│ @HLT1  @HP│   @HLT5   @HP│   @HLT8   @HP│  frei
  1288.              @HP├──┬──┼────────┼────────┴──────────────┬────
  1289. @HAS:      P2   @HP│@HLT2@HP│@HLT4@HP│   @HLT6   @HP│           @HLT9          @HP│  frei
  1290.              @HP├──┼──┼────────┼───────────────────────┴────
  1291.         @HAP3   @HP│@HLT3@HP@HP│  @HP│   @HLT7   @HP│  frei
  1292.              @HP└──┴──┴────────┴────────────────────────────
  1293.  
  1294.                                                          @HBt (S) = 13 (!)
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.   c) Änderung des Präzedenz-Graphen
  1302.  
  1303.                @HO█ @HLT1,3    @HO█ @HLT2,2    @HO█ @HLT3,2    @HO█ @HLT4,2
  1304.                @HP│                             └────┬─────────┐
  1305.                @HO█ @HLT9,9         @HO█ @HLT5,4    @HO█ @HLT6,4    @HO█ @HLT7,4    @HO█ @HLT8,4
  1306.  
  1307.  
  1308.          @HAt:  0     2     4     6     8    10    12    14    16
  1309.              @HP┌────────┬───────────┬──────────────────────────┬───
  1310.         @HAP1   @HP│   @HLT1   @HP│    @HLT6     @HP│           @HLT9             @HP│  frei
  1311.              @HP├─────┬──┴──┬────────┴──┬───────────────────────┴───
  1312. @HAS:      P2   @HP│ @HLT2  @HP│ @HLT4  @HP│    @HLT7     @HP│  frei
  1313.              @HP├─────┼─────┴─────┬─────┴─────┬─────────────────────
  1314.         @HAP3   @HP│ @HLT3  @HP│    @HLT5     @HP│    @HLT8     @HP│  frei
  1315.              @HP└─────┴───────────┴───────────┴─────────────────────
  1316.  
  1317.                                                          @HBt (S) = 16 (!)
  1318.  
  1319. @HB  d) Änderung der Prioritätenliste
  1320.  
  1321.      alte @HAL = {T1, T2, T3, T4, T5, T6, T7, T8, T9}
  1322.  
  1323.      @HBneue @HAL = {T1, T2, T4, T5, T6, T3, T9, T7, T8}
  1324.  
  1325.  
  1326.          @HAt:  0     2     4     6     8    10    12    14    16
  1327.              @HP┌────────┬─────┬──────────────────────────┬─────────
  1328.         @HAP1   @HP│   @HLT1   @HP│ @HLT3  @HP│           @HLT9             @HP│  frei
  1329.              @HP├─────┬──┴─────┴──┬───────────┬───────────┴─────────
  1330. @HAS:      P2   @HP│ @HLT2  @HP│    @HLT5     @HP│    @HLT7     @HP│  frei
  1331.              @HP├─────┼───────────┼───────────┼─────────────────────
  1332.         @HAP3   @HP│ @HLT4  @HP│    @HLT6     @HP│    @HLT8     @HP│  frei
  1333.              @HP└─────┴───────────┴───────────┴─────────────────────
  1334.  
  1335.                                                          @HBt (S) = 14 (!)
  1336.  
  1337. @HB
  1338.  
  1339.  
  1340.           weiter mit ⌐Rechnernetz@BS___6¬
  1341.