Website zur Veranstaltung: https://www.mi.fu-berlin.de/en/inf/groups/hcc/teaching/summer-term-2020/alp-IV.html

Inhalt

Die Veranstaltung gliedert sich in drei große Bereiche:

  1. Nichtsequentielle Programmierung I: Maschine mit einer und mehreren CPUs, aber mit einem gemeinsamen Speicher:
    • Nichtsequentielle Programme, Prozesse und Threads in ihren verschiedenen Ausprägungen, Nichtdeterminismus, Determinierung
    • Synchronisationsmechanismen: Sperren (Locks), Semaphore, Monitore
    • Modellierung Nichtsequentielle Programmausführung
    • Ablaufsteuerung, Sicherung des kritischen Abschnittes, Umgang mit und Vermeidung von Verklemmung
    • Parallelisierung von Schleifen und Funktionen
       
  2. Nichtsequentielle Programmierung II: Maschine mit mehreren CPUs, aber ohne gemeinsamen Speicher, wodurch der Nachrichtenaustausch erforderlich ist:
    • Paralleverarbeitung auf unterschiedlichen Ebenen
    • Interaktion über Nachrichten
    • Programmieren und Synchronisieren von gleichzeitig laufenden Prozessen, die über Nachrichtenaustausch interagieren
       
  3. Verteilte Programmierung: Unterschiedliche Maschinen
    • Fernaufruftechniken
    • Client-Server, Peer-to-Peer
    • Verarbeitung auf dem Server und auf dem Client
    • Middleware, strukturierte Kommunikation

Alle Beispiele aus dem dritten Veranstaltungsteil sind auf Github verfügbar: https://github.com/FUB-HCC/WhiteBoard-Implementation-Examples

 

Literatur

 

  • Ben-Ari, M., & Ben-Arî, M. (2006). Principles of concurrent and distributed programming. Pearson Education.
  • Coulouris, G. F., Dollimore, J., & Kindberg, T. (2005). Distributed systems: concepts and design. Pearson Education.
  • Tanenbaum, A. S., & Van Steen, M. (2007). Distributed systems: principles and paradigms. Prentice-Hall.