Joshua Rutschmann 8年前
コミット
f2f5fb4925
3個のファイルの変更49行の追加3行の削除
  1. 39
    0
      hw4/simu1/ANSWERS.md
  2. 7
    0
      hw4/simu3/ANSWERS.md
  3. 3
    3
      hw4/task1/src/readproc.rs

+ 39
- 0
hw4/simu1/ANSWERS.md ファイルの表示

@@ -0,0 +1,39 @@
1
+# hw4 - Simulation 1 - Lösungen
2
+
3
+### Warmup
4
+
5
+`0x611c` =>
6
+
7
+`0110 0001 0001 1100` =>
8
+
9
+| Valid | PDE | PTE | Offset |
10
+|-------|-----|-----|--------|
11
+|0      |11000|01000|11100   |
12
+| False | 24  | 8   | 28     |
13
+
14
+PDE at index 24:
15
+
16
+> page 108: 83 [...] e9 **a1** e8 [...] ff
17
+
18
+
19
+
20
+`0xa1` => `1010 0001` => `1 | 0100001` => Valid | 33
21
+
22
+PTE at index 8 in page 33 (found in PDE):
23
+
24
+> page 33: 7f [...] 7f **b5** 7f [...] 7f
25
+
26
+
27
+`0xb5` => `1011 0101` => `1 | 0110101` => Valid | 53
28
+
29
+Final Value is in page `0xb5` (53) with offset 28 => 0x08 (8).
30
+
31
+
32
+
33
+### Aufgaben
34
+
35
+1. Für eine zweistufige Seitentabelle benötigt man ein Register, für eine dreistufige Seitentabelle bräuchte man ein zweites PDBR.
36
+
37
+2. Da es sich bei dieser Simulation um eine zweistufige Seitentabelle handelt, gibt es eine Referenz für den PDE, eine für den PTE und schlussendlich noch eine dritte Referenz, in der das Endergebnis steht.
38
+
39
+3.

+ 7
- 0
hw4/simu3/ANSWERS.md ファイルの表示

@@ -0,0 +1,7 @@
1
+# hw4 - Simulation 3 - Antworten
2
+
3
+1.
4
+    1. FIFO: Da immer das älteste Element aus dem Cache geworfen wird, verursacht `1,2,3,4,5,6,1,2,...` ausschließlich Cache-Misses.
5
+    2. LRU: Nun wird immer das am längsten nicht getroffene Element aus dem Cache geworfen. Die Strategie bei FIFO funktioniert auch hier.
6
+    3. MRU: Hier funktioniert die bisher verwendete Folge nicht mehr. Da immer das zuletzt verwendete Element aus dem Cache entfernt wird, ist `1,2,3,4,5,6,5,6,...` eine Möglichkeit, um ausschließlich Cache-Misses zu provozieren. Die Folge `1-6` dient dabei dazu, den Cache zuerst aufzufüllen.
7
+    4. Für unseren Fall (eine Abfolge von 6 verschiedenen Zugriffen) braucht der Cache eine minimale Größe von 6, um sehr viel mehr Cache-Hits zu erreichen. Um genau zu sein, sind dann immer alle Einträge im Cache vorhanden, und nach der anfänglichen Auffüllphase (in der nur Misses auftreten) ist jeder Zugriff ein Hit.

+ 3
- 3
hw4/task1/src/readproc.rs ファイルの表示

@@ -15,7 +15,7 @@ pub fn get_pid_command(pid: i32) -> Result<String, &'static str> {
15 15
     }
16 16
 }
17 17
 
18
-/*pub fn get_last_created_command() -> Result<String, &'static str> {
18
+pub fn get_last_created_command() -> Result<String, &'static str> {
19 19
     match loadavg() {
20 20
         Ok(stat) => {
21 21
             let last_pid = stat.last_created_pid;
@@ -24,9 +24,9 @@ pub fn get_pid_command(pid: i32) -> Result<String, &'static str> {
24 24
                 Err(_) => { Err("No last command via PID found") }
25 25
             }
26 26
         }
27
-        Err(_) => { Err("No last command via PID found") }
27
+        Err(_) => { Err("No last command found") }
28 28
     }
29
-}*/
29
+}
30 30
 
31 31
 pub fn get_thread_count(pid: i32) -> Result<u32, &'static str> {
32 32
     match pid::stat(pid) {

読み込み中…
キャンセル
保存