84 | | dans n’importe quel cluster M. Ce thread T’ sera attaché à l’ordonnanceur de l’un des coeurs du cluster M. Le choix de ce coeur |
85 | | est effectué par l’instance du noyau du cluster M. Le cluster propriétaire du processus P peut être un troisième cluster Z. |
| 84 | dans n’importe quel cluster M. Ce thread T’ sera attaché à l’ordonnanceur de l’un des coeurs du cluster M. Le cluster propriétaire du processus P peut être un troisième cluster Z. |
| 85 | * Le choix du cluster cible M peut être imposé par l'utilisateur (grâce au champs CXY de la structure pthread_attr_t passée en argument). Si le cluster cible n'est pas spécifié, le choix est effectué par le kernel du cluster client grâce à la DQDT. |
| 86 | * Le choix du coeur cible dans le cluster cible peut être imposé par l'utilisateur (grâce au champs CORE_LID de la structure pthread_attr_t passée en argument). Si le coeur cible n'est pas spécifié, le choix est effectué par le kernel du cluster cible, grâce |
| 87 | à la DQDT. |
87 | | Seul le noyau du cluster propriétaire du processus P peut créer ou détruire un thread appartenant au processus P (i.e. modifier la Liste des threads TRDL appartenant au processus P) |
88 | | Ceci simplifie les problèmes de concurrence, et permet de simplifier les copies des descripteurs de processus dans les clusters autres que le propriétaire de P. |
89 | | La copie de la liste des threads TRDL(P,M) dans un cluster M autre que le cluster propriétaire de P ne contient que les descripteurs de thread qui s’exécutent localement sur un coeur de M, |
90 | | alors que la TRDL(P,Z) du cluster Z propriétaire de P doit contenir tous les threads de P. |
| 89 | Seul le noyau du cluster propriétaire du processus P peut créer ou détruire un thread appartenant au processus P (i.e. modifier la Liste des threads TRDL appartenant au processus P). Ceci simplifie les problèmes de concurrence, et permet de simplifier les copies des descripteurs de processus dans les clusters autres que le propriétaire de P. |
| 90 | La copie de la liste des threads TH_TBL(P,M) dans un cluster M autre que le cluster Z propriétaire de P ne contient que les descripteurs de thread qui s’exécutent localement sur un coeur de M, alors que la TH_TBL(P,Z) du cluster Z propriétaire de P doit contenir tous les threads de P. |
94 | | Le noyau du cluster K envoie une THREAD_CREATE_RPC au cluster Z propriétaire. Les arguments sont le PID du processus, le cluster cible M, la fonction à exécuter et ses arguments. |
95 | | Le noyau du cluster Z propriétaire de P, ne répond pas immédiatement au cluster demandeur K, mais envoie au cluster cible M une THREAD_CREATE_RPC, avec les mêmes arguments. |
| 94 | Le noyau du cluster K connait l'identifiant du cluster Z propriétaire de P, puisque cet identifiant est contenu dans le PID. le noyau de K envoie une RPC_THREAD_USER_CREATE au cluster Z propriétaire. L'argument est une structure pthread_attr_t contenant le PID, le TRDID, la fonction à exécuter et ses arguments, et optionnellement le cluster cible et le core cible. |
| 95 | Le noyau du cluster Z propriétaire de P, ne répond pas immédiatement au cluster demandeur K, mais envoie au cluster cible M une RPC_THREAD_USER_CREATE, avec les mêmes arguments. |