Che cos'è un thread utente e un thread kernel?


13

So cos'è un thread e so come funzionano, ma sono abbastanza confuso su cosa siano un thread utente e un thread del kernel in termini di ciò che è loro permesso fare.

Puoi chiarire cosa può fare un thread utente e cosa può fare un thread del kernel?


1
Questa domanda è già stata data risposta su SO: stackoverflow.com/questions/5957570/kernel-space-vs-user-space
Shadok

Bene, la domanda è stata posta ma non ha ricevuto una risposta adeguata. Tutto ciò che è stato risposto dalle 5 o 6 cose che la persona ha chiesto riguardava lo spazio utente e lo spazio del kernel.
Fasih Khatib,

1
Penso che la definizione di Dave Rager sia concisa e precisa: "Lo spazio del kernel e lo spazio utente sono la separazione delle funzioni del sistema operativo privilegiate e delle applicazioni utente riservate".
Shadok,

Risposte:


13

Un thread del kernel, a volte chiamato LWP (Lightweight Process) viene creato e programmato dal kernel. I thread del kernel sono spesso più costosi da creare rispetto ai thread degli utenti e le chiamate di sistema per creare direttamente i thread del kernel sono molto specifici della piattaforma.

Un thread utente viene normalmente creato da una libreria threading e la pianificazione viene gestita dalla libreria threading stessa (che viene eseguita in modalità utente). Tutti i thread utente appartengono al processo che li ha creati. Il vantaggio dei thread utente è che sono portatili. La differenza principale può essere vista quando si utilizzano sistemi multiprocessore, i thread utente completamente gestiti dalla libreria threading non possono essere eseguiti in parallelo sulle diverse CPU, sebbene ciò significhi che funzioneranno bene su sistemi uniprocessore. Poiché i thread del kernel utilizzano lo scheduler del kernel, è possibile eseguire thread del kernel diversi su CPU diverse. Molti sistemi implementano il threading in modo diverso,

Un modello di threading one-to-one associa molti processi utente direttamente a un thread del kernel, il thread del kernel può essere considerato il processo principale. Un modello di threading one-to-one associa ogni thread utente direttamente a un thread del kernel, questo modello consente l'elaborazione parallela sui sistemi multiprocessore. Ogni thread del kernel può essere pensato come un VP (processo virtuale) gestito dallo scheduler.

Fonte: risposte

Inoltre puoi trovare informazioni nel capitolo 3 - 3 di wikipedia Processi, thread del kernel, thread utente e fibre:

Filo


Non penso sia una buona idea copiare apparentemente non sapendo esattamente di cosa si tratta realmente e senza conoscere completamente la risposta. Un LWP non viene solitamente creato sopra un thread del kernel come un ponte tra quest'ultimo e il thread dell'utente? Inoltre, questa risposta è molto confusa perché continua a cambiare terminologia e alla fine non capisci se per esempio un thread del kernel è un processo, ecc.
nbro
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.