[pso] [T1]Spinlock-uri vs Semafoare
Razvan Deaconescu
razvand at cs.pub.ro
Fri Mar 14 14:18:45 EET 2008
On Fri, 2008-03-14 at 13:29 +0200, Diana Elena Kelerman wrote:
> Salut,
>
> De ce este indicat sa folosim spinlock-uri si nu semafoare? E vreo
> problema daca preemptivitatea kernelului ramane activa intre un down
> si un up pe semafor? Oricum resursa de care am nevoie este protejata.
Semafoare sunt mai heavy-weight decat un spinlock. Desi spinlock-ul
inseamna busy-waiting pentru regiuni critice de mica dimensiune este de
preferat. Folosirea unui semafor pentru regiuni critice de dimensiune
mai mare ar insemna overhead important.
Semafoarele se folosesc in urmatoarele situatii:
- in regiunea critica se vor realiza operatii blocante
- regiunea critica este de dimensiune mare
De partea cealalta, spinlock-urile se folosesc atunci cand:
- se ruleaza cod in context intrerupere/amanabil
- regiunea critica este de dimensiune mica
In cazul de fata, regiunile sincronizate sunt mici si se recomanda
spinlock-uri. In plus, pe un sistem uni-procesor spinlock-urile doar
dezactiveaza preemptivivatea kernel-ului (se spune "a spinlock is
compiled out"), adica dispare problema de busy waiting.
> In implementarea mea actuala fiecare structura in care imi pastrez
> informatii legate de un syscall este protejata de un spinlock. In
> momentul in care trebuie sa apelez syscall-ul original, sunt nevoita
> sa eliberez spinlock-ul si se ajunge la un race.
Nu cred ca inteleg la ce te referi. Poti fi putin mai specifica, te rog?
Razvan
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
More information about the pso
mailing list