@OZ212ruby.font @ZS2 Multitasking = Multitasking ? @ZS0 Multitasking ist ein Begriff, der für AMIGA-User eine genau festgelegte Bedeu- tung hat. Keiner würde jemals auf die Idee kommen, sich unter Multitasking etwas anderes vorzustellen. Tatsächlich verbergen sich hinter diesem Begriff aber mindestens zwei verschiedene Paar Schuhe. Man unterscheidet zwischen "preemptivem" und "cooperativem" Multitasking. 1. Preemptives Multitasking Bei dieser Art des Multitaskings geschieht das Umschalten zwischen verschie- denen Programmen (Task-Switching) durch das Betriebssystem. Jeder Task¹ bekommt ein bestimmtes Zeitintervall (Quantum) zugeteilt. Wenn dieses Zeitintervall abgelaufen ist, dann wird der Task auf Warteposition gesetzt und der nächste Task bekommt für ein Quantum die CPU. Alle Tasks werden also gleichmäßig abge- arbeitet, so daß der Eindruck entsteht, daß mehrere Programme gleichzeitig laufen. Ein Task, der auf ein bestimmtes Ereignis wartet, wie zum Beispiel eine Textverarbeitung, die auf die nächste Eingabe des Users wartet, bekommt auch keine CPU-Zeit, belastet das System also auch nicht. 2. Cooperatives Multitasking In diesem Fall werden die Tasks nicht direkt durch das Betriebssystem umge- schaltet. Jeder Task kann für sich selber entscheiden, ob er die CPU an einen anderen Task abgeben will oder nicht. Wenn der Task die CPU nicht freigibt, dann läuft auch nur dieser eine Task, während andere im Hintergrund warten müssen. Prioritäten beim preemptiven Multitasking. Um einem Task mehr CPU-Zeit zuzuteilen, kann man dem Task eine höhere Priorität geben. Das Setzen einer höheren Priorität sollte aber mit absoluter Vorsicht geschehen. Wenn das Zeitquantum für einen Task abgelaufen ist, kommt der Task an die Reihe,der eine höhere oder die gleiche Priorität hat. Falls der zur Zeit laufende Task jedoch die höchste Priorität hat, dann läuft er weiter, ohne daß andere Tasks zwischenzeitlich die CPU bekommen. Eine höhere Priorität als 0 sollten also wirklich nur Programme erhalten, die nur eine sehr kurze Zeit aktiv sind. Auf dem AMIGA ist Preemptives Multitasking mit Prioritäten implementiert. Bei Kickstart 1.3 gab es noch einen Fehler, der aber kaum auftauchte: Wenn ein Task sein Quantum aufgebraucht hatte, dann konnte er nur von einem Task mit einer höheren Priorität abgelöst werden, nicht aber von einem, mit der gleichen Priorität. Dieser Fehler ist seit Kickstart 2.0 behoben. Auch OS/2.1 auf DOSen benutzen preemptives Multitasking, aber erst mit 80386++ und mindestens 3 MB RAM :-) Cooperatives Multitasking wird beispielsweise von Mac System 7.x benutzt und heißt dort Multifinder. ------------------------------------------------------------------------------- ¹ Task: Der Begriff Task ist nicht ganz korrekt und müßte eigentlich durch Prozess ersetzt werden. Das wiederum verleitet dazu, Multitasking als Multiprocessing zu bezeichnen, was aber auch falsch ist. Daher benutze ich hier Task, obwohl Prozess gemeint ist.