PDA

View Full Version : linux thread


soalle
20-03-2003, 17:53
Qualcuno mi fa chiarezza sui thread in linux???
Fino a qualche tempo fa credevo fossero a livello utente poi ho scoperto che i pthread in realtà sono a livello kernel... quale delle due informazioni è corretta???

Se sono a livello kernel come si fa a vedere quanti threads sono associati ad un task?

Grazie
Soalle

ilsensine
20-03-2003, 19:18
I thread sotto linux sono molto simili ai processi, con la differenza fondamentale che condividono le tabelle di paginazione. Essi vengono creati con la syscall clone() e possiedono ciascuno uno stack distinto, anche se accessibile agli altri thread. Conservano una struttura gerarchica e formano una sorta di "gruppo di processi"; in genere un segnale inviato al thread parent viene anche inviato ai child, a meno di non usare la chiamata pthread_kill(). Le pthread sono semplicemente una interfaccia con clone(), forniscono tutta una serie di funzionalità per la sincronizzazione e la corretta gestione dei thread, e si occumano di far vedere - all'utente - l'ambiente thread come previsto dallo standard POSIX.

soalle
20-03-2003, 19:23
1.quindi alla fine sono un strato software sopra il kernel o sono un'astrazione fornita direttamente dal kernel???

2. quindi la pthread_create dei pthread è mappata sulla sys call clone()?

ilsensine
20-03-2003, 19:31
1.quindi alla fine sono un strato software sopra il kernel o sono un'astrazione fornita direttamente dal kernel???
Entrambi. Il kernel provvede a implementarli come processi che condividono la stessa tabella di paginazione; le libpthread si occupano di "trasformare" questa interfaccia nella interfaccia standard POSIX.

2. quindi la pthread_create dei pthread è mappata sulla sys call clone()?

soalle
20-03-2003, 19:39
Sto facendo ricerche su Internet...
se hai qualche bel link sull'architettura dei thread in linux me lo potresti segnalare??

Grazie mille
Soalle

ilsensine
20-03-2003, 19:54
Su google trovi di tutto, ad es. http://www.onlamp.com/pub/a/onlamp/2002/11/07/linux_threads.html
Questo è più datato, ma è un buon inizio: http://linas.org/linux/threads-faq.html

ilsensine
20-03-2003, 20:10
ops...ovviamente guarda anche man clone

Ikitt_Claw
20-03-2003, 20:42
[quote="ilsensine"]I thread sotto linux sono molto simili ai processi, con la differenza fondamentale che condividono le tabelle di paginazione.[...]/quote]

Questo cambiera` con ngpthread e i futex nel kernel 2.5/2.6 (o 2.4 con patch)?
Sebbene sia abbastanza ignorante in materia e non gli sia stato particolarmente dietro, lla cosa mi interessa...

ilsensine
20-03-2003, 20:49
Aggiungeranno alcune cose in più, ma sostanzialmente il discorso non cambia.
I futex sono un'altra cosa.

soalle
20-03-2003, 20:52
Da quel che ho capito dovrebbe venire fuori NPTL invece che NGPT...

I futex cosa sono???

ilsensine
20-03-2003, 20:56
Da quel che ho capito dovrebbe venire fuori NPTL invece che NGPT...
Credo...cmq cambiano idea ogni 5 min...

I futex cosa sono???
futex = fast userspace mutex
http://ds9a.nl/futex-manpages/futex2.html
http://ds9a.nl/futex-manpages/futex4.html

soalle
20-03-2003, 21:05
un pozzo di sapienza.... :D