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?
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?
Risposte:
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: