Changes between Version 11 and Version 12 of TME2-2014
- Timestamp:
- Feb 7, 2013, 2:15:25 PM (12 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TME2-2014
v11 v12 21 21 22 22 Pour l'allocation dynamique: 23 * malloc : Allocation dynamique dans le tas du système24 * free : libération23 * kmalloc : Allocation dynamique dans le tas du système 24 * kfree : libération 25 25 26 26 = Gestion de la mémoire dynamique … … 60 60 == Définition des structures de données 61 61 62 Nous allons représenter l'allocateur mémoire et la description de la zone mémoire à gérer par la structure heap_s voici sa définition en C. Le lock permet de séquencialiser les accès concurrents. Pour le test de votre API vous utiliserez un spinlock des PThreads. 62 Nous allons représenter l'allocateur mémoire et la description de la zone mémoire à gérer par la structure heap_s voici sa définition en C. Le lock permet de séquencialiser les accès concurrents. Pour le test de votre API vous utiliserez un spinlock des PThreads. 63 63 64 64 {{{ … … 86 86 87 87 {{{ 88 error_t heap_init(struct heap_s *heap, 89 uint32_t *start, 90 uint32_t *limit); 91 void* heap_malloc(struct heap_s *heap, 92 size_t size); 93 void heap_free (struct heap_s *heap, 94 void *ptr); 88 error_t kmalloc_init (void *start, void *limit); 89 void* kmalloc(size_t size); 90 void kfree(void *ptr); 95 91 }}} 96 92 … … 98 94 99 95 Le travail à réaliser est d'implémenter cette API et la tester par une application de test. 100 101 le contexte de l'allocateur est representé par la structure heap_manger_s, les fonctions de l'allocateur peuvent opérer sur plusieurs contextes. Autrement dit, On peut gérer plusieurs zone mémoire avec les mêmes fonctions de l'API heap_manager à condition de disposer d'autant de descripteur heap_manger_s.102 96 103 97 Votre application de teste doit déclarer deux variables globales, une de type heap_s et l'autre est un tableau d'octets représentant la mémoire à gérer par le heap_manager. … … 110 104 }}} 111 105 112 Vous devez donc écrire les trois fonctions de l'API dans le fichier heap_manager.c et leur prototype dans le fichier heap_manager.h. En cas d'échec du malloc, vous devrez faire un parcours de la zone mémoire et fusionner les zones libres contiguës.106 Vous devez donc écrire les trois fonctions de l'API dans le fichier kmalloc.c et leur prototype dans le fichier kmalloc.h. En cas d'échec du malloc, vous devrez faire un parcours de la zone mémoire et fusionner les zones libres contiguës. 113 107 114 108 **Vous écrirez un programme de test dans le fichier main.c mettant en évidence les cas de fonctionnement.** … … 117 111 118 112 {{{ 119 void heap_print(struct heap_s *mgr);113 void kmalloc_print(void); 120 114 }}}