2016-08-03 1 views
3

Un seul processus peut-il exécuter des threads différents sur des cœurs différents?Un seul processus peut-il être exécuté sur plusieurs cœurs?

(je pense qu'ils peuvent)

Dans ce cas, les différents noyaux partagent le même espace d'adressage mais avec des caches différentes? Est-ce que cela signifie que les caches seront redondantes?

Merci!

+1

Un seul processus peut contenir plusieurs threads, oui. – Phoenix

+0

Peuvent-ils être programmés pour fonctionner sur n'importe quel noyau? Quand un processus est chargé sur une CPU, je comprends que le contenu des registres est changé; comment cela fonctionne avec plusieurs processeurs? –

+2

Vérifiez http://programmers.stackexchange.com/questions/181157/how-to-program-thread-allocation-on-multicore-processors – Rupsingh

Répondre

4

Oui, un seul processus peut exécuter plusieurs threads sur différents cœurs.

La mise en mémoire cache est spécifique au matériel. De nombreux processeurs Intel modernes ont trois couches de mise en cache, où le cache de dernier niveau est partagé entre les cœurs. Cela ne signifie pas que les caches non partagés sont redondants, mais cela a des implications pour les performances multicœurs. En particulier, si un core met à jour une valeur dans l'espace adresse qui réside actuellement dans le cache privé d'un autre core, un protocole de cohérence de cache doit être exécuté pour garantir qu'un autre core ne peut plus lire une valeur périmée.

0

Un seul processus peut exécuter des threads simultanément sur plusieurs processeurs SI le système sous-jacent planifie les threads (et non les processus) pour l'exécution (les threads du noyau). C'est de cette manière que les threads sont implémentés sur la plupart des systèmes de nos jours (par exemple, Windoze, Linux).

Toutefois, certains systèmes planifient encore des processus d'exécution. Sur de tels systèmes, les threads sont planifiés par une bibliothèque (alias threads utilisateur). En d'autres termes, le processus planifie ses propres threads pour l'exécution. Sur ces systèmes, les threads du processus s'exécutent sur le même processeur.