Qu'est-ce que Fragmentation ?

Phénomène où, à force d'allocations et de libérations, la mémoire libre se morcelle : bien que le total soit suffisant, on ne peut plus allouer un grand bloc contigu.

Nom japonais: 断片化

« Fragmentation » apparaît dans 2 questions d'entraînement réparties sur 2 thèmes, dont Éditeurs de liens, chargeurs et exécutables, Hiérarchie mémoire.

Domaine: Éditeurs de liens, chargeurs et exécutables

S'entraîner : questions sur Fragmentation

À force de répéter malloc et free, il peut devenir impossible d'allouer un grand bloc d'un seul tenant alors que la mémoire libre totale est suffisante. Comment appelle-t-on ce phénomène ?

  1. AFuite de mémoire
  2. BFragmentation
  3. CDébordement de pile
Afficher la réponse et l'explication

Réponse : B. Fragmentation

En répétant allocations et libérations de zones de tailles différentes, de petits espaces libres s'éparpillent entre les zones utilisées. Même si l'espace libre total est grand, sans grand espace libre contigu, une grande allocation échoue. C'est la fragmentation. Les allocateurs mémoire la réduisent en gérant séparément les tailles ou en fusionnant les espaces libres adjacents. Il faut y être particulièrement attentif dans les systèmes embarqués fonctionnant longtemps.

Quelle combinaison d’avantage et d’inconvénient de l’utilisation de grandes pages (huge pages) est correcte ?

  1. AAvantage : baisse du taux de défauts de cache ; inconvénient : hausse des défauts de TLB
  2. BAvantage : disparition des défauts de page ; inconvénient : consommation accrue d’espace disque
  3. CAvantage : baisse des défauts de TLB ; inconvénient : fragmentation interne accrue
Afficher la réponse et l'explication

Réponse : C. Avantage : baisse des défauts de TLB ; inconvénient : fragmentation interne accrue

Avec de grandes pages, une seule entrée du TLB traduit une zone étendue, ce qui réduit fortement les défauts de TLB pour les programmes manipulant de gros volumes de données. En contrepartie, même une petite quantité de données est allouée par grande page, ce qui augmente les zones inutilisées (fragmentation interne) et réduit la souplesse de l’allocation mémoire. Les défauts de TLB diminuent au contraire, et le taux de défauts de cache ne dépend pas directement de la taille de page. Les défauts de page ne disparaissent pas non plus.

« Fragmentation » dans les explications

Questions mentionnant « Fragmentation » (2)

  1. À force de répéter malloc et free, il peut devenir impossible d'allouer un grand bloc d'un seul tenant alors que la mémoire libre totale est suffisante. Comment appelle-t-on ce phénomène ?
  2. Quelle combinaison d’avantage et d’inconvénient de l’utilisation de grandes pages (huge pages) est correcte ?

Termes associés

TLB (tampon de traduction d'adresses) ASLR Bibliothèque partagée Bibliothèque statique Chargeur (loader) Code indépendant de la position Décoration de noms (name mangling) Éditeur de liens (linker) Éditeur de liens dynamique Édition de liens dynamique

Retour au glossaire