… als User-Level Threads?
Hallo,
immer wieder liest man in Quellen das Statement, dass Kernel-Level Threads langsamer sind als User-Level Threads, und dass diese sogar kaum Effizienz beim Context Switching einsparen gegenüber Prozessoren…
Doch warum sind Kernel Level Threads überhaupt langsamer und ineffizienter als User-Level Threads?
Eine nähere Erläuterung zum Statement fehlt nämlich überall…
Danke!
Hallo Jimmy,
kann man m.E. so pauschal nicht sagen. Einige Hinweise findest du (leider Englisch) in diesem Artikel:
http://en.wikipedia.org/wiki/Thread_%28computer_scie…
u.a. in diesem Abschnitt:
http://en.wikipedia.org/wiki/Thread_(computer_scienc…
Grüße
godam
Wenn du auf deine zweite Verlinkung klickst, steht im zweiten Absatz zu Kernel-Level Threads als letzter Satz:
„However, kernel threads take much longer than user threads to be swapped.“
Heißt für mich in anderen Worten, dass der Context Switch Overhead größer ist als beim User-Level Thread… Und nun eben meine Frage: Warum?
Danke.
Hallo
CPU Befehle werden grundsätzlich immer genau gleich schnell ausgeführt.
Der Protected Mode Level spielt dabei keine Rolle.
Im Kernel Mode sind aber hauptsächlich Treiber und deren Programme machen etwas anderes als normale Programme.
Somit ist die Vergleichbarkeit nicht richtig gegeben und man kann auch nicht ein Programm in dem Level laufen lassen, wo man will.
Die Kernel Threads haben mehr mit dem Handling von Hardwareinterrupts zu tun und außerdem stellen Kernel Level Treiber und Programme ihren Zeitverbrauch mehr oder weniger selbst ein, insbesondere, falls sie defekt oder unkorrekt programmiert sind.
Außerdem werden kernel level threads nur schlecht beendet, wenn sie abstürzen.
Außerdem brauchst Du nicht alles glauben, was irgendwo geschrieben steht.
MfG
Matthias