Spinlock

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Spinlock je v operačních systémech druh zámku, na nějž je třeba aktivně čekat - čekající proces tedy při čekání na spinlock spotřebovává systémové prostředky.

Spinlocky se zpravidla používají pouze v operačním systému, aplikacím jsou poskytována složitější synchronizační primitiva, které čekající aplikace uspí a zařadí do fronty, takže v době, kdy jsou zablokovány, může běžet něco jiného. Na druhou stranu, tyto složitější struktury vyžadují ochranu svých dat proti vícenásobnému přístupu, a k tomu lze použít právě jednodušší a rychlejší spinlocky.

Příklad implementace spinlocku v assembleru architektury x86: zacatek: mov eax, 1 ; přesuneme jedničku do registru xchg eax, [ $zamek ] ; jednou instrukcí atomicky prohodíme obsah registru ; s proměnnou držící zámek. nyní je v proměnné určitě jednička test eax, eax ; pokud je v registru nula, zámek byl před prohozením ; odemčený, tudíž jsme jej získali a můžeme pokračovat jnz zacatek ; … jinak to zkusíme znovu od začátku

; ( kritická sekce )

mov eax, 0 ; konec, vrátíme do proměnné nulu a tím zámek odemkneme xchg eax, [ $zamek ] ; na toto by měla fungovat i prostá instrukce mov, ; ale na některých procesorech se pokazí

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top