异常控制流是程序运行时,应对一些函数调用或者分支跳转都无法处理的事情:I/O中断(ctrl+c)或者计时器中断(进程切换)所创立的一套机制。
异常分为同步异常和异步异常(中断):
异步异常:CPU无法预料是否会发生的异常,也称作中断。如I/O中断(ctrl+c)或者计时器中断(进程切换)。
同步异常:CPU能预见有可能发生的异常。如:page fault(读取数据的时候预料到有可能),trap(调用某些系统函数,如open的时候,触发陷阱,进行系统调用)。其实还有一个叫abort,发生严重错误,无法恢复运行。
系统异常流的触发模型(来源:http://wdxtub.com/2016/04/16/thin-csapp-5/):
最后,异常处理的过程中有可能会触发新的异常处理流程。
常见的系统调用:
0 read 读取文件
1 write 写入文件
2 open 打开文件
3 close 关闭文件
4 stat 获取文件信息
57 fork 创建进程
59 execve 执行一个程序
60 _exit 关闭进程
62 kill 向进程发送信号
多核CPU的进程context switch模型(来源:http://wdxtub.com/2016/04/16/thin-csapp-5/):