Wie funktioniert Multithreading auf Multicore-CPU in Linux ..?

626
pranav

In einem Interview bekam ich eine Frage: Wenn ich eine Dual-Core-CPU habe, kann ich jeweils einen Thread auf beiden CPUs ausführen? Wenn möglich, wie es funktioniert.?

-1
https://en.wikipedia.org/wiki/Multi-core_processor Mokubai vor 6 Jahren 0

1 Antwort auf die Frage

1
Binarus

Ein Thread ist in Bezug auf die Prozessverwaltung eine "atomare" Einheit. Daher können Sie keinen Thread auf mehreren Kernen ausführen, da mehr als ein Kern gleichzeitig an dem Thread arbeitet .

Natürlich kann ein Programm (Prozess) zwei oder mehr Threads umfassen, die genau dasselbe tun, oder sogar einen Thread einschließlich aller aktuellen Zustände und Speicher duplizieren und die Kopie als eigenen neuen Thread ausführen. Mehrere Threads (unabhängig davon, ob sie genau dasselbe tun oder nicht, auf identische Speicherinhalte zugreifen und denselben Status haben) können (wenn möglich) auf verschiedenen Kernen laufen.

Dies ist nicht mit der Verlagerung von Threads zu verwechseln . Das O / S kann aus bestimmten Gründen (z. B. Energiemanagement) jederzeit einen bestimmten Thread aus dem Kern heraus verschieben, von dem aus es derzeit zu einem anderen Kern läuft. In diesem Sinne verwendet ein Thread wahrscheinlich mehrere Kerne, jedoch verwendet er nicht mehr als einen Kern zur gleichen Zeit . Stattdessen "springt" es von einem Kern zum anderen, wobei zu einem bestimmten Zeitpunkt ein Kern verwendet wird.

(Um es einfach zu halten, habe ich Hyperthreading in der obigen Erklärung nicht von echten Kernen unterschieden; ich denke, das ist in diesem Zusammenhang in Ordnung.)