3

プログラムがあります。さまざまな実行で特定のメモリ領域を mmap できるようにしたい。

  1. プログラムのソースコードがあります。C/C++
  2. プログラムのコンパイル方法を制御します。gcc
  3. プログラムのリンク方法を制御します。gcc
  4. プログラムの実行方法を制御します (Linux)。

この特定のメモリ領域が必要なだけです.0xabcdabcdから0xdeadbeefまで、特定のファイルにmmapします。とにかくこれを保証するものはありますか?(この特定のリージョンに他のものがロードされないようにするには、どうにかして確認する必要があります)。

編集:

メモリ内のこの特定の領域を他に何も取得しないようにするにはどうすればよいですか?

4

3 に答える 3

7

次の 2 つのことを行う必要があります。

  1. mmap の第一引数に開始アドレスを指定します。
  2. MAP_FIXED フラグを含めます。

開始アドレスについては、ページサイズの倍数であることを確認する必要があります。ページサイズを取得するには、呼び出しを使用しますsysconf(_SC_PAGESIZE)(これは Linux では適切な呼び出しです。他のプラットフォームでは異なる場合があります)。

于 2010-01-17T07:26:17.977 に答える
1

で住所をマップに渡しますaddr。8KB 境界で取得してみてください。mlock()ただし、代わりに試すことができます。

于 2010-01-17T07:25:44.370 に答える
0

そのメモリ領域を他に何も取らないようにすることはできません。先着順です。ただし、メモリの特定の部分が必要なため、かなり特殊な環境を持っていると思います。そのため、最初にいることを確認する必要があります (開始スクリプトを使用)。

于 2010-01-17T07:40:12.917 に答える