CPU异常和中断:原理、分类与处理

什么是CPU异常和中断?

当你的电脑正在运行一个程序,突然你按下了键盘上的某个键,或者进行的加法运算结果溢出了,这时,CPU需要暂停正在做的事情,先去处理这个突然出现的事件。这些情况就是本文要谈的主题:CPU的异常和中断。

异常和中断就好像你正在做一件事情,但突然有人叫住你,让你去做另一件事情。你不得不停下手头的工作,处理那个突然出现的事情。在这个过程中,你可能需要记住你正在做的事情到哪一步了,以便待会儿可以接着做。这就是CPU异常和中断的基本概念。

什么是"加法运算溢出"?假设我们的计算机只能处理两位数的加法,如果我们让它计算99+2,结果超过了它能处理的范围,这就是所谓的加法运算溢出。

CPU异常和中断是如何发生和捕捉的?

异常和中断的发生和捕捉过程就像我们的身体对外界环境的反应。比如,当你的手碰到热水时,你的皮肤会立即向大脑发送一个痛感信号,大脑接收到这个信号后,会立即做出反应,让你的手迅速离开热水。

同样,键盘的按键信号会通过计算机总线传递到CPU,加法运算溢出这类事件发生在CPU内部,CPU的硬件层面会捕捉到这些异常信号,然后触发相关处理流程。

在这个过程中,CPU会先保存当前程序运行的现场到程序栈(就像你在处理紧急事件前,先记住你正在做的家务到哪一步了),然后根据操作系统的异常表(中断向量表)查找对应的处理程序,并运行它。这其中会涉及到上下文切换。

上下文切换

上下文切换就好像你正在做一件事情,但是需要暂时去做另一件事情,你需要记住你正在做的事情到哪一步了,以便待会儿可以接着做。在CPU异常触发时,操作系统会将当前程序的所有寄存器保存到程序栈中,这就是所谓的上下文切换。待异常处理程序执行完毕,CPU可以再进行上下文切换,继续执行之前的程序的下一条指令。

寄存器就好比一个小本子,程序可以在上面写下它需要记住的信息。程序栈就好比一个书架,当一个程序需要暂停时,它就把自己的小本子放到书架上,等到它需要继续运行时,再从书架上取下自己的小本子。

CPU异常的分类

CPU异常大致可以分为四类:中断、陷阱、故障和中止。

  1. 中断,就好像你正在看书,突然有人叫你去吃饭,你就需要停下来去吃饭。比如IO设备(鼠标、键盘、触摸屏等)发送了一个信号到CPU,CPU接收到这个信号后,就会触发中断类型的异常。
  2. 陷阱,或称为软中断,就好像你自己决定停下来去做别的事情。这是程序自己刻意触发的,比如系统调用,一个程序需要打开一个文件,但是它自己没有权限,它会发起一个系统调用,请求操作系统帮助它打开这个文件。
  3. 故障,就好像你在做一件事情时,出了一点小问题,你需要先去解决这个问题,然后再回来继续做这件事情。这是因为CPU在运算过程中发生了异常,比如内存缺页错误。这就像你在翻书时,突然发现有一页被撕掉了,你需要先找到这一页,然后再继续阅读。
  4. 中止,就好像你在做一件事情时,出了一个大问题,你无法解决,只能放弃这件事情。这是因为CPU遇到了无法恢复的故障,例如发现内存中的数据存在错误且无法修正、在处理某个CPU异常的时候又出现了一个新的CPU异常。这就像你在翻书时,发现整本书都被撕掉了,你无法继续阅读,只能放弃。

CPU异常和中断是计算机运行的重要环节,理解它们的原理和处理方式,有助于我们更好地理解计算机的工作原理。通过本文,希望你能对CPU异常和中断有更深入的理解。

关注微/信/公/众\号:萤火架构,提升技术不迷路!

相关推荐
得物技术4 小时前
从CPU冒烟到丝滑体验:算法SRE性能优化实战全揭秘|得物技术
cpu
444A4E1 天前
深入Linux进程优先级:Nice值与O(1)调度器原理
linux·操作系统
夏旭泽1 天前
计算机组成原理-总线
计算机组成原理
明月看潮生1 天前
青少年编程与数学 01-011 系统软件简介 07 iOS操作系统
ios·青少年编程·操作系统·系统软件
明月看潮生1 天前
青少年编程与数学 01-011 系统软件简介 04 Linux操作系统
linux·青少年编程·操作系统·系统软件·编程与数学
明月看潮生1 天前
青少年编程与数学 01-011 系统软件简介 03 NetWare操作系统
青少年编程·操作系统·系统软件·编程与数学
漫步企鹅1 天前
【CPU】英特尔酷睿Ultra 5 225H与Ultra7 258V(Lunar Lake架构)PK
pc·cpu·intel·联想笔记本·pk
明月看潮生1 天前
青少年编程与数学 01-011 系统软件简介 06 Android操作系统
android·青少年编程·操作系统·系统软件·编程与数学
Thanks_ks2 天前
计算机组成原理核心剖析:CPU、存储、I/O 与总线系统全解
计算机组成原理·计算机技术·存储系统·cpu 结构·i/o 设备·总线系统·硬件原理
明月看潮生2 天前
青少年编程与数学 01-011 系统软件简介 02 UNIX操作系统
服务器·青少年编程·操作系统·unix·系统软件