Fragmentation interne vs externe
La différence entre la fragmentation interne et externe est un sujet qui intéresse beaucoup ceux qui souhaitent améliorer leurs connaissances en informatique. Avant de connaître cette différence, il faut voir ce qu'est la fragmentation. La fragmentation est un phénomène qui se produit dans la mémoire des ordinateurs tels que la mémoire vive (RAM) ou les disques durs, ce qui entraîne un gaspillage et une utilisation inefficace de l'espace libre. Bien que l'utilisation efficace de l'espace disponible soit entravée, cela entraîne également des problèmes de performances. La fragmentation interne se produit lorsque l'allocation de mémoire est basée sur des partitions de taille fixe où, après qu'une application de petite taille est affectée à un emplacement, l'espace libre restant de cet emplacement est gaspillé. La fragmentation externe se produit lorsque la mémoire est allouée dynamiquement où, après le chargement et le déchargement de plusieurs emplacements ici et là, l'espace libre est distribué plutôt que d'être contigu.
Qu'est-ce que la fragmentation interne ?
Considérez la figure ci-dessus où un mécanisme d'allocation de mémoire de taille fixe est suivi. Initialement, la mémoire est vide et l'allocateur a divisé la mémoire en partitions de taille fixe. Ensuite, plus tard, trois programmes nommés A, B, C ont été chargés sur les trois premières partitions tandis que la 4ème partition est encore libre. Le programme A correspond à la taille de la partition, il n'y a donc pas de gaspillage dans cette partition, mais le programme B et le programme C sont plus petits que la taille de la partition. Ainsi, dans la partition 2 et la partition 3, il reste de l'espace libre. Cependant, cet espace libre est inutilisable car l'allocateur de mémoire n'attribue que des partitions complètes aux programmes, mais pas des parties de ceux-ci. Ce gaspillage d'espace libre est appelé fragmentation interne.
Dans l'exemple ci-dessus, il s'agit de partitions fixes de taille égale, mais cela peut même se produire dans une situation où des partitions de différentes tailles fixes sont disponibles. Habituellement, la mémoire ou l'espace le plus dur est divisé en blocs qui ont généralement la taille de puissances de 2 telles que 2, 4, 8, 16 octets. Ainsi, un programme ou un fichier de 3 octets sera affecté à un bloc de 4 octets mais un octet de ce bloc deviendra inutilisable, provoquant une fragmentation interne.
Qu'est-ce que la fragmentation externe ?
Considérez la figure ci-dessus où l'allocation de mémoire est effectuée dynamiquement. Dans l'allocation de mémoire dynamique, l'allocateur n'alloue que la taille exacte nécessaire pour ce programme. La première mémoire est entièrement gratuite. Ensuite, les programmes A, B, C, D et E de différentes tailles sont chargés les uns après les autres et ils sont placés en mémoire de manière contiguë dans cet ordre. Plus tard, le programme A et le programme C se ferment et ils sont déchargés de la mémoire. Il y a maintenant trois zones d'espace libre dans la mémoire, mais elles ne sont pas adjacentes. Maintenant, un gros programme appelé programme F va être chargé mais aucun des blocs d'espace libre n'est suffisant pour le programme F. L'ajout de tous les espaces libres est certainement suffisant pour le programme F, mais en raison du manque de contiguïté, cet espace est inutilisable pour le programme F. C'est ce qu'on appelle la fragmentation externe.
Quelle est la différence entre la fragmentation interne et externe ?
• La fragmentation interne se produit lorsqu'une technique d'allocation de mémoire à taille fixe est utilisée. La fragmentation externe se produit lorsqu'une technique d'allocation de mémoire dynamique est utilisée.
• La fragmentation interne se produit lorsqu'une partition de taille fixe est assignée à un programme/fichier avec moins de taille que la partition rendant le reste de l'espace dans cette partition inutilisable. La fragmentation externe est due au manque d'espace adjacent suffisant après le chargement et le déchargement de programmes ou de fichiers pendant un certain temps, car alors tout l'espace libre est distribué ici et là.
• La fragmentation externe peut être minée par compactage où les blocs assignés sont déplacés d'un côté, de sorte qu'un espace contigu soit gagné. Cependant, cette opération prend du temps et certaines zones critiques affectées, par exemple les services système, ne peuvent pas être déplacées en toute sécurité. Nous pouvons observer cette étape de compactage effectuée sur les disques durs lors de l'exécution du défragmenteur de disque sous Windows.
• La fragmentation externe peut être évitée par des mécanismes tels que la segmentation et la pagination. Ici, un espace de mémoire virtuelle contigu logique est donné alors qu'en réalité les fichiers/programmes sont divisés en parties et placés ici et là.
• La fragmentation interne peut être mutilée en ayant des partitions de plusieurs tailles et en attribuant un programme basé sur le meilleur ajustement. Cependant, la fragmentation interne n'est toujours pas complètement éliminée.
Résumé:
Fragmentation interne vs externe
La fragmentation interne et la fragmentation externe sont des phénomènes où la mémoire est gaspillée. La fragmentation interne se produit dans l'allocation de mémoire de taille fixe, tandis que la fragmentation externe se produit dans l'allocation de mémoire dynamique. Lorsqu'une partition allouée est occupée par un programme inférieur à la partition, l'espace restant est gaspillé, provoquant une fragmentation interne. Lorsque suffisamment d'espace adjacent ne peut pas être trouvé après le chargement et le déchargement des programmes, en raison du fait que l'espace libre est distribué ici et là, cela provoque une fragmentation externe. La fragmentation peut se produire dans n'importe quel périphérique de mémoire tel que la RAM, le disque dur et les lecteurs Flash.