Multicœur et synchronisation

Quelle description de la section critique est correcte ?

  1. APartie du programme qui manipule des données partagées et ne doit être exécutée que par un seul thread à la fois
  2. BPartie du programme dont le temps d’exécution est le plus long
  3. CPartie exécutée uniquement en cas d’erreur
Afficher la réponse et l'explication

Réponse : A. Partie du programme qui manipule des données partagées et ne doit être exécutée que par un seul thread à la fois

Si plusieurs threads exécutent simultanément une partie qui lit et modifie une variable partagée, une course aux données survient. Une telle partie, qui ne doit être exécutée que par un seul thread à la fois, s’appelle section critique ; on la protège en prenant un verrou avant d’y entrer et en le libérant à la sortie. Plus la section critique est longue, plus les autres threads attendent ; la règle est de la garder aussi courte que possible.

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

Autres questions sur Multicœur et synchronisation

  1. Quelle description de la synchronisation par barrière utilisée dans les programmes parallèles est correcte ?
  2. Si 64 cœurs mettent à jour en continu et simultanément un compteur partagé unique par instruction atomique, l’ajout de cœurs n’accélère pas le traitement. Quelle en est la raison principale ?
  3. Quelle description d’un système NUMA (accès mémoire non uniforme) est correcte ?
  4. Avec la politique de premier contact (first touch) couramment utilisée sur les systèmes NUMA sous Linux (la page est placée dans la mémoire du nœud où s’exécute le thread qui y écrit en premier), à quoi faut-il prendre garde ?
  5. Parmi les causes suivantes expliquant que les performances d’un programme parallèle progressent moins que prévu avec l’ajout de cœurs, laquelle ne s’applique pas ?

Comparatifs sur ce thème