0
votes

où est situé l'espace d'adressage virtuel

ne pouvait pas comprendre où est présent l'espace d'adressage virtuel est-il dans la RAM ou le disque dur? S'il est présent dans la RAM, alors comment l'espace d'adressage est plus grand que l'espace d'adresses physique?


1 commentaires

Il a expliqué en détail sur les pages MS: Espace d'adresse virtuelle


3 Réponses :


3
votes

Les adresses virtuelles, comme leur nom l'indique, sont virtuels . Leurs sont uniquement manipulés par le processeur et ne correspondent pas aux adresses réelles tant qu'elles ne sont traduites.

La traduction est effectuée par le matériel, grâce aux tables remplies par le système d'exploitation. Ces tables indiquent pour chaque adresse de page virtuelle potentielle à laquelle l'adresse de la page physique correspond à la page correspondante. La plupart du temps, des adresses virtuelles sont mappées sur des adresses physiques (RAM).

ne pouvait pas comprendre où est présent l'espace d'adressage virtuel est-il dans la RAM ou le disque dur? S'il est présent dans la RAM, alors comment l'espace d'adressage est plus grand que l'espace d'adresses physique?

Un processus a toujours le même type de structure de mémoire en termes d'adresses virtuelles. À la fin de l'adresse inférieure, il y a les instructions, les données globales et le tas, qui sont organisés dans plusieurs sections . À l'extrémité supérieure, sont les paramètres du programme (ARGV) et la pile. Entre entre, il y a un espace libre qui permet à la pile et au tas de croître.
Donc, il existe des adresses égales à 0 (la première instruction d'un programme) et à 0xFFFFFFFFFFFFFFFF (début de la pile).
Il est évident que c'est bien au-delà de la capacité de la plupart (tout?) RAM actuel. Avec des adresses virtuelles de 64 bits et une RAM de 4 Go (32 bits), au plus une page sur 1 milliard peut être utilisée.
Mais le mécanisme de cartographie est possible grâce à la traduction basée sur la page. Dans l'espace libre entre le tas et la pile, la plupart des adresses ne seront jamais utilisées. Dans ce cas, aucune table de page pour la traduction n'est créée par le système d'exploitation.
Si vous générez une adresse aléatoire dans un programme, le plus probable est qu'il ne correspondra pas à une adresse mappée par le système à la RAM. Si vous essayez d'accéder à cette adresse, le processeur détectera qu'aucune page n'existe et posera une exception qui sera traitée par le système. Très probablement, le système arrêtera votre programme et affichera un message d'erreur comme "Violation d'accès".

Le même mécanisme est utilisé pour cartographier une partie de la mémoire sur le disque. D'une manière ou d'une autre, augmentez la taille de la mémoire, le système peut échanger une partie du disque de la mémoire physique attribuée à un processus, afin de l'attribuer à un autre processus. Si le premier processus tente d'y accéder, une nouvelle exception sera soulevée, mais le système d'exploitation détectera que l'adresse correspond à une zone de mémoire qui stockée sur disque. Il lira le disque, déterminera une adresse physique pour cette page, remplissez la table de page correspondante, restaurez le contenu de la mémoire et revenez au programme qui peut désormais effectuer l'accès à la mémoire.


0 commentaires

0
votes

L'espace d'adressage virtuel est conservé dans le stockage secondaire (disque). La partie virtuelle de la mémoire virtuelle signifie que le système d'exploitation conserve une image de l'espace d'adressage dans le stockage secondaire. Étant donné qu'une image de l'espace d'adressage est conservée au stockage secondaire, elle peut être supérieure à la mémoire physique.

La deuxième pièce de mise en œuvre de la mémoire virtuelle est la traduction de l'adresse logique qui se déroule entièrement en mémoire. Dans l'espace d'adressage logique, la mémoire est subdivisée en pages (quelque chose comme 512Bans à 1 Mo). La mémoire physique est subdivisée en cadres de page. La taille d'une page de page doit correspondre à la taille de la page logique sur la plupart des systèmes.

Le système d'exploitation maintient une table de page pour chaque processus. La table de page Maps Pages dans l'espace d'adresses logique aux cadres de page physique. Une adresse consiste en un index dans la table de page et un décalage dans la page utilisée une fois la page située.

Dans la plupart des cas, il n'y a pas de cartographie d'une adresse logique à une adresse physique. Si vous accédez à une page qui n'a pas de mappage, le processeur génère une défaillance de la page. Une fois la traduction logique échoue, le système d'exploitation doit faire une traduction virtuelle de la page. Il cherche à voir si la page en question est située dans le stockage secondaire.

Si la page n'existe pas, le système d'exploitation déclenche une exception d'une violation d'accès. Si la page existe, le système d'exploitation charge la page dans un cadre de page physique libre; Met à jour la page pour mapper la page sur cette page de page, puis redémarrez le processus qui a provoqué la défaillance.

Une implémentation de la mémoire virtuelle doit conserver une copie de l'espace d'adressage virtuel de chaque processus dans le stockage secondaire. Il doit être en mesure de traduire des références de page logiques dans la page virtuelle stockée sur le disque. Il doit pouvoir copier des pages logiques en mémoire entre les pages virtuelles sur le disque.

Vous pouvez avoir une traduction de la mémoire logique sans traduction de la mémoire virtuelle, mais vous ne pouvez pas avoir la traduction de la mémoire virtuelle sans traduction de la mémoire logique.


0 commentaires

1
votes

L'espace d'adressage virtuel est stocké sur un disque dur. D'accord, mais où? Il y a deux fichiers que le processus utilise pour cela. L'un d'eux est le fichier de page, et l'autre est le fichier d'échange.

mais quelle est la différence entre le fichier de page et le fichier d'échange?

Le fichier de swap est utilisé lorsque la mémoire est complètement utilisée et que le processus a besoin de plus de mémoire. Ainsi, le swap est une partie étendue de la mémoire. L'autre utilité du fichier de swap consiste à changer de contexte entre les processus. Ainsi, par exemple, imaginez un processus A exécutant et le processus B attend de courir. Ensuite, avant le processus B exécuts, le processus A est supprimé du contexte réel e Stocker dans le fichier d'échange pour attendre que son temps soit à nouveau exécuté.

Ensuite, nous avons le fichier page . Le fichier de page est utilisé pour stocker les pages que le processus est pas utiliser en ce moment . Il est utilisé pour enregistrer la mémoire car il s'agit d'une ressource limitée sur le PC. Ainsi, seules les pages récemment utilisées sont présentes dans la mémoire réelle. Lorsque la CPU tente d'accéder à une page qui n'est pas présente dans la mémoire, la CPU a une exception, qui est traitée par les fenêtres, rétablissant ainsi la page en mémoire, à la mise à jour de la table de page et à la mise en place du processeur d'exécuter le processus.


0 commentaires