Multicœur et synchronisation

Quelle description du verrou à attente active (spinlock) est correcte ?

  1. AVerrou qui endort le thread jusqu’à la libération et le fait réveiller par l’OS
  2. BVerrou qui attend la libération en examinant en boucle la variable de verrou
  3. CMécanisme qui protège les données en faisant tourner un disque
Afficher la réponse et l'explication

Réponse : B. Verrou qui attend la libération en examinant en boucle la variable de verrou

Le spinlock tente de prendre le verrou avec une instruction atomique et, en cas d’échec, réessaie immédiatement, de façon répétée. Sans le coût d’appeler l’OS pour s’endormir puis se réveiller, il est rapide lorsque le verrou n’est détenu que très brièvement. Il est très utilisé dans le noyau de l’OS et pour l’exclusion mutuelle avec les gestionnaires d’interruption. En revanche, il a l’inconvénient de continuer à consommer du CPU pendant l’attente.

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

Autres questions sur Multicœur et synchronisation

  1. Dans quelle situation le spinlock est-il le moins adapté ?
  2. Dans un spinlock, pourquoi attendre la libération par des lectures ordinaires et n’utiliser l’instruction atomique que lorsque le verrou semble libre (test-and-test-and-set), plutôt que de tenter directement la modification par instruction atomique ?
  3. Quelle comparaison entre mutex (verrou à attente en sommeil) et spinlock est correcte ?
  4. Quel est un exemple d’interblocage (deadlock) ?
  5. Dans un programme utilisant plusieurs verrous, quelle est la méthode la plus courante pour éviter l’interblocage ?

Comparatifs sur ce thème