Paging-System
-
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
Hier ist meine mymalloc Funktion:
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:
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"; } }
-
Meine Antwort auf die gleichlautende Frage im C++-Forum gilt auch hier.