Topic : FreeMiNT für absolute Anfänger
Author : Draco (draco@atari.org)
Version : mint.stg (9/1/2001)
Subject : MiNT
Nodes : 73
Index Size : 2258
HCP-Version : 3
Compiled on : Atari
@charset : atarist
@lang :
@default :
@help :
@options : -i -s +zz -t4 -d10
@width : 75
View Ref-FilePrioritisierung
Es ist eine allgemein bekannte Tatsache, daß eine CPU nur eine
Instruktion auf einmal ausführen kann. Daraus folgt, daß auch in
Multitasking-Umgebungen Programme nicht wirklich parallel laufen -
sie bekommen die CPU-Zeit abwechselnd, jedes für eine kurze
Zeitspanne. Dieses Quantum wird 'Zeitscheibe' genannt. Jedes mal, wenn
die Zeitscheibe verbraucht ist, führt das Betriebssystem bestimmten
Code aus (der 'Scheduler' genannt wird und dieser entscheidet, welcher
Prozess die CPU-Zeit der nächsten Zeitscheibe erhält.
Aus all dem darf man zwei Schlüsse ziehen:
1) je kürzer die Zeitscheibe, desto mehr Prozesse pro Sekunde bekommen
CPU-Zeit, also wird die Zeit kürzer, bis ein Programm auf ein
Ereignis reagiert. Wir sagen 'die Antwortzeit des Prozesses wird
besser'.
2) je kürzer die Zeitscheibe, desto öfter wird allerdings auch der
Scheduler ausgeführt. Weil der Scheduler aber auch CPU-Zeit
benötigt, um zu laufen, führt eine Verbesserung der Antwortzeit
dazu, daß mehr CPU-Zeit für das Taskwechseln selbst verbraucht
wird. In anderen Worten, je kürzer die Zeitscheibe, desto
schlechter wird die allgemeine Systemleistung.
Die Größe der Zeitscheibe zu wechseln, ist global und wirkt sich auf
alle Prozesse im System aus. Abgesehen davon bietet FreeMiNT noch eine
Möglichkeit, die Zeitmenge, die ein Prozess vom Scheduler erhält,
individuell zu kontrollieren. Jedem Prozess wird ein spezielles
Attribut zugewiesen, das 'Priorität' genannt wird. Je höher der Wert
der Priorität, desto mehr CPU-Zeit erhält der Prozess - und läuft
daher 'schneller'.
Natürlich ist die CPU-Zeit keine endliche Größe, also werden, falls
ein Prozess höhere Priorität erhält, der Rest der Prozesse automatisch
weniger Zeit erhalten. Und das ist der Grund, warum die exakten
Auswirkungen einer Änderung der Priorität nicht akkurat vorhergesehen
werden können. Die aktuell zugeteilte Zeitmenge hängt nämlich nicht
nur vom Wert der Priorität ab, sondern natürlich auch von der Anzahl,
den Zuständen und Prioritäten aller Prozesse, die momentan im System
existieren.
Allgemein kann man sagen: falls Sie die höchste Priorität für einen
Prozess einstellen, können Sie erwarten, daß er mehr Zeitscheiben
erhält, aber falls Sie das mit allen Prozessen machen, wird kein
sichtbarer Effekt auftreten.
Um die Dinge noch ein wenig komplexer zu machen, kann das
Betriebssystem automatisch die Prioritäten verstellen und sie bei
Bedarf größer oder kleiner machen. Selbstverständlich wird der
eingestellte Prioritätswert ständig als Vorgabe betrachtet und
meistens für die Prozesse benutzt. Falls aber das Betriebssystem
entscheidet, daß ein Prozess gerade mehr CPU-Zeit benötigen würde,
kann es für einen Moment die Priorität für diesen erhöhen - und
umgekehrt, wenn sich herausstellt, daß ein Prozess nicht so viel
CPU-Leistung braucht, dessen Priorität verringern.
Unterm Strich kehrt die Höhe der Priorität klarerweise früher oder
später zu ihrem voreingestellten Wert zurück. Anders gesagt, wird die
Priorität, die Sie einstellen, als Grundwert verstanden, aber die
echten ('augenblicklichen') Prioritäten nehmen ständig automatisch
ander Werte in der Nähe dieser Größe an, je nach den momentanen
Erfordernissen. Dieses Verhalten wird 'adaptive Prioritisierung'
genannt.
Es sei auch bemerkt, daß es in FreeMiNT keine Einstellung für
'Vordergrund-Priorität" oder 'Hintergrund-Priorität' gibt. Die
angewandte Methode der adaptive Prioritisierung wird als flexibler
betrachtet als die Verwendung zweier fester Prioritäten, wie bei
manchen Systemen beobachtet werden kann.