Multitasking
Was ist Multitasking eigentlich? Nun, unter Multitasking wollen wir hier die
Fähigkeit eines Systems verstehen, mehrere Aufgaben (=Tasks) parallel zu bearbeiten.
Da ein System aber in der Regel nur eine begrenzte Anzahl von CPUs besitzt
(meistens eine), wird durch ein kleines Programm, der so genannte Dispatcher oder
Scheduler, die CPU zyklisch jeder aktiven Task abwechselnd zugeteilt. Dieser Dispatcher
wird in der Regel durch einen Hardware-Interrupt aufgerufen. Die Zeitdauer zwischen
zwei Aufrufen des Dispatchers wird auch als Tick bezeichnet.
Doch leider ist Multitasking nicht gleich Multitasking. Es gibt zwei generelle
Arten von Multitasking-Systemen:
- das non-preemptive Multitasking und
- das preemptive Multitasking
Beide Systeme werden wir uns nun kurz anschauen.
Bis WINDOWS 3.xx war WINDOWS ein reines non-preemptives Multitasking-System (16-Bit
Programme). Beim non-preemptiven Multitasking behält eine Task solange die Kontrolle
über die CPU, bis sie ihre Aufgabe vollständig erledigt hat. Das Umschalten von
einer Task auf die andere erfolgt immer durch die aktive Task selbst, und zwar indem
sie ins Betriebssystem springt und damit die CPU freigibt.
Wenn Sie jetzt das nachfolgende Bild anklicken, können Sie sich an Hand einer
kleiner Demo das Verhalten eines non-preemptiven Multitasking-Systems ansehen.
 |
Beim non-preemptiven Multitasking kann eine Task das gesamte System blockieren
wenn sie nicht mehr ins Betriebssystem zurückkehrt! Die entsprechende Meldung
unter WINDOWS 3.xx dazu lautete ungefähr: "Diese Anwendung reagiert nicht mehr". |
 |
Starten Sie jetzt das Programm '01Einführung\Multitasking\mtask16.exe'.
Das Programm inkrementiert in einer Schleife einen Zähler und gibt den Zählerstand
in einem Fenster aus. In bestimmten Abständen (Zähler wurde um 5000 erhöht)
deaktiviert sich das Programm für ca. 1 Sekunde.

Starten Sie nun das Programm ein zweites Mal. Wenn Sie jetzt die Ausgaben
in den beiden Fenstern beobachten werden Sie feststellen, dass die Ausgaben
immer abwechselnd erfolgen. Der Grund dafür ist, dass das Programm MTask16
ein WINDOWS 3.xx Programm (16-Bit Programm) ist. WINDOWS 3.xx Programme werden
immer im non-preemptiven Multitasking ausgeführt. Schließen Sie die beiden Fenster
anschließend wieder.
|
Ab WINDOWS 95 (und WINDOWS NT/2000 sowieso) ist WINDOWS ein preemptives Multitasking-System.
Beim preemptiven Multitasking wird die Rechenzeit für jede Task durch das Betriebssystem
vergeben. Jede Task erhält im Regelfall die CPU nur eine bestimmte Zeit zugeteilt.
Diese Zeit wird auch Zeitscheibe oder Tick bezeichnet. Das Umschalten von einer
Task auf die andere erfolgt unabhängig von der Aktion, die die aktive Task gerade
ausführt, d.h. eine Task kann für eine Aufgabe durchaus mehrere Zeitscheiben benötigen.
Erledigt eine Task ihre Aufgabe früher als die Zeitscheibe beendet ist, so erfolgt
sofort eine Umschaltung auf die nächste Task die dann die restliche Dauer der Zeitscheibe
bekommt. Auf jeden Fall wird aber immer nach Ablauf einer Zeitscheibe auf die nächste
Task umgeschaltet.
Wenn Sie jetzt das nachfolgende Bild anklicken, können Sie sich an Hand einer
kleiner Demo das Verhalten eines preemptiven Multitasking-Systems ansehen.
 |
Beim preemptiven Multitasking kann eine Task das gesamte System nun nicht
mehr blockieren, da die Taskumschaltung automatisch durch den Dispatcher erfolgt. |
 |
Starten Sie jetzt das Programm '01Einführung\Multitasking\mtask32.exe'.
Dieses Programm entspricht in seiner Funktionalität dem vorherigen Beispiel
nur mit dem Unterschied, dass das Programm jetzt als 32-Bit Programm übersetzt
wurde. Starten Sie auch hier wieder eine zweite Instanz des Programms. Wenn
Sie sich nun die Ausgabe ansehen werden Sie feststellen können, dass die Ausgaben
in den Fenstern zeitgleich erfolgen (wenigstens optisch). |
In der nächsten Lektion werden wir erst einmal dafür sorgen, dass wir auch alle
die gleiche Sprache sprechen. Wir werden uns einige Konventionen ansehen die beim
Schreiben vom WINDOWS Programmen beachtet werden sollten.
 |
Sollten Sie sich schon einmal ein klein wenig mit WINDOWS befasst haben,
so tauchen dort die Begriffe Thread und Process bei der Behandlung
des Multitasking auf. Was es damit auf sich hat wird im Kapitel
Multitasking erklärt. |
|