我想在C程序中使用userfaultfd()系统调用,但它在旧的Linux内核中不存在。 userfaultfd()系统调用的替代方案是什么,它也存在于旧版Linux内核中? 谢谢!
编辑:我想要的是一种获取usefaultfd()的一些主要优点的方法,主要处理页面错误。答案 0 :(得分:0)
mprotect(2)
包含PROT_NONE
的页面,因此所有访问都会出错并实现SIGSEGV
处理程序,您可以在其中处理错误。 libsigsegv抽象出一些复杂性:
GNU libsigsegv是一个用于在用户模式下处理页面错误的库。当程序试图访问当前不可用的内存区域时,会发生页面错误。捕获和处理页面错误是实现的有用技术:
- 可分页的虚拟内存,
- 对持久性数据库的内存映射访问,
- 分代垃圾收集器,
- 堆栈溢出处理程序,
- 分布式共享内存,
- ...