diff --git a/ws20.q b/ws20.q index ce4c166d646499ea5298363b4f484813f06d8d11..50026daefd5392951b897363b0ad87787bef2978 100644 --- a/ws20.q +++ b/ws20.q @@ -1 +1,69 @@ # https://sys.cs.fau.de/extern/lehre/ws23/sp2/pruefung/klausuren/2020w-SP-Klausur_www.pdf +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 +Ja. Makros, die mit `#define` definiert sind, werden rein syntaktisch vor dem eigentlichen Kompiliervorgang vom Präprozessor expandiert, +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. +Hier wird also nach dem Präprozessor-Schritt der folgende Ausdruck kompiliert: `3 * 4 + 8 / 2`. Das ergibt 16. +. + +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. +Ja, zumindest bei den in SP betrachteten Systemen wird dies bei allen als Vorteil genannt. +- 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. +.