Fragmentation (informatique)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Fragmentation.

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

La fragmentation d'un disque dur[modifier | modifier le code]

Principe de fragmentation[modifier | modifier le code]

Exemple de processus de fragmentation
Le fichier B est supprimé, ce qui laisse un "trou"
Le fichier F s'est étendu se retrouve en deux parties.

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.

Analogie[modifier | modifier le code]

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.

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

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

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 groupeS 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 grands espaces de clusters vides contigus en premier.

Le cas de Microsoft Windows[modifier | modifier le code]

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

Cas dans lesquels survient la fragmentation[modifier | modifier le code]

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. Elle est donc fréquente sur les Systemes Windows car il est courant pour un utilisateur de manipuler des fichiers.

Atteinte sur les performances[modifier | modifier le code]

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é.

Fragmentation de la mémoire vive[modifier | modifier le code]

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 à 1 000 octets.

Fragmentation de paquets[modifier | modifier le code]

Plus connu sous le nom de Teardrop Attack[2], Bonkou encore Boink, cette attaque utilise une faille propre à certaines piles TCP/IP. Cette vulnérabilité concerne la gestion de la fragmentation IP. Ce problème apparaît lorsque la pile reçoit le deuxième fragment d’un paquet TCP contenant comme donnée le premier fragment. La pile TCP/IP peut s’avérer incapable de gérer cette exception et le reste du trafic. Cette faille est très connue sur les piles de Windows 95 et 98.

Voir aussi[modifier | modifier le code]

Références[modifier | modifier le code]

  1. Article de R. Di Cosmo expliquant la fragmentation d'un disque dur par l'exemple d'une armoire à tiroirs
  2. Teardrop Attack sur le site commentcamarche

Articles connexes[modifier | modifier le code]