[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