Skip to main content

Qu'est-ce qu'une liste gratuite?

Une liste gratuite est une structure de données qui contient les adresses des emplacements de mémoire de l'ordinateur qui sont disponibles pour une utilisation par un programme en cours d'exécution lors de l'utilisation d'allocation de mémoire dynamique. La liste devient nécessaire lorsqu'un programme doit allouerL'espace d'une zone de mémoire libre appelée le tas. L'implémentation d'une liste gratuite peut être une simple liste liée ou peut être une structure de données plus complexe telle queune arborescence de tri. La plupart des langages de programmation informatique de haut niveau gèrent automatiquement la liste gratuite, supprimant le besoin de gestion manuelle.

Lorsqu'un programme a besoin d'espace pour stocker des informations pendant l'exécution du programme, ildoit demander une quantité spécifique de mémoire du système d'exploitation sous-jacent. Les emplacements des blocs de mémoire qui peuvent être utilisés sont stockés dans la liste gratuite. Pour que l'allocation réussisse, la quantité de mémoire demandéedoit être disponible dans un ou plusieurs de ces blocs. Lorsqu'un pointeur vers une location de mémoire appropriéen est renvoyé, cet élément de la liste est supprimé.

Une fois un programme terminé à l'aide de la mémoire, il peut le désalouer. Cela implique de passer le pointeur à la mémoireBloquez dans la liste gratuite, où elle deviendra disponible la prochaine fois qu'une allocation sera tentée. Il est possible que l'allocation de mémoire échoue car la liste est vide ou car il n'y a pas de blocs de mémoire disponibles suffisamment grands pour réaliser ledemande du programme.

La forme la plus simple de gestion de la mémoire est appelée le premier système d'ajustement. Ce système maintient une seule liste d'emplacements de mémoire libre. Lorsqu'une demande de mémoire est envoyée,La liste est traversée et le premier bloc suffisamment grand est retourné. Si le bloc est plus du double de la taille demandée, il est coupé de moitié et que la moitié inutilisée est ajoutée à la liste. Cette méthode échange un codage simple pour le risque d'avoir une mémoire fragmentéedes domaines qui pourraient ne jamais être retournés à la liste.

Une forme différente de gestion de la mémoire est appelée le système d'allocation de copains. Contrairement au premier système d'ajustement, l'allocation de copain conserve plusieurs listes gratuites, chacune tenuedes blocs ouverts d'une seule taille particulière. Cela signifie que lorsqu'une demande d'allocation est reçue, la liste qui contient des blocs qui sont juste suffisamment grands pour remplir la demande est consultée et un emplacement ouvert est retourné. Si aucun nonDes blocs gratuits qui sont inférieurs à deux fois la taille demandée sont disponibles, un bloc plus grand est divisé en deux pour répondre aux exigences.

Le terme liste gratuit peut se référer à une seule liste liée d'adresses mémoire,ou il peut se référer à un type de structure de données beaucoup plus complexe. Différents types d'arbres de nature, s'ils sont restés simples et équilibrés, peuvent aider à augmenter la vitesse de trouver des blocs de mémoire ouverts au détriment de la complicationle code source. Une liste liée peut être plus lente qu'une arborescence de tri spécialisée mais crée un programmele code qui est beaucoup plus facile à lire, à déboguer et à modifier.

Certains langages de programmation et systèmes d'exploitation utilisent un mécanisme spécial appelé collection Garbage. Il s'agit d'un processus qui peut aider à prendre les différentes entrées sur unListe gratuite et consolider les espaces libres afin qu'ils soient contigus. Cela a pour effet de prévenir la fragmentation et de permettre à des blocs de mémoire plus grands soit alloués.