Mémoire virtuelle :
1) permet de mapper un grand espace d'adressage virtuel sur une plus petite quantité de mémoire physique, l'excédent étant "échangé" sur le disque, ou SSD, ou prospectivement sur NVRAM et d'autres dispositifs.
2) permet de mapper un espace d'adressage virtuel plus grand (par exemple, 64 bits) sur un espace d'adressage physique plus petit (par exemple, 32 ou 64 bits).
3) permet à un espace d'adressage virtuel plus petit (par exemple 32 bits) d'être mappé sur un espace d'adressage physique plus grand (par exemple 40 bits), et permet ainsi aux anciennes applications de tirer parti de plus de DRAM physique.
4) permet à la mémoire physique, fragmentée et non contiguë dans l'espace d'adressage physique, d'être rendue contiguë dans l'espace d'adressage virtuel.
5) permet de donner aux processus leurs propres espaces d'adresses virtuelles, et donc de les isoler les uns des autres.
6) permet à différentes adresses virtuelles qui partagent les mêmes valeurs de données d'allouer une seule page physique.
Cela peut se produire au sein d'un seul processus ou d'un seul système d'exploitation - la plupart des systèmes d'exploitation dérivés d'UNIX BSD ont une seule page de zéros en lecture seule, qui peut être mappée dans n'importe quelle page virtuelle remplie de zéros, typiquement COW (Copy On Write - lecture seule de zéros, écritures piégées et page non partagée et rendue inscriptible).
Cela peut se produire entre les processus - par exemple, UNIX fork() crée des processus enfants qui partagent la quasi-totalité de la mémoire virtuelle à la manière d'un COW.
Cela peut se produire entre les systèmes d'exploitation - par exemple, les systèmes d'exploitation invités sur une machine virtuelle hôte peuvent avoir des pages dédupliquées, des COW partagés, etc.
7) la mémoire virtuelle peut permettre à des parties de l'espace d'adressage virtuel d'être mappées à des fichiers, ou à la mémoire mappée sur d'autres processeurs, que ce soit dans le même système multiprocesseur ou à travers l'Internet.