2

私の要件は、32 ビットと 64 ビットのプロセス間で共有メモリ ファイルを提供することです。このファイルは、誰が最初に来るかによって、どのプロセスでも作成できます。-これが可能かどうかはまだわかりませんが、可能であれば、後で落とし穴はありますか? - Google から入手した情報: メモリ マップ ファイル 32 ビット アプリケーションは、32 ビット仮想アドレス空間にマップされたメモリ マップ ファイルのみを共有できます。64 ビット アプリケーションは、32 ビットまたは 64 ビットの仮想アドレス空間でメモリ マップト ファイルを共有できます。64 ビット アプリケーションと 32 ビット アプリケーションの間で共有可能なメモリにファイルをマップするには、mmap(2) を呼び出すときに、64 ビット アプリケーションで MAP_SHARED フラグとともに MAP_ADDR32 フラグを指定する必要があります。URL: http://docs.hp.com/en/5966-9844/ch02s08.html#d0e3037

これは、この種の共有の場合、特定のフラグを使用して 64 ビット プロセスでメモリ マップ ファイルを作成する必要があることを意味しますか?

ありがとう

4

1 に答える 1

0

試したことはありませんが、MAP_SHARED で mmap できない理由がわかりません。

32 ビット プロセスのアドレス空間に対して大きすぎる単一のセグメントは必要なく (フラグメンテーションを念頭に置いて)、両方のプロセスで同じアドレスにマッピングしたくない場合 (これは不可能な場合があります)。 、それは単に動作するはずです。

結局のところ、mmap() はその効果においてアーキテクチャに依存していません (その実装のみ)。

于 2010-11-08T10:29:37.477 に答える