Y at-il un api pour faire la cartographie de la mémoire, commeExiste-t-il une API de mappage de mémoire sur la plate-forme Windows, tout comme mmap() sous Linux?
mmap()
sur linux?
Y at-il un api pour faire la cartographie de la mémoire, commeExiste-t-il une API de mappage de mémoire sur la plate-forme Windows, tout comme mmap() sous Linux?
mmap()
sur linux?
mappage de fichiers est l'association du 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 ) pour 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 les entrées et les sorties aléatoires (E/S) et les 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 mappés en mémoire pour partager des données.
Les processus sont lus et écrits dans la vue de fichier à l'aide de pointeurs, tout comme ils le feraient pour la 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 dans la mémoire. Les processus peuvent également manipuler la vue de fichier avec la fonction VirtualProtect.
Dépend de ce que vous voulez exactement pour l'utiliser. Si vous souhaitez mapper des fichiers existants en mémoire, cela est pris en charge avec memory-mapped files. Ils peuvent également être utilisés pour partager de la mémoire entre les processus (utilisez un objet de mappage nommé sans fichier sous-jacent). Si vous voulez mapper la mémoire physique, ce n'est généralement pas pris en charge par le mode utilisateur, bien qu'il y ait quelques astuces.
Je veux juste mapper un fichier en mémoire afin que je puisse obtenir des performances d'E/S plus élevées – Fernandez
Cela devrait fonctionner alors. Voici un exemple de code pour effectuer le mappage de fichiers sur Win32: http://mollyrocket.com/forums/viewtopic.php?p=2529 –
@IgorSkochinsky: [CreateFileMapping] (http://msdn.microsoft.com/fr-fr/ library/aa366537 (v = vs.85) .aspx) "Si hFile est INVALID_HANDLE_VALUE ... CreateFileMapping crée un objet de mappage de fichier d'une taille spécifiée qui est sauvegardé par le fichier d'échange système au lieu d'un fichier dans le système de fichiers." Est-ce ce que vous vouliez dire par «cartographie de la mémoire physique»? –
au moins fournir un lien webarchive – beppe9000