Question Définitions contradictoires de la mémoire virtuelle


Il semble qu'il y ait deux définitions de la mémoire virtuelle, et je me demande si elles décrivent toutes deux la même chose ou est-ce que deux concepts similaires mais distincts sont appelés la même chose?

Définition 1: un moyen d'étendre la RAM en utilisant le stockage secondaire

"La mémoire virtuelle est une fonctionnalité d’un système d’exploitation permettant à un ordinateur de compenser les pénuries de mémoire physique" -techtarget

"La mémoire virtuelle est une mémoire vive simulée. Lorsque vous avez épuisé toute votre mémoire vive, votre ordinateur transfère les données dans un espace vide du disque dur." -delete-computer-history

"La mémoire virtuelle est une technique qui permet l'exécution de processus qui ne sont pas complètement disponibles en mémoire" -tutorialspoint

Définition 2: système par lequel la mémoire est adressée

"La mémoire virtuelle est une technique de gestion de la mémoire ... Elle mappe les adresses mémoire utilisées par un programme, appelées adresses virtuelles, en adresses physiques dans la mémoire de l'ordinateur." -Wikipédia

et la mémoire virtuelle est ce qui est responsable de donner à un programme son propre espace d'adressage, donc il peut supposer que son début est à l'adresse 0x00

Question: suis-je confus? Comment ces définitions sont-elles compatibles?


2
2018-01-06 06:59


origine




Réponses:


La mémoire virtuelle est toute mémoire qui n'est pas nécessairement mappé un à un à la mémoire physique. Il décrit généralement un concept ou une architecture et implique une interface pour l'utiliser.

Donc, fondamentalement, les deux définitions que vous avez énoncées peuvent s’appliquer: il peut s’agir d’une mémoire stockée sur d’autres supports que votre mémoire RAM principale, et certaines adresses ne correspondent pas aux adresses physiques.

Par exemple, sous Windows, vos applications peuvent avoir des zones de mémoire partageant la même adresse virtuelle, mais avec des contenus différents, alors que d'autres zones à adresses égales partagent le même contenu, par ex. code de bibliothèques, et vous pouvez également avoir des contenus partagés à des adresses différentes pour chaque application, en particulier avec ASLR, où les adresses sont randomisées.

En même temps, l'adressage virtuel introduit également un moyen de mapper la mémoire virtuelle sur le disque de manière transparente, généralement à l'aide d'exceptions de processeur ou d'interruptions générées lorsque le code accède à la mémoire non mappable à la RAM physique. charger les données dans la RAM et ensuite accorder l'accès à celle-ci.


2
2018-01-06 08:52





Ils décrivent la même chose. L'article de Wikipedia est une explication technique. Je pense que l'intro de l'article est mal / maladroitement formulée, cependant. Le corps de l'article le décrit assez bien.

La mémoire virtuelle, en tant que nom, est un élément de stockage utilisé pour conserver ce qui serait autrement dans la mémoire, mais ce n’est pas généralement parce qu’il n’ya pas assez de place ou qu’il ne sera pas nécessaire pendant un certain temps (relativement; tandis que "pourrait être des fractions de seconde). Il s’agit généralement d’un espace sur un type de stockage à long terme emprunté à cette fin (les fichiers de pages sur les disques durs en sont l’exemple courant). Dans certaines situations (comme pour les serveurs), cela peut être un matériel conçu à cet effet.

L'article de Wikipédia en parle, mais étend le concept aux sous-systèmes (tels que l'adressage virtuel) qui rendent la mise en œuvre possible.


0
2018-01-06 07:32



Pouvez-vous expliquer comment ils décrivent réellement la même chose? - Celeritas
On peut séparer arbitrairement "stockage" en deux types: "mémoire" et "tout le reste". Ce "tout le reste" est généralement plus lent et à plus long terme. Sinon, c'est la même chose, un moyen de stocker des données. Lorsque des gens comme vous et moi parlent de mémoire virtuelle, nous parlons généralement du support de stockage. Lorsque les gens de l'informatique en parlent, ils parlent de tout, y compris des éléments qui permettent même que cela soit possible. L'article de Wikipedia le traite comme un sujet informatique (comme il se doit). Les autres articles le traitent comme le font les gens ordinaires. - Ouroborus


Ils décrivent deux choses (liées). La première décrit comment le système ne dispose pas d’une mémoire physique suffisante en échangeant certaines informations entre la mémoire physique et un lecteur de disque. Ceci est caché des programmes en cours d'exécution par le système d'exploitation et rend la mémoire physique plus grande qu'elle ne l'est réellement. Essayez de rechercher des fichiers d'échange RAM

La seconde décrit comment un processeur décide quelle partie de la mémoire (mémoire physique normale) doit accéder à chaque programme exécuté sur un système. Il pourrait être mieux décrit comme un adressage de mémoire virtuelle. De cette façon, chaque programme exécuté sur la machine peut penser qu'il possède son propre bloc de mémoire dédié, en commençant à l'adresse 00000, mais en réalité, les blocs de mémoire sont réellement répartis dans la mémoire physique. Essayez de regarder l'adressage de la mémoire, les pointeurs


0
2018-01-06 08:54