3.3异常处理
Linux利用异常来达到两个截然不同的目的:
·
给进程发送一个信号以通报一个反常情况
·
处理请求分页
对于第一种情况,例如,如果进程执行了一个被0除的操作,CPU则会产生一个“除法错误”异常,并由相应的异常处理程序向当前进程发送一个SIGFPE信号。当前进程接收到这个信号后,就要采取若干必要的步骤,或者从错误中恢复,或者终止执行(如果这个信号没有相应的信号处理程序)。
内核对异常处理程序的调用有一个标准的结构,它由以下三部分组成:
· 在内核栈中保存大多数寄存器的内容(由汇编语言实现)
· 调用C编写的异常处理函数
· 通过ret_from_exception()函数从异常退出。