Ecco cosa ho capito; Si prega di correggere/aggiungere ad esso:In che modo i thread a livello utente (ULT) e i thread a livello kernel (KLT) differiscono rispetto all'esecuzione simultanea?
In ULT puro, il processo multithreading esegue la pianificazione del thread. Quindi, il kernel in sostanza non si accorge della differenza e lo considera un processo a thread singolo. Se un thread effettua una chiamata di sistema di blocco, l'intero processo viene bloccato. Anche su un processore multicore, solo un thread del processo verrebbe eseguito alla volta, a meno che il processo non sia bloccato. Non sono sicuro di come gli ULT siano di grande aiuto.
In KLT puri, anche se un thread è bloccato, il kernel pianifica un altro thread (pronto) dello stesso processo. (In caso di KLT puri, suppongo che il kernel crei tutti i thread del processo.)
Inoltre, utilizzando una combinazione di ULT e KLT, come vengono mappati gli ULT in KLT?
Ma, alcuni siti e libri dicono che ULT non può prendere il vantaggio di multiprocessing e una delle linee dire "D'altra parte, se un processo ha più thread a livello di kernel, allora può eseguire più comandi parallelo se esiste una macchina multicore. " Dove sto andando storto? – Garrick
Potete fornire un collegamento a questo? Sembra sbagliato. – templatetypedef
Si prega di controllare questi 2 link http://stackoverflow.com/questions/25582876/what-doesit-mean-by-user-threads-cannot-take-advantage-of-multithreading-or-mu e http: // cs.stackexchange.com/questions/1065/what-is-the-difference-between-user-level-threads-and-kernel-level-threads. L'ultima riga del 2 ° link lo dice. Ho cercato un po 'di più e penso che dipenda dal modello 1: 1. Per favore correggimi, se mi mancano alcune informazioni importanti. Grazie !! – Garrick