计算机组成原理:计算机究竟是如何处理异常的

异常:硬件、系统和应用的组合拳

一提到计算机当中的异常(Exception),可能你的第一反应就是 C++ 或者 Java 中的Exception。不过我们今天讲的,并不是这些软件开发过程中遇到的“软件异常”,而是和硬件、系统相关的“硬件异常”。

尽管,这里我把这些硬件和系统相关的异常,叫作“硬件异常”。但是,实际上,这些异常,既有来自硬件的,也有来自软件层面的。

比如,我们在硬件层面,当加法器进行两个数相加的时候,会遇到算术溢出;或者,玩游戏的时候,按下键盘发送了一个信号给CPU,CPU要去执行现有流程之外的指令,这也是一个“异常”。

同样,来自软件层面的,比如我们的程序在进行系统调用,发起一个读文件的请求。这样应用程序向系统调用发起请求的情况,一样是通过“异常”来实现的。

异常,其实是一个硬件和软件组合在一起的处理过程

  • 异常的前半生,也就是异常的发生和捕捉,是在硬件层面发生的
  • 异常的后半生,也就是异常的处理,是由软件来完成的

计算机会为每一种可能发生的异常,分配一个异常代码(也叫做中断向量)。异常发生的时候,通常是CPU检测到了一个特殊的信号。这些信号,在组成原理里面,一般叫做发生了一个事件。CPU在检测到事件的时候,其实也就拿到了对应的异常代码。

这些异常代码里,IO发出的信号的异常代码,是由操作系统来分配的,也就是有软件来设定的。而像加法移除这样的异常代码,则是由CPU预先分配好的,也就是由硬件来分配的。可以看出,这也是由软件和硬件组合起来处理异常的过程

拿到异常代码后,CPU就会触发异常处理的流程。计算机在内存中,会保存一个异常表(也叫做中断向量表),好和上面的中断向量对应起来。表中存放的是不同的异常代码对应的异常处理程序(Exception Handler)所在的地址。

CPU拿到异常码之后,会先把当前的程序执行的现场,保存到程序栈里面,然后根据异常码查询,找到对应的异常处理程序,最后把后继指令执行的控制权,交给这个异常处理程序

在这里插入图片描述
这样“检测异常,拿到异常码,再根据异常码进行查表处理”的模式,在日常开发的过程中是很常见的

在这里插入图片描述
比如说,现在我们日常进行的 Web 或者 App 开发,通常都是前后端分离的。前端的应用,会向后端发起 HTTP 的请求。当后端遇到了异常,通常会给到前端一个对应的错误代码。前端的应用根据这个错误代码,在应用层面去进行错误处理。在不能处理的时候,它会根据错误代码向用户显示错误信息。

再比如说,Java 里面,我们使用一个线程池去运行调度任务的时候,可以指定一个异常处理程序。对于各个线程在执行任务出现的异常情况,我们是通过异常处理程序进行处理,而不是在实际的任务代码里处理。这样,我们就把业务处理代码就和异常处理代码的流程分开了。

异常的分类:中断、陷阱、故障和中止

异常可以由硬件触发,也可以由软件触发。那我们平时会碰到哪些异常呢?

(1)中断(Interrupt)

  • 就是程序在执行到一半的时候,被打断了。这个打断执行的信号,来自于CPU外部的IO设备
  • 你在键盘上按下一个案件,就会对应触发一个响应的信号到CPU里面。CPU里面某个开关的值发生了变化,也就触发了一个中断类型的异常

(2)陷阱(Trap)

  • 陷阱,是程序员“故意”主动触发的异常。就好像你在程序里面打了一个“断点”,这个断点就是设下一个“陷阱”。当程序的指令执行到这个位置的时候,就掉到了这个陷阱中。然后的,对应的异常处理程序就会来处理这个“陷阱”当中的猎物。
  • 最常见的一类陷阱,发生在我们的应用程序调用系统调用的时候,也就是从程序的用户态切换到内核态的时候。
  • 我们的应用程序通过系统调用去读取文件、创建进程,其实也是通过触发一次陷阱来进行的。这是因为,我们用户态的应用程序没有权限来做这些事情,需要把对应的流程交给有权限的异常处理程序来进行

(3)故障(Fault)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
拯救者计算机组成原理是一门研究计算机硬件和软件之间相互关系的学科。它主要关注计算机的各个组成部分以及它们如何协同工作来实现计算和数据处理的功能。 拯救者计算机组成原理包括以下几个方面的内容: 1. 计算机的基本组成部分:包括中央处理器(CPU)、内存、输入输出设备等。中央处理器是计算机的核心,负责执行指令和进行数据处理;内存用于存储程序和数据;输入输出设备用于与外部环境进行交互。 2. 指令执行过程:计算机通过执行一条条指令来完成各种任务。指令执行过程包括指令的获取、解码、执行等步骤。 3. 存储器层次结构:计算机中的存储器按照速度和容量的不同可以划分为多个层次,包括高速缓存、主存储器和辅助存储器。存储器层次结构的设计旨在提高计算机的性能和效率。 4. 输入输出系统:计算机通过输入输出系统与外部设备进行数据交换。输入输出系统包括输入输出接口、设备控制器和外部设备等。 5. 总线系统:计算机中的各个组件通过总线进行数据传输和通信。总线系统包括地址总线、数据总线和控制总线。 6. 中断和异常处理计算机在执行过程中可能会遇到中断和异常情况,需要进行相应的处理。中断和异常处理机制保证了计算机的稳定性和可靠性。 7. 计算机性能评价:计算机的性能评价包括指令执行时间、吞吐量、响应时间等指标,用于衡量计算机的性能和效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值