Die Task-Steuerung muss eine Reihe von Entscheidungen treffen, wenn eine Task zum Ablauf kommen soll. Der Verwaltung der Betriebsmittel kommt dabei eine zentrale Bedeutung zu.
Erhält eine Task das Recht, Hauptspeicher zu belegen, dann heißt dies, dass die Task aktiviert wird.
Im Anschluss daran muss der Task eine CPU zugewiesen werden, d.h. die Task wird initiiert.
Kriterien für die Aktivierungsentscheidung sind:
der Multiprogrammierungs-Grad pro Kategorie
die Priorität
Betriebsmittelauslastung (Hauptspeicher, CPU, Seitenwechsel)
geleistete Systemdienste (CPU-Zeit, Anzahl der Ein- und Ausgaben)
Zeitscheiben
Die Zeitscheiben dienen der Task-Steuerung, um die Betriebsmittel CPU und Hauptspeicher allen Tasks möglichst gleichmäßig und gleichberechtigt zur Verfügung zu stellen:
Mikrozeitscheibe (MTS) zur optimalen Nutzung der CPU
Systemdienstzeitscheibe (SSTS) für sinnvolle Zuteilung des Hauptspeichers
Mikrozeitscheibe
Die Mikrozeitscheibe MTS ist die maximale Zeit, die eine Task das Betriebsmittel CPU ohne Unterbrechung beanspruchen kann, wenn keine Task mit höherer Priorität auf Zuteilung der CPU wartet.
Spätestens nach Ablauf der Mikrozeitscheibe erfolgt eine Unterbrechung, um die Blockierung der CPU durch eine Task zu verhindern. Besaß die Task eine variable Priorität (128-255), wird diese entsprechend des E/A-Verhaltens und der CPU-Nutzung der Task verändert.
Systemdienstzeitscheibe
Die Systemdienstzeitscheibe SSTS dokumentiert keine absolute Zeit, sondern entspricht einem Quantum an Systemdiensten (CPU-Nutzung, E/A-Rate), die eine aktive Task maximal beanspruchen darf. Nach Ablauf der Systemdienstzeitscheibe wird die Task deaktiviert, wenn Tasks der gleichen Kategorie auf Aktivierung warten.
Zuteilung des Betriebsmittels Hauptspeicher
Aktivieren einer Task
Die Aktivierung einer Task ist nur möglich, wenn die interne Kontrollinstanz, die ACF (Activate-Control-Function), dies erlaubt. D.h. ACF misst in periodischen Abständen die Auslastung der Betriebsmittel Hauptspeicher und CPU sowie die Seitenwechsel-Aktivitäten, bzw. wenn eine Folge von Aktivierungen durchgeführt werden soll, nur die Auslastung des Hauptspeichers.
Je nach Betriebsmittelauslastung und definiertem Kategorien- und Prioritätenkonzept erfolgt dann anhand einer Matrix die Entscheidung, ob eine weitere Aktivierung zulässig ist oder ob eine Zwangsdeaktivierung, eine Verdrängung oder gar nichts erfolgen soll.Die Vorgehensweise des PRIOR bei der Aktivierung einer Task soll im Folgenden an einem Beispiel gezeigt werden:
Insgesamt sind aktiv: 19 TP-, 9 DIALOG- und 5 BATCH-Tasks
Auf Aktivierung warten: 2 TP-, 2 DIALOG- und 2 BATCH-Tasks
Die Systembetreuung hat die Kategorien wie folgt definiert, der Operand IO-PRIORITY ist auf *NONE gesetzt (Voreinstellung):
/MODIFY-TASK-CATEGORIES CATEGORY-NAME=DIALOG,- WEIGHT-CODE=100,MINIMUM-ACTIVE-TASKS=25,MAXIMUM-ACTIVE-TASKS=35 /MODIFY-TASK-CATEGORIES CATEGORY-NAME=TP,- WEIGHT-CODE=500,MINIMUM-ACTIVE-TASKS=30,MAXIMUM-ACTIVE-TASKS=40 /MODIFY-TASK-CATEGORIES CATEGORY-NAME=BATCH,- WEIGHT-CODE=3,MINIMUM-ACTIVE-TASKS=5,MAXIMUM-ACTIVE-TASKS=15
Die Auswahl-/Aktivierungsentscheidung trifft die Task-Steuerung in zwei Stufen.
Auswahl der Kategorie, aus der eine Task aktiviert werden soll.
Innerhalb dieser Kategorie wird die Task ausgewählt, die die höchste Priorität hat bzw. bei gleicher Priorität wird die Task aktiviert, die in der Warteschlange an erster Stelle steht.
Für die Auswahl der Kategorie sind folgende Entscheidungen notwendig
Bezogen auf das Beispiel bedeutet dies
Es werden nur die Kategorien berücksichtigt, für die mindestens eine Task auf Aktivierung wartet
die Bedingung trifft für alle Kategorien zu
Bevorzugt ausgewählt werden unter diesen Kategorien
alle Kategorien (sofern vorhanden), die MINMPL noch nicht erreicht haben.
MAXMPL ist hier ohne Bedeutung.wenn alle Kategorien MINMPL erreicht haben: die Kategorien, die MAXMPL noch nicht erreicht haben.
die Bedingung trifft für die Kategorien TP und DIALOG zu
Sind solche bevorzugten Kategorien vorhanden, werden alle anderen Kategorien von der weiteren Auswahl ausgeschlossen:
z=0 (Anzahl aktiver Tasks < MIN)
z=MIN (0MIN <= Anzahl aktiver Tasks < MAX)
z=MAX (Anzahl aktiver Tasks > MAX)
Begründung:
z=0 für TP (19 < 30)
z=0 für DIALOG ( 9 < 25)
z=5 für BATCH (MIN=5)Von diesen Kategorien wird nun die Kategorie für die Aktivierung ausgewählt, für die der niedrigste Index ermittelt wird. Die Indexberechnung erfolgt nach dem Algorithmus:
Index = (NAT +1 -z) / WT
Dabei bedeutet:NAT = Anzahl der aktiven Task der Kategorie, für die der Indexberechnet wird
z = Zustandsanzeige
WT = Wichtigkeit (Gewicht)
Für die Kategorie TP und DIALOG muss die Indexberechnung erfolgen:
Index TP = (19+1-0) / 500 = 20 / 500 = 0,04
Index DIA = (9+1-0) / 100 = 10 / 100 = 0,01Bei Index-Gleichheit wird in der Reihenfolge TP - DIALOG - BATCH aktiviert.
Ergebnis:
Es wird die höchstpriore Task der Kategorie TP aktiviert.
Ausnahme:
Tasks mit fester Priorität werden bevorzugt aktiviert.
Deaktivieren einer Task
Das Deaktivieren von aktiven Tasks verfolgt den Zweck, ablaufbereiten inaktiven Tasks das Betriebsmittel Hauptspeicher zur Verfügung zu stellen.
Es geschieht, wenn für die aktiven Tasks
eine weitere Verarbeitung nicht möglich ist
(z.B. durch programmgesteuerte Warteaufrufe, Warten auf Eingabe von Datensichtstation im Teilnehmerbetrieb)die Zeit beim Warten auf Ereignisse überschritten wird
(z.B. Warten auf Eingabe von Datensichtstation im Teilhaberbetrieb)ein bestimmter Umfang von System-Diensten
(z.B. CPU-Zeit und Anzahl der Ein-/ Ausgaben) in Anspruch genommen wurden.
Ausnahme
Die Deaktivierung unterbleibt, wenn die Systembetreuung im Benutzerkatalog für den Benutzer vereinbart hat, dass seine Tasks nicht deaktiviert werden dürfen (siehe Kommando ADD-USER, Operand PRIVILEGE=INHIBIT-DEACTIVATION).
Zwangsdeaktivieren einer Task
Wenn die ACF-Funktion im Rahmen ihrer Messungen zur Auslastung der Betriebsmittel Engpässe feststellt, kommt es zur Zwangsdeaktivierung einer Task.
Da die Kategorie-Merkmale MIN, MAX und WT für die Zwangsdeaktivierung herangezogen werden, kann die Systembetreuung mit einer entsprechenden Voreinstellung dieser Werte dafür sorgen, dass nur Tasks weniger wichtiger Kategorien zwangsdeaktiviert werden.Ausnahmen
Tasks mit fester Priorität
Tasks im Funktionszustand TPR
Tasks, die einen Lock halten
Tasks, für deren Benutzerkennung PRIVILEGE=INHIBIT-DEACTIVATION vereinbart wurde (Kommando ADD-USER), können nicht zwangsdeaktiviert werden.
Verdrängen einer Task
Zu einer Verdrängung kann es kommen, wenn eine Aktivierungsanforderung vorliegt und die ACF-Funktion auf Grund festgestellter Betriebsmittelengpässe keine Aktivierung zulässt. Es gibt zwei Möglichkeiten der Verdrängung:
Eine aktive Task wird von einer inaktiven Task einer anderen Kategorie verdrängt.
Die aktive und inaktive Task gehören der gleichen Kategorie an.
Die Verdrängungsrate ist umso höher, je langfristiger der Überlastzustand (= Engpass an Betriebsmitteln) im System ist.
Preemption-Control-Function (PCF)
PCF überwacht periodisch die Verdrängungsrate.
Meldung:EXC0455 TASK PREEMPTION LEVEL=i
i
ist eine Ziffer von 0 bis 3 und bezeichnet den Grad der Verdrängungsrate.Grad
Auswirkungen im System
Maßnahme des Operators
0
Normaler Systemablauf
Keine
1, 2
Kurzzeitige Überlastzustände
Keine
3
Langfristige Überlastzustände
Der MAX-MPL-Wert einer Katagorie wird nicht überschritten. Das System hält Hauptspeicher für Privilegierungen frei.Reduzierung der MIN-MPL-Werte von Katagorien
Maßnahmen zur Verhinderung zu hoher Verdrängungsraten
Ändern Sie die MIN-MPL- und MAX-MPL-Werte für einzelne Katagorien so ab, dass weniger Aktivierungsanforderungen entstehen.
Vergrößern Sie den Hauptspeicher oder reduzieren Sie die Last.
Zuteilung des Betriebsmittels CPU
Jede Task wartet nach erfolgter Aktivierung auf Zuteilung des Betriebsmittels CPU (Zentralprozessor), d.h. auf Initiierung.
Hat die Task das Betriebsmittel CPU erhalten, kann es auf Grund folgender Unterbrechungsursachen zu einer Deinitiierung kommen:
Task will auf Synchronisationsereignis warten
Warten auf Beendigung einer Ein-/Ausgabe-Operation
Seitenwechsel vornehmen
Ablauf der Mikrozeitscheibe
Auch auf Initiierungsebene kann es zu einer Verdrängung (Preemption) kommen.
Dies erfolgt dann, wenn eine andere aktive und ablaufbereite Task mit höherer Priorität auf Initiierung wartet. Das ist z.B. der Fall, wenn für eine Task mit höherer Priorität eine
Ein-/ Ausgabe-Operation abgeschlossen ist.
Zuteilung von I/O-Ressourcen
Die Zuteilung von I/O-Ressourcen ist abhängig von der I/O-Priorität des Tasks. Die Steuerung übernimmt IORM, siehe Abschnitt „IORM: Steuerung von I/O-Ressourcen" und Handbuch „Dienstprogramme“ [15].