Übung zu Grundlagen der Betriebssysteme. 10. Übung

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

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

Transkript

1 Übung zu Grundlagen der Betriebssysteme 10. Übung

2 Aufgabe 1 a) Was versteht man unter einem kritischen Abschnitt oder kritischen Gebiet (critical area)? b) Welche Aufgabe hat ein Semaphor? c) Was passiert in der Funktion acquire(s) (oder P(S) oder wait() ) d) Was passiert in der Funktion release(s) (oder V(S) oder signal() ) e) Was bedeutet im Zusammenhang mit Synchronisation Atomarität und warum müssen die Semaphor Funktionen acquire() und release() atomar (atomic) sein.

3 Aufgabe 1 a) Was versteht man unter einem kritischen Abschnitt oder kritischen Gebiet (critical area)? Programmteile, die nicht unterbrochen werden dürfen, werden als kritische Abschnitte bezeichnet. Ist ein Codeabschnitt, der zu einer Zeit nur durch einen Prozess (Thread) durchlaufen und in dieser Zeit nicht durch andere nebenläufige Prozesse (Threads) betreten werden darf. Ein Prozess (Thread) der einen kritischen Abschnitt betritt, darf nicht unterbrochen werden. Sofern das Betriebssystem in dieser Zeit aufgrund einer Scheduling-Entscheidung eine Unterbrechung zulässt, darf der Prozess (Thread), der den kritischen Abschnitt belegt, nicht beeinflusst werden.

4 Aufgabe 1 b) Welche Aufgabe hat ein Semaphor? Semaphore garantieren den wechselseitigen Ausschluss (mutual Exclusion) der Prozesse über einem kritischen Gebiet! Semaphor kann einen nichtnegativen Wert annehmen - binärer Semaphor kann nur Werte 0 und 1 annehmen. - zählender Semaphor kann beliebige Werte 0 annehmen. zählende Semaphor zeigt die Anzahl der freien Betriebsmittel. binäre Semaphore bieten die selbe Ausdruckskraft wie zählende Semaphore. Semaphore nutzen eine Warteschlange für die wartenden Prozesse. die Reihenfolge mit der die Prozesse aus der Warteschlange geholt werden, lässt sich unterschiedlich einstellen. die fairste Vorgehensweise ist First-In-First-Out (FIFO) Ein Semaphor, - das eine Aktivierungsreihenfolge einhält starkes Semaphor - ohne festgelegte Reihenfolge schwaches Semaphor

5 Aufgabe 1 c) Was passiert in der Funktion acquire(s) (oder P(S) oder wait() ) Die Operation P(S) prüft die Semaphorvariable und setzt diese, wenn das kritische Gebiet gerade frei ist. Die Operation P(S) (wait()) verringert den Wert des Semaphors. Wird der resultierende Wert negativ, wird der Prozess, der die Operation P(S) ausführt blockiert. P(S) hält den ausführenden Prozess an, solange der Wert des Semaphores 0 ist.

6 Aufgabe 1 d) Was passiert in der Funktion release(s) (oder V(S) oder signal() ) Die Operation V(S) setzt die Semaphorvariable wieder zurück, wenn das kritische Gebiet verlassen wurde. Die Operation V(S) (signal()) erhöht den Wert des Semaphors. Ist der resultierende Wert nicht positiv, wird ein durch eine V(S)-Operation blockierter Prozess freigegeben. V(S) erhöht den Wert des Semaphors und gibt so einen Prozess frei.

7 Aufgabe 1 e) Was bedeutet im Zusammenhang mit Synchronisation Atomarität und warum müssen die Semaphor Funktionen acquire() und release() atomar (atomic) sein. atomare Operationen dürfen selbst nicht unterbrochen werden und müssen als untrennbaren Schritt behandelt werden. Wären die Funktionen nicht atomar, so würde wenn nach Prüfung der Semaphorvariable ein anderer Prozess an die Reihe käme und dieser ebenso das kritische Gebiet betreten wollte, auch er feststellen, dass die Semaphorvariable noch nicht gesetzt ist und glauben, die kritische Ressource wurde zur Zeit nicht benutzt. daher unterbinden atomare Operationen die Prozessumschaltung für die Dauer ihrer Arbeit. Realisierung z.b. mit test-and-set Hardwareinstruktion

8 Aufgabe 1 f) Welche Auswirkungen haben die folgenden jeweils falschen Verwendungen eines binären Semaphors? 1) release(s);.kritischer Abschnitt...; acquire(s); Diese Anweisungsfolge führt dazu, dass alle Prozesse nur noch im kritischen Abschnitt zugelassen sind. Sie kommen alle problemlos in den kritischen Abschnitt. 2) acquire(s);.kritischer Abschnitt...; acquire(s); Diese Anweisungsfolge führt dazu, dass nach kurzer Zeit kein Prozess mehr in den kritischen Abschnitt darf und die ersten Prozesse möglicherweise auch im kritischen Abschnitt verbleiben.

9 Aufgabe 1 g) Nennen Sie einen wesentlichen Vorteil, den Semaphore gegenüber den reinen Softwareansätzen von Dekker und Peterson bieten? 1) Warteschlangen vs. Warteschleifen Semaphoren reihen Prozesse in Warteschlangen ein und blockieren somit die Prozess während diese warten! Bei den Softwareansätze von Dekker und Peterson hängen die Prozesse in Warteschleifen (busy waiting) hier bleibt der Prozess im rechenbereiten Zustand und verbraucht entsprechend CPU-Zeit. 2) Übersichtlichere Programmierung Semaphore sind eine durch das Betriebssystem oder die System-Bibliothek gestellte Möglichkeit des gegenseitigen Ausschlusses und werden entsprechend, z.b. durch den compiler, unterstützt. 3) Kann Prozessübergreifend vom Betriebssystem verwaltet werden! named Semaphore (POSIX)

10 Aufgabe 2 Erzeuger/Verbraucher Code (fehlerhaft)

11 Aufgabe 2

12 Aufgabe 2

13 Aufgabe 2 Das Programm funktioniert nicht richtig! Wo liegt das Problem und welche Auswirkung hat es auf die Funktion des Programms? 1) Zähler n wird negativ Consumer greift auf einen leeren Puffer zu. 2) Semaphor P(delay) funktioniert nicht richtig Zeile 18 Lösung 1: Einführung einer weiteren, lokalen Variablen für den Verbraucher. Lösung 2: Die Zählervariable n wird zum zählenden Semaphor.

14 Aufgabe 2 Erzeuger/Verbraucher Code (korrekt) Lösung 1 Hilfsvariable

15 Aufgabe 2

16 Aufgabe 2 Erzeuger/Verbraucher Code (korrekt) Lösung 2 zählender Semaphor

17 Aufgabe 2

18 Aufgabe 2

19 Aufgabe 2

20 Erzeuger/Verbraucher Problem - 2 Prozesse besitzen einen gemeinsamen Puffer der Größe N - der Erzeuger füllt Daten in den Puffer - der Verbraucher entnimmt Daten aus dem Puffer - der globale Zähler enthält die aktuelle Anzahl von Daten im Puffer 3 Semaphore: #define N 150 //Puffergröße Semaphor w_ausschluss(1); wechselseitigen Ausschluss für den Eintritt in den kritischen Bereich, wird mit 1 initialisiert Semaphor leer(n); zählt die freien Pufferbereiche initialisiert mit der Puffergröße Semaphor voll(0); zählt die belegten Puffereinträge initialisiert mit 0

21 Erzeuger/Verbraucher Problem void erzeuger(){ } int teil; while(true){ } produziere_teil(&teil); leer.down(); w_ausschluss.down() einfuegen_puffer(teil); w_ausschluss.up(); voll.up() void verbraucher(){ int teil; while(true){ voll.down(); w_ausschluss.down(); entnimm_puffer(&teil); w_ausschluss.up(); leer.up(); verarbeite_teil(); } }

22 Aufgabe 3 1) Prozesse erzeugt über fork() 2) Shared-Memory Bereich bildet die gemeinsame Variable n Beispiele: 1) sharedmemory.c Beispiel für Anomalie 2) sharedmemsem.c Beispiel mit Semaphore in POSIX

23 Aufgabe 3

24 Aufgabe 3

25 Aufgabe 3

26 Aufgabe 3

27 Aufgabe 4 Gegeben ist das folgende C-Programm (twothreads.c) bestehend aus zwei Threads (main und thr) die ein kritisches Gebiet (criticalarea-funktion) durchqueren. Schauen Sie sich das Programm genau an und kompilieren und starten Sie es mit: gcc -o twothreads twothreads.c -lpthread./twothreads

28 Aufgabe 4 Ausgabe:./twothreads Thread 1 ist nicht im kritischen Gebiet Thread 2 ist nicht im kritischen Gebiet +++1 Thread 1 betritt kritisches Gebiet Thread 1 ist im kritischen Gebiet Thread 1 verlaesst kritisches Gebiet +++ Thread 1 ist nicht im kritischen Gebiet Thread 1 ist nicht im kritischen Gebiet ---1 Thread 2 betritt kritisches Gebiet Thread 2 ist im kritischen Gebiet Thread 2 verlaesst kritisches Gebiet --- Thread 2 ist nicht im kritischen Gebiet Thread 2 ist nicht im kritischen Gebiet +++1 Thread 1 betritt kritisches Gebiet Thread 1 ist im kritischen Gebiet Thread 1 verlaesst kritisches Gebiet +++ Thread 1 ist nicht im kritischen Gebiet Thread 1 ist nicht im kritischen Gebiet ---1 Thread 2 betritt kritisches Gebiet Thread 2 ist im kritischen Gebiet Thread 2 verlaesst kritisches Gebiet --- Thread 2 ist nicht im kritischen Gebiet Thread 2 ist nicht im kritischen Gebiet +++1 Thread 1 betritt kritisches Gebiet Thread 1 ist im kritischen Gebiet Thread 1 verlaesst kritisches Gebiet +++

29 Aufgabe 4 Kritisches Gebiet Funktion criticalarea(...) void criticalarea(char* icon, int thread){ printf("%s1 Thread %d betritt kritisches Gebiet %s \n", sleep(1); printf("%s2 Thread %d ist im kritischen Gebiet %s \n", icon,thread,icon); icon,thread,icon); sleep(1); printf("%s3 Thread %d verlaesst kritisches Gebiet %s \n", } icon,thread,icon); Definition: kritisches Gebiet / Bereich / Abschnitt Teil eines Prozesses, der auf gemeinsam benutzte Betriebsmittel zugreift.

30 Aufgabe 4 2 Threads greifen beide auf die Funktion criticalarea zu (kritisches Gebiet) void* Thread1(void* a){ while(true){ flag[0] = true; turn = 1; printf("thread 1 ist nicht im kritischen Gebiet\n"); while(flag[1]==true && turn==1){sleep(1);} criticalarea("+++",1); //betreten des kritischen Gebietes printf("thread 1 ist nicht im kritischen Gebiet\n"); flag[0]=false; } } int main(){ //Thread2 //... while(true){ flag[1] = true; turn = 0; printf("thread 2 ist nicht im kritischen Gebiet\n"); while(flag[0]==1 && turn==0){rnd=(rand()%4);sleep(rnd);} criticalarea("---",2); //betreten des kritischen Gebietes printf("thread 2 ist nicht im kritischen Gebiet\n"); flag[1]=false; } }

31 Aufgabe 4 1) Nur ein Prozess darf im kritischen Gebiet sein. (Korrektheitseigenschaft). Thread1: flag[0] = true; turn = 1; while(flag[1]==true && turn==1){...} criticalarea("+++",1); Thread2: flag[1] = true; turn = 0; while(flag[0]==true && turn==0){...} criticalarea("---",2);

32 Aufgabe 4 2) Ein einzelner Prozess, der sich um das kritische Gebiet bewirbt, soll auch hineingelangen. flag[0] = false; flag[1] = false; Thread1: flag[0] = true; turn = 1; while(flag[1]==true && turn==1){...} criticalarea("+++",1); Thread2: flag[1] = true; turn = 0; while(flag[0]==true && turn==0){...} criticalarea("---",2);

33 Aufgabe 4 3) Bei mehreren Bewerbern um das kritische Gebiet soll schließlich einer hineingelangen. flag[0] = false; flag[1] = false; Thread1: flag[0] = true; turn = 1; while(flag[1]==true && turn==1){...} criticalarea("+++",1); flag[0] = false; Thread2: flag[1] = true; turn = 0; while(flag[0]==true && turn==0){...} criticalarea("---",2); flag[1] = false;

34 Aufgabe 4 4) Die Ablaufgeschwindigkeiten einzelner Prozesse sollen keinen Einfluss auf obige Bedingungen haben. Thread1: while(flag[1]==true && turn==1){sleep(1);} criticalarea("+++",1); //betreten des kritischen Gebietes Thread2: while(flag[0]==1 && turn==0){rnd=(rand()%4);sleep(rnd);} criticalarea("---",2); //betreten des kritischen Gebietes

35 Aufgabe 4 Lösung nach Peterson

36 Aufgabe 4 Ausgabe:./twothreadsfail Thread 1 ist nicht im kritischen Gebiet +++1 Thread 1 betritt kritisches Gebiet Thread 1 ist im kritischen Gebiet Thread 1 verlaesst kritisches Gebiet +++ Thread 1 ist nicht im kritischen Gebiet Thread 1 ist nicht im kritischen Gebiet +++1 Thread 1 betritt kritisches Gebiet Thread 1 ist im kritischen Gebiet Thread 1 verlaesst kritisches Gebiet +++ Thread 1 ist nicht im kritischen Gebiet Thread 1 ist nicht im kritischen Gebiet +++1 Thread 1 betritt kritisches Gebiet +++ Thread 2 ist nicht im kritischen Gebiet ---1 Thread 2 betritt kritisches Gebiet Thread 1 ist im kritischen Gebiet Thread 2 ist im kritischen Gebiet Thread 1 verlaesst kritisches Gebiet +++ Thread 1 ist nicht im kritischen Gebiet Thread 1 ist nicht im kritischen Gebiet ---3 Thread 2 verlaesst kritisches Gebiet --- Thread 2 ist nicht im kritischen Gebiet +++1 Thread 1 betritt kritisches Gebiet Thread 1 ist im kritischen Gebiet Thread 1 verlaesst kritisches Gebiet +++ Thread 1 ist nicht im kritischen Gebiet Thread 1 ist nicht im kritischen Gebiet

37 Dijkstra -> kritischer Abschnitt - Kriterien - Mutual exclusion: Zwei oder mehr Prozesse dürfen sich nicht gleichzeitig im gleichen kritischen Abschnitt befinden. - Es dürfen keine Annahmen über die Abarbeitungsgeschwindigkeit und die Anzahl der Prozesse bzw. Prozessoren gemacht werden. Der kritische Abschnitt muss unabhängig davon geschützt werden. - Kein Prozess außerhalb eines kritischen Abschnitts darf einen anderen nebenläufigen Prozess blockieren - Fairness Condition: Jeder Prozess, der am Eingang eines kritischen Abschnitts wartet muss ihn irgendwann betreten dürfen (kein ewiges Warten).

38 Java synchronized (Monitor) Ein Java-Monitor ist ein Objekt, das einerseits mittels einer Sperre (lock) den Schutz kritischer Gebiete ermöglicht, und andererseits über eine oder mehrere Wartelisten das Warten auf Bedingungen (condition) ermöglicht. Das Warten auf eine Bedingung ist im Monitor immer mit der Sperre koordiniert: Während des wartens wird die Sperre freigegeben und muss anschließend wieder erlangt werden. Synchronisationsprimitive in Java synchronized(monitorobject){ } geschützter Bereich nur ein einziger Thread darf mit einem Monitorobjekt den mit synchronized geschützten Bereich betreten!

39 Java synchronized (Monitor) Synchronisationsprimitive in Java synchronized(monitorobject){ geschützter Bereich } Für das Warten auf Ereignisse definiert die Klasse Object die Methoden Wait, notify und notifyall obj.wait() die Sperre wird freigegeben und der Thread geht in einen Wartezustand obj.notify() weckt einen im Wartezustand befindlichen Thread (falls vorhanden) obj.notifyall() weckt alle Threads Ein wartender Thread, der aufgeweckt wurde ist noch nicht ausführungsbereit Er kann erst dann fortgesetzt werden, wenn die durch wait() abgegebene Sperre wieder verfügbar ist.

40 Java synchronized (Monitor) import java.util.arraylist: public class BlockingQueu<E>{ private final ArrayList<E> data = new ArrayList<E>(); private final int maxcount; public BlockingQueue(int maxcount){ this.maxcount = maxcount; } public synchronized void put(e x) throws InterruptedException{ while (data.size() == maxcount) wait(); data.add(x); notifyall(); } public synchronized E take() throws InterruptedException{ while(data.size==0) wait(); notifyall(); return data.remove(); } } synchronized vor einer Methode erklärt die ganze Methode zum geschützten Bereich (kritisches Gebiet).

41 Java volatile (Monitor) Ein Entwickler, der Multithreading-Anwendungen schreibt, muss manchmal den Zugriff auf bestimmte Datenteile in einer Klasse kontrollieren. Dazu dient das Schlüsselwort synchronised. Weniger geläufig ist das Schlüsselwort volatile. Falls mehrere Threads Zugriff auf dieselbe Variable haben, wird die JVM vermutlich jedem Thread eine eigene Kopie der Variablen zugestehen. Änderungen an der Variablen durch einen Thread werden von anderen Threads bemerkt, womöglich aber auch nicht. Hier kommt der Vorteil vonvolatile gegenüber synchronised zum Tragen. Mithilfe des Schlüsselworts volatile lässt sich der Zugriff auf eine Variable synchronisieren. Ist eine Variable als volatile deklariert, muss die JVM sicherstellen, dass alle zugreifenden Threads ihre Kopien aktualisieren, sobald die Variable geändert wird. Ruft ein Thread synchronisierte Methoden oder Codeblocks auf, muss er den Lock des Objekts übernehmen. Verlässt der Thread den synchronisierten Code, muss der Lock wieder freigegeben werden. Das Übernehmen und Freigeben von Objekt-Locks erfordert Zeit und Ressourcen. Mithilfe des Schlüsselworts volatile lässt sich dieser Aufwand vermeiden. Nachteile Allerdings hat auch die Verwendung von volatile seinen Preis. Den Wert eines volatile-feldes zwischen allen Threads synchronisiert zu halten, beansprucht ebenfalls Ressourcen. Am besten drückt es wahrscheinlich die Java-Spezifikation selbst aus: Ein Feld kann als volatile deklariert werden. In diesem Fall muss ein Thread seine Arbeitskopie des Feldes jedes Mal, wenn er auf die Variable zugreift, mit der Masterkopie abgleichen.

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

Übung zu Grundlagen der Betriebssysteme. 9. Übung 11.12.2012

Übung zu Grundlagen der Betriebssysteme. 9. Übung 11.12.2012 Übung zu Grundlagen der Betriebssysteme 9. Übung 11.12.2012 Wechselseitiger Ausschluss Wechselseitiger Ausschluss: 1) Softwareansätze Dekker-Algorithmus Peterson-Algorithmus 2) Unterstützung durch Hardware

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

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

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

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

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

Kapitel 5. Monitore und Synchronisationsbedingungen

Kapitel 5. Monitore und Synchronisationsbedingungen Seite Kapitel 5 Monitore und Synchronisationsbedingungen Prof. Dr. Rolf Hennicker 5.6.24 5. Synchronisationsbedingungen Seite 2 Bisherige Verwendung von Monitoren: Verkapselung von Daten, Zugriffoperationen

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

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

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

Ü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

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

5. Threads, Serverprozesse und Benachrichtigungen

5. Threads, Serverprozesse und Benachrichtigungen 5. Threads, Serverprozesse und Benachrichtigungen Threads allgemein Threads in Android: Handler und Messages Services: Local, Remote, Binding Benachrichtigungen Entwicklung mobiler Anwendungen Europäische

Mehr

Proseminar Nichtsequentielle Programmiersprachen WS 2011/2012 Monitore

Proseminar Nichtsequentielle Programmiersprachen WS 2011/2012 Monitore Fachbereich Mathematik und Informatik Institut für Informatik Proseminar Nichtsequentielle Programmiersprachen WS 2011/2012 Monitore Sascha Kretzschmann 2. November 2011 Inhaltsverzeichnis 1 Einleitung

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()

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

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

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

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

#define N 5 // Anzahl der Philosophen. while (TRUE) { // Der Philosoph denkt

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

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

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

2.2 Prozesse in Java

2.2 Prozesse in Java 2.2 Prozesse in Java! Java sieht kein Schlüsselwort für Prozesse vor, sondern bestimmte Klassen und Schnittstellen. Mit anderen Worten: der Prozessbegriff wird mit Mitteln der Objektorientierung eingeführt.

Mehr

Versuchsziele. Grundlagen. Überblick: FB Automatisierung und Informatik Betriebssysteme Thema: Bounded-Buffer-Problem. 3.

Versuchsziele. Grundlagen. Überblick: FB Automatisierung und Informatik Betriebssysteme Thema: Bounded-Buffer-Problem. 3. Hochschule Harz 3. Labor Threads FB Automatisierung und Informatik Betriebssysteme Thema: Bounded-Buffer-Problem Versuchsziele Vertiefung im Verständnis der Thread- und Semaphor-Programmierung. Grundlagen

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

Infrastruktur und Betriebssysteme III. Martin Plümicke

Infrastruktur und Betriebssysteme III. Martin Plümicke Infrastruktur und Betriebssysteme III Martin Plümicke 25. Februar 2002 Inhaltsverzeichnis 1 Einführung in Betriebssysteme 3 2 Überblick 7 2.1 Systemkomponenten.................................. 7 2.1.1

Mehr

Klausur zum Kurs Betriebssysteme (1802) am 19. September 2009

Klausur zum Kurs Betriebssysteme (1802) am 19. September 2009 Fakultät für Mathematik und Informatik Lehrgebiet Kooperative Systeme Prof. Dr. Jörg M. Haake FernUniversität in Hagen 58084 Hagen Vorname Name Straße Hausnr. Informatikzentrum Universitätsstr. 1 58084

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Cluster-Praktikum Sommersemester 2007 Transparent Replizierte Objekte in JavaParty Institut für Programmstrukturen und Datenorganisation

Mehr

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

Technische Informatik II (TI II) (6) Synchronisation. Sebastian Zug Arbeitsgruppe: Embedded Smart Systems 1062015 1 Jun-Prof Dr Sebastian Zug Technische Informatik II (TI II) (6) Synchronisation Sebastian Zug Arbeitsgruppe: Embedded Smart Systems 1062015 2 Jun-Prof Dr Sebastian Zug Fragen an die Veranstaltung

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

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

Informatik B - Objektorientierte Programmierung in Java. Vorlesung 21: Threads 2. Inhalt

Informatik B - Objektorientierte Programmierung in Java. Vorlesung 21: Threads 2. Inhalt Universität Osnabrück 1 wait und notify 3 - Objektorientierte Programmierung in Java Vorlesung 21: Threads 2 SS 2006 Prof. Dr. F.M. Thiesing, FH Osnabrück Neben dem Monitorkonzept stehen mit den Methoden

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Das Java-Speichermodell Prof. Dr. Walter F. Tichy Dr. Victor Pankratius Ali Jannesari Geschichte des Speichermodells Kapitel 17 der Java-Sprachdefinition

Mehr

Betriebssysteme Theorie

Betriebssysteme Theorie Betriebssysteme Theorie SS 2011 Hans-Georg Eßer Dipl.-Math., Dipl.-Inform. Foliensatz D (05.05.2011) Synchronisation 05.05.2011 Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-1 Einführung (1) Es gibt

Mehr

Beschreiben Sie stichwortartig, was die folgenden Kommandos bewirken.

Beschreiben Sie stichwortartig, was die folgenden Kommandos bewirken. Betriebssysteme: Auswahl alter Klausuraufgaben Seite 1 Beschreiben Sie stichwortartig, was die folgenden Kommandos bewirken. a) sort < MeineDatei.txt > MeineDateiSort.txt b) find / -type d \( -name man

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

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

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

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

LeJOS: Mindstorms in Java programmieren

LeJOS: Mindstorms in Java programmieren LeJOS: Mindstorms in Java programmieren Alexander Koller Softwareprojekt "Sprechende Roboter" 30. April 2004 Überblick Warum Java? Was ist LeJOS? Motoren steuern Auf Sensoreingaben reagieren Wie geht's

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

Sven Osterwald Concurrent Objects. Proseminar Parallele Programmierung in Java

Sven Osterwald Concurrent Objects. Proseminar Parallele Programmierung in Java Sven Osterwald 12.05.2010 Concurrent Objects Proseminar Parallele Programmierung in Java Überblick 1. Einführung 2. Beispiel FIFO-Queue mit und ohne Lock 3. Korrektheit bei sequentiellen Objekten 4. Korrektheit

Mehr

Algorithmen und Programmierung IV: Nichtsequentielle Programmierung. Robert Tolksdorf. Freie Universität Berlin

Algorithmen und Programmierung IV: Nichtsequentielle Programmierung. Robert Tolksdorf. Freie Universität Berlin Algorithmen und Programmierung IV: Nichtsequentielle Programmierung Robert Tolksdorf Freie Universität Berlin Überblick Überblick Sperrsynchronisation Sperrsynchronisation in Datenbanken Bedingungssynchronisation

Mehr

B.5 Prozessverwaltung B.5. Prozessverwaltung. 2002 Prof. Dr. Rainer Manthey Informatik II 1

B.5 Prozessverwaltung B.5. Prozessverwaltung. 2002 Prof. Dr. Rainer Manthey Informatik II 1 Prozessverwaltung Prozessverwaltung 2002 Prof. Dr. Rainer Manthey Informatik II 1 Prozesse Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) ) von einem Rechner abgearbeitet.

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

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

Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) von einem Rechner abgearbeitet.

Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) von einem Rechner abgearbeitet. Prozessverwaltung Prozesse Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) von einem Rechner abgearbeitet. Prozesse sind Abfolgen von Aktionen, die unter Kontrolle

Mehr

Es kann maximal ein Prozess die Umladestelle benutzen.

Es kann maximal ein Prozess die Umladestelle benutzen. SoSe 0 Konzepte und Methoden der Systemsoftware Universität Paderborn Fachgebiet Rechnernetze Präsenzübung (Musterlösung) 0-06-0 bis 0-06-06 Aufgabe : Erzeuger/Verbraucher-Pattern Ein Getränkemarkt hat

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

12. Threads in Java. Sequentielle Abarbeitung (2) Beispiel: Thread (1) Sequentielle Abarbeitung (1)

12. Threads in Java. Sequentielle Abarbeitung (2) Beispiel: Thread (1) Sequentielle Abarbeitung (1) 12. Threads in Java Einführendes Beispiel 12. Threads in Java 12. Threads in Java Einführendes Beispiel Sequentielle Abarbeitung (2) Ein Thread ist eine Folge von Anweisungen, die unabhängig von anderen

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

Klausur zur Vorlesung Grundlagen der Betriebssysteme WS 2011 / 2012

Klausur zur Vorlesung Grundlagen der Betriebssysteme WS 2011 / 2012 Name: Matrikelnummer: Studiengang: INF CV IM Lehramt BSc MSc BEd MEd Diplom Klausur zur Vorlesung Grundlagen der Betriebssysteme WS 0 / 0 Montag, den. Februar 0, 09: Uhr 0: Uhr Prof. Dr. D. Zöbel, Dipl.

Mehr

Errata zum Buch "Fortgeschrittene Programmierung mit Java 5"

Errata zum Buch Fortgeschrittene Programmierung mit Java 5 Errata zum Buch "Fortgeschrittene Programmierung mit Java 5" Autor: Johannes Nowak dpunkt.verlag, Heidelberg ISBN 3-89864-306-9 Stand: 12. Januar 2006 Die meisten der im Folgenden beschriebenen Fehler

Mehr

2A Basistechniken: Weitere Aufgaben

2A Basistechniken: Weitere Aufgaben 2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen

Mehr

Prozeßverwaltung. die Prozeßtabelle enthält die Prozeßleitblöcke

Prozeßverwaltung. die Prozeßtabelle enthält die Prozeßleitblöcke Prozeßverwaltung Komponente eines Betriebssystems, die für die Zuteilung von Betriebsmitteln an wartende Prozesse zuständig ist alle für die Prozeßverwaltung ( process management ) wichtigen Informationen

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

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

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

Betriebssysteme (BTS)

Betriebssysteme (BTS) 13.Vorlesung Betriebssysteme (BTS) Christian Baun cray@unix-ag.uni-kl.de Hochschule Mannheim Fakultät für Informatik Institut für Betriebssysteme 31.5.2007 Wiederholung vom letzten Mal Deadlocks und Verhungern

Mehr

Nebenläufige Anwendungen in Java (J2SE, Rich Client, J2EE)

Nebenläufige Anwendungen in Java (J2SE, Rich Client, J2EE) CNAM Wintersemester 2014 / 2015 Nebenläufige Anwendungen in Java (J2SE, Rich Client, J2EE) Im Rahmen von: Betriebssysteme und nebenläufige Anwendungen Agenda Nebenläufigkeit in Java Anwendungen Basisfunktionen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Betriebssysteme. Wintersemester 2015. Kapitel 2 Prozess und Threads. Patrick Kendzo ppkendzo@gmail.com

Betriebssysteme. Wintersemester 2015. Kapitel 2 Prozess und Threads. Patrick Kendzo ppkendzo@gmail.com Betriebssysteme Wintersemester 2015 Kapitel 2 Prozess und Threads Patrick Kendzo ppkendzo@gmail.com Programm Inhalt Einleitung Prozesse und Threads Speicherverwaltung Eingabe und Ausgabe Dateisysteme Zusammenfassung

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

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

Multithreading ab Java 5: Die neuen Concurrency APIs

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

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

Vorname: Nachname: Matrikelnummer: Klausur. Betriebssysteme

Vorname: Nachname: Matrikelnummer: Klausur. Betriebssysteme Vorname: Nachname: Matrikelnummer: Klausur Betriebssysteme 12.02.2013 Hinweise: 1. Beschriften Sie als erstes diese Seite mit Ihrem Namen, Vornamen und Ihrer Matrikelnummer (deutlich in Druckbuchstaben).

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

Nebenläufigkeit in Java

Nebenläufigkeit in Java Nebenläufigkeit in Java Maurice Schoenmakers schoenma@informatik.tu muenchen.de Inhaltsverzeichnis 1 Einleitung... 2 2 Prozesse und Threads in Java... 2 2.1 Die Klasse Thread... 3 2.2 Der aktuelle Thread...

Mehr

Steffen Heinzl Markus Mathes. Middleware in Java

Steffen Heinzl Markus Mathes. Middleware in Java Steffen Heinzl Markus Mathes Middleware in Java Leitfaden zum Entwurf verteilter Anwendungen - Implementierung von verteilten Systemen über JMS - Verteilte Objekte über RMI und CORBA Mit 50 Abbildungen

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Schritt 1 - Ein Spielfeld

Schritt 1 - Ein Spielfeld Schritt 1 - Ein Spielfeld Wir beginnen mit zwei einfachen Java-Klassen, dem eigentlichen Spielfeld und dem Applet zum Anzeigen des Spielfeldes (und später der Buttons und der anderen Bedienelemente). Hier

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

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

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

Grundlagen zur nebenläufigen Programmierung in Java

Grundlagen zur nebenläufigen Programmierung in Java Grundlagen zur nebenläufigen Programmierung in Java Karlsruher Entwicklertag 2013 5. Juni 2013 Referent: Christian Kumpe Inhalt des Vortrags Was zeigt dieser Vortrag? Ein einfaches Beispiel mit allerlei

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

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Effizientes Memory Debugging in C/C++

Effizientes Memory Debugging in C/C++ Effizientes Memory Debugging in C/C++ Adam Szalkowski Embedded Computing Conference 2014 Ursachen/ Symptome Debugging Tools Ursachen / Symptome Was habe ich falsch gemacht? Was kann denn passieren im schlimmsten

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

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

Nebenläufige Programmierung I

Nebenläufige Programmierung I Nebenläufige Programmierung I Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS06 2 Ziele Grundlegende Begriffe der nebenläufigen Programmierung verstehen lernen Nebenläufige Programme

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

Seminararbeit. Java Thread Synchronisation

Seminararbeit. Java Thread Synchronisation Seminararbeit Java Thread Synchronisation Angelika Brückl (0055060) Java Thread Synchronisation 1 Inhaltsverzeichnis 1. Einleitung... 3 2. Allgemeines über Threading... 3 2.1. Was ist ein Thread?... 3

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Deadlocks. System hat nur begrenzte Ressourcen (Ressourcentypen) Hauptspeicher Externer Speicher Drucker File

Deadlocks. System hat nur begrenzte Ressourcen (Ressourcentypen) Hauptspeicher Externer Speicher Drucker File Kapitel V Deadlocks (Verklemmungen) 1 Deadlocks System hat nur begrenzte Ressourcen (Ressourcentypen) Hauptspeicher Externer Speicher Drucker File Prozesse benötigen Genehmigung vor der Benutzung von Ressourcen.

Mehr

3.7 Semaphore. Intern gehören zu einem Semaphor ein Zähler & ein Wartezustand für Prozesse. Dijkstra Algol 68 PEARL hier

3.7 Semaphore. Intern gehören zu einem Semaphor ein Zähler & ein Wartezustand für Prozesse. Dijkstra Algol 68 PEARL hier 3.7 Semaphore Edsger W. Dijkstra: Cooperating Sequential Processes Technological University Eindhoven (1965) Ein Semaphor (semaphore) ist ein Synchronisationsmechanismus mit zwei Operationen, P (von holländisch

Mehr

Klausur Nichtsequentielle Programmierung. Nachname: Bachelor Magister. Vorname: Master Lehramt

Klausur Nichtsequentielle Programmierung. Nachname: Bachelor Magister. Vorname: Master Lehramt Klausur Nichtsequentielle Programmierung Prof. Dr. Marcel Kyas 14. Juli 2010 Nachname: Bachelor Magister Vorname: Master Lehramt Diplom Hinweise zur Klausur Bitte überprüfen Sie, dass Sie alle Seiten dieser

Mehr

Musterlösung Prüfung SS 2002

Musterlösung Prüfung SS 2002 Musterlösung Prüfung SS 2002 Fach: I4neu (SEE, KOS, GRS, BTS) Teilprüfung: Betriebssystem Tag: 2.7.2002 8:15 12:15 Raum 1006 Bearbeitungszeit: 72 Minuten Name:... Matr.Nr.:... Punkte:... Note:... Hilfsmittel:

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Prozesse und Prozessmanagement des BS. 1 Unterschied Prozess, Threads. 1.1 Prozess. 1.2 Threads

Prozesse und Prozessmanagement des BS. 1 Unterschied Prozess, Threads. 1.1 Prozess. 1.2 Threads Prozesse und Prozessmanagement des BS 1 Unterschied Prozess, Threads 1.1 Prozess Bei jedem Programm muss gespeichert werden, welche Betriebsmittel (Speicherplatz, CPU- Zeit, CPU-Inhalt,...) es benötigt.

Mehr

WS Parallele Prozesse. Prof. Hannelore Frank. Parallele Prozesse. PetriNetze. Synchronisation UNIX. Wettbewerb PC Krit.Abschnitt Spinlocks

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

Mehr

Musterlösungen zur Klausur Informatik 3

Musterlösungen zur Klausur Informatik 3 Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus

Mehr

VS4 Slide 1. Verteilte Systeme. Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel

VS4 Slide 1. Verteilte Systeme. Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel VS4 Slide 1 Verteilte Systeme Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel Inhaltsverzeichnis für die Vorlesung Zur Motivation: 4 Beispiele aus der Praxis Allgemeine Anforderungen an Verteilte

Mehr

Abgabe: (vor 12 Uhr) Aufgabe 12.1 (P) Siedlerspiel

Abgabe: (vor 12 Uhr) Aufgabe 12.1 (P) Siedlerspiel TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 12 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr

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

Algorithmen und Programmierung IV: Nichtsequentielle Programmierung. Überblick. Überblick. 3.2 Bedingungssynchronisation. Bedingungssynchronisation 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