Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Paging-System

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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";
    }
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.12.2012, 19:59 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja

im Prinzip musst du dir ja merken, welche Seite auf der Festplatte, und welche im Speicher liegen. Weiterhin muss ja beim Zugriff auf einen Pointer abgeprüft werden, ob der Speicherbereich gerade ein- oder ausgelagert ist.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: