Februar 2013 : Aufgabe 3

b)

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Februar 2013 : Aufgabe 3
Hallo,

Ich hab ein Problem mit dem Ausfuellen der Buddy Tabelle. Und zwar habe ich z.B. im Initialzustand ein mal malloc(60) und einmal malloc(40), beide passen ja in 2^6 rein. Wie trage ich das in die Tabelle ein?


ich vermute gar nicht, weil wenn ich das richtig sehe, die Tabelle die Freispeicherliste darstellt.


Richtig. In die Tabelle kommen immer nur die freien Bereiche.


(Löschen bitte, hab die Frage falsch gelesen :V)


falscher Thread^^, sorry war keine Absicht


Ok, d.h. ich dieser Aufgabe rufe ich in jedem Schritt malloc(x) auf und trage in die Tabelle ein, wo sich noch freier Speicher befindet?
Tut mir leid, wenn meine Fragen so doof klingen, aber ich bin grad ziemlich verwirrt.
Denn z.B. bei der Klausur Juli 2009, musste man das himalen und dann den freien Speicher in die Tabelle eintragen. Das Buddyverfahren habe ich vestanden, nur wie trage ich was wo ein?


Welche Tabelle meinst du? Meine Antwort war auf die [m]free(3)[/m]-Tabelle bezogen.

Bei [m]malloc(3)[/m] gibt es keine Tabelle, sondern nur den verfügbaren Speicherbereich. Und da trägst du (nach Angabe) die benutzen Speicherbereiche inklusive Nummer der Allokation ein. Die [m]malloc(3)[/m] werden der Reihe nach durchgeführt.

Bei der [m]free(3)[/m]-Tabelle werden jeweils die Anfangsadressen der freien Bereiche in die Zeile mit der passenden Größe eingetragen.


hat jemand die a) gemacht?
bei mir kommt zum schluss raus:

fore    ->    next    ->    next    <- rear
           size = 170   size = 74
           base = 190   base = 950

Die Größe ist 74, nicht 76. Sonst passt es.


tipp an mich, schreib mal einmal in deinem Leben so, dass du die Zahlen auch DANNACH lesen kannst XDDD


Das ist besonders in einer Klausur ganz praktisch, da müssen es auch andere lesen :wink:


und bei dem Buddy verfahren bleibt eine einzige 2^7 Stelle an 384 uebrig, und das malloc(200) schlegt fehl???


Kann jemand vielleicht seine Lösung fotographieren (oder Scannen lassen) und hier hochladen ?
Das wäre echt super !

Danke :wink:


Richtig.