发布
社区首页 >问答首页 >字节级写访问保护?

字节级写访问保护?
EN

Stack Overflow用户
提问于 2011-09-21 15:14:21
回答 2查看 243关注 0票数 1

保护页以进行读和/或写访问是可能的,因为在页表条目中存在可在内核级开启和关闭的位。有没有一种方法可以保护内存的某些区域不被写访问,比如在C结构中,有某些变量需要写保护,对它们的任何写访问都会触发段错误和核心转储。这就像是在页面级别上工作的缩小的mprotect ()功能,在用户空间的字节级别上有没有类似的机制。

谢谢,Kapil Upadhayay。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-21 15:19:36

不,没有这样的设施。如果您需要针对每个数据对象的保护,则必须为每个对象分配至少一个页面(使用mmap)。如果您还想防止超出对象末尾的访问(对于数组),您可能会分配至少一个超出所需的页,对齐对象,使其在页边界结束,并使用mprotect来保护您分配的一个或多个附加页。

当然,这种方法会导致程序非常慢并浪费大量资源。除了作为一种调试技术之外,它可能是不可行的,而valgrind可以更有效地满足需求,而不必修改您的程序……

票数 5
EN

Stack Overflow用户

发布于 2011-09-21 15:25:09

一种方法是保护对象所在的整个页面,尽管速度非常慢。每当发生对该页的写入访问时,都会调用针对无效页访问的自定义处理程序,并通过快速取消对该页的保护、写入数据,然后再次保护该页来解决这种情况。

这对单线程程序很有效,我不确定对多线程程序该怎么做。

这个想法可能并不新鲜,因此您也许能够找到一些信息,甚至是它的现成实现。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7495922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档