[so] nelamurire privind asincr.

Ionut Constandache so@atlantis.cs.pub.ro
Sun, 7 Dec 2003 23:09:00 -0800 (PST)


In concluziei nu prea ai de unde sa sti daca s-a
pierdut doar semnalul si in buff ai ce trebuie sau s-a
intamplat cu totul altceva (o eroare mai grava si nu
ai putut citi/scrie) deci operatia aio trebuie
reluata?

 
--- George Ciobanu <cdangeorge@yahoo.com> wrote:
> In momentul in care se pierde un semnal, sistemul nu
> are nici o cale sa anunte acest lucru. Asa ca va
> seta unele campuri din structura aiocb
> corespunzator.
> In momentul in care eroarea returnata e diferita de
> EINPROGRESS si aio_return va returna -1 inseamna ca
> notificarea nu a reusit. (fie din cauza pierderii
> semnalelor, fie din cauza altor erori interne)
> 
> Ionut Constandache <ionut_con@yahoo.com> wrote:
> Daca se pierde un semnal care notifica terminarea
> unei
> operatii aio e va intoarce aio_error si aio_return? 
> 
> If the asynchronous operation has completed
> unsuccessfully, then the error status, as described
> for read(2) , write(2) , and fsync(3C) , is
> returned.
> If the asynchronous I/O operation has not yet
> completed, then EINPROGRESS is returned. 
> 
> Uitandu-ma la read , write si fsync nu mi s-a parut
> ca
> vreo eroare returnata are vreo legatura cu pierderea
> unui semnal.
> 
> Multam!
> 
> 
> --- George Ciobanu wrote:
> > Fisierele nu au o lungime maxima
> > 
> > George Ciobanu wrote:Salut, 
> > 
> > 1. In cazul temei veti folosi notificarea prin
> > semnale. Ce era in paranteze era o observatie ...
> > Aveti grija ca se pot pierde semnale. In acest caz
> > eroarea (returnata de aio_error) este setata in
> mod
> > corespunzator iar aio_return va returna -1. 
> > 2. Ramane la alegerea ta cum rezolvi aceasta
> > problema. (Daca spargi in bucati ,cel mai simplu
> ar
> > fi sa citesti cate o bucata si sa o scrii. )
> > Rezolvarea tb specificata in README
> > 
> > 
> > Cristian Zamfir wrote:
> > On Sunday 07 December 2003 17:23, George Ciobanu
> > wrote:
> > 
> > Nedumeriri:
> > 
> > a) Sa inteleg din raspunsul la intrebarea 1 ca
> putem
> > sa folosim optiunea cu 
> > SIGEV_THREAD pentru threadurile de tip a). In
> cazul
> > asta vad ca se creeaza un 
> > thread nou si nu stiu daca mai e nevoie de
> semnale,
> > cum e precizat in enuntul 
> > temei.
> > 
> > 
> > 'struct sigevent aio_sigevent'
> > This element specifies how the calling process is
> > notified
> > once the operation terminates. If the
> `sigev_notify'
> > element
> > is `SIGEV_NONE', no notification is sent. If it is
> > `SIGEV_SIGNAL', the signal determined by
> > `sigev_signo' is
> > sent. Otherwise, `sigev_notify' must be
> > `SIGEV_THREAD'. In
> > this case, a thread is created which starts
> > executing the
> > function pointed to by `sigev_notify_function'.
> > 
> > b) In enunt nu se precizeaza daca fisierele au o
> > lungime maxima, iar in caz ca 
> > se poate orice lungime, care e politica care
> trebuie
> > implementata? 
> > Sa ziceam ca avem de facut aio_read, si avind in
> > vedere ca nu se stie ordinea 
> > in care sunt solutionate cererile AIO, este
> posibil
> > ca pachetele sa ajunga in 
> > alta ordine la client si unul dintre server si
> > client ar trebui sa 
> > reinventeze partea din tcp legata de reordonarea
> > pachetelor.
> > Daca asteptam sa se execute aio_read pentru
> fiecare
> > bucatica din fisierul 
> > cerut, si apoi facem un aio_read pentru urmatoarea
> > bucatica, se complica 
> > implementarea cozii sau pipe-ului pentru
> comunicarea
> > intre worker-thread-uri 
> > si threadul principal al serverului.
> > 
> > Multumesc
> > 
> > 
> > 
> > > Toma Monica wrote:
> > >
> > > Multumesc de raspuns, insa mai sunt ceva pb care
> > mi-au
> > > ramas neclare :).
> > >
> > > 1. Practic thread-urile worker vor trata
> cererile
> > care
> > > le sunt asignate de server secvential, doar ca
> > > operatiile de citire/scriere se fac asincron?
> > >< BR>> Dat fiind ca in server dai intr-un singur
> > loc dai accept cererile vor fi
> > > secventializate oricum. Cererile nu sunt tratate
> > secevential; ele vor fi
> > > pornite de folosind operatii operatii asincrone.
> > Daca se termina mai multe
> > > in acelasi timp poti sa secventializezi
> > raspunsurile ( desi pe linux, daca
> > > folosesti notificare folosind thread-uri ar
> putea
> > raspunde chiar ele)
> > >
> > >
> > >
> > > 2. Thread-urile de tip a/b trebuie sa poata sa
> > execute
> > > mai multe operatii in acelasi timp, pe mai multe
> > > fisiere?
> > >
> > > Da
> > >
> > > 3. Thread-urile trebuie sa fie pornite tot
> timpul,
> > > adica la lansarea server-ului sa se creeze toate
> > > thread-urile worker ( sugestia ne-a fost data la
> > > laborator) sau in momentul in care vine o cerere
> > si
> > > exista un "loc liber" sa se lanseze un thread
> > > corespunzator operatiei, care sa se termine in
> > > momentul in care s-a incheiat operatia pe care o
> > & gt; executa?
> > >
> > >
> > > Crearea lor se face la inceput. Oprirea lor se
> > face numai atunci cand se
> > > opreste serverul (deci, in cazul nostru cam
> > niciodata)
> > >
> > > --- George Ciobanu wrote:
> > > > Salut,
> > > >
> > > > Serverul ar trebui sa faca numai load
> balancing;
> > > > deci un thread de tip ls tb sa trimita
> raspunsul
> > > > singur la client fara participarea serverului.
> E
> > ok
> > > > ca threadul de tip ls sa poata prelua numai o
> > > > operatie la un moment dat, dar tb sa te
> asiguri
> > ca
> > > > serverul nu se blocheaza ( serverul poate
> > trimite
> > > > toate cele 5 cereri, iar threadul respectiv le
> > > > trateaza secvential)
> > > > Partea de asincronism este impusa numai pentru
> > > > celelalte doua tipuri de threaduri. Dar, ca
> > raspuns
> > > > la intrebarea ta asincronismul implica apeluri
> > > > neblocante.
> > > >
> > > > Toma Monica wrote:
> > > >
> > > > Buna, am si eu cateva nelamuriri, si desi risc
> > sa
> > > > par
> > > > stupida, nu am gasit pe nimeni care sa poate
> sa
> > imi
> > > > fie de ajutor...
> > > > Iata care sunt problemele mele:
> > > >
> > > > 1. sa presupunem ca avem 5 clienti care se se
> > > > conecteaza la server pt a cere un ls, iar
> > serverul
> > > > dispune doar de un thread care face aceasta
> > > > operatie.
> > > > Eu am ales ca serverul ( thread-ul principal)
> sa
> > > > comunica cu thread-urile worker (prin care
> > executa
> 
=== message truncated ===


__________________________________
Do you Yahoo!?
New Yahoo! Photos - easier uploading and sharing.
http://photos.yahoo.com/