Kerne und Fäden Wie funktioniert das genau?

1090

Ich bin verwirrt ... wenn eine CPU über 2 logische Kerne verfügt, kann sie zwei Programme gleichzeitig ausführen, und zwar 100% gleichzeitig, ja? Ansonsten müssen 2 Programme auf einer CPU zu 100% in Zeit aufgeteilt sein (kann nicht unabhängig ausgeführt werden, da derselbe Single-Core zwischen Kontexten und solchen wechseln muss). Wenn dies der Fall ist, wie werden Programme zwischen Cores und Threads gemeinsam genutzt?

Angenommen, ich habe 100 Prozesse auf zwei Kernen ausgeführt. Wird das Betriebssystem versuchen, 50 für jeden Lastkern aufzuteilen, um die Lastverteilung zu gewährleisten? Werden sie zufällig verstreut sein?

Angenommen, ich starte mspaint.exe auf einem Quad-Core-Intel-Chip ... von wo aus wird es ausgeführt (Core 1, 2, 3, 4?), Und wird es dort bis zum Schließen weiter ausgeführt? Welche logische CPU macht im Grunde was mit welchem ​​Programm, und werden die Kerne verschiedene Ausführungspunkte aus dem RAM parallel verarbeiten, wenn das Programm ausgeführt wird?

Was wäre, wenn Sie 200 Threads mit 100 Prozessen auf 4 Kernen verwenden würden ... bleibt jeder Thread zwischen einem Kontext auf dem lastausgeglichenen Kern?

Letzte Frage : Ist es wirklich möglich, einen bestimmten Kern oder ein Programm für Multi-Cores direkt zu wählen, ohne dass ein transparenter Dämon oder das Betriebssystem dies zufällig für Sie tun muss? Wenn ja, wenn alle Leute sagen, "nur Threads verwenden"? Werden Multi-Threads Kernen zugeordnet? Wenn ja, wie kann ein Thread ohne Betriebssystemeingriff auf einen Core zugeschnitten werden, wenn Threads auf einem Single-Core nicht gleichzeitig funktionieren?

0
Sie suchen wahrscheinlich nach zu viel Sicherheit. Es gibt viele verschiedene Begriffe, die herumfliegen, und oft sind die Definitionen etwas locker. Und in Bezug auf den Prozessor, auf dem eine einzelne App läuft, wird es immer derselbe sein und wird alles "ausgewogen" sein (was auch immer das bedeutet), das hängt stark von Betriebssystem und Konfiguration ab. Daniel R Hicks vor 10 Jahren 2
(Und die Verbreitung der Threads eines Prozesses auf mehrere CPUs führt häufig zu Performanceeinbußen aufgrund der mit Shared Memory einhergehenden Leistungsengpässe.) Daniel R Hicks vor 10 Jahren 1

1 Antwort auf die Frage

5
Vinicius Pinto

Wie ein anderer Benutzer kommentierte, ist er meistens vom Betriebssystem abhängig.

Wenn eine CPU über 2 logische Kerne verfügt, können zwei Programme gleichzeitig ausgeführt werden. Ja, ja?

Gleichzeitig ja, parallel nein. Siehe: https://softwareengineering.stackexchange.com/questions/190719/the-difference- zwischen-koncurrent-und-parallel-execution

Angenommen, ich habe 100 Prozesse auf zwei Kernen ausgeführt. Wird das Betriebssystem versuchen, 50 für jeden Lastkern aufzuteilen, um die Lastverteilung zu gewährleisten? Werden sie zufällig verstreut sein?

Jedes Betriebssystem verfügt über einen eigenen Zeitplanungsalgorithmus.

Angenommen, ich starte mspaint.exe auf einem Quad-Core-Intel-Chip ... von wo aus wird es ausgeführt (Core 1, 2, 3, 4?), Und wird es dort bis zum Schließen weiter ausgeführt?

Wir wissen nicht, wo es ausgeführt wird, und es wird höchstwahrscheinlich nicht von Anfang bis Ende auf demselben Kern ausgeführt. Auch hier hängt der OS-Scheduler ab.

Ist es wirklich möglich, einen bestimmten Kern oder ein Programm für Multi-Cores direkt zu wählen, ohne dass ein transparenter Daemon oder das Betriebssystem dies zufällig für Sie tun muss?

Anscheinend ja: https://stackoverflow.com/questions/663958/how-to-control-which-core-a-process-runs-on

Wenn ja, wenn alle Leute sagen, "nur Threads verwenden"? Werden Multi-Threads Kernen zugeordnet? Wenn ja, wie kann ein Thread ohne Betriebssystemeingriff auf einen Core zugeschnitten werden, wenn Threads auf einem Single-Core nicht gleichzeitig funktionieren?

Ich habe die Frage hier nicht verstanden, aber die Grundidee bei Threads ist, dass Sie sie erstellen und das Betriebssystem mit seinem Scheduling-Algorithmus ausgeführt wird. Sie müssen nicht kontrollieren, in welchem ​​logischen oder physischen Kern es ausgeführt wird (es kann Fälle geben.) Vielleicht möchten Sie das tun, ich weiß nicht warum.