Ankündigung Vortrag

Am 10. Juni um 13 s.t. in Seminarraum 11 (Robert-Mayer-Str. 11-15, EG) hält

Herr Dr. David Sabel im  Rahmen seines Habilitationskolloquiums einen Vortrag zum Thema

Lock-freies nebenläufiges Programmieren durch Software Transactional Memory

 

Zusammenfassung:

Die nebenläufige und parallele Programmierung ist unumgänglich für die Programmierung von Multiprozess-Systemen wie z.B. Betriebssysteme. Durch die zunehmende Verwendung von Multiprozessor-Systemen auf Hardwareebene aber auch durch die zunehmende Vernetzung nimmt die Bedeutung der nebenläufigen Programmierung stetig zu. Ein Problem der nebenläufigen Programmierung ist der geschützte Zugriff auf gemeinsam verwendete Ressourcen wie Speicher und Peripherie.

Auf Softwareebene sind atomare Sperren, Semaphore und Monitore klassische Programmierprimitiven zur Synchronisation nebenläufiger Prozesse. All diese
Primitiven sind Lock-basiert, d.h. sie sperren explizit den Zugriff anderer Prozesse auf das jeweilige Speicherobjekt. Im Wesentlichen ergeben sich dadurch zwei Nachteile aus Programmiersicht:

1. Die Lock-basierte Programmierung ist fehleranfällig: Das Setzen zu weniger Sperren kann zu undefinierten, falschen Zuständen führen und ungewollten Nichtdeterminismus (Race Conditions) verursachen. Das vergessene Entfernen einer Sperre kann zu Deadlocks führen. Das Setzen zu vieler Locks verhindert die Parallelisierung und führt daher zur Sequentialisierung des Programms, was in einer schlechten Ressourcennutzung münden kann.

2. Lock-basierte Programme lassen sich nur unzureichend kombinieren. Üblicherweise lassen sich zwei nebenläufige Lock-basierte Programme, die einzeln betrachtet korrekt ablaufen, nicht einfach zu einem größerem Programm   zusammenfügen. Das Setzen und Entfernen der Locks muss in diesem Fall oft neu programmiert und neu durchdacht werden.

Einen Ausweg aus diesem Dilemma bietet die Lock-freie Programmierung durch Verwendung eines Transaktionalen Speichers. Die Idee dabei ist, Zugriffe auf den gemeinsam verwendeten Speicher analog zu Datenbanktransaktionen zu handhaben und die Korrektheit der Zugriffe durch einen Transaktionsmanager sicherzustellen. Dabei sind die Anforderungen an den Transaktionsmanager jedoch verschieden zu Datenbanken, da z.B. die Terminierung einer Transaktion nicht garantiert werden kann. In meinem Vortrag werde ich die Merkmale und Umsetzungen von Software Transactional Memory (STM) erörtern, die obigen Ansatz als Programmbibliothek zur Verfügung stellen. Ich werde dabei insbesondere die Umsetzung von STM in der funktionalen Programmiersprache Haskell und die damit einhergehende Bedeutung von monadischer Programmierung und starker Typisierung erörtern. Schließlich werde ich über aktuelle Forschungsergebnisse zu STM-Umsetzungen berichten.

Zusätzliche Informationen