Fragmentation (informatique)

Un article de Wikipédia, l'encyclopédie libre.

Pour les articles homonymes, voir Fragmentation.

En informatique, la fragmentation peut désigner plusieurs concepts :

Sommaire

[modifier] La fragmentation d'un disque dur

[modifier] Principe de fragmentation

Le disque dur d'un ordinateur est divisé en secteurs et le système d'exploitation les rassemble pour former des clusters (blocs). Ainsi, un fichier est contenu sur un nombre entier de clusters : le dernier cluster n'est pas toujours entièrement rempli de données.

Chaque fichier utilise donc plusieurs clusters, l'adresse de ces clusters est conservée par le système d'exploitation dans la Master File Table (MFT), ce qui lui permet de retrouver l'adresse physique du fichier sur le disque dur. Si les clusters contenant le fichier sont contigus, celui-ci n'est pas fragmenté. Toutefois, en pratique, les clusters d'un fichier sont généralement éparpillés par groupes, d'où la fragmentation du fichier.

[modifier] Analogie

Reprenons l'exemple de Roberto Di Cosmo[1], en simplifiant.

Assimilons le disque dur à une grande armoire à tiroirs, tous de même taille, dans laquelle on rangerait des dossiers.

Au départ, tous les tiroirs sont vides, et la secrétaire peut remplir les premiers tiroirs sans problème. Des dossiers sont retirés, ce qui amène des trous dans la rangée des tiroirs. Un problème se pose alors lorsqu'un dossier est trop grand pour rentrer intégralement dans un des emplacements vides. Le dossier est alors séparé en plusieurs morceaux puis réparti dans des cases vides.

Maintenant, si la secrétaire doit aller chercher ce dossier, elle doit aller chercher les différentes parties du dossier à des endroits différents, ce qui prend plus de temps que si l'intégralité du dossier était stockée au même endroit. Pour y remédier, il suffit que, régulièrement, quelqu'un s'occupe de réorganiser toute l'armoire en rassemblant les éléments de chaque dossier, ce qu'on appelle la défragmentation.

Ce mode de fonctionnement est actuellement utilisé par les ordinateurs fonctionnant sous Microsoft Windows, plus précisément, c'est le mode de fonctionnement des systèmes de fichiers NTFS.

[modifier] La fragmentation selon le système d'exploitation

[modifier] Le cas des dérivés d'UNIX

Tous les systèmes Unix ont la même gestion de la fragmentation. Le noyau calcule le nombre de blocs nécessaires au stockage de chaque fichier sur le disque dur. Si un tel nombre de clusters libres contigus est trouvé sur le disque, il stocke le fichier sur ces clusters, contigus, et le fichier n'est pas fragmenté. S'il ne trouve pas assez de clusters libres contigus, il scinde le fichier en plusieurs groupe de clusters et éparpille ces groupes sur le disque dur : il tente de minimiser le nombre de groupes et par conséquent remplit les plus grand espaces de clusters vides contigus en premier.

[modifier] Le cas de Microsoft Windows

Le noyau NT essaie de combler les trous dans le sens où il fragmente le fichier pour ne pas le laisser au début du disque des zones avec des clusters libres.

[modifier] Dans quels cas survient la fragmentation ?

Dans les systèmes Unix, la fragmentation fait suite à un espace disque trop faible.

Pour Microsoft Windows, la fragmentation trouve sa source dans les multiples suppressions, modifications, copies de fichiers sur le disque dur, qui favorisent l'apparition de zones de clusters libres, et par conséquent la fragmentation.

[modifier] Atteinte sur les performances

Si la fragmentation est si problématique, c'est parce qu'elle engendre des problèmes au niveau physique.

Lorsqu'un fichier n'est pas fragmenté, la tête de lecture du disque dur n'a pas besoin de se déplacer, ou très peu, puisque les clusters sont les uns à la suite des autres.

À l'inverse, si le fichier est fragmenté, la tête de lecture va faire de multiples aller-retours pour lire chacun des groupes de clusters : se déplacer prend du temps, donc plus le fichier est fragmenté, plus le temps pour accéder à son contenu est élevé.

[modifier] Fragmentation de la mémoire vive

Exemples de techniques pour réduire la fragmentation :

L'architecture interne de malloc a été conçue pour réduire la fragmentation de la mémoire vive. Il y a plusieurs pools de tampon, chaque pool correspond à une taille de tampon différente. Il y aura un pool pour les tampons de moins de 100 octets, un autre pour les tampons de 100 à 1000 octets.

[modifier] Fragmentation de paquets

[modifier] Voir aussi

[modifier] Références

  1. Article de R. Di Cosmo expliquant la fragmentation d'un disque dur par l'exemple d'une armoire à tiroirs

[modifier] Articles connexes