Speicherverwaltung in c++



  • 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";
    	}
    }
    

  • Mod

    Ein Anfang wäre, sich mal kundig zu machen, wie das in der Praxis funktioniert. Die passenden Stichworte hast du schon. Wenn es doch bloß eine umfangreiche Online-Enzyklopädie gäbe oder gar einen Suchindex für das Internet, dann könntest du dir ohne Aufzustehen das nötige Wissen aneignen :xmas1: .

    Und wenn du dann eine konkrete technische Frage hast, dann bist du hier im Forum richtig. Wenn du noch Schwierigkeiten mit dem Verständnis von Paging haben solltest, dann wäre "Rund um die Programmierung" eine gute Anlaufstelle (und Schwierigkeiten heißt nicht "Kann mir das mal jemand erklären?").

    edit: Denk gefälligst darüber nach, in welchem Forum du schreibst, anstatt einfach alle vollzuspammen! Denkst du, wir wären blind? /closed


Anmelden zum Antworten