[pso] [T1]Spinlock-uri vs Semafoare

Cosmin Ratiu cosminratiu at gmail.com
Fri Mar 14 16:38:28 EET 2008


Una dintre chestiile pe care le-am invatat mai demult este ca primitivele de
sincronizare se folosesc pentru a proteja accesul la date, nu la cod. In
situatia data, nu trebuie sa te preocupe prea mult faptul ca daca vine un
release se poate ca unele apeluri in desfasurare sa se execute dupa aceea,
pentru ca integritatea datelor este asigurata. Eventual sa minimizezi
prelucrarile de dupa syscall.

Cum zicea Tavi, daca protejezi accesul la system call cu ceva, nu o sa poti
avea 2 apeluri de acel fel simultane.

Cosmin.

2008/3/14 Silviu-Ionut Ganceanu <silviug at gmail.com>:

> OK,
>
> Atunci care este solutia care evita race-ul ce apare:
>
> spin_lock()
> ... // verificari, alte chestiuni pregatitoare
> spin_unlock()
>
> // ----> race, aici poate interveni un release
>
> ret=apel_de_sistem_vechi(...)
>
> spin_lock()
> ... // alte prelucrari dupa apel
> spin_unlock()
>
> O solutie este pastrarea apel-ului de sistem vechi si dupa release.
> Totusi, solutia nu este "curata" ba chiar are mireasma de hack :) Asta
> pentru ca release-ul nu ar trebui sa se intample cat timp interceptorul este
> in executie -- cel putin asa cred eu.
>
> Silviu
>
> 2008/3/14 Octavian Purdila <tavi at cs.pub.ro>:
>
> On Friday 14 March 2008, Diana Elena Kelerman wrote:
> > > Salut,
> > >
> > > De ce este indicat sa folosim spinlock-uri si nu semafoare?
> >
> > Daca inteleg eu corect vrei sa folosesti ceva de genul:
> >
> > sem_down(); -> semaforul e per apel de sistem
> > ...
> > ret=apel_de_sistem(...)
> > ...
> > sem_up();
> >
> > return ret;
> >
> > Pentru implementarea de mai sus, avem urmatoare problema:
> >
> > se executa procesul 1: sem_down(); read(socket, buffer, count); -> se
> > blocheaza aici si nu vin date pe socket
> >
> > mai tarziu, se executa procesul 2: sem_down(); -> se blocheaza aici pana
> > cand
> > vin date pe socket-ul procesului unu
> >
> > tavi
> > _______________________________________________
> > pso mailing list
> > pso at cursuri.cs.pub.ro
> > http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
> >
>
>
> _______________________________________________
> pso mailing list
> pso at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20080314/e25293c5/attachment.htm 


More information about the pso mailing list