Kommunikationsmodelle 3 & Programmierparadigmen

Description

Flashcards on Kommunikationsmodelle 3 & Programmierparadigmen, created by Julian Rottenberg on 04/07/2018.
Julian Rottenberg
Flashcards by Julian Rottenberg, updated more than 1 year ago
Julian Rottenberg
Created by Julian Rottenberg almost 6 years ago
14
0

Resource summary

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
Show full summary Hide full summary

Similar

ein kleines Informatik Quiz
AntonS
Informatik
Tom Kühling
Kommunikationsmodelle 2
Julian Rottenberg
PHP Grundlagen
chrisi.0605
Wirtschaftsinformatik Teil 2
Sabrina Heckler
Informatik 1 - Einführung
Svenja
Codierung
Tom Kühling
Wirtschaftsinformatik Teil 1
Sabrina Heckler
Einführung in das Studium Informatik
Daniel Doe
Lernplan
Sandra K