/SEPC_malloc

Primary LanguageCGNU General Public License v3.0GPL-3.0

TP Allocateur mémoire: malloc

Ce squelette permet d’implanter un allocateur mémoire virtuelle. Le sujet de TP expliquant le travail est diponible sur http://ensiwiki.ensimag.fr dans la page SEPC Semestre 1

TP antécédents

  • le tp mémoire allocateur physique: first fit, buddy, chainage
  • le tp mmap

Nouveauté par rapport aux TPs précédents

  • allocateur virtuelle en trois tailles, plus progressif.
  • une arena par thread
  • croissance de l’arena par thread en utilisant mmap et une structure _Thread_local
  • récursive doubling pour l’allocation des chunk et du pool principal
  • très gros (plus 128ko): mmap en direct
  • très petit pour alloc de moins de 64o, par chunk de 96o
  • buddy pour le pool principal
  • marquage des blocs (avant après) pour avoir sa vrai taille
    • un magic entier
      • utiliser LCG MMIX de Knuth (64 bits) pour générer la valeur magique à partir de l’addresse utilisée

https://en.wikipedia.org/wiki/Linear_congruential_generator

Idées d’améliorations

En faire une bibliothèque dynamique

  • capable d’être utilisée à la place du malloc de la bibliothèque C

Utiliser git bundle au lieu de Cpack

  • Rendu complet, compact et avec toutes les informations de contributions.
  • Risque de rendu vide accru, si les étudiants n’arrivent pas à faire un commit
  • peut-être plus difficile pour les Phelma qui doivent apprendre git en plus pour pouvoir rendre quelque chose ? C’est peut-être le bon TP pour commencer.

discussion avec Vincent, si il est intéréssé ?