[Outofthebox] riflessioni forensi
Angelo Dell'Aera
buffer at olografix.org
Tue Sep 6 11:11:59 CEST 2005
On Mon, 05 Sep 2005 14:11:03 +0200
isazi <isazi at olografix.org> wrote:
> Angelo Dell'Aera wrote:
> > Un kernel thread, per chi non lo sapesse, altro non e' che un
> > processo che NON HA userspace (so che su questa affermazione
> > partira' un thread... anzi e' quello che mi auguro :P). Inoltre un
> > kernel thread (se ricordiamo bene ma dovro' controllare) ignora i
> > signal e quindi dovrebbe essere piu' robusto nei confronti di
> > "stragi di massa".
>
> Carissimo, mi dai qualche riferimento per avere materiale sui kernel
> thread ? Torno per qualche giorno in montagna senza rete e ho bisogno
> di cose da leggere :)
Uhm se mi chiedi documentazione mi viene in mente soltanto "Linux Device
Drivers" di Rubini, Corbet e Hartmann che forse ne parla anche se non ne
sono sicuro. E comunque lo trovi liberamente scaricabile in pdf dal sito
del libro (prendi la terza edizione appena uscita).
Per capire di cosa si tratta ti accenno la cosa. Un kernel thread e' un
processo dalle caratteristiche alquanto peculiari. Prima di tutto, se
vuoi vedere i kernel thread in esecuzione sulla tua macchina puoi
lanciare un "ps aux" e leggere tutti i processi il cui command viene
indicata tra parentesi quadre come ad esempio
root 103 0.0 0.0 0 0 ? S< 09:21 0:00 [kblockd/0]
root 133 0.0 0.0 0 0 ? S 09:21 0:00 [pdflush]
Cosa rende particolari questi processi? Il fatto di non avere userspace.
Detto cosi' non dice nulla me ne rendo conto ma pensa a un processo
nel senso classico del termine e al layout del suo address space con le
pagine di memoria referenziate attraverso le page table. Un processo
userspace mappa sia la porzione userspace dell'address space (che su
x86/Linux risiede sotto il terzo giga dello spazio di indirizzamento
virtuale) che la porzione kernel space (che su x86/Linux risiede sopra
il terzo giga dello spazio di indirizzamento virtuale) anche se questa
e' ovviamente protetta da accessi dallo userspace non proprio legali in
modo da evitare salti da ring 3 a ring 0 maliziosi ma qui me ne rendo
conto sto fuorviando.
Un kernel thread e' un processo tipicamente a bassa priorita' (in
modo da farlo girare quando la cpu non ha davvero niente di meglio
da fare) che non mappa la porzione userspace semplicemente perche'
non gli serve in quanto non accede lo userspace. Ai fini della
gestione dello stesso in termini di scheduling e quant'altro e'
assolutamente identico a un processo classico se non per alcuni dettagli
che ne rendono l'utilizzo particolarmente idoneo in determinate
situazioni.
PS Ho appena riletto quello che ho scritto e non ci ho capito nulla
neanch'io quindi se vuoi far partire un thread fai pure... :PPP
Ciaps.
--
Angelo Dell'Aera 'buffer'
Antifork Research, Inc. http://buffer.antifork.org
Metro Olografix
PGP information in e-mail header
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://mail.olografix.org/pipermail/outofthebox/attachments/20050906/2b2b234b/attachment-0002.bin>
More information about the Outofthebox
mailing list