Adresse virtuelle vs adresse physique : comprendre la différence

Virtual address vs Physical address

Les adresses virtuelles et les adresses physiques sont deux types d’adresses qui définissent les emplacements uniques de la mémoire. L’utilisateur peut voir l’adresse virtuelle, mais il ne peut pas accéder directement à l’adresse physique. L’adresse virtuelle est utilisée comme référence pour accéder à l’adresse physique dans la mémoire du système d’exploitation. Il existe plusieurs différences importantes entre les adresses virtuelles (ou logiques) et les adresses physiques.

L’une des principales différences est que l’adresse virtuelle est générée par le processeur (CPU) lors de l’exécution d’un programme, tandis que l’adresse physique correspond à un emplacement réel dans la mémoire. Découvrons plus en détail les différences entre ces deux types d’adresses.

Table des matières

  1. Que signifie une adresse virtuelle ?
  2. Adresse physique dans un système d’exploitation
  3. Qu’est-ce que l’unité de gestion de la mémoire (MMU) ?
  4. Différence entre une adresse virtuelle et une adresse physique
  5. Mappage des adresses virtuelles vers les adresses physiques

Que signifie une adresse virtuelle?

En informatique, une adresse virtuelle est un nombre binaire stocké dans la mémoire virtuelle, différent d’une adresse physique. Elle permet à un processus d’utiliser un emplacement logique dans la mémoire principale de l’ordinateur. Lorsque la mémoire principale disponible est insuffisante, le système transfère une partie des données vers un périphérique de stockage interne, tel qu’un SSD ou un disque dur.

Selon Techopedia :

« Une adresse virtuelle en mémoire est un pointeur ou un repère vers un espace mémoire qu’un système d’exploitation autorise un processus à utiliser. L’adresse virtuelle pointe vers un emplacement de stockage principal qu’un processus peut utiliser indépendamment des autres processus. »

Les adresses virtuelles et physiques sont différentes sur les systèmes équipés d’un mécanisme de gestion de la mémoire. L’unité de gestion de la mémoire (MMU) traduit les adresses virtuelles en adresses physiques. Grâce à ce mécanisme, le système d’exploitation peut attribuer une grande quantité de mémoire virtuelle à un processus, même si la mémoire physique disponible est limitée.

Avec les adresses virtuelles, les systèmes modernes peuvent déplacer les données en mémoire physique sans modifier les adresses utilisées par les applications. Cela améliore la flexibilité et permet de répartir les données entre différents types de stockage.

Adresse physique dans un système d’exploitation

Une adresse physique représente l’emplacement réel des données dans la mémoire physique de l’ordinateur. L’utilisateur ne peut pas accéder directement à cet emplacement ; il doit utiliser une adresse logique ou virtuelle.

Lorsqu’un programme est exécuté, il génère des adresses virtuelles. Cependant, le processeur ne peut exécuter le programme qu’en utilisant des adresses physiques. C’est pourquoi il est nécessaire de convertir les adresses logiques (ou virtuelles) en adresses physiques à l’aide de la MMU (Memory Management Unit).

L’ensemble des adresses physiques constitue l’espace d’adressage physique, tandis que l’ensemble des adresses virtuelles constitue l’espace d’adressage virtuel.

La MMU établit la correspondance entre une adresse virtuelle et son adresse physique correspondante. L’utilisateur ne peut donc pas accéder directement à une adresse physique ; il doit passer par l’adresse virtuelle associée.

Qu’est-ce que l’unité de gestion de la mémoire (MMU)?

L’unité de gestion de la mémoire (MMU) est chargée d’effectuer, au moment de l’exécution, la conversion entre les adresses logiques et les adresses physiques.

Le système d’exploitation gère ce processus de correspondance et déplace les données entre la mémoire principale et le disque lorsque cela est nécessaire. La MMU met à jour les espaces mémoire utilisés et disponibles en s’appuyant sur deux registres :

• Le registre de base (Base Register) : contient l’adresse physique de départ d’un processus.
• Le registre limite (Limit Register) : définit la limite de l’espace mémoire alloué au processus par rapport au registre de base.

Différence entre une adresse virtuelle et une adresse physique

Les adresses virtuelles et physiques permettent toutes deux de localiser les données en mémoire, mais elles remplissent des rôles différents.

Adresse virtuelleAdresse physique
Générée par le processeur lors de l’exécution d’un programme.Représente l’emplacement réel des données dans la mémoire.
Visible et utilisée par les applications.Non directement accessible par les applications.
Doit être convertie en adresse physique via la MMU.Utilisée par le matériel pour accéder aux données.
Appartient à l’espace d’adressage virtuel.Appartient à l’espace d’adressage physique.
Offre une meilleure gestion de la mémoire et une isolation des processus.Correspond à la mémoire physique installée sur la machine.

Mappage des adresses virtuelles vers les adresses physiques

La mémoire est composée d’un grand nombre d’adresses. Le processeur (CPU) récupère les adresses des instructions à partir des fichiers du programme, puis les associe à des emplacements mémoire spécifiques.

Le liaison d’adresses (Address Binding) est le processus qui consiste à établir une correspondance entre un espace d’adressage et un autre. Il existe trois méthodes principales de liaison d’adresses :

1. Liaison au moment de la compilation (Compile Time)
Si l’emplacement mémoire du programme est connu lors de la compilation, le compilateur peut générer directement des adresses absolues. Les adresses physiques sont alors déterminées pendant la compilation.

2. Liaison au moment du chargement (Load Time)
Si l’emplacement mémoire du programme n’est pas connu lors de la compilation, des adresses relogeables sont générées. Le chargeur (Loader) les convertit ensuite en adresses absolues en ajoutant l’adresse de base du processus à l’adresse virtuelle.

3. Liaison au moment de l’exécution (Execution Time)
Pendant l’exécution, le processeur traite les instructions en temps réel. Le système peut alors allouer ou déplacer de la mémoire selon les besoins. Le mappage des adresses permet au processus d’être déplacé d’un emplacement mémoire à un autre sans perturber son exécution.

Conclusion

En résumé, une adresse virtuelle sert de référence pour accéder à une adresse physique. Les utilisateurs et les applications utilisent des adresses logiques ou virtuelles, tandis que le matériel fonctionne avec des adresses physiques.

L’ensemble des adresses physiques est appelé espace d’adressage physique, tandis que l’ensemble des adresses virtuelles est appelé espace d’adressage virtuel.

Selon la méthode de liaison d’adresses utilisée (compilation, chargement ou exécution), les adresses virtuelles et physiques peuvent être identiques ou différentes. Les systèmes modernes utilisent principalement le mappage dynamique assuré par la MMU afin d’améliorer les performances, la sécurité et la gestion de la mémoire.