Böse Überraschungen mit Nebenläufigkeit vermeiden: Am Beispiel von.net
|
|
- Hildegard Fischer
- vor 8 Jahren
- Abrufe
Transkript
1 Böse Überraschungen mit Nebenläufigkeit vermeiden: Am Beispiel von.net Prof. Dr. Luc Bläser Hochschule für Technik Rapperswil Parallel 2014 Konferenz Karlsruhe, 6 Mai 2014
2 Nebenläufigkeit wird unvermeidbar Vom Design auferlegt GUIs reaktionsfähig machen Externe Bibliotheken Verteilte Systeme Etliche Sprachfeatures Performance-Beschleuniger Taktraten-Stagnation Parallelisierung auf Multi-Cores Expliziter Programmieraufwand nötig! The free lunch is over H. Sutter 2
3 Vieles kann schieflaufen Ganz neue Fehlerarten Race Conditions Deadlocks & Livelocks Starvation Nicht-deterministische Fehler Treten sporadisch auf Schwierig zu finden Schwierig zu testen Therac-25 RT Linac Patienten durch Verstrahlung gestorben. Grund: Race condition N. G. Leveson, C. S. Turner, An Investigation of the Therac-25 Accidents, IEEE Computer, Volume 26, Issue 7 (Jul 1993), pp Indikatoren für Alarmierung: - Keine Ahnung, wieso der Test fehlschlug. Seit gestern ist er wieder dauernd grün. - Die Software hängt in sehr seltenen Fällen. Nichts schlimmes, einfach neustarten. 3
4 Vortragsinhalt Essentielles zur Nebenläufigkeit Multi-Threading in a Nutshell Concurrency Fehler Strukturierung der Nebenläufigkeit Design in Architekturen Szenarien und Muster Schlussfolgerungen 4
5 Quellen der Nebenläufigkeit in.net Explizite Threads TPL Tasks (Thread Pools) Parallel LINQ Finalizers, C# Destructors Web services, sockets Background-Worker Asynchrone Aufrufe async/await Timers External calls/callbacks Zwischen Prozessen (via DB, files, network etc.) Multi-Threading darunter 5
6 Nebenläufiges Programmiermodell Threads operieren auf passiven Objekten Via direkte / indirekte Methodenaufrufe Parallele oder beliebige Verzahnung By default: unkontrolliert Muss explizit synchronisieren Es gibt bessere Modelle Actors, (STM), funktional Objects References Threads Gemeinsam benutzt! 6
7 Prädestinierte Race Condition Stellen int Next() { return counter++; foreach (T item in threadsafecollection) { if (weakreference.isalive) { weakreference.value.op(); void Swap() { t = y; y = x; x = t; if (!loaded) { loaded = true; Internalize(); while (safebuffer.size > 0) { safebuffer.removefirst(); 7
8 Race Condition Ungenügend synchronisierter Zugriff auf gemeinsame Ressourcen Fehlerhaftes oder undefiniertes Verhalten Hängt von Timing/Interleaving/Maschine ab Low Level: Data Races Nebenläufiger Zugriff ohne Synchronisation Selbe Variable oder Array Element Read-write, write-read, write-write High Level: Unsynchronisierte Sequenzen Kritische (atomare) Abschnitte nicht sichergestellt 8
9 Synchronisations-Abstraktionen in.net Monitor (aka C# lock mit Wait & Pulse) Reader-Writer Lock Concurrent Collections Primitives: Semaphore, Barrier, Mutex, CountDownEvent, Wait Handles, Thread/Task Joins Memory Level: Interlocked, volatile, Barriers/Fences 9
10 Races behoben, Deadlocks verursacht class Repository { void CopyTo(Repository target) { lock(this) { // get target.add(content); public void Add(T content) { lock(this) { // add lock a lock b Thread T1 a.copyto(b); Geschachtelter Lock Thread T2 b.copyto(a); lock b lock a Deadlock T1 sperrt a T2 sperrt b T1 will b T2 wil a 10
11 Deadlock Threads warten gegenseitig auf Ressourcen-Freigabe Geschachtelte Locks Zyklische Warteabhängigkeiten Livelock = Deadlock mit CPU-Verbrauch beim Warten awaits lock T1 locked by a b locked by T2 awaits lock while (!Wait(timeout)) { 11
12 Starvation: Nicht viel besser Fairness-Problem Ein Thread hat evtl. nie die Chance für Ressourcen-Zugriff Andere kommen ihm andauernd zuvor Häufige Kandidaten Timeout und Retry Thread Prioritäten Optimistic Concurrency Control Read/Write Locks im Eigenbau.NET Synchronisationsprimitiven haben keine strikte Fairness a.lock(); while (!b.trylock()) { a.unlock(); // let others continue a.lock(); 12
13 Strukturierung der Nebenläufigkeit Welche Threads greifen auf welche Objekte zu? Welche Objekte müssen Thread-sicher sein? Existieren potentiell zyklische Warteabhängigkeiten? 13
14 Vorgehen zur Strukturierung 1. Aktive Instanzen bestimmen 2. Interaktionen spezifizieren 3. Synchronisation definieren 4. Korrektheit prüfen 14
15 1. Aktive Instanzen bestimmen Threads, Parallel Tasks etc. Selbst entworfen Objekte mit intrinsischer Nebenläufigkeit Extern vorgegeben Single UI Thread, Service Worker Threads, Aktive Klasse <<thread>> StreamReader r : StreamReader Aktives Objekt (Thread Instanz) Kann konzeptionelle aktive Instanzen modellieren (Objekte mit inneren Thread-Logik) 15
16 Nebenläufiges Klassendiagramm Indirekt aktiv (UI Thread) AnalysisUI * StatView Thread-sicher AnalysisStats DataAnalyzer DataBuffer StreamReader Stream * Record Eingesperrt (Confined) 16
17 2. Interaktionen spezifizieren Kommunikationsdiagramm : AnalysisUI :: StatView : AnalysisStats begindispatch() Asynchroner Aufruf Synchroner Aufruf update() b.get() b.put() read() : DataAnalyzer b: DataBuffer : StreamReader : Stream : Record : Record :: Record 17
18 3. Synchronisation definieren DataBuffer Threadsicher put() { guarded get() { guarded Math Nicht Threadsicher Threadsicher abs() { concurrent sign() { concurrent Record get() { sequential set() { sequential Synchronisation ist intern realisiert (Exclusive Locks) Parallele Aufrufe sind sicher (keine / Shared Locks) Synchronisation muss außen geschehen (Confinement) 18
19 4. Korrektheit prüfen Keine Race Conditions Ist Synchronisation oder Confinement pro Klasse definiert? Sind die kritischen Abschnitte definiert und geschützt? Keine Deadlocks Geschachtelte Locks: Gibt es eine lineare Sperr-Ordnung? Keine Starvation Faire Synchronisation (falls notwendig)? Keine Prioritätsinversion bei mehreren Thread-Prioritäten 19
20 Häufige Muster und Szenarien Lose gekoppelte Aktivitäten Producer-Consumer Reaktionsfähige UIs/Logiken Asynchrone Ausführung Algorithmische Parallelisierung Divide & Parallel Conquer 20
21 Producer-Consumer Partiell entkoppelte Arbeitsschritte Bedienung von IO Kanälen, verzögerter Logger etc. Warten nur, falls Buffer leer oder voll ist Buffer muss Thread-sicher sein Concurrent Blocking Collection, Monitor Sync. etc. Producer Consumer Bounded Buffer 21
22 Nebenläufige Pipelines Eventuell schneller als serielle Verarbeitung Arbeitsschritt 0 Arbeitsschritt 1 Arbeitsschritt N Buffer... Buffer Arbeitsschritte als Threads oder Tasks (Thread Pool)? 22
23 Implementation der Arbeitsschritte Threads Für zustandsbehaftete Abarbeitung Bei Abhängigkeiten zwischen den Elementen Tasks Für zustandslose Abarbeitung Unabhängige Arbeit pro Element (Run-to-Completion) Sonst Thread Pool untauglich => Thread Injection oder Deadlock 23
24 .NET Rx (Reactive Extensions) Modellierung von Datenfluss-Pipelines Events Push Push Push Stream Push Union Group Filter Display Timer Einfach nebenläufig ausführbar (Scheduling per Thread, Task etc.) 24
25 Reaktionsfähige UIs/Logiken GUI ist Single-Threaded Muss blockierende bzw. langlaufende Aufgaben an andere Threads outsourcen (sonst blockiert es) Aber: Nur der UI Thread darf die GUI Controls zugreifen Ideal für C# 5 async/await Modell public async Task<int> LongOperationAsync() { Task<int> task = LongOperationAsync(); // other work int result = await task; // continue 25
26 Achtung: Async/Await Ausführung Async Methoden sind halb-synchron, halb-asynchron Aufrufer führt Methode synchron bis zum blockierenden Await aus Erst danach läuft die Methode asynchron async Task<int> GetSiteLengthAsync(string url) { HttpClient client = new HttpClient(); Task<string> task = client.getstringasync(url); string site1 = await task; return site1.length; Synchron (Aufrufer Thread) Asynchron (Potentiell anderer Thread) 26
27 Fall 1: Kein Synchronisations-Kontext TPL Thread führt Teil nach (blockierendem) Await aus Caller Thread call async Task OpAsync() { Task t = OtherAsync(); task start TPL Thread return Task t await t; task end Continuation 27
28 Fall 2: Mit Synchronisations-Kontext Z.B. GUI Thread als Aufrufer: Dispatch GUI Thread caller async Task OpAsync() { Task t = OtherAsync(); task start TPL Thread return Task t Dispatch continuation task end await t; 28
29 Divide & Parallel Conquer Klassische Parallelisierung zur Beschleunigung Fall für den TPL Thread Pool void MergeSort(l, r) { long m = (l + r)/2; MergeSort(l, m); MergeSort(m, r); Merge(l, m, r); void Convert(IList<File> files) { foreach (File f in files) { Convert(f); Parallel.Invoke( () => MergeSort(l, m), () => MergeSort(m, r) ); Parallel.Foreach(files, f => Convert(f) ); 29
30 Schlussfolgerungen Nebenläufigkeit wird zunehmend wichtiger Relevanz für praktisch jeden Programmierer Gefahr der nicht-deterministischen Fehler Nebenläufigkeits-Design in Architektur ist entscheidend Diverse Fallstricke lauern in den Technologien Bewusstsein dafür nötig, so lange Tools hier nicht helfen 30
31 Danke für Ihr Interesse Concurrency Forschung, Consulting, und Kurse Kontakt Prof. Dr. Luc Bläser HSR Hochschule für Technik Rapperswil IFS Institut für Software Rapperswil, Schweiz
.NET Task Parallel Library: Eine Rundtour
.NET Parallel Library: Eine Rundtour Luc Bläser Hochschule für Technik Rapperswil Parallel 2015 Konferenz 23. Apr. 2015, Karlsruhe Die.NET Parallel Library (TPL) Stand der Technik für.net Parallelprogrammierung
Async und Await Asynchrone Programmierung in C# 5
Async und Await Asynchrone Programmierung in C# 5 Prof. Dr. Luc Bläser Hochschule für Technik Rapperswil Parallel 2014, Karlsruhe 06. Mai 2014 Ausgangslage Async/Await Sprachkonstrukte Institutionalisiert
Asynchrone Programmierung mit Async und Await in C# 5 unter der Lupe
Asynchrone Programmierung mit Async und Await in C# 5 unter der Lupe Prof. Dr. Luc Bläser Hochschule für Technik Rapperswil Parallel 2013, Karlsruhe 16. Mai 2013 Ausgangslage Async/Await Sprachkonstrukte
Parallel Computing in.net
Marc Andre Zhou Parallel Computing in.net Multicore-Programmierung von.net 2.0 bis 4.0 1 1.1 1.2 1.3 1.4 1.5 1.6 2 2.1 Einleitung Für wen ist dieses Buch? Ziele des Buchs Parallel Computing: Warum? 1.3.1
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(),
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
ASYNC HARDCORE. Stefan Dirschnabel. #dncgn
ASYNC HARDCORE www.binarygears.de Stefan Dirschnabel Twitter: @StefanDirschnab #dncgn Der Winter naht! Und die Moral von der Geschicht? Asynchron isch Pflicht Deadlock! Schöne Welt?
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
Institut fu r Informatik
Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2014/15 Aufgabenblatt 11 19.01.2015
Parallelität, Threads
Parallelität, Threads Tutorium 17 Fabian Miltenberger 30.06.2014 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD) KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum
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,
Lehrstuhl für Datenverarbeitung. Technische Universität München. Leistungskurs C++ Multithreading
Leistungskurs C++ Multithreading Threading mit Qt Plattformübergreifende Thread-Klasse Sehr einfach zu benutzen Leider etwas schlecht dokumentiert Leistungskurs C++ 2 QThread Plattformübergreifende Thread-Klasse
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
Lehrstuhl für Datenverarbeitung. Technische Universität München. Leistungskurs C++ Multithreading
Leistungskurs C++ Multithreading Threading mit Qt Plattformübergreifende Thread-Klasse Sehr einfach zu benutzen Leider etwas schlecht dokumentiert Leistungskurs C++ 2 QThread Plattformübergreifende Thread-Klasse
Betriebssysteme. G: Parallele Prozesse. (Teil B: Klassische Problemstellungen, Mutual Exclusion, kritische Regionen)
Betriebssysteme G: Parallele Prozesse (Teil B: Klassische Problemstellungen, Mutual Exclusion, kritische Regionen) 1 Allgemeine Synchronisationsprobleme Wir verstehen ein BS als eine Menge von parallel
Übung zu Grundlagen der Betriebssysteme. 10. Übung 18.12.2012
Übung zu Grundlagen der Betriebssysteme 10. Übung 18.12.2012 Aufgabe 1 a) Was versteht man unter einem kritischen Abschnitt oder kritischen Gebiet (critical area)? b) Welche Aufgabe hat ein Semaphor? c)
Lehrstuhl für Datenverarbeitung. Technische Universität München. Leistungskurs C++ Multithreading
Leistungskurs C++ Multithreading Zeitplan 16.10. Vorlesung 23.10. Vorlesung, Gruppeneinteilung 30.10. Vorlesung, HA1 06.11. Vorlesung, HA2 13.11. Vorlesung entfällt wegen SVV 20.11. Präsentation Vorprojekt
Info B VL 17: Deadlocks
Info B VL 17: Deadlocks Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 17: Deadlocks p.327 Conditional
Cloud-Task-Parallelisierung in.net: Jenseits der lokalen Prozessor-Power
Cloud-Task-Parallelisierung in.net: Jenseits der lokalen Prozessor-Power Prof. Dr. Luc Bläser Hochschule für Technik Rapperswil Parallel 2013, Karlsruhe 15. Mai 2013 Stufen der Parallelisierung Multi-core
Java I Vorlesung Nebenläufigkeit
Java I Vorlesung 10 Nebenläufigkeit 28.6.2004 Threads Synchronisation Deadlocks Thread-Kommunikation Innere Klassen Anonyme Klassen Nebenläufigkeit http://java.sun.com/docs/books/tutorial/essential/threads/
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:
Übung 1 mit C# 6.0 MATTHIAS RONCORONI
Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,
WS Parallele Prozesse. Prof. Hannelore Frank. Parallele Prozesse. PetriNetze. Synchronisation UNIX. Wettbewerb PC Krit.Abschnitt Spinlocks
WS 2007 Überblick 1 2 Petri-Netze als Entwurfshilfsmittel 3 nebenläufiger 4 -Systemfunktionen Literatur Eduard Glatz: Betriebssysteme. Grundlagen, Konzepte, Systemprogrammierung dpunkt.verlag, 2006, ISBN
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
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
Anwendung (2. Versuch:-) Entkopplung der Locks
Gut gemeint aber leider fehlerhaft... Jeder Producer benötigt zwei Locks gleichzeitig, um zu produzieren: 1. dasjenige für den Puffer; 2. dasjenige für einen Semaphor. Musser fürden Semaphor einwait()
Synchronisation in Java. Invisible Web
Synchronisation in Java Studienprojekt Invisible Web Tang Zhihong Synchronisation in Java Synchronisationsproblem Monitore Wait und notify PipedInputStream und PipedOutputStream Synchronisation von Collections
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
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
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
Ausnahmebehandlung in Java
Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A { void foo() throws Help { if (helpneeded()) throw new Help();... try {... catch (Help e) {... catch (Exception
Datenstrukturen und Algorithmen
1 Datenstrukturen und Algorithmen Übung 13 FS 2018 Programm von heute 2 1 Feedback letzte Übung 2 Wiederholung Theorie 3 Nächste Übung 1. Feedback letzte Übung 3 Aufgabe 12.3: Summe eines Vektors void
Beispiel für überladene Methode
Beispiel für überladene Methode class Gras extends Futter {... abstract class Tier { public abstract void friss (Futter x); class Rind extends Tier { public void friss (Gras x) {... public void friss (Futter
Nicht-blockierende Synchronisation für Echtzeitsysteme
Nicht-blockierende Synchronisation für Echtzeitsysteme Seminar Mobile Systeme Florian Schricker 15. März 2005 Seminarleiter: Prof. Dr. Dieter Zöbel 1 INHALTSVERZEICHNIS INHALTSVERZEICHNIS Inhaltsverzeichnis
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?
Aufgabenblatt 8 Musterlösung
Prof. Dr. rer. nat. Roland Wismüller Aufgabenblatt 8 Musterlösung Vorlesung Betriebssysteme I Wintersemester 2017/18 Aufgabe 1: Erzeuger-Verbraucher Synchronisation (Bearbeitung in der Übungsstunde) Erzeuger-Verbraucher-Problem:
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
Programmierung mit Threads in Java
Programmierung mit Threads in Java Harald Kosch and Matthias Ohlenroth Institut für Informationstechnologie Universität Klagenfurt H. Kosch Threads in Java 1 Inhalt Grundlagen: Threads und Datenlokalität
#define N 5 // Anzahl der Philosophen. while (TRUE) { // Der Philosoph denkt
Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)
Informatik B. Vorlesung 8 Synchronisierung von Threads. Dr. Ralf Kunze
Vorlesung 8 Synchronisierung von Threads 1 Rückblick Threads Erzeugen, Starten und Stoppen Fehler abfangen Gemeinsamer Zugriff auf Ressourcen Kritische Blöcke (Einleitung) 2 Kritische Blöcke Kritische
Philipp Güttler Progwerkstatt Letzte Änderung: Enums, Interfaces, Generics und Threads
Philipp Güttler 18.11.2008 Progwerkstatt Letzte Änderung: 09.12.2009 Enums, Interfaces, Generics und Threads Seite 2 Enums Enums, Interfaces und Generics 17.11.2008 Enum Typen komplexer Datentyp, der festen
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
Aufgabenblatt 7 Musterlösung
Prof. Dr. rer. nat. Roland Wismüller Aufgabenblatt 7 Musterlösung Vorlesung Betriebssysteme I Wintersemester 2017/18 Aufgabe 1: Steuerung eines Warenautomaten (Bearbeitung zu Hause) Anleitung wie man solche
Applications will increasingly need to be concurrent if they want to fully exploit continuing exponential CPU throughput gains.
Teil 3: Threads Herb Sutter ( The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software, Herb Sutter, Dr. Dobb s Journal, 30(3), March 2005.): Applications will increasingly need to be
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
Verteilte Systeme Teil 2
Distributed Computing HS 2012 Prof. Dr. Roger Wattenhofer, Dr. Thomas Locher C. Decker, B. Keller, S. Welten Prüfung Verteilte Systeme Teil 2 Freitag, 8. Februar 2013 9:00 12:00 Die Anzahl Punkte pro Teilaufgabe
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 &
Ich liebe Java && Ich liebe C# Rolf Borst
Ich liebe Java && Ich liebe C# Rolf Borst Java oder C#? Einführung public class Einfuehrung { private int gesamtzahl = 0; /* Ermittelt die Anzahl der geraden und durch drei teilbaren Zahlen */ public String
Nebenläufige Programme mit Python
Nebenläufige Programme mit Python Chemnitzer Linuxtage 2013 Stefan Schwarzer, SSchwarzer.com info@sschwarzer.com Chemnitz, Deutschland, 2013-03-17 Nebenläufige Programme mit Python Stefan Schwarzer, info@sschwarzer.com
Die Anweisungen zweier Prozesse werden parallel bearbeitet, wenn die Anweisungen unabhängig voneinander zur gleichen Zeit ausgeführt werden.
7 Parallelität und Nebenläufigkeit Mehrere Prozessen oder Threads Parallelität Die Anweisungen zweier Prozesse werden parallel bearbeitet, wenn die Anweisungen unabhängig voneinander zur gleichen Zeit
Shared-Memory Programmiermodelle
Shared-Memory Programmiermodelle mehrere, unabhängige Programmsegmente greifen direkt auf gemeinsame Variablen ( shared variables ) zu Prozeßmodell gemäß fork/join Prinzip, z.b. in Unix: fork: Erzeugung
Übersicht. Nebenläufige Programmierung: Praxis und Semantik. Nebenläufige Programmierung in Haskell (2) Software Transactional Memory in Haskell
Stand der Folien: 24. Januar 2012 Übersicht Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik Nebenläufige Programmierung in Haskell (2) 1 Software Transactional
Multi-Threading wie in C++11
Multi-Threading wie in C++11 Franco Chiappori Embedded Computing Conference 2013 Reiseroute Guards Lock-Free Data Structures Futures Promises Atomic Types Memory Barriers Compiler / Prozessor Compiler
Softwaretechnik 1 Übung 5
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Softwaretechnik 1 Übung 5 2.7.29 Aufgabe 1a) Zeichnen Sie die komplette Vererbungshierarchie der Klasse BufferedOutputStream als UML- Klassendiagramm.
Praktikum aus Softwareentwicklung 2, Stunde 5
Praktikum aus Softwareentwicklung 2, Stunde 5 Lehrziele/Inhalt 1. Threads Threads Threads sind parallele, oder auf Rechnern mit nur einer CPU quasi-parallele, Programmabläufe in Java. Sie können beispielsweise
Übersicht. Nebenläufige Programmierung: Praxis und Semantik. Nebenläufige Programmierung in Haskell (2) Design
Übersicht Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik Nebenläufige Programmierung in Haskell (2) PD Dr. David Sabel 1 Software Transactional Memory Übersicht
librtipc - Bibliothek für echtzeitfähige Interprozesskommunikation
librtipc - Bibliothek für echtzeitfähige Interprozesskommunikation Josef Raschen Diplomarbeit: Hardwareunabhängige Interprozesskommunikation für Echtzeitanwendungen Lehrstuhl für Betriebssysteme RWTH Aachen
Remote Method Invocation
Remote Method Invocation spezielle Technik aus dem Java-Umfeld Ausführung der Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VM s Aufruf
JJ Prozesse und Nebenläufigkeit
1 Wiederholung: Algorithmus von Peterson boolean ready0=false, ready1=false; int turn=0; JJ Prozesse und Nebenläufigkeit (Auszug aus der Vorlesung) while( 1 ) Prozess 0 ready0 = true; turn = 1; while(
CheatSheet Flow Design
heatsheet low Design Symbole unctional Units / unktionseinheiten unktionseinheit ist der Überbegriff für Methode, Klasse, ibliothek, etc. Eine unktionseinheit, die Domänenlogik enthält. Eine unktionseinheit,
Multithreading ab Java 5: Die neuen Concurrency APIs
Multithreading ab Java 5: Die neuen Concurrency APIs Java Concurrency Spezifiziert in JSR166 Ab Java 5 fester Bestandteil von Java Durch zusätzliche Library auch vor Java 5 vorhanden backport-util-concurrent
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
Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!
VO 182.711 Prüfung Betriebssysteme 17. Januar 2014 KNr. MNr. Zuname, Vorname Ges.)(100) 1.)(35) 2.)(20) 3.)(45) Zusatzblätter: Bitte verwenden Sie nur dokumentenechtes Schreibmaterial! 1 Synchronisation
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
Oracle AWR und ASH Analyse und Interpretation
Oracle AWR und ASH Analyse und Interpretation Seminarunterlage Version: 2.02 Version 2.02 vom 11. März 2013 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen
1. Motivation. Problemstellung: Dateninkonsistenzen (data races) aufgrund von konkurrierenden Zugriffen auf gemeinsame Daten sollen verhindert werden.
1. Motivation Problemstellung: Dateninkonsistenzen (data races) aufgrund von konkurrierenden Zugriffen auf gemeinsame Daten sollen verhindert werden. 25.09.09 Ferienakademie 2009 Kurs 1: Data Coloring
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
9. Foliensatz Betriebssysteme
Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 1/32 9. Foliensatz Betriebssysteme Prof. Dr. Christian Baun Frankfurt University of Applied Sciences
What s New? Skype for Business. Dirk THORMANN
What s New? Skype for Business Dirk THORMANN Agenda Skype for Business - SERVER Neue Rollen Backend Server Edge Updates Voice Updates Upgrade Skype for Business - CLIENT OPTIONAL New Look New Client Features
Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.
Hochschule Harz Versuch: fcopy Mit Java FB Automatisierung und Informatik Betriebssysteme Thema: Kopieren einer Datei unter der Kontrolle von Semaphoren Versuchsziele Konzepte der parallelen Programmierung
Objektorientierte Programmierung
Objektorientierte Programmierung Ausnahmebehandlung und Nebenläufigkeit 9. Vorlesung am 15. Dezember 2010 Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A
JedesObjekt(mit ÝÒ ÖÓÒ Þ -Methoden)verfügtübereine. wartender Threads sowie die Objekt-Methoden:
JedesObjekt(mit ÝÒ ÖÓÒ Þ -Methoden)verfügtübereine weitereschlange Ì Ö ÉÙ Ù Û Ø Ò Ì Ö amobjekt wartender Threads sowie die Objekt-Methoden: ÔÙ Ò ÚÓ Û Ø µ Ø ÖÓÛ ÁÒØ ÖÖÙÔØ Ü ÔØ ÓÒ ÔÙ Ò ÚÓ ÒÓØ Ý µ ÔÙ Ò ÚÓ
Verhaltensbeschreibung und Spezifikationssprachen
TECHNISCHE UNIVERSITÄT ILMENAU Integrierte Kommunikationssysteme http://www.tu-ilmenau.de/iks Verhaltensbeschreibung und Spezifikationssprachen Verhaltensmodelle Zustandsautomaten (FSM) Nicht-deterministische
Laborskript Verteilte Systeme
Laborskript Verteilte Systeme Nebenläufigkeit in Java Prof. Dr. Oliver Haase 1 Threads Java bietet zwei verschiedene Arten an, Threads zu erzeugen und zu starten: Entweder durch Erweitern der Klasse Thread,
Software Transactional Memory
Software-Architektur Software Transactional Memory Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 11.07.2017 15:12 Inhaltsverzeichnis Transaktionaler Speicher..............................
Übung Betriebssysteme 11
Übung Betriebssysteme 11 Christian Motika Christian-Albrechts-Universität zu Kiel Institut für Informatik AG Echtzeitsysteme / Eingebettete Systeme Kiel, Germany 29-JAN-2013 CAU - WS 2012/13 Übung Betriebssysteme
Collections. Arthur Zaczek
Collections Arthur Zaczek Nov 2015 1/31 Collections Collections 2/31 Definition Anhäufung von Objekten Werte können hinzugefügt, gesucht und gelöscht werden Implementierung mit verschiedenen Algorithmen,
Klausur Nichtsequentielle Programmierung
Klausur Nichtsequentielle Programmierung Prof. Dr. Marcel Kyas 22. Juli 2009 Nachname: Bachelor Magister Vorname: Master Lehramt Diplom Hinweise zur Klausur Bitte überprüfen Sie, dass Sie alle Seiten dieser
PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes
PThreads Prozesse und Threads Ein Unix-Prozess hat IDs (process,user,group) Umgebungsvariablen Verzeichnis Programmcode Register, Stack, Heap Dateideskriptoren, Signale message queues, pipes, shared memory
CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik)
Prof. Dr. Th. Letschert CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik) Vorlesung 7 Th Letschert FH Gießen-Friedberg Ressourcen Verwaltung passive Ressourcen aktive Ressourcen
Zwei Denkanstöße in unvollständigen Stichpunkten zu Beginn des SEP-Informatik WS 2014/15
Zwei Denkanstöße in unvollständigen Stichpunkten zu Beginn des SEP-Informatik WS 2014/15 Betreuer: Ute Heuer, Stefan Löwe, Philipp Wendler 29. September 2014 Denkanstöße Beobachter-Entwurfsmuster z.b.
Homogene Multi-Core-Prozessor-Architekturen
Homogene Multi-Core-Prozessor-Architekturen Praktikum Parallele Rechnerarchitekturen Stefan Potyra Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2009
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
Info B VL 15: Multi-Threading
Info B VL 15: Multi-Threading Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 15: Multi-Threading p.288
Informatik - Übungsstunde
Informatik - Übungsstunde Jonas Lauener (jlauener@student.ethz.ch) ETH Zürich Woche 12-23.05.2018 Lernziele Klassen Dynamic Memory Jonas Lauener (ETH Zürich) Informatik - Übung Woche 12 2 / 20 Structs
Collections. Arthur Zaczek. Nov 2015
Arthur Zaczek Nov 2015 1 Collections 1.1 Definition Anhäufung von Objekten Werte können hinzugefügt, gesucht und gelöscht werden Implementierung mit verschiedenen Algorithmen, je nach Nutzung 1.2 Grundlegende
Thomas Claudius Huber. Asynchrone Programmierung mit C#
Thomas Claudius Huber Asynchrone Programmierung mit C# Thomas Claudius Huber Principal Consultant @ Trivadis AG Trainer, Coach, Developer, Architect www.thomasclaudiushuber.com Spezialisiert auf WPF, XAML,
Datenparallelität. Bildverarbeitung Differentialgleichungen lösen Finite Element Methode in Entwurfssystemen
Datenparallelität PPJ-38 Viele Prozesse bzw. Prozessoren führen zugleich die gleichen Operationen auf verschiedenen Daten aus; meist Datenelemente in regulären Datenstrukturen: Array, Folge Matrix, Liste.
Info B VL 11: Innere Klassen/Collections
Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections
Pthreads. David Klaftenegger. Seminar: Multicore Programmierung Sommersemester
Seminar: Multicore Programmierung Sommersemester 2009 16.07.2009 Inhaltsverzeichnis 1 Speichermodell 2 3 Implementierungsvielfalt Prioritätsinversion 4 Threads Speichermodell Was sind Threads innerhalb
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
Memory Models Frederik Zipp
Memory Models Frederik Zipp Seminar: Programmiersprachen für Parallele Programmierung (SS 2010) Fakultät für Informatik - IPD SNELTING LEHRSTUHL PROGRAMMIERPARADIGMEN 1
Korrektheit durch modulare Konstruktion. Wie kann man die Korrektheit reaktiver Systeme gewährleisten?
Korrektheit durch modulare Konstruktion Wie kann man die Korrektheit reaktiver Systeme gewährleisten? Ansatz: Durch systematische Konstruktion (Schlagwort: strukturierte Programmierung für parallele Programmiersprachen)
The app the crashes, before the breakpoint is reached: Code to the event:
I have set a breakpoint in an asyc event-handler to ListView.ItenTapped-Event (see screenshot below): I then tap on an ListView-entry on my iphone 5 The app the crashes, before the breakpoint is reached:
Enterprise JavaBeans Überblick
Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5.
I Grundlagen der parallelen Programmierung 1
vii I Grundlagen der parallelen Programmierung 1 1 Einführung...... 3 1.1 Paradigmenwechsel in der Softwareentwicklung..... 4 1.2 Anwendungsbereiche...... 5 1.3 Parallelität in der Hardware..... 5 1.3.1
Best Practices. Rainer Grimm Training, Coaching und Technologieberatung
Best Practices Rainer Grimm Training, Coaching und Technologieberatung www.modernescpp.de Best Practices Allgemein Multithreading Parallelität Speichermodell Best Practices Allgemein Multithreading Speichermodell
Inhaltsverzeichnis. Carsten Vogt. Nebenläufige Programmierung. Ein Arbeitsbuch mit UNIX/Linux und Java ISBN:
Inhaltsverzeichnis Carsten Vogt Nebenläufige Programmierung Ein Arbeitsbuch mit UNIX/Linux und Java ISBN: 978-3-446-42755-6 Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-42755-6
C# Programmierung. Eine Einführung in das.net Framework. C# Programmierung - Tag 6: Fortgesch. Programmierung
C# Programmierung Eine Einführung in das.net Framework C# Programmierung - Tag 6: Fortgesch. Programmierung 1/27/2012 1 Zeitplan diese Woche Mo Di Mi Do Fr Zeichnen GDI+ Details Threas (CTE) lock, mutex
Aufgabe 9 Threads [12]
Aufgabe 9 Threads [12] a) Teilaufgaben: Antworten u. Grafiken größtenteils den Vorlesungsfolien von A. Brüggemann-Klein entnommen. a. Erläutern Sie die Zustände ready, running, sleeping, dead, in denen