-
基本概念
-
控制流
a0, a1, ..., an-1
其中,ai代表指令Ii的地址。ai->ai+1的过渡称为控制转移,这样的控制转移队列称为控制流
-
ECF(Exceptional Control Flow, 异常控制流)
现代os通过使得控制流发生突变,来对特殊情况做出反应,称为异常控制流
-
ECF发生在计算机系统的各个层次
硬件层 --- 硬件检测到的事件会触发控制转移到异常处理程序 操作系统层 --- 内核上下文切换将控制从一个用户进程转向另一个用户进程 应用层 --- 一个进程向另一个进程发**信号**,接收进程会将控制转向信号处理程序
-
异常 --- 硬件和操作系统交界 进程和信号 --- 应用和操作系统交界 非本地跳转(例如try/catch/throw) --- 应用层
-
-
异常
-
处理器的状态变化称为事件
(1) 事件可能和当前指令相关
eg. 缺页、除0
(2) 事件可能和当前指令无关
eg. 定时器信号、IO请求完成
-
异常处理的原理
(1) 系统为每种可能出现的异常分配一个异常号
(2) 在系统启动时,系统初始化一个异常表:异常表的索引是异常号,对应的是异常处理程序的地址
(3) 异常处理程序运行在内核态
-
异常的类别
(1) 中断
1° IO设备(网络适配器、磁盘控制器、定时器),向处理器芯片的一个管脚发信号触发中断
2° 唯一一种异步类型的异常
(2) 陷阱
1° 有意的异常,目标是用户程序向内核请求服务,陷阱提供了这个接口
2° 执行
syscall n
指令,请求某个内核服务(例如读文件read、创建新进程fork、加载一个新程序execve、终止当前进程exit)
3° 系统调用的过程类似函数调用。但是函数调用在用户模式下,系统调用在内核模式下
(3) 故障
1° 执行故障处理程序,如果能修复就重新执行,修复不了就返回内核的abort例程终止程序
2° 典型的故障异常是缺页异常
(4) 终止
1° 典型的终止异常是硬件错误
2° 终止处理程序会直接返回内核的abort例程终止程序
(5) 总结
类别 原因 同步or异步 返回行为 中断 IO设备的信号 异步 总是返回到下一条指令 陷阱 有意进行的系统调用 同步 总是返回到下一条指令 故障 潜在可恢复的错误 同步 要么返回到当前指令重新执行,要么abort终止应用程序 终止 不可恢复的错误 同步 abort终止应用程序
-
-
进程
-
基本概念
(1) 定义
一个执行中程序的实例。
系统中的每个程序都是运行在某个进程的上下文中
(2) 上下文(context)
由程序正确运行所需的状态组成。
包括:
1° 存储器中程序的代码和数据 2° 栈 3° 通用目的寄存器中的内容 4° 程序计数器 5° 环境变量 6° 打开文件的描述符集合
(3) 进程提供的抽象
1° 一个独立的逻辑控制流
---- 提供了一个假象,让人们觉得程序在独占处理器
2° 一个私有的地址空间
---- 提供了一个假象,让人们觉得程序在独占存储器系统
-
逻辑控制流
(1) 进程轮流使用处理器,然后被抢占
A ------ B ----- C -- A -------
但是每个进程看上去都像是在独占处理器
(2) 并发进程
任何逻辑流在时间上和其他逻辑流有重叠的进程之间称为并发进程
eg.
A 和 B A 和 C 但是 B 和 C 就不是并发进程
(3) 时间片
一个进程在执行它的控制流的一部分的每一时间段叫做时间片
-
私有地址空间
(1) 一个进程为每个程序提供它自己的私有地址空间,一般而言,和这个空间中某个地址相关联的存储器字节不可被读写
(2) 对于n位地址的机器,地址空间是2^n个可能地址的集合
(3) 每个地址空间的结构类似
顶部1/4预留给内核,底部3/4预留给用户程序,包括通常的文本、数据、堆
-
chapter08_异常控制流
最新推荐文章于 2023-04-11 15:56:39 发布
本文介绍了异常控制流(ECF)的概念,包括中断、陷阱、故障和终止,以及它们在处理器和操作系统中的处理方式。还详细讲解了进程的基本概念,如进程的定义、上下文、并发性和地址空间,以及用户模式和内核模式的区别。此外,讨论了上下文切换、系统调用、错误处理、进程控制(如fork和exit)以及信号机制。最后提到了非本地跳转在异常处理中的应用。
摘要由CSDN通过智能技术生成