系统相关
首页 > 系统相关> > linux:“真正的”分段故障处理程序在哪里?

linux:“真正的”分段故障处理程序在哪里?

作者:互联网

如果我读/写/跳转到umpapped地址即.

.text
    .global _start
_start:
     movl   $1,%edx
     jmp     *%edx

这会导致分段错误.

我想知道,系统(内核)的实际部分是什么
拦截对未映射地址的读取/写入(如何?)
并抛出“用户模式”信号?

解决方法:

一切都从体系结构陷阱表中流出.这通常称为entry.S(在x86上,在entry_32和entry_64.S之间拆分),并具有汇编程序链接,该链接程序在进入内核的C代码之前会执行许多操作(取决于配置).

因此,无效的内存访问应通过page_fault或general_protection进入,并且可能最终在最终返回到send_signal(kernel / signal.c)中的用户空间之前,先执行force_sig_info.

标签:linux-kernel,linux,segmentation-fault
来源: https://codeday.me/bug/20191107/2003582.html