Skip to content
Snippets Groups Projects
Verified Commit c6d1b6e1 authored by Maximilian's avatar Maximilian :notebook_with_decorative_cover:
Browse files

More questions for ss22

parent e6138024
No related branches found
No related tags found
1 merge request!10Mehr Fragen + gen.pl-Erweiterungen
......@@ -62,5 +62,67 @@
der Ausführung auftreten, bspw. wenn je nach Rechenarchitektur ein
[`syscall`](https://www.felixcloutier.com/x86/syscall) (x86_64)
Befehl ausgeführt wird.
.
0 Welche Aussage zum Thema Systemaufrufe ist richtig?
- Durch die Bereitstellung von Systemaufrufen, kann ein Benutzerprogramm das Betriebssystem um eigene Funktionen erweitern.
Nein, Systemaufrufe sind die Schnittstelle, die das Betriebssystem Benutzerprozessen zur Verfügung stellt. Benutzerprozesse können (u. a. aus Sicherheitsgründen) das Betriebssystem nicht in dieser Hinsicht verändern.
+ Mit Hilfe von Systemaufrufen kann ein Benutzerprogramm privilegierte Operationen durch das Betriebssystem ausführen lassen, die es im normalen Ablauf nicht selbst ausführen dürfte.
Ja, möchte ein Programm z. B. eine Datei lesen, so sendet es nicht selbst z. B. NVMe-Befehle an den Speicher (privilegierte Operation, könnte zum Verlust aller Daten führen), sondern beauftragt das Betriebssystem (im Fall von POSIX mit `read(2)`), den Dateiinhalt zu lesen.
- Die Bearbeitung eines Systemaufrufs findet immer im selben Adressraum statt, aus dem heraus der Systemaufruf abgesetzt wurde.
Nein, bei der Bearbeitung eines Systemaufrufs im Systemkern (*kernel*) ist der *kernel address space*, der nicht für Benutzerprozesse sichtbar ist, verfügbar.
- Benutzerprogramme dürfen keine Systemaufrufe absetzen, diese sind dem Betriebssystem vorbehalten.
Nein, Benutzerprozesse verwenden Systemaufrufe, um Operationen auszuführen, für die sie selbst nicht die Privilegien besitzen.
.
0 Bei der Behandlung von Ausnahmen (Traps oder Interrupts) unterscheidet man zwei Bearbeitungsmodelle. Welche Aussage hierzu ist richtig?
- Nach dem Beendigungsmodell werden Interrupts bearbeitet. Gibt man z. B. CTRL-C unter UNIX über die Tastatur ein, wird ein Interrupt-Signal an den gerade laufenden Prozess gesendet und dieser dadurch beendet.
Nein, der Interrupt wird vom Betriebssystem abgefangen. Dieses kann dann dem Prozess, der gerade das aktuelle Terminal belegt, ein Signal zustellen. Dieser muss jedoch nicht unbedingt der gerade laufende Prozess sein (Auch Hintergrundprozesse (*daemons*) können sich im Zustand "laufend" befinden).
- Das Beendigungsmodell sieht das Herunterfahren des Betriebssystems im Falle eines schwerwiegenden Fehlers vor.
Nein. Es reicht aus, nur den problematischen Prozess zu beenden. Das hier beschriebene Herunterfahren würde die Robustheit eines Betriebssystems senken.
+ Das Wiederaufnahmemodell ist für Interrupts und Traps gleichermaßen geeignet.
Ja. Auch bei Traps wie z. B. einem Seitenfehler, bei dem ein Prozess auf eine Seite zugreift, die gerade ausgelagert ist (*swapping*), ist das Weiterlaufen des Prozesses, nachdem die Seite wieder eingelagert wurde, sinnvoll.
- Interrupts sollten nach dem Beendigungsmodell behandelt werden, weil ein Zusammenhang zwischen dem unterbrochenen Prozess und dem Grund des Interrupts bestehen kann.
Nein, Interrupts sind unvorhersagbare Ereignisse wie z. B. das Eingehen eines Netzwerkpaketes oder das Drücken einer Taste auf der Tastatur. Der aktuell laufende Prozess sollte i. A. nicht wegen einem derartigen Ereignis beendet werden, da dieser nicht unbedingt einen Bezug zu einer derartigen Eingabe hat.
.
0 Welche Aussage zum Thema Programme und Prozesse ist richtig?
+ Ein Programm kann durch mehrere Prozesse gleichzeitig ausgeführt werden
Ja, teste z. B. `sleep 5 & sleep 5`. Hier wird das Programm `sleep` gleichzeitig ausgeführt, weswegen dieser Befehl nur 5 Sekunden (statt 10) benötigt.
- In einem Prozess kann immer nur ein Programm ausgeführt werden.
Nein, auf POSIX kann mit `exec(3)` ein Prozess zu einem anderen Programm wechseln.
- Ein Prozess kann gleichzeitig mehrere verschiedene Programme ausführen.
Nein, ein Prozess ist *ein* Programm in Ausführung. Es kann zwar zu einem anderen Programm gewechselt werden, möchte man jedoch nebenläufig ein anderes Programm ausführen, muss man einen neuen Prozess erzeugen (`fork(3) + exec(3)` oder `posix_spawn(3)`)
- Der Compiler erzeugt aus mehreren Programmteilen (Module) einen Prozess.
Nein. Einerseits erzeugt der Compiler Objektdateien, die der Linker zu einem Programm bindet, andererseits wird ein Prozess weder vom Compiler noch vom Linker, sondern vom Betriebssystem zur Laufzeit erzeugt.
.
0 Ein laufender Prozess wird in den Zustand bereit überführt. Welche Aussage passt zu diesem Vorgang?
- Es ist kein direkter Übergang von laufend nach bereit möglich.
Nein.
+ Der Prozess wird durch einen anderen Prozess verdrängt, oder gibt die CPU freiwillig ab.
Ja, der Prozess könnte noch weiterrechnen, ist also *bereit*.
- Der Prozess wartet auf Daten von der Festplatte.
Nein, der Prozess ist dann *blockiert*, bis die Daten gelesen sind.
- Der Prozess wartet mit dem Systemaufruf waitpid(3) auf die Beendigung eines anderen Prozesses.
Nein, der Prozess ist dann *blockiert*, bis der andere Prozess beendet ist. Eine Ausnahme könnte hier der Aufruf mit dem Parameter `WNOHANG` darstellen, mit welchem der Systemaufruf sofort zurückgibt.
.
0 Welche Seitennummer und welcher Offset gehören bei einstufiger Seitennummerierung und einer Seitengröße von 1024 (= 2¹⁰
) Bytes zu folgender logischer Adresse: 0x0802?
+ Seitennummer 0x2, Offset 0x2
Ja, `0x0802 = 0b0000 10|00 0000 0010` also ist die Seitennummer `0b0000 10 = 0x2` und der Offset `0b00 0000 0010 = 0x2`
- Seitennummer 0x8, Offset 0x8
Nein. Hier sind beide falsch.
- Seitennummer 0x2, Offset 0x8
Nein. Hier ist der Offset offensichtlich falsch.
- Seitennummer 0x8, Offset 0x2
Nein. Da hier der Offset 10 Bit und kein Vielfaches von 4 hat, darf man nicht einfach die Hexadezimaldarstellung an der Grenze eines *nibbles* (= Halbbyte, 4 Bit, ein Zeichen in Hexadezimaldarsetllung) zerlegen.
.
0 Welche Aussage zu UNIX/Linux-Dateideskriptoren ist korrekt?
+
-
- Der Dateideskriptor enthält die nötigen Metadaten einer Datei und ist auf der Festplatte gespeichert.
-
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment