VERTEILTE JAVA ANWENDUNGEN: KANN DAS GUT GEHEN?

Reachability anaysis in continuous-time Markov decision processes
Logics towards POMDP with and/or without rewards
Energy consumption in Ad-Hoc and Sensor Networks
Stochastic Interfaces
An eclipse environment for Modest (finished)
Analysis of an Airbag Control Unit (finished)

Titel der Arbeit

Verteilte Java Anwendungen: Kann das gut gehen?


Inhalt

Moderne Rechenysteme sind sowohl hardwareseitig als auch

softwareseitig stark auf effizienten Speicherzugriff optimiert. Ohne

diese Optimierungen würden fast alle Anwendungen 10 bis 100 mal

langsamer laufen. Diese Optimierungen geschehen für den Programmierer

vollständig im Verborgenen. Jedoch nur solange, wie man nur Programme

schreibt, die rein sequentiell ausgeführt werden. Sobald mehrere

Threads und Prozessoren ins Spiel kommen, können diese Optimierungen

plötzlich zu einem Programmverhalten führen, dass katastrophal von dem

abweicht, das der Programmierer eigentlich erwarten hätte. Aus diesem

Grunde bieten moderne Sprachen wie Java und C# Speicher Modelle

(Memory Models), also abstrakte Beschreibungen aller möglichen

Speichereffekte, die durch Optimierungen entstehen können. Um das

Programmieren mit mehreren Threads trotz der Speichereffekte

praktikabel zu halten, garantiert das Java Memory Model (JMM), dass

der optimierte Code sich äquivalent zum nicht-optimierten Code verhält

(unter gewissen Bedingungen). Allerdings ist der Äquivalenzbegriff,

der hierfür verwendet wird, zumindest theoretisch nicht stark genug um

für ein System, das aus mehreren

gleichzeitig laufenden, optimierten Javaprogrammen besteht, ein korrektes Verhalten zu garantieren. Jedoch ist gerade die Interaktion mehrer verteilter

Javaprogramme eines der Haupteinsatzgebiete von Java, beispielsweise

bei typischen Client- und Server-Anwendungen.

 

In dieser Arbeit soll untersucht werden, ob die von der JMM erlaubten

Optimierungen tatsächlich zu inkorrektem Verhalten in verteilten

Java-Anwendungen führen können und wie dies verhindert werden kann.


Vorraussetzungen

Grundkenntnisse in Java (z.B. Programmierung 2) und ein Hang zur Theorie.

Kenntnisse aus Nebenläufige Programmierung oder Verification sind von Vorteil.


Status

Verfügbar


Kontakt

Christian Eisentraut


Verweise

PUT LINKS TO PAPERS/WEBPAGES ETC IN AN ITEMIZED LIST.