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 Verweise PUT LINKS TO PAPERS/WEBPAGES ETC IN AN ITEMIZED LIST. |
||||||
Dependable Systems & Software Group | Department of Computer Science | Universität des Saarlandes |