Der Scheduler -- auf deutsch vielleicht: "Fahrplaner" ;-) -- ist ein Teil des OS/2-Kernel, arbeitet also auf der untersten Ebene des Systems (vgl. hierzu auch die Erl„uterungen zum WPS-Neustart).
Der Scheduler ist verantwortlich fr das Multitasking und Multithreading in OS/2. Weil Sie idR. nur einen Prozessor haben, aber mehrere Programme wenigstens scheinbar gleichzeitig laufen sollen, schaltet der Scheduler viele Dutzend Mal in der Sekunde zwischen den verschiedenen Programmen um, so daá es so aussieht, als liefen die Programme gleichzeitig.
Fr das Verst„ndnis der einzelnen Einstellungen auf der Seite "Scheduler" im Objekt "OS/2 Kernel" ist ein grunds„tzliches Verst„ndnis der Art und Weise hilfreich, wie OS/2 Prozesse und Threads verwaltet. Ausfhrliche Hilfe zu den einzelnen Einstellungen erhalten Sie, wenn Sie den "Hilfe"-Knopf auf dieser Seite drcken.
Ein Thread ist die kleinste Verwaltungseinheit fr die Umschaltung, die OS/2 zur Verfgung stellt. Ein Programm kann mehrere Threads, muá aber mindestens einen Thread enthalten. Die Bezeichnung "Thread" (auf deutsch etwa "Faden") wurde gew„hlt, weil innerhalb eines Threads Programminstruktionen sequentiell ausgefhrt werden. Zwischen den Threads hingegen ist eine sequentielle Ausfhrung nicht gesichert, weil zu keinem Zeitpunkt bestimmt ist, welche Instruktion des einen Threads vor einer Instruktion eines anderen Threads ausgefhrt wird.
Gut programmierte OS/2-Software benutzt mehrere Threads, um dem Benutzer eine schnellere Antwort auf seine Eingaben und Mausaktionen zu sichern. Wenn Sie zB. einen Befehl ausfhren, der idR. l„nger dauern wird, so wird ein hochwertiges OS/2-Programm fr diese Aufgabe einen neuen Thread starten, der diese Aufgabe ausfhrt. W„hrend dieser Ausfhrung ist der Haupt-Thread des Programmes, der die Benutzereingaben entgegennimmt, bereits wieder zur Eingabe neuer Befehle bereit.
Schlecht programmierte OS/2-Software benutzt nur einen Thread, so daá w„hrend der Bearbeitung einer Aufgabe keine weiteren Benutzereingaben m”glich sind. Ein Beispiel fr solch schlechte Programmierung stammt ausgerechnet von IBM selbst: wenn Sie in VIEW.EXE "In allen Bibliotheken" nach einem bestimmten Begriff suchen, ist der Rechner komplett blockiert, bis alle Bibliotheken durchsucht sind. Hier w„re Multithreading sehr angebracht gewesen.
Threads k”nnen nun verschiedene Priorit„ten besitzen. Allgemein gilt, daá ein Thread mit h”herer Priorit„t mehr Prozessorzeit erh„lt als ein Thread mit geringerer Priotit„t. Dies gilt jedenfalls dann, wenn mehrere Threads zugleich etwas zu tun haben; wenn Threads gerade "leerlaufen", dh. auf weitere Aufgaben warten, verbrauchen sie keine Prozessorzeit, und die Priorit„ten spielen keine Rolle.
OS/2 erm”glicht eine sehr differenzierte Priorit„tszuweisung. Es unterscheidet zwischen vier Priorit„tsklassen:
Einige Beispiele:
Innerhalb der Klasse "Regular priority" sorgt OS/2 allerdings dafr, daá kein Thread "verhungert", also niemals zur Ausfhrung gelangt, indem nach einer bestimmten Zeit die Priorit„t eines niedrigeren Threads automatisch erh”ht wird. Diese Zeit wird mit der CONFIG.SYS-Einstellung MAXWAIT festgelegt. OS/2 erh”ht auáerdem die Priorit„t eines Threads, wenn Tastatureingaben vorliegen, der Prozeá des Threads im Vordergrund l„uft oder auf Ger„te zugegriffen wird.
Diese dynamischen Žnderungen werden jedenfalls dann vorgenommen,
wenn in der CONFIG.SYS nicht der Befehl PRIORITY=ABSOLUTE steht,
was nicht empfehlenswert ist. (Deswegen finden Sie diese Einstellung auch nicht auf
der Einstellungsseite im Objekt "OS/2 Kernel").