Seite drucken

JTD

Java Transactional Domain

Kontakt Prof. Dr. rer. nat. Volker Turau
Beginn 31. Januar 2010
Ende 31. Dezember 2014
Finanzierung Technische Universität Hamburg-Harburg

Projektbeschreibung

Bei der Entwicklung einer parallelen Anwendung besteht üblicherweise die Wahl zwischen Multiprocessing und Multithreading. Die mit diesen Modellen einhergehenden Vor- und Nachteile nehmen potentiell Einfluss auf die Leistungsfähigkeit des Programms.

Multiprocessing zeichnet sich gegenüber Multithreading durch eine größere Fehlerisolation zwischen einzelnen Anwendungsteilen aus. Andererseits ist der Informationsaustausch zwischen Prozessen im Vergleich zu Threads erschwert und geht mit höheren Latenzen einher. Shared Memory ist die schnellste und effizienteste Art, um Daten prozessübergreifend zu teilen, ist aber im Einsatz aufwendiger als die Speicherverwaltung auf dem Heap mit malloc() und free().

Die Hauptaufgabe der DVSM Bibliothek besteht in der Bereitstellung einer dynamischen Speicherverwaltung auf Shared Memory, die der auf dem Heap sehr nahe kommt. Die Bibliothek kapselt grundlegende Shared-Memory-Operationen und macht diese aus Sicht des Programmierers transparent, so dass die Details der Implementierung nicht mehr sichtbar sind. Anwendungen steht der bekannte Satz aus den Standardfunktionen malloc(), free(), usw. entsprechend dem POSIX Standard zur Verfügung. Da die mit diesen Funktionen verwalteten Speicherblöcke in Shared Memory liegen, sind beliebige Zugriffe aus Prozessen und Threads möglich. Einzige Voraussetzung ist die Abstammung aller Prozesse/ Threads von einem gemeinsamen Elternprozess.

Die dynamische Speicherverwaltung in dieser Bibliothek besteht aus Douglas Leas Allokator (dlmalloc), Version 2.8.6, so dass der aktuelle Wissensstand in Bezug auf das Allokationsverhalten von Anwendungen berücksichtigt ist.

Mit Multiprocessing als vorgesehenem Einsatzgebiet ist die Bibliothek für Nebenläufigkeit optimiert. Dazu wird der Allokator intern redundant instanziert und eingehende Allokationen transparent möglichst gleichmäßig auf die getrennten Allokationsbereiche verteilt. Solche unabhängigen Allokationsbereiche werden von Douglas Leas Allokator durch sogenannte Mspaces unterstützt.

Die Technik zur Verteilung der Allokationen wurde in Anlehung an ptmalloc2 (Allokator glibc 2.16) und einem anderen Allokator mit offenem Quellcode (nedmalloc) implementiert. Nedmalloc diente außerdem als Beispiel für das in der Bibliothek verwendete Caching von Speicherblöcken.

Downloads

Publikationen

Holger Machens und Volker Turau. Avoiding Publication and Privatization Problems on Software Transactional Memory. In 17th GI/ITG Conference on Communication in Distributed Systems (KiVS 2011), Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik, Februar 2011, pp. 97–108. Kiel, Germany.
@InProceedings{Telematik_MT_2011_KIVS, author = {Holger Machens and Volker Turau}, title = {Avoiding Publication and Privatization Problems on Software Transactional Memory}, booktitle = {17th GI/ITG Conference on Communication in Distributed Systems (KiVS 2011)}, pages = {97-108}, series = {OpenAccess Series in Informatics (OASIcs)}, volume = {17}, publisher = {Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik}, day = {25}, month = feb, year = 2011, location = {Kiel, Germany}, }
Abstract: This paper presents a new approach to exclude problems arising from dynamically switching between protected concurrent and unprotected single-threaded use of shared data when using software transactional memory in OO languages such as Java. The approach is based on a simple but effective programming model separating transactions from non-transactional operation. It prevents the application programmer from errors but does not force the software transactional memory library to observe non-transactional access and thereby preserves modularity of the software. A prototypical toolchain for validation and source code instrumentation was implemented as a proof of concept.