- GitHub计算机系统CSAPP课程资源
- 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)
- 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.3-2.4)
- 计算机系统课程 笔记总结 CSAPP第三章 程序的机器级表示(3.2-3.4)
- 计算机系统课程 笔记总结 CSAPP第三章 程序的机器级表示(3.5-3.7)
- 计算机系统课程 笔记总结 CSAPP第三章 程序的机器级表示(3.8-3.10)
- 计算机系统课程 笔记总结 CSAPP第四章 处理器体系结构(4.1-4.3)
- 计算机系统课程 笔记总结 CSAPP第五章 优化程序性能(5.1-5.14)
- 计算机系统课程 笔记总结 CSAPP第六章 存储器层次结构(6.2-6.6)
- 计算机系统课程 笔记总结 CSAPP第七章 链接(7.1-7.13)
- 计算机系统课程 笔记总结 CSAPP第八章 异常控制流(8.0-8.1)
- 计算机系统课程 笔记总结 CSAPP第八章 异常控制流(8.2-8.4)
- 计算机系统课程 笔记总结 CSAPP第九章 虚拟存储器(9.1-9.5)
- 计算机系统课程 笔记总结 CSAPP第九章 虚拟存储器(9.6-9.10)
目录
8.0 异常控制流
控制流
- 处理器只是简单地读取和执行一个指令序列(一次执行一条指令)
- 这个指令序列就是处理器的控制流 ( control flow or flow of control)
改变控制流
- 改变控制流的两种机制:
- 跳转和分支(Jumps and branches)
- 调用和返回(Call and return)
- 能够对(由程序变量表示的)程序状态的变化做出反应
- 不足:难以对系统状态的变化做出反应
- 磁盘或网络适配器的数据到达
- 除零错误
- 用户的键盘输入( Ctrl-C )
- 系统定时器超时
- 上述系统变化不能用程序变量表示
- 现代计算机系统需要针对“控制流发生突变”的情况做出反应,称为“异常控制流”机制
异常控制流(Exceptional Control Flow)
- 发生在计算机系统的所有层次
- 低层机制(硬件层)
- 1.异常 (Exceptions)
- 硬件检测到的事件会触发控制转移到异常处理程序
- 操作系统和硬件共同实现
- 1.异常 (Exceptions)
- 高层机制
- 2. 进程切换(Process context switch)
- 通过操作系统和硬件定时器实现
- 3. 信号(Signals)
- 操作系统实现
- 4. 非本地跳转(Nonlocal jumps): setjmp() and longjmp()
- C运行库实现
- 2. 进程切换(Process context switch)
总结
- 异常Exceptions
- 需要非常规控制流的事件
- 外部产生——中断
- 内部产生——陷阱和故障
- 进程Processes
- 任何给定的时间,系统中都有多个活动进程
- 但是,在单个内核上,一个时刻只能有一个进程执行
- 每个进程似乎完全拥有处理器和私有内存空间(的控制)
- 创建进程
- fork:1次调用、2次返回
- 进程退出
- exit:1次调用、0次返回
- Reaping and waiting for processes
- Call wait or waitpid
- 加载和运行程序
- execve (或exec函数的其他变体)
- 一次调用,0次返回(如没有错误)
8.1 异常
- 异常是指为响应某个事件将控制权转移到操作系统内核中的情况
- 内核指操作系统常驻内存的部分
- 事件示例:被零除、算术运算溢出、缺页、 I/O请求完成、键盘输入
![](https://i-blog.csdnimg.cn/blog_migrate/421e1b6b985f1c80ba03b963ff8a45a2.png)
- 每种类型的事件有一个唯一的异常号(Exception numbers )k
- 异常号k是到异常表的索引(又名中断向量)
- 任何时候异常k发生,则异常k的处理程序立刻被调用
异常表(中断向量表)是一张跳转表,表目k包含异常k的处理程序代码的地址
![](https://i-blog.csdnimg.cn/blog_migrate/bafdd21e7d1e6897df2a5f83f6ca9268.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1efd7e5b743a18de56609173f6894891.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1adcb40e99b726701b580944b4addb7f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/56bb5a3fe405f8d1ff38dbd5707175f4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/49d7f830c682bb849bbc6ced6f3cb9ce.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bf268099ea94f2cb20561652463781bc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7aaf79c696dac920a7ed19a7fb5aab4a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/895ecc0de4131dfb6f03ba0a4b6f93aa.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5f1b6ffabaecddba7e3498a3bdb36e87.png)
- 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)
- 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.3-2.4)
- 计算机系统课程 笔记总结 CSAPP第三章 程序的机器级表示(3.2-3.4)
- 计算机系统课程 笔记总结 CSAPP第三章 程序的机器级表示(3.5-3.7)
- 计算机系统课程 笔记总结 CSAPP第三章 程序的机器级表示(3.8-3.10)
- 计算机系统课程 笔记总结 CSAPP第四章 处理器体系结构(4.1-4.3)
- 计算机系统课程 笔记总结 CSAPP第五章 优化程序性能(5.1-5.14)
- 计算机系统课程 笔记总结 CSAPP第六章 存储器层次结构(6.2-6.6)
- 计算机系统课程 笔记总结 CSAPP第七章 链接(7.1-7.13)
- 计算机系统课程 笔记总结 CSAPP第八章 异常控制流(8.0-8.1)
- 计算机系统课程 笔记总结 CSAPP第八章 异常控制流(8.2-8.4)
- 计算机系统课程 笔记总结 CSAPP第九章 虚拟存储器(9.1-9.5)
- 计算机系统课程 笔记总结 CSAPP第九章 虚拟存储器(9.6-9.10)
- GitHub计算机系统CSAPP课程资源