Wenn Sie kooperatives Multitasking verwenden und ein schlechtes Programm haben: dann haben Sie Recht.
In der realen Welt soll jedoch Folgendes passieren:
Kooperatives Multitasking: Ich werde die CPU nicht für immer benutzen. Stattdessen gibt es einem anderen Programm nach einiger Zeit eine Chance oder wenn es gesperrt ist.
Die Antwort von Paul beschreibt das Letztere.
Präemptives Multitasking (fast überall verwendet): Das Betriebssystem (nicht das Programm) übergibt die CPU für kurze Zeit an ein Programm und nimmt es dann weg. Dies kann so simpel sein wie das Ausführen eines Timers, und sobald dieser abgelaufen ist, wird der Prozess angehalten und an das nächste Programm / Programm weitergegeben, das gerade wartet.
Stellen Sie sich in Ihrem Fall ein Büro mit zwei Mitarbeitern und drei (oder mehr) Aufgaben vor. (Nennen wir sie Task-A, Task-B und Task-C).
Der erste, der bearbeitet wird, prüft die Anweisungen des Vorgesetzten, der besagt
- Stellen Sie einen Timer auf 10 Minuten. Unterbrechen Sie die Arbeit an Ihrer aktuellen Aufgabe, setzen Sie sie unter das Ende der TODO-Liste und lesen Sie dieses Dokument weiter.
- Entfernen Sie als Nächstes den ersten Eintrag oben in der TODO-Liste und beginnen Sie damit, daran zu arbeiten.
- Wiederholen.
Worker 1 setzt den Timer und erhält die erste Task der TODO-Liste (in diesem Fall Task-A).
Arbeiter 2 macht dasselbe: Er setzt einen Timer und erhält das, was jetzt ist, von der Spitze der TODO-Liste. Da Worker 1 Task-A von ihm entfernt hat, beginnt Worker 2 nun mit Task-B.
Zehn Minuten später geht der Timer aus. Arbeiter 1 beendet die Arbeit an Task-A und erhält die Anweisungen des Vorgesetzten. Diese geben an, dass die aktuelle Aufgabe am Ende der TODO-Liste steht. Wenn Sie die Anweisungen des Supervisors fortsetzen, startet der Timer jetzt neu und beginnt zu arbeiten, was sich jetzt ganz oben in der TODO-Liste befindet (Task-C).
Worker 2 macht dasselbe und stoppt Task-B und beginnt mit dem Anfang der TODO-Liste (im Beispiel Task-A).
Usw. usw.
Dies ist etwas vereinfacht. Aber es sollte Ihnen eine Vorstellung davon vermitteln, wie zwei Trittstufen (Arbeiter) zu 100% mit drei oder mehr Aufgaben arbeiten können.
In echten Schedulern gibt es noch viel mehr. ZB Interrupts (vergleiche es mit einem Telefon, das mitten in einer Aufgabe klingelt und wie man damit umgeht), intelligente Planung (wenn dieselbe Aufgabe demselben Mitarbeiter zugewiesen wird, wird sie wahrscheinlich schneller erledigt, da der Mitarbeiter bereits damit vertraut ist), E / A (wenn ein Arbeiter ein Buch aus einer Bibliothek benötigt), wartet er nicht bis der Timer abgelaufen ist, sondern fährt sofort mit der nächsten Aufgabe fort usw.