J'ai lu environ memory mapped files qui permet le partage de fichiers entre plusieurs processus.Le fichier mappé en mémoire est chargé dans l'espace adresse du mode utilisateur ou dans l'espace adresse du noyau du processus?
Chaque processus (32 bits pour être précis) dispose de 4 Go d'espace d'adressage privé qui est divisé en 2 Go d'espace d'adressage en mode utilisateur et2 Go réservé pour le noyau comme décrit here par Eric Lippert. L'espace d'adressage en mode utilisateur est privé à chaque processus et ne peut pas être modifié par un autre processus.
Donc, cela signifie-t-il que MMF sont mappés dans l'espace d'adressage en mode noyau car il est partagé entre tous les processus?
J'ai beaucoup cherché à propos de MMF où il est mappé, mais n'a pas pu trouver de ressource indiquant cela. Donc, poster une question ici si ma supposition est bonne ou s'il me manque quelque chose ici? Toute ressource vers MSDN serait également bonne.
Il est un peu plus compliqué que cela. Aucune partie de l'espace adresse n'est directement accessible aux autres processus. Cependant, vous pouvez explicitement partager des parties de votre espace d'adressage avec d'autres processus, et avec les autorisations de processus adéquates, un processus étranger peut accéder à la mémoire de votre processus (par exemple, ce que fait le débogueur) – jalf
@jalf - Par private Je voulais dire, le mode utilisateur d'un espace d'adressage ne peut pas être écrit par un autre processus. –
Lorsqu'un processus écrit sur un pointeur, il s'agit d'un pointeur virtuel. Le système d'exploitation décide de la mémoire à laquelle il écrit. Si vous avez demandé au système d'exploitation que deux pointeurs virtuels différents dans deux processus différents correspondent à la même banque de support, un processus peut écrire de la mémoire et un autre processus peut voir ce changement. –