Hallo,
ich habe mir grad einige Funktionen für die Verwaltung meines dynamischen Speichers in meinem OS geschrieben, und finde, dass es doh etwas viel Overhead ist, denn für jeden freien oder belegten Speicherblock lege ich zusätzlich noch eine solche Struktur im Speicher an:
Wie man sieht wird für jeden freien oder belegten Block eine solche Struktur von 12 Bytes benötigt, die als Liste organisiert sind.
Das Konzept ist denkbar einfach, am Anfang gibt es einen Eintrag in der Free-List, der den ganzen möglichen dyn. Speicher umfasst. Wird etwas allociert, wird der Eintrag verändert und es wird ein Eintrag in die Alloc-List eingefügt. Wird nun free aufgerufen, wird die Alloc-List nach dem Eintrag durchsucht usw.
Funktioniert auch soweit ganz nett, ich bin mir nur nicht ganz sicher, ob es da nicht noch bessere Lösungen gibt.
Kennt einer von euch eventuell eine bessere Strategie?
MM
ich habe mir grad einige Funktionen für die Verwaltung meines dynamischen Speichers in meinem OS geschrieben, und finde, dass es doh etwas viel Overhead ist, denn für jeden freien oder belegten Speicherblock lege ich zusätzlich noch eine solche Struktur im Speicher an:
Code: [Auswählen]
struct sMemList{
unsigned int start; // Startadresse
unsigned int size; // Größe des Blocks in Byte
sMemList *next;
};Wie man sieht wird für jeden freien oder belegten Block eine solche Struktur von 12 Bytes benötigt, die als Liste organisiert sind.
Das Konzept ist denkbar einfach, am Anfang gibt es einen Eintrag in der Free-List, der den ganzen möglichen dyn. Speicher umfasst. Wird etwas allociert, wird der Eintrag verändert und es wird ein Eintrag in die Alloc-List eingefügt. Wird nun free aufgerufen, wird die Alloc-List nach dem Eintrag durchsucht usw.
Funktioniert auch soweit ganz nett, ich bin mir nur nicht ganz sicher, ob es da nicht noch bessere Lösungen gibt.
Kennt einer von euch eventuell eine bessere Strategie?
MM

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken


Gespeichert


An einem Festen ort muss dann nur ein Zeiger auf den Rootknoten liegen, bzw. falls man es wie ihr mit Listen macht auf das Head-Element der Liste.