Exception_handle
exception
在控制流中的突变,用来响应处理器状态中的变化。
当有事件(event),通过一张异常表的跳转表,进行了一个间接过程调用(异常),到一个专门设计用来处理这类事件的子程序(exception handler)
每种异常有一个异常号,到跳转表。
与过程调用不同,压入栈的可能是当前指令或下一条指令。如果控制从用户->内核,项目压到内核栈而不是用户栈。
几种exception
- interrupt: 由I/O 设备信号,异步。I/O 将某个引脚电位拉高,cpu执行完发现电位上升,执行中断放异常号到总线
- trap:将控制返回下一条,同步,提供用户与内核的系统调用。
- fault/abort
- segment fault: 引用了未定义的虚拟内存区域,尝试写一个只读的文本段