Skip to content
Snippets Groups Projects
ws20.q 5.51 KiB
Newer Older
# https://sys.cs.fau.de/extern/lehre/ws23/sp2/pruefung/klausuren/2020w-SP-Klausur_www.pdf
Maximilian's avatar
Maximilian committed
0 Gegeben seien die folgenden Präprozessor-Makros: (2021-02)
|
|
|~~~
|#define ADD(a, b) a + b
|#define DIV(a, b) a / b
|~~~
|
|Was ist das Ergebnis des folgenden Ausdrucks?
|
|~~~
|3 * DIV(ADD(4, 8), 2)
|~~~
- 18
- 10
- 24
+ 16
Maximilian's avatar
Maximilian committed
Ja. Makros, die mit `#define` definiert sind, werden rein textuell vor dem eigentlichen Kompiliervorgang vom Präprozessor expandiert,
Maximilian's avatar
Maximilian committed
indem an der Stelle, an der das Makro verwendet wird, die Definition dessen, bis auf Ersetzung der Parameter mit dem angegebenen Text, unverändert eingesetzt wird.
Maximilian's avatar
Maximilian committed
Hier wird also nach dem Präprozessor-Schritt der folgende Ausdruck kompiliert: `3 * 4 + 8 / 2`. Das ergibt 16. Dieses Problem könnte hier durch das Einklammern der Definitionen gelöst werden.
Maximilian's avatar
Maximilian committed
.

0 Welche Aussage über Einplanungsverfahren ist richtig? (2021-02)
- Im Round-Robin-Verfahren nutzen E/A-intensive Prozesse die ihnen zugeteilte Zeitscheibe immer voll aus
Nein. Bei *round-robin* wird jedem Prozess reihum eine gleich lange Zeitscheibe zugeteilt. Ein E/A-intensiver Prozess, der oft früh in seiner Zeitscheibe durch eine E/A-Operation
in den Zustand "blockiert" übergeht, kann seine Zeitscheibe nicht bis zum Ende ausnutzen.
- Der Konvoieffekt kann bei kooperativen Einplanungsverfahren wie First-Come-First-Served nicht auftreten.
Nein. Insbesondere dort muss ein Prozess, der nur einen kurzen Rechenstoß macht, alle länger dauernden Rechenstöße in der Warteschlange abwarten.
- Bei kooperativen Verfahren können Prozesse die CPU nicht monopolisieren.
Nein. Genau bei kooperativen Verfahren, bei denen Prozesse die CPU freiwillig abgeben müssen, ist dies möglich. Präemptive Verfahren können im Gegensatz dazu derartige Prozesse unterbrechen.
+ In einem asymmetrischen Multiprozessorsystem ist der Einsatz von asymmetrischen Verfahren zur Planung obligatorisch.
Ja. Man betrachte z. B. den Fall CPU + GPU. Ein Prozess, der auf der CPU rechnen möchte, kann nicht unbedingt auch auf der GPU rechnen. Deswegen ist der Einsatz einer Bereitliste für
alle Rechenkerne (symmetrisches Planungsverfahren) hier unmöglich. Stattdessen müssen zumindest für GPU und CPU separate Bereitlisten existieren. Dies zeichnet asymmetrische Planungsverfahren aus.
.

0 Welche Aussage zu virtuellem Speicher ist richtig? (2021-02)
- Virtueller Speicher sind die nicht vorhandenen Bereiche des physikalischen Adressraums.
Nein. Mit virtuellem Speicher ist kein Bereich des physikalischen Adressraums gemeint. Stattdessen bezeichnet man damit die partielle Abbildung vom logischen zum physikalischen Adressraum.
- Virtueller Speicher kann dynamisch zur Laufzeit von einem Programm mit der Funktion malloc(3p) erzeugt werden.
Nein. Die Implementation von `malloc` kann das Betriebssystem dazu auffordern (`mmap(2), brk(2)`), den verfügbaren Speicherbereich des Prozesses zu vergrößern. Benutzerprogramme können jedoch nicht
selbst die Abbildung von virtuellen Adressen zu physikalischen Adressen ändern.
- Unter einem Virtuellen Speicher versteht man einen physikalischen Adressraum, dessen Adressen durch eine MMU vor dem Zugriff auf logische Adressen umgesetzt werden.
Nein. Die *memory management unit* übersetzt logische Adressen auf physikalische.
+ Virtueller Speicher kann größer sein als der physikalisch vorhandene Arbeitsspeicher. Gerade nicht benötigte Speicherbereiche können auf Hintergrundspeicher ausgelagert werden.
Ja. Das bezeichnet man als *swapping*.
.

0 Beim Einsatz von RAID-Systemen kann durch zusätzliche Festplatten Fehlertoleranz erzielt werden. Welche Aussage dazu ist richtig? (2021-02)
+ Bei allen RAID-Systemen ist ein höherer Lese-Durchsatz als bei einer einzelnen Platte möglich, da mehrere Platten gleichzeitig beauftragt werden können.
Maximilian's avatar
Maximilian committed
Ja, bei allen in SP betrachteten Systemen wird dies als Vorteil genannt.
Maximilian's avatar
Maximilian committed
- Bei RAID 4 Systemen wird Paritätsinformation gleichmäßig über alle beteiligten Platten verteilt.
Nein. Das wäre RAID 5. Bei RAID 4 gibt es eine designierte Paritätsplatte.
- RAID 0 erzielt Fehlertoleranz durch das Verteilen der Daten auf mehrere Platten.
Nein. RAID 0 erzielt keine Fehlertoleranz sondern erhöht nur die Lese- und Schreibgeschwindigkeit.
- Bei RAID 4 und 5 darf eine bestimmte Menge von Festplatten nicht überschritten werden, da es sonst nicht mehr möglich ist, die Paritätsinformation zu bilden
Nein. Derartige Einschränkungen existieren nicht.
.

0 Man unterscheidet Programmunterbrechungen in Traps und Interrupts. Welche Aussage ist richtig? (2021-02)
- Weil das Betriebssystem nicht vorhersagen kann, wann ein Prozess einen Systemaufruf tätigt, sind Systemaufrufe in die Kategorie Interrupt einzuordnen.
Nein. Systemaufrufe werden deterministisch ausgeführt, also werden sie der Kategorie Trap zugeordnet.
- Bei der mehrfachen Ausführung eines unveränderten Programms mit gleichen Eingabedaten treten Interrupts immer an den gleichen Stellen auf.
Nein. Das wäre die Definition von Traps. Interrupts, wie z. B. das Eintreffen eines Netzwerkpakets treten ohne direkten Zusammenhang zum unterbrochenen Prozess auf.
- Ein gerade laufendes Maschinenprogramm kann bei Bedarf die Behandlung aller Programmunterbrechungen unterdrücken.
Nein. Das Unterdrücken von Interrupts ist eine privilegierte Operation, die dem Betriebssystem vorbehalten ist. (Das würde sonst z. B. einem Benutzerprozess das Umgehen einer präemptiven Einplanung ermöglichen)
+ Normale Rechenoperationen können zu einem Trap führen.
Ja, wenn z. B. [Division auf x86_64](https://www.felixcloutier.com/x86/div) mit einem Divisor von 0 ausgeführt wird.
.