c) Welche der folgenden Aussagen zu statischem bzw. dynamischem Binden

Ähnliche Dokumente
e) Welche Aussage zu Speicherzuteilungsverfahren ist falsch?

c) Welcher UNIX-Systemaufruf wird bei der Verwendung von Sockets auf keinen Fall gebraucht? close() accept() mmap() shutdown()

a) Welche der folgenden Aussagen zu statischem bzw. dynamischem Binden

Beispiele für mögliche Klausurfragen zum Stoff der Vorlesung Softwaresysteme I im SS 2004 eine

c) Welche Aussage zu Speicherzuteilungsverfahren ist richtig?

a) Wie funktioniert Adressraumschutz durch Eingrenzung?

Dem Vater-Prozess wird die Prozess-ID des Kind-Prozesses zurückgeliefert.

b) Welche der folgenden Aussagen bzgl. Threads ist richtig?

Der Code von Funktionen wird zusammen mit den Variablen der Funktion im Stack-Segment abgelegt. a) Welche Aussage zum Thema RAID ist richtig?

2 Punkte. 2 Punkte. 2 Punkte. 2 Punkte. 2 Punkte. - 4 von von 15 -

d) Welche Aussage zum Thema Adressräume ist richtig?

Klausur Systemprogrammierung I Februar Klausur Systemprogrammierung I Februar 2001

d) Welche Antwort trifft für die Eigenschaften eines UNIX/Linux Filedeskriptors

d) Welche Aussage zum Thema Adressraumschutz ist richtig?

d) Welche Aussage über exec() ist richtig?

c) Welche Aussage über einem UNIX-Systemaufruf ist falsch?

Echtzeitbetriebssysteme

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

a) Wie funktioniert Adressraumschutz durch Eingrenzung?

Linker: Adreßräume verknüpfen. Informationen über einen Prozeß. Prozeß-Erzeugung: Verwandtschaft

Konzepte von Betriebssystemkomponenten Referat am Thema: Adressräume, Page Faults, Demand Paging, Copy on Write Referent: Johannes Werner

d) Welche Aussage zum Thema Adressraumschutz ist richtig?

b) Gegeben sei folgende Enumeration: enum SPRACHE {Deutsch, Englisch, Russisch};

d) Was passiert, wenn das folgende Programmstück übersetzt und ausgeführt

d) Welche Aussage zu Zeigern ist richtig? Beim Rechnen mit Zeigern wird immer der Typ des Zeigers beachtet.

Programmierung mit C Zeiger

Klausur zum Kurs Betriebssysteme (1802) am 18. September 2010

Hinweise. Friedrich-Alexander-Universität Erlangen-Nürnberg

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

d) Wie funktioniert Adressraumschutz durch Eingrenzung?

d) Welche Aussage zum Thema virtueller Adressraum ist richtig?

RO-Tutorien 15 und 16

Klausur Betriebssysteme I

Klausur Betriebssysteme I

Grundlagen Rechnerarchitektur und Betriebssysteme

d) Welche Aussage zum Thema Adressraumschutz ist richtig?

Tutorium Rechnerorganisation

1 Ab welchen Zeitpunkt kann man Thrashing bei einem PC beobachten? 2 Auf was muss man beim gleichzeitigen Datenzugriff mehrerer Prozesse beachten?

b) Für welchen Zweck wird der Systemaufruf listen() benutzt? 2 Punkte

Freispeicherverwaltung

Leichtgewichtsprozesse

Leichtgewichtsprozesse

Paging. Einfaches Paging. Paging mit virtuellem Speicher

Klausur Betriebssysteme

1 Prozesse und Scheduling (12 Punkte)

b) Was bewirken folgende Programmanweisungen? uint8_t x = 42; x ^= x;

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Legende: Running Ready Blocked P1 P2 P3. t[ms] 1 Prozesse und Scheduling (16 Punkte)

Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )

(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert?

Virtueller Speicher und Memory Management

Speicherverwaltung (Swapping und Paging)

Naiver Ansatz. Blöcke und Seiten. Betriebssysteme I Sommersemester 2009 Kapitel 6: Speicherverwaltung und Dateisysteme

Freispeicherverwaltung Martin Wahl,

(Cache-Schreibstrategien)

1 Fehler in Bibliotheksfunktionen. 1 Überblick. 2 Ziele der Aufgabe. Besprechung der 1. Aufgabe

Klausur Betriebssysteme I

TechGI3: Systemprogrammierung. Klausur März 2008

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

Betriebssysteme. Wintersemester Kapitel 3 Speicherverwaltung. Patrick Kendzo

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Abschlussklausur. Betriebssysteme und Rechnernetze. 12. Juli Legen Sie bitte Ihren Lichtbildausweis und Ihren Studentenausweis bereit.

Übung Praktische Informatik II

Betriebssysteme Teil 10 B: Fragen rund um Seitenfehler

a) Welche Aussage zu Zeigern ist richtig? Die Übergabesemantik für Zeiger als Funktionsparameter ist callby-value.

Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming

Einführung. Anwendung. logischer Adreßraum. Kontrollfluß (Thread) = CPU führt Instruktionen aus. Was charakterisiert einen Kontrollfluß?

Betriebssysteme 1. Thomas Kolarz. Folie 1

f) Was versteht man beim Zugriff auf I/O-Register unter dem Begriff "Memory-mapped"?

Musterlösung Prüfung WS 01/02

f) Welcher UNIX-Systemaufruf wird bei der Verwendung von Sockets auf keinen Fall gebraucht? (1 Punkt) close() bind() listen() open()

Betriebssysteme BS-S SS Hans-Georg Eßer. Foliensatz S: Speicherverwaltung. Dipl.-Math., Dipl.-Inform. v1.0, 2015/04/14

Übung 1 - Betriebssysteme I

Besprechung des 9. Übungsblattes Virtuelle Speicherverwaltung Aufgaben

Test (Lösungen) Betriebssysteme, Rechnernetze und verteilte Systeme

POSIX-Threads. Aufgabe 9 SP - Ü U10.1

Betriebssysteme Betriebssysteme und. Netzwerke. Netzwerke Theorie und Praxis

Grundlagen der Informatik 2 Modul Systemnahe Programmierung in C (SPiC) Klausur am 9. April 2008

Überlegungen beim Entwurf eines Betriebssystems

5 Kernaufgaben eines Betriebssystems (BS)

Pthreads. David Klaftenegger. Seminar: Multicore Programmierung Sommersemester

2. Aufgabenblatt Threads

U9-3 Vergleich von Thread-Konzepten. U9-2 Motivation von Threads. U9-3 Vergleich von Thread-Konzepten (2) U9-1 Überblick

Konzepte von Betriebssystem- Komponenten Ausnahme- / Unterbrechungsbehandlung

Abschlussklausur. Betriebssysteme. 14. Februar Legen Sie bitte Ihren Lichtbildausweis und Ihren Studentenausweis bereit.

Verteilte Echtzeit-Systeme

Übung zu Grundlagen der Betriebssysteme. 11. Übung

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Abschlussklausur. Betriebssysteme. 30. Januar Legen Sie bitte Ihren Lichtbildausweis und Ihren Studentenausweis bereit.

Konzepte von Betriebssystemkomponenten

Klausur. Betriebssysteme SS

Proseminar: Konzepte von Betriebsystem-Komponenten (KVBK)

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

U8-1 Motivation von Threads. U8-2 Vergleich von Thread-Konzepten. U8-2 Vergleich von Thread-Konzepten (2) Motivation

Bitte verwenden Sie nur dokumentenechtes Schreibmaterial! 1 Synchronisation mit Semphoren (30)

HSR Rapperswil 2001 Markus Rigling. Programmieren: Smart Pointer Auflage

Softwaresysteme I Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2007 U9.fm

Transkript:

Aufgabe 1: (30 Punkte) Bei den Multiple-Choice-Fragen ist jeweils nur eine richtige Antwort eindeutig anzukreuzen. Auf die richtige Antwort gibt es die angegebene Punktzahl. Wollen Sie eine Multiple-Choice-Antwort korrigieren, kreisen sie bitte die falsche Antwort ein und kreuzen die richtige an. Lesen Sie die Frage genau, bevor Sie antworten. a) Beim Einsatz von RAID 5 wird durch eine zusätzliche Festplatte Datensicherheit erzielt, so dass der Ausfall einer Festplatte den laufenden Betrieb nicht stören kann. Welche Aussage dazu ist richtig? (1 Punkt) Es sind mindestens 5 Festplatten nötig. Die Paritätsinformation wird gleichmäßig über alle beteiligten Platten verteilt. Der Lesezugriff auf ein Plattensystem mit RAID 5 ist langsamer als bei normalen Plattenzugriffen, da der Zugriff auf die Platten komplexer ist. Es dürfen nicht mehr als 5 Festplatten beteiligt sein, da sonst die Paritätsinformation nicht mehr gebildet werden kann. b) Man unterscheidet Traps und Interrupts. Welche Aussage ist richtig? 3 Punkte Bei der mehrfachen Ausführung eines unveränderten Programms mit gleicher Eingabe treten Interrupts immer an den gleichen Stellen auf. Der Zeitgeber (Systemuhr) unterbricht die Programmbearbeitung in regelmäßigen Abständen. Die genaue Stelle der Unterbrechungen ist damit vorhersagbar. Somit sind solche Unterbrechungen in die Kategorie Trap einzuordnen. Der Zugriff auf eine logische Adresse kann zu einem Trap führen. Wenn ein Interrupt einen schwerwiegenden Fehler signalisiert, muss das unterbrochene Programm abgebrochen werden. c) Welche der folgenden Aussagen zu statischem bzw. dynamischem Binden ist falsch? bei dynamischem Binden werden alle Adressen bis zum Zeitpunkt des Programmstarts aufgelöst bei dynamischem Binden können auch zum Übersetzungszeitpunkt alle bekannten Adressbezüge bereits vollständig aufgelöst werden beim statischen Binden werden alle Adressen zum Bindezeitpunkt aufgelöst statisch gebundene Programme können zum Ladezeitpunkt an beliebige Speicheradressen platziert werden d) Welche der folgenden Aussagen bzgl. Threads ist falsch? Die Einlastung (das Dispatching) eines Threads ist eine privilegierte Operation und kann deshalb grundsätzlich immer nur durch das Betriebssystem vorgenommen werden. Das Betriebssystem ist nicht in der Lage, einen einzelnen User-Level Thread bei einer fehlerhaften Operation (z. B. Segmentation fault) gezielt abzubrechen. Ein Anwendungsprogrammierer kann die Schedulingstrategie für seine User- Level Threads selbst programmieren. Die Erzeugung eines Kernel-Level Threads ist teurer als die Erzeugung eines User-Level Threads. e) Bei einer prioritätengesteuerten Prozess-Auswahlstrategie (Scheduling- Strategie) kann es zu Problemen kommen. Welches der folgenden Probleme kann auftreten? Die Anzahl der Prioritäten reicht nicht aus, wenn nur wenige Prozesse vorhanden sind. Prozesse können ausgehungert werden. Das Phänomen der Prioritätsumkehr hungert niedrig-priore Prozesse aus. Die Auswahlstrategie arbeitet ineffizient, wenn viele Prozesse im Zustand bereit sind. - 3 von 17 - - 4 von 17 -

f) Welche Problematik wird durch das Philosophenproblem beschrieben? Ein Erzeuger und ein Verbraucher greifen gleichzeitig auf gemeinsame Datenstrukturen zu. Mehrere Prozesse greifen lesend und schreibend auf gemeinsame Datenstrukturen zu. Exklusive Bearbeitung durch mehrere Bearbeitungsstationen. Gleichzeitiges Belegen mehrerer Betriebsmittel. g) Im regulären Ablauf eines Anwendungsprogramms und einer Signalbehandlungsfunktion (bzw. im Ablauf eines Betriebssystems und einer 3 Punkte Unterbrechungsbehandlungsfunktion) wird auf gemeinsame Daten modifizierend zugegriffen. Welche Aussage ist falsch? Alle Verfahren der mehrseitigen Synchronisation können eingesetzt werden Der Aufruf von P-Operationen im Anwendungsprogramm und dazu korrespondierenden V-Operationen in der Signalbehandlung führt nicht zu Verklemmungen Falscher Einsatz von Schlossvariablen (lock/unlock-operationen) kann zu Verklemmungen führen Alle Verfahren nicht-blockierender Synchronisation sind einsetzbar h) Virtualisierung kann als Maßnahme gegen Verklemmungen genutzt werden. Warum? Im Fall einer Verklemmung können zusätzliche virtuelle Betriebsmittel neu erzeugt werden. Diese können dann eingesetzt werden, um die fehlenden physikalischen Betriebsmittel zu ersetzen. Durch Virtualisierung kann man über Abbildungsvorgänge Zyklen, die auf der logischen Ebene vorhanden sind, auf der physikalischen Ebene auflösen. Eine Verklemmungsauflösung ist einfacher, weil virtuelle Betriebsmittel jederzeit ohne Schaden entzogen werden können. Durch Virtualisierung ist ein Entzug von physikalischen Betriebsmitteln möglich, obwohl dies auf der logischen Ebene unmöglich ist. i) Wie funktioniert Adressraumschutz durch Eingrenzung? Der Lader positioniert Programme immer so im Arbeistsspeicher, dass unerlaubte Adressen mit nicht-existierenden physikalischen Speicherbereichen zusammenfallen. Begrenzungsregister legen einen Adressbereich im logischen Adressraum fest, auf den alle Speicherzugriffe beschränkt werden. Begrenzungsregister legen einen Adressbereich im physikalischen Adressraum fest, auf den alle Speicherzugriffe beschränkt werden. Die MMU kennt die Länge eines Segments und verhindert Speicherzugriffe darüber hinaus. j) Welche Aussage zu Speicherzuteilungsverfahren ist falsch? die worst-fit-strategie kann einem mit der kürzesten Antwortzeit einen ausreichend großen Speicherbereich liefern best-fit arbeitet mit konstanter Komplexität und ist deshalb das beste Verfahren first-fit hat konstanten Aufwand bei der Verschmelzung von Lücken bei buddy-verfahren gibt es keinen externen Verschnitt k) Sie kennen den Begriff Demand-Paging. Welche Aussage dazu ist richtig? Demand-Paging setzt eine segmentierte Speicherverwaltung voraus. Demand-Paging benötigt keinerlei Hardware-Unterstützung, da sich alle benötigten Mechanismen auch ohne MMU realisieren lassen. Demand-Paging erlaubt es größere logische Adressräume anzulegen, als Hauptspeicher vorhanden ist. Allerdings muss vorausgesetzt werden, dass ein Prozess nicht alle Seiten des logischen Adressraums tatsächlich anspricht. Demand-Paging lädt eine Seite erst dann in den Hauptspeicher, wenn sie tatsächlich angesprochen wird. Nicht benutzte Seiten werden unter Umständen aus dem Hauptspeicher ausgelagert. - 5 von 17 - - 6 von 17 -

l) Was versteht man unter Virtuellem Speicher? () Adressierbarer Speicher in dem sich keine Daten speichern lassen, weil er physikalisch nicht vorhanden ist. Speicher der einem Prozess durch entsprechende Hardware (MMU) und durch Ein- und Auslagern von Speicherbereichen vorgespiegelt wird, aber möglicherweise größer als der verfügbare physikalische Hauptspeicher ist. Einen logischen Adressraum. Speicher, der nur im Betriebssystem sichtbar ist, jedoch nicht für einen Anwendungsprozess. m) Man unterscheidet zwischen privilegierten und nicht-privilegierten Maschinenbefehlen. Welche Aussage ist richtig? Privilegierte Maschinenbefehle dürfen in Anwendungsprogrammen grundsätzlich nicht verwendet werden. Die Benutzung eines privilegierten Maschinenbefehls in einem Anwendungsprogramm führt zu einer asynchronen Programmunterbrechung. Privilegierte Maschinenbefehle können durch Betriebssystemprogramme implementiert werden. Mit nicht-privilegierten Befehlen ist der Zugriff auf Geräteregister grundsätzlich nicht möglich. n) Es gibt verschiedene Ursachen, wie Nebenläufigkeit in einem System entstehen kann (gewollt oder auch ungewollt). Was gehört nicht dazu? durch Interrupts durch preemptives Scheduling durch Traps durch Threads auf einem Multiprozessorsystem Aufgabe 2: (60 Punkte) Sie dürfen diese Seite zur besseren Übersicht bei der Programmierung heraustrennen! a) Implementieren Sie ein Programm lpqmanager, das Druckaufträge aus einer Menge von Warteschlangen (=Directories) sequentialisiert und an einen Druck-Server überträgt. Das lpqmanager-programm erhält als Aufrufparameter eine Liste von Directories, aus denen Aufträge abgearbeitet werden (lpqmanager dir1 dir2 dir3... dirn). Das Programm soll folgendermaßen arbeiten: Queue-Threads: Für jedes angegebene Directory gibt es einen Thread (queue-thread), der in einer Funktion process_queue das Directory laufend auf neue Aufträge untersucht. Jeder Auftrag wird durch eine Kontrolldatei repräsentiert, deren Name mit dem Zeichen c beginnt. Andere Dateien werden ignoriert. Ist das Directory fertig durchlaufen, wird sofort wieder von vorne begonnen. Sollte beim Öffnen oder Lesen des Directories ein Fehler auftreten, wird eine entsprechende aussagekräftige Fehlermeldung ausgegeben und dieser Thread beendet. Die Kontrolldatei wird geöffnet (fopen) und der resultierende FILE-Zeiger wird über einen Ringpuffer der Größe NBUFFER (über ein Makro auf 9 voreingestellt) an den Haupt-Thread übergeben. Im Fehlerfall wird der Auftrag einfach ignoriert. Anschließend wird die Kontrolldatei sofort gelöscht (ihr Inhalt bleibt ja, so lange sie geöffnet ist, über den FILE-Zeiger noch lesbar). Haupt-Thread: Der Hauptthread bereitet die Koordinierung auf dem Ringpuffer vor, startet die queue- Threads, baut dann eine TCP-Verbindung zu dem Rechner printserver.uni-erlangen.de, Port 515 auf und ruft schliesslich die Funktion process_jobs auf. Eine Kontrolldatei enthält den vollständigen Pfadnamen einer Datendatei, die die zu druckenden Daten enthält. process_jobs entnimmt einen FILE-Zeiger aus dem Ringpuffer und bearbeitet den Auftrag durch Aufruf der Funktion void job(file *datafile). Danach werden Kontroll- und Datendatei geschlossen, die Datendatei gelöscht und der nächste FILE-Zeiger aus dem Ringpuffer entnommen. Die Funktion job sendet zunächst das Kommando "print job length=n\n" (N = Größe des Druckauftrags in Bytes) und anschließend den Inhalt der Datendatei über die TCP-Verbindung. Alle Threads arbeiten endlos und Sie können vereinfachend davon ausgehen, dass die TCP-Verbindung nicht abbricht. Andere Fehler sollen sinnvoll bearbeitet werden (Programmabbruch ist nicht immer sinnvoll, im Zweifelsfall Entscheidung durch Kommentar erläutern!). Koordinierung: Die Koordinierung zwischen den queue-threads und dem Haupt-Thread erfolgt durch zählende Semaphore. GehenSie davon aus, dassihnenhierzu ein Modul sem.o mit den folgenden Semaphor-Funktionen zur Verfügung steht (Deklarationen in Datei sem.h): SEM *sem_init(int n); /* lege neuen Semaphor an, initialisiere ihn mit Wert n und liefere Zeiger darauf zurück, im Fehlerfall NULL */ void P(SEM *s); /* P und V dekrementieren bzw. */ void V(SEM *s); /* inkrementieren jeweils um 1 */ Beachten Sie auch, dass zwar nur der Haupt-Thread Aufträge aus dem Ringpuffer entnimmt, aber evtl. mehrere Threads gleichzeitig Aufträge eintragen wollen. - 7 von 17 - - 8 von 17 -

Auf den folgenden Seiten finden Sie ein Gerüst für das beschriebene Programm. In den Kommentaren sind nur die wesentlichen Aufgaben der einzelnen, zu ergänzenden Programmteile beschrieben, um Ihnen eine Leitlinie zu geben. Es ist überall großzügig Platz gelassen, damit Sie auch weitere notwendige Anweisungen entsprechend Ihrer Programmierung einfügen können. Einige wichtige Manual-Seiten liegen bei - es kann aber durchaus sein, dass Sie bei Ihrer Lösung nicht alle diese Funktionen oder ggf. auch weitere Funktionen benötigen. #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <netinet/in.h> #include <dirent.h> #include <sys/stat.h> #include <pthread.h> /* Funktion main */ /* lokale Variablen und was man sonst am Anfang so vorbereitet */ /* Semaphore erzeugen und initialisieren */ /* Includes, Funktionsdeklarationen, globale Variablen */ K:A: - 9 von 17 - - 10 von 17 -

/* queue-threads erzeugen */ /* Verbindung zu Printserver aufbauen */ T: S: - 11 von 17 - - 12 von 17 -

/* Aufträge bearbeiten, Ende main */ /* Funktion job */ /* Ende von main - wird nie erreicht */ return 0; } /* Funktion process_jobs */ K: P: P: - 13 von 17 - - 14 von 17 -

/* Funktion process_queue */ b) Schreiben Sie ein Makefile zum Erzeugen des lpqmanager-programms. Ein Aufruf von make lpqmanager soll das Programm erzeugen, ein Aufruf von make clean soll das lpqmanager-programm und evtl. erzeugte.o-dateien entfernen. K: Q: M: - 15 von 17 - - 16 von 17 -

Aufgabe 3: (10 Punkte) Skizzieren Sie in einer programmiersprachenähnlichen Form die Funktionen P und V aus Aufgabe 2. Erläutern Sie die wesentlichen Elemente der Operationen: wo benötigen Sie atomare Operationen bzw. wie oder warum wird an welchen Stellen koordiniert, gewartet, signalisiert, etc. Aufgabe 4: (20 Punkte) a) Skizzieren Sie (graphisch) die Abbildung von einer logischen Adresse in eine physikalische Adresse in einem System mit Segmentierung. b) Bei der Erzeugung eines neuen Prozesses müssen die zugehörenden Segmente im Hauptspeicher angelegt werden. Nach welchen Strategien könnte das Betriebssystem die Postion bestimmen? Nennen Sie vier solche Strategien und deren Eigenschaften, Vor- und Nachteile. c) Wo liegen die wichtigsten Unterschiede zwischen einer segmentierten und einer seitenadressierten Speicherverwaltung? d) Zwei Prozesse sollen nun Zugriff auf einen gemeinsamen Hauptspeicherbereich haben. Wie kann das Betriebssystem das in einem segmentierten System realisieren? Was ist hierzu in welchen Datenstrukturen einzutragen? - 17 von 17 -