Changes between Version 11 and Version 12 of TME2-2014


Ignore:
Timestamp:
Feb 7, 2013, 2:15:25 PM (11 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TME2-2014

    v11 v12  
    2121
    2222Pour l'allocation dynamique:
    23  * malloc : Allocation dynamique dans le tas du système
    24  * free : libération
     23 * kmalloc : Allocation dynamique dans le tas du système
     24 * kfree : libération
    2525
    2626= Gestion de la mémoire dynamique
     
    6060== Définition des  structures de données
    6161
    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.
     62Nous 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. 
    6363
    6464{{{
     
    8686
    8787{{{
    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);
     88error_t kmalloc_init (void *start, void *limit);
     89void* kmalloc(size_t size);
     90void  kfree(void *ptr);
    9591}}}
    9692
     
    9894
    9995Le 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.
    10296
    10397Votre 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.
     
    110104}}}
    111105
    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.
     106Vous 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.
    113107
    114108**Vous écrirez un programme de test dans le fichier main.c mettant en évidence les cas de fonctionnement.**
     
    117111
    118112{{{
    119 void heap_print(struct heap_s *mgr);
     113void kmalloc_print(void);
    120114}}}