THREAD: thread del kernel rispetto ai thread supportati dal kernel rispetto ai thread a livello utente?

8

Qualcuno sa qual è la differenza tra questi?

Mi sembra che i thread del kernel corrispondano al codice che esegue il kernel (intuitivamente), ma non sono sicuro degli altri due ...

Inoltre, lo standard pthreads dovrebbe essere considerato di livello utente e supportato dal kernel, dal momento che si accede a una libreria mentre il kernel esegue tutte le operazioni di programmazione / commutazione dei thread?

    
posta Dark Templar 13.09.2011 - 17:46
fonte

1 risposta

13

Il termine "thread del kernel" può essere usato per riferirsi a thread reali che girano interamente nello spazio del kernel o può riferirsi a thread dello spazio utente pianificati dal kernel. Il termine "thread supportati dal kernel" significa che questi ultimi, thread che girano nello spazio utente ma sono facilitati dal kernel, il che di solito significa che il kernel li programma.

"Thread a livello utente" di solito significa thread visibili allo spazio utente. Cioè, ciò che crei quando chiami la funzione "crea thread" dello standard di threading. In generale, il termine "thread a livello utente" viene utilizzato per indicare un thread creato dal codice dell'applicazione indipendentemente da come è implementato dal sistema. Potrebbe trattarsi di un puro thread di spazio utente con supporto del kernel minimo o nullo o potrebbe essere un thread programmato dal kernel.

Lo standard pthreads può essere implementato come puro thread di user-space (dove il kernel pianifica il processo e il processo pianifica i thread), thread supportati dal kernel (dove il kernel pianifica i thread direttamente) o un approccio ibrido (dove il kernel pianifica un thread a livello di kernel che quindi, nello spazio utente, pianifica un thread a livello utente). Lo standard non richiede alcun particolare mezzo di implementazione. L'implementazione più comune è la mappatura 1-a-1, in cui ogni thread a livello utente ha un thread corrispondente pianificato dal kernel.

    
risposta data 13.09.2011 - 19:12
fonte

Leggi altre domande sui tag