web-dev-qa-db-fra.com

Existe-t-il une API de mappage de mémoire sur la plate-forme Windows, tout comme MMAP () sur Linux?

Y a-t-il une API pour faire la cartographie de la mémoire, comme

mmap()

sur Linux?

30
Fernandez

mappage de fichier

Mappage de fichiers est l'association d'un contenu d'un fichier avec une partie de l'espace d'adressage virtuel d'un processus. Le système crée un objet de mappage de fichier (également appelé objet de section ) maintenir cette association. Une vue de fichier est la partie de l'espace d'adressage virtuel qu'un processus utilise pour accéder au contenu du fichier. Le mappage de fichiers permet au processus d'utiliser à la fois une entrée aléatoire et une sortie (E/S) et des E/S séquentielles. Il permet également au processus de fonctionner efficacement avec un fichier de données volumineux, tel qu'une base de données, sans avoir à mapper le fichier entier en mémoire. Plusieurs processus peuvent également utiliser des fichiers mapé de mémoire pour partager des données.

Les processus lisent et écrivez à la vue du fichier à l'aide des pointeurs, comme ils le feraient avec une mémoire allouée dynamiquement. L'utilisation du mappage de fichier améliore l'efficacité car le fichier réside sur le disque, mais la vue de fichier réside en mémoire. Les processus peuvent également manipuler la vue de fichier avec la fonction VirtualProtect.

14

Cela dépend de ce que vous voulez exactement l'utiliser. Si vous souhaitez mapper des fichiers existants en mémoire, cela est pris en charge avec fichiers mappés en mémoire . Ils peuvent également être utilisés pour partager la mémoire entre les processus (utilisez un objet de mappage nommé sans aucun fichier sous-jacent). Si vous souhaitez ma cartographier la mémoire physique, cela n'est généralement pas pris en charge par le mode utilisateur, bien qu'il y ait quelques astuces.

13
Igor Skochinsky