CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Einführung
Administratives Unterlagen Verwendbar: Master of Science (Informatik) Wahlpflichtfach (Theorie-Pool) Unterlagen Folien: homepages.thm.de/hg51 Aufgaben: homepages.thm.de/hg51 [Moodle-Kurs] Literatur Veranstaltungsform 4 SWS, Vorlesung und Übung (seminaristisch) Bitte bringen Sie Ihr Notebook zu jeder Veranstaltung mit! Bitte kommen Sie pünktlich und nur wenn Sie sich an der Veranstaltung aktiv oder passiv beteiligen wollen! Bewertung Eine End-Klausur Eine Hausübung als Klausurzulassung Hausübung = Lösung + Präsentation der Übungen Seite 2
Administratives Voraussetzungen Kenntnisse und Fertigkeiten: Bachelor in Informatik Ausreichende Entwicklerkompetenz Kenntnis der wesentlichen Konzepte der Nebenläufigkeit (Synchronisation, Mutex, Semaphor, etc.) Mathematische Grundlagen (Diskrete Strukturen) Inhalt mit Schwerpunkt auf verteilten Algorithmen Literatur G. Tel: Introduction to Distributed Algorithms, Cambridge University Press A. D. Kshemkalyani, M. Singhal: Distributed Computing V. K. Garg : Concurrent and Distributed Computing in Java, John Wiley A. S.Tanenbaum, M. van Steen: Distributed Systems, Prentice Hall Nancy Lynch: Distributed Algorithms, Morgan Kaufmann Seite 3
Was ist ein verteiltes System Ein verteiltes System ist ein System das aus mehreren aktiven Komponenten besteht die sich an verschiedenen (eventuell logischen) Orten befinden und die eine gemeinsame Anwendung realisieren. Also ein lose gekoppeltes d.h. keine gemeinsamen Ressourcen, nur Nachrichtenaustausch nebenläufiges System. Aktive Komponenten = autonome Handlungsträger (Agenten: Personen, Rechner, Prozesse,...) kooperieren nur durch den Austausch von Nachrichten Die Verteiltheit kann physikalisch sein (Verteilung im Raum) logisch sein (kommunizierende Prozesse) Seite 4
Warum verteilt Natürliche Verteiltheit Viele Systeme sind der Aufgabenstellung her verteilt (Email, Web,..) Steigerung der Leistung Lastteilung Parallele Verarbeitung erhöhte Robustheit Redundanz Backup-Systeme Wirtschaftlichkeit Viele kleine Systeme sind kostengünstiger als ein gleich leistungsfähiges großes System Seite 5
Besondere Herausforderungen Komplexe und vielfältige Problemstellungen Algorithmische Probleme der Verteiltheit Verteilt = Nebenläufig unter verschärften Bedingungen (ohne gemeinsamen Speicher, gemeinsame Uhr,...) sequenziell + Prozesse => nebenläufig nebenläufig gemeinsamer Ressource => verteilt Komplexe Infrastruktur / Heterogenes Umfeld (diverse) Netze, (diverse) Betriebssysteme (diverse) Datendarstellungen (diverse) neueste / coolste / heftig umstrittene / wechselnde Infrastrukturkonzepte mit ihren Marketingstrategien Seite 6
Ziel haben die Aufgabe, die besonderen Probleme der Verteiltheit zu lösen und damit die Verteiltheit auf irgendeiner Ebene transparent (unsichtbar) zu machen. unsichtbar für den Benutzer verteilte Anwendungen machen die Verteiltheit für den Benutzer transparent unsichtbar für das Anwendungsprogramm verteilte Betriebssysteme / Middleware machen die Verteiltheit für die Anwendung transparent Unsichtbar für andere Systemprogramme z.b. IP-Routing macht IP-Netze für TCP/UDP transparent Transparenz ist schwer zu erreichen und darum oft nur graduell angestrebt hat verschiedene Aspekte (Ortstransparenz, Replikationstransparenz,...) Seite 7
Verteilte Algorithmen Verteilte Algorithmen sind ein wichtiges Thema der verteilten systeme und Schwerpunkt der Veranstaltung Herausforderungen verteilter Algorithmen Nebenläufig / Nichtdeterministisch / ohne 'globale Sicht' Kein beteiligter Agent (Maschine / Prozess,..) verfügt über vollständige Informationen über das (Gesamt-) System Entscheidungen müssen auf Basis unvollständiger Informationen getroffen werden Nichtdeterministisch: Variierende Nachrichtenlaufzeit, divergierende Prozessorgeschwindigkeit, Der Ausfall eines Agenten (Maschine / Prozess,..) stoppt das Gesamtsystem nicht: es kann und muss (wie?)! weiter betrieben werden. Seite 8
Verteilte Algorithmen Einsatz Verteilte Algorithmen sind vor allem in der Software der Infrastruktur im Einsatz Netzprotokolle Routing Fehlerkontrolle Verbindungsmanagement Transaktionssysteme Reservierungen verteilte DB Middelware Synchronisation Terminierungs- / Deadlock-Entdeckung verteilte (virtuelle) Ressourcen: Speicher, Uhr, Mobile Anwendungen Sensornetze Seite 9
Verteilte Algorithmen Verteilt vs. nicht verteilt Nicht-verteilt Berechnung: Funktion Input ~> Output Verteilt Netz von Knoten die sich Nachrichten zusenden Jeder Knoten wickelt einen lokalen Algorithmus ab, wenn Nachrichten eintreffen I.d.R. Weniger Algorithmen als Knoten Berechnung: End(?)-Zustand eines / aller Knoten R Eingabe R Funktion Nicht verteilt: sequentiell - funktional Verteilt: zustandsoroientiert, reaktiv R Ausgabe R I Seite 10
Ziel der Veranstaltung Vertrautheit mit etablierten Themen- und Problemstellungen Denkweisen Theorien Ergebnissen der verteilten Systeme mit Schwerpunkt auf verteilten Algorithmen Seite 11
Beispiel Gegeben ein Netz aus Knoten Jeder Knoten hat eine positive ganze Zahl als Startwert Jeder Knoten kann seinen Nachbarn Nachrichten beliebigen Inhalts zusenden. Weitere Interaktionen sind nicht erlaubt. Außer der Bekanntschaft mit ihren Nachbarn haben die Knoten keine Information über das Gesamtnetz Gesucht: Ein Algorithmus oder mehrere Algorithmen deren Ausführung auf den Knoten dazu führt, dass irgendwann jeder Knoten den GGT aller Startwerte kennt und sich auch dieser Tatsache bewusst ist. 60 72 114 18 102 84 Seite 12