异常

控制流

从给处理器加电开始到断电,PC假设一个值序列a,a…a,其中每个a就是指令I的地址,每次从a到a的过渡即为控制转移(control transfer),控制转移序列即为处理器的控制流(control flow),而**异常就是控制流中的突变,用来响应处理器状态中的某些变化**,其基本思想如下
image.png

四类异常⭐

类别 原因 异步/同步 返回行为
interrupt-中断 来自I/O设备的信号 异步 总是返回到下一条指令
trap-陷阱 有意的异常 同步 总是返回到下一条指令
fault-故障 潜在的可恢复错误 同步 可能返回到当前指令
abort-终止 不可恢复的错误 同步 不会返回

异常处理

异常处理是软硬件一起协作的过程:

  • 操作系统在内存中分配并初始化异常表
  • 运行时CPU检测到事件,明确异常号k,使用其索引异常表,找到适当的异常处理程序地址
  • 开始处理异常 | 处理器 | 内存 | | :—-: | :—-: | | image.png | image.png |

线程与进程

image.png
进程(process)具有两大特点:

  • 资源所有权: 进程包含存放进程映像的虚拟地址空间
  • 调度/执行: 进程具有执行状态和优先级,是可被系统调度与分派的实体

通常把调度/执行的基本单位称为线程,拥有资源所有权的基本单位称为进程

多线程

操作系统在单个进程中支持多个并发执行路径的能力叫做多线程(multithreading)

线程与进程的区别

进程 线程
关联属性
- 存放映像的虚拟地址空间
- 对处理器,其他进程,文件和IO资源的受保护访问

- 线程执行状态
- 未运行线程的上下文
- 执行栈
- 存放局部变量的静态存储空间
- 与其他进程内线程共享的内存和资源访问
进程管理
- 进程只有一个相关的控制块和地址空间
- 进程运行时,CPU寄存器被进程控制
- 未运行时,保存寄存器中内容

image.png |
- 每个线程有单独的栈和控制块,其中包含寄存器值,优先级等线程相关属性
- 进程中所有线程共享进程的状态和资源
image.png |


选择题知识点

  1. 异常是①需要硬件&软件协作处理③依赖硬件:event的发现需要timer一类的硬件
  2. 对于异常处理程序(exception handle),它可能不会返回,也可能返回到异常发生处
  3. X86中system call的实现需要:trap;

demand paging的实现需要:fault;
hard disk interrupt的实现需要interrupt

  1. ⭐进程是资源所有权的单位;线程是调度/执行的单位
  2. ⭐以下关于进程的说法正确的是:all

①通过进程,可使程序独占CPU和memory
②进程是一个运行的程序
③进程可由异常实现

  1. MessageLoop的相关函数有GetMessage(),TranslateMessage(),DispatchMessage()
  2. WIndows程序的起点都是WinMain()
  3. WIndows系统内核态线程同步的实现依靠:信号量(semaphore)
  4. 优先级倒置(Priority inversion)指高优先级线程间接等待低优先级线程
  5. 在时间共享操作系统中,轮询(polling)是不可取的,因为会导致时间浪费
  6. 下列适合线程的情况有:all

背景进程:数据比较,拼写检查;
页面呈现:在整个web page到达前;
预先加载:在用户还未浏览到下方界面时

  1. 可重入函数(reentrant function)可并行的被不止一个线程调用
  2. 锁(lock)指限制临界区(critical section)的访问
  3. win下线程①由内核级线程实现②有多种同步机制,而linux下是用户级线程
  4. 一个进程的多个线程共享一个虚拟地址空间