Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


11.11

Umsetzung von Java-Threads im Betriebssystem


Die Implementierung von Java-Threads auf einem bestimmten Betriebssystem ist ein wichtiger Aspekt bei der Konstruktion einer Virtual Machine. Bei Betriebssystemen, die von Haus aus über Threads verfügen (so wie z. B. Solaris oder Windows NT/2000/XP), ist es prinzipiell möglich, Java-Threads direkt auf das Betriebssystem abzubilden. Auf anderen Plattformen bediente man sich in der Vergangenheit zum Teil der so genannten »Green Threads«.

Diese Umsetzung von Java-Threads auf das Betriebssystem hat sich im Lauf der Zeit teilweise geändert. So kamen auf Solaris bis JDK-Version 1.1 und auf Linux bis JDK-Version 1.2 noch Green Threads zum Einsatz. Mittlerweile werden hier native Threads benutzt.

Green Threads sind simulierte Threads innerhalb des Virtual-Machine-Prozesses. Sie werden in der Virtual Machine selbst realisiert, wohingegen native Threads auf Funktionen des Betriebssystems beruhen.

Der Vorteil des Green-Thread-Ansatzes ist eine geringere Abhängigkeit gegenüber den Thread-Bibliotheken der verschiedenen UNIX-Derivate und damit eine bessere Portierbarkeit. Der große Nachteil der Green Threads ist allerdings eine schlechte Skalierbarkeit, da alle simulierten Threads innerhalb des gleichen Betriebssystemprozesses laufen und vom Betriebssystem nicht auf verschiedene Prozessoren zur gleichzeitigen Ausführung verteilt werden können. Die Performance von Applikationen skaliert daher nicht mit der Anzahl der Prozessoren. Auch das Scheduling kann bei Green-Thread-Implementierungen nicht vom Betriebssystem übernommen werden und muss von der Virtual Machine durchgeführt werden. Das Scheduling-Verhalten war dabei aber oftmals nicht zufriedenstellend, wie bereits im Abschnitt 11.4 beschrieben wurde.

Bei einer Virtual Machine, die Java-Threads auf native Threads im Betriebsystem abbildet, ist die Skalierbarkeit dagegen deutlich besser. Hier kann der Betriebssystem-Kernel auf Multiprozessor-Systemen die Java-Threads auf verschiedene Prozessoren verteilen, wodurch die Threads echt parallel ablaufen. Auch das Scheduling kann direkt im Betriebssystem erfolgen.

Derzeit werden Java-Threads folgendermaßen unter Windows, Solaris und Linux implementiert: Für Entwickler hat die Ablösung der Green-Thread-Implementierungen den Vorteil, dass die im Abschnitt 11.4 geschilderten Plattformabhängigkeiten im Scheduling-Verhalten beseitigt wurden. Bei den aktuellen Virtual Machines wechseln sich die rechenwilligen Threads bei der CPU-Zuteilung ständig ab, so dass parallele Programme »runder« laufen.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.