Lorsqu'un processus n'utilise pas de mémoire virtuelle, a-t-il le noyau ou la mémoire utilisateur dans la RAM?

2

Un processus peut utiliser jusqu'à 4 Go de mémoire virtuelle (y compris l'utilisateur et le noyau), mais lorsqu'il n'utilise pas de mémoire virtuelle, dispose-t-il du noyau et de la mémoire utilisateur en RAM?

cps
la source

Réponses:

3

L'utilisation de la mémoire virtuelle n'est pas facultative, une application ne peut pas l'éviter. Supposons que nous parlons de mémoire protégée x86, utilisée par la plupart des systèmes d’exploitation actuels tels que Linux, OS X et Windows sur x86.

En gros, chaque processus voit un espace d'adressage virtuel (VAS) de 4 Go. Le système d'exploitation, en conjonction avec le matériel, configure des tables de descripteur de page (PDT) décrivant la manière dont ce serveur virtuel est mappé, avec une granularité de page (généralement 4 Ko). Une page peut être mappée sur la mémoire physique, elle peut être mappée sur un fichier (ce qui signifie que lorsque le processus tente de lire cette partie du VAS, il s’enfonce dans le système d’exploitation qui lira ensuite la page à partir du fichier sur disque et placez-le en mémoire), ou il ne sera peut-être pas mappé du tout. Dans ce cas, essayer d'accéder à cette partie du VAS provoquera le blocage du processus. De plus, pendant que la mémoire du noyau est mappée dans le processus, le processus ne peut pas y accéder directement et se bloquera s'il tente de le faire.

De plus, le système d'exploitation peut utiliser un fichier de page ou une partition d'échange, ce qui permet au système d'exploitation de déplacer des pages de mémoire moins utilisées sur le disque et d'utiliser la mémoire à des fins plus utiles. Là encore, si cela se produit, le PDT doit être mis à jour en conséquence, et comme pour les fichiers mappés en mémoire, si le processus tente d'accéder aux pages qui ont été permutées, il sera intercepté dans le système d'exploitation, ce qui ramènera la page en mémoire. (Bien que la capacité d’échange soit souvent confondue avec la mémoire virtuelle en soi, l’idée fondamentale de la mémoire virtuelle est le concept des adresses virtuelles distinctes des adresses de la mémoire physique.)

Janneb
la source
Je peux choisir de ne pas créer de fichier d'échange ni de partition d'échange. Comment la mémoire virtuelle est-elle facultative dans ce sens? Du moins si la mémoire virtuelle est ce que me permet la requête Google "définir: mémoire virtuelle" ...
Tamara Wijsman
@ Tom Je pense que Janneb dit que l'application n'a pas le choix de savoir si elle existe ou non dans VRam. Non pas que vous ne pouvez pas le désactiver.
Jeff F.
@JeffF .: Les applications ont le choix, c'est juste la gestion de la mémoire.
Tamara Wijsman
@Tom: P Je ne suis pas en train de discuter, juste pour clarifier.
Jeff F.
Que vous ayez ou non un fichier de page ou une partition d'échange n'a rien à voir avec l'utilisation de la mémoire virtuelle. La mémoire virtuelle est bien plus que «l’utilisation d’un fichier de page ou d’une partition swap». Ne pas avoir de fichier de page ou de partition d'échange élimine simplement l'un des dizaines ou des centaines de fichiers impliqués dans la pagination des E / S. Et non, les applications n'ont pas le choix non plus.
Jamie Hanrahan