Définition - Que signifie l'allocation de mémoire contiguë ?
L'allocation de mémoire contiguë est un modèle d'allocation de mémoire classique. Ici, un système attribue des blocs de mémoire consécutifs (c'est-à-dire des blocs de mémoire ayant des adresses consécutives) à un processus.
L'allocation de mémoire contiguë est l'une des plus anciennes méthodes d'allocation de mémoire. Voici comment cela fonctionne : lorsqu'un processus doit s'exécuter, la mémoire est demandée par le processus. La taille du processus est comparée à la quantité de mémoire principale contiguë disponible pour exécuter le processus.
Si une mémoire contiguë suffisante est trouvée, la mémoire est allouée et le processus commence son exécution. Sinon, le processus est ajouté à une file d'attente de processus en attente jusqu'à ce qu'une mémoire contiguë libre suffisante soit disponible.
Definir Tech explique l'allocation de mémoire contiguë
L'allocation de mémoire contiguë peut être implémentée dans les systèmes d'exploitation à l'aide de deux registres, appelés registres de base et de limite.
Lorsqu'un processus s'exécute dans la mémoire principale, son registre de base contient l'adresse de départ de l'emplacement mémoire où le processus s'exécute, tandis que la quantité d'octets consommés par le processus est stockée dans le registre de limite.
Un processus ne fait pas directement référence à l'adresse réelle d'un emplacement mémoire correspondant. Au lieu de cela, il utilise une adresse relative par rapport à son registre de base. Toutes les adresses référencées par un programme sont considérées comme des adresses virtuelles. Le CPU génère l'adresse logique ou virtuelle, qui est convertie en adresse réelle à l'aide de l'unité de gestion de la mémoire (MMU).
Le registre d'adresses de base est utilisé pour la traduction d'adresses par la MMU. Ainsi, une adresse physique est calculée comme suit :
Adresse physique = adresse du registre de base + adresse logique / adresse virtuelle
L'adresse de tout emplacement mémoire référencé par un processus est vérifiée pour s'assurer qu'elle ne fait pas référence à une adresse d'un processus voisin. Cette sécurité de traitement est gérée par le système d'exploitation sous-jacent.
Avantages et inconvénients de l'allocation de mémoire contiguë
Une autre façon de comprendre l'allocation de mémoire continue est de la comparer à sa méthode opposée : l'allocation de mémoire non contiguë. Dans l'allocation de mémoire non contiguë, la mémoire n'a pas à être affectée dans des blocs d'adresses contigus.
Contrairement à l'allocation de mémoire non contiguë, l'allocation de mémoire contiguë présente certains avantages distincts. Elle a tendance à être plus rapide à exécuter, plus facile à gérer pour le système d'exploitation et implique souvent moins de frais généraux.
Cependant, l'allocation de mémoire contiguë présente également des inconvénients. L'un des principaux est que la mémoire peut être gaspillée de cette manière, si les plus petites quantités de mémoire ne sont pas utilisées en raison du besoin de blocs de mémoire contigus. En outre, les processus peuvent attendre plus longtemps pour l'exécution, car le bloc contigu n'est pas facilement accessible.
Allocation de pile et de tas
L'allocation de mémoire contiguë est par ailleurs intéressante dans le contexte de diverses techniques d'allocation de mémoire. Par exemple, les experts comparent souvent deux types d'allocation de mémoire appelés "allocation de pile" et "allocation de tas".
Dans l'allocation de pile, l'allocation de mémoire est pré-organisée et implémentée lors de la compilation, où l'allocation de tas est effectuée plus tard au moment de l'exécution.
Il est important de noter que l'allocation de pile prend souvent la forme d'allocation de mémoire contiguë, où l'allocation de mémoire est affectée par blocs. En revanche, dans l'allocation de tas, l'allocation de mémoire contiguë est difficile, car le système doit trouver non seulement une mémoire suffisante, mais également une mémoire qui se trouve dans un bloc contigu suffisamment grand. Par conséquent, l'allocation de tas est fréquemment une allocation de mémoire non contiguë.
Les experts parlent aussi des méthodes d'allocation de mémoire statique et dynamique et de la façon de les implémenter en utilisant des méthodes d'allocation de mémoire contiguës ou non contiguës.