Klausur Nichtsequentielle Programmierung

Ähnliche Dokumente
Klausur Nichtsequentielle Programmierung. Nachname: Bachelor Magister. Vorname: Master Lehramt

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

Übung Betriebssysteme 11

Technische Informatik II

Klausur zur Vorlesung Grundlagen der Betriebssysteme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Klausur zu Grundlagen der Programmierung in C

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Vorname:... Matrikel-Nr.:... Unterschrift:...

Synchrone Botschaften

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

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Klausur Algorithmen und Datenstrukturen II 10. August 2015

Deadlocks. Christoph Lindemann. Betriebssysteme. Betriebssysteme WS 2004/05. Fahrplan. Inhalt. Das Deadlock Problem

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Algorithmen & Datenstrukturen 1. Klausur

Betriebssysteme. Vorlesung im Herbstsemester 2010 Universität Mannheim. Kapitel 6: Speicherbasierte Prozessinteraktion

1) Gegeben Sei der auf der rechten Seite beschriebene Prozess mit folgenden globalen Deklarationen. const int N := 4; chan c[n]; int wert := 0;

2. Aufgabenblatt Threads

Übung zu Grundlagen der Betriebssysteme. 10. Übung

Name:... Vorname:... Matr.-Nr.:... Studiengang:...

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

Klausur zur Vorlesung Grundlagen Betriebssysteme und Systemsoftware

Klausur Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen II 29. Juli 2013

Aufgabe: Summe Punkte (max.): Punkte:

DAP2-Klausur

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

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

Nachklausur Grundlagen der Algorithmik (Niedermeier/Froese/Chen/Fluschnik, Wintersemester 2015/16)

Lösungsskizzen zur Abschlussklausur Betriebssysteme

Vorname: Nachname: Matrikelnummer: Klausur. Betriebssysteme

Klausur Grundlagen der Programmierung

Algorithmen und Datenstrukturen VO 3.0 Vorlesungsprüfung 19. Oktober 2007

Modulklausur Konstruktion und Analyse ökonomischer Modelle

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Analysis 1 Informationsblatt zur Klausur

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

6. Juni VO Prüfung Betriebssysteme. Ges.)(100) 1.)(35) 2.)(20) 3.)(45) Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!

2. Schriftliche Leistungskontrolle (EK)

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

Klausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415

Nachklausur zur Vorlesung

Ausnahmebehandlung in Java

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 13

Hinweise vor 11:50 Uhr

Klausur. Betriebssysteme SS

Übungsblatt 2: Betriebssysteme, Prozesse

Greenfoot: Verzweigungen

JJ Prozesse und Nebenläufigkeit

Klausur. Betriebssysteme SS 2007

"Organisation und Technologie von Rechensystemen 4"

Klausur im Lehrgebiet. Signale und Systeme. - Prof. Dr.-Ing. Thomas Sikora - Name:... Bachelor ET Master TI Vorname:... Diplom KW Magister...

Informatik für Ingenieure (InfIng)

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Klausur. Softwareentwurf. 14. Februar 2011 Bearbeitungszeit: 120 Minuten

Klausur: Modellierung Prof. Dr. U. Kastens, Universität Paderborn Wintersemester 2000/ , 09:00 11:00 Uhr

Klausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java im Wintersemester 2015/16

Wiederholungsklausur zur Analysis II

Nachholklausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415

Probeklausur Grundlagen der Datenbanksysteme II

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

Vertraulich. Nachname: Vorname: Matrikel-Nummer: Studiengang: Datum: 30. Januar 2015

Teil 1: IT- und Medientechnik

2. Schriftliche Leistungskontrolle (EK)

TheGI 2: Berechenbarkeit und Komplexität. Veranstalter: Uwe Nestmann, Johannes Borgström, Philipp Küfner Sommersemester

Algorithmen und Datenstrukturen 1 VL Übungstest WS Januar 2011

Vorname:... Matrikel-Nr.:... Unterschrift:...

Algorithmen und Datenstrukturen

Semestralklausur zu Modellierung verteilter Systeme

Algorithmen und Datenstrukturen

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

Allgemeine Hinweise:

Automatisierungstechnik am um 9:00, Bearbeitungszeit: 2 h Prüfer: Prof. Dr.-Ing. Knut Graichen

Modellierung und Programmierung 1

Wechselseitiger Ausschluss in verteilten Systemen / Elektionsalgorithmen. Özden Urganci Ulf Sigmund Ömer Ekinci

Vorlesung Objektorientierte Programmierung Klausur

Vorname: Nachname: Matrikelnummer: -Addresse: Studiengang (bitte genau einen ankreuzen): Master of SSE Erasmus Sonstige:

Klausur. Betriebssysteme WS 2012/

Musterlösung Prüfung WS 01/02

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 3. Februar 2006

Information Security Management System. Klausur Wintersemester 2009/10 Hochschule Albstadt-Sigmaringen

Nebenläufigkeit mit Java

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Tag 3 Repetitorium Informatik (Java)

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

Endkontrolle Informatik-Propädeutikum (Ermel/Hartung/Nichterlein/Niedermeier, Wintersemester 2013/14)

Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!

AUFGABEN. Klausur: Modul Optimierungsmethoden des Operations Research. Termin:

Einführung in die Programmierung und Programmiersprachen (OOP)

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift

Musterlösung Prüfung SS 2002

Beispiel für überladene Methode

Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)

Klausur "C#" WS 2012/2013

OpenMP - Threading- Spracherweiterung für C/C++ Matthias Klein, Michael Pötz Systemprogrammierung 15. Juni 2009

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Betriebssysteme G: Parallele Prozesse ( Teil C: SpinLock, Semaphore, Monitore)

Transkript:

Klausur Nichtsequentielle Programmierung Prof. Dr. Marcel Kyas 22. Juli 2009 Nachname: Bachelor Magister Vorname: Master Lehramt Diplom Hinweise zur Klausur Bitte überprüfen Sie, dass Sie alle Seiten dieser Klausuraufgaben erhalten haben, bevor Sie die Aufgaben bearbeiten. Lesen Sie jede Aufgabe vollständig und aufmerksam durch, bevor Sie sie bearbeiten. Schreiben Sie bitte Ihren Namen und Ihre Matrikelnummer auf jedes Blatt. Geben Sie bitte alle Blätter ab. Nummerieren Sie diese. Schreiben Sie Ihre Lösung entweder in die dafür vorgesehenen Felder auf den Aufgabenblättern oder auf den von der Klausuraufsicht ausgegebenen Blätter. Die Klausuraufsicht wird Ihnen auf Anfrage neue Blätter geben. Das Benutzen von selbst mitgebrachten Blättern wird als Täuschungsversuch gewertet! Es sind keine Hilfmittel zugelassen. Insbesondere dürfen Sie keine Bücher, Rechner, Notebooks oder Mitschriften benutzen. Mobiltelefone müssen ausgeschaltet und in der Tasche verstaut werden. Benutzen Sie bitte nur nicht-radierbare Schreiber, die blau oder schwarz schreiben. Klausuren, die mit Bleistift geschrieben wurden, werden nicht angenommen. Halten Sie bitte Ihren Studierendenausweis und einen Lichtbildausweis bereit. Die Klausur dauert 90 Minuten. Diese Klausur hat drei Aufgabenteile. Sie müssen aus dem Teil I jede Aufgabe bearbeiten und aus den Teilen II und III je eine Aufgabe. Sollten Sie beide Aufgaben bearbeiten, streichen Sie eine durch, sonst wird nur die schlechtere Lösung gewertet. Zum Bestehen der Klausur brauchen Sie mindestens 45 von 90 erreichbaren Punkten. Wertung (wird vom Institut ausgefüllt) Teil I II III Σ Aufgabe 1 2 3 4 5 6 7 8 Punktzahl 3 10 10 12 20 35 90 Erreichte Punkte Note

Aufgabe 1 3 Punkte 1. Bitte kreuzen Sie nur die wahre Aussage an: Ein Algorithmus zum gegenseitigen Ausschluss heißt sicher, wenn zu jedem Zeitpunkt mindestens ein Thread in der kritischen Sektion ist. Ein Algorithmus zum gegenseitigen Ausschluss heißt sicher, wenn zu jedem Zeitpunkt höchstens ein Thread in der kritischen Sektion ist. Ein Algorithmus zum gegenseitigen Ausschluss heißt sicher, wenn jeder Thread, der Zugang zur kritischen Sektion anfragt, diesen auch schließlich bekommt. 2. Bitte kreuzen Sie nur die wahre Aussage an: Ein Algorithmus zum gegenseitigen Ausschluss heißt fair (engl. starvation-free), wenn von mehreren wartenden Threads immer ein Thread schließlich Zugang zur kritischen Sektion bekommt. Ein Algorithmus zum gegenseitigen Ausschluss heißt fair (engl. starvation-free), wenn jeder Thread, der Zugang zur kritischen Sektion anfordert, diesen auch schließlich bekommt. Ein Algorithmus zum gegenseitigen Ausschluss heißt fair (engl. starvation-free), wenn zu jedem Zeitpunkt höchstens ein Thread in der kritischen Sektion ist. 3. Bitte kreuzen Sie nur die wahre Aussage an: Ein Algorithmus zum gegenseitigen Ausschluss heißt verklemmungsfrei (engl. deadlock-free), wenn von mehreren wartenden Threads immer ein Thread schließlich Zugang zur kritischen Sektion bekommen kann. Ein Algorithmus zum gegenseitigen Ausschluss heißt verklemmungsfrei (engl. deadlock-free), wenn zu jedem Zeitpunkt mindestens ein Thread in der kritischen Sektion ist. Ein Algorithmus zum gegenseitigen Ausschluss heißt verklemmungsfrei (engl. deadlock-free), wenn jeder Thread, der Zugang zur kritischen Sektion anfragt, diesen auch schließlich bekommen kann. Nichtsequentielle Programmierung 22. Juli 2009 Blatt 2 von 9

Aufgabe 2 Betrachten Sie die folgenden Anforderungen an die gemeinsamen Semaphore s, t, und u von den Prozessen P, Q und R. 10 Punkte Zeit P Q R 0 P(s) 1 P(t) P(u) 2 P(s) 3 P(t) 4 V(s) 5 P(u) 1. Zeichnen Sie den Anforderungsgraphen, der am Ende dieses Laufes besteht. 2. Kommt es am Ende dieser Anforderungen zu einer Verklemmung? Begründen Sie Ihre Antwort. Nichtsequentielle Programmierung 22. Juli 2009 Blatt 3 von 9

Aufgabe 3 int x = 0; cobegin x = 2x; x = 2x; x = 1; x = x + 1; coend Betrachten Sie das folgende Programm: Nehmen Sie an, dass das Lesen und das Schreiben auf eine Variable atomar ist, und dass x vor dem Inkrementieren in ein lokales Register geladen werden muss. Bearbeiten Sie die folgenden Aufgaben: 10 Punkte 1. Schreiben Sie das Programm so um, dass es die at-most-once Eigenschaft erfüllt. 2. Zählen Sie alle möglichen Werte für x auf, nachdem das Programm terminiert ist. Nichtsequentielle Programmierung 22. Juli 2009 Blatt 4 von 9

Aufgabe 4 int x = 0; boolean c = true; Gegeben sei folgendes Programm: 12 Punkte cobegin await x >= 9; ; c = false; while (c) x = x + 1 ; coend 1. Terminiert das Programm immer unter der Annahme, dass die Ablaufsteuerung weakly fair ist? Begründen Sie Ihre Antwort. 2. Terminiert das Programm immer unter der Annahme, dass die Ablaufsteuerung strongly fair ist? Begründen Sie Ihre Antwort. Betrachten Sie nun das neue Programm int x = 0; boolean c = true; cobegin await x >= 9; ; c = false; while (c) x = (x + 1) % 10 ; coend Beantworten Sie jetzt die beiden Fragen zur Terminierung für dieses veränderte Programm. Nichtsequentielle Programmierung 22. Juli 2009 Blatt 5 von 9

Sie brauchen die folgende Aufgabe nicht bearbeiten, wenn Sie Aufgabe 6 bearbeiten. 20 Punkte Aufgabe 5 Man kann eine wiederverwendbare Barriere für n Prozesse unter Benutzung von zwei binären Semaphoren und einer Zählvariable programmieren, die so deklariert werden: int count = 0; semaphore arrive(1); semaphore go(0); Entwickeln Sie eine solche Lösung. Erklären Sie kurz wie Ihre Lösung funktioniert. Tipp: Benutzen Sie die Idee aus passing the baton für Ihre Lösung. Unter Umständen müssen Sie Ihre Lösung dann optimieren. Sie dürfen annehmen, dass die Semaphore firstcome-first-serve garantieren. Nichtsequentielle Programmierung 22. Juli 2009 Blatt 6 von 9

Sie brauchen die folgende Aufgabe nicht bearbeiten, wenn Sie Aufgabe 5 bearbeiten. 20 Punkte Aufgabe 6 [Problem der Kettenraucher [Patil 1971, Parnas 1975]] Nehmen Sie an, dass drei Kettenraucher an einem Tisch sitzen. Zum Rauchen braucht jeder Raucher drei Zutaten: 1. Tabak, 2. Papier und 3. Streichhölzer. Von diesen Zutaten hat jeder Raucher einen unendlichen Vorrat von einer Zutat: der erste Raucher hat Tabak, der zweite Raucher hat Papier und der dritte Raucher hat Streichhölzer. Zusätzlich sitzt ein Kellner am Tisch, der zufällig zwei verschiedene Zutaten auf den Tisch legt. Der Raucher mit der dritten Zutat nimmt dann die anderen beiden Zutaten, macht eine Zigarette und raucht Sie danach. Der Kellner wartet, bis der Raucher fertig ist. Dann wiederholt sich der Zyklus. 1. Modellieren Sie den Kellner und jeden Raucher als einen Prozess. Benutzen Sie Semaphore zur Synchronisation. Vergessen Sie nicht, Ihre Semaphore zu initialisieren. Vielleicht müssen Sie weitere Variablen einführen. Erklären Sie kurz wie Ihre Lösung funktioniert. Sollten Sie eine Zufallszahl brauchen, benutzen Sie die Funktion random(n), die zufällig eine Zahl x mit 0 x < n zurück gibt. 2. Ist Ihre Lösung verklemmungsfrei? Begründen Sie Ihre Antwort. Nichtsequentielle Programmierung 22. Juli 2009 Blatt 7 von 9

Sie brauchen die folgende Aufgabe nicht bearbeiten, wenn Sie Aufgabe 8 bearbeiten. 35 Punkte Aufgabe 7 Autos aus dem Norden und dem Süden kommen an einer einspurigen Brücke an. Alle Autos, die aus einer Richtung kommen, können gemeinsam über die Brücke fahren. Autos, die in die andere Richtung fahren, müssen warten. 1. Entwickeln Sie eine Lösung für dieses Problem. Pseudocode reicht aus. Modellieren Sie Autos als Prozesse und benutzen Sie einen Monitor zur Synchronisierung. Spezifizieren Sie zuerst eine Invariante für den Monitor und entwickeln Sie dann den Rumpf des Monitors. Kümmern Sie sich nicht um Fairness und bevorzugen Sie keine Sorte von Autos. Benutzen Sie signal-and-continue. Nehmen Sie echte condition variables an und ignorieren Sie die Ausnahmebehandlung. Beschreiben Sie ganz kurz wie Ihre Lösung funktioniert. 2. Modifizieren Sie Ihre Lösung zu 1. so, dass Sie fair wird, d.h. jedes Auto, dass über die Brücke fahren möchte, fährt schließlich auch über die Brücke. Hinweis: Lassen Sie Autos abwechseln. Nichtsequentielle Programmierung 22. Juli 2009 Blatt 8 von 9

Sie brauchen die folgende Aufgabe nicht bearbeiten, wenn Sie Aufgabe 7 bearbeiten. 35 Punkte Aufgabe 8 Schreiben Sie einen Monitor, der es einem Paar von Prozessen erlaubt, Werte auszutauschen. Dieser Monitor hat genau eine Operation: exchange(int& value) (d.h., value wird als Referenzparameter übergeben). Nachdem zwei Prozesse die Operation exchange(...) aufgerufen haben, tauscht der Monitor die beiden Werte aus und gibt sie den aufrufenden Prozessen zurück. Der Monitor soll wiederverwendbar sein, d.h. er tauscht erst die Werte der ersten zwei Aufrufenden, dann die der zweiten Aufrufenden und so weiter. Sie dürfen entweder signal-and-continue oder signal-and-wait benutzen, aber schreiben Sie auf, welche Disziplin Sie benutzen. Beschreiben Sie mit wenigen Worten wie Ihre Lösung funktioniert. Nichtsequentielle Programmierung 22. Juli 2009 Blatt 9 von 9