Multitasking-Illusion auf einem Single-Thread-Prozessor?

Multitasking-Illusion auf einem Single-Thread-Prozessor?

Was ist die offizielle Erklärung dafür? Ich scheine es immer zu vergessen.

Antwort1

Multitasking oder Multithreading auf einem einzelnen Prozessor wird auch als wahrgenommenes Multithreading bezeichnet. Offensichtlich ist es mit einer CPU nicht möglich, Befehle gleichzeitig auszuführen. Stattdessen verschachteln wir Prozesse und erzeugen so die Illusion von Multithreading.

Wie @Journeyman Geek hinzugefügt hat, wird hier Präemption verwendet. Dabei haben wir eine Art Struktur (denken Sie an eine Warteschlange), in der die Programme gespeichert sind und jeder Prozess eine bestimmte Anzahl von Zyklen zur Ausführung erhält. Dann wird das aktuell laufende Programm präemptiert (oder durch ein anderes Programm ersetzt) ​​und dann wird dieses Programm ausgeführt. Es gibt viele Strategien, um zu bestimmen, welche Programme wann ausgeführt werden. Wir könnten völlig fair sein (z. B. Round Robin) und jedem Programm ein bestimmtes Zeitquantum zukommen lassen, oder wir könnten die Programme nach Priorität trennen und das Programm mit der niedrigeren Priorität nur ausführen, wenn keine Programme mit höherer Priorität mehr auszuführen sind (z. B. Prioritätswarteschlange).

Dies ist hilfreich, wenn Sie beispielsweise eine GUI-Anwendung schreiben und eine lange Hintergrundaufgabe ausführen. Wenn diese als Single-Thread-App geschrieben würde, würde das Front-End der GUI einfrieren. Mit zwei Threads bleibt die GUI jedoch reaktionsfähig. Selbst wenn nur eine CPU vorhanden ist, bedeutet die Verflechtung der Prozesse, dass die GUI reaktionsfähig bleibt, während der Hintergrundprozess weiter ausgeführt wird und Fortschritte macht.

Antwort2

Hyperthreadinghöchstwahrscheinlich bei modernen Systemen - kurz gesagt, ein Teil, aber nicht der ganze Kern wird dupliziert, sodass mehr Threads pro Kern ausgeführt werden können

Antwort3

Im Grunde nimmt das Betriebssystem jede Anwendung (und jeden Thread innerhalb jeder Anwendung) der Reihe nach und führt sie für einige CPU-Zyklen aus. Wenn Sie also 10 Anwendungen laufen haben, wird jede von ihnen über einen Zeitraum von 10 Sekunden 1 Sekunde lang tatsächlich ausgeführt.

Das bedeutet, dass jede Anwendung langsamer läuft, als wenn sie die einzige auf dem Computer ausgeführte Anwendung wäre. Die überwiegende Mehrheit der Anwendungen verbringt die meiste Zeit jedoch mit dem Warten auf Benutzereingaben.

SehenWikipediafür mehr Informationen.

Antwort4

Wenn Sie viele Anwendungen auf einer Single-Thread-CPU ausführen, wechselt das Betriebssystem die CPU grundsätzlich zwischen den Anwendungen. Dies geschieht so schnell, dass die Illusion von Multitasking entsteht. Im Grunde genommen gibt die CPU ihre Zyklen der erforderlichen Anwendung, wechselt dann zu einer anderen und dann wieder zurück zur ersten Anwendung. Dies alles wird vom Betriebssystem erledigt. Wenn die CPU zu einer anderen Anwendung wechselt, die gleichzeitig ausgeführt wird, wird der Status der vorherigen Anwendung gespeichert, sodass die CPU sich an den Status der Anwendung erinnert, in der sie zurückgelassen wurde, wenn sie wieder zu dieser Anwendung zurückkehrt.

verwandte Informationen