Reactive Programming. Funktionale Programmierung. Christoph Knabe FB VI
|
|
- August Victor Schreiber
- vor 5 Jahren
- Abrufe
Transkript
1 Reactive Programming Funktionale Programmierung Christoph Knabe FB VI
2 Inhalt Reactive Programming Was ist Reactive Programming Geschichte der asynchronen Programmierung Wo bleibt die Zeit? Wartefreies Arbeiten Probleme von Threads Parallelitätswahn Das Aktorenmodell, Actor-Bibliotheken, Akka Ein Ping-Pong-Beispiel Nachrichten definieren, verarbeiten, senden ActorRef, ActorSystem, ActorContext, Scheduler Zusammenfassung 2
3 Reactive Programming Was ist Reactive Programming Moderner Architekturstil In Gartner: Hype Cycle for Application Architecture : 2014 On the Rise, 2015 At the Peak Beschrieben in The Reactive Manifesto V2 Deutlich detaillierter in V1 Eigenschaften: Responsive, kurze Antwortzeiten Resilient unverwüstlich, antwortet auch im Fehlerfall Elastic antwortet auch bei hoher Belastung Message Driven basiert auf asynchroner Nachrichtenübermittlung. 3
4 Reactive Programming Geschichte: Synchrone Programmierung Computer begannen synchron Zuse 22 (1957): Befehle kamen direkt vom Trommelspeicher 0,6ms pro Befehl (Int-Addition) Kein Zeitverlust, wenn Befehle nur sequentiell Zeitverlust Ø ½ Umdrehung = 9,6 ms bei Sprung 4
5 Reactive Programming Geschichte der asynchronen Programmierung CPU schnell, Ein/Ausgabe langsam Wie CPU ausnützen? Multiprogramming (LEO III, 1961) I/O-Wartezeiten überbrücken durch Context Switch Multi-Tasking (pdp-8, 1965) Mehrbenutzerbetrieb, unabhängige Prozesse, regelmäßiger Context Switch für Antwortzeitgarantie 5
6 Wo bleibt die Zeit? Reactive Programming Wartezeiten nach Peter Norvig Latency numbers every programmer should know: 0.5 ns L1 cache reference 7 ns L2 cache reference 100 ns Main memory reference 150 µs SSD random read 10 ms Hard Disk seek 150 ms Send package US-CA NL CA Punktediagramm ansehen in Ausprobieren ping java.sun.com 6
7 Reactive Programming Wie kann ich mir das vorstellen? Übersetzt in menschliche Dimensionen * 10 9 Würden Sie gern so lange warten? Sek. L1 cache reference 7 Sek. L2 cache reference 100 Sek. Main memory reference 1,7 Tage SSD random read 16,5 Wochen Disk seek 4,8 Jahre Send package US-CA NL CA 7
8 Wartefreies Arbeiten Reactive Programming Multi-Tasking (z.b. Unix) Unabhängige Prozesse mit je eigenem Speicher Kommunikation durch Mailboxen oder Dateisystem Sicher, aber aufwändig (Speicher, Prozesswechsel) Multithreading In einem Prozess laufen mehrere Threads parallel. Gemeinsamer Arbeitsspeicher und Dateideskriptoren Eigener Registersatz und Call-Stack Viel sparsamer als unabhängige Prozesse Synchronisationsbedarf wegen gemeinsam genutzter Ressourcen. 8
9 Reactive Programming Viele Köche verderben den Brei In Java parallele Programmierung mit Threads: Thread = sequentieller Ablauffaden parallele Ausführung mehrerer Threads gemeinsame Daten müssen in synchronized-objekt versteckt werden. Folgt C.A.R. Hoare: Monitors: An Operating System Structuring Concept, 1974 Probleme: Inkonsistenzen, wenn Zugriff auf gemeinsame Daten nicht synchronized läuft. Verlangsamung wegen Wartens auf synchronized-objekt Deadlocks bei gegenseitigem Warten Starvation (Verhungern) bei ungerechtem Scheduling und mehreren Wartenden. 9
10 Im Parallelitätswahn Reactive Programming Auf Java Servlet Platform (JEE): Jeder Request erhält eigenen Thread. Belegt diesen, bis die Antwort abgeliefert ist. Also ca. 150 ms ( 5 Jahre!) Davon das meiste Wartezeit! Ein Thread belegt ca. 1 MB. Parallelitätsbedarf: Google: Wieviel Requests pro Sekunde? Google-Antwortzeit? time wget Multiplizieren 10
11 Reactive Programming Diensteaggregation Verschärfung des Warteproblems Beispiel Flugsuche: Anfrage mit Zielort Folgeanfrage bei Bahn Warten auf Flughäfen Folgeanfrage bei Fliegern Warten auf Flüge Antwort mit Flügen Flugsuche Synchroner Ansatz (Threads): Warten kaskadiert. Asynchroner Ansatz: Anfrage blockiert keine Ressourcen. 11
12 Eine reaktive Website Reactive Programming kono.be/vivo: Vielsprachige Terminologie-Anwendung Sucht Übersetzungen und Artikel Aggregiert zahlreiche Sprachsites Oberfläche voll asynchron Suchen z.b. nach Blog (en) 12
13 Reactive Programming Wie Parallelität bewältigen? Actor Model: Nachrichtenbasiert Futures (+ Promises): Dienstaufruf liefert Future Returniert sofort. Ruft den Aufrufer mit Ergebnis (Callback). Reactive Streams: Modellierung von asynchronen Datenflüssen Standard-Interfaces auf JVM Implementierungen Akka, Ratpack, Reactor, RxJava, Vert.x, DB-Treiber 13
14 Ein Aktor steht höher Reactive Programming Monitor-Konzept kam aus Betriebssystemen. Aktorenmodell kam aus der Künstlichen Intelligenz Carl Hewitt, Peter Bishop, Richard Steiger: A Universal Modular Actor Formalism for Artificial Intelligence, 1973 höherwertige Abstraktion kein geteilter Zustand Aktor-Eigenschaften Läuft parallel zu anderen Aktoren. Reagiert auf Nachrichten sequentiell. Kann Nachrichten versenden. Kapselt eigenen Zustand. Alle zusammen benötigen nur 1 Thread je CPU-Kern. Frage: Wieviel Threads bzw. Actors können Sie im gleichen Arbeitsspeicher erzeugen? 14
15 Aktor-Praxis Reactive Programming Act-1 (MIT, 1981, Henry Liebermann) Jedes Objekt war ein Aktor. Benutzt für Künstliche Intelligenz. Erlang (Ericsson, 1987, Joe Amstrong) Funktionale Sprache Aktor ist Teil der Sprache. Zustand nur im Aktor Einsatz im Telekommunikationsbereich Äußerst geringe Ausfallquote Vorbild für Scala-Aktoren. 15
16 Reactive Programming Aktor-Bibliotheken in Scala Package scala.lang.actors Zunächst einzige Aktor-Implementierung in Scala Seit Scala 2.10 deprecated. Lift Actors Wurden im Web-Framework Lift wegen Performanzproblemen der scala.lang.actors eingeführt. Sehr leichtgewichtig Akka Actors Populärste Scala-Aktor-Bibliothek Mit Scala- und Java-API Hierarchisches Aktor-Modell Wenn Aktor ausfällt, Neustart durch Mutter-Aktor 16
17 Reactive Programming Akka-Aktoren anfordern in build.sbt Scala-Version festlegen: scalaversion := "2.10.4" Abhängigkeit von Akka-Aktoren angeben: librarydependencies ++= Seq( "com.typesafe.akka" %% "akka-actor" % "2.3.5" ) 17
18 Reactive Programming Wir wollen Ping-Pong spielen Ein Reflector soll Ping-Nachrichten verstehen: object Reflector { case class Ping(id: Int) } Ein Reflector ist ein Actor: class Reflector extends Actor with ActorLogging Ein Actor startet sofort nach Erzeugung. Ein Actor darf Zustand haben: var count = 0 18
19 Reactive Programming Nachrichtenverarbeitung im Aktor Er erhält seine Nachrichten sequentiell Nachrichtenverarbeitung wirkt wie Transaktion auf seinen Zustand: count += 1 Ein Actor lauscht auf Nachrichten mit receive: def receive: Receive = { case p: Ping => count += 1 log.debug(s"received $p as #$count.") } Typ Receive ist partielle Abbildung Any => Unit 19
20 Nachrichten senden Reactive Programming Der Thrower muss wissen, wohin Ping senden: class Thrower(reflector: ActorRef) extends Actor with ActorLogging Er soll 100 Ping-Nachrichten senden: for(i <- 1 to 100) { reflector! Reflector.Ping(i) }! sendet asynchron. Man nennt es den Bang-Operator. 20
21 Aktoren erzeugen Reactive Programming Wir brauchen zuerst ein ActorSystem: Im ActorSystem leben die Aktoren. val system = ActorSystem("PingPong") Erzeugen des parameterlosen Reflector-Aktors: val reflector: ActorRef = system.actorof(props[reflector], "Reflector") Erzeugen des parametrierten Thrower-Aktors: system.actorof( Props(classOf[Thrower], reflector), "Thrower" ) 21
22 Aktor-Regeln Reactive Programming Nie Referenz auf ein Actor-Objekt weitergeben. Das ActorSystem muss die Fäden in der Hand behalten. val system = ActorSystem("PingPong") Nicht warten im Actor: Kein Thread.sleep()! Keine Aufrufe von blockierenden Methoden wie in java.io oder traditionellen Datenbanktreibern! Verzögerte Aktionen mit Scheduler einplanen. Nur unveränderliche Objekte versenden! 22
23 Reactive Programming Actor-Methoden im Trait Actor ActorRef auf eigenen Actor liefern: self Bsp. Nachricht an sich selbst senden: self! Nachricht(...) ActorRef auf Absender-Actor liefern: sender Bsp. Antwort an Absender senden: sender! Antwort(...) Kontext des Actors liefern: context Nur im aktuellen Aktor gültig! 23
24 Reactive Programming Kontext-Methoden im Trait ActorContext Das ActorSystem liefern: context.system Bsp. System herunterfahren: context.system.shutdown() ActorRef auf Mutter-Actor liefern: context.parent Aktuelles Verhalten durch neues ersetzen: context become newreceivemethod Tod eines anderen Aktors überwachen: context watch otheractorref 24
25 Der Scheduler Reactive Programming Dient zum Einplanen von Nachrichtenlesen und Aktionen. Siehe Einmalige Nachricht an sich einplanen, Bsp.: import scala.concurrent.duration._ context.system.scheduler.scheduleonce( 5.millis, self, "Shutdown" )(context.dispatcher, self) Regelmäßige Nachricht mittels schedule 25
26 Ping-Pong vorführen Reactive Programming In IDEA Projekt frp5scala öffnen Klassen PingPongMain, Reflector, Thrower PingPongMain mehrmals starten Undeterministisches Verhalten wegen Shutdown- Kommando nach 5 Millisekunden 26
27 Zusammenfassung Reactive Programming Reactive Systems: Schnelle, unverwüstliche, skalierbare Systeme basierend auf asynchronem Nachrichtenversand Aktorenmodell: Kein geteilter Zustand mittels asynchronem Nachrichtenversand Kein Warten, sondern bei Nachricht reagieren gut parallelisierbar und skalierbar 27
28 Quellen Reactive Programming Gartner-Analyse zum Hypecycle in Appl.Arch Gartner-Analyse zum Hypecycle in Appl.Arch The Reactive Manifesto V2 Principles of Reactive Programming MOOC der EPFL, jetzt Nachfolge: 5 Kurse Futures, Actors, Reactive Streams Sehr gute, aber harte Einführung 28
29 Quellen: Vielen Dank
Reactive Programming. Funktionale Programmierung. Christoph Knabe FB VI 10.12.2014
Reactive Programming Funktionale Programmierung Christoph Knabe FB VI 10.12.2014 Inhalt Reactive Programming Was ist Reactive Programming Geschichte der asynchronen Programmierung Wo bleibt die Zeit? Wartefreies
MehrSoftware-Architektur Actors
Actors Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München SS 2015 Actor Model 1973 von Carl Hewitt, Peter Bishop und Richard Steiger vorgeschlagenes Modell für nebenläufige
MehrTwitter & GitHub: romanroe
ReactiveX mit RxJava Roman Roelofsen - WK GmbH / thecodecampus Twitter & GitHub: romanroe Über mich Alpha Geek, Entwickler, Trainer WK GmbH - The Web Engineers Individualsoftware thecodecampus Schulungsanbieter
MehrAkka.NET. Aktor basierte Programmierung in.net
Akka.NET Aktor basierte Programmierung in.net CPU Entwicklung Taktfrequenz stagniert zunehmende Anzahl Kerne Parallel Programmierung Aufgabenstellung muss parallelisierbar sein Kommunikation zwischen Ausführungs-Einheiten
MehrJavakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 07: Nebenläufigkeit Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Einführung in die Nebenläufigkeit und Java Thread Konzept: Motivation
MehrTesten nebenläufiger Objekte
Testen nebenläufiger Objekte Threads in Java Julian Lambertz Seminar Tests in Informatik und Statistik im SS 2004 Universität Ulm J.L., Juni 2004 1 Themenüberblick Einleitung Begriff der Nebenläufigkeit
MehrAusdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI
Ausdrücke in Scala Funktionale Programmierung Christoph Knabe FB VI 17.10.2014 Inhalt Einfache Ausdrücke Infix-Notation für Methodenaufruf Sonderzeichen in Bezeichnern Schlüsselwörter Konstanten Variablen
MehrNebenläufige und verteilte Programme CS2301
Nebenläufige und verteilte Programme CS2301 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Netze mit aktiven und reaktiven Knoten Produzent Konsument: aktiv / passiv / reaktiv
MehrVerteilte Algorithmen TI5005
Verteilte Algorithmen TI5005 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Prozess-Netze mit Aktoren Produzent / Konsument / Pipeline Client-Server Abstraktion der Partner Produzent
MehrReaktive Programmierung Vorlesung 10 vom : Reactive Streams (Observables)
14:21:12 2015-06-24 1 [1] Reaktive Programmierung Vorlesung 10 vom 02.06.15: Reactive Streams (Observables) Christoph Lüth & Martin Ring Universität Bremen Sommersemester 2015 2 [1] Fahrplan Teil I: Grundlegende
MehrVerteilte Systeme. Nebenläufigkeit. Prof. Dr. Oliver Haase
Verteilte Systeme Nebenläufigkeit Prof. Dr. Oliver Haase 1 Arten der Nebenläufigkeit 1-Prozessor(kern)-System quasiparallele Ausführung erhöht Interaktivität durch Umschalten zwischen Threads kann Parallelitätsgrad
MehrJavaLand,
KOROUTINEN MIT KOTLIN JavaLand, 2018 @RenePreissel https://github.com/rpreissel/kotlin-coroutine.git INHALT Warum Koroutinen? Umsetzung von Koroutinen in Kotlin Asynchrone Kommunikationsmuster mit Koroutinen
MehrVerteilte Algorithmen TI5005
Verteilte Algorithmen TI5005 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Aktoren Aktor-Modell Aktor-Implementierung: Akka-Aktoren Aktoren Aktoren: Modell und Progammkonstrukt Computer
MehrVerteilte Systeme - Java Networking (Sockets) -
Verteilte Systeme - Java Networking (Sockets) - Prof. Dr. Michael Cebulla 30. Oktober 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 36 M. Cebulla Verteilte Systeme Gliederung Grundlagen TCP/IP
MehrSysteme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard
Systeme I: Betriebssysteme Kapitel 4 Prozesse Wolfram Burgard Version 18.11.2015 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen
MehrDas Actor-Modell und Umsetzung in Proto.Actor
Verteilte Softwaresysteme Das Actor-Modell und Umsetzung in Proto.Actor Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 16.04.2019 12:55 Inhaltsverzeichnis Actor-Modell 2 Nebenläufige
MehrSchnell reagiert! Reaktive Systeme auf der Java-Plattform mit Vert.x und Reactor Martin Lehmann, Accso GmbH Java Forum Stuttgart 2015
1 Schnell reagiert! Reaktive Systeme auf der Java-Plattform mit Vert.x und Reactor Martin Lehmann, Accso GmbH Java Forum Stuttgart 2015 jfs2015:~ # who am i Diplom-Informatiker Seit 2010 Mitglied der Geschäftsleitung
MehrNebenläufigkeit in Scala: Aktoren
Nebenläufigkeit in Scala: Aktoren Andreas de Vries Fachhochschule Südwestfalen, Campus Hagen WS 2010/11 1 / 37 Inhalt 1 Begriffsklärungen: Threads und Nebenläufigkeit 2 Prinzipielle Probleme der Nebenläufigkeit
MehrProzesse. Prozesse sind Programme. Prozesse können aus Unterprozessen bestehen. Prozesshierarchie Unterprozesse Threads
Threads Prozesse, Parallelität, Nebenläufigkeit, Threads, Erzeugung, Ausführung, Kommunikation, Interferenz, Kritischer Bereich, Deadlock, Synchronisation. Prozesse Prozesse sind Programme mehrere Prozesse
MehrVerteilte Systeme CS5001
Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Aktoren - Aktor-Modelle und -Systeme - Aktoren in Scala / Akka (Kurzeinführung) Aktoren Computer science is
MehrDie Sicht eines Sysadmins auf DB systeme
Die Sicht eines Sysadmins auf DB systeme Robert Meyer 21. Oktober 2016 Robert Meyer Die Sicht eines Sysadmins auf DB systeme 21. Oktober 2016 1 / 20 Inhaltsverzeichnis 1 Einleitung 2 IO unter Linux typische
MehrVererbung und Traits
Vererbung und Kiermaier Ulrich FWP-Fach: Scala: Java-Nachfolger oder akademisches Experiment? 11.5.2010 Übersicht Aufbau nach dem Buch Programming in Scala von Martin Odersky, Lex Spoon, Bill Venners Vererbung
MehrWintersemester 2009/10 Helmut Seidl Institut für Informatik TU München
Informatik2 Wintersemester 2009/10 Helmut Seidl Institut für Informatik TU München 1 0 Allgemeines Inhalt dieser Vorlesung: Nebenläufigkeit in Java; Funktionales Programmieren mit OCaml :-) 2 1 Threads
MehrInhaltsverzeichnis. Lothar Piepmeyer. Grundkurs funktionale Programmierung mit Scala ISBN:
Lothar Piepmeyer Grundkurs funktionale Programmierung mit Scala ISBN: 978-3-446-42092-2 Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-42092-2 sowie im Buchhandel. Carl Hanser
MehrDie Scala Entwicklungsumgebung. L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
Die Scala Entwicklungsumgebung 1 Was ist drin? Die Scala-Entwicklungsumgebung enthält Die Scala-Shell: scala Zwei Compiler: scalac und fsc (Fast Scala Compiler) Die API Die Laufzeitumgebung Den Scala-Basar
MehrBetriebssysteme Vorstellung
Am Anfang war die Betriebssysteme Vorstellung CPU Ringvorlesung SE/W WS 08/09 1 2 Monitor CPU Komponenten eines einfachen PCs Bus Holt Instruktion aus Speicher und führt ihn aus Befehlssatz Einfache Operationen
MehrNebenläufigkeit mit Java
Nebenläufigkeit mit Java Einheit 01: Einführung in das Java-Threadkonzept Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Organisatorisches Ziele, Aufbau und Inhalte Zielgruppe,
MehrProgrammieren 2 12 Netzwerke
Programmieren 2 12 Netzwerke Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Motivation Datenaustausch zwischen Programmen Spielstand Chat
MehrJava Concurrency Utilities
Java Concurrency Utilities Java unterstützt seit Java 1.0 Multithreading Java unterstützt das Monitorkonzept mittels der Schlüsselworte synchronized und volatile sowie den java.lang.object Methoden wait(),
MehrSysteme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz
Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 21.11.2012 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Testat nach Weihnachten Mittwoch
MehrDomänenorientierte Softwarearchitektur mit CÉU und RUST am Beispiel eines Heizungsgateways zur Fernüberwachung und Fernparametrisierung
Domänenorientierte Softwarearchitektur mit CÉU und RUST am Beispiel eines Heizungsgateways zur Fernüberwachung und Fernparametrisierung Matthias Terber 18. November 2016 1 Agenda 1. Motivation Gateway
MehrInduktion nach der Länge n von x
Allgemeiner: app (rev x) y = rev1 x y füralle Listenx, y. Beweis: n = 0 : Induktion nach der Länge n von x Dann gilt: x = []. Wirschließen: app (rev x) y = app (rev []) y = app (match [] with [] -> []...)
MehrSymbian OS. OS für kleine Endgeräte: Sven Walter
OS für kleine Endgeräte: Sven Walter 19.07.2004 1 1. Einleitung Symbian ist ein Software Unternehmen, das ein offenes Betriebssystem für datenfähige Mobiltelefone entwickelt. Es wurde im Juni 1998 von
MehrComputergrundlagen Moderne Rechnerarchitekturen
Computergrundlagen Moderne Rechnerarchitekturen Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Aufbau eines modernen Computers DDR3- Speicher Prozessor Prozessor PEG
MehrVorlesung Informatik II
Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 17. JAVA Kommunikation von Threads 1 Motivation
MehrNebenläufige und verteilte Programme CS2301
Nebenläufige und verteilte Programme CS2301 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Monitorprogramme: Passive Monitore und aktive Threads Monitor-Anwendungen: Spezifikation
MehrPROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker
Multithreading PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker Steffen Helke Technische Universität Berlin Fachgebiet Softwaretechnik 10. Juni 2013 Übersicht Rückblick: Producer-Consumer-Problem
MehrEINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG FORTGESCHRITTENE KONZEPTE Tobias Witt!! 26.03.2014 FEHLERBEHANDLUNG KLASSISCHER ANSATZ Fehlercode als Rückgabewert von Methoden! String Fehlercode als String! int Fehlercode
MehrFunktionale und Objekt-Orientierte Programmierkonzepte
Funktionale und Objekt-Orientierte Programmierkonzepte Prof. Marc Fischlin, Wintersemester 15/16 Kapitel 17: GUI, Threads und verschachtelte Klassen 13. Oktober 2010 Dr.Marc Fischlin Kryptosicherheit 1
MehrParallele Prozesse. Prozeß wartet
Parallele Prozesse B-66 Prozeß: Ausführung eines Programmes in seinem Adressraum (zugeordneter Speicher) Parallele Prozesse: gleichzeitig auf mehreren Prozessoren laufende Prozesse p1 p2 verzahnte Prozesse:
MehrVerteilte Systeme - Java Networking (Sockets) 2 -
Verteilte Systeme - Java Networking (Sockets) 2 - Prof. Dr. Michael Cebulla 06. November 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 30 Michael Cebulla Verteilte Systeme Gliederung Wiederholung:
MehrDezentrale Kontrolle: Aktive Objekte. Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread
Dezentrale Kontrolle: Aktive Objekte Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread Passive Objekte Bieten Dienste auf Abruf an: - eine Zahl von der Konsole
MehrAufbau eines modernen Betriebssystems (Windows NT 5.0)
Aufbau eines modernen Betriebssystems (Windows NT 5.0) Moritz Mühlenthaler 14.6.2004 Proseminar KVBK Gliederung 1.Das Designproblem a) Überblick b) Design Goals c) Möglichkeiten der Strukturierung 2. Umsetzung
MehrSequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )
Threads Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden ) Ein thread bearbeitet eine sequentielle Teilaufgabe innerhalb eines Prozesses Mehrere nebenläufige
MehrBeispiel Klausuraufgaben
Beispiel Klausuraufgaben HINWEIS: In diesem Dokument befinden sich mehrere Aufgaben. Es ist keine Beispielklausur. In der Klausur werden nur ca. 2 Aufgaben zu meinen Themengebieten (Nebenläufigkeit, Visuelle
MehrWas sind Reaktive Streams? Java Forum Stuttgart 2018
Was sind Reaktive Streams? Java Forum Stuttgart 2018 Jörg Hettel Agenda Verarbeitungsparadigmen Pull- versus Push-Verarbeitung Java 8 -Streams Concurrency-Model Grundprinzipien der reaktive Programmierung
MehrThread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen
Thread-Synchronisation in in Java Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen Die Klasse Thread Die Die Klasse Thread gehört zur zur Standardbibliothek von von
MehrBaby Steps mit Akka. Dr. Stefan Schlott BeOne Stuttgart GmbH
Baby Steps mit Akka Dr. Stefan Schlott BeOne Stuttgart GmbH Ordnung am Anfang Ein Projekt entwickelt sich... Wird bei uns nie passieren! Java 5: Executioner Threadpool-Verwaltung Bringt Arbeitspakete zur
MehrGrundlagen der Automatisierungstechnik. (Automatisierungstechnik 1) 5. Echtzeit
Grundlagen der Automatisierungstechnik (Automatisierungstechnik 1) 5. Echtzeit Definition von Echtzeit Häufiges Missverständnis Echtzeit bedeutet schnell FALSCH Richtige Definition Ein Echtzeitsystem garantiert
MehrComputeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software
Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL3 Folie 1 Grundlagen Software steuert Computersysteme
MehrNebenläufige Programme mit Python
Nebenläufige Programme mit Python PyCon DE 2012 Stefan Schwarzer, SSchwarzer.com info@sschwarzer.com Leipzig, Deutschland, 2012-10-30 Nebenläufige Programme mit Python Stefan Schwarzer, info@sschwarzer.com
MehrBetriebssysteme G: Parallele Prozesse (Teil A: Grundlagen)
Betriebssysteme G: Parallele Prozesse (Teil A: Grundlagen) 1 Prozesse Bei Betriebssystemen stoßen wir des öfteren auf den Begriff Prozess als wahrscheinlich am häufigsten verwendeter und am unklarsten
MehrSoftware Engineering I (IB) Node.js. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München
Software Engineering I (IB) Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 15.11.2018 08:01 Inhaltsverzeichnis JavaScript auf dem Server!?............................ 1 Hello
MehrJava als erste Programmiersprache
Joachim Göll Cornelia Heinisch Java als erste Programmiersprache Grundkurs für Hochschulen 8., überarbeitete Auflage Springer Vi eweg Inhaltsverzeichnis 1 Grundlagen der Programmierung 1 1.1 Das erste
MehrProgrammierparadigmen und Sprachen
Fakultät Informatik Institut für Software- und Multimediatechnik Professur Softwaretechnologie Programmierparadigmen und Sprachen Scala Paul Henke Dresden, 07.05.2009 Gliederung Hello World Scala? Features
MehrLebenszyklus von Threads
Threads Umgangssprachlich Faden, Diskussionsfaden, Gewinde, Faser, Garn, roter Faden Threads ermöglichen Nebenläufigkeit (parallele Ausführung von Anwendungsteilen). Typisch für Threads ist,dass sie zu
MehrEinführung Verteilte Systeme - Java Threads III -
Einführung Verteilte Systeme - Java Threads III - Prof. Dr. Michael Cebulla 04. Dezember 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 45 M. Cebulla Verteilte Systeme Gliederung Wiederholung
MehrProzesse and Threads WS 09/10 IAIK 1
Prozesse and Threads WS 09/10 IAIK 1 Prozesse Programm in Ausführung Mit einem Prozess verbunden: Adressraum Folge von Speicherstellen auf die der Prozess zugreifen kann Enthält ausführbares Programm,
MehrEinführung: Verteilte Systeme - Remote Method Invocation -
Einführung: Verteilte Systeme - - Prof. Dr. Michael Cebulla 11. Dezember 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 43 M. Cebulla Verteilte Systeme Gliederung 1 2 Architektur RMI Kommunikation
MehrBetriebssysteme. Tutorium 2. Philipp Kirchhofer
Betriebssysteme Tutorium 2 Philipp Kirchhofer philipp.kirchhofer@student.kit.edu http://www.stud.uni-karlsruhe.de/~uxbtt/ Lehrstuhl Systemarchitektur Universität Karlsruhe (TH) 4. November 2009 Philipp
MehrBetriebssysteme Teil 11: Interprozess-Kommunikation
Betriebssysteme Teil 11: Interprozess-Kommunikation 19.12.15 1 Übersicht Grundbegriffe Shared Memory Pipelines Messages Ports Sockets 2 Grundbegriffe Interprocess-Kommunikation = Austausch von Daten über
MehrComputergrundlagen Moderne Rechnerarchitekturen
Aufbau eines modernen Computers Computergrundlagen Moderne Rechnerarchitekturen Axel Arnold Institut für Computerphysik Universität Stuttgart DDR3- Speicher Prozessor Prozessor PEG Graphikkarte(n) weitere
MehrPraktische Informatik 1
Praktische Informatik 1 Imperative Programmierung und Objektorientierung Karsten Hölscher und Jan Peleska Wintersemester 2011/2012 Session 2 Programmierung Begriffe C/C++ Compiler: übersetzt Quellcode
MehrX10. Seminar Multicore Programming Uni Passau SS Alex von Rhein
X10 Seminar Multicore Programming Uni Passau SS 2009 Alex von Rhein Übersicht Hintergrund Entwurfs- Ziele Übersicht: Daten- & Kontrollstrukturen Grundlagen-Konzepte Aufbauende Konzepte Sicherheit in X10
MehrNebenläufige Programmierung in Java: Threads
Nebenläufige Programmierung in Java: Threads Wahlpflicht: Fortgeschrittene Programmierung in Java Jan Henke HAW Hamburg 10. Juni 2011 J. Henke (HAW) Threads 10. Juni 2011 1 / 18 Gliederung 1 Grundlagen
MehrNetzwerkprogrammierung unter Linux und UNIX
Netzwerkprogrammierung unter Linux und UNIX Bearbeitet von Stefan Fischer, Walter Müller 2. Auflage 1999. Buch. XII, 228 S. Hardcover ISBN 978 3 446 21093 6 Format (B x L): 14 x 20,9 cm Gewicht: 329 g
MehrTest (Lösungen) Betriebssysteme, Rechnernetze und verteilte Systeme
Seite 1 Test (Lösungen) Betriebssysteme, Rechnernetze und verteilte Systeme 1 11.07.2007 Hinweise: Bevor Sie mit der Bearbeitung der Aufgaben beginnen, müssen Sie auf allen Blättern Ihren Namen und Ihre
MehrEINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG FORTGESCHRITTENE KONZEPTE Tobias Witt 26.03.2014 tobias.witt@hhu.de 25.12.01.30 Bürozeiten: 09 Uhr - 12 Uhr FEHLERBEHANDLUNG KLASSISCHER ANSATZ Fehlercode als Rückgabewert
MehrArchitektur Verteilter Systeme Teil 2: Prozesse und Threads
Architektur Verteilter Systeme Teil 2: Prozesse und Threads 21.10.15 1 Übersicht Prozess Thread Scheduler Time Sharing 2 Begriff Prozess und Thread I Prozess = Sequentiell ablaufendes Programm Thread =
MehrVerteilte Systeme CS5001
Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Client-Server-Anwendungen: Vom passiven (shared state) Monitor zum aktiven Monitor Monitor (Hoare, Brinch-Hansen,
MehrD.1 Organisatorisches
D Überblick über die 3. Übung D Überblick über die 3. Übung D.1 Organisatorisches D.1 Organisatorisches RPC und ORB Präsentation der Übungsaufgaben 1 und 2 Aufrufsemantiken Hinweise Aufgabe 2 Live in der
MehrTechnische Informatik 1
Technische Informatik 1 7 Prozesse und Threads Lothar Thiele Computer Engineering and Networks Laboratory Betriebssystem 7 2 7 3 Betriebssystem Anwendung Anwendung Anwendung Systemaufruf (syscall) Betriebssystem
MehrProzesszustände (1a)
Prozesszustände (1a) NOT EXISTING DELETED CREATED Meta-Zustand (Theoretische Bedeutung) Prozesszustände Multiuser Umfeld (1c) Hintergrund-Prozess - der Prozess startet im Hintergrund - my-commandbin &
MehrScala. Funktionale (Zustandslose) Objekte
Scala Funktionale (Zustandslose) Objekte Agenda Was sind Funktionale Objekte? veränderliche Objekte vs. unveränderliche Objekte Klassen Parameter Konstruktoren Private Member Methoden und Operatoren Overriding
MehrMotivation. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 20: Threads. Inhalt. Ein Beispiel zur Motivation
Universität Osnabrück 1 Motivation 3 - Objektorientierte Programmierung in Java Führt ein Applet eine lange Berechnung aus, so erfolgt keine Reaktion auf die Betätigung des Stop-Buttons am Browser bzw.
MehrKomponentenorientierte Software-Entwicklung. Seite 1 / 42
Seite 1 / 42 Wiederholung Messaging Java Messaging Service (JMS) Pub/Sub P2P Messaging Middleware XMPP-Protokoll Java API for XML-Processing (JAXP) Java API for XML-Binding Webservices / SOA Simple Object
MehrAuszug aus JAX-WS Folien
Auszug aus JAXWS Folien Dieses Dokument ist ein Auszug aus unserem Skript zur Java Web Services Schulung. Es dient lediglich als Beispiel für unsere Kursunterlagen. Thomas Bayer Hauptstraße 33 75050 Gemmingen
MehrX10 Performance and Productivity at Scale
X10 Performance and Productivity at Scale Sebastian Henneberg 8. Dezember 2011 Sebastian Henneberg: X10, Performance and Productivity at Scale 1 Struktur Hintergrund Plattform Speicher- und Parallelitätsmodell
MehrVerteilte Systeme. 2. Die Client-Server-Beziehung und daraus resultierende Techniken. 2.2 Nebenläufigkeitstechniken in Java
VS22 Slide 1 Verteilte Systeme 2. Die Client-Server-Beziehung und daraus resultierende Techniken 2.2 Nebenläufigkeitstechniken in Java Sebastian Iwanowski FH Wedel VS22 Slide 2 Was ist Nebenläufigkeit?
MehrClient/Server-Programmierung
Client/Server-Programmierung WS 2017/2018 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 12. Januar 2018 Betriebssysteme / verteilte
MehrNebenläufigkeit und Kommunikation in Go
Anwendung: Vorlesung Modellierung nebenläufiger Systeme Sommersemester 2016 Universität Duisburg-Essen Harsh Beohar & Barbara König Go ist eine Programmiersprache, die von Google entwickelt wird (http://golang.org/)
MehrLiteratur. VA SS Teil 5/Messages
Literatur [5-1] https://en.wikipedia.org/wiki/message-oriented_middleware [5-2] https://en.wikipedia.org/wiki/advanced_message_queuing_protocol http://www.amqp.org/specification/0-10/amqp-org-download
MehrÜbung: Verwendung von Java-Threads
Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum
MehrSeminar: Multi-Core Architectures and Programming
Seminar: Multi-Core Architectures and Programming Parallelisierung des Viola-Jones Algorithmus auf Tilera Hardware-Software-Co-Design Universität Erlangen-Nürnberg 1 Übersicht Einleitung Erste Versuche
MehrSeminar Scala SS2010, Einführung. R. Schiedermeier Fakultät 07 für Informatik und Mathematik
Seminar Scala SS2010, Einführung R. Schiedermeier Fakultät 07 für Informatik und Mathematik Themen Ausführen von Scala-Code Werte und Variablen Methoden Typen 22.04.10 Seminar Scala, Einführung 2 Übersetzen
MehrSchlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:
Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -
MehrCONCURRENCY MODELS. Auf der Suche nach dem heiligen Gral der ManyCores Peter Sturm. (c) Peter Sturm, Universität Trier
CONCURRENCY MODELS Auf der Suche nach dem heiligen Gral der ManyCores Peter Sturm 1 AUTOVERKEHR 61.5 Millionen zugelassene Autos (Anfang 2014) Quelle: Statistisches Bundesamt 2 3 SPERRGRANULAT Die Zeit
MehrSession Beans & Servlet Integration. Ralf Gitzel
s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Aufbau einer Stateless s Stateful s Web Client Offene Antwort von
MehrScala LIGHTNING TALK 03
Scala LIGHTNING TALK 03 Agenda 1.Was ist Scala? 2.Hauptmerkmale von Scala 3.Bewertung 2 LT 03 - Scala Was ist Scala? Scala: scalable language l Forschungsprojekt zur Komponentenorientierung l Hypothese
MehrFakultät für Informatik der Technischen Universität München. Kapitel 3. Nebenläufigkeit
Kapitel 3 Nebenläufigkeit 136 Inhalt Motivation Unterbrechungen (Interrupts) (Software-) Prozesse Threads Interprozesskommunikation (IPC) 137 Links: Literatur Maurice Herlihy, Nir Shavit, The Art of Multiprocessor
MehrNebenläufige Programmierung
Nebenläufige Programmierung Perspektiven der Informatik 27. Januar 2003 Gert Smolka Telefon-Szenario Eine Telefonzelle Mehrere Personen wollen telefonieren Immer nur eine Person kann telefonieren Ressource
MehrNebenläufige und verteilte Programme CS2301
Nebenläufige und verteilte Programme CS2301 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Synchronisation: Basis-Mechanismen und -Ausdrucksmittel Threadsicherheit, kritische Abschnitte,
MehrInternetanwendungstechnik (Übung)
Internetanwendungstechnik (Übung) JacORB S. Bissell, G. Mühl Technische Universität Berlin Fakultät IV Elektrotechnik und Informatik Kommunikations- und Betriebssysteme (KBS) Einsteinufer 17, Sekr. EN6,
MehrSysteme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz
Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 13.11.2013 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen
Mehr