Cette archive contient :
- le sujet du TP :
TD-TP-Memoire.pdf
- les sources d'un squelette de votre allocateur :
src/
- des tests pour votre allocateur :
src/tests/
- des exemples d'entrée pour mem_shell dans :
src/test_shell_sequences
mem.h
etmem_os.h
: l'interface de votre allocateur.mem.h
définit les fonctions utilisateur (mem_alloc
,mem_free
), alors quemem_os.h
définit les fonctions définissant la stratégie d'allocationmem_space.h
etmem_space.c
: définissent la mémoire à gérer et des fonctions utilitaires pour connaître sa taille et son adresse de début. Ces fonctions seront utilisées dans la fonctionmem_init
.mem_shell.c
; un interpreteur simple de commandes d'allocation et de libération vous permettant de tester votre allocateur de manière intéractive -mem.c
: le squelette de votre allocateur, le fichier que vous devez modifier.mem_malloc_stub.h
etmem_malloc_stub.c
: utilisés pour la génération d'une bibliothèque permettant de remplacer lalibc
et de tester votre allocateur avec des programmes existant standard- des fichiers de test :
test_*.c
Makefile
simple- des exemples de séquences courtes d'allocations et de libérations
alloc*.in
danssrc/test_shell_sequences
. Vous pouvez les passer en redirigeant l'entrée de votre memshell.
Le projet se compile simplement en utilisant la commande:
make
On peu tourner les tests en faisant (s'arrête au premier échec):
make test
Execute tous les tests et affiche un résumé :
make test_all
On peut nettoyer en faisant:
make clean
On peu générer une archive des sources avec :
make archive
struct fb {
size_t size;
struct fb * next;
};
struct bb {
size_t size;
struct bb * next;
};
Allocation de n
octets de memoire
-
n
octets de disponible dans l'une des instances de fblibre
:- cree un nouveau bb
busy
, avec adresse delibre
(busy = f
) - le lie correctement entre les bb existant
- deplace
libre
(libre += busy->size
)
- si la memoire apres
struct bb *
- cree un nouveau bb