ToOm a écrit :
Désolé mais si quelqu'un vient d'apprendre quelque chose en lisant ça, c'est inquiétant
|
C'est inquiétant que tu n'es pas compris le parallèle fait par com21 qui devrait te permettre de répondre à ta première question par toi même. Mais on pourrait le rendre un peu plus "précis".
Reprends ce même dossier, avec des feuilles éparpillées un peu partout et recherche une informations dans le sommaire qui indique le nom d'un chapitre et l'emplacement de la première page:
- Le premier paragraphe du chapitre se trouve sur la table de la cuisine.
1.- Tu vas donc jusque là, trouves le 1er chapitre (seek) et comme tu es malin du prends les 5 feuilles en dessous de celle-ci en te disant que c'est la suite (caching).
2.- Tu reviens à l'endroit où se trouve le sommaire pour trouver le 2ème paragraphe et manque de bol il est dans la chambre et pas dans les 5 feuilles que tu avais pris "au cas où" (mauvais cache hit ratio).
3.- Tu vas chercher ton chapitre dans la chambre, en prenant les 5 feuilles qui suivent (caching) ...
4.- Repeat steps 2 & 3 tant que le chapitre n'est pas complet.
Donc tu as fait des 10aines d'aller/retours pour rien car les feuilles que tu prennais "au cas où" ne correspondaient que rarement à la suite de ce que tu cherchais.
Si par contre tu avais rangé les paragraphes d'un même chapitre dans une même pile, tu n'aurais pas besoin de faire autant de déplacements "sommaire" -> "location" pour lire tout le chapitre car tu aurais déjà avec toi un nombre X de paragraphes qui suivent celui que tu étais allé chercher. -> Bon cache hit ratio -> accès plus rapide à l'information CQFD.
Maintenant pour ta deuxième question, un système de fichier (FS) dispose d'un sommaire (table d'allocation) dans lequel se trouve la position de chaque "paragraphes" (blocs) contenus dans les différents chapitres (fichiers).
Quand un FS est vide, l'OS écrit les fichiers par blocs successifs et contigus sur le disque, donc un fichier F1 de 4 blocs sera placé sur le disque de cette façon:
F1a - F1b - F1c - F1d
Lorsque le disque va lire F1a, il va cacher (lire les blocs suivant au cas où ce seraient les prochains à lire) dans une mémoire tampon. Donc quand l'OS demandera les blocs b,c et d le disque pourra les fournir sans même deplacer ses têtes (gain de temps !!!)
Imaginons que deux autres fichiers soient écrits à présent (F2 2 blocs et F3 4 blocs) celà ressemblera à ça:
F1a - F1b - F1c - F1d - F2a - F2b - F3a - F3b - F3c - F3d
Les fichiers occupent des blocs contigus, donc pas de fragmentation. Maintenant on efface F2 (donc 2 blocs passent "libres" pour le FS):
F1a - F1b - F1c - F1d - Free - Free - F3a - F3b - F3c - F3d
Le FS n'est toujours pas fragmenté car les 2 fichiers restants occupent toujours des blocs contigus. A présent on écrit un 4ème fichier de 4 blocs lui aussi ... les blocs libres sont attribués par l'OS soit:
F1a - F1b - F1c - F1d - F4a - F4b - F3a - F3b - F3c - F3d - F4c - F4d
Et voilà ... la fragmentation commence ... le fichier F4 n'occupe plus de blocs contigus, donc quand l'OS demandera au FS de lire le fichier F4, celui-ci positionnera le disque au premier bloc (F4a) puis mettra en cache les blocs suivants ... mais hélas, seul le bloc F4b sera utile dans le cache car les autres appartiennent à F3 et le disque devra donc se deplacer sur F4c pour continuer à lire F4.
C'est plus clair ?
Plus le temps passe et plus des fichiers se fragmentent, leurs blocs respectifs s'entrelacent avec ceux d'autres fichiers, le cache du disque devient de moins en moins performant et les performances s'en ressentent ... CQFD (bis).
L'opération de defrag à pour but de reordonner tous ces blocs pour que les fichiers occupent à nouveau des blocs contigus. D'autres defragmenteurs plus "poussés" travaillent aussi sur les stats d'utilisation de fichiers, leurs tailles, leurs accès pour les organiser de manière encore plus performante ...
Message édité par Deadlock le 04-02-2005 à 14:02:58
---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.