Ein Kernel-Thread, der manchmal als LWP (Lightweight Process) bezeichnet wird, wird vom Kernel erstellt und geplant. Kernel-Threads sind häufig teurer als Benutzer-Threads, und die Systemaufrufe zum direkten Erstellen von Kernel-Threads sind sehr plattformspezifisch.
Ein Benutzer-Thread wird normalerweise von einer Threading-Bibliothek erstellt, und die Planung wird von der Threading-Bibliothek selbst (die im Benutzermodus ausgeführt wird) verwaltet. Alle Benutzer-Threads gehören zu dem Prozess, der sie erstellt hat. Der Vorteil von Benutzer-Threads ist, dass sie portabel sind. Der Hauptunterschied zeigt sich bei der Verwendung von Multiprozessorsystemen. Benutzer-Threads, die vollständig von der Threading-Bibliothek verwaltet werden, können nicht auf den verschiedenen CPUs parallel ausgeführt werden. Dies bedeutet jedoch, dass sie problemlos auf Einprozessorsystemen ausgeführt werden können. Da Kernel-Threads den Kernel-Scheduler verwenden, können verschiedene Kernel-Threads auf verschiedenen CPUs ausgeführt werden. Viele Systeme implementieren das Threading unterschiedlich.
Ein Thread-zu-Eins-Modell bildet viele Benutzerprozesse direkt einem Kernel-Thread zu. Der Kernel-Thread kann als Hauptprozess betrachtet werden. Ein Eins-zu-Eins-Threading-Modell ordnet jeden Benutzer-Thread direkt einem Kernel-Thread zu. Dieses Modell ermöglicht die parallele Verarbeitung auf den Multiprozessorsystemen. Jeder Kernel-Thread kann als VP (Virtual Process) betrachtet werden, der vom Scheduler verwaltet wird.
Quelle: Antworten
Informationen finden Sie auch in Wikipedia Kapitel 3 - 3 Prozesse, Kernel-Threads, Benutzer-Threads und Fasern: