Совместное использование файлов, отображаемых в памяти, между 32-битными и 64-битными процессами - PullRequest
2 голосов
/ 08 ноября 2010

Мое требование - предоставить файл с общей памятью между 32-битными и 64-битными процессами.Этот файл может быть создан любым процессом, в зависимости от того, кто будет первым.- Я до сих пор не уверен, возможно ли это, и если да, то подводные камни позже?- некоторая информация, полученная от Google: 32-разрядные приложения, отображаемые в память, могут делиться только отображенными в памяти файлами, которые сопоставлены с 32-разрядным виртуальным адресным пространством.64-разрядные приложения могут совместно использовать отображенные в памяти файлы в 32-разрядном или 64-разрядном виртуальном адресном пространстве.Чтобы отобразить файл в память, которая может использоваться совместно 64-разрядными и 32-разрядными приложениями, ваше 64-разрядное приложение должно указывать флаг MAP_ADDR32 с флагом MAP_SHARED при вызове mmap (2).URL: http://docs.hp.com/en/5966-9844/ch02s08.html#d0e3037

Означает ли это, что для этого типа совместного доступа файлы с отображением в памяти должны создаваться 64-битным процессом с использованием заданных флагов?

Спасибо

1 Ответ

0 голосов
/ 08 ноября 2010

Я не пробовал это, но я не понимаю, почему вы просто не можете mmap с MAP_SHARED, и у вас это ПРОСТО РАБОТАЕТ.большой для адресного пространства 32-битного процесса (с учетом фрагментации), и вы не хотите, чтобы он отображался по одному адресу в обоих процессах (что может быть невозможно), он просто должен работать.В конце концов, mmap () не зависит от архитектуры по своим последствиям (только его реализация)

...