Datum: | 2000-10-11 |
---|---|
Prüfer: | Kammerer |
Beisitzer: | Gärtner |
Prüfungsumfang: | BS1 (2+2), BS2 (2+2) |
Prüfungsdauer: | 45 Minuten |
Prof. Kammerer hat sich dumm gestellt und wolle alles Erklärt haben. Felix hat nur wehrend Kammerers kurzer Abwesenheit ein paar Fragen gestellt und am Ende noch SUN-NFS angesprochen. Es ist vorteilhaft, eigenständig die Fragen zu beantworten und dabei die sich ergebenden Probleme von alleine zu erwähnen und zu lösen.
Vorgegeben ist ein 4GB Motorola-System, auf denen nur zwei Seiten um die 2GB-Grenze vorhanden sind. Erstellen sie die Seitentabellen für Betriebssystem und User-Mode.
Die erste Ebene der dreistufigen Pagetable gibt es einmal für der Common-Root-Pointer (CRP) und für der Supervisor Root Pointer (SRP). In ersterer sind die oberen 8 Einträge als "invalid" markiert, um den Zugriff auf Betriebssystemdaten zu unterbinden. Die unteren 8 Einträge in beiden Tabellen sind identisch.
Die Einträge enthalten ein Valid-Bit, die restlichen 31 Bits verweisen auf eine physikalische Adresse (Kachel). Die dritte Ebene enthält weitere Bits für Auslagerungsstrategien. Für Mehrprozessorsysteme ist das Cache-Bit interessant, um das MESI-Cache-Kohärenzprotokoll einzuschalten.
Mehrere Userlevel-Threads auf Kernellevel-Threads. Wie sieht exit_monitor() aus?
exit_monitor
enter_mutex
if urgent'COUNT>0
deblock(urgent)
elif entry'COUNT>0
deblock(entry)
else
busy = false;
exit_mutex
Um Usermode wird enter_mutex
und
exit_mutex()
durch Usermode-Varianten ersetzt. Erster
Ansatz:
tenter_mutex
signals_off
spinlock(mutex)
texit_mutex
free(mutex)
signals_on
Diese Variante hat den Nachteil, daß wenn ein Thread die ULT-Verwaltung aufruft und anschließend die Zeitscheibe des KLT abläuft, alle anderen KLTs nicht in die ULT-Verwaltung kommen und nutzlos Spinlocks machen. Deshalb benutzt man ein Kernel-Semaphore, um den KLT zu suspendieren:
tenter_mutex
signals_off
P(mutex)
texit_mutex
V(mutex)
signals_on
P(mutex)
test_and_decr(local, mutex)
if local<=0
deactivate
V(mutex)
incr_and_test(mutex,local)
if local<=0
activate
Die Reihenfolge on texit_mutex()
darf nicht
vertauscht werden, da sonst ein Prozeßwechsel zwischen den
beiden Befehlen in tenter_mutex
blockieren
würde.
Was ist der Unterschied vonsignal()
nach Hoar undnotify()
bei Hansen?
Bei Hoar wird nach signal()
ein Thread-Wechsel
erzwungen und der signalisierende Thread in der urgent-Queue
blockiert. Bei Hansen wird der signalisierte Prozeß lediglich
deblockiert. Hansen spart damit die urgent-Queue.
signal()
bei Hoar heißt bei Handel
notify()
bzw. notifyAll()
. Bei Hansen muß
ein aufgeweckter Thread die Kondition erneut überprüfen
und sich ggf. erneut blockieren. Bei Threads ist das effizient
machbar. Nachteil bei Hoar ist, daß der signalisierende
Thread genau die Bedingung kennen muß wegen der sich der
aufzuweckende Thread blockiert hat.
Wo werden Monitore benutzt?
Java benutzt Monitore für das synchronized-Konzept bei Methoden, die bei statischen Methoden sich bezüglich der Klasse bzw. bei normalen Methoden bezüglich des Objekts ausschließen.
Wofür braucht man notifyAll()
Beispiel 2. Leser/Schreiber-Problem mit
Schreiber-Priorität: Nachdem der letzte Schreiber den
kritischen Abschnitt verlassen hat können alle Lesen
weiterlaufen. Bei Hoar muß ein Leser der nächsten Leser
durch Kettenaufwecken deblockieren. Mit notifyAll()
ist die Lösung eleganter.
Wo wird RPC genutzt?
In verteilten Systemen, zum Beispiel auch bei NFS. Da die beteiligten Rechner unterschiedliche Architekturen haben, müssen ggf. Parameter konvertiert werden. Dazu muß bekannt sein, von welchem Typ die Parameter sind: Integer, Gleitpunktzahl, Zeichenkette. Als Kodierung wird XDR (eXternal Data Representation) benutzt.
BS war meine insgesammt 4 Prüfung ist ist Bestandteil meines Schwerpunktfachs. Ich habe mich etwa 3 Wochen vorbereitet, die letzte davon sehr intensiv. Die Übungen sollte man nur zum besseren Verständnis machen, da sie selbst nicht direkt in der Prüfung vorkommen. Die beiden Skripte geben einen groben Überblick, man sollte auf jeden Fall noch weitere Bücher lesen:
Die Prüfungsatmosphäre war sehr entspannt und sachlich, so daß man gut miteinander diskutieren konnte. Das Ergebnis war eine 1.0
Philipp Hahn