Combining the Actor model with Software Transactional Memory

Scriptie/masterproef: Master's Thesis

Uittreksel

Multikernprocessoren zijn alomtegenwoordig in moderne computersystemen. Het parallellisme van deze machines efficiënt uitbuiten blijft echter een hele uitdaging. Een concurrency model is een programmeermodel dat abstracties introduceert die de programmeur toelaten op een intu- itieve manier gebruik te maken van het potienteel van multikernprocessoren.
Elk programmeermodel heeft echter zijn beperkingen. Om ten volle gebruik te kunnen maken van een model is het essentieel om de zwaktes en sterktes ervan te kennen alsook de mogelijkheden van het model.
Programmeermodellen laten de programmeur toe om zijn code in logisch gescheiden on- afhankelijke taken te verdelen. Hoe de verschillende operaties gestructureerd worden in logisch gescheiden taken en hoe deze taken gesynchroniseerd worden hangt af van het programmeermodel dat toegepast wordt. Er is de dag van vandaag een brede waaier aan programmeermodellen beschikbaar en elk van deze modellen is uitermate geschikt om een specifieke vorm van parallel programmeren uit te drukken. Het uitgangspunt van deze thesis is dat ontwikkelaars er baat bij hebben om niet een enkel programmeermodel toe te passen maar een combinatie van meerdere programmeermodellen tegelijk in eenzelfde programma.
Dit proefschrift zal de combinatie van twee specifieke programmeermodellen onderzoeken, namelijk het actor model en “Software Transactional Memory”. Beide modellen hebben aantrekke- lijke eigenschappen die het interessante computationele modellen maken om multikernprocessoren uit te buiten. Beide modellen laten de programmeur ook toe om “lock-free” programma’s te schri- jven. Het ontwerp van het actor model staat echter niet toe om geheugen te delen tussen actoren. Dit is een van de sterktes van het model maar dit beperkt ook de uitdrukkingskracht van het model. Dit proefschrift zal onderzoeken of het mogelijk is om een combinatie te maken van het actor model en “Software Transactional Memory” die nog steeds de semantische eigenschap- pen van beide modellen garandeert en geen nieuwe problemen introduceert die de correctheid schaden.
Dit proefschrift verzamelt een lijst van semantische eigenschappen gebaseerd op bestaande literatuur. Dez die een verzameling is van semantische eigenschappen van elk van beide model- lene lijst zal als basis dienen om ons voorgesteld model te staven.We tonen via enkele voorbeelden aan dat een triviale combinatie tot problemen leidt. Om te experimenteren voorzien we een im- plementatie van beide modellen in Clojure, een programmeertaal voor de Java virtuele machine.
We geven een formele semantiek die weldegelijk aantoont dat een combinatie van beide mod- ellen mogelijk is. De semantiek garandeert de beoogde semantische eigenschappen. Als proof of concept stellen we een implementatie voor van onze formele semantieken in Clojure onder de naam “Actransors”. Deze bibliotheek voor Clojure is een aangepaste versie van de voorgenoemde libraries.
Om onze bevindingen te valideren hebben we een bestaande applicatie vertaald zodat deze gebruik maakt van Actransors. Het resultaat is een equivalente applicatie die expressiever is. Als laatste tonen we aan dat de vooropgestelde semantische eigenschappen van beide modellen bewaard blijven.
Datum Prijs14 jun 2015
TaalEnglish
BegeleiderWolfgang De Meuter (Promotor), Joeri De Koster (Promotor) & Janwillem Swalens (Promotor)

Keywords

  • concurrency
  • actors
  • stm
  • transactions
  • clojure

Citeer dit

'