Gedächtnis-Protokoll Betriebssysteme Ersttermin SS16 (08.08.2016)
1.)
– beschreiben was der „|“ Operator in Unix Systemen für eine Funktion hat
– ein Beispiel für eine sinnvolle Anwendung von „|“.
– beschreiben was der „&“ Operator am Ende eines Programmaufrufs in Unix bewirkt
– Warum werden Zombie-Prozesse noch im System gehalten?
2.)
int x =0; main(){
pid = fork(); if(pid > 0){
int status;
wait(&status); }
else{
x = 3;
exit(); }
x++;
printf(“%d“,x); }
– angeben was das Programm ausgibt.
– erklären was in der Zeile pid = fork(); passiert
– was passiert mit der Variable X in der Zeile pid = fork();
3.) Synchronisation mit Mutex
Drei Programme werden potentiell parallel ausgeführt und greifen mit der Operation edit() auf die globalen Variablen a,b,c zu. Man soll die Situation synchronisieren mit den beiden Mutexen und den Befehlen lock(Mutex*) und unlock(Mutex*). DoSomething greift nicht auf die Variablen zu. Es ist darauf zu achten nur das Mindestmaß an Synchronisierung vorzunehmen und einen korrekten parallel-Betrieb zu ermöglichen. (vermutlich Hinweis damit Leute nicht auf die Idee kommen das komplette Programm als kritischen Abschnitt zu wählen)
int a = 0, int b = 0, int c = 0;
Lock Mutext1;
Lock Mutex2;
….
Programm A
Programm B
Programm C
edit(&a); doSomething();
edit(&a,&b);
edit(&b); doSomething();
edit(&a);
edit(&a, &b); doSomething();
edit(&a, &c);
4.) Semaphore und Deadlocks
Programm A
Programm B
p(liste); p(klausuren);
korrigieren();
v(klausuren); v(liste);
p(klausuren); p(liste);
korrigieren();
v(liste); v(klausuren);
– Programmablauf aus dem Code oben angeben, bei dem es zu einer Verklemmung kommt.
– Wie können die Programme verändert werden, damit es nicht mehr zu einer Verklemmung kommen kann?
– Unterschied Verklemmungsvermeidung vs. Verklemmungsvermeidung
(prevention vs. avoidance?) 5.) Demand Paging
Dieses Bild war gegeben, allerdings mit anderen Werten. Dann waren zwei virtuelle Adresse gegeben und man sollte beschreiben was das Betriebssystem macht (also Pagefault ja/nein, was dann…) und angeben wie sich die Daten im Hauptspeicher und in der SKT verändern).
– Frage: Warum muss der Translation-Look aside-Buffer bei Kontextwechsel gelöscht werden?
6. Scheduling mit Round Robin
Wie in den letzten Probeklausuren: ein Gantt-Chart und eine Tabelle mit Werten zu den Prozessen (Trifft ein nach:, Länge CPU-Stoß, Länge, EA-Stoß) gegeben. Im Gegensatz zu den Probeklausuren sollte hier aber ein E/A-Stoß nach jedem CPU-Stoß ausgeführt werden.
7. Multiprozessor Systeme
Es gibt System mit einer Readyliste für alle CPUs und Systeme mit einer Liste pro CPU:
– welche Technik wird in modernen Systemen meist verwendet
– jeweils einen Vorteil der einen Strategie gegenüber der anderen nennen
7. Second Chance Scheduling
Diese Uhr mit anderen Werten war
gegeben. Man sollte sagen welche als erste, zweite und dritte Seite ersetzt wird.
Tabelle mit Ja/Nein ausfüllen:
SC
LRU
OPT
SRTF
Es kann zur FIFO-Anomalie kommen
Jede Seite hat ein Referenzbit
8. Datenträger
– Einen Lesevorgang nach Shortest Seek Time First (wie in Probeklausuren) durchführen
– Warum sind Dateien die nachträglich vergrößert werden ein Problem bei sequentieller Speicherung.
– nenne und erkläre die in der Vorlesung erwähnte Methode, die das Lesen sequentieller Daten beschleunigt(?)
9 Sicherheit
ls -l einer Datei gibt folgende Ausgabe: -rwxr—– kepler studis ……
John ist in der Gruppe Studis, angeben wer welche Rechte hat (Ja/Nein):
Lesen
Schreiben
Ausführen
John
guest
kepler