在linux中,当发生中断或异常时,如果CUrrent权限级别(CPL)的权限低于描述权限级别(DPL),则会引发一般保护!但在这种情况下,一般保护错误的作用是什么?请帮帮我!
答案 0 :(得分:12)
处理器不允许在比CPL更少特权的代码段中将执行转移到异常或中断处理程序。试图违反此规则会导致一般保护例外(#GP)。更多内容(http://www.lpthe.jussieu.fr/~talon/pentium3.pdf)
在内核中,每个异常都由特定的异常处理程序处理,它通常会将Unix 信号发送到导致异常的进程。
在我们的例子中:内核将生成一个信号SIGSEV
。
在这种情况下,异常处理程序是general_protection( )
(https://github.com/torvalds/linux/blob/master/arch/x86/include/asm/traps.h)
编辑:在此链接中,您可以获得有关内核如何比较DPL
,CPL
和RPL
的详细解释:
http://duartes.org/gustavo/blog/post/cpu-rings-privilege-and-protection
另一个好的链接: