Technische Informatik II (TI II) (6) Synchronisation. Sebastian Zug Arbeitsgruppe: Embedded Smart Systems

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Technische Informatik II (TI II) (6) Synchronisation. Sebastian Zug Arbeitsgruppe: Embedded Smart Systems"

Transkript

1 Jun-Prof Dr Sebastian Zug Technische Informatik II (TI II) (6) Synchronisation Sebastian Zug Arbeitsgruppe: Embedded Smart Systems

2 Jun-Prof Dr Sebastian Zug Fragen an die Veranstaltung Beschreiben Sie Beispiele, die eine Synchronisation nebenläufiger Prozesse erfordern Erklären Sie die Notwendigkeit für zwei Kontrollvariablen im Algorithmus von Dekker Beschreiben Sie die Vorgänge beim Livelock, Deadlock, beim Verhungern eines Prozesses und beim Blockieren Fassen Sie die Nachteile der intuitiven Lösungen, wie sie beim Einführungsbeispiel und bei der Diskussion zum Schutz der kritischen Abschnitte genannt wurden, zusammen Welche Anforderungen werden an eine Test&Set-Methode gestellt, die helfen soll, einen kritischen Abschnitt zu schützen Welche Nachteile gehen mit der notwendigen Einführung kritischer Abschnitte einher?

3 Jun-Prof Dr Sebastian Zug Literatur Bücher Operating Systems Internals and Design Principles, Seventh Edition, William Stallings Modern Operating Systems (3rd Edition), Andrew Tanenbaum Webseiten Dr David Sabel (Goethe-Universität, Frankfurt am Main)

4 Jun-Prof Dr Sebastian Zug Who will buy the milk? Einführendes Beispiel (WG-Szenario): Alice und Bob teilen sich einen Kühlschrank Sie wollen, dass stets genug Milch im Kühlschrank ist Es gilt aber auch zu viele Milchflaschen im Kühlschrank zu vermeiden Kooperativer Ansatz: Wer bemerkt, dass keine Milch mehr da ist, macht sich auf den Weg in den Supermarkt Zeit Alice Bob 17:00 Kommt nach Hause 17:05 Bemerkt fehlende Milch 17:10 Geht zum Einkaufsmarkt 17:15 Kommt nach Hause 17:20 Bemerkt fehlende Milch 17:25 Geht zum Einkaufsmarkt

5 Jun-Prof Dr Sebastian Zug Who will buy the milk? Lösungskonzept: Alice und Bob stimmen sich über Notizen am Kühlschrank ab Annahmen: nicht nur eine Person darf einkaufen gehen Alice und Bob können sich nicht sehen, dh sie kommunizieren nur über die Notizen

6 Jun-Prof Dr Sebastian Zug 1 Lösungsversuch Algorithmus: Wenn keine Notiz am Kühlschrank und keine Milch im Kühlschrank ist, dann schreibe Notiz an den Kühlschrank, gehe Milch kaufen, stelle die Milch in den Kühlschrank und entferne danach die Notiz Problem: Ergebnis: A1 A2 B1 B2 zu viel Milch

7 Jun-Prof Dr Sebastian Zug 2 Lösungsversuch Algorithmus: Hinterlasse als erstes eine Notiz am Kühlschrank, dann prüfe ob eine Notiz des anderen vorhanden ist Nur wenn keine weitere Notiz vorhanden ist, prüfe ob Milch vorhanden ist und gehe Milch kaufen, wenn keine Milch vorhanden ist Danach entferne die Notiz Problem: Ergebnis: A1 B1 A2 B2 Blockieren (Livelock) Möglicherweise wird keine Milch gekauft

8 Jun-Prof Dr Sebastian Zug 3 Lösungsversuch Alice: Schreibe Notiz, wenn keine Notiz von Bob, prüfe ob Milch vorhanden und gehe Milch kaufen Entferne Notiz Bob: Schreibe Notiz, warte bis keine Notiz von Alice am Kühlschrank hängt, dann prüfe, ob Milch leer ist, gehe Milch kaufen, entferne eigene Notiz Problem: Ergebnis: A1 - B1 - B2 - A2 - A5 - A1 - B2 beliebig oft Möglicherweise wird keine Milch gekauft A B Milchholer X Alice dc Bob dc = dont care

9 Jun-Prof Dr Sebastian Zug Korrekte Lösung Algorithmus: Zweite Variable, die jeweils kreuzweise geschrieben und gelesen wird

10 The computer science and engineering research study, MIT Press, 1980 Technische Informatik II Jun-Prof Dr Sebastian Zug Konsequenzen für ein Rechnersystem Prozessinteraktion funktionale Aspekte wie findet der Informationsaustausch statt? - Nachrichtenorientiert - gemeinsamer Speicher zeitliche, ablaufspezifische Aspekte wie wird der Informationsaustausch synchronisiert? wie werden generell nebenläufige Aktivitäten synchronisiert? Kommunikation + Koordination = Kooperation Designing correct routines for controlling concurrent activities proved to be one of the most difficult aspects of systems programming The ad hoc techniques used by programmers [ ] were always vulnerable to subtle programming errors whose effects could be observed only when certain relatively rare sequences of actions occurred

11 Jun-Prof Dr Sebastian Zug pthreads_without_mutualexclusionc #include<stdioh> #include<stringh> #include<pthreadh> #include<stdlibh> #include<unistdh> pthread_t tid[2]; int counter; int maxcount= ; int value; void* dosomething(void *arg){ unsigned long i = 0; counter += 1; printf("job %d started\n", counter); for(i=0; i<(maxcount);i++){ value++; printf("job %d finished\n", counter); return NULL; int main(void){ int i = 0; int err; while(i < 2) { err = pthread_create(&(tid[i]), NULL, &dosomething, NULL); if (err!= 0) printf("%s", strerror(err)); i++; pthread_join(tid[0], NULL); pthread_join(tid[1], NULL); printf("\n Value of value \n"); printf (intended %d): %d\n", i*maxcount, value); return 0;

12 Jun-Prof Dr Sebastian Zug Ergebnis gcc -o pthreads_without_mutualexclusion pthreads_without_mutualexclusionc -lpthread /pthreads_without_mutualexclusion Job 1 started Job 2 started Job 2 finished Job 2 finished Resulting value of value (intended ): Problem: Nebenläufigkeit + Nutzung gemeinsamer Daten, dh die Prozesse interagieren miteinander-> Asynchronität durch mehrere Prozessoren oder durch systembezogene Unterbrechungen Gefordertes Verhalten: Die Ergebnisse eines Prozesses müssen unabhängig von der eigenen Ausführungsgeschwindigkeit und der anderer nebenläufiger Prozesse sein Mechanismus: Synchronisation

13 Serialisierung der Ausführung Intuitiver Gedanke: Der Bereich des Programmes, der für den Zugriff auf die Ressource globale Variable verantwortlich ist, wird koordiniert Lediglich ein Programm darf zeitgleich Lese- oder Schreiboperationen ausführen Wechselseitiger Ausschluss (Mutual Exclusion) #include<stdioh> #include<stringh> #include<pthreadh> #include<stdlibh> #include<unistdh> Jun-Prof Dr Sebastian Zug pthreads_without_mutualexclusionc pthread_t tid[2]; int counter; int maxcount= ; int value; void* dosomething(void *arg){ unsigned long i = 0; counter += 1; printf("job %d started\n", counter); for(i=0; i<(maxcount);i++){ value++; printf("job %d finished\n", counter); return NULL;

14 Jun-Prof Dr Sebastian Zug Resultierende Herausforderungen Blockieren Prozess P 1 belegt ein Betriebsmittel, ein zweiter Prozess P 2 benötigt dasselbe Betriebsmittel und blockiert P 1 Verhungern (Starvation) Ein Prozess ist rechenbereit, gelangt aber nicht zur Ausführung, andere Prozesse werden aber vorgezogen (höherer Priorität) Deadlock Zwei oder mehr Prozesse halten Ressourcen belegt und versuchen weitere zu erlangen Liegt ein Zyklus von Abhängigkeiten vor, so kommt das System zum Stillstand

15 Jun-Prof Dr Sebastian Zug Interaktionsformen

16 Jun-Prof Dr Sebastian Zug Datenkohärenz (Bindungen) Buchführungsprogramm: Verhältnis zwischen a und b soll aufrecht erhalten werden Ausführungsreihenfolgen: P1: a = a + 1 b = b + 1 P2: b = 2 * b a = 2 * a a = a + 1 b = b + 1 b = 2 * b a = 2 * a b = 2 * b a = 2 * a b = b + 1 a = a + 1 a = a + 1 b = 2 * b b = b + 1 a = 2 * a Für jede Variable wird der wechselseitige Ausschluss befolgt Trotzdem entspricht das Ergebnis keinem Ergebnis, das ohne Nebenläufigkeit erzielt werden kann!

17 Wechselseitiger Ausschluss (Mutual Exclusion) Jun-Prof Dr Sebastian Zug Zielstellung: Konsistenz einer Ausführung Das Ergebnis einer Ausführung von nebenläufigen, unabhängigen Prozessen ist konsistent, wenn es durch irgendeine strikt aufeinanderfolgende Ausführung der Prozesse erreicht wird Forderung: Garantieren des exklusiven Zugriffs für längere Befehlssequenzen -> Konzept des kritischen Abschnitts ist ein Codeabschnitt, der zu einer Zeit nur durch einen Prozess oder Thread durchlaufen und in dieser Zeit nicht durch andere nebenläufige Prozesse oder Threads betreten werden darf

18 Jun-Prof Dr Sebastian Zug Kritischer Abschnitt /* Programm Wechselseitiger Ausschluss */ const int n /* Anzahl der Prozesse */ void P(int i) { while (true) { entercritical (i); /* Prolog zur Steuerung der Zugangskontrolle */ /* kritischer Abschnitt */; exitcritical (i); /*Epilog zur Steuerung der Zugangskontrolle*/ / * Restliche Programmzeilen * /; void main ( ) { parbegin (P 1, P 2,, P n );

19 Jun-Prof Dr Sebastian Zug Mutual Exclusion Bedingungen und Lösungsansätze 1Nur ein Prozess darf den kritischen Bereich zu einem Zeitpunkt betreten haben 2Das Verhalten eines Prozesses im nicht-kritischen Bereich darf die anderen Prozesse nicht beeinflussen 3Es werden keine Annahmen über die relative Ausführungsgeschwindigkeit der Prozesse, ihre Anzahl oder die Anzahl der Prozessoren gemacht Lösungsansätze: Interrupts sperren Softwarekonzepte für das Setzen und Sperren kritischer Abschnitte Hardwareunterstützung durch spezielle Maschinenbefehle 4Ein Prozess bleibt nur endliche Zeit in einem KA 5Wenn sich kein anderer Prozess im KA befindet, muss der Zugang ohne Verzögerung gewährt werden

20 Jun-Prof Dr Sebastian Zug Interrupts sperren while (1){ /* non-critical section */ /* disable interrupts */ local_irq_disable(); /* critical section */ local_irq_enable() /* enable interrupts */ /* disable interrupts */ /* remainder */ Prinzip: Stoppen aller Unterbrechungen Probleme: Verpassen von Interrupts notwendige Nutzerrechte problematisch Beschränkte Effizienz des Prozessors nicht anwendbar bei Multiprozessoren

21 Jun-Prof Dr Sebastian Zug Softwarelösung Versuch 1 Globale Variable zur Kontrolle des Zuganges: int turn /* Prozess 0 */ while (turn!=0) */ do nothing*/; /* critical section */ turn = 1; /* Prozess 1 */ while (turn!=1) */ do nothing*/; /* critical section */ turn = 0; Prinzip: Freiwillige Abgabe der Kontrolle über den kritischen Abschnitt Probleme: Aktives Warten, Streng alternierend; langsamer Prozess bestimmt die Periode Bei Ausfall eines Prozesses (auch außerhalb des kritischen Abschnitts) kann der kritische Abschnitt nicht mehr betreten werden

22 Jun-Prof Dr Sebastian Zug Softwarelösung Versuch 2 Globale Variable : enum boolean {false = 0; true = 1 boolean flag[2] = {false, false /* Prozess 0 */ while (flag[1]) */ do nothing*/; flag[0]= true; /* critical section */ flag[0]= false; /* Prozess 1 */ while (flag[0]) */ do nothing*/; flag[1]= true; /* critical section */ flag[1]= false; Prinzip: selbstbestimmte Reihenfolge der Ressourcenanforderung Probleme: kein wechselseitiger Ausschluss gewährleistet!

23 Jun-Prof Dr Sebastian Zug Softwarelösung Versuch 2 /* Prozess 0/1 */ while (flag[1/0]) */ do nothing*/; flag[0/1] = true; /* critical section */; flag[0/1] = false; flag 0 flag 1 Flag des anderen Prozesses lesen und das eigene ändern geschieht nicht atomar! true false

24 Jun-Prof Dr Sebastian Zug Softwarelösung - 3 Versuch gemeinsam benutzte globale Variable: enum boolean {false = 0; true = 1 boolean flag[2] = {false, false /* Prozess 0 */ flag[0]=true; while (flag[1]) */ do nothing*/; /* critical section */ flag[0]= false; /* Prozess 1 */ flag[1]=true; while (flag[0]) */ do nothing*/; /* critical section */ flag[1]= false; Prinzip: Flag-Überprüfung innerhalb des kritischen Bereiches Probleme: Bei Ausfall innerhalb des kritischen Abschnitts: Blockade Falls beide Prozesse die Flags auf "true" setzen: Deadlock (Verklemmung)

25 Jun-Prof Dr Sebastian Zug Softwarelösung - 3 Versuch while (flag[1]) /* do nothing*/ while (flag[0]) /* do nothing*/ /* Prozess 0/1 */ flag[0/1] = true; while (flag[1/0]) */ do nothing*/; /* critical section */; flag[0/1] = false; flag 0 flag 1 true false

26 Jun-Prof Dr Sebastian Zug Softwarelösung 4 Versuch gemeinsam benutzte globale Variable: enum boolean {false = 0; true = 1 boolean flag[2] = {false, false /* Prozess 0 */ flag[0]=true; while (flag[1]) { flag[0]=false; */ delay*/; flag[0]=true; /* critical section */ flag[0]= false; /* Prozess 1 */ flag[1]=true; while (flag[0]) { flag[1]=false; */ delay*/; flag[1]=true; /* critical section */ flag[1]= false; Prinzip: Zufällige Auflösungen von Deadlocks mit Timerablauf Probleme: Bei Ausfall innerhalb des kritischen Abschnitts: Blockade Falls kein Prozesse "nachgibt": Lifelock (Dynamische Verklemmung)

27 Jun-Prof Dr Sebastian Zug Softwarelösung 4 Versuch flag 0 flag 1 /* Prozess 0/1 */ flag[0/1] = true; while (flag[1/0]) { flag[0/1] = false; /* delay */; flag[0/1] = true; /* critical section */; flag[0/1] = false; true false

28 Jun-Prof Dr Sebastian Zug Dekkers Algorithmus boolean flag [2]; int turn; void main 0 { flag [0] = false; flag [1] = false; turn = 1; parbegin (P0, Pl); void P0() { while (true) { flag [0] = true; while (flag [1]) if (turn == 1) { flag [0] = false; while (turn == 1) / * do nothing */ flag [0] = true; /* kritischer Abschnitt turn = 1; flag [0] = false; / * Restliche Programmzeilen * /; void P1() { while (true) { flag [1] = true; while (flag [0]) if (turn == 0) { flag [1] = false; while (turn == 0) / * do nothing */ flag [1] = true; / * kritischer Abschnitt turn = 0; flag [1] = false; / * Restliche Programmzeilen

29 Jun-Prof Dr Sebastian Zug Dekker's Algorithmus flag 0 flag 1 1 turn true false

30 Jun-Prof Dr Sebastian Zug Dekker's Algorithmus flag 0 flag 1 10 turn true false

31 Jun-Prof Dr Sebastian Zug Dekker's Algorithmus flag 0 flag 1 10 turn true false

32 Jun-Prof Dr Sebastian Zug Dekkers Algorithmus [Theodorus Dekker] niederländischer Mathematiker Historisch der erste Algorithmus, der eine vollständige Lösung des wechselseitigen Ausschlusses umsetzt gegenseitige Blockierung und Monopolisierung des kritischen Abschnitts durch einen Prozess wird verhindert Problem: Erweiterung auf n Prozesse Verbesserung durch den Petterson und Kessel Algorithmus Gebraucht wird ein Algorithmus wie der Peterson-Algorithmus eigentlich nur zur Realisierung von wechselseitigem Ausschluss auf einem Computersystem mit zwei Prozessoren, die keine Instruktion wie Test-andset oder Compare-and-swap haben

33 Jun-Prof Dr Sebastian Zug Hardwareunterstützung Herausforderung: static int lock_var; int main(){ while (lock_var!= 0); lock_var = 1; /* kritischer Abschnitt */ /* */ 0x4004ed <+0>: push %rbp 0x4004ee <+1>: mov %rsp,%rbp 0x4004f1 <+4>: nop 0x4004f2 <+5>: mov 0x200b44(%rip),%eax # 0x60103c <lock_var> 0x4004f8 <+11>: test %eax,%eax 0x4004fa <+13>: jne 0x4004f2 <main+5> 0x4004fc <+15>: movl $0x1,0x200b36(%rip) # 0x60103c <lock_var> 0x <+25>: pop %rbp 0x <+26>: retq Gesucht: Varianten: Möglichkeit zur Umsetzung innerhalb einer nichtunterbrechbaren Operation TAS Befehle Test & Set, Compare & Swap, Exchange (x86)

34 void main(){ flag = 0; parbegin (P(1), P(2),,P(n)); Technische Informatik II Wechselseitiger Ausschluss mit Test and Set const int n = int flag; Jun-Prof Dr Sebastian Zug /* number of processes*/ boolean testset (int *i){ if (*i==0){ *i = 1; return true; else{ return false; /* als atomar angenommen!*/ void P(int i){ while (true){ while (!testset (&flag)) /* do nothing */; /* critical section*/ flag = 0; /* remainder*/

35 Wechselseitiger Ausschluss mit Exchange xchg src, dest The xchg instruction swaps the src operand with the dest operand If one of the operands is a memory address, then the operation has an implicit LOCK prefix, that is, the exchange operation is atomic This can have a large performance penalty It's also worth noting that the common NOP (no op) instruction, 0x90, is the opcode for xchgl %eax, %eax const int n = int flag; Jun-Prof Dr Sebastian Zug /* number of processes*/ void exchange(int *register, int *memory){ int temp; temp = *memory; *memory = *register; *register = temp; /* als atomar angenommen!*/ void P(int i){ int keyi = 1; while (true){ do exchange(&keyi, &flag) while (keyi!= 0); /* critical section*/ flag = 0; /* remainder*/ void main(){ flag = 0; parbegin (P(1), P(2),,P(n));

36 Jun-Prof Dr Sebastian Zug Was wurde bisher erreicht? Ziel: Erhaltung der Konsistenz von Daten trotz nebenläufigen Zugriffs, sei es durch Multiprogramming oder Multiprocessing Zur Manipulation der Daten müssen Befehlssequenzen (und nicht nur einzelne Befehle) atomar ausgeführt werden Die Algorithmen von Dekker und Peterson bieten korrekte Lösungen Hardwareunterstützung vereinfacht und verbessert die reinen Softwarelösungen Probleme?

37 Jun-Prof Dr Sebastian Zug Probleme der bisherigen Lösungen aktives Warten vollständig auf Anwendungsebene konzipierter Mechanismus keine Garantie gegen Verhungern Verklemmungen können auftreten P 0, hohe Priorität P 0 möchte KA betreten, der von P 1 gesperrt ist P P 0 unterbricht P 0 geht in seine 1 aktive Warteschleife und verhindert, dass P 1 jemals den KA verlässt P 1, niedrige Priorität P 1 betritt kritischen Abschnitt

38 Jun-Prof Dr Sebastian Zug Weitergehende Zielstellungen Einbettung des Konzepts in das Betriebssystem oder in die Programmiersprache Allgemeiner Mechanismus für die "Kooperation sequentieller Prozesse" Kein aktives Warten mehr Leicht zu verstehen und zu handhaben Semaphore (1965, Edsger W Dijkstra, ) Monitore (1974, Sir Charles Antony Richard (CAR) Hoare, 1934)

39 Jun-Prof Dr Sebastian Zug Bis zur nächsten Woche

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

Softwarelösungen: Versuch 4

Softwarelösungen: Versuch 4 Softwarelösungen: Versuch 4 Nichtstun in Schleife wird ersetzt durch zeitweilige Zurücknahme der Anforderung, um es anderen Prozessen zu erlauben, die Ressource zu belegen: /* Prozess 0 */ wiederhole flag[0]

Mehr

Übung zu Grundlagen der Betriebssysteme. 10. Übung 18.12.2012

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

Mehr

Technische Informatik II

Technische Informatik II Institut für Technische Informatik und Kommunikationsnetze Technische Informatik II Übung 1: Prozesse und Threads Aufgabe 1: Prozesse und Threads a) Wie verhält sich eine Applikation die aus mehreren Prozessen

Mehr

Technische Informatik II. SoSe 2013. Jörg Kaiser IVS EOS

Technische Informatik II. SoSe 2013. Jörg Kaiser IVS EOS Synchronisation SoSe 2013 Jörg Kaiser IVS EOS Otto-von-Guericke-Universität Magdeburg 1 1 Prozessinteraktion: Kommunikation, Koordination, Kooperation Problemformulierung Das Problem: Nebenläufigkeit +

Mehr

Arten der Synchronisation. Koordination nebenläufiger Prozesse. Koordinierung. Reihenschaltung. Einseitige Synchronisation

Arten der Synchronisation. Koordination nebenläufiger Prozesse. Koordinierung. Reihenschaltung. Einseitige Synchronisation Koordination nebenläufiger Prozesse Arten der Synchronisation Systemaufrufe Programmverwaltung Zugriffskontrolle Dateiverwaltung Ein /Auslagerung Vernetzung Ein /Ausgabe Fadenverwaltung Koordination Prozesseinplanung

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

Algorithmen und Programmierung IV: Nichtsequentielle Programmierung. Überblick. Überblick

Algorithmen und Programmierung IV: Nichtsequentielle Programmierung. Überblick. Überblick Algorithmen und Programmierung IV: Nichtsequentielle Programmierung Überblick Robert Tolksdorf Basiert auf ALP IV, SS 2003 Klaus-Peter Löhr Freie Universität Berlin [1] Peter Löhr, Robert Tolksdorf, Berlin

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

Domänenmodell: Fadenkommunikation und -synchronisation

Domänenmodell: Fadenkommunikation und -synchronisation Domänenmodell: Fadenkommunikation und -synchronisation Alexander Humphreys, Reinhard Rösch, Fabian Scheler 15. Mai 2003 Inhaltsverzeichnis 1 Domänendefinition 1 2 Domänenlexikon 1 3 Konzeptmodelle 4 4

Mehr

6. Tutorium zu Softwaretechnik I

6. Tutorium zu Softwaretechnik I 6. Tutorium zu Softwaretechnik I Parallelität und Testen Michael Hoff 01.07.2014 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum

Mehr

Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik

Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik Wintersemester 2011/2012 Dr. David Sabel Institut für Informatik Fachbereich Informatik und Mathematik Goethe-Universität

Mehr

Erzeuger/Verbraucher-Problem: gemeinsamer Puffer Programm für Erzeuger. Kapitel IV

Erzeuger/Verbraucher-Problem: gemeinsamer Puffer Programm für Erzeuger. Kapitel IV Kapitel IV Prozesssynchronisation Erzeuger/Verbraucher-Problem: gemeinsamer Puffer Programm für Erzeuger Repeat produziere Datum in nextp while counter == n; buffer[in]=nextp; in = (in+1) % n; counter++;

Mehr

2. Aufgabenblatt Threads

2. Aufgabenblatt Threads Fakultät Informatik Institut für Systemarchitektur, Professur für Betriebssysteme Betriebssysteme und Sicherheit, WS 2016/17 2. Aufgabenblatt Threads Geplante Bearbeitungszeit: drei Wochen TEIL A THREADS

Mehr

Moderne Betriebssysteme. Kapitel 8. Kapitel 8. Folie: 1. Multiprozessorsysteme. Autor: Andrew S. Tanenbaum

Moderne Betriebssysteme. Kapitel 8. Kapitel 8. Folie: 1. Multiprozessorsysteme. Autor: Andrew S. Tanenbaum Moderne Betriebssysteme Kapitel 8 Multiprozessorsysteme Kapitel 8 Folie: 1 Multiprozessorsysteme Autor: Andrew S. Tanenbaum Pearson Studium 2009 2 3 4 5 6 7 Betriebssystemarten für Multiprozessoren Jede

Mehr

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus Zur Erinnerung: Threads Programmierung (fortgeschrittene Konzepte) Threads, Monitore, Semaphore und speisende en Wolf-Ulrich Raffel (uli@wuraffel.de) Möglichkeiten, Threads zu definieren Bildung einer

Mehr

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant? Übersicht Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik Einleitung 1 2 der nebenläufigen Programmierung WS 2011/12 Stand der Folien: 18. Oktober 2011 1 TIDS

Mehr

Microcontroller Kurs Programmieren. 09.10.11 Microcontroller Kurs/Johannes Fuchs 1

Microcontroller Kurs Programmieren. 09.10.11 Microcontroller Kurs/Johannes Fuchs 1 Microcontroller Kurs Programmieren 9.1.11 Microcontroller Kurs/Johannes Fuchs 1 General Purpose Input Output (GPIO) Jeder der Pins der vier I/O Ports kann als Eingabe- oder Ausgabe-leitung benutzt werden.

Mehr

Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss Maren Bennewitz Version 12.12.2012 1 Nachtrag zu letzter Vorlesung Hauptspeicher reicht nur für begrenzte Anzahl von

Mehr

Übung zu Grundlagen der Betriebssysteme. 11. Übung

Übung zu Grundlagen der Betriebssysteme. 11. Übung Übung zu Grundlagen der Betriebssysteme 11. Übung 08.01.2012 Organisation Anmeldung zur Klausur Klausur Grundlagen der Betriebssysteme Datum: 05.02.2013 Raum F414 (steht aber noch nicht sicher fest) Anmeldung

Mehr

Gliederung. Monitor (eine auf ein Modul bezogene) Klasse

Gliederung. Monitor (eine auf ein Modul bezogene) Klasse Systemprogrammierung Prozesssynchronisation: Hochsprachenebene Wolfgang Schröder-Preikschat Lehrstuhl Informatik 4 04. November 2014 c wosch (Lehrstuhl Informatik 4) Systemprogrammierung SP2 # WS 2014/15

Mehr

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen Seite 8 A UFGABE 11 INTERP ROZEßKOMMUNIKATION Das folgende Petrinetz zeigt zwei verkoppelte Prozesse P1 und P2. Die Transitionen a und b beschreiben Aktionen von P1, die Transitionen c und d Aktionen von

Mehr

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

Kapitel 4. Monitore und wechselseitiger Ausschluss

Kapitel 4. Monitore und wechselseitiger Ausschluss Seite 1 Kapitel 4 Monitore und wechselseitiger Ausschluss Prof. Dr. Rolf Hennicker 28.05.2015 4.1 Interferenzen Seite 2 Parallel ablaufende Prozesse können sich gegenseitig (störend) beeinflussen. Beispiel

Mehr

Monitore. Klicken bearbeiten

Monitore. Klicken bearbeiten Sascha Kretzschmann Institut für Informatik Monitore Formatvorlage und deren Umsetzung des Untertitelmasters durch Klicken bearbeiten Inhalt 1. Monitore und Concurrent Pascal 1.1 Warum Monitore? 1.2 Monitordefinition

Mehr

Verbessertes Konzept: Monitore

Verbessertes Konzept: Monitore Verbessertes Konzept: Monitore Ein Nachteil von Semaphoren ist die Notwendigkeit zur expliziten Anforderung P und Freigabe V des kritischen Bereiches durch den Programmierer Vergißt der Entwickler z.b.

Mehr

Mutual Exclusion und Synchronisation. Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at

Mutual Exclusion und Synchronisation. Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1 Gemeinsame Ressourcen BS und Prozesse, parallel laufende Prozesse verwenden die selben

Mehr

Linux Prinzipien und Programmierung

Linux Prinzipien und Programmierung Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2014 1 / 28 Kritische Bereiche bei Threads Deadlocks Conditions/Semaphore 2 / 28 Beispiel aus der letzten Vorlesung

Mehr

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Grundlagen. Die Komponenten eines C Programms. Das erste Programm Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note:

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note: Name: Punkte: Note: Hinweise für das Lösen der Aufgaben: Zeit: 95 min. Name nicht vergessen! Geben Sie alle Blätter ab. Die Reihenfolge der Aufgaben ist unabhängig vom Schwierigkeitsgrad. Erlaubte Hilfsmittel

Mehr

Das Briefträgerproblem

Das Briefträgerproblem Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................

Mehr

DIPLOMHAUPTPRÜFUNG FÜR ELEKTROINGENIEURE PROZESSAUTOMATISIERUNG I Sommersemester 2006 - Musterlösung

DIPLOMHAUPTPRÜFUNG FÜR ELEKTROINGENIEURE PROZESSAUTOMATISIERUNG I Sommersemester 2006 - Musterlösung Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner Mr, Mb 30.08.06 DIPLOMHAUPTPRÜFUNG FÜR ELEKTROINGENIEURE PROZESSAUTOMATISIERUNG I Sommersemester

Mehr

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B. C-Crash-Kurs Eine kurze, keinesfalls erschöpfende Einführung in die Sprache C für Studierende, die eine strukturierte imperative Programmiersprache beherrschen. Die Vorstellung erfolgt am Beispiel von

Mehr

Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance

Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance 5. November 2013 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität Basel Repetition

Mehr

9. Vorlesung Betriebssysteme

9. Vorlesung Betriebssysteme Dr. Christian Baun 9. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 1/39 9. Vorlesung Betriebssysteme Dr. Christian Baun Hochschule Mannheim Fakultät für Informatik wolkenrechnen@gmail.com Dr. Christian

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

Synchronisation in Datenbanksystemen in a nutshell

Synchronisation in Datenbanksystemen in a nutshell Synchronisation in Datenbanksystemen in a nutshell 1. Modell für nebenläufige Transaktionen und Korrektheitskriterium Transaktionsmodell: Folgen von Lese und Schreiboperationen abgeschlossen durch c=commit.

Mehr

Serialisierbarkeit von Historien: Minimalanforderung bzgl. "akzeptabler" Synchronisation

Serialisierbarkeit von Historien: Minimalanforderung bzgl. akzeptabler Synchronisation Rücksetzbarkeit Serialisierbarkeit von Historien: Minimalanforderung bzgl. "akzeptabler" Synchronisation von Transaktionen zusätzliche Forderung: lokale Rücksetzbarkeit von Historien, d.h. Jede Transaktion

Mehr

... T n T 1 T 2 T 3. Transaktions-Manager. Daten-Manager. Recovery-Manager Puffer-Manager. Datenbank

... T n T 1 T 2 T 3. Transaktions-Manager. Daten-Manager. Recovery-Manager Puffer-Manager. Datenbank Techniken der Schedule-Realisierung T 1 T 2 T 3.... T n Isolations-Eigenschaft wird durch den Scheduler sichergestellt. Aufgabe: : Koordination des Ablaufs konkurrierender Transaktionen so, dass deren

Mehr

Beispiel für überladene Methode

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

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

U6-1 Organisatories. U6-2 Motivation von Threads. U6-3 Vergleich von Thread-Konzepten. Organisatorisches

U6-1 Organisatories. U6-2 Motivation von Threads. U6-3 Vergleich von Thread-Konzepten. Organisatorisches U6 6. Übung U6 6. Übung U6-1 Organisatories U6-1 Organisatories Organisatorisches Zusätzliche Tafelübung zur S1-Klaurvorbereitung Besprechung Aufgabe 5 (crawl) OSIX-Threads Motivation Thread-Konzepte am

Mehr

Das Monitorkonzept Brinch-Hansen

Das Monitorkonzept Brinch-Hansen Das Monitorkonzept (nach Hoare/Brinch Brinch-Hansen 1974) Nur ein Prozess bzw. Thread kann zu einem bestimmten Zeitpunkt im Monitor aktiv sein => gegenseitiger Ausschluss, mutual exclusion. Geschützte

Mehr

Übung Betriebssysteme 11

Ü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

Mehr

9 Verteilte Verklemmungserkennung

9 Verteilte Verklemmungserkennung 9 Verteilte Verklemmungserkennung 9.1 Grundlagen Für die Existenz einer Verklemmung notwendige Bedingungen Exklusive Betriebsmittelbelegung Betriebsmittel können nachgefordert werden Betriebsmittel können

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Kritischer Abschnitt. Beispiel: Geld abbuchen. Problem: Wettläufe zwischen den Threads race conditions

Kritischer Abschnitt. Beispiel: Geld abbuchen. Problem: Wettläufe zwischen den Threads race conditions Beispiel: Geld abbuchen Kritischer Abschnitt Problem: Wettläufe zwischen den Threads race conditions Den Programmteil, in dem auf gemeinsamem Speicher gearbeitet wird, nennt man Kritischer Abschnitt int

Mehr

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum 4. Lernen von Entscheidungsbäumen Klassifikation mit Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch /Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse zugeordnet werden.

Mehr

Assertions (Zusicherungen)

Assertions (Zusicherungen) April 10, 2005 Oberseminar Software-Entwicklung Inhalt 1. Einführung (Motivation, Tony Hoare, Programmverifikation) 2. Design by Contract (Idee, Eiffel) 3. Praxis: Programming by Contract for Python 4.

Mehr

Nebenläufige Programmierung in Java

Nebenläufige Programmierung in Java Informatik IV 37-004 SS 2002 Thomas Gross Diese Slides kommen ohne Gewähr. 9-1 Thomas Gross 1997-2000 Nebenläufige Programmierung in Java Threads und deren Zustände Speichermodell Einfache Synchronisation

Mehr

Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008

Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008 Name: Matrikel-Nr: Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008 Bitte schreiben Sie leserlich und antworten Sie kurz und präzise. 1. Zeichnen Sie das Schichten-Modell eines Computersystems und markieren

Mehr

Klassische Themen der Computerwissenschaft Constraint Programming: Exercises. Gruppe: 100. Inhaltsverzeichnis

Klassische Themen der Computerwissenschaft Constraint Programming: Exercises. Gruppe: 100. Inhaltsverzeichnis Klassische Themen der Computerwissenschaft Constraint Programming: Exercises Gruppe: 100 Inhaltsverzeichnis 1 Exercise 1 1 2 Exercise 2 2 2.1 Backtracking........................... 2 2.2 Forward checking.........................

Mehr

Multiprozessoren. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011

Multiprozessoren. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Multiprozessoren Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Multiprozessoren 1/29 2011-06-16 Multiprozessoren Leistungsfähigkeit

Mehr

Lock-freie Konzepte für parallele Software. Ein Überblick. Klaus Kusche, September 2014

Lock-freie Konzepte für parallele Software. Ein Überblick. Klaus Kusche, September 2014 Lock-freie Konzepte für parallele Software Ein Überblick Klaus Kusche, September 2014 Mein Bezug zum Thema Ich habe Lock-freie Algorithmen und Datenstrukturen als zentrale Komponente eines Betriebssystems

Mehr

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff Programmieren in C Rekursive Funktionen Prof. Dr. Nikolaus Wulff Rekursive Funktionen Jede C Funktion besitzt ihren eigenen lokalen Satz an Variablen. Dies bietet ganze neue Möglichkeiten Funktionen zu

Mehr

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) 6. Übung http://ess.cs.tu-.de/de/teaching/ws2013/bsb/ Olaf Spinczyk olaf.spinczyk@tu-.de http://ess.cs.tu-.de/~os AG Eingebettete System Informatik 12, TU Dortmund Agenda Vorstellung

Mehr

9 Multithreading. 1 Idee des Multithreading

9 Multithreading. 1 Idee des Multithreading 9 Multithreading Jörn Loviscach Versionsstand: 21. Juli 2015, 11:50 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work is licensed

Mehr

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

Mehr

Propädeutikum. Dipl.-Inf. Frank Güttler

Propädeutikum. Dipl.-Inf. Frank Güttler Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik

Mehr

Thread-Konzept in objektorientierten Programmiersprachen. Threads. Threads in Java

Thread-Konzept in objektorientierten Programmiersprachen. Threads. Threads in Java Thread-Konzept in objektorientierten Programmiersprachen 1 Threads ein Thread ist ein eigenständiges Programmfragment, das parallel zu anderen Teilen eines Programmes ablaufen kann alle Threads eines Programmes

Mehr

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block Inhalt: InsertionSort BubbleSort QuickSort Block M.: "Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren", Springer-Verlag 2007 InsertionSort I Das Problem unsortierte Daten in

Mehr

Rechnerarchitektur SS 2012

Rechnerarchitektur SS 2012 Rechnerarchitektur SS 2012 Speicherkonsistenz Michael Engel TU Dortmund, Fakultät für Informatik Teilweise basierend auf Material von Gernot A. Fink und R. Yahyapour 13. Juni 2013 Speicherkonsistenz Kohärenz

Mehr

CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik)

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

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:

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

3.2 Prozessumschaltung

3.2 Prozessumschaltung 3.2 Prozessumschaltung (dispatching) deaktiviert einen Prozess und aktiviert einen anderen. Wann? aktiver Prozess wird vom Prozessor verdrängt zugunsten eines bereiten Prozesses aktiver Prozess blockiert,

Mehr

Prozessor (CPU, Central Processing Unit)

Prozessor (CPU, Central Processing Unit) G Verklemmungen G Verklemmungen Einordnung: Prozessor (CPU, Central Processing Unit) Hauptspeicher (Memory) Ein-, Ausgabegeräte/ Periphere Geräte (I/O Devices) externe Schnittstellen (Interfaces) Hintergrundspeicher

Mehr

Multi-Threading. Ralf Abramowitsch Vector Informatik GmbH abramowitsch@lehre.dhbw-stuttgart.de

Multi-Threading. Ralf Abramowitsch Vector Informatik GmbH abramowitsch@lehre.dhbw-stuttgart.de Multi-Threading Ralf Abramowitsch Vector Informatik GmbH abramowitsch@lehre.dhbw-stuttgart.de Einführung in Threads Threads synchronisieren ThreadPools Thread = unabhängiger Ausführungspfad, der gleichzeitig

Mehr

Kapitel 2: Betriebssysteme

Kapitel 2: Betriebssysteme LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2009 Vorlesung: Dr. Peer Kröger Übungen:

Mehr

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Carla Delgado-Battenfeld Fatih Gedikli Tobias Marschall Benjamin Schowe

Mehr

Synchronisation in Java. Invisible Web

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

Mehr

Klausur zur Vorlesung Grundlagen der Betriebssysteme

Klausur zur Vorlesung Grundlagen der Betriebssysteme Prof. Dr. L. Wegner Dipl.-Math. K. Schweinsberg Klausur zur Vorlesung Grundlagen der Betriebssysteme 19.2.2004 Name:... Vorname:... Matrikelnr.:... Studiengang:... Hinweise: Bearbeitungszeit 2 Stunden.

Mehr

Synchronisierung von Transaktionen ohne Sperren. Annahme: Es gibt eine Methode, zu erkennen, wann eine Transaktion die serielle Ordnung verletzt.

Synchronisierung von Transaktionen ohne Sperren. Annahme: Es gibt eine Methode, zu erkennen, wann eine Transaktion die serielle Ordnung verletzt. OPTIMISTIC CONCURRENCY CONTROL Synchronisierung von Transaktionen ohne Sperren. Annahme: Es gibt eine Methode, zu erkennen, wann eine Transaktion die serielle Ordnung verletzt. Abbruch einer Transaktion

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 4 Einführung in die Programmiersprache Java (Teil II)... 4-2 4.4 Strukturierte Programmierung... 4-2 4.4.1 Strukturierung im Kleinen... 4-2 4.4.2 Addierer (do-schleife)... 4-3 4.4.3 Ein- Mal- Eins

Mehr

Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren (P)

Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren (P) Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom 26.11. Foliensatz 5 Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren

Mehr

leave: mov flag, 0 ; 0 in flag speichern: Lock freigeben ret

leave: mov flag, 0 ; 0 in flag speichern: Lock freigeben ret 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)

Mehr

SOI 2013. Die Schweizer Informatikolympiade

SOI 2013. Die Schweizer Informatikolympiade SOI Die Schweizer Informatikolympiade Lösung SOI Wie schreibe ich eine gute Lösung? Bevor wir die Aufgaben präsentieren, möchten wir dir einige Tipps geben, wie eine gute Lösung für die theoretischen

Mehr

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition) Ein Prozess kann unmittelbar vom Zustand 1. Running in den Zustand Ready 2. Running in den Zustand Blocked 3. Ready in den Zustand Running Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition) Der Adressraum

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Parallele Algorithmen mit OpenCL. Universität Osnabrück, Henning Wenke, 2013-05-08

Parallele Algorithmen mit OpenCL. Universität Osnabrück, Henning Wenke, 2013-05-08 Parallele Algorithmen mit OpenCL Universität Osnabrück, Henning Wenke, 2013-05-08 Aufräumen Ressourcen in umgekehrter Abhängigkeitsreihenfolge freigeben Objekte haben Reference-Count (RC), initial 1 clrelease

Mehr

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 1 / 53 Inhaltsverzeichnis 1 Einführung 2 Assembler Syntax, Register und Flags 3 Hauptspeicher 4 Stack 5 Assemblerbefehle

Mehr

Prozesse und Scheduling

Prozesse und Scheduling Betriebssysteme für Wirtschaftsinformatiker SS04 KLAUSUR Vorbereitung mit Lösungen / Blatt 1 Prozesse und Scheduling Aufgabe 1 : Scheduling Gegeben seien die folgenden Prozesse und die Längen des jeweiligen

Mehr

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen

Mehr

Der Toy Rechner Ein einfacher Mikrorechner

Der Toy Rechner Ein einfacher Mikrorechner Der Toy Rechner Ein einfacher Mikrorechner Dr. Gerald Heim Haid-und-Neu-Str. 10-14 76131 Karlsruhe 16. Mai 1995 Allgemeine Informationen 2 Quelle: Phil Kopmann, Microcoded versus Hard-Wired Logic, Byte

Mehr

Assembler - Einleitung

Assembler - Einleitung Assembler - Einleitung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Einleitung 1/19 2008-04-01 Teil 1: Hochsprache

Mehr

Software-Engineering und Datenbanken

Software-Engineering und Datenbanken Software-Engineering und Datenbanken Transaktionskonzepte 1 Der Transaktionsbegriff Eine Transaktion ist eine Folge von Operationen, die die Datenbank von einem konsistenten Zustand in einen neuen überführen.

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 4 Anweisungen... 4-2 4.1 Strukturierte Programmierung... 4-2 4.1.1 Geschichte... 4-2 4.1.2 Strukturierung im Kleinen... 4-2 4.2 Einige Beispielanwendungen... 4-4 4.2.1 Addierer (do-schleife)...

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Martin Wirsing 2 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm... Warum als Programmiersprache verwenden? Ein einfaches -Programm erstellen, übersetzen

Mehr

Name: Klausur Programmierkonzepte SS 2011

Name: Klausur Programmierkonzepte SS 2011 Prof. Dr.-Ing. Hartmut Helmke Ostfalia Hochschule für angewandte Wissenschaften Fakultät für Informatik Matrikelnummer: Punktzahl: Ergebnis: Freiversuch F1 F2 F3 Klausur im SS 2011: Programmierkonzepte

Mehr

PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes

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

Mehr

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C Interrupts Funktionsprinzip Interrupts bei ATmega128 Beispiel in C Funktionsprinzip 1 Was ist ein Interrupt? C muss auf Ereignisse reagieren können, z.b.: - jemand drückt eine Taste - USART hat Daten empfangen

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

MIKROPROZESSOR PROGRAMMIERUNG 8. VORLESUNG. LV-Nr. 439.026 SS2007 1 INSTITUT FÜR ELEKTRONIK BIT

MIKROPROZESSOR PROGRAMMIERUNG 8. VORLESUNG. LV-Nr. 439.026 SS2007 1 INSTITUT FÜR ELEKTRONIK BIT MIKROPROZESSOR PROGRAMMIERUNG 8. VORLESUNG BIT LV-Nr. 439.026 SS2007 1 Datendefinitionen b) Unterteilung nach Typen: (Teil 2) void leer Pointer 2/4 Bytes Adresse von Objekten Arrays bei allen Datentypen

Mehr

Vorlesung "Verteilte Systeme" Sommersemester 1999. Verteilte Systeme. Adreßraum. Rechner. Verteilte Systeme, Sommersemester 1999 Folie 19.

Vorlesung Verteilte Systeme Sommersemester 1999. Verteilte Systeme. Adreßraum. Rechner. Verteilte Systeme, Sommersemester 1999 Folie 19. Verteilte Systeme 19. Distributed Shared Memory Sharing!! No Sharing! Sharing? Evolution der Berechnungsmodelle Vergangenheit Gemeinsamer Speicher Einzelrechner Gegenwart Nachrichtenkommunikation Verteilte

Mehr

C/C++ Programmierung

C/C++ Programmierung 1 C/C++ Programmierung Grundlagen: Anweisungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Anweisungen (Statements)

Mehr

Tafelübung zu BSRvS1. 3. Philosophen. Fortsetzung Grundlagen C-Programmierung

Tafelübung zu BSRvS1. 3. Philosophen.  Fortsetzung Grundlagen C-Programmierung Tafelübung zu BSRvS1 3. Philosophen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/exercises/

Mehr

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

Mehr

Softwaresysteme I Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2007 U9.fm

Softwaresysteme I Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2007 U9.fm U9 9. Übung U9 9. Übung U9-1 Überblick Besprechung Aufgabe 6 (printdir) Posix-Threads U9.1 U9-2 Motivation von Threads U9-2 Motivation von Threads UNIX-Prozesskonzept: eine Ausführungsumgebung (virtueller

Mehr