Diss. ETH No. 24002 Unified Interference-free Parallel, Concurrent and Distributed Programming A thesis submitted to attain the degree of DOCTOR OF SCIENCES of ETH ZURICH (Dr. sc. ETH Zurich) presented by Mischael Schill Master of Science ETH in Computer Science born on July 26th, 1984 citizen of Winterthur, Switzerland and Austria accepted on the recommendation of Prof. Dr. Bertrand Meyer, examiner Prof. Dr. Friedemann Mattern, co-examiner Prof. Dr. Richard Paige, co-examiner Dr. Piotr Nienaltowski, co-examiner 2016 Abstract Concurrency, the art of doing many things at the same time, is growing in importance every year. For almost a decade, computers are no longer getting faster the same way they have been before, but they gain the ability to do more work in parallel. Most modern programs and their functionality rely on global distributed infrastructure: communication between computers has become essential, distributed systems are becoming the norm, not the exception. Although the integration of systems and programs becomes tighter and tighter, two areas are still most often treated as separate: local concurrency and parallelization, versus distribution. While there are concurrency programming models that can operate in both areas, they are often a compromise: they rarely take full advantage of shared memory available in a machine and, at the same time, give the developers inadequate tools to handle complex atomicity violations. The result is that software is often written using an unsafe multi-threading approach coupled with simple message passing for communication between computers. This work improves the current state of the art in two ways. First by addressing the problem that these models often disregard the dependencies between requests, resulting in atomicity violations similar to data races. Second by reconciling models for concurrency and distribution with shared memory. For the first, this work extends the Scoop concurrency model for distributed programming. Scoop provides interference-freedom to minimize atomicity violations, but is restricted to local computing only. With distribution, failure handling is important: we present a novel approach — compensations s— which are inspired by transactions, to let supplier and clients both contribute to failure mitigation. The core semantics of distributed Scoop, the result of this endeavor, is described formally using a transition semantics that can be used as a specification for implementations. A prototype of D-Scoop shows that interference-freedom can be achieved without sacrificing performance. For the second, this work presents two techniques: Slicing A technique for handling arrays Immutable Classes A technique for handling complex immutable data With our work on integration of shared memory computing and distribution we combine local concurrency and parallelism with distribution to form a general model. vii Zusammenfassung Nebenläufigkeit, die Kunst viele Dinge gleichzeitig zu tun, wird wichtiger von Jahr zu Jahr. Seit fast einem Jahrzeht werden Computer nicht mehr in dem Masse schneller wie davor, aber sie erhalten die Fähigkeit mehr Arbeit parallel erledigen zu können. Die meisten Programme und ihre Funktionalität stützen sich auf eine global verteilte Infrastruktur: Die Kommunikation zwischen Computern wurde essentiell, verteilte Systeme werden zur Norm. Obwohl die Integration von Systemen und Programm immer enger und enger wird, werden zwei Gebiete häufig immer noch getrennt behandelt: Lokale Nebenläufigkeit und Parallelität gegenüber Verteilten System. Während zwar Programmiermodelle für Nebenläufigkeit existieren, die für beide Gebiete geeignet sind, sind diese häufig ein Kompromiss: Sie ziehen selten das Maximum aus der Verfügbarkeit von gemeinsamen Speicher einer Maschine, und geben gleichzeitig dem Entwickler nur inadäquate Wekzeuge zur Vermeidung von komplexen Atomizitätsverletzungen zur Hand. Das Resultat ist, dass Software oft noch immer mit einem unsicheren Prozessmodell in Kombination mit einfachem Nachrichtenaustausch erstellt werden. Diese Arbeit bringt den aktuellen Stand der Technik auf zwei Arten vorwärts: Sie nimmt sich des Problems, dass solcherlei Modelle die Abhängigkeiten zwischen Anfragen, welche zu Atomizitätsverletzungen führen, oft ignorieren sowie des Problems der Vereinheitlichung von Nebenläufigkeit und verteilten Systemen mit gemeinsamen Speicher, an. Für ersteres präsentiert diese Arbeit eine Erweiterung des Scoop Modells für die Verwendung in verteilten Systemen. Scoop verfügt über ein Konzept der Interferenzfreiheit um Atomizitätsverletzungen zu minimieren, aber es ist bis jetzt auf die Verwendung als lokales System beschränkt. In verteilten Systemen ist die Handhabung von Fehlern prioritär, darum präsentieren wir einen neuartigen Anzatz, Kompensationen, inspiriert von Transaktionssystemen, um den Befehlsempfänger sie auch den Befehlssender an der Fehlerbehebung teilhaben zu lassen. Die Kernsemantik von verteiltem Scoop, genannt D-Scoop, das Resultat dieses Vorhabens, wird formal beschrieben mit einer Transaktionssemantik, welche als Spezifikation für Implementationen verwendet werden kann. Ein Prototyp von D-Scoop zeigt, dass Interferenzfreiheit ohne Einbussen von Effizienz erreicht werden kann. Für letzteres präsentiert diese Arbeit gleich zwei Techniken: Slicing, eine Technik um Berechnungen über Felder zu parallelisieren; und Immutable Classes, eine Technik um komplexe Datenstrukturen auf Unveränderlichkeit zu überprüfen. Mit unserer Arbeit an der Integration von gemeinsamen Speicher und sicherem verteilten Rechnen können wir lokale Nebenläufigkeit und Parallelität mit verteilten Systemen kombinieren um ein generelles Modell zu formen. viii
© Copyright 2025 ExpyDoc