Computer Systems A Programmer’s Perspective III (深入理解计算机系统 第八章 )

异常控制流

Exceptional Control Flow ECF

简介

异常控制流发生在计算机系统的各个层次,如:

  • 硬件层,硬件检测到的事件会触发控制突然转移到异常处理程序,如硬件定时器定期产生信号;包到达网络适配器后,必须存储在存储器中.
  • 操作系统层, 内核通过上下文切换将控制从一个用户进程转移到另一个用户进程.
  • 应用层: 一个进程可以发送信号到另一个进程,而接受者会将控制突然转移到它的一个信号处理程序.
  • 一个程序可以通过回避通常的栈规则,并执行到其他函数中任意位置的非本地跳转来对错误做出反应.

理解ECF FOR:
  1. ECF是操作系统用来实现I/O,进程和虚拟存储器的基本机制.
  2. 应用程序通过使用一个叫trap(陷阱)或者system call(系统调用)的ECF形式,向操作系统请求服务,比如读写磁盘,从网络读取数据,创建进程等.
  3. 编写unix外壳和web服务器需要了解ECF
  4. 并发.
  5. 理解软件异常 try catch等.

Exceptions

异常表 . . 起始地址存在名为 异常表基址寄存器 特殊的CPU寄存器中.exception table base register.

异常与过程调用的不同:
  • 过程调用时,在跳转到处理程序之前,处理器将返回地址压入栈中,然而根据异常的类型,返回地址要么是当前指令,要么是下一条指令.
  • 处理器也把额外的处理器状态压入栈中,在处理程序返回时,重新开始被中断的程序会需要这些状态.
  • 若控制从一个用户程序转移到内核,那么所有这些项目都被压倒内核栈中,而不是压倒用户栈中.
  • 异常处理程序运行在内核模式下,这意味着他们对所有的系统资源都有完全的访问权限.

一旦硬件触发了异常,剩下的工作就由异常处理程序在软件中完成.完成后执行一条特殊的”从中断返回”指令,可选地返回到被中断的程序,该指令将适当的状态弹回到处理器的控制和数据寄存器中. 若异常中断的是一个用户进程,就将状态回复为用户模式,然后把控制权返回给它.

异常的类别
type cause 同步/异步 return
interrupt 来自I/O设备的信号 异步 总是返回到下一条指令
trap 有意的异常 同步 总是返回到下一条指令
fault 潜在的可恢复的错误 同步 可能返回到当前指令
abort 不可恢复的错误 同步 不会返回
  • interrupt

    中断是异步发生的,是来自处理器外部的I/O设备的信号的结果.硬件中断不是由任何一条专门的指令造成的,从这个意义上来说它是异步的. 异常中断的异常处理程序通常称为中断处理程序. interrupt handler.

    • 流程
      1. I/O设备,如磁盘控制器,定时器芯片,网络适配器等,通过向CPU芯片上的一个引脚发信号,并将异常号放在系统总线上,以触发中断,这个异常号标识了引起中断的设备.
      2. 在当前指令执行完后,CPU注意到中断引脚的电压变高了,就从系统总线读取异常号,然后调用适当的中断处理程序.
      3. 中断处理程序返回后,继续执行下一条指令.
  • trap

    执行一条指令而引起的有意的异常.

  • fault
  • abort

Processes

一个执行中的程序的实例. 每个程序都是运行在某个进程的上下文context中的. context : 由程序正确运行所需的状态组成,包括放在存储器中的程序的代码和数据,它的栈,通用目的寄存器的内容,程序计数器,环境变量以及打开文件描述符的集合.

关键抽象
  • 一个独立的逻辑控制流, 好像进程中的程序独占地使用了处理器;
  • 一个私有的地址空间 , 好像进程中的程序独占地使用存储器系统.

理解 并发流(concurrent flow ) 与 并行流 (parallel flow). 用户模式与内核模式.

上下文切换.

高速缓存污染 POLLUTION

硬件高速缓存存储器不能与上下文切换很好的交互,必须重新热身.

System Call Error Handling

Process Controll

  1. 获取进程ID getpid getppid
  2. 创建与终止进程. fork , exit ,
  3. 回收子进程. 重要 wait , waitpid ,
  4. 休眠进程. sleep pause
  5. 加载并运行程序 execve
  6. 利用fork与execve来运行程序.

Signals

Nonlocal Jumps

Tools for manipulating Processes

Summary

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值