Multicœur et synchronisation

Quelle est l’utilisation la plus appropriée d’un sémaphore à compteur ?

  1. AToujours doubler la valeur d’une variable
  2. BRegrouper toute l’exécution du programme sur un seul thread
  3. CPermettre à 4 threads au plus d’utiliser simultanément une ressource dont le nombre d’utilisations simultanées est limité (par exemple 4 connexions au plus)
Afficher la réponse et l'explication

Réponse : C. Permettre à 4 threads au plus d’utiliser simultanément une ressource dont le nombre d’utilisations simultanées est limité (par exemple 4 connexions au plus)

Un sémaphore possède un compteur représentant le nombre restant ; on le décrémente avant utilisation (en attendant qu’il augmente s’il vaut 0) et on l’incrémente après utilisation. Avec une valeur initiale de 4, jusqu’à 4 threads peuvent utiliser la ressource simultanément. Avec une valeur initiale de 1, il sert à l’exclusion mutuelle comme un verrou. Les threads en attente sont généralement endormis et réveillés par l’OS.

S'entraîner sur ce thème Retour au thème

Autres questions sur Multicœur et synchronisation

  1. Quelle est la différence entre cohérence de cache et modèle de cohérence mémoire ?
  2. Quel est le principe de la mémoire transactionnelle matérielle ?
  3. Lors d’une attente « jusqu’à ce que la file ne soit plus vide » avec une variable de condition, pourquoi revérifier la condition après le réveil avec une instruction while plutôt qu’avec une instruction if ?
  4. Deux cœurs possèdent chacun dans leur cache une copie de la variable x. Après une écriture de x par le cœur 0, quel problème peut survenir lors de la lecture de x par le cœur 1 en l’absence de mécanisme de cohérence de cache ?
  5. Quelle combinaison correspond aux quatre états du protocole de cohérence de cache MESI ?

Comparatifs sur ce thème