2

LinuxとWindowsの場合、同じプロセスで、2つのページエントリが同じ物理ページを参照するようにするにはどうすればよいですか?

Windowsの場合、MSDNを読むと、ファイルに裏打ちされていないファイルマッピングを作成するためにCreateFileMapping渡すことで呼び出すことができるように見えます。INVALID_HANDLE_VALUE次にMapViewOfFileEx、異なるで2回呼び出すことができますlpBaseAddress。これにより、2つの異なるアドレスが同じ物理アドレスを参照するようになります。

私の質問は、Linuxでそれを行う方法ですか?のマニュアルを読みましmmapたが、リージョンがファイル(フラグ付き)でバックアップされていない限り、それを行う方法がわかりませんでしたが、MAP_SHAREDこのリージョンへの変更はファイルに書き込まれます。これは私が望むものではありません。誰かがこれを行うために何らかの方法で知っていますか?リージョンへの書き込みが実際にディスクに送信されない限り、ファイルによるバッキングに反対しません。ユーザーがマウントされtmpfsていることを保証できないため、使用することはできません。tmpfs

ちなみに、コードはカーネルモードではなくユーザーモードコードである必要があります。

4

1 に答える 1

1

shm_open()のファイルを作成するために使用しますmmap()

「エミュレータを書きたい」というのは、このトリックを使ったときと同じ目的です。ipc / shmを使用しましたが、詳細を忘れてしまいました。それは非常に非常に非常に可能性が高いです:shmget()+shmat()

于 2012-07-13T04:01:08.787 に答える