next up previous contents
Next: Terminologie Up: No Title Previous: Zusammenfassung   Inhalt


Implementierung von Nebenläufigkeit


,,Better Living through Concurrency``

Dave Butenhof

Die effiziente Implementierung einer Java Virtual Machine für Server-Software erfordert die Ausnutzung mehrerer Prozessoren bei gleichzeitiger Unterstützung einer hohen Zahl von Threads. Diese zwei Entwurfsziele in Einklang zu bringen, verkompliziert das Laufzeitsystem in erheblichem Maße. Kernentscheidungen betreffen den Mechanismus und die Granularität von Thread-Wechseln, den Abbildungsmechanismus auf Systemkontexte, den Umgang mit blockierenden Systemaufrufen sowie Globaloperationen wie das Anhalten aller Threads (,,stop-the-world``). Es ist zu prüfen, inwieweit existierende Betriebssystembibliotheken den gestellten Ansprüchen gerecht werden.

Der Ubiquität von Monitoren und konfliktfreien Synchronisierungsoperationen muß Rechnung getragen werden. Insbesondere sind die Kosten für nicht verwendeter oder konfliktfreie Monitore ist so gering wie möglich zu halten. Auch hier sind die Eigenschaften der Systembibliotheken in Betracht zu ziehen.

Das Laufzeitsystem mit Speicherverwaltung und Codegenerierung muß unter Berücksichtigung nebenläufiger Ausführung entworfen und implementiert werden, d.h. jeder Zugriff auf Laufzeitstrukturen wie die Klassenhierarchie, die Speicherorganisation und die Objektmetainformationen muß in thread-sicherer Manier erfolgen.

Im Folgenden werden Thread-Implementierungen und Synchronisierungsalgorithmen separat behandelt. Auf eventuelle Abhängigkeiten wird entsprechend hingewiesen. Nach einer kurzen Einführung in die verwendete Terminologie wird zunächst eine grobe Übersicht gängiger Implementierungsklassen und ihrer Eigenschaften gegeben und anschließend detailliert auf einzelne Systeme eingegangen.




next up previous contents
Next: Terminologie Up: No Title Previous: Zusammenfassung   Inhalt

2001-02-28