diff options
Diffstat (limited to 'ws2015/betriebssysteme/blaetter')
-rw-r--r-- | ws2015/betriebssysteme/blaetter/01/abgabe.md | 27 | ||||
-rw-r--r-- | ws2015/betriebssysteme/blaetter/02/abgabe.md | 21 | ||||
-rw-r--r-- | ws2015/betriebssysteme/blaetter/03/abgabe.md | 13 | ||||
-rw-r--r-- | ws2015/betriebssysteme/blaetter/04/abgabe.md | 38 |
4 files changed, 0 insertions, 99 deletions
diff --git a/ws2015/betriebssysteme/blaetter/01/abgabe.md b/ws2015/betriebssysteme/blaetter/01/abgabe.md deleted file mode 100644 index 405ab62..0000000 --- a/ws2015/betriebssysteme/blaetter/01/abgabe.md +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | # Aufgabe 4 -- Realisierung von Unterprogrammen | ||
2 | |||
3 | a) | ||
4 | - Code duplication -- Etwaige spätere Änderungen müssen manuell an alle Stellen kopiert werden. | ||
5 | - Argumente müssen manuell an jede Stelle eingepflegt werden. | ||
6 | b) Die Kosten der Befehle für das Springen ins Unterprogramm und das kopieren der Argumente/Return-Values können groß sein gegen die Kosten des Unterprogramms. | ||
7 | c) | ||
8 | - Die Parameter können auf den Stack gepusht werden, bevor in das Unterprogramm gesprungen wird. | ||
9 | - Manche Maschinen bieten spezielle Register für diesen Zweck. | ||
10 | d) Während der Ausführung unterhält die Maschine ein Register, das die Adresse des nächsten auszuführenden Befehls enthält. | ||
11 | Diese kann beliebig überschrieben werden. | ||
12 | e) | ||
13 | `JMP` | ||
14 | ~ überschreibt nur das Adress-Register. | ||
15 | |||
16 | `CALL` | ||
17 | ~ speichert vor dem Überschreiben des Adressregisters noch eine Adresse an die, nach Ausführung des Unterprogramms, in das gesprungen wird, zurückgesprungen werden soll. | ||
18 | f) `RET` muss so implementiert werden, dass es die Rücksprungadresse aus dem selben Register zu lesen versucht, in das `CALL` sie speichert. | ||
19 | `CALL` speichert die Adresse entweder in einem speziellen Register oder auf dem Stack. | ||
20 | |||
21 | # Aufgabe 5 -- Das Betriebssystem | ||
22 | |||
23 | a) $2^n \cdot m~\text{Byte}$ | ||
24 | b) Maschinensprache | ||
25 | c) Textverabeitung | ||
26 | d) Gerätetreiber | ||
27 | e) offene | ||
diff --git a/ws2015/betriebssysteme/blaetter/02/abgabe.md b/ws2015/betriebssysteme/blaetter/02/abgabe.md deleted file mode 100644 index adf72ce..0000000 --- a/ws2015/betriebssysteme/blaetter/02/abgabe.md +++ /dev/null | |||
@@ -1,21 +0,0 @@ | |||
1 | # Aufgabe 9 -- Multiprogramming | ||
2 | |||
3 | a) | ||
4 | Unter Multiprogramming versteht man die Praxis den Prozessor der Maschine mit | ||
5 | hoher Frequenz zwischen mehreren auszuführenden Prozessen hin- und herschalten | ||
6 | zu lassen. | ||
7 | b) | ||
8 | Die Resourcennutzung kann im Normalfall (viele jeweils wenig CPU-Intensive | ||
9 | Prozesse) verbessert werden. | ||
10 | c) | ||
11 | Prozesse können echt parallel ausgeführt werden (im Idealfall wird also die | ||
12 | CPU-Leistung vervielfacht), es ist jedoch komplexes Scheduling erforderlich | ||
13 | und Kontextwechsel kann teuer sein. | ||
14 | |||
15 | # Aufgabe 10 -- Programme und Unterprogramme | ||
16 | |||
17 | a) Systemaufrufe (Syscalls) | ||
18 | b) rekursiv | ||
19 | c) Endadresse des Unterprogramms | ||
20 | d) (iii) | ||
21 | e) Clientanwendung | ||
diff --git a/ws2015/betriebssysteme/blaetter/03/abgabe.md b/ws2015/betriebssysteme/blaetter/03/abgabe.md deleted file mode 100644 index 3e6b599..0000000 --- a/ws2015/betriebssysteme/blaetter/03/abgabe.md +++ /dev/null | |||
@@ -1,13 +0,0 @@ | |||
1 | # E/A-Operationen mit Hilfe von Interrupts | ||
2 | |||
3 | a) Interrupts sind Befehle an die CPU, die einen Sprung in den entsprechenden Handler des Betriebssystems verursachen und von externen Quellen ausgelöst werden (Uhr, E/A Peripherie, …) | ||
4 | b) Alternativ zu Interrupt-basiertem E/A könnten Geräte auch ihren aktuellen Status auf eine Abfrage des aktuellen Prozesses hin zur verfügung stellen. | ||
5 | c) Aktives Polling würde effektiv Prozesszyklen verschwenden jedoch den Prozessfluss deterministischer gestalten. | ||
6 | |||
7 | # Einführung in Betriebssysteme | ||
8 | |||
9 | a) Statusbus | ||
10 | b) `(0,0,0,0)` | ||
11 | c) PC (Program Counter) | ||
12 | d) Das Nutzerprogramm bleibt blockiert, bis die E/A-Operation abgeschlossen ist. | ||
13 | e) `div $t0,$t1,$t2` | ||
diff --git a/ws2015/betriebssysteme/blaetter/04/abgabe.md b/ws2015/betriebssysteme/blaetter/04/abgabe.md deleted file mode 100644 index 94578c5..0000000 --- a/ws2015/betriebssysteme/blaetter/04/abgabe.md +++ /dev/null | |||
@@ -1,38 +0,0 @@ | |||
1 | # 5-Zustands-Prozessmodell | ||
2 | |||
3 | a) | ||
4 | i) Übergang von *blocked* zu *running* wird nur via *ready* realisiert, da der Scheduler bereits periodisch Prozesse aus *ready* aufweckt. | ||
5 | Zusätzlich auch noch den jeweiligen Prozess aufzuwecken wäre schlicht unnötig. | ||
6 | ii) Fordert ein Prozess E/A-Resourcen an, so wird er nach *blocked* verschoben bis die jeweilige E/A-Operation per Unterbrechung bekannt macht, dass der Vorgang abgeschlossen ist. | ||
7 | iii) Ein Prozess, der nicht läuft, kann keine E/A-Resource anfordern. | ||
8 | b) | ||
9 | (i) *new* → *ready* | ||
10 | ~ Ein Nutzer hat seine Shell angewiesen `Hello World!` auszugeben, diese forkt um später `/bin/echo` aufzurufen. | ||
11 | |||
12 | *ready* → *running* | ||
13 | ~ Der Shell-Prozess ruft `wait` auf den soeben gespawnten Prozess auf und wird daher *blocked*. | ||
14 | Der Scheduler entscheidet nun zum Kindprozess zu wechseln. | ||
15 | |||
16 | *running* → *ready* | ||
17 | ~ `/bin/echo` hat nicht innerhalb der switching-Frequenz des Schedulers terminiert. | ||
18 | Der Scheduler verschiebt `/bin/echo` in *ready* und wechselt zu einem anderen Prozess. | ||
19 | |||
20 | *running* → *blocked* | ||
21 | ~ `/bin/echo` ist dynamisch gelinkt und möchte eine library von der Festplatte lesen. | ||
22 | Es setzt einen Syscall ab und wartet auf das Ergebnis. | ||
23 | |||
24 | *blocked* → *ready* | ||
25 | ~ Die Festplatte fängt an einen Stream von bytes zu schicken. | ||
26 | Der Scheduler fängt die Unterbrechung ab und verschiebt `/bin/echo` nach *ready* | ||
27 | |||
28 | *running* → *exit* | ||
29 | ~ `/bin/echo` terminiert. | ||
30 | (ii) *new*. Prozesse werden im reinen batch-betrieb nicht dynamisch erzeugt. | ||
31 | |||
32 | # Prozesse | ||
33 | |||
34 | a) Kontext | ||
35 | b) Uniprogramming | ||
36 | c) 13.3 min | ||
37 | d) `fork` | ||
38 | e) Scheduler | ||