2022-2-11 计算机组成原理 —— 异常和中断

一、来自硬件层面的异常

硬件的异常可能由多个原因产生。

  • 算术溢出,计算发生溢出
  • 通过键盘和鼠标给网络发送信息
  • 读取文件的请求也是一个异常

异常是软件和硬件组合到一起的处理过程。异常的发生和捕捉由硬件发生,异常的处理由软件来完成。

异常代码(中断向量)—— 异常发生的时候,CPU 检测到了特殊的信号。
特殊信号的分配:

  • I/O 发出的信号的异常代码,是由操作系统来分配的
  • 加法溢出这样的异常代码,是由硬件来分配的

异常表(中断向量表)
存放的是不同的异常代码对应的异常的程序处理地址。
在这里插入图片描述
检测异常,拿到异常,根据异常的代码进行处理
在这里插入图片描述
二、异常的分类

  • 中断:CPU 外部的设备向 CPU 发送中断的信息。
  • 陷阱:程序员主动设置的断点,程序执行到这个陷阱就会中断执行,转而去执行异常处理程序。最常见的陷阱是系统调用(用户态到内核态的切换),打开文件和创建新的进程。
  • 故障:故障不是在编写程序的时候刻意设置的。而是在程序运行的时候发生的,也同样需要对应的程序去处理。
    (故障 和 中断、陷阱的区别是:处理完故障后,仍然回来处理当前的指令,而中断和陷阱回来处理下一条指令)
  • 中止:当程序遇到故障无法重新运行,程序自然终止。
    在这里插入图片描述
  • 同步 —— 在程序内部发生的异常:陷阱、故障、终止
  • 异步 —— 在程序外部发生的异常:中断

处理流程:保存现场,查询异常代码,异常处理程序调用

三、异常的处理:上下文切换

1、将目前正在执行的指令去压栈。同时将 CPU 内当前运行程序使用的寄存器里的值都压入栈中。

2、陷阱涉及到内核态与用户态的切换,将数据压入到内核栈中,而不是程序栈里。

3、故障这种异常,执行的是当前的指令,而不是下一条指令,因为当前的指令并没有正确执行完成。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值