| Multitasking | |||||
|
Ein multitaskingfähiges Betriebssystem (wie Windows) ist in der Lage, mehrere Aufgaben (Tasks, Prozesse) gleichzeitig zu bearbeiten. So können Wartezeiten für ein bestimmtes Programm dazu genutzt werden um andere Prozesse zu bearbeiten. Es handelt sich dabei nicht um echte Parallelverarbeitung, da eine CPU bisher nur einen Befehl auf einmal abarbeiten kann. Die Prozesse werden jedoch effizienter (in sog. Zeitscheiben) durch die Bearbeitung geschleust. Die Reihenfolge der Bearbeitung wird durch den Scheduler festgelegt, der den Prozessen Prioritäten zuordnet. Dabei unterscheidet man die kooperative und die präemptive Methode: Kooperatives Multitasking und Präemptives Multitasking. Vorläufer des Multitasking war die Multiprogrammierung, bei der Kontextwechsel der Anwendungen bei Peripheriezugriffen stattfanden um die dabei entstehenden Wartezeiten zu nutzen. Durch den Einsatz der Interruptsteuerung wurde TSR-Programmierung (Terminate and Stay Resident) möglich. Der allgemeine Ablauf zeichnet sich dadurch aus, dass ein Prozess, der für einen anderen Prozess in die Warteposition versetzt wird, keine Informationen über diesen oder andere Prozesse benötigt. Dadurch kann diesem Prozess, wenn die Ausführung fortgesetzt wird, ein definierter Prozesskontext zur Verfügung gestellt werden, unabhängig davon, ob sich dieser in der Zwischenzeit für andere Prozesse verändert hat. Dazu wird der gesamte Prozesszustand vor der Unterbrechung auf einem Stack gespeichert. Bei Fortsetzung der Ausführung wird dieser gespeicherte Prozesszustand wieder geladen - dieser Vorgang wird Taskwechsel genannt. Kooperatives Multitasking Das kooperative Multitasking funktioniert ähnlich wie der Aufruf von Prozeduren bei der prozeduralen Programmierung. Es handelt sich um eine weiterentwickelte Form der TSR-Programmierung nach dem Konzept der synchronen Interrupts. Das Multitasking wird im Betriebssystemkernel als zentrale Prozessverwaltung gesteuert. Das Betriebssystem weist jeder Anwendung eine Priorität zu, jedoch bestimmen die Prozesse selber, wann sie die Kontrolle an den Kern zurückgeben. Die Anwendung mit der höchsten Priorität kann für sich die gesamte Rechenleistung bestimmen. Präemptives Multitasking Auch beim präemptiven Multitasking werden vom Betriebssystem Prioritäten für die Programme vergeben, jedoch teilen sich die Prozesse die Rechenleistung, gegliedert nach Priorität. Ein einzelner Prozess kann somit nicht die gesamte Rechenleistung beanspruchen. Das Betriebssystem steuert die Abarbeitungsfolge der Prozesse und weist ihnen Zeitscheiben (oder Zeitschlitze) zu. Ist die zugewiesene Zeit vergangen, so wird ein Prozess angehalten um einen anderen zu starten. Die angehaltenen Prozesse werden inaktiv und dann wieder gestartet, sobald sich ein neuer Zeitschlitz für sie öffnet. Beim Scheduling der Prozesse können verschiedene Strategien angewendet werden. Eine populäre Strategie ist die Anwendung von Vorrangwarteschlangen in Kombination mit der Round-Robin-Scheduling-Strategie. Die Auslastung des Systems ist besser verteilt und damit effektiver. Multitaskingfähige Betriebssysteme Multitaskingfähige Betriebssysteme sind Windows, Unix, Linux, OS/2 oder Mac OS X und alle auf UNIX basierenden Betriebssysteme wie Solaris oder HP-UX. |
|||||
| Siehe auch: Task Thread Multithreading Multiuser windows linux Kernel Mac-OS-X Solaris | |||||