如何从SEGV恢复

时间:2013-09-26 01:23:22

标签: signals virtual-memory trace mmap

我有大量数据存储在文件中。这个文件是mmap,但我随时只访问少量数据。我想了解我的程序的访问模式,以便我可以优化数据的排序(以便频繁访问数据被分组到相同的页面中)。目标是减少mmaped文件的工作集。

所以,我正在考虑使用禁用的R / W映射文件。每次读/写尝试都会导致SEGV。在我的SEGV处理程序中,我将记录访问地址并允许程序继续。

我可以在错误地址处解码指令,并模拟其操作(通过相应地修改目标寄存器和存储器位置)。

但是,我读到Linux无法从SEGV恢复的地方。这是真的?当我的信号处理程序被调用时,我如何向操作系统表明“一切都很好,请在错误指令后立即继续”?

请注意,我不希望它重做故障指令,因为我会模拟它。

我现在只关心x86 / x64架构。

谢谢!

0 个答案:

没有答案