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?
Practic threadurile dintr-un proces trebuie sa imparta toate datele, open files, etc, _cu exeptia stivei_ -- fiecare thread trebuie sa aiba stiva proprie. Daca vrei. cam asta ar fi the "minimal context of execution". Iar accesul la datele din procesul respectiv ce ar putea fi folosite de mai multe threaduri se 'modereaza' cu lock-uri. OS-ul trebuie sa vada tot un singur proces acolo, indiferent de numarul de threaduri din el, pentru ca de fapt sunt mai multe bucati de cod -- parte din acelas proces -- care opereaza in paralel pe datele acelui proces. Sau cel putin, asta spune teoria. clone() se apropie de chestia asta cu flagurile potrivite. But it's not quite there yet. >> Firele ar trebuia sa aiba un singur PID, > De ce? See above. Plus, apar chestii interesante de genul celor discutate aci: http://security-archive.merton.ox.ac.uk/security-audit-199808/0105.html >> ori asta nu se poate la Linuxa. > Ba da, vezi CLONE_PID. Dar nu e sanatos la stomac :) Ce anume, sa folosesti CLONE_PID? Why? >> Maparea firelor 1:n/1:1 e tot mapare. > Nu-ti inteleg argumentul. Cum ai vrea sa fie? Daca cele N fire din user-space se mapeaza pe 1 fir kernel sau M fire kernel nu e foarte relevant din punctul de vedere al aplicatiei. Poate influenta viteza, etc, dar nu modifica in nici un fel modul in care aplicatia foloseste threadurile. Cred ca teoretic chestia asta ar trebui sa fie complet transparenta. > Petru -silent --- Pentru dezabonare, trimiteti mail la [EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'. REGULI, arhive si alte informatii: http://www.lug.ro/mlist/
