Was ist ein Benutzer-Thread und ein Kernel-Thread?

21886
Fasih Khatib

Ich weiß, was ein Thread ist, und ich weiß, wie sie funktionieren, aber ich bin ziemlich verwirrt, was ein Benutzer-Thread und ein Kernel-Thread in Bezug auf das sind, was sie tun dürfen.

Können Sie bitte klären, was ein Benutzer-Thread und was ein Kernel-Thread kann?

12
Diese Frage wurde bereits auf SO beantwortet: http://stackoverflow.com/questions/5957570/kernel-space-vs-user-space Shadok vor 11 Jahren 1
Nun, die Frage wurde gestellt, aber nicht richtig beantwortet. Alles, was von den fünf oder sechs Fragen, die die Person gefragt hat, beantwortet wurde, betraf den Benutzerraum und den Kernelraum. Fasih Khatib vor 11 Jahren 0
Ich denke, die Definition von Dave Rager ist knapp und präzise: "Kernel Space und User Space sind die Trennung der privilegierten Betriebssystemfunktionen und der eingeschränkten Benutzeranwendungen." Shadok vor 11 Jahren 1

1 Antwort auf die Frage

12
Jason Paddle

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:

Faden

Großartige erklärung! Vielen Dank! Dao Lam vor 10 Jahren 0
Ich denke nicht, dass es eine gute Idee ist, zu kopieren, anscheinend nicht genau zu wissen, worum es bei dem Streit geht, und ohne die Antwort vollständig zu kennen. Wird ein LWP normalerweise nicht auf einem Kernel-Thread als Brücke zwischen dem letzten und dem Benutzer-Thread erstellt? Diese Antwort ist auch sehr verwirrend, da sie ständig die Terminologie wechselt. Am Ende versteht man nicht, ob ein Kernel-Thread ein Prozess ist usw. nbro vor 8 Jahren 0