Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > de.sci.informatik.misc > #367

Freispeichermanagement

From Andreas Wagner <andreasw-usenet@web.de>
Newsgroups de.sci.informatik.misc
Subject Freispeichermanagement
Date 2022-12-13 09:59 +0000
Message-ID <jvr0o1Fdr6vU1@mid.individual.net> (permalink)

Show all headers | View raw


Hallo zusammen,

ich arbeite gerade an dem Freispeicher-Management für einen persistenten 
AVL-Baums. Also auf Festplatte, in einer Datei. Nach dem Löschen eines 
Knotens samt Daten will ich den freigegebenen Speicher wieder nutzen.

Meine Überlegung war, dafür zwei weitere AVL-Bäume zu nutzen, die die 
freigegebenen "Löcher" managt:
1. Einen für eine Map, die die Position in der Datei auf die Größe des 
freigegebenen Speichers abbildet: (Postition_in_Datei -> Größe_des_Lochs)
2. Eine für eine Map, die die Lochgrößen auf Wurzeln von Mengen von 
Positionen von Löchern abbildet. (Lochgröße -> Menge von Positionen)

Beim Löschen wird der freigegebene Block in die Maps eingetragen und ggf. 
vereinfacht: Liegt der neue Block neben einem vorhandenen Block, so werden 
diese verschmolzen.

Beim Reservieren von Speicher wird erst geschaut, ob ein passender oder 
größerer Block in den Maps eingetragen ist. Wird ein größerer Block 
genutzt, wird von der Front des Blocks ein Teil abgeschnitten. Gibt es 
keinen Block oder nur kleinere, wird das Dateiende verwendet.

Die zwei Maps nutzen das selbe Speichermanagement wie die zu speichernden 
Daten. Dabei ist der folgenden Fehler aufgefallen:

remove() ruft removeSpaceReservation() auf, welches wiederum store() 
aufruft. Dieses ruft reserveSpace() auf, welches remove() aufruft. Also 
klar Failure by Design. Das ginge im Kreis.

Ein separates Speichermanagement für die beiden Maps zu nutzen ergäbe, 
dass man beliebig viele dieser Bäume hintereinanderhängen müsste.

Die Alternative, genutzten Speicher die Maps einzutragen, dürfte das selbe 
Problem haben.

Die Option, die zwei Maps mit einem Manager zu verwenden, der immer nur 
ans Ende anhängt, möchte ich vermeiden.

Wie löst man das Problem des Speichermanagement am elegantesten? 
Stichworte wären schon hilfreich.

Gruß
Andreas Wagner

Back to de.sci.informatik.misc | Previous | NextNext in thread | Find similar


Thread

Freispeichermanagement Andreas Wagner <andreasw-usenet@web.de> - 2022-12-13 09:59 +0000
  Re: Freispeichermanagement Stefan Reuther <stefan.news@arcor.de> - 2022-12-13 18:28 +0100
    Re: Freispeichermanagement Andreas Wagner <andreasw-usenet@web.de> - 2022-12-13 20:19 +0100
      Re: Freispeichermanagement Stefan Reuther <stefan.news@arcor.de> - 2022-12-14 19:55 +0100
        Re: Freispeichermanagement Andreas Wagner <andreasw-usenet@web.de> - 2022-12-15 01:40 +0100
          Re: Freispeichermanagement Stefan Reuther <stefan.news@arcor.de> - 2022-12-15 11:30 +0100
            Re: Freispeichermanagement Andreas Wagner <andreasw-usenet@web.de> - 2022-12-18 11:28 +0000

csiph-web