000
10.12.2012, 18:01 Uhr
~Sandi
Gast
|
Hy habe folgendes Problem: Ich soll überlegen, wie ich meine Speicherverwaltung erweitern müssten, um ein Paging-System mit Auslagerung von Speicherbereichen auf die Festplatte zu realisieren. Geben Sie an, wie die Funktionen mymalloc und myfree abgeändert werden müssen und geben Sie alle zusätzlichen Funktionen/Funktionalität an, die Sie zur Verfügung stellen müssen, damit die neu-definierten Funktionen praktisch nutzbar sind. Geben Sie alle benötigten bzw. veränderten Funktionssignaturen mit allen Parametern und Rückgabewerten an (kein Pseudocode!).
Wäre super, wenn mir jemand helfen könnte :confused:
Hier ist meine mymalloc Funktion:
Code: |
void* mymalloc(unsigned int size, int line) { void* result = NULL; if (size > 0) { memInfo* foundLocation = NULL; if (selectedStrategy == BEST_FIT) { foundLocation = bestFit(size); } else if (selectedStrategy == FIRST_FIT) { foundLocation = findFirst(size); } // Wurde ein Bereich gefunden. if (foundLocation != NULL) { result = (void*) (memory + foundLocation->start); foundLocation->line = line; vector<memInfo*>::iterator it = memoryAllocation.begin(); while (it != memoryAllocation.end()) { memInfo *curr = *it; if (curr->start > foundLocation->start) { break; } it++; } memoryAllocation.insert(it, foundLocation); } } return result; }
|
Hier ist meine myfree Funktion:
Code: |
void myfree(void *p) { vector<memInfo*>::iterator it = memoryAllocation.begin(); bool freed = false; while (it != memoryAllocation.end()) { memInfo *curr = *it; if ((void*) (memory + curr->start) == p) { memoryAllocation.erase(it); freed = true; delete curr; break; } it++; } if (!freed) { throw "SegFault"; } }
|
|