chapter08_异常控制流

  1. 基本概念

    1. 控制流

       a0, a1, ..., an-1
      

      其中,ai代表指令Ii的地址。ai->ai+1的过渡称为控制转移,这样的控制转移队列称为控制流

    2. ECF(Exceptional Control Flow, 异常控制流)

      现代os通过使得控制流发生突变,来对特殊情况做出反应,称为异常控制流

    3. ECF发生在计算机系统的各个层次

       硬件层 --- 硬件检测到的事件会触发控制转移到异常处理程序
      
       操作系统层 --- 内核上下文切换将控制从一个用户进程转向另一个用户进程
      
       应用层 --- 一个进程向另一个进程发**信号**,接收进程会将控制转向信号处理程序
      
    4.  异常 --- 硬件和操作系统交界
      
       进程和信号 --- 应用和操作系统交界
      
       非本地跳转(例如try/catch/throw) --- 应用层
      
  2. 异常

    1. 处理器的状态变化称为事件

      (1) 事件可能和当前指令相关

       eg. 缺页、除0
      

      (2) 事件可能和当前指令无关

       eg. 定时器信号、IO请求完成
      
    2. 异常处理的原理

      (1) 系统为每种可能出现的异常分配一个异常号

      (2) 在系统启动时,系统初始化一个异常表:异常表的索引是异常号,对应的是异常处理程序的地址

      (3) 异常处理程序运行在内核态

    3. 异常的类别

      (1) 中断

      1° IO设备(网络适配器、磁盘控制器、定时器),向处理器芯片的一个管脚发信号触发中断

      2° 唯一一种异步类型的异常

      (2) 陷阱

      有意的异常,目标是用户程序向内核请求服务,陷阱提供了这个接口

      2° 执行

       syscall n 
      

      指令,请求某个内核服务(例如读文件read、创建新进程fork、加载一个新程序execve、终止当前进程exit)

      系统调用的过程类似函数调用。但是函数调用在用户模式下,系统调用在内核模式

      (3) 故障

      1° 执行故障处理程序,如果能修复就重新执行,修复不了就返回内核的abort例程终止程序

      2° 典型的故障异常是缺页异常

      (4) 终止

      1° 典型的终止异常是硬件错误

      2° 终止处理程序会直接返回内核的abort例程终止程序

      (5) 总结

      类别 原因 同步or异步 返回行为
      中断 IO设备的信号 异步 总是返回到下一条指令
      陷阱 有意进行的系统调用 同步 总是返回到下一条指令
      故障 潜在可恢复的错误 同步 要么返回到当前指令重新执行,要么abort终止应用程序
      终止 不可恢复的错误 同步 abort终止应用程序
  3. 进程

    1. 基本概念

      (1) 定义

      一个执行中程序的实例。

      系统中的每个程序都是运行在某个进程的上下文

      (2) 上下文(context)

      由程序正确运行所需的状态组成。

      包括:

       1° 存储器中程序的代码和数据
      
       2° 栈
      
       3° 通用目的寄存器中的内容
      
       4° 程序计数器
      
       5° 环境变量
      
       6° 打开文件的描述符集合
      

      (3) 进程提供的抽象

      1° 一个独立的逻辑控制流

       ---- 提供了一个假象,让人们觉得程序在独占处理器
      

      2° 一个私有的地址空间

       ---- 提供了一个假象,让人们觉得程序在独占存储器系统
      
    2. 逻辑控制流

      (1) 进程轮流使用处理器,然后被抢占

       A    ------
      
       B          -----
      
       C               --
      
       A                 -------
      

      但是每个进程看上去都像是在独占处理器

      (2) 并发进程

      任何逻辑流在时间上和其他逻辑流有重叠的进程之间称为并发进程

      eg.

       A 和 B
      
       A 和 C
      
       但是 B 和 C 就不是并发进程
      

      (3) 时间片

      一个进程在执行它的控制流的一部分的每一时间段叫做时间片

    3. 私有地址空间

      (1) 一个进程为每个程序提供它自己的私有地址空间,一般而言,和这个空间中某个地址相关联的存储器字节不可被读写

      (2) 对于n位地址的机器,地址空间是2^n个可能地址的集合

      (3) 每个地址空间的结构类似

      顶部1/4预留给内核,底部3/4预留给用户程序,包括通常的文本、数据、堆

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值