On Wednesday 26 June 2002 12:48 pm, Petru Paler wrote:
> Dorin Lazar wrote:
> >>De ce ? Nu sunt implementate kernel threads ?
> > Nope. Firele is tot procese. Shi clone nu e suficient.
> De ce?
Rationale follows.
> > Firele ar trebuia
> > sa aiba un singur PID,
> De ce?
Pentru ca nu sunt decat contexte de executie. Cand se comunica nu se
comunica decat intre procese. Altfel e o brambureala totala (asha cum e acum
cu linuxthreads). Vorbesc desigur din punct de vedere pur teoretic, desigur.
Practic, insa, in momentul in care se schimba firul de executzie nu ar trebui
reincarcate toate datele dintr-un task_struct (asha cum se intampla pe
linuxa). Thread switching should be a lot faster.
> > ori asta nu se poate la Linuxa.
> Ba da, vezi CLONE_PID. Dar nu e sanatos la stomac :)
CLONE_PID nu poti sa il foloseshti decat daca PID e 0. Adica daca PID-ul este
PID-ul procesului care porneste... Nu se mai foloseshte CLONE_PID doar in
momentul in care se da drumul la init. In sursa e un test de conditzie de
genul if (pid && CLONE_PID) return;
> > Maparea firelor
> > 1:n/1:1 e tot mapare.
> Nu-ti inteleg argumentul. Cum ai vrea sa fie?
Nu trebuie sa se faca mapare pe infrastructura de procese. E mai lent
context switch-ul (intre fire ale aceluiashi proces). Scheduler-ul ar trebui
sa planifice fire, nu procese.
> > PTh, care face maparea 1:n strica tot farmecul prin
> > faptul ca trebuie sa folosesti pth_read in loc de read, si tot asha. Nu
> > is fire in toata regula.
> Sigur, la PTH nu ai fire in "toata regula", dar la kernel threads poti
> sa folosesti apeluri de sistem normale, fara alte restrictii.
Dap. Dar in momentul in care faci un al doilea fir de executzie ai un al
treilea proces care le vegheaza. Nu shtiu daca din cauza implementarii
linuxthreads, sau de altceva, dar e uncool. Again, povestea cu
context-switch-urile. Shi nu numai.
La Linux (de fapt la Unicshi) majoritatea incercarilor de multithreading
au cam dat pe langa pentru ca au incercat sa rezolve cu biblioteci.
Multithreading si UNIX... Cam urata asociere.
Imi amintesc un benchmark pentru Apache 2 care arata o imbunatatire
substantiala pe NT dupa folosirea firelor de executzie, si o imbunatatire mai
putin evidenta pe Linux. QED.
---
Pentru dezabonare, trimiteti mail la
[EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'.
REGULI, arhive si alte informatii: http://www.lug.ro/mlist/