View Full Version : Help!!! Programma per gestione memoria
tymmy1983
18-06-2007, 22:07
:( Ciao ho questo problemino da risolvere ma nn so venirne a capo, qualcuno potrebbe darmi una mano almeno a fare la funzione MyMalloc...l'unica cosa ke posso aggiungere è ke la funzione nn deve realmente allocare ma solo segnare i blocchi usati e quelli nn usati. L'allocazione può essere fatta solo per la struttura dati ke si ritiene più idonea. Grazie in anticipo.
:( Ciao ho questo problemino da risolvere ma nn so venirne a capo, qualcuno potrebbe darmi una mano almeno a fare la funzione MyMalloc...l'unica cosa ke posso aggiungere è ke la funzione nn deve realmente allocare ma solo segnare i blocchi usati e quelli nn usati. L'allocazione può essere fatta solo per la struttura dati ke si ritiene più idonea. Grazie in anticipo.Ci sono sicuramente molti modi .... qui si tratta di stabilire la tecnica e l'algoritmo per mantenere in modo valido ed efficiente le informazioni sulla memoria allocata/libera.
Una possibilità è questa: la quantità totale di memoria (8 MiB) la suddividi in blocchi della dimensione che puoi scegliere tu (ad esempio, come nel sistema di paging dei processori x86, 4 KiB cioè 4096 bytes). Quindi hai 2048 blocchi.
Ogni blocco lo rappresenti con 1 byte di memoria, pertanto devi allocare un vettore di 2048 byte. Ogni byte indica se il blocco è libero o occupato, ad esempio: 0 libero, 1 occupato (primo blocco), 2 occupato (blocchi successivi).
La differenziazione tra 1 e 2 serve poi semplicemente per poter liberare correttamente la memoria (se tu hai cinque valori 1 contigui come faresti a sapere se sono due blocchi da 2 e 3 o un blocco unico da 5???).
A quel punto è facile, quando viene chiesto di allocare un tot di memoria, tu calcoli quanti blocchi sono necessari e poi cerchi nella tabella la prima sequenza di 0 che soddisfa la richiesta.
Per la liberazione della memoria ti devono dare un indirizzo che corrisponde al primo blocco, ad esempio (qui si potrebbe discutere su cosa si deve poter passare).
Essendo un esercizio di gestione "fittizia" della memoria, credo che possa andare bene.
tymmy1983
19-06-2007, 09:14
Grazie dellle informazioni, in effetti ripensando posso fare come dici tu, ora provo e poi vediamo cosa esce fuori. grazie
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.