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