mprotect() 的替代方案

4

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

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

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

是否有办法仅保护一些不与页面边界对齐的连续地址,即len < pagesize

3个回答

5
我不认为可以。这是因为MMU在控制粒度方面有硬件限制。有一些表格用于保存访问限制,但你不能为每个字节都分配一个表格槽位,否则表格本身就会占用所有的RAM。所以,它被设计得更加粗糙,每个页面都有表格条目。
如果你使用Linux系统,可以尝试使用Valgrind。

1

很抱歉,没有的。你的操作系统的虚拟内存系统只能在页面级别上运行,没有比这更小的。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接