Nutzt das Betriebssystem mehrere Kerne?

Nutzt das Betriebssystem mehrere Kerne?

Ich weiß, dass mehr Kerne nicht immer besser sind und dass die meisten Anwendungen Single-Threaded sind, aber nutzt das Betriebssystem die zusätzlichen Kerne? Nehmen wir beispielsweise eine Anwendung wie einen Wörterbuch-Brute-Forcer an. Würde das Ausführen von vier separaten Instanzen davon (auf einem separaten Viertel des Wörterbuchs) auf einem Quad-Core-Prozessor dieselben Vorteile bringen, wenn das Programm tatsächlich Multi-Threaded wäre? Würde das Betriebssystem im Wesentlichen zulassen, dass alle vier Instanzen wirklich gleichzeitig ausgeführt werden, ohne dass es zu Unterbrechungen kommt?

Ich neige dazu, viele, viele unabhängige Anwendungen gleichzeitig auszuführen (Firefox mit einer Reihe von Tabs, Office, Chat, Entwicklertools, Spiele).

Antwort1

Im Allgemeinen würde das Betriebssystem 4 Instanzen eines Programms auf 4 Kerne verteilen, wenn die Kerne zur Nutzung verfügbar wären (d. h. wenn sie von anderen Programmen nicht genutzt werden). Dies könnte Ihnen im Vergleich zu 4 Threads ähnliche Vorteile bieten, abgesehen vom potenziellen Overhead (z. B. würden 4 Threads höchstwahrscheinlich eine Kopie eines geladenen Wörterbuchs gemeinsam nutzen, während 4 Prozesse höchstwahrscheinlich jeweils separate Kopien des Wörterbuchs laden würden).

Antwort2

Um alle verfügbaren Kerne nutzen zu können, benötigen Sie sowohl (a) Unterstützung durch das Betriebssystem als auch (b) eine Anwendungsarbeitslast, die mehrere Kerne nutzen kann. Unterstützung durch das Betriebssystem ist für alle modernen Betriebssysteme selbstverständlich, es kommt also darauf an, ob Ihre Anwendungsarbeitslast mehrere Kerne nutzen kann.

Wenn Sie mehrere Anwendungen gleichzeitig ausführen, können Sie von mehreren Kernen profitieren. Wenn mehrere Programme gleichzeitig ausgeführt werden sollen, plant das Betriebssystem sie auf mehreren Kernen ein.

Wenn Sie jeweils nur eine Anwendung verwenden, hängt es von der Anwendung ab, ob mehrere Kerne hilfreich sind. Insbesondere hängt es davon ab, ob die Anwendung als Multithread- oder Singlethread-Anwendung geschrieben ist. Eine Singlethread-Anwendung führt jeweils nur eine Sache aus und kann daher nur einen einzigen Kern verwenden. Eine Multithread-Anwendung erstellt mehrere Threads, um mehrere Dinge gleichzeitig auszuführen. Dadurch kann das Betriebssystem jeden Thread auf einem anderen Kern planen und möglicherweise die Geschwindigkeit eines Multicore-Prozessors erhöhen.

Anwendungen müssen speziell für die Verwendung mehrerer Threads und die Nutzung mehrerer Kerne entwickelt und geschrieben werden. Viele gängige Anwendungen profitieren nicht von mehreren Kernen, manche jedoch schon. Photoshop beispielsweise ist so geschrieben, dass es eine rechenintensive Aufgabe in kleinere Teile aufteilt und diese Teile auf mehrere Threads verteilt, damit sie auf mehreren Kernen ausgeführt werden können. Dies erforderte eine spezielle Programmierung durch die Photoshop-Entwickler und einen hohen zusätzlichen Aufwand für die Entwickler. Daher haben sich viele oder die meisten Anwendungen nicht die Mühe gemacht, diesen Programmierstil zu verwenden, und profitieren nicht viel von einem Rechner mit mehreren Kernen, manche jedoch schon.

Da Sie dazu neigen, viele unabhängige Programme gleichzeitig auszuführen, werden Sie von einem Mehrkernprozessor vermutlich zumindest einige Vorteile erwarten.

verwandte Informationen