Multitasking

Zurück Zum Inhaltsverzeichnis Weiter

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.

Hier geht's zum non-preemptiven Multitasking
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.

Screen-Shot vom Beispiel

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.

Hier geht's nun zum preemptiven Multitasking
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.

 

Zurück Zum Inhaltsverzeichnis Weiter


Copyright © 2004

Senden Sie Emails mit Fragen oder Kommentaren zu dieser Website an: mailto:info@cpp-tutor.de
 Wolfgang Schröder, Lerchenweg 23, D-72805 Lichtenstein. Tel: +49 7129 6470