Spinlock

Spinlock

En programmation informatique, le spinlock ou verrou tournant est un mécanisme simple de synchronisation basé sur l'attente active.

Algorithme

 TestAndSet(*s, v) {
   s<-v
   return prev(s)
 } //Instruction Atomique (ie non interruptible)
 
 init(s) {
   TestAndSet(&s,1)
 }
 
 wait(s) {
   while(TestAndSet(&s,1))
   {
     //Attente active
   }
 }
 
 signal(s) {
   TestAndSet(&s,0)
 }

Quand utiliser le spinlock ?

L'attente active rend le spinlock gourmand en ressources. C'est pourquoi il ne faut l'utiliser que dans une des situations suivantes :

  • lorsque le changement de contexte est impossible (par exemple en l'absence de système d'exploitation) ;
  • lorsque le changement de contexte est plus long que le temps d'attente moyen (contrainte temps réel souple) ou maximum (contrainte temps réel dur). Ce n'est en général le cas que dans les systèmes à multiprocesseurs. En effet, le verrou tournant est souvent utilisé pour synchroniser le noyau Linux sur des systèmes SMP (il est même souvent couplé avec une autre méthode de synchronisation).

Variantes

Il existe des variantes du verrou tournant visant à le rendre plus efficace :

  • Le verrou tournant lecture/écriture qui est formé de 2 verrous : un pour la lecture et l'autre pour l'écriture. L'amélioration vient du fait que le verrou de lecture bloque seulement les accès en écriture et non les tentatives de lectures.
  • Le verrou séquentiel.

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Spinlock de Wikipédia en français (auteurs)

Игры ⚽ Нужно решить контрольную?

Regardez d'autres dictionnaires:

  • Spinlock — In software engineering, a spinlock is a lock where the thread simply waits in a loop ( spins ) repeatedly checking until the lock becomes available. As the thread remains active but isn t performing a useful task, the use of such a lock is a… …   Wikipedia

  • Spinlock — Ein Spinlock (Spin Lock) ist ein Mechanismus zur Prozesssynchronisation. Es ist eine Sperre (Lock) zum Schutz einer gemeinsam genutzten Ressource durch konkurrierende Prozesse bzw. Threads (siehe Kritischer Abschnitt). Die Sperre wird umgesetzt… …   Deutsch Wikipedia

  • Spinlock — Для улучшения этой статьи желательно?: Викифицировать статью. Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное …   Википедия

  • Spinlock — En ingeniería de software, un spinlock es cuando un hilo (o thread) simplemente espera en un bucle ( spins ) repetidamente hasta que se cumple una condición, como por ejemplo la llegada de un paquete por la red o un semáforo que se haga… …   Wikipedia Español

  • Spinlock — En ingeniería de software, un spinlock es cuando un hilo (o thread) simplemente espera en un bucle ( spins ) repetidamente hasta que se cumple una condición, como por ejemplo la llegada de un paquete por la red o un semáforo que se haga… …   Enciclopedia Universal

  • Busy waiting — In software engineering, busy waiting or spinning is a technique in which a process repeatedly checks to see if a condition is true, such as waiting for keyboard input or waiting for a lock to become available. It can also be used to delay… …   Wikipedia

  • Gegenseitiger Ausschluss — Der Begriff Wechselseitiger Ausschluss bzw. Mutex (Abk. für engl. mutual exclusion, auf deutsch etwa wechselseitiger Ausschluss) bezeichnet eine Gruppe von Verfahren, mit denen das Problem des kritischen Abschnitts gelöst wird. Mutex Verfahren… …   Deutsch Wikipedia

  • Wechselseitiger Ausschluss — Der Begriff Wechselseitiger Ausschluss bzw. Mutex (Abk. für engl. mutual exclusion, auf deutsch etwa wechselseitiger Ausschluss) bezeichnet eine Gruppe von Verfahren, mit denen das Problem des kritischen Abschnitts gelöst wird. Mutex Verfahren… …   Deutsch Wikipedia

  • Lock convoy — In computer science, a lock convoy is a performance problem that can occur when using locks for concurrency control in a multithreaded application. A lock convoy occurs when multiple threads of equal priority contend repeatedly for the same lock …   Wikipedia

  • Test-and-set — In computer science, the test and set instruction is an instruction used to both test and (conditionally) write to a memory location as part of a single atomic (i.e. non interruptible) operation. This means setting a value, but first performing… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”