Ordnet das Betriebssystem jedem Prozess einen separaten Kern zu?

Ordnet das Betriebssystem jedem Prozess einen separaten Kern zu?

Ok, ich kenne das klassische Argument, Quad-Cores zu vermeiden. Auf Anwendungsebene wurden die meisten Anwendungen nicht für mehrere Kerne geschrieben. Die meisten Desktop-Programme benötigen nicht einmal Parallelisierung.

Auf Betriebssystemebene scheint es jedoch offensichtlich, dass das Betriebssystem die Prozesse auf die verschiedenen Kerne aufteilen würde. Wäre das nicht an sich schon ein Argument für mehr Kerne? Hilft das nicht in vielen Situationen sehr? Sie können einige CPU-intensive Aufgaben ausführen – diese Prozesse beanspruchen möglicherweise jeweils 100 % ihrer Kerne, aber ich kann auf meinem letzten Kern immer noch im Internet surfen und Fragen im SuperUser stellen … richtig?

Antwort1

Das Betriebssystem kann einen einzelnen Single-Thread-Prozess nicht auf mehrere Kerne aufteilen (es kann jedoch ändern, auf welchem ​​Kern eine Anwendung ausgeführt wird, aber das ist eine andere Frage), es kann jedoch mehrere Prozesse ausführen, jeder auf seinem eigenen Kern. Wenn Sie also mehrere prozessorintensive Anwendungen im Hintergrund laufen haben, ist es wahrscheinlich, dass Sie immer noch einen freien Kern haben, der wenig oder gar nichts tut und den Sie zum Ausführen anderer Anwendungen verwenden können.

Antwort2

Um die Antwort von @heavyd zu ergänzen: Der Grund dafür ist, dass das Betriebssystem nicht bestimmen kann, welche Teile des Prozesses parallel ausgeführt werden können und welche nicht. Wenn ein Programm nicht für die Ausführung auf parallelen Kernen ausgelegt ist, können in der Anwendung Routinen vorhanden sein, die für die sequentielle Ausführung ausgelegt sind und gleichzeitig ausgeführt werden. Dies kann alle möglichen Probleme verursachen (z. B. wenn zwei Routinen denselben Speicherblock verwenden, aber nicht gleichzeitig ausgeführt werden sollen).

Das Betriebssystem kann mehrere Kerne für mehrere Prozesse verwenden, da es dies ohnehin tut, aber die Verteilung einer Single-Core-Anwendung auf mehrere Kerne führt zu allerlei unerwartetem Verhalten.

Antwort3

Letztendlich spielt es keine Rolle, ob ein Prozessor zu 1 % oder 95 % ausgelastet ist (solange er stabil bei 95 % ist und keine Spitzen erreicht), Programme werden mit der gleichen Geschwindigkeit ausgeführt, solange er nicht 100 % erreicht. Ungenutzte CPU-Zyklen werden einfach verschwendet.

Aus diesem Grund verfügt Windows 7 (auf kompatiblen Prozessoren) über eine Technologie namens „Core Parking“, die im Wesentlichen ungenutzte Kerne auf Ihrem Computer deaktiviert, um Strom zu sparen.

Single-Thread-Anwendungen werden automatisch auf alternative Kerne umgeleitet. Ich bin mir über die Technologie dahinter nicht im Klaren, weiß aber, dass sie recht gut funktioniert.

Antwort4

Ihre anfänglichen Gefühle sind richtig – es gibt eine negative Einstellung gegenüber mehreren Kernen, und diese ist nicht wirklich verdient.

Damals, als die meisten Benutzer ihren Desktop-PC nur für einfache Textverarbeitung nutzten, gab es vielleicht ein Argument. Aber heutzutage, mit Dingen wie Browsern mit mehreren Tabs, jeder in seinem eigenen Prozess (Chrome und IE trennen Tabs auf Prozessebene), plus Dingen wie Videodecodern innerhalb von Webseiten und zusätzlichen Aufgaben, die leicht ausgelagert werden könnten, wie das schnelle Rendern von Effekten, auch bekannt als CSS3, kann sogar der Browser allein einen Grund für viel mehr RAM und ein paar Kerne rechtfertigen.

Hinzu kommt, dass einige Benutzer auf diesem PC möglicherweise auch Spiele spielen oder Tools wie Garageband, iMovie oder Handbrake verwenden. Mehrere Kerne können also einen großen Vorteil darstellen.

Es ist nicht richtig anzunehmen, dass Sie einen Kern maximal auslasten müssen (d. h. 100 % CPU-Auslastung auf einem einzelnen Kern), damit ein anderer Kern nützlich ist. Denn wir sprechen hier von Parallelität. Beim Task-Switching innerhalb einer CPU wird normalerweise eine Reihe von Vorgängen ausgeführt, bevor der Stapel auf einen anderen Prozess übertragen wird. Nicht alle dieser Tasks sind CPU-gebunden, sodass Sie keine CPU-Spitzen sehen, selbst wenn der Kern gesperrt ist.

Im Grunde haben Sie Recht, aber welche Anzahl Kerne ist am effizientesten? 2? 4? 12? Das hängt höchstwahrscheinlich von den Gewohnheiten des Benutzers ab. Für die meisten Benutzer neige ich zu 2-4, aber das ist nur eine Vermutung.

verwandte Informationen