Tom*_*gen 6 trace signals mmap virtual-memory
我有大量的数据存储在一个文件中.这个文件是mmap,但我随时只访问少量数据.我想了解我的程序的访问模式,以便我可以优化数据的排序(以便经常访问数据被分组到相同的页面中).目标是减少mmaped文件的工作集.
所以,我正在考虑使用R/W映射文件禁用.每次读/写尝试都会导致SEGV.在我的SEGV处理程序中,我将记录访问地址并允许程序继续.
我可以在错误地址处解码指令,并模拟其动作(通过相应地修改目标寄存器和存储器位置).
但是,我在某处读到Linux无法从SEGV中恢复.这是真的?当我的信号处理程序被调用时,我如何向操作系统表明"一切都很好,请在故障指令后立即继续"?
请注意,我不希望它重做错误指令,因为我会模拟它.
我现在只关心x86/x64架构.
谢谢!