Ordnet das Betriebssystem jeden Prozess einem separaten Kern zu?


15

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

Auf Betriebssystemebene scheint es jedoch offensichtlich, dass das Betriebssystem Prozesse auf die verschiedenen Kerne aufteilt. Wäre das nicht ein Argument für mehr Kerne? Hilft das nicht in vielen Situationen viel? Sie haben ein paar CPU-intensive Aufgaben zu erledigen - diese Prozesse überfrachten möglicherweise jeweils 100% ihrer Kerne, aber ich kann immer noch im Internet surfen und SuperUser-Fragen zu meinem letzten Kern stellen ... richtig?


Ein grundlegender Ablauf dieser Frage und der Antworten ist die Annahme, dass ein einzelner Prozess ein Thread ist. Dies ist in vielen Fällen nicht der Fall. Und selbst wenn der Prozess ein einzelner Thread ist, fügen mehrere Systembibliotheken / DLLs ihre eigenen Threads hinzu.
Harrymc

Antworten:


12

Das Betriebssystem kann einen einzelnen Single-Thread-Prozess nicht auf mehrere Kerne aufteilen (obwohl es möglicherweise ändert, auf welchem ​​Kern eine Anwendung ausgeführt wird, aber das ist eine andere Frage), es kann jedoch mehrere Prozesse ausführen, von denen jeder auf seinem eigenen Kern ausgeführt wird. Ja, wenn Sie mehrere prozessorintensive Anwendungen im Hintergrund ausführen, ist es wahrscheinlich, dass Sie immer noch einen Ersatzkern haben, der nur wenig oder gar nichts tut, was Sie zum Ausführen anderer Anwendungen verwenden können.


Das Schlüsselwort lautet: Wenn Sie mehrere prozessorintensive Anwendungen haben, ist dies für die meisten Benutzer eine ungewöhnliche Situation.
Gilles 'SO- hör auf böse zu sein'

Danke für die Antwort. Ja, der letztere Fall ist der, den ich zu beschreiben versuche.
Doug T.

3

Der Grund dafür ist, dass das Betriebssystem nicht bestimmen kann, welche Teile des Prozesses parallel ausgeführt werden dürfen und welche nicht. Wenn ein Programm nicht für die Ausführung auf parallelen Kernen ausgelegt ist, können Routinen in der Anwendung vorhanden sein, die so ausgelegt sind, dass sie gleichzeitig nacheinander ausgeführt werden. Dies kann zu allen möglichen Problemen führen (z. B. wenn zwei Routinen denselben Speicherblock verwenden, aber nicht zur selben Zeit ausgeführt werden sollen).

Das Betriebssystem kann für mehrere Prozesse mehrere Kerne verwenden, da dies sowieso der Fall ist. Die Verteilung einer Einzelkernanwendung auf mehrere Kerne führt jedoch zu unerwartetem Verhalten.


Vielen Dank. Ich verstehe das. Meine Frage ist möglicherweise schlecht formuliert. Ich wollte mehr über das OS fragen, das Prozesse auf unterschiedliche Kerne setzt. Nicht irgendwie magisch machen die Single-Threaded-Prozess-Span-Kerne.
Doug T.

3

Wenn es darauf ankommt, spielt es keine Rolle, ob ein Prozessor zu 1% oder zu 95% ausgelastet ist (solange er zu 95% stabil ist und keine Spitzenwerte aufweist), werden die Programme so lange mit der gleichen Geschwindigkeit ausgeführt wie es trifft nicht 100%. Unbenutzte CPU-Zyklen werden einfach verschwendet.

Aus diesem Grund verfügt Windows 7 (auf kompatiblen Prozessoren) über eine Technologie, die als "Core-Parken" bezeichnet wird und nicht verwendete Kerne auf Ihrem Computer deaktiviert, um Strom zu sparen.

Single-Thread-Anwendungen werden automatisch auf alternative Kerne übertragen. Ich bin mir nicht sicher, welche Technologie dahinter steckt, aber ich weiß, dass sie recht gut funktioniert.


2

Ihre anfänglichen Gefühle sind richtig - es gibt eine negative Neigung zu mehreren Kernen, und es ist nicht wirklich alles, was verdient ist.

Früher, als die meisten Benutzer ihren Desktop-PC nur für einfache Textverarbeitung verwendeten, gab es möglicherweise einen Streit. Heutzutage gibt es jedoch Browser mit mehreren Registerkarten, von denen jede ihren eigenen Prozess ausführt (verchromt, dh für Registerkarten wird eine Trennung auf Prozessebene vorgenommen), sowie Videodecoder in Webseiten und zusätzliche Aufgaben, die sich leicht wie im laufenden Betrieb auslagern lassen Beim Rendern von Effekten, auch bekannt als CSS3, kann sogar der Browser alleine einen Grund für viel mehr RAM und ein paar Kerne rechtfertigen.

Hinzu kommt, dass einige Benutzer möglicherweise auch auf diesem PC spielen oder Tools wie Garageband, Imovie, Handbremse und mehrere Kerne verwenden. Dies kann ein großer Vorteil sein.

Es ist nicht richtig anzunehmen, dass Sie einen Kern maximal ausnutzen müssen (dh 100% CPU-Auslastung auf einem einzelnen Kern), damit ein anderer Kern nützlich ist. Weil wir hier von Parallelität sprechen. Der Taskwechsel innerhalb einer CPU führt normalerweise eine Reihe von Vorgängen aus, bevor der Stack auf einen anderen Prozess umgestellt wird. Nicht alle dieser Tasks sind CPU-gebunden, sodass Sie keinen CPU-Spitzenwert sehen, obwohl der Kern gesperrt ist.

Grundsätzlich haben Sie recht, aber wie viele Kerne sind am effizientesten? 2? 4? 12? Dies würde höchstwahrscheinlich von den Benutzergewohnheiten abhängen ... Ich neige dazu, 2-4 für die meisten Benutzer, aber ich rate nur.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.