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

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

这里 len 应该是页面大小的倍数。

有没有办法只保护几个连续的地址,这些地址不与页边界对齐,即 len < pagesize ?

有帮助吗?

解决方案

我不这么认为,没有。的限制是因为 MMU 上有一个可以如何粒度精细控制硬件的限制。有迹象表明,保持访问限制,你不能对每一个字节的表格时隙表;表本身会使用所有的RAM。因此,而不是它是由更粗,为每个页表项。

您可能能够做到使用Valgrind的东西,如果你是在Linux上。

其他提示

没有,没有。您的操作系统的虚拟内存系统只能对网页级别,没有什么比这更小。

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

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

“MPX——英特尔®内存保护扩展”是所有C++程序员想要的。我非常期待。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top