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. Es sind möglichst alle Aufgaben zu beantworten. Hilfsmittel sind nicht zugelassen. Aufgabe max. Punktzahl erreichte Punkte 1 4 2 3 3 6 4 6 5 6 6 6 7 4 8 5 9 4 Summe 44 1
Aufgabe 1: Ordnen Sie die 8 Begriffe links den 8 Aussagen rechts zu. Begriff Aussage? a CSP von Hoare ermöglicht Zeitstempel für n>2 Prozesse b Monitor der working set ist zu klein c Fetch-and-Add erlaubt Verklemmungsentdekkung e Speichersegmentierung läßt ggf. signal verpuffen f d Round-Robin beschreibt optimale Seitenauswahl Betriebsmittelzuteilungsgraph liefert faire gewichtete Turnaround Zeiten g Seitenflattern realisiert ein synchrones Botschaftenkonzept h Belady kennt interne Zerstückelung Aufgabe 2: Ergänzen Sie den folgenden Graph nach Holt für drei Prozesse 1, 2, 3 so, daß 1 nie blockiert, 2 nur in A blockiert, und 3 genau in C und D verklemmt ist. Es sollen keine neuen Pfeile (Übergänge) hinzukommen 3 A C?? 1 1, 2 1, 2 B D?? 2
Aufgabe 3: Gegeben sind drei Prozesse A, B, C mit den folgenden Aufrufen von Semaphor-Operationen. A B C P(S1) P(S1) P(S1)... V(S2) END P(S2).... V(S3) V(S1) END P(S3) P(S3) P(S3).. V(S2) V(S2) END Welche Prozesse erreichen END, wenn die folgenden Initialisierungen (a) - (c) gegen sind. (a) semainit(s1, 2); semainit(s2, 0); semainit(s3, 2); (b) semainit(s1, 3); semainit(s2, 0); semainit(s3, 2); (c) semainit(s1, 0); semainit(s2, 0); semainit(s3, 3); 3
Aufgabe 4: Wir betrachten eine Prozeßsynchronisierung mittels globaler Variablen. program Global; var flag1, flag2, turn: integer; procedure P1; begin while (TRUE) do begin unkritischer Abschnitt; flag1 := 1; turn := 2; while (flag2 = 1) and (turn = 2) do (* nichts *); kritischer Abschnitt; flag1 := 0 end end; procedure P2; begin while (TRUE) do begin unkritischer Abschnitt; flag2 := 1; turn := 1; while (flag1 = 1) and (turn = 1) do (* nichts *); kritischer Abschnitt; flag2 := 0 end end; begin (*Hauptprogramm*) flag1 := 0; flag2 := 0; cobegin P1; P2 coend end. 4
(a) Ist korrekter wechselseitiger Ausschluß gewährleistet? Begründung! (b) Wenn ja, kann der kritische Abschnitt nur immer im Wechsel zwischen P1 und P2 betreten werden? Begründung! (c) Wenn nein, wenn also nicht nur abwechselnd der Abschnitt betreten werden kann, ist dann sogar Fairness zugesichert? Kann also ein Prozeß, der in den kritischen Abschnitt will, nach höchstens einem Vortritt des anderen den Zutritt erlangen? Begründung! 5
Aufgabe 5: Der Dozent einer Vorlesung muß diese nur halten, wenn zum Vorlesungsbeginn mindestens drei Hörer da sind. Kommen Studenten vor dem Dozenten, dann warten sie auf die Ankunft des Dozenten, wobei eine Zählvariable n für die Anzahl der Hörer hochgezählt wird. War der Dozent da und hat er die Prüfung auf der Basis von n gemacht, schreibt er seine Entscheidung an die Tafel. Speziell für den Fall, daß Studenten später kommen, können Sie so sehen, ob die Entscheidung schon gefallen ist. Vervollständigen Sie den Monitor Hörsaal unten. program Vorlesung; type Entscheidung = (offen, ja, nein); (* Aufzählungstyp *) monitor Hörsaal; var Findet_Vorlesung_statt: Entscheidung; n: Integer; (* Anzahl Hörer *) Auf_Dozent_warten: condition (* Warteschlange Studies *) procedure Student_Hingehen(var Status: Entscheidung); begin if Findet_Vorlesung_statt = offen then begin ; end; Status := Findet_Vorlesung_statt end (* Student_Hingehen *); procedure Dozent_Eintreffen(var Status: Entscheidung); begin if then Findet_Vorlesung_statt := ja else Findet_Vorlesung_statt := nein; while n > 0 do begin signal(auf_dozent_warten); n := n - 1 end; Status := Findet_Vorlesung_statt end (* Dozent_Eintreffen *); begin (* Monitorinitialisierung *) Findet_Vorlesung_statt := offen; n := 0 end (* Hörsaal *); 6
procedure Student_i; var Muss_ich_hören: Entscheidung; begin Hörsaal.Student_Hingehen(Muss_ich_hören); if Muss_ich_hören = ja then Pech, muß Vorlesung hören else Glück, kann gleich wieder nach Hause end (* Student_i *); procedure Dozent; var Muss_ich_lesen: Entscheidung; begin ; if Muss_ich_lesen = ja then Mist, muss Vorlesung halten else Glück, Vorlesung fällt aus end (* Dozent *); begin cobegin Student_1; Student_2;...; Dozent coend end (* Vorlesung *). 7
Aufgabe 6: Für drei Projekte und drei Mitarbeitertypen ist die folgende Vergabesituation eingetreten. Es gibt einen Zuteilungswunsch von Projekt p1, das einen Elektriker und zwei Maschinenbauer benötigt. Ist diese Zuteilung sicher? Mit dem Verfahren von Habermann prüfe man den Zuteilungswunsch! Betriebsmittel Elektriker Informatiker Maschinenbauer insgesamt verfügbar 10 16 14 Arbeitet bereits an Benötigt maximal Will zusätzlich p1 4 6 4 p2 3 5 5 p3 2 4 1 p1 6 8 8 p2 3 5 7 p3 6 10 6 p1 p2 p3 noch verfügbar Zuteilungswunsch p1 Arbeitsvektor 8
Aufgabe 7: Ein Haupspeicher mit 512 MB werde im Buddy-Verfahren vergeben. Zeichnen Sie den Speicherbelegungsbaum, ausgehend von der Situation mit einer Belegung von 10 und mit 34 MB und der folgenden Belegungs- und Freigabefolge. Belegen 65, Belegen 126, Freigabe 34, Belegen 60, Belegen 37, Freigabe 10. Ausgangslage: 512 256 128 34 64 32 10 16 Endsituation: 512 256 128 64 32 16 9
Aufgabe 8: Gegeben sei ein Hauptspeicher mit 3 Kacheln und die folgende Zugriffsfolge 1, 2, 3, 2, 4, 5, 2, 3, 1, 4, 3. Für die Verfahren FIFO und LRU gebe man das Speicherbild für die Zugriffsfolge oben an! Die Belegung nach den ersten 4 Zugriffen ist bereits eingetragen. FIFO 1 1 1 1 2 2 2 3 3 LRU 1 1 1 1 2 2 2 3 3 10
Aufgabe 9: Für eine Jobabarbeitung mit Round-Robin gilt für die Anzahl der benötigten Zeitscheiben k k = 1/( s) wobei 1/ die Bearbeitungsdauer und s die zugeteilte Zeit je Zeitscheibenumdrehung für jeden Job ist. Die Bearbeitungsdauer 1/ ist der sich bei kontinuierlicher Bearbeitung ergebende Zeitbedarf. Tatsächlich kommt zu dieser Bearbeitungsdauer noch der Aufwand für die Kontextumschaltungen bei RR. Jeder Wechsel benötige w Zeiteinheiten, d.h. die Zeitzuteilung s enthält eigentlich einen Anteil w und einen Anteil s für die eigentliche Bearbeitung. Damit erhöht sich auch die Anzahl der benötigten Zeitscheiben. (a) Wie lautet k jetzt? Lösen Sie dann nach k auf, so daß rechts nur noch s, w und stehen. k = (b) Wenn die Zuteilung s nicht fest ist, sondern mit der Anzahl der Jobs schrumpft, wobei der Anteil w für den Kontextwechsel konstant bleibt, kommt das System bei hoher Belastung in den Zustand des Wassertretens, d.h. es geht nicht mehr voran. Beschreiben Sie den Zustand als Grenzwert von s w. Was geschieht mit k? 11
12