mprotect 系统调用保护页面边界内的内存区域:
int mprotect(void *addr, size_t len, int prot);
这里len
应该是页面大小的倍数。
有没有办法只保护几个不与页面边界对齐的连续地址,即len < pagesize
?
mprotect 系统调用保护页面边界内的内存区域:
int mprotect(void *addr, size_t len, int prot);
这里len
应该是页面大小的倍数。
有没有办法只保护几个不与页面边界对齐的连续地址,即len < pagesize
?
我不会这么认为,不会。限制是因为MMU对它可以控制的粒度有硬件限制。有些表具有访问限制,并且每个字节都不能有一个表槽;该表本身将使用您的所有 RAM。因此,它变得更加粗糙,每页都有表格条目。
如果你在 Linux 上,你也许可以使用 Valgrind 做一些事情。
不,没有。您的操作系统的虚拟内存系统仅在页面级别上运行,没有比这更小的了。
我认为下面的链接是你所期望的,但你必须等待它发布。
“MPX —— Intel® Memory Protection Extensions”是所有 C++ 程序员想要的。我非常期待。