3.3异常处理

 Linux利用异常来达到两个截然不同的目的:

·          给进程发送一个信号以通报一个反常情况

·          处理请求分页

      对于第一种情况,例如,如果进程执行了一个被0除的操作,CPU则会产生一个“除法错误”异常,并由相应的异常处理程序向当前进程发送一个SIGFPE信号。当前进程接收到这个信号后,就要采取若干必要的步骤,或者从错误中恢复,或者终止执行(如果这个信号没有相应的信号处理程序)。

内核对异常处理程序的调用有一个标准的结构,它由以下三部分组成:

·      在内核中保存大多数寄存器的内容(由汇编语言实现)

·      调用C编写的异常处理函数

·      通过ret_from_exception()函数从异常退出。