4

mprotect 系统调用保护页面边界内的内存区域:

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

不,没有。您的操作系统的虚拟内存系统仅在页面级别上运行,没有比这更小的了。

于 2009-11-06T09:36:10.887 回答
0

我认为下面的链接是你所期望的,但你必须等待它发布。

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 回答