[pso] [T2 Linux] Race conditions in exemplul de char device din enuntul temei

Stefan Bucur stefan.bucur at gmail.com
Tue Aug 26 12:38:20 EEST 2008


2008/8/26 Razvan Deaconescu <razvan.deaconescu at cs.pub.ro>:
>
> Da, ai dreptate, poate aparea un race. In mod normal, tinand cont de
> contextul actual solutia este folosirea unor semafoare care sa impuna ca
> un singur proces sa aiba la un moment dat acces la read/write.

Well, eu am folosit spin locks (pentru ca datele sincronizate sunt
accesate si din handler-ul de intrerupere), si de semafoare n-am mai
avut nevoie, pentru ca am folosit cozile de asteptare (intr-o maniera
similara celei prezentate la capitolul intreruperi din Linux Device
Drivers).

>
> Mai mult, solutia poate fi si mai simpla. Pe vremea mea (TM) am pus o
> intrebare cu legatura pe lista de discutii[1]. Este vorba cu de
> paragraful cititul/scrisul concurent :-) Pe vremuri scriam mail-uri
> lungi nu eram asa succint ca acum (ha! :-P).
>
> Pana la urma am observat din test[2] ca solutia se rezolva prin design.
> Faptul ca open nu permite accesul simultan a mai multor procese la
> dispozitiv garanteaza evitarea conditiilor de cursa.

Aici permite-mi sa nu fiu de acord cu "inferring specifications from
implementation". Sau macar daca tema implica asa ceva, sa se precizeze
undeva in enuntul temei ("uitati aici punctual ce trebuie sa faceti,
restul ghiciti din programul de testare" :) - it may sound silly, dar
in real life chestia asta se practica foarte mult, si chiar mi s-ar
parea un exercitiu educativ). Pe de alta parte, imi dau seama ca pot
fi unele corner cases care sa fie scapate de un enunt a carui lungime,
din motive academice, trebuie sa se pastreze in anumite limite, insa
faptul ca un singur proces poate deschide fisierul la un moment dat nu
mi se pare un detaliu de finete :P, ci afecteaza fundamental design-ul
si implementarea temei, si ar trebui precizat undeva in enuntul temei.

Multumesc pentru clarificari :)

Stefan Bucur


More information about the pso mailing list