Können Sie etwas genauer sagen, was um alles in der Welt Sie unter "Multitasking-Illusion" verstehen? Nur weil ein Prozessor Single-Threaded ist, heißt das nicht, dass Sie nicht "Multitasking" ausführen können, es sei denn, Sie sind sehr akademisch in Bezug auf die Bedeutung des Wortes.
Shinrai
Antworten:
4
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 geben die Illusion von Multithreading.
Wie @Journeyman Geek hinzufügte, wird hier die Vorbelegung verwendet. Hier haben wir eine Art Struktur (etwa eine Warteschlange), in der die Programme gespeichert sind und jeder Prozess so viele Zyklen ausführen kann. Dann wird das aktuell laufende Programm vorab geprüft (oder mit einem anderen Programm ausgetauscht) und dann läuft dieses Programm. Es gibt viele Strategien, um zu bestimmen, welche Programme wann ausgeführt werden. Wir könnten völlig fair sein (zB Round Robin) und jedes Programm erhält eine bestimmte Zeitmenge oder wir könnten die Programme nach Priorität trennen und das Programm mit niedrigerer Priorität nur ausführen, wenn keine Programme mit höherer Priorität mehr auszuführen sind (zB Priorität) Warteschlange).
Dies ist hilfreich, wenn Sie beispielsweise eine GUI-Anwendung schreiben und eine lange Hintergrundaufgabe ausführen. Wenn dies als einzelne Thread-App geschrieben werden würde, würde das Front-End der GUI einfrieren. Bei zwei Threads bleibt die Benutzeroberfläche jedoch ansprechbar. Selbst wenn nur eine CPU vorhanden ist, bedeutet die Verschachtelung der Prozesse, dass die GUI weiterhin reagiert, während der Hintergrundprozess ausgeführt wird und Fortschritte erzielt.
Eine GUI kann weiterhin reagieren, da die Benutzereingabe einen Interrupt generiert, von dem aus das Betriebssystem einen bestimmten Handler in der Anwendung aufrufen kann, um die GUI-Arbeit auszuführen, und dieser Handler zur Hintergrundaufgabe zurückkehren kann. Ebenso ermöglicht asynchrone E / A (z. B.) den Festplattenzugriff, ohne anzuhalten. Neben Timer- und E / A-Interrupts bieten Systemaufrufe dem Betriebssystem auch die Möglichkeit, die Zeitplanung durchzuführen.
Paul A. Clayton
2
Hyperthreading ist bei modernen Systemen am wahrscheinlichsten. Kurz gesagt, ein Teil des, aber nicht der gesamte Kern wird dupliziert, sodass pro Kern mehr Threads ausgeführt werden können
Ich bin mir des Hyperthreading bewusst, deshalb frage ich speziell nach Single-Threaded-Prozessoren, wie einem Pre-HT-Pentium 4, auf dem angeblich mehrere Anwendungen gleichzeitig ausgeführt werden.
Enon
oh, meinst du präventives oder kooperatives Multitasking?
Geselle Geek
Heh, das ist das Problem, ich weiß es nicht wirklich. Vielleicht sind das die Begriffe, nach denen ich suche. Können Sie diese in Ihrer Antwort erläutern?
Enon
chris und john scheinen es schon zu haben.
Geselle Geek
1
Grundsätzlich nimmt das Betriebssystem jede Anwendung (und jeden Thread in jeder Anwendung) der Reihe nach und führt sie einige CPU-Zyklen lang aus. Wenn also 10 Anwendungen ausgeführt werden, läuft über einen Zeitraum von 10 Sekunden jeweils 1 Sekunde.
Dies bedeutet, dass jede Anwendung langsamer ausgeführt wird als die einzige auf dem Computer ausgeführte Anwendung. Bei der überwiegenden Mehrheit der Anwendungen wird jedoch die meiste Zeit darauf verwendet, auf Benutzereingaben zu warten.
Ich bin mir nicht sicher, was Sie vorhaben, aber es erinnert die Benutzer daran, dass Anwendungen parallel ausgeführt werden. Dieser Effekt wird erzielt, indem die Anforderungen von gleichzeitigen Prozessen so oft verschachtelt werden, dass es so aussieht, als ob alle oder zumindest die meisten Prozesse zum gleichen Zeitpunkt ausgeführt werden.
Im Unix-Sprachgebrauch verschiebt sich der Fokus übrigens auf die Wahrnehmung, dass das System den Anforderungen jedes Benutzers gewidmet erscheint. Wir nennen das einfach "Mehrbenutzer".
Wenn Sie viele Anwendungen auf einer CPU mit einem Thread ausführen, wechselt das Betriebssystem die CPU zwischen den Anwendungen. Dies geschieht so schnell, dass eine Illusion von Multitasking entsteht. Im Grunde genommen gibt die CPU ihre Zyklen an die gewünschte Anwendung weiter und wechselt dann zu einer anderen und zurück zur ersten Anwendung. Dies alles wird vom Betriebssystem durchgeführt. Wenn die CPU zu einer anderen Anwendung wechselt, die gleichzeitig ausgeführt wird, wird der Status der durchlässigen Anwendung gespeichert, sodass sie sich beim erneuten Aufrufen der CPU den Status der Anwendung merkt, in dem sie noch ausgeführt wurde.
Antworten:
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 geben die Illusion von Multithreading.
Wie @Journeyman Geek hinzufügte, wird hier die Vorbelegung verwendet. Hier haben wir eine Art Struktur (etwa eine Warteschlange), in der die Programme gespeichert sind und jeder Prozess so viele Zyklen ausführen kann. Dann wird das aktuell laufende Programm vorab geprüft (oder mit einem anderen Programm ausgetauscht) und dann läuft dieses Programm. Es gibt viele Strategien, um zu bestimmen, welche Programme wann ausgeführt werden. Wir könnten völlig fair sein (zB Round Robin) und jedes Programm erhält eine bestimmte Zeitmenge oder wir könnten die Programme nach Priorität trennen und das Programm mit niedrigerer Priorität nur ausführen, wenn keine Programme mit höherer Priorität mehr auszuführen sind (zB Priorität) Warteschlange).
Dies ist hilfreich, wenn Sie beispielsweise eine GUI-Anwendung schreiben und eine lange Hintergrundaufgabe ausführen. Wenn dies als einzelne Thread-App geschrieben werden würde, würde das Front-End der GUI einfrieren. Bei zwei Threads bleibt die Benutzeroberfläche jedoch ansprechbar. Selbst wenn nur eine CPU vorhanden ist, bedeutet die Verschachtelung der Prozesse, dass die GUI weiterhin reagiert, während der Hintergrundprozess ausgeführt wird und Fortschritte erzielt.
quelle
Hyperthreading ist bei modernen Systemen am wahrscheinlichsten. Kurz gesagt, ein Teil des, aber nicht der gesamte Kern wird dupliziert, sodass pro Kern mehr Threads ausgeführt werden können
quelle
Grundsätzlich nimmt das Betriebssystem jede Anwendung (und jeden Thread in jeder Anwendung) der Reihe nach und führt sie einige CPU-Zyklen lang aus. Wenn also 10 Anwendungen ausgeführt werden, läuft über einen Zeitraum von 10 Sekunden jeweils 1 Sekunde.
Dies bedeutet, dass jede Anwendung langsamer ausgeführt wird als die einzige auf dem Computer ausgeführte Anwendung. Bei der überwiegenden Mehrheit der Anwendungen wird jedoch die meiste Zeit darauf verwendet, auf Benutzereingaben zu warten.
Weitere Informationen finden Sie in Wikipedia .
quelle
Ich bin mir nicht sicher, was Sie vorhaben, aber es erinnert die Benutzer daran, dass Anwendungen parallel ausgeführt werden. Dieser Effekt wird erzielt, indem die Anforderungen von gleichzeitigen Prozessen so oft verschachtelt werden, dass es so aussieht, als ob alle oder zumindest die meisten Prozesse zum gleichen Zeitpunkt ausgeführt werden.
Im Unix-Sprachgebrauch verschiebt sich der Fokus übrigens auf die Wahrnehmung, dass das System den Anforderungen jedes Benutzers gewidmet erscheint. Wir nennen das einfach "Mehrbenutzer".
quelle
Wenn Sie viele Anwendungen auf einer CPU mit einem Thread ausführen, wechselt das Betriebssystem die CPU zwischen den Anwendungen. Dies geschieht so schnell, dass eine Illusion von Multitasking entsteht. Im Grunde genommen gibt die CPU ihre Zyklen an die gewünschte Anwendung weiter und wechselt dann zu einer anderen und zurück zur ersten Anwendung. Dies alles wird vom Betriebssystem durchgeführt. Wenn die CPU zu einer anderen Anwendung wechselt, die gleichzeitig ausgeführt wird, wird der Status der durchlässigen Anwendung gespeichert, sodass sie sich beim erneuten Aufrufen der CPU den Status der Anwendung merkt, in dem sie noch ausgeführt wurde.
quelle