PSU_2016_malloc

Mathilde Delmon

Walter Bonetti

Heap Manager

Heap Manager

HEAP SIZE = n * pagesize

size = pagesize

size = pagesize

Chunk

CHUNK

HEAP SIZE = malloc(size + chunk_size)

Chunk

FREE

SIZE

NEXT

PREV

MAGIC_NUMBER

FREE

FREE(32) = 0xABABABAB - FREE(64) = 0xABABABABABABABAB

NOFREE(32) = 0xBABABABA - FREE(64) = 0xBABABABABABABABA

CHECK DF

CHECK IP

*ALLOC

Malloc

HEAPMANAGER

  1. fix_size
  2. check_overflow
  3. chunk_finder

Ptr * Memory

CALLOC

HEAPMANAGER

  1. fix_size
  2. check_overflow
  3. chunk_finder
  1. Ptr * Memory
  2. memset 0

Realloc

HEAPMANAGER

  • cas size < current
  • cas size > current :(free)
  1. Ptr * Memory

Free

Fragmentation

  • Split
  • Merge

split

merge

Pistes d'améliorations

Améliorations - [PROS] / (ConS)

  • Free liste [memory](low speed update)
  • RBTree [speed](more memory)

Merci

Made with Slides.com