4

mprotect syscall は、ページ境界内のメモリ領域を保護します。

int mprotect(void *addr, size_t len, int prot);

これはページサイズの倍数でlenなければなりません。

ページ境界に揃えられていない連続する少数のアドレスのみを保護する方法はありますlen < pagesizeか?

4

3 に答える 3

5

私はそうは思いません。この制限は、MMUが制御できる粒度のハードウェア制限があるためです。アクセス制限を保持するテーブルがあり、バイトごとにテーブル スロットを持つことはできません。テーブル自体がすべての RAM を使用します。その代わりに、各ページのテーブル エントリを使用して、より粗く作られています。

Linux を使用している場合は、Valgrind を使用して何かを実行できる可能性があります。

于 2009-11-06T09:36:17.237 に答える
1

いいえ、ありません。OS の仮想メモリ システムは、ページ レベルでのみ動作し、それより小さくはありません。

于 2009-11-06T09:36:10.887 に答える
0

以下のリンクは U が期待するものだと思いますが、U はそれがリリースされるまで待つ必要があります。

https://software.intel.com/en-us/blogs/2013/07/22/intel-memory-protection-extensions-intel-mpx-support-in-the-gnu-toolchain

「MPX —— Intel® Memory Protection Extensions」は、すべての C++ プログラマーが望んでいるものです。とても楽しみです。

于 2014-07-28T13:36:09.130 に答える