Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.sci.informatik.misc > #370
| Path | csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail |
|---|---|
| From | Stefan Reuther <stefan.news@arcor.de> |
| Newsgroups | de.sci.informatik.misc |
| Subject | Re: Freispeichermanagement |
| Date | Wed, 14 Dec 2022 19:55:17 +0100 |
| Lines | 67 |
| Message-ID | <tnd9n5.5gc.1@stefan.msgid.phost.de> (permalink) |
| References | <jvr0o1Fdr6vU1@mid.individual.net> <tnag8q.4to.1@stefan.msgid.phost.de> <jvs1hhFin2bU4@mid.individual.net> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=utf-8 |
| Content-Transfer-Encoding | 8bit |
| X-Trace | individual.net WlMScVn8xzuw7tUqHkeyaQmBfuRvirMf5HcNmHYlL7ota/7mdO |
| Cancel-Lock | sha1:DASulN0ttHgX4fF9HjH6LJruVUY= |
| User-Agent | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.1 Hamster/2.1.0.1538 |
| In-Reply-To | <jvs1hhFin2bU4@mid.individual.net> |
| Xref | csiph.com de.sci.informatik.misc:370 |
Show key headers only | View raw
Am 13.12.2022 um 20:19 schrieb Andreas Wagner:
> Am 13.12.2022 um 18:28 schrieb Stefan Reuther:
>> Ich würde versuchen, die Verwaltungsdaten in den Blöcken selbst zu
>> speichern. Ein allokierter Block besteht aus Header+Payload, ein
>> freigegebener Block besteht aus Header+Knoten1+Knoten2, wobei Knoten1/2
>> die Knoten in der ersten und zweiten Map sind. Die Basisoperationen sind
>> dann nicht store() und remove(), sondern insertNode() und unlinkNode(),
>> die einfach nur den Knoten ein- oder ausketten und dabei keine neuen
>> Knoten anlegen.
>
> Meinst Du bei "Header+Knoten1+Knoten2", dass jeweils Speicherpositionen
> von Knoten 1 und 2 angegeben werden? Mir stellt sich die Frage, wonach
> der Baum sortiert sein soll, der mit dem Header organisiert ist. Größe
> und Position haben ja jeweils schon eine Map.
>
> Mir ist auch noch keine Idee gekommen, wie man den Knoten auswählt, der
> bei insertNode() wiederverwendet werden soll.
Wenn wir das mal mit RAM statt Datei durchspielen, meinte ich verstanden
zu haben, dass dir sowas vorschwebt:
struct Node {
struct Node* left;
struct Node* right;
int payload;
};
void store(struct Node* root, int payload)
{
struct Node* new_node = malloc(sizeof(struct Node));
new_node->payload = payload;
// hier den Knoten einketten, also z.B.
new_node->left = root->left;
root->left = new_node;
// (AVL-tree-insert bekomm ich aus dem Kopf jetzt nicht hin)
}
// und zum Freigeben von Speicher dann
store(addrlist_root, address);
store(sizelist_root, size);
Ich meine, pack die Metadaten direkt in die Speicherblöcke, so dass
keine separate Allokation notwendig ist:
struct FreeBlock {
// ...hier Headerinformationen, falls du welche brauchst
struct Node in_addrlist;
struct Node in_sizelist;
};
void insertNode(struct Node* root, struct Node* node)
{
// hier nur das Einketten
node->left = root->left;
root->left = node;
}
// und zum Freigeben von Speicher dann
struct FreeBlock* p = (struct FreeBlock*) address;
p->in_addrlist.payload = address;
insertNode(addrlist_root, &p->in_addrlist);
p->in_sizelist.payload = size;
insertNode(sizelist_root, &p->in_sizelist);
VG,
Stefan
Back to de.sci.informatik.misc | Previous | Next — Previous in thread | Next in thread | Find similar
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