2010-11-08 30 views
2

Mon exigence est de fournir un fichier de mémoire partagée entre les processus 32 bits et 64 bits. Ce fichier peut être créé par l'un des processus dépend de qui vient en premier. - Je ne sais pas encore si c'est possible et si oui, des embûches plus tard? - quelques informations provenant de google: Fichiers mappés en mémoire Les applications 32 bits ne peuvent partager que des fichiers mappés en mémoire qui sont mappés dans un espace d'adressage virtuel 32 bits. Les applications 64 bits peuvent partager des fichiers mappés en mémoire dans un espace d'adressage virtuel 32 bits ou 64 bits. Pour mapper un fichier en mémoire pouvant être partagé entre des applications 64 bits et 32 ​​bits, votre application 64 bits doit spécifier l'indicateur MAP_ADDR32 avec l'indicateur MAP_SHARED lors de l'appel de mmap (2). URL: http://docs.hp.com/en/5966-9844/ch02s08.html#d0e3037Partage de fichiers mappés en mémoire entre des processus 32 bits et 64 bits

Est-ce que cela signifie pour ce type de partage, les fichiers mappés en mémoire doivent être créés par un processus 64 bits en utilisant des drapeaux donnés?

Merci

+1

Il serait utile si vous avez spécifié quelle plate-forme vous ciblez. J'ai ce sentiment que la réponse ne sera certainement pas la même sous HP-UX et Windows 2008 R2 .... – Stephane

+0

Développez-vous vraiment pour HP-UX? Je pensais que c'était mort (ish). – MarkR

+0

@Stephane: mmap ajouté (commande spécifique à la plate-forme) pour indiquer le focus * nix. – rwong

Répondre

0

Je ne l'ai pas essayé, mais je ne vois pas pourquoi vous ne pouvez pas mmapper avec MAP_SHARED, et de le faire fonctionner. JUSTE Si vous ne voulez pas un seul segment trop grand pour l'espace d'adressage du processus 32 bits (compte tenu de la fragmentation), vous ne voulez pas qu'il soit mappé à la même adresse dans les deux processus (ce qui peut pas possible), cela devrait simplement fonctionner.

Après tout, mmap() n'est pas dépendante de l'architecture dans ses effets (que sa mise en œuvre)