10.3 Kernel- und User-Threads
Es gibt zwei Implementierungen von Threads, zum einen die Kernel-Threads, zum anderen die User-Threads. Die User-Threads sind in einer Bibliothek implementiert, die im Speicherbereich des Benutzers ablaufen. Damit ist es möglich, Threads auch auf Betriebssystemen zu verwenden, die keine Threads unterstützen. Der Nachteil an den User-Threads ist aber, dass die einzelnen Threads eines Prozesses nicht auf unterschiedlichen Prozessoren bei Multiprozessorrechnern laufen. Kernel-Threads hingegen sind bereits im Betriebssystem integrierte Thread-Unterstützungen. Dabei wird das Scheduling des Betriebssystems verwendet. So ist es möglich, die einzelnen Threads eines Prozesses auf verschiedenen Prozessoren laufen zu lassen. Linux-Threads, die in diesem Kapitel verwendet werden, unterstützen sowohl Kernel- als auch User-Threads.
Ein wenig überraschend ist es doch, dass die User-Theads, sofern man nicht an die Multiprozessorprogrammierung appelliert, einen gewissen Vorteil gegenüber der Kernel-Implementierung besitzen. Threads, die vom Kernel verwendet werden, setzen doch einige Grenzen, etwa was die Anzahl der gleichzeitigen Benutzer angeht. Aber noch ein wenig überraschender ist, dass User-Threads effizienter als Kernel-Threads ablaufen, da diese keinen extra Befehl (Software-Interrupt) zum Umschalten auf einen anderen Thread vom Kernel benötigen.
|