Exception(CSAPP-8.1)
-
在第三章中,我们已经知道程序执行中的两个控制流 —— 跳转和调用,但是这只是对于一个程序内部的控制,如果系统本身发生变化或者程序需要和系统交互,就需要新的控制方式
- 系统交互举例:
- 从硬盘读取数据
- 用户按下Ctrl+c 终止程序
- 产生除0错误
- 新的方式——异常控制流
- 用户代码通系统内核提供的接口将异常号传递给内核,内核通过内置的异常表决定采取的行动
- 用户代码通系统内核提供的接口将异常号传递给内核,内核通过内置的异常表决定采取的行动
- 系统交互举例:
-
异常分类
- 异步异常(中断)
- 计数器中断
- 某一进程运行足够时间后,内核通过计数器中断拿回控制权
- I/O中断
- 从硬盘读取出数据后
- 键入Ctrl+ C
- 网路中的一个包接受完毕
- 计数器中断
- 同步异常
- Trap
- 故意的异常
- 返回到下一条指令
- 作用:在用户程序和内核中提供接口
- 当用户程序需要向内核请求服务时,例如读取文件,加载一个新的程序,转到内核程序
- 用户模式的行为是被限制的,不可以访问一
- Trap
- 异步异常(中断)