Beruflich Dokumente
Kultur Dokumente
2) „$ cat Dateien.txt | grep txt“ (3 Punkte) Was bewirkt die Ausführung dieses Kommandos in einer
UNIX-Shell?
P1 Legende:
Running
P2
Ready
P3 Blocked
t[ms]
0 100 200
(Ersatzdiagramm auf dem Reserveblatt: Streichen Sie ungültige Lösungen deutlich durch!)
1 #d e f i n e GALAXIES_BOUND 10
2 int worlds , g a l a x i e s ;
3 pthread_t demiurge ;
4
5 v o i d ∗ p o p u l a t e G a l a x i e s ( v o i d ∗ param ) {
6 int i ;
7 f o r ( i =0; i <GALAXIES_BOUND ; i ++) g a l a x i e s ++;
8 p r i n t f ( "%d␣%d␣ " , w o r l d s , g a l a x i e s ) ;
9 p t h r e a d _ e x i t (NULL ) ;
10 }
11
12 v o i d ∗ c r e a t e U n i v e r s e ( v o i d ∗ param ) {
13 w o r l d s ++;
14 p t h r e a d _ c r e a t e (& d e m i u r g e , NULL , p o p u l a t e G a l a x i e s , NULL ) ;
15 p t h r e a d _ j o i n ( d e m i u r g e , NULL ) ;
16 r e t u r n NULL ;
17 }
18
19 i n t main ( v o i d ) {
20 worlds = 0;
21 galaxies = 0;
22
23 i f ( f o r k ( ) == 0 ) {
24 c r e a t e U n i v e r s e (NULL ) ;
25 } else {
26 w a i t (NULL ) ;
27 c r e a t e U n i v e r s e (NULL ) ;
28 }
29 return 0;
30 }
Ausgabe:
2) Semaphore (2 Punkte) Erläutern Sie den Begriff Semaphore im Kontext von Betriebssystemen.
3) Race-conditions Ein Entwickler möchte mittels Threads einen Zähler inkrementieren. Um sicherzustel-
len, dass sein Programm richtig funktioniert, gibt er nach der Abarbeitung eines jeden Threads den aktuellen
Wert des Zählers aus. Die folgende Ausgabe bereitet ihm Sorgen: 2585, 5238, 3238, 9238, 11238, 7238.
Analysieren Sie nun sein Programm:
1 #d e f i n e NTHREADS 6
2 int counter = 0;
3 p t h r e a d _ t t h r e a d s [ NTHREADS ] ;
4
5 void ∗ count ( void ∗ arg ) {
6 int i ;
7 f o r ( i =0; i <2000; i ++) c o u n t e r ++;
8 p r i n t f ( "%d , " , c o u n t e r ) ;
9 p t h r e a d _ e x i t (NULL ) ;
10 }
11
12 i n t main ( v o i d ) {
13 int i ;
14 f o r ( i =0; i <NTHREADS ; i ++) p t h r e a d _ c r e a t e (& t h r e a d s [ i ] , NULL , count , NULL ) ;
15 f o r ( i =0; i <NTHREADS ; i ++) p t h r e a d _ j o i n ( t h r e a d s [ i ] , NULL ) ;
16 return 0;
17 }
pthread_mutex_lock(&lock):
pthread_mutex_unlock(&lock):
b) Verklemmungen (6 Punkte) Wenn eine geschlossene Kette wechselseitig wartender Prozesse existiert
(circular wait, also ein Zyklus im Betriebsmittelbelegungsgraphen), liegt eine Verklemmung vor. Nen-
nen Sie stichpunktartig die drei Vorbedingungen, die erfüllt sein müssen, damit es überhaupt zu einer
Verklemmung kommen kann, und erklären Sie diese jeweils kurz mit eigenen Worten.
a) Speichersegmentierung (4 Punkte) Geben Sie für die Speicheranfragen (logische Adressen) 0x0000BEEF
und 0x1CEB00DA die physikalische Adresse unter Anwendung des Speichersegmentierungsverfahrens
an. Die höchstwertigen 8 Bit der logischen Adresse geben die Position innerhalb der Segmenttabelle
an. Löst eine Speicheranfrage eine Zugriffsverletzung aus, so machen Sie dies bitte kenntlich.
Segmenttabelle:
Startadresse Länge
0010 0000 00E016 21 20FF16 logische Adresse: 0x0000BEEF 16
0110 B542 000016 01 000016 → physikalische Adresse:
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30
A A A A
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30
Referenzfolge: 5, 3, 5, 1, 2, 5, 4, 6, 1
Das Betriebssystem sieht für diesen Prozess eine feste Anzahl von drei Hauptspeicherkacheln vor.
Tragen Sie in die Tabelle unter „Hauptspeicher“ jeweils die Nummer der Seite ein, die zum gegebenen
Zeitpunkt in der jeweiligen Kachel eingelagert ist. Die Felder unter „Kontrollzustände“ können Sie zum
Notieren des Alters der eingelagerten Seiten zuhilfenehmen.
Referenzfolge 5 3 5 1 2 5 4 6 1
Hauptspeicher Kachel 1 5
Kachel 2
Kachel 3
Kontrollzustände Kachel 1 0
Kachel 2
Kachel 3
b) Direct Memory Access (DMA) (2 Punkte) Was bedeutet DMA-getriebene Ein- und Ausgabe (E/A)?