Generell formulierst du das jetzt nicht ganz richtig, du sprichst von virtuellen und echten Kernen, es gibt keine virtuellen Kerne. Es gibt 4 Kerne, die sich dem Betriebssystem gegenüber als 8 Kerne ausgeben. Es findet Kommunikation statt, sodass das Betriebssystem Bescheid weiß, welche 4 Kerne die physischen sind und welche nicht.
Es geht auch nicht um Prozesse und Threads, denn da sprechen wir von Software. Es geht um Threads in der Hardware, das Feature um das es geht heißt ja auch Hyperthreading. Mit Prozess vs. Thread aus der Softwarewelt hat das nichts zu tun.
Sollte ein Prozess nur aus einem Thread bestehen, steht hinter dem Prozess in der Aktivitätsanzeige natürlich 200%, wenn dieser Prozess dann einen echten bzw 2 virtuelle Kerne komplett auslastet.
Das ist nicht das gleiche und daher stimmt das nicht. Ich erkläre es unten.
4 Threads, die jeweils einen echten Kern komplett auslasten und die dazugehörigen Prozesse addieren sich dann zu 800% und die Gesamtanzeige unten zeigt 100% und nicht 50%.
Du bringst hier wieder die Unterscheidung Thread vs. Prozess aus der Softwarewelt ins Spiel, um die es hier nicht geht. Es ist irrelevant, ob jetzt gerade ein Thread auf der CPU läuft oder ein Prozess. Es können auf einer Quadcore-CPU mit HT gleichzeitig 8 unterschiedliche Berechnungen ausgeführt werden, worum es sich bei denen genau handelt, ist irrelevant.
Die CPU unterscheidet nicht zwischen Prozess und Thread, die CPU kann 8 Berechnungen ausführen und diese Berechnungen werden da Threads genannt, obwohl sie nichts mit den vorher genannten Threads zu tun haben.
Führt die CPU also vier Berechnungen gleichzeitig durch, ist die Auslastung bei 400% bzw. 50% ingesamt. Da das Betriebssystem weiß, welche Kerne die physischen sind, lastet es jetzt die 4 physischen Kerne aus, die CPU ist damit voll ausgelastet.
Führt die CPU hingegen mehr als vier Berechnungen gleichzeitig durch, also 5-8, so werden jetzt die vier verbleibenden logischen Kerne dazugenommen, sodass bis zu 8 Berechnungen gleichzeitig laufen, aber diese 8 Berechnungen laufen jetzt nicht ganz so schnell ab wie die 4 vorher, da ja jetzt auf 8 Berechnungen nur 4 tatsächliche Rechenkerne kommen. Es hat aber einen kleinen Performancevorteil, daher gibt es das Hyperthreading ja auch. Einmal 8 Berechnungen wird also schneller fertig als 2x4 Berechnungen hintereinander.
Bei 8 gleichzeitigen Berechnungen ist die Last nun bei 800% bzw. 100% für die Gesamtauslastung und Hyperthreading ist in Verwendung. Die CPU ist hier also genauso wie bei 400% bzw. 50% voll ausgelastet, nur werden CPU-Resourcen zwischen jeweils 2 der 8 Berechnungen geteilt, sodass die Berechnungen etwas effizienter ablaufen, wie vorher gesagt.
Ich bin auf den Begriff Berechnung umgestiegen, um von der Verwirrung mit dem Begriff Threads wegzukommen.