当前位置: 首页 > news >正文

十三、异常和中断的基本概念

目录
  • 核心思想
  • 一、中断
  • 二、异常
  • 三、中断与异常的相同点
  • 四、中断与异常的关键区别
  • 五、总结与重要性


计算机系统中的两个核心概念:异常中断

它们都是计算机体系结构中的重要机制,用于处理CPU正常指令流之外的“意外”事件,使得CPU能够高效地响应内部错误和外部请求。两者非常相似,有时会混用,但在严格意义上,它们有明确的区别。

核心思想

CPU通常按顺序一条接一条地执行指令(程序计数器PC顺序递增)。但有时需要打断这个流程,去处理一些更紧急或更重要的事情。处理完后,再回到原来的地方继续执行。为了实现这个功能,就需要中断和异常机制


一、中断

中断主要来自CPU外部,与当前执行的指令无关,是异步事件。

  1. 定义

    • 中断是由外部硬件设备(如键盘、鼠标、硬盘、网卡、定时器等)发出的信号,用来通知CPU某个事件已经发生,需要CPU来处理。
    • 因为它是由外部硬件触发的,与CPU正在执行的指令没有直接关系,所以它的发生是异步的(无法预知确切时间)。
  2. 目的

    • 实现CPU与外部设备之间的高效协同(I/O方式之一)。如果没有中断,CPU就需要不断地去查询各个设备的状态(轮询),这会浪费大量计算资源。有了中断,设备准备好后“主动”通知CPU,CPU就可以去处理其他任务,大大提高了效率。
  3. 分类

    • 可屏蔽中断:可以通过在CPU中设置中断屏蔽位来忽略的中断。例如,网卡、声卡产生的中断。当CPU正在处理非常关键、不允许被打断的任务时,就会屏蔽这些中断。
    • 不可屏蔽中断:非常紧急的硬件故障,绝对不能忽略,必须立即处理。例如,电源故障、内存读写错误等。
  4. 类比

    • 你正在看书(CPU执行程序),突然电话铃响了(外部设备发起中断请求)。你会在书上做个记号(保存当前上下文),然后去接电话(执行中断处理程序)。通完电话后,你回来找到记号的地方继续看书(恢复上下文,继续执行)。

二、异常

异常主要来自CPU内部,由当前正在执行的指令直接导致,是同步事件。

  1. 定义

    • 异常是CPU在执行指令过程中检测到的特殊或错误情况。例如,除以零、访问非法内存地址、执行了一条特权指令等。
    • 因为它是由当前指令的执行直接引发的,所以它的发生是同步的(只要执行这条指令,就一定会发生)。
  2. 目的

    • 处理程序运行时的错误,或为操作系统提供陷入内核的接口。
  3. 分类

    • 故障:通常是可以修复的错误。CPU会转到处理程序,修复后重新执行这条出错的指令。例如缺页异常:程序访问的内存地址不在物理内存中,操作系统会从硬盘加载所需页面,然后重新执行那条指令,这次就能成功了。
    • 陷阱有意安排的异常,通常用于实现系统调用。程序主动执行一条特殊指令(如int 0x80syscall)来触发异常,从而进入操作系统内核,请求内核服务。这是用户程序主动向操作系统请求服务的方式。
    • 中止:非常严重的、不可恢复的错误硬件错误。通常无法修复,处理程序只能尽力记录错误信息并终止程序。例如硬件校验错误。
  4. 类比

    • 你正在看书(CPU执行程序),遇到一个不认识的字(执行指令时发生异常,如除零)。你停下来,去查字典(执行异常处理程序)。查完后,你可能回来继续读这个字(故障,重试指令),或者发现是书印错了,只好跳过这一行(中止,终止程序)。

三、中断与异常的相同点

  1. 硬件机制:都是通过硬件来检测和发起的。
  2. 处理流程:处理过程类似。
    • 响应:CPU检测到事件。
    • 保护现场:暂停当前程序,将其状态(寄存器、程序计数器等)保存到栈中。
    • 查找处理程序:根据一个预先设定好的表(中断描述符表IDT或异常向量表),通过一个唯一的编号(向量号)找到对应的处理程序地址。
    • 执行处理程序:跳转到该地址执行特定的处理代码(通常是操作系统内核的一部分)。
    • 恢复现场:处理完毕后,恢复之前保存的状态,返回原程序继续执行。

四、中断与异常的关键区别

特性 中断 异常
来源 外部于CPU(各种硬件设备) 内部于CPU(当前执行的指令)
同步/异步 异步:发生时间不确定,与指令流无关 同步:由特定指令执行导致,必然发生
是否可屏蔽 部分可屏蔽(可屏蔽中断) 不可屏蔽:一旦发生必须处理
主要目的 响应外部事件,实现设备通信 处理错误,实现系统调用

五、总结与重要性

中断和异常机制是现代计算机系统的基石,它们使得:

  1. 高效I/O:CPU不用浪费时间去轮询设备,实现了CPU与外部设备的并行工作。
  2. 多任务与分时:操作系统依靠时钟中断(一种外部中断)来强制收回CPU使用权,在不同的程序间切换,从而实现“同时”运行多个程序的效果。
  3. 系统保护:当用户程序试图执行非法操作(如访问内核内存)时,会触发异常,将控制权交还给操作系统,由操作系统来决定如何处理(通常是终止程序),从而保护了系统的稳定和其他程序的安全。
  4. 用户与内核的桥梁系统调用通过陷阱异常实现,这是用户程序使用操作系统服务的唯一方式。

简单来说,中断让CPU“眼观六路,耳听八方”,能及时响应外部世界;而异常让CPU“三省吾身”,能及时处理内部错误和请求系统服务。 两者完美结合,共同构建了一个稳定、高效、功能强大的计算环境。

http://www.wxhsa.cn/company.asp?id=2690

相关文章:

  • 【关注可白嫖源码】25046基于SpringBoot的少儿编程管理系统设计与达成
  • 2024-2025第二学期计算机网络助教工作总结
  • 信息搜集、物联网搜索引擎、ARL灯塔系统、Nmap
  • 工具链部署实用技巧 7|模型设计帧率推理时耗时与带宽分析
  • 基于Django的“社区爱心养老管理系统”设计与开发(源码+数据库+文档+PPT) - 实践
  • 关于导出bangumi.tv用户收藏/观看数据
  • ECT-OS-JiuHuaShan框架元推理,为何超乎想象,难以置信?
  • 实用指南:Excel转图片excel2img库bug修复:AttributeError ‘parent‘ 问题解决方案
  • ECT-OS-JiuHuaShan框架元推理,其运行与推理,是自指自洽性的唯一证明
  • 数据结构与算法-32.图-加权无向图最小生成树
  • 找到字符串中所有字母异位词-leetcode
  • 配置gemini
  • 基于chrony的NTP校时配置方法
  • windows能过注册表修改c盘默认目录
  • ECT-OS-JiuHuaShan框架元推理,就是普罗米修斯主义,穷神知化
  • UI/UX 桌面操作系统应该做好的几个功能
  • 完整教程:1.1 汽车运行滚动阻力
  • 鸿蒙用户首选项数据持久化
  • 基于Transformer的预训练大语言模型,如何区分文本位置?
  • UE RPC介绍
  • part 5
  • GAS_Aura-Code Clean Up
  • 最强大模型评测工具EvalScope
  • JS监听DOM元素的变化
  • CF1485F Copy or Prefix Sum
  • 拉格朗日反演定理(LIFT)
  • 云斗八月银组做题记录
  • 详细介绍:24年秋招-京东-后端开发岗-第1批笔试总结
  • 深入解析:中国AI云市场报告:阿里云份额达35.8%,高于2至4名总和
  • 关于前端的一些疑问整理2(选择器)