Przeglądaj źródła

Began hw3/simu2. Solved hw3/simu3 partially.

Joshua Rutschmann 8 lat temu
rodzic
commit
1d01df8acd
2 zmienionych plików z 139 dodań i 0 usunięć
  1. 33
    0
      hw3/simu2/ANSWERS.md
  2. 106
    0
      hw3/simu3/ANSWERS.md

+ 33
- 0
hw3/simu2/ANSWERS.md Wyświetl plik

@@ -0,0 +1,33 @@
1
+# Antworten
2
+
3
+### Warmup
4
+
5
+| VA Number | Virtual Adress | Binary Address | Segment Number |
6
+| --------- | -------------- | -------------- | -------------- |
7
+| VA  0     | 0x00000011     | 0**0**010001   | 0              |
8
+| VA  1     | 0x0000006c     | 0**1**101100   | 1              |
9
+| VA  2     | 0x00000061     | 0**1**100001   | 1              |
10
+| VA  3     | 0x00000020     | 0**0**100000   | 0              |
11
+| VA  4     | 0x0000003f     | 0**0**111111   | 0              |
12
+
13
+
14
+
15
+```
16
+ --------------- 0x00000000
17
+ |  Segment 0  |
18
+ |-------------| 0x00000020
19
+ |             |
20
+ |             |
21
+ |             |
22
+ |             |
23
+ |-------------| 0x000001ec
24
+ |  Segment 1  |
25
+ |-------------| 0x00000200
26
+```
27
+
28
+
29
+
30
+## Questions
31
+
32
+1.  Die höchste erlaubte Adresse in Segment 0 ist 0x00000020. Die niedrigste valide Addresse des Segments 1 ist 0x000001ec.
33
+2.  ​

+ 106
- 0
hw3/simu3/ANSWERS.md Wyświetl plik

@@ -0,0 +1,106 @@
1
+# Warmup
2
+
3
+Die Entwicklung des Speichers nach ausführen von `./malloc.py -n 10 -H 0 -p BEST -s` 
4
+
5
+```
6
+ --------------- 1000
7
+ |             |
8
+ |             |
9
+ |-------------| 1100
10
+```
11
+
12
+```
13
+ --------------- 1000
14
+ |   alloc'd   |
15
+ |-------------| 1003
16
+ |             |
17
+ |             |
18
+ |    FREE     |
19
+ |             |
20
+ |             |
21
+ |-------------| 1100
22
+```
23
+
24
+```
25
+ --------------- 1000
26
+ |    FREE     |
27
+ |-------------| 1003
28
+ |             |
29
+ |             |
30
+ |    FREE     |
31
+ |             |
32
+ |             |
33
+ |-------------| 1100
34
+```
35
+
36
+```
37
+ --------------- 1000
38
+ |    FREE     |
39
+ |-------------| 1003
40
+ |   alloc'd   |
41
+ |-------------| 1008
42
+ |             |
43
+ |    FREE     |
44
+ |             |
45
+ |-------------| 1100
46
+```
47
+```
48
+ --------------- 1000
49
+ |    FREE     |
50
+ |-------------| 1003
51
+ |    FREE     |
52
+ |-------------| 1008
53
+ |             |
54
+ |    FREE     |
55
+ |             |
56
+ |-------------| 1100
57
+```
58
+```
59
+ --------------- 1000
60
+ |    FREE     |
61
+ |-------------| 1003
62
+ |    FREE     |
63
+ |-------------| 1008
64
+ |   alloc'd   |
65
+ |-------------| 1016
66
+ |    FREE     |
67
+ |-------------| 1100
68
+```
69
+```
70
+ --------------- 1000
71
+ |    FREE     |
72
+ |-------------| 1002
73
+ |   alloc'd   |
74
+ |-------------| 1003
75
+ |    FREE     |
76
+ |-------------| 1008
77
+ |    FREE     |
78
+ |-------------| 1016
79
+ |    FREE     |
80
+ |-------------| 1100
81
+```
82
+```
83
+ --------------- 1000
84
+ |    FREE     |
85
+ |-------------| 1002
86
+ |   alloc'd   |
87
+ |-------------| 1003
88
+ |    FREE     |
89
+ |-------------| 1008
90
+ |   alloc'd   |
91
+ |-------------| 1015
92
+ |    FREE     |
93
+ |-------------| 1016
94
+ |    FREE     |
95
+ |-------------| 1100
96
+```
97
+
98
+Wie man sieht hat die Fragmentierung des Speichers bzw. der Free-Liste zugenommen.
99
+
100
+# Antworten
101
+
102
+1. Wenn zwei mal ein gleich großes Speicherstück alloziiert wird, dann wird nicht das wieder freigewordene Fragment genutzt, sondern ein neues reserviert. Auch Alloziierungen von kleineren Stücken bekommen keine Teile von wieder freigegebenem Platz. Also ensteht im allgemeinen eine höhere Fragmentierung als mit **BEST**.
103
+2. Die Struktur der Free-Liste ändert sich nicht, aber es werden weniger Elemente (Speicherblöcke) gesucht, bevor die Adresse zurückgeliefert wird. Je größer die Free-Liste, desto länger dauert es, diese zu durchsuchen. Das Flag **FIRST** verkürzt also die Suchzeit und somit auch die insgesamte alloc-Zeit.
104
+3. - **ADDRSORT** sortiert die Liste mit dem freien Speicher nach der höhe der Adresse. Es verändert sich nichts zu vorher mit anderen Policies.
105
+   - Bei **SIZESORT+** sind die kleinsten *Stücke* vorne in der Liste. Bei **BEST** ist dann oft der Verschnitt, also 1-Byte-Blöcke am Anfang. 
106
+   - Bei **SIZESORT-** wird die Speicherliste absteigend nach der Größe der Blöcke sortiert. Diese Sortierung ist vorteilhaft für die Policy **FIRST**, da große Blöcke direkt am Anfang gefunden werden die sehr häufig für den angeforderten Speicher ausreichen. 

Ładowanie…
Anuluj
Zapisz