Created by Julian Rottenberg
over 6 years ago
|
||
Question | Answer |
Wissensbasierte Modelle (Transaktionaler Speicher) (Benutzung von Semaphoren) (Die Idee) (Dummerweise) | - Kommunikation mittels gemeinsamen Speicher zwar sehr schnell - klassische Synchronisation über wechselseitigen Ausschluss (Semaphore, Monitore) jedoch stark Parallelität limiterend |
Wissensbasierte Modelle (Transaktionaler Speicher) (Benutzung von Semaphoren) (Die Idee) (Gesucht) | - alternatives Synchronisationsparadigma |
Wissensbasierte Modelle (Transaktionaler Speicher) (Benutzung von Semaphoren) (Die Idee) (Transaktionaler Speicher) | - Kommunikation mittels gemeinsamen Speicher - Synchronisationskonzept transaktionaler Systeme |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) | |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Paradigmen zur Synchronisation in parallelen Systemen mit gemeinsamen Speicher) (Semaphore, Leases, (Hoare'sche) Monitore) | => Jobs der Programmierer: - Identifikation kritischer Abschnitte - Korrektheit, Verklemmung, Fairness, Grad der Parallelität,... |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Paradigmen zur Synchronisation in parallelen Systemen mit gemeinsamen Speicher) (Transaktionaler Speicher (TM)) | => Job der Programmierer: - Identifikation kritischer Abschnitte - TM-Paradigma erledigt den Rest |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Ausflug: Definition einer Transaktion) | |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Ausflug: ACID-Eigenschaften) ((acid = bissig, ätzend); Härder 1983) (Atomarität) | - Atomarität (Atomicity): Eine Transaktion ist unteilbar => "alles oder nichts", auch unter Anwesenheit von Ausfällen |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Ausflug: ACID-Eigenschaften) (Konsistenz) | - Konsistenz (Consistency): Eine Transaktion überführt ein System aus einem konsistenten Zustand in den Nächsten => u.a. sind Teilergebnisse während der Ausführung einer Transaktion von außerhalb nicht beobachtbar |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Ausflug: ACID-Eigenschaften) (Isolation) | - Isolation oder Serialisierbarkeit (Serializability): Parallele Transaktionen beeinflussen sich gegenseitig nicht => Wirkung der äquivalent der (irgend)einer sequenziellen Ausführung |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Ausflug: ACID-Eigenschaften) (Dauerhaftbarkeit) | - Dauerhaftbarkeit (Durability): Die Wirkung einer Transaktion nach ihrem Abschluss ist permanent => ... auch unter Anwesenheit von Ausfällen |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Transaktionale Zugriffssemantik) (ACI für Speicherobjekte) | - Programmobjekte (Variablen, Klasseninstanzen, Listen, ...) - Low-Level-Kommunikationsobjekte (Speicherseiten) |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Transaktionale Zugriffssemantik) (Atomarität) | - Unteilbarkeit von Gruppen (evtl. asynchroner) Operationen |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Transaktionale Zugriffssemantik) (Konsistenz) | - Unbeobachtbarkeit von Zwischenergebnissen (z.B. partiell veränderte structs, inkonsistente Listenverzeigerung) |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Transaktionale Zugriffssemantik) (Isolation) | - parallele Transaktionen beeinflussen sich gegenseitig nicht |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Transaktionale Zugriffssemantik) (Beispiel: TM in Java) | |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Transaktionale Zugriffssemantik) (Beispiel: TM in Java) (Variante 1) | |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Transaktionale Zugriffssemantik) (Beispiel: TM in Java) (Variante 2) | |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Wechselseitiger Ausschluss vs. Transaktionen) (Semantik von Transaktionen: beobachtbare Wirkung) | |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Qunitessenz) (Kommunikation und Synchronisation in parallelen Algorithmen) (Performanz) | - Kommunikation über gemeinsamen Speicher - Sperren arme Synchronisation erhöht Grad der Prallelität |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Qunitessenz) (Kommunikation und Synchronisation in parallelen Algorithmen) (Korrektheit und Lebendigkeit) | - Automatisierung der Synchronisation vermeidet Synchronisationsfehler => Programmierparadigma mit kräftigen Erleichterungen für Programmierer paralleler Algorithmen |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Qunitessenz) (Rollenmodell) | - Ausführer von Gruppen synchroner oder asynchroner Operationen -> atomar -> isoliert (ungestört) |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Qunitessenz) (Datenmodell) | Speicherobjekte; typisch - BS-Ebene -> Cache Lines -> Seiten - Anwendungsebene -> Programmvariablen |
https://i.gyazo.com/6d32d9b88d7a2f03dbfe94f4b48f34dd.pngWissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Messages) (TM: alternatives Paradigma zur Koordination von Parallelität) | - |
Wissensbasierte Modelle (Transaktionaler Speicher) (Programmierparadigma) (Messages) (Stand der Kunst: frisch) | |
Zusammenfassung (Problemorientierte Kommunikationsmodelle) (Modellkomponenten) | |
Zusammenfassung (Betrachtete Modelle) | - botschaftenbasierte Modelle -> elementar, universell, zahlreiche Varianten => Teil der API vieler Betriebssysteme => Grundlage problemspezifischer Kommunikationsmodelle |
Zusammenfassung (Betrachtete Modelle) (problemspezifische Modelle) (strombasierte Modelle) | - strombasierte Modelle -> multimediale Informations- und Kommunikationssysteme |
Zusammenfassung (Betrachtete Modelle) (problemspezifische Modelle) (Blackboards) | - Blackboards, ereignisbasierte Modelle -> Workflow-Management-System, Börsenhandel, Cloud Computing |
Zusammenfassung (Betrachtete Modelle) (problemspezifische Modelle) (auftragsorientierte Modelle) | - auftragsorientierte Modelle -> viele Internetanwendungen (Web, E-Mail, DNS), DBMSe |
Zusammenfassung (Betrachtete Modelle) (problemspezifische Modelle) (funktionsaufrufbasierte Modelle) | - funktionsaufrufbasierte Modelle -> Finanz- und Versicherungswirtschaft, Telemetriesysteme (Raumfahrt), Telekommunikationssysteme, Produktionsanlagensteuerung |
Zusammenfassung (Betrachtete Modelle) (problemspezifische Modelle) | - Blackboards, ereignisbasierte Modelle - auftragsorientierte Modelle - funktionsaufrufbasierte Modelle - strombasierte Modelle - wissensbasierte Modelle - transaktionaler Speicher |
Zusammenfassung (Betrachtete Modelle) (problemspezifische Modelle) (wissensbasierte Modelle) | - wissensbasierte Modelle => Ad-hoc-Dienstinfrastrukturen |
Erinnerung: Die 7 Plagen verteilter Systeme (bei der Herstellung der Idealvorstellung des Fernaufrufs) | |
Erinnerung: Ablauf eines RPCs | |
RPC-Systeme (Vorherrschende RPC-Implementierungen - die Qual der Wahl) ("1. Gerneration": u.a.) | - ONC RPC (vormals Sun RPC) - XML-RPC - Java RMI (Remote Methode Invocation) ("OO-RPC") |
RPC-Systeme (Vorherrschende RPC-Implementierungen - die Qual der Wahl) ("2. Gerneration": u.a.) | - Google gRPC - Apache Thrift - Twitter Finagle - Cap'n Proto - JSON-RPC |
RPC-Systeme (ONC (Open Network Computing) RPC) (Überblick) | - entwickelt für Client-Server-Kommunikation im Sun Network File System (NFS) |
RPC-Systeme (ONC (Open Network Computing) RPC) (Bezeichnung) | - auch ONC (Open Network Computing) RPC |
RPC-Systeme (ONC (Open Network Computing) RPC) (basiert auf) | - (Aufruf-)Konventionen, die für Unix-Systeme und die Sprache C üblich sind |
RPC-Systeme (ONC (Open Network Computing) RPC) (Implementierungen) | - existieren für meiste UNIX-artige Systeme, auch für Linux |
RPC-Systeme (ONC (Open Network Computing) RPC) (Konfiguration) | - Protokoll: UDP oder TCP - Fehlersemantiken: at-least-once, at-most-once (unter Mitwirkung des Entwicklers) - optional: Broadcast RPC |
RPC-Systeme (ONC (Open Network Computing) RPC) (Überblick) (Spezifikationssprache RPCL (RPC Language) | - Beschreibung von Stub-Prozeduren etc. - Anlehnung an C-Syntax |
RPC-Systeme (ONC (Open Network Computing) RPC) (Überblick) (Austauschformat XDR (External Data Representation) | - architekturunabhängige Spezifikation und einheitliche Darstellung zu übertragender Daten |
RPC-Systeme (ONC (Open Network Computing) RPC) (Überblick) (Compiler rpcgen) | - erzeugt C-Code |
RPC-Systeme (ONC (Open Network Computing) RPC) (Compiler rpcgen)) | erzeugt auf Basis einer Beschreibung in RPCL 1. Muster (Template) für einen RPC-Client 2. Client-Stub 3. Template für einen RPC-Server 4. Server-Stub 5. gemeinsames Header-File für beide Komponenten 6. Botschaften-Template für Datenaustausch (Sprache XDR) 7. Template eines Makefile für C-Compiler |
RPC-Systeme (ONC (Open Network Computing) RPC) (Ein konkretes Schritt-für-Schritt-Beispiel) (Umwandlung einer lokalen Prozedur in einen Remote Procedure Call (RPC)) (Gegeben: eine einfache lokale Prozedur) | |
RPC-Systeme (ONC (Open Network Computing) RPC) (Ein konkretes Schritt-für-Schritt-Beispiel) (Umwandlung einer lokalen Prozedur in einen Remote Procedure Call (RPC)) (Das C-Programm printmsg) | |
RPC-Systeme (ONC (Open Network Computing) RPC) (Ein konkretes Schritt-für-Schritt-Beispiel) (Umwandlung einer lokalen Prozedur in einen Remote Procedure Call (RPC)) (Ausführung von printsmg (lokal)) | |
RPC-Systeme (ONC (Open Network Computing) RPC) (Ein konkretes Schritt-für-Schritt-Beispiel) (Wie nun Umsetzung als RPC? (1. Schritt: RPCL-Spezifikation) | |
RPC-Systeme (ONC (Open Network Computing) RPC) (Ein konkretes Schritt-für-Schritt-Beispiel) (Wie nun Umsetzung als RPC? (2. Schritt: C-Implementierung der Remote-Prozedur) | |
RPC-Systeme (ONC (Open Network Computing) RPC) (Ein konkretes Schritt-für-Schritt-Beispiel) (Wie nun Umsetzung als RPC? (2. Schritt: C-Implementierung der Remote-Prozedur) (Vergleich: printmessage_1 (remote) vs. printmessage (lokal) | |
RPC-Systeme (ONC (Open Network Computing) RPC) (Ein konkretes Schritt-für-Schritt-Beispiel) (Wie nun Umsetzung als RPC? (3. Schritt: Client-Programm) (1) | |
RPC-Systeme (ONC (Open Network Computing) RPC) (Ein konkretes Schritt-für-Schritt-Beispiel) (Wie nun Umsetzung als RPC? (3. Schritt: Client-Programm) (2) | |
RPC-Systeme (ONC (Open Network Computing) RPC) (Ein konkretes Schritt-für-Schritt-Beispiel) (Wie nun Umsetzung als RPC? (3. Schritt: Client-Programm) (RPC-Bibliotheksroutinen) | - clnt_create(): Client Handle erzeugen -> Parameter "visible" legt fest, dass jedes in /etc/netconfig beschriebene Transportprotokoll verwendet werden kann - clnt_destroy(): Client Handle löschen |
RPC-Systeme (ONC (Open Network Computing) RPC) (Ein konkretes Schritt-für-Schritt-Beispiel) (Wie nun Umsetzung als RPC? (3. Schritt: Client-Programm) (Stub-Routine) | - printmessage_1() |
RPC-Systeme (ONC (Open Network Computing) RPC) (Ein konkretes Schritt-für-Schritt-Beispiel) (Wie nun Umsetzung als RPC? (3. Schritt: Client-Programm) (Fehlermanagement) | - clnt_pcreaterror(): Fehlerausgabe mit Hinweis, warum RPC handle nicht erzeugt werden konnte, erzeugen - clnt_perror(): Fehlerausgabe mit Hinweis, warum RPC fehlgeschlagen ist, erzeugen |
RPC-Systeme (ONC (Open Network Computing) RPC) (Ein konkretes Schritt-für-Schritt-Beispiel) (Kompilieren und Ausführen) | |
RPC-Systeme (Typischer Workflow) | |
RPC-Systeme (Synchrone RPCs vs. asynchrone RPCs) | |
RPC-Systeme (Google gRPC) (Anwendungsfeld) | - Microservices |
RPC-Systeme (Google gRPC) (Use Cases) | - verteilte Applikationen (Data Centers, Public/Private Cloud) - Client-Server-Kommunikation (Mobile, Web, Cloud, eingebettete Systeme, IoT) - Zugriff auf Google Cloud Services (z.B. von GPC, Android-/iOS-Geräten) |
RPC-Systeme (Google gRPC) (Prominente Anwender) | - Square, Netflix, CoreOS (Container Linux), Cisco, ... |
RPC-Systeme (Google gRPC) (Sprachunterstützung, Kommunikationsprotokoll, Nachrichtenformat) | |
RPC-Systeme (Google gRPC) (Typischer Entwicklungsablauf) | - Spezifikation des Protobuf-Interfaces - Anwendung des Protobuf-Compilers protoc: Generierung der Service - Implementierung der Services im Server - Instanziierung des Stubs im Server - Testen, testen, testen, ... Done! |
Programmierparadigmen | Programmierparadigmen |
Algorithemenparadigma | - Allgemein: "Paradigma" [griechisch] das: Beispiel, Muster (Brockhaus) - Informatik: "Muster" für Entwurf und Formulierung von Algorithmen |
Applikativ | - Verallgemeinerung der Funktionsauswertung |
Imperativ | - basierend auf einem einfachen Maschinenmodell mit gespeicherten und änderbaren Werten |
Deduktiv | - basierend auf logischen Aussagen und Schlussfolgerungen |
Applikative Algorithmen | |
Applikative Algorithmen (Grundidee) | - Definition zusammengesetzter Funktionen durch Terme: f(x) = 5x +1 |
Applikative Algorithmen (Unbestimmte) | - x, y, z, .... vom Typ int - q, p, r, .. vom Typ bool |
Applikative Algorithmen (Terme mit Unbestimmten) | |
Applikative Algorithmen (Funktionsdefinitionen) | |
Applikative Algorithmen (Erweiterung der Funktionsdefinition) | |
Applikative Algorithmen (applikativer Algorithmus) | |
Kategorisieren der funktionalen Sprachen (Erste Ordnung) | - Funktionen können (nur) definiert und aufgerufen werden |
Kategorisieren der funktionalen Sprachen (Höhere Ordnung) | - Funktionen können außerdem als Parameter an Funktionen übergeben werden und/oder Ergebnisse von Funktionen sein - Funktionen sind hier auch Werte! -- erstklassige Werte; - Erstklassig: Es gibt keine Einschränkungen - Umgekehrt: Wert ist eine Funktion ohne Parameter |
Kategorisieren der funktionalen Sprachen (Auswertungsstrategie) (Strikte Auswertung) | - Synonyme: strict evaluation, eager evaluation, call by value, applikative Reduktion - Die Argumente einer Funktion werden vor Eintritt in die Funktion berechnet (ausgewertet) - wie z.B. in Pascal oder C |
Kategorisieren der funktionalen Sprachen (Auswertungsstrategie) (Bedarfsauswertung) | |
Kategorisieren der funktionalen Sprachen (Typisierung) (Stark typisiert) | - Die verbreiteten funktionalen Programmiersprachen sind stark typisiert, d.h. alle Typfehler werden erkannt -> Statisch typisiert: Typprüfung wird zur Übersetzungszeit ausgeführt -> Dynamisch typisiert: Typprüfung wird zur Laufzeit ausgeführt |
Kategorisieren der funktionalen Sprachen (Typisierung) (Untypisiert) | - Reiner Lambda-Kalkül |
Unsere Welt und unser Handeln sind nebenläufig | |
Nebenläufige Programmierung und Erlang | |
Endliche Automaten (1) | |
Endliche Automaten (2) | |
Zusammenfassung Nebenläufigkeit | |
Kalküle (Kalküle sind) | - Minimalistische Programmiersprachen zur Beschreibung von Berechnungen - Mathematische Objekte, über die Beweise geführt werden können |
Der untypisierte λ-Kalkül | |
Strukturelle Induktion | |
Der untypisierte λ-Kalkül (λ-Terme) | |
Der untypisierte λ-Kalkül (Variablenkonvention) (Abstraktion ist rechtassoziativ) | |
Gründe für verteilte Programme | |
Kommunikationsmodelle (Asynchrone Kommunikation) | |
Kommunikationsmodelle (Synchrone Kommunikation) | |
Vergleich (asynchron vs synchron) | |
Aktormodell | |
Aktormodell (Bild) | |
RPC: Prinzip | |
Fehlersemantik bei RPC (Umgang mit Timeouts, Serverausfall, etc...) (Maybe) | - Keine Wiederholung des Prozeduraufrufs - Keine Garantie für Ausführung |
Fehlersemantik bei RPC (Umgang mit Timeouts, Serverausfall, etc...) (At-least-once) | - Wiederholte Ausführung, aber keine Erkennung von Nachrichtenduplikaten - Nur für idempotente Operationen (z.B. Lesen) |
Fehlersemantik bei RPC (Umgang mit Timeouts, Serverausfall, etc...) (At-most-once) | - Garantie, dass mehrfache Client-Aufrufe nicht zum mehrmaligen Prozeduraufruf führen, z.B. durch Sequenznummern der Nachrichten, Protokollierung -> Duplikateliminierung - Für nicht-idempotente Operationen (z.B. Einfügen, Löschen) |
Parallelprogrammierung (Einordnung) | |
Parallelprogrammierung (Multiprozessorsysteme) | |
Parallelprogrammierung Symmetrisch vs. Nicht-symmetrisch | |
Parallelprogrammierung Flynn‘s Architekturklassifikation | |
Parallelprogrammierung Maße zur Leistungsbewertung | |
Parallelprogrammierung Amdahlsches Gesetz (1) | |
Parallelprogrammierung Amdahlsches Gesetz (2) | |
Parallelprogrammierung Parallelisierungsarten (Task-Parallelität) | - Ausnutzung inhärenter Parallelität durch simultane Ausführung unabhängiger Aufgaben |
Parallelprogrammierung Parallelisierungsarten (Datenparallelität) | - Gemeinsame Operation auf homogener Datenmenge - Zerlegung eines Datensatzes in kleinere Abschnitte |
Parallelprogrammierung (Taskparallelität) | |
Parallelprogrammierung (Datenparallelität) | |
Parallelprogrammierung Parallele Programmierung in Erlang | |
Parallelprogrammierung Job und Task Tracker | |
Parallelprogrammierung MapReduce: Fazit | |
Parallelprogrammierung in Java | Unterstützt durch -> Thread-Konzept - eingebaute Mechanismen zur Synchronisation nebenläufiger Prozesse - spezielle High-Level-Klassen im Packet java.util.concurrency |
Parallelprogrammierung Threads | |
Parallelprogrammierung Threads in Java | |
Parallelprogrammierung (Threads) Wechselseitiger Ausschluss | |
Parallelprogrammierung Tasks und Futures | |
Parallelprogrammierung Zusammenfassung | |
Generische Programmierung (Typ-Substituierbarkeit) | |
Generische Programmierung Kovarianz und Kontravarianz | |
Generische Programmierung (Kovarianz und Kontravarianz in Vererbungshierarchien) | |
Generische Programmierung (Kovarianz und Kontravarianz) (In objektorientierten Programmiersprachen) | - Kontravarianz: für Eingabeparameter - Kovarianz: für Rückgabewerte und Ausnahmen - Invarianz: für Ein- und Ausgabeparameter |
Want to create your own Flashcards for free with GoConqr? Learn more.