summaryrefslogtreecommitdiff
path: root/ws2015
diff options
context:
space:
mode:
authorGregor Kleen <gkleen@yggdrasil.li>2015-11-08 00:21:32 +0000
committerGregor Kleen <gkleen@yggdrasil.li>2015-11-08 00:21:32 +0000
commit44eb92e9f3adbc3f06e363dacb00f7fd0a37f6b3 (patch)
tree2102eb309a52077ca38a5cb1be0361407e6716f7 /ws2015
parentbf8dbb13873c471f2b9b1c95fb8b7d0a58c9c076 (diff)
downloaduni-44eb92e9f3adbc3f06e363dacb00f7fd0a37f6b3.tar
uni-44eb92e9f3adbc3f06e363dacb00f7fd0a37f6b3.tar.gz
uni-44eb92e9f3adbc3f06e363dacb00f7fd0a37f6b3.tar.bz2
uni-44eb92e9f3adbc3f06e363dacb00f7fd0a37f6b3.tar.xz
uni-44eb92e9f3adbc3f06e363dacb00f7fd0a37f6b3.zip
Betriebssysteme ­ Blatt 04
Diffstat (limited to 'ws2015')
-rw-r--r--ws2015/betriebssysteme/blaetter/04/abgabe.md38
1 files changed, 38 insertions, 0 deletions
diff --git a/ws2015/betriebssysteme/blaetter/04/abgabe.md b/ws2015/betriebssysteme/blaetter/04/abgabe.md
new file mode 100644
index 0000000..94578c5
--- /dev/null
+++ b/ws2015/betriebssysteme/blaetter/04/abgabe.md
@@ -0,0 +1,38 @@
1# 5-Zustands-Prozessmodell
2
3a)
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.
8b)
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
34a) Kontext
35b) Uniprogramming
36c) 13.3 min
37d) `fork`
38e) Scheduler