Next: Java-Threads
Up: Threads
Previous: Vorteile von Threads
  Contents
Userlevel und Kernel-Threads
Man muss bei der Realisierung von Threads zwei Arten unterscheiden:
Kernel-Threads und Userlevel-Threads. Wenn ein Betriebssystem
Kernel-Threads unterstützt, so entsprechen die Threads in vieler Hinsicht den
herkömmlichen Prozessen. Ihr Zustand ist dann ebenfalls rechnend, rechenbereit
oder blockiert. Ein Scheduler (vgl. Kapitel
) tauscht
genauso rechnende und rechenbereite
Threads aus. Der einzige Unterschied liegt wie oben beschrieben im Aufbau der
Threads.
Demgegenüber versteht man unter Userlevel-Threads eine Implementierung von Threads,
die dem Betriebssystem Kernel gänzlich unbekannt ist. Jeder schwergewichtige Prozess wird als
ein herkömmlicher Prozess implementiert. Innerhalb eines Prozesses muss man dann
das Tauschen der Threads und das Scheduling implementieren. Bei
Userlevel-Threads gibt zwei ganz wesentliche Nachteile:
- Blockiert ein Thread, weil er beispielsweise auf ein Gerät wartet, so
blockiert der ganze Prozess also alle auch alle Threads, auch wenn sie
rechenbereit wären.
- Gibt es schwergewichtige Prozesse mit sehr unterschiedlicher Anzahl von Threads, so
erhalten die Threads unterschiedlich viel Rechenzeit. Ursache ist, dass der
Scheduler des Betriebssystems den verschiedenen Prozessen (in diesem Fall den
schwergewichtigen Prozessen) etwa gleichviel Rechenzeit gewährt.
Next: Java-Threads
Up: Threads
Previous: Vorteile von Threads
  Contents
Prof. Dr. Pluemicke
2003-05-10