home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 03 / spiel / schedul.dcl < prev    next >
Encoding:
Text File  |  1988-09-04  |  6.8 KB  |  150 lines

  1. (**********************************************************)
  2. (*                                                        *)
  3. (*   Filename SCHEDUL.DCL                                 *)
  4. (*                                                        *)
  5. (*   TOOLBOX-Spezial III Echtzeitverarbeitung             *)
  6. (*                                                        *)
  7. (*   (C) TOOLBOX und Thomas Lang 1988                     *)
  8. (*                                                        *)
  9. (*   Dieses File enthält die für den Scheduler not-       *)
  10. (*   wendigen Deklarationen. Es kommen nur diejenigen     *)
  11. (*   vor, die in direktem Zusammenhang mit dem Scheduler  *)
  12. (*   benötigt werden, um dessen Aufgaben zu erledigen.    *)
  13. (*   Alle indirekt notwendigen Definitionen, wie etwa     *)
  14. (*   solche benötigter Prozeduren, sind hier nicht mit    *)
  15. (*   enthalten.                                           *)
  16. (*                                                        *)
  17. (**********************************************************)
  18.  
  19. Const
  20.    AnzahlHoch=5;              (* Anzahl der verwalteten *)
  21.                               (* Aufgaben mit höchster *)
  22.                               (* Priorität *)
  23.  
  24.    AnzahlFifo=20;             (* Anzahl der verwalteten *)
  25.                               (* Aufgaben in einem Fifo: *)
  26.                               (* d.h. First in First Out *)
  27.                               (* dies ist nicht notwendig *)
  28.                               (* gleich der Anzahl der *)
  29.                               (* verschiedenen Aufgaben, *)
  30.                               (* die mittels Fifo aufge- *)
  31.                               (* rufen werden können *)
  32.  
  33.    VerschFifo=8;              (* Anzahl der verschiedenen *)
  34.                               (* Aufgaben, die in Fifo *)
  35.                               (* verwaltet werden und *)
  36.                               (* mit jeweils einer extra *)
  37.                               (* Prozedur aufgerufen *)
  38.                               (* werden können *)
  39.  
  40.    AnzahlPeriodic=5;          (* Anzahl der verwalteten *)
  41.                               (* Aufgaben, die perio- *)
  42.                               (* disch und mit niedrig- *)
  43.                               (* ster Priorität bearbei- *)
  44.                               (* tet werden *)
  45.  
  46.    FastUnendlich=1E37;        (* eine der größten Reals, *)
  47.                               (* die als nächste Zeit, *)
  48.                               (* zu der was getan werden *)
  49.                               (* soll, unendlich ist *)
  50.  
  51.    NullBelastung=2.57;        (* Anzahl der Durchläufe *)
  52.                               (* des Schedulers in 1/100 *)
  53.                               (* Sekunden ohne Belastung *)
  54.                               (* mit Testprogramm Test02 *)
  55.                               (* ermittelter Wert *)
  56.  
  57. Type
  58.    T_Per=Record
  59.             ZuTun: Boolean;   (* gibt an, ob Aufgabe zu *)
  60.                               (* erledigen ist *)
  61.  
  62.             Zeit:  Real;      (* zu welchem Zeitpunkt *)
  63.          End;                 (* zu Record T_Per *)
  64.  
  65.    T_Fifo=Record
  66.             Nummer: Byte;     (* gibt an, welche Aufgabe *)
  67.                               (* zu erledigen ist *)
  68.  
  69.             Param:  Integer;  (* Parameter, der mit *)
  70.                               (* übergeben wird *)
  71.             End;              (* zu Record T_Fifo *)
  72.  
  73.    Prioritaet=Record
  74.                 Hoch:     Array[1..AnzahlHoch] Of Boolean;
  75.                               (* True bedeutet, Aufgabe *)
  76.                               (* muß bearbeitet werden *)
  77.  
  78.                 Fifo:     Array[1..AnzahlFifo] Of T_Fifo;
  79.                               (* Inhalt gibt die zu *)
  80.                               (* erledigende Aufgabe an, *)
  81.                               (* evtl. Parameter wird in *)
  82.                               (* Param mit übergeben *)
  83.  
  84.                 Periodic: Array[1..AnzahlPeriodic] Of T_Per;
  85.                               (* Inhalt ist die Zeit, zu *)
  86.                               (* der die Aufgabe zu *)
  87.                               (* bearbeiten ist *)
  88.              End;             (* zu Record Priorität *)
  89.  
  90.    DoppelWort=Record
  91.                  AnteilHoch,  (* 2 Integer, um oft*)
  92.                  AnteilNiedrig: Integer; (* addieren *)
  93.                                          (* zu können *)
  94.               End;            (* zu Record DoppelWort *)
  95.  
  96. Var
  97.    Aufgabe:Prioritaet;        (* Aufgaben sind nach oben *)
  98.                               (* angeführten Prioritäten *)
  99.                               (* untergliedert *)
  100.  
  101.    FifoIndexIn,               (* Index, um nächste Auf- *)
  102.                               (* gabe in Fifo zu schrei- *)
  103.                               (* ben *)
  104.    FifoIndexOut:Integer;      (* Index, um nächste Auf- *)
  105.                               (* gabe aus Fifo zu holen *)
  106.  
  107.    PeriodicIndexOut:Integer;  (* hier nur nächste Stelle *)
  108.                               (* ab der nachgeschaut *)
  109.                               (* werden soll, ob was zu *)
  110.                               (* bearbeiten ist *)
  111.  
  112.    FifoLeer:Boolean;          (* ob Fifo leer ist *)
  113.  
  114.    HochOverFlow,              (* Anzahl, wie oft Aufgabe *)
  115.                               (* hoher Priorität gesetzt *)
  116.                               (* werden sollte, obwohl *)
  117.                               (* sie schon anstand *)
  118.    FifoOverFlow,              (* Anzahl, wie oft Aufgabe *)
  119.                               (* in Fifo gestellt werden *)
  120.                               (* sollte, obwohl kein *)
  121.                               (* Platz mehr war *)
  122.    PerOverFlow:Integer;       (* Anzahl, wie oft Aufgabe *)
  123.                               (* in Periodic gesetzt *)
  124.                               (* werden sollte, obwohl *)
  125.                               (* die gleiche noch da *)
  126.                               (* war und noch nicht *)
  127.                               (* bearbeitet *)
  128.  
  129.    Ende:Boolean;              (* bei True beendet der *)
  130.                               (* Scheduler seine Arbeit *)
  131.  
  132.    BelastungsZaehler:DoppelWort;(* damit kann sehr lange *)
  133.                                 (* um 1 addiert werden, *)
  134.                                 (* bevor wieder 0 wird *)
  135.  
  136.    BeginZeit,EndeZeit:Real;   (* Diese beiden Zahlen ent- *)
  137.                               (* halten die Zeiten zu *)
  138.                               (* Beginn und Ende des *)
  139.                               (* Scheduling. Die Werte- *)
  140.                               (* zuweisung erfolgt im *)
  141.                               (* Scheduler. *)
  142.                               (* Es folgt jetzt die *)
  143.  
  144.                               (* Deklaration aller Pro- *)
  145.                               (* zeduren und Funktionen *)
  146.                               (* als sogenannte Forwards *)
  147.  
  148. Procedure InitSchedul; Forward;
  149. Procedure Schedul; Forward;
  150.