diff options
author | Gregor Kleen <gkleen@yggdrasil.li> | 2015-11-13 23:45:26 +0000 |
---|---|---|
committer | Gregor Kleen <gkleen@yggdrasil.li> | 2015-11-13 23:45:26 +0000 |
commit | ab9484b343abd995cba915bb0ba4be8907dfa6ec (patch) | |
tree | f441968094bec070499d24e45e8a29f1315da1f4 /ws2015/oss/blaetter/04 | |
parent | 14dc76bda755c850f859a4b974c793e694f2b0b4 (diff) | |
download | uni-ab9484b343abd995cba915bb0ba4be8907dfa6ec.tar uni-ab9484b343abd995cba915bb0ba4be8907dfa6ec.tar.gz uni-ab9484b343abd995cba915bb0ba4be8907dfa6ec.tar.bz2 uni-ab9484b343abd995cba915bb0ba4be8907dfa6ec.tar.xz uni-ab9484b343abd995cba915bb0ba4be8907dfa6ec.zip |
Shorter lecture names
Diffstat (limited to 'ws2015/oss/blaetter/04')
-rw-r--r-- | ws2015/oss/blaetter/04/abgabe.md | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/ws2015/oss/blaetter/04/abgabe.md b/ws2015/oss/blaetter/04/abgabe.md new file mode 100644 index 0000000..94578c5 --- /dev/null +++ b/ws2015/oss/blaetter/04/abgabe.md | |||
@@ -0,0 +1,38 @@ | |||
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 | ||