Reactive Programming. Funktionale Programmierung. Christoph Knabe FB VI

Größe: px
Ab Seite anzeigen:

Download "Reactive Programming. Funktionale Programmierung. Christoph Knabe FB VI"

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 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

Mehr

Software-Architektur Actors

Software-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

Mehr

Twitter & GitHub: romanroe

Twitter & 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

Mehr

Akka.NET. Aktor basierte Programmierung in.net

Akka.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

Mehr

Javakurs für Fortgeschrittene

Javakurs 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

Mehr

Testen nebenläufiger Objekte

Testen 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

Mehr

Ausdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI

Ausdrü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

Mehr

Nebenläufige und verteilte Programme CS2301

Nebenlä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

Mehr

Verteilte Algorithmen TI5005

Verteilte 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

Mehr

Reaktive Programmierung Vorlesung 10 vom : Reactive Streams (Observables)

Reaktive 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

Mehr

Verteilte Systeme. Nebenläufigkeit. Prof. Dr. Oliver Haase

Verteilte 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

Mehr

JavaLand,

JavaLand, 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

Mehr

Verteilte Algorithmen TI5005

Verteilte 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

Mehr

Verteilte Systeme - Java Networking (Sockets) -

Verteilte 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

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Systeme 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

Mehr

Das Actor-Modell und Umsetzung in Proto.Actor

Das 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

Mehr

Schnell reagiert! Reaktive Systeme auf der Java-Plattform mit Vert.x und Reactor Martin Lehmann, Accso GmbH Java Forum Stuttgart 2015

Schnell 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

Mehr

Nebenläufigkeit in Scala: Aktoren

Nebenlä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

Mehr

Prozesse. Prozesse sind Programme. Prozesse können aus Unterprozessen bestehen. Prozesshierarchie Unterprozesse Threads

Prozesse. 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

Mehr

Verteilte Systeme CS5001

Verteilte 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

Mehr

Die Sicht eines Sysadmins auf DB systeme

Die 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

Mehr

Vererbung und Traits

Vererbung 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

Mehr

Wintersemester 2009/10 Helmut Seidl Institut für Informatik TU München

Wintersemester 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

Mehr

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs funktionale Programmierung mit Scala ISBN:

Inhaltsverzeichnis. 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

Mehr

Die Scala Entwicklungsumgebung. L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung

Die 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

Mehr

Betriebssysteme Vorstellung

Betriebssysteme 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

Mehr

Nebenläufigkeit mit Java

Nebenlä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,

Mehr

Programmieren 2 12 Netzwerke

Programmieren 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

Mehr

Java Concurrency Utilities

Java 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(),

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Systeme 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

Mehr

Domä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 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

Mehr

Induktion nach der Länge n von x

Induktion 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 [] -> []...)

Mehr

Symbian OS. OS für kleine Endgeräte: Sven Walter

Symbian 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

Mehr

Computergrundlagen Moderne Rechnerarchitekturen

Computergrundlagen 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

Mehr

Vorlesung Informatik II

Vorlesung 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

Mehr

Nebenläufige und verteilte Programme CS2301

Nebenlä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

Mehr

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker

PROG 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

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜ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

Mehr

Funktionale und Objekt-Orientierte Programmierkonzepte

Funktionale 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

Mehr

Parallele Prozesse. Prozeß wartet

Parallele 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:

Mehr

Verteilte Systeme - Java Networking (Sockets) 2 -

Verteilte 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:

Mehr

Dezentrale 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 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

Mehr

Aufbau eines modernen Betriebssystems (Windows NT 5.0)

Aufbau 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

Mehr

Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )

Sequentielle 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

Mehr

Beispiel Klausuraufgaben

Beispiel 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

Mehr

Was sind Reaktive Streams? Java Forum Stuttgart 2018

Was 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

Mehr

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen

Thread-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

Mehr

Baby Steps mit Akka. Dr. Stefan Schlott BeOne Stuttgart GmbH

Baby 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

Mehr

Grundlagen der Automatisierungstechnik. (Automatisierungstechnik 1) 5. Echtzeit

Grundlagen 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

Mehr

Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software

Computeranwendung 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

Mehr

Nebenläufige Programme mit Python

Nebenlä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

Mehr

Betriebssysteme G: Parallele Prozesse (Teil A: Grundlagen)

Betriebssysteme 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

Mehr

Software Engineering I (IB) Node.js. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Software 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

Mehr

Java als erste Programmiersprache

Java 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

Mehr

Programmierparadigmen und Sprachen

Programmierparadigmen 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

Mehr

Lebenszyklus von Threads

Lebenszyklus 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

Mehr

Einführung Verteilte Systeme - Java Threads III -

Einfü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

Mehr

Prozesse and Threads WS 09/10 IAIK 1

Prozesse 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,

Mehr

Einführung: Verteilte Systeme - Remote Method Invocation -

Einfü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

Mehr

Betriebssysteme. Tutorium 2. Philipp Kirchhofer

Betriebssysteme. 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

Mehr

Betriebssysteme Teil 11: Interprozess-Kommunikation

Betriebssysteme 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

Mehr

Computergrundlagen Moderne Rechnerarchitekturen

Computergrundlagen 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

Mehr

Praktische Informatik 1

Praktische 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

Mehr

X10. Seminar Multicore Programming Uni Passau SS Alex von Rhein

X10. 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

Mehr

Nebenläufige Programmierung in Java: Threads

Nebenlä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

Mehr

Netzwerkprogrammierung unter Linux und UNIX

Netzwerkprogrammierung 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

Mehr

Test (Lösungen) Betriebssysteme, Rechnernetze und verteilte Systeme

Test (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

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜ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

Mehr

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Architektur 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 =

Mehr

Verteilte Systeme CS5001

Verteilte 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,

Mehr

D.1 Organisatorisches

D.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

Mehr

Technische Informatik 1

Technische 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

Mehr

Prozesszustände (1a)

Prozesszustä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 &

Mehr

Scala. Funktionale (Zustandslose) Objekte

Scala. 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

Mehr

Motivation. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 20: Threads. Inhalt. Ein Beispiel zur Motivation

Motivation. 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.

Mehr

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

Komponentenorientierte 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

Mehr

Auszug aus JAX-WS Folien

Auszug 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

Mehr

X10 Performance and Productivity at Scale

X10 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

Mehr

Verteilte Systeme. 2. Die Client-Server-Beziehung und daraus resultierende Techniken. 2.2 Nebenläufigkeitstechniken in Java

Verteilte 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?

Mehr

Client/Server-Programmierung

Client/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

Mehr

Nebenläufigkeit und Kommunikation in Go

Nebenlä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/)

Mehr

Literatur. VA SS Teil 5/Messages

Literatur. 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 Ü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

Mehr

Seminar: Multi-Core Architectures and Programming

Seminar: 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

Mehr

Seminar 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 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

Mehr

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Schlussendlich 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 -

Mehr

CONCURRENCY 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. (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

Mehr

Session Beans & Servlet Integration. Ralf Gitzel

Session 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

Mehr

Scala LIGHTNING TALK 03

Scala 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

Mehr

Fakultät für Informatik der Technischen Universität München. Kapitel 3. Nebenläufigkeit

Fakultä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

Mehr

Nebenläufige Programmierung

Nebenlä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

Mehr

Nebenläufige und verteilte Programme CS2301

Nebenlä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,

Mehr

Internetanwendungstechnik (Übung)

Internetanwendungstechnik (Ü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,

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Systeme 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