• Keine Ergebnisse gefunden

Aufgabe 1: Implementierung von Threads

N/A
N/A
Protected

Academic year: 2022

Aktie "Aufgabe 1: Implementierung von Threads"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prof. Dr. rer. nat. Roland Wism ¨uller

Aufgabenblatt 5

(Besprechung ab 18.11.2021)

Vorlesung Betriebssysteme I Wintersemester 2021/22

Aufgabe 1: Implementierung von Threads

Was ist der gr¨oßte Vorteil der Implementierung von Threads im Benutzeradreßraum? Was ist der gr¨oßte Nachteil?

Aufgabe 2: POSIX Threads

Der Name

”pthread“ steht f¨ur POSIX (Portable Operating System Interface for Unix) Threads. Pthread ist eine Systembi- bliothek, die es erlaubt, auf POSIX-Systemen portablen (betriebssystemunabh¨angigen) Code mit Threads zu entwickeln.

Schreiben Sie ein C-Programm, das zwei Threads erzeugt. Der Haupt-Thread wartet, bis beide Threads beendet sind, bevor er selbst terminiert. Die beiden Threads geben auf dem Bildschirm (mehrmals) eine beliebige Meldung aus (s.man pthread createundman pthread join).

Compilieren Sie das Programm mitgcc datei.c -lpthread.

Was beobachten Sie bei wiederholter Ausf¨uhrung des Programms und wie erkl¨aren Sie Ihre Beobachtung?

Aufgabe 3: Java Threads

a) Implementieren Sie eine Klasse DisplayChar, um einen Thread zu erzeugen, der einen Buchstaben auf dem Bildschirmn-mal ausgibt. Der Buchstabe und die Zahlnsind Eingabeparameter f¨ur den Konstruktor und werden als Attribute gespeichert. Erzeugen Sie vier Threads, um vier verschiedene Buchstaben je 100-mal auszugeben.

Verwenden Sie die MethodeSystem.out.flush(), um nach jeder Ausgabe den Ausgabepuffer auf den Bild- schirm zu schreiben.

Was beobachten Sie bez¨uglich der Reihenfolge der Threadausf¨uhrung?

Hinweis:Sie k¨onnen entweder die JavaThread-Klasse erweitern oder das JavaRunnable-Interface implemen- tieren.

b) Erkl¨aren Sie welche Funktionalit¨at die folgenden Thread-Methoden haben:sleep,yieldundjoin. Verwenden Sie diese Methoden um die Ausf¨uhrung des Programmes zu beeinflussen und beschreiben Sie Ihre Beobachtungen.

Aufgabe 4: Threads mit gemeinsamen Variablen

Laden Sie sich zun¨achst den Code zum Aufgabenblatt im Archivu05Files.zip1auf der Vorlesungswebseite herunter und entpacken Sie das Archiv (s.unzip). Kopieren Sie die DateiTest.javain Ihr VerzeichnisUebungen/Uebung5.

Das Programmm erzeugt einen Thread, der eine Referenz auf ein Objekt erh¨alt, das eine ganze Zahl beinhaltet. Der Thread z¨ahlt diese Zahl eine Million mal hoch. ¨Ubersetzen Sie das Programm und f¨uhren Sie es aus, um sich zu vergewissern, dass das ausgedruckte Ergebnis richtig ist.

Erweitern Sie das Programm so, daß ein zweiter Thread erzeugt wird, der eine Referenz auf dasselbe Objekt erh¨alt.

Warten Sie vor dem Ausdrucken der Zahl, bis auch dieser Thread beendet ist. Die Zahl sollte jetzt also am Endezwei Millionen mal hochgez¨ahlt sein. ¨Ubersetzen Sie das Programm und f¨uhren Sie es aus. Warum stimmt das Ergebnis nicht?

1http://www.bs.informatik.uni-siegen.de/web/wismueller/vl/bs1/u05Files.zip

1

Referenzen

ÄHNLICHE DOKUMENTE

 read überträgt Inhalt der Master-Kopie einer Variablen in die Arbeitskopie des Threads für eine spätere load Aktion.  write überträgt einen Wert vom Arbeitsspeicher des

Objekte vom Typ Thread sind Prozesse, die parallel ablaufen k¨onnen wichtige Methoden:.. • run() , um den Prozess laufen

UML-Zustandsdiagramm: Java 6 Thread States and Life Cycle. Franz Kohnle Seite 1 von

• boolean tryAcquire(int permits, long timeout, TimeUnit unit) permits Freisignale nehmen (blockierend mit Timeout). •

Lehrstuhl für Connected Mobility Fakultät für Informatik Technische Universität München.. November 2020 Hinweis: Mit * gekennzeichnete Teilaufgaben sind ohne Lösung

Using these assumptions and guarantees, our checker translates each thread into a sequential program that models the behavior of that thread precisely and uses the

Damit nicht bei jeder Anfrage ein Thread erzeugt werden muss, stellen Sie einen Pool von Threads bereit, aus dem bei einer Anfrage ein Thread ausgew¨ahlt wird. Schreiben Sie als

Welche der folgenden Elemente (bzw. Ressourcen) geh¨oren bei einem Betriebssystem, das mehrere Threads pro Prozess unterst¨utzt, zum Prozeß (sind also allen Threads des