Sie befinden sich hier: Termine » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » Lösungsvorschlag   (Übersicht)

Lösungsvorschlag

Aufgabe 1.2: Mehrfachauswahl-Fragen

a) TODO

b) 2,4,7,8

Aufgabe 3:

a)

a)

worst-fit:
- Erklaerung: Speicherbereich vom groessten (dem ersten Speicher abziehen) und   Anfangsadresse um den selben Wert erhoehen
- vor/fuer den naechsten Schritt den groessten freien Speicheraum unabhaengig von der  Adresse nach vorne ziehen
624|400 -> 300|60
//1. Freispeicherblock: 624B frei zwischen 400 und 1024 (so rum, da worst fit: Liste  absteigend sortiert)
//2. Freispeicherblock: 300B frei zwischen 60 und 360

1 malloc(300 )
1. Block ist größter -> allokation von 400 bis 700
324|700 -> 300|60
//1. Freispeicherblock: 324B frei zwischen 700 und 1024
//2. Freispeicherblock: 300B frei zwischen 60 und 360

2 malloc(50)
-> allokation von 700 bis 750
300|60 -> 274|750
//1. Freispeicherblock: 300B frei zwischen 60 und 360
//2. Freispeicherblock: 274B frei zwischen 750 und 1024

3 malloc(70)
-> allokation von 60 bis 130
274|750 -> 230|130
//1. Freispeicherblock: 274B frei zwischen 750 und 1024
//2. Freispeicherblock: 230 frei zwischen 130 und 360

4 malloc(200)
-> allokation von 750 bis 950
230 |130 ->74|950
//1. Freispeicherblock: 230 frei zwischen 130 und 360
//2. Freispeicherblock: 74B frei zwischen 750 und 1024

5 malloc(60)
-> allokation von 130 bis 190
170|190 ->74|950
//1. Freispeicherblock: 170 B frei ab 130
//2. Freispeicherblock:   74 B frei ab 950

b) Buddyverfahren:

initial sind zwei 64 B-Blöcke (für 40 B und 60 B) von 0-63 und von 64-127 belegt.
Größe - Adresse
1024 -
512 - 512
256 - 256
128 - 128
64 -
32 -
     |:::::::::|               |                       |                              |
          128           256               512
malloc(300)
Da  Malloc 300 und im Buddyverfahren nur zweierpotenzen => 512 belegen,  wir sehen 512 ist   frei  => 512 belegen und aus der Freispeichertabelle löschen 
     |:::::::::|             |                       |:::::::::::::::::::::::::::::::::::::::::::::|
          128         256               512
Größe - Adresse
1024 -
512   -
256   -256
128   - 128
64     -
32     -

malloc(50)

Da   Malloc 50 und im Buddyverfahren nur zweierpotenzen => 64belegen,   wir sehen 64  gibt   es nicht , also gucken wir eins drüber- wir sehen bei 128 ist was frei (addr: 128) ,  128  kann man aber noch teilen /2 => 64 
wir teilen es und belegen ab addr. 128   64 bit => bis addr. 192 => es wird ein neuer   Speicherblock noch frei, nämlich die andere hälfte des gerade geteilten 128 blocks =>  64 großer block ab 192
     |:::::::::|:::::::|         |                       |:::::::::::::::::::::::::::::::::::::::::::::|
          128  192   256               512
Größe | Addr
1024   |
512     |
256     |256
128     |  
64       |192
32      |
 

malloc(70)

 weil 192 nur 64 groß ist
malloc(70) =>  128 , da 192 zu klein, nehme 256  - teile 256 durch 2 
     |:::::::::|:::::::|         |::::::::::::::|            |:::::::::::::::::::::::::::::::::::::::::::::|
          128  192   256      384    512
Größe | Addr
1024   |
512     |
256     |
128     |384  
64       |192
32      | 

malloc(200)

null (not enough memory)
     |:::::::::|:::::::|         |::::::::::::::|            |:::::::::::::::::::::::::::::::::::::::::::::|
          128  192   256      384    512
Größe | Addr
1024   |
512     |
256     |
128     |384  
64       |192
32      |
 
 

malloc(60)

null (not enough memory)//passt doch rein
     |:::::::::|:::::::|:::::::::|::::::::::::::|            |:::::::::::::::::::::::::::::::::::::::::::::|
          128  192   256      384    512
Größe | Addr
1024   |
512     |
256     |
128     |384  
64       |
32      |  

Aufgabe 4:

a) TODO

b) Seitenflatter ist das ständige einlagern gerade erst ausgelagerter Segmente im Speicher nur um danach schnell wieder ausgelagert zu werden. Passiert dies häufig in einem gewissen Zeitraum, ist der Prozessor nurnoch mit dem Ein und Auslagern beschäftigt. Dann spricht man von Seitenflattern.