[so] [Tema2] Detalii implementare

Valentin Stanciu valentin.stanciu at cti.pub.ro
Mon Apr 19 13:55:30 EEST 2010


Mersi pentru raspuns! Acum totul este mai clar.

Valentin

2010/4/19 Catalin Moraru <catalin.me at gmail.com>:
>> In enunt se spune ca nu avem voie sa folosim un singur semafor pentru
>> toata tabela hash. Daca toti clientii trimit comenzi la server si
>> serverul este cel care manipuleaza tabela mai avem nevoie de semafor?
>
> Serverul e cel care face efectiv operatiile de adaugare si stergere,
> in timp ce clientii sunt cei care fac operatia de print. Deci poate
> exista acces concurent la o anumita resursa ( modifcare vs citire )
>
>> Sau serverul trebuie sa faca fork() si sa trateze fiecare client in
>> paralel?
>
> Nu. Serverul prelucreaza cererile secvential, in ordinea in care le primeste
> in coada.
>
>>In acest caz fiind cate un "server" pentru fiecare client si
>> partajand o tabela hash, sincronizati prin semafoare. Daca asta se
>> doreste, totusi, "Operațiile pe care le face serverul trebuie să
>> respecte ordinea temporală dată de primirea mesajelor de la clienți".
>> Ce se intampla cand 2 clienti adauga elemente in acelasi bucket in
>> acelasi timp?
>
> Doar serverul este cel care adauga, dar trebuie sa se asigure accesul
> exclusiv fata de clientii care citesc din bucket ( care fac operatia
> de print)
>
>> In alta ordine de idei, se precizeaza ca pentru afisarea tabelei hash
>> se va folosi memorie partajata. In acest caz nu trebuie sa folosim un
>> semafor pe toata tabela cat timp clientul citeste?
> Nu
>
>> Daca nu, ce se
>> intampla daca un client citeste ceva din tabela si alt client adauga
>> ceva in tabela?
>
> In functie de bucketul in care insereaza al doilea client, primul client
> poate vedea sau nu schimbarile.
>
>> Chiar si in cazul in care avem semafoare doar pe
>> buckets, de la momentul in care clientul1 incepe afisarea tabelei,
>> alti clienti pot adauga elemente in ultimele buckets (cand inca nu a
>> ajuns cu citirea clientul1) si astfel o sa avem un comportament
>> diferit fata de situatia in care aveam un semafor pe toata tabela.
>
> Intr-adevar exista diferente intre o implemntare cu semafoare per
> bucket fata de o implementare cu un semafor pe toata tabela. In tema
> se doreste implementarea accesului exclusiv per bucket.
>
>> din nou, "Operațiile pe care le face serverul trebuie să respecte
>> ordinea temporală dată de primirea mesajelor de la clienți".
>
> Adica serverul trebuie sa citeasca un mesaj din coada si sa realizeze
> actiunea dorita. Se poate ca serverul sa nu poata face imediat
> operatia de adaugare intr-un bucket pana cand nu primeste semaforul de
> la un client care a facut scriere in acel bucket.
>
>> Aceste intrebari desi sunt "detalii de implementare", datorita modului
>> de testare pot cauza diferente cu rezultatul oficial. Imi cer scuze
>> daca aceste intrebari erau explicate sau reieseau din enuntul temei,
>> dar eu nu am gasit.
>>
>> Valentin
>> _______________________________________________
>> so mailing list
>> so at cursuri.cs.pub.ro
>> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>>
> _______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>


More information about the so mailing list