La "recherche" d'un emplacement assez grand est plutôt rapide, car en fait, elle se fait en mémoire. Explications :
* Le système de fichiers est divisé en blocs logiques, genre 1 bloc = 4 Ko. Ce qui donne, par exemple, pour une partition de 40 Go => 10 millions de blocs.
* Il y a un tableau indiquant quels blocs sont libres (1), et lesquels non (0). Ce tableau est stocké sur le disque (lu au démarrage du système, actualisé après synchronisation DD/cache) et en mémoire. 1 bit/bloc => dans notre example un tableau d'environ 1,2 Mo.
* Les algorithmes les plus simples font des recherches d'espace libre sur un tel tableau.
* D'autres algorithmes plus évolués stockent les emplacements d'espaces libres dans des arbres binaires, etc...
* Bien évidemment, plus le disque est rempli, plus les algorithmes ont du mal à fonctionner. Cependant, le coût d'une recherche sera toujours bien inférieur aux temps d'accès au disque (10 ms = 10 millions de cycles processeur à 1 GHz = une éternité en temps de calcul)
* Quand le disque est bien rempli, les fichiers vont de toutes facons être fragmentés.
* Petite consolation : plus tu utilises ton disque (écriture, ré-écriture de beaucoup de fichiers), plus les algorithmes auront de chance de trouver des espaces non-fragmentés pour les fichiers ré-écrits.
* Enfin, il n'existe pas d'algorithme optimal : on peut toujours trouver un type d'utilisation du disque qui sera mal géré par ton algorithme.
Conseils :
* Jouer sur la taille des blocs : si la majorité des fichiers sur une partition est de taille inférieure à 1 Ko, prendre 512 octets comme taille pour les blocs.
* Inversément si les fichiers font majoritairement plus de 1 Mo (une partition contenant vidéo et musique), prendre des gros blocs, genre 512 Ko.
* Faire plusieurs partitions, destinées à plusieurs usages, avec chacune le système de fichiers adapté (ext2, ext3, Reiser, etc...).
[^] # Re: A propos de fragmentation
Posté par Security__Watch . En réponse au journal A propos de fragmentation. Évalué à 5.
* Le système de fichiers est divisé en blocs logiques, genre 1 bloc = 4 Ko. Ce qui donne, par exemple, pour une partition de 40 Go => 10 millions de blocs.
* Il y a un tableau indiquant quels blocs sont libres (1), et lesquels non (0). Ce tableau est stocké sur le disque (lu au démarrage du système, actualisé après synchronisation DD/cache) et en mémoire. 1 bit/bloc => dans notre example un tableau d'environ 1,2 Mo.
* Les algorithmes les plus simples font des recherches d'espace libre sur un tel tableau.
* D'autres algorithmes plus évolués stockent les emplacements d'espaces libres dans des arbres binaires, etc...
* Bien évidemment, plus le disque est rempli, plus les algorithmes ont du mal à fonctionner. Cependant, le coût d'une recherche sera toujours bien inférieur aux temps d'accès au disque (10 ms = 10 millions de cycles processeur à 1 GHz = une éternité en temps de calcul)
* Quand le disque est bien rempli, les fichiers vont de toutes facons être fragmentés.
* Petite consolation : plus tu utilises ton disque (écriture, ré-écriture de beaucoup de fichiers), plus les algorithmes auront de chance de trouver des espaces non-fragmentés pour les fichiers ré-écrits.
* Enfin, il n'existe pas d'algorithme optimal : on peut toujours trouver un type d'utilisation du disque qui sera mal géré par ton algorithme.
Conseils :
* Jouer sur la taille des blocs : si la majorité des fichiers sur une partition est de taille inférieure à 1 Ko, prendre 512 octets comme taille pour les blocs.
* Inversément si les fichiers font majoritairement plus de 1 Mo (une partition contenant vidéo et musique), prendre des gros blocs, genre 512 Ko.
* Faire plusieurs partitions, destinées à plusieurs usages, avec chacune le système de fichiers adapté (ext2, ext3, Reiser, etc...).