Was ist ein Benutzer- und ein Kernel-Thread?

13

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

Können Sie bitte klarstellen, was ein Benutzer-Thread und was ein Kernel-Thread kann?

Fasih Khatib
quelle
1
Diese Frage wurde bereits auf SO beantwortet: stackoverflow.com/questions/5957570/kernel-space-vs-user-space
Shadok
Nun, die Frage wurde gestellt, aber nicht richtig beantwortet. Alles, was von den 5 oder 6 Dingen, die die Person fragte, beantwortet wurde, war über User Space und Kernel Space.
Fasih Khatib
1
Ich denke, die Definition von Dave Rager ist kurz und präzise: "Kernel-Space und User-Space sind die Trennung der privilegierten Betriebssystemfunktionen und der eingeschränkten Benutzeranwendungen."
Shadok,

Antworten:

13

Ein Kernel-Thread, manchmal auch als LWP (Lightweight Process) bezeichnet, wird vom Kernel erstellt und geplant. Die Erstellung von Kernel-Threads ist häufig teurer als die Erstellung von Benutzer-Threads, und die Systemaufrufe zum direkten Erstellen von Kernel-Threads sind sehr plattformspezifisch.

Ein Benutzerthread wird normalerweise von einer Threading-Bibliothek erstellt, und die Zeitplanung wird von der Threading-Bibliothek selbst verwaltet (die im Benutzermodus ausgeführt wird). Alle Benutzerthreads gehören zu dem Prozess, der sie erstellt hat. Der Vorteil von Benutzer-Threads ist, dass sie portabel sind. Der Hauptunterschied ist bei der Verwendung von Multiprozessorsystemen zu erkennen. Benutzer-Threads, die vollständig von der Threading-Bibliothek verwaltet werden, können auf den verschiedenen CPUs nicht parallel ausgeführt werden. Dies bedeutet jedoch, dass sie auf Einprozessorsystemen problemlos 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 Threading anders,

Ein Many-to-One-Threading-Modell ordnet 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

Außerdem finden Sie Informationen in Wikipedia, Kapitel 3 - 3, Prozesse, Kernel-Threads, Benutzer-Threads und Fasern:

Faden

Jason Paddle
quelle
Ich denke nicht, dass es eine gute Idee ist, zu kopieren, wenn man anscheinend nicht genau weiß, worum es bei dem Argument wirklich geht und ohne die Antwort vollständig zu kennen. Wird ein LWP nicht normalerweise über einem Kernel-Thread als Brücke zwischen diesem letzten und dem Benutzer-Thread erstellt? Außerdem ist diese Antwort sehr verwirrend, da die Terminologie
ständig gewechselt