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

26考研——中央处理器_异常和中断机制(5)

408答疑


文章目录

  • 五、异常和中断机制
    • 异常和中断的基本概念
    • 异常和中断的分类
      • 异常的分类
        • 故障 (Fault)
        • 自陷 (Trap)
        • 终止 (Abort)
      • 中断的分类
        • 可屏蔽中断
        • 不可屏蔽中断
    • 异常和中断响应过程
      • 关中断
      • 保存断点和程序状态
      • 识别异常和中断并转到相应的处理程序
  • 八、参考资料
    • 鲍鱼科技课件
    • 26王道考研书


五、异常和中断机制

  • 现代计算机中都配有完善的异常和中断处理系统,CPU 的数据通路中有相应的异常检测和响应逻辑,外设接口中有相应的中断请求和控制逻辑,操作系统中有相应的中断服务程序。
  • 这些中断硬件电路和中断服务程序有机结合,共同完成异常和中断的处理过程。

异常和中断的基本概念

  • 由 CPU 内部产生的意外事件被称为异常,有些教材中也称内中断。由来自 CPU 外部的设备向 CPU 发出的中断请求被称为中断,通常用于信息的输入和输出,有些教材中也称外中断,内中断和外中断的联系与区别如下图所示。
    在这里插入图片描述

    • 异常是 CPU 执行一条指令时,由 CPU 在其内部检测到的、与正在执行的指令相关的同步事件;
    • 中断是一种典型的由外部设备触发的、与当前正在执行的指令无关的异步事件。
  • 异常和中断处理过程的描述如下:若 CPU 在执行用户程序的第 i i i 条指令时检测到一个异常事件,或者执行第 i i i 条指令后发现一个中断请求信号,则 CPU 打断当前程序,然后转去执行相应的异常或中断处理程序。

    • 若异常或中断处理程序能够解决相应的问题,则在异常或中断处理程序的最后,CPU 通过执行异常或中断返回指令,回到被打断的用户程序的第 i i i 条指令或第 i + 1 i+1 i+1 条指令继续执行;
    • 若异常或中断处理程序发现是不可恢复的致命错误,则终止用户程序。
  • 通常情况下,对异常和中断的具体处理过程由操作系统(和驱动程序)完成。

异常和中断的处理过程基本是相同的,这也是有些教材将两者统称为中断的原因。

  • 中断和异常在本质上是一样的,但它们之间有两个重要的不同点:
    1. “缺页”或“溢出”等异常事件是由特定指令在执行过程中产生的,而中断不和任何指令相关联,也不阻止任何指令的完成。
    2. 异常的检测由 CPU 自身完成,不必通过外部的某个信号通知 CPU。对于中断,CPU 必须通过中断请求线获取中断源的信息,才能知道哪个设备发生了何种中断。

异常和中断的分类

异常的分类

  • 异常是由 CPU 内部产生的意外事件,分为硬故障中断和程序性异常。

    • 硬故障中断是由硬连线出现异常引起的,如存储器校验错、总线错误等。
    • 程序性异常也称软件中断,是指在 CPU 内部因执行指令而引起的异常事件。如整除 0、溢出、断点、单步跟踪、非法指令、栈溢出、地址越界、缺页等。
  • 按异常发生原因和返回方式的不同,可分为故障、自陷和终止。

故障 (Fault)
  • 指在引起故障的指令启动后、执行结束前被检测到的异常事件。
    • 例如,指令译码时,出现“非法操作码”;
    • 取数据时,发生“缺权”或“缺页”;
    • 执行整数除法指令时,发现“除数为 0”等。
  • 对于“缺段”“缺页”等异常事件,经处理后,可将所需的段或页面从磁盘调入主存,回到发生故障的指令继续执行,断点为当前发生故障的指令;
  • 对于“非法操作码”“除数为 0”等,因为无法通过异常处理程序恢复故障,因此不能回到原断点执行,必须终止进程的执行。
自陷 (Trap)

自陷也称陷阱或陷入,它是预先安排的一种“异常”事件,就像预先设定的“陷阱”一样。

  • 通常的做法是:事先在程序中用一条特殊指令或通过某种方式设定特殊控制标志来人为设置一个“陷阱”,当执行到被设置了“陷阱”的指令时,CPU 在执行完自陷指令后,自动根据不同“陷阱”类型进行相应的处理,然后返回到自陷指令的下一条指令执行。

  • 在 x86 机器中,用于程序调试“断点设置”和单步跟踪的功能就是通过陷阱机制实现的。此外,系统调用指令、条件自陷指令(如 MIPS 中的 teq、teqi、tne、tnei 等)等都属于陷阱指令,执行到这些指令时,无条件或有条件地自动调出操作系统内核程序进行执行。

故障异常和自陷异常属于程序性异常(软件中断)。

终止 (Abort)
  • 若在执行指令的过程中发生了使计算机无法继续执行的硬件故障,如控制器出错、存储器校验错、总线错误等,则程序将无法继续执行,只能终止,此时,调出异常服务程序来重启系统。
  • 这种异常与故障和自陷不同,不是由特定指令产生的,而是随机发生的。

终止异常和外中断属于硬件中断。

中断的分类

  • 中断是指来自 CPU 外部、与 CPU 执行指令无关的事件引起的中断,包括 I/O 设备发出的 I/O 中断(如键盘输入、打印机缺纸等),或发生某种特殊事件(如用户按 Esc 键、定时器计数时间到)等。

  • 外部 I/O 设备通过特定的中断请求信号线向 CPU 提出中断请求,CPU 每执行完一条指令就检查中断请求信号线,若检测到中断请求,则进入中断响应周期。

  • 中断可分为可屏蔽中断和不可屏蔽中断。

可屏蔽中断
  • 指通过可屏蔽中断请求线 INTR 向 CPU 发出的中断请求。
  • CPU 可以通过在中断控制器中设置相应的屏蔽字来屏蔽它或不屏蔽它,被屏蔽的中断请求将不被送到 CPU。
不可屏蔽中断
  • 指通过专门的不可屏蔽中断请求线 NMI 向 CPU 发出的中断请求。
  • 通常是非常紧急的硬件故障,如电源掉电等。这类中断请求信号不可被屏蔽,以让 CPU 快速处理这类紧急事件。

异常和中断响应过程

  • CPU 执行指令时,若发生了异常或中断请求,则必须进行相应的处理。
  • 从 CPU 检测到异常或中断事件,到调出相应的处理程序,整个过程称为异常和中断响应。
  • CPU 对异常和中断响应的过程可分为关中断、保存断点和程序状态、识别异常和中断并转到相应的处理程序。

关中断

在保存断点和程序状态期间,不能被新的中断打断,因此要禁止响应新的中断,即关中断。

  • 通常通过设置“中断允许”(IF)触发器来实现,若 IF 置为 1,则为开中断,表示允许响应中断;
  • 若 IF 置为 0,则表示关中断,表示不允许响应中断。

保存断点和程序状态

  • 为了能在异常和中断处理后正确返回到被中断的程序继续执行,必须将程序的断点(返回地址)送到栈或特定寄存器中。通常保存在栈中,这是为了支持异常或中断的嵌套。
  • 异常和中断处理后可能还要回到被中断的程序继续执行,被中断时的程序状态字寄存器 PSW 的内容也需要保存在栈或特定寄存器中,在异常和中断返回时恢复到 PSW 中。

识别异常和中断并转到相应的处理程序

异常和中断源的识别有软件识别和硬件识别两种方式。异常和中断源的识别方式不同,异常大多采用软件识别方式,而中断可以采用软件识别方式或硬件识别方式。

  • 软件识别方式是指 CPU 设置一个异常状态寄存器,用于记录异常原因。操作系统使用一个统一的异常或中断查询程序,按优先级顺序查询异常状态寄存器,以检测异常和中断类型,先查询到的先被处理,然后转到内核中相应的处理程序。

  • 硬件识别方式也称向量中断,异常或中断处理程序的首地址称为中断向量,所有中断向量都存放在中断向量表中。每个异常或中断都被指定一个中断类型号。在中断向量表中,类型号和中断向量一一对应,因此可以根据类型号快速找到对应的处理程序。

  • 整个响应过程是不可被打断的。

  • 中断响应过程结束后,CPU 就从 PC 中取出对应中断服务程序的第一条指令开始执行,直至中断返回,这部分任务是由 CPU 通过执行中断服务程序完成的,整个中断处理过程是由软/硬件协同实现的。

注意:
所有的异常和中断事件都是由硬件检测发现的。
此外,根据识别中断服务程序地址的方式,可分为向量中断和非向量中断;根据中断处理过程是否允许被打断,还可分为单重中断和多重中断。

八、参考资料

鲍鱼科技课件

b站免费王道课后题讲解:
在这里插入图片描述

网课全程班:
在这里插入图片描述

26王道考研书

相关文章:

26考研——中央处理器_异常和中断机制(5)

408答疑 文章目录 五、异常和中断机制异常和中断的基本概念异常和中断的分类异常的分类故障 (Fault)自陷 (Trap)终止 (Abort) 中断的分类可屏蔽中断不可屏蔽中断 异常和中断响应过程关中断保存断点和程序状态识别异常和中断并转到相应的处理程序 八、参考资料鲍鱼科技课件26王道…...

数据库实验报告 SQL SERVER 2008的基本操作 1

实验报告(第 1 次) 实验名称 SQL SERVER 2008的基本操作 实验时间 9月14日1-2节 一、实验内容 数据库的基本操作:包括创建、修改、附加、分离和删除数据库等。 二、源程序及主要算法说明 本次实验不涉及程序和算法。 三、测…...

Nature图形复现—两种快速绘制热图的方法

相信大家在科研过程中,会遇到热图,有时候会觉得热图理解起来比较困难,或者觉得绘制热图也比较困难。本期教程我们来深入了解热图、绘制热图。 热图是一种通过颜色深浅或色阶变化来直观展示数据分布、密度或数值大小的可视化工具。它在多个领域…...

INFINI Console 纳管 Elasticsearch 9(一):指标监控、数据管理、DSL 语句执行

Elasticsearch v9.0 版本最近已发布,而 INFINI Console 作为一款开源的非常轻量级的多集群、跨版本的搜索基础设施统一管控平台,是否支持最新的 Elasticsearch v9.0 集群管理呢?本文以 INFINI Console v1.29.2 为例,从指标监控、数…...

texlive 与 Texmaker 安装

一、安装 Texmaker 1、下载Texmaker 链接地址: Texmaker (free cross-platform latex editor) 点击 FREE DOWNLOAD ,点击 Texmaker_6.0.1_Win_x64.msi ,下载即可。 2、安装Texmaker 双击如下文件 若出现如下,点击更多信息 点击仍要运行 …...

机试刷题:进制转换3

题目来源&#xff1a;N诺 一、题目描述 二、解题思路 过程模拟&#xff0c;先转换为十进制&#xff0c;再转换为N进制即可。 注意&#xff1a;转换的时候可能出现字母&#xff0c;注意字母的表示。 用string和char类型对数据进行存储要更方便。 #include <iostream>…...

(顺序表、单链表、双链表)==>一篇解决!(Java版)

文章目录 一、线性表二、顺序表三、单链表四、双链表 一、线性表 线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。 线性表的特征&#xff1a;数据元素之间具有一种“一对一”的逻辑关系。 线性表的分类&#xff1a; 线…...

JPG与PDF格式转换器

该插件可实现JPG与PDF格式的互转。 MainForm.Designer.cs using System.Windows.Forms; namespace JpgToPdfConverter {partial class MainForm{private System.ComponentModel.IContainer components null;protected override void Dispose(bool disposing){if (disposing &…...

如何在 CentOS 7 虚拟机上配置静态 IP 地址并保持重启后 SSH 连接

在使用 CentOS 7 的虚拟机时&#xff0c;我们通常需要配置静态 IP 地址&#xff0c;以确保在每次虚拟机重启后能够通过 SSH 连接。本文将介绍如何在 CentOS 7 系统中配置静态 IP 地址&#xff0c;并确保配置在系统重启后依然生效。 步骤 1&#xff1a;检查虚拟机网络接口 首先…...

手搓传染病模型(SEIARW)

在传染病传播的研究中&#xff0c;水传播途径是一个重要的考量因素。SEAIRW 模型&#xff08;易感者 S - 暴露者 E - 感染者 I - 无症状感染者 A - 康复者 R - 水中病原体 W&#xff09;综合考虑了人与人接触传播以及水传播的双重机制&#xff0c;为分析此类传染病提供了全面的…...

【Mac 从 0 到 1 保姆级配置教程 15】- Python 环境一键安装与配置,就是这么的丝滑

文章目录 前言安装 Python 环境VSCode 配置Python 环境NeoVim 配置 Python 环境&#xff08;选看&#xff09;1. Python LSP 配置2. 打开 python 语言支持 最后参考资料系列教程 Mac 从 0 到 1 保姆级配置教程目录&#xff0c;点击即可跳转对应文章&#xff1a; 【Mac 从 0 到 …...

【递归、搜索与回溯】专题一:递归(二)

&#x1f4dd;前言说明&#xff1a; 本专栏主要记录本人递归&#xff0c;搜索与回溯算法的学习以及LeetCode刷题记录&#xff0c;按专题划分每题主要记录&#xff1a;&#xff08;1&#xff09;本人解法 本人屎山代码&#xff1b;&#xff08;2&#xff09;优质解法 优质代码…...

Spark缓存-cache

一、RDD持久化 1.什么时候该使用持久化&#xff08;缓存&#xff09; 2. RDD cache & persist 缓存 3. RDD CheckPoint 检查点 4. cache & persist & checkpoint 的特点和区别 特点 区别 二、cache & persist 的持久化级别及策略选择 Spark的几种持久化…...

记录算法笔记(2025.5.13)二叉树的最大深度

给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;root [1,null,2] …...

【Linux】简单设计libc库

&#x1f4dd;前言&#xff1a; 经过之间两篇文章&#xff0c;【Linux】基础IO&#xff08;一&#xff09;和【Linux】基础IO&#xff08;二&#xff09;的学些&#xff0c;我们对文件的基础IO已经有了一定的理解。 这篇文章我们来简单设计一下libc库&#xff0c;来复习一下文…...

milvus+flask山寨《从零构建向量数据库》第7章case2

继续流水账完这本书&#xff0c;这个案例是打造文字形式的个人知识库雏形。 create_context_db: # Milvus Setup Arguments COLLECTION_NAME text_content_search DIMENSION 2048 MILVUS_HOST "localhost" MILVUS_PORT "19530"# Inference Arguments…...

岩土拉压试验机

岩土拉压试验机&#xff0c;专门用于检测黄土的在压缩、拉伸状态下的力学特性试验。主要由试验机主机、控制系统、控制软件三部分部分组成。 主要技术参数、配置如下&#xff1a; 主 要 技 术 指 标 及 参 数 最大试验力&#xff08;kN&#xff09; 5 试验精度等级 0.5级 …...

.Net HttpClient 使用准则

HttpClient 使用准则 System.Net.Http.HttpClient 类用于发送 HTTP 请求以及从 URI 所标识的资源接收 HTTP 响应。 HttpClient 实例是应用于该实例执行的所有请求的设置集合&#xff0c;每个实例使用自身的连接池&#xff0c;该池将其请求与其他请求隔离开来。 从 .NET Core …...

【Canda】常用命令+虚拟环境创建到选择

目录 一、conda常用命令 二、conda 环境 2.1 创建虚拟环境 2.2 conda环境切换 2.3 查看conda环境 2.4 删除某个conda环境 2.5 克隆环境 三、依赖包管理 3.1 安装命令 3.2 更新包 3.3 卸载包 3.4 查看环境中所有包 3.5 查看某个包的版本信息 3.6 搜索包 四、环境…...

Lighthouse Core Web Vitals 指标详解与优化指南

vLighthouse Core Web Vitals 指标详解与优化指南 一、Core Web Vitals 概述 Google 在 2020 年推出的 Core Web Vitals(核心网页指标)是衡量用户体验质量的关键指标集合,现已成为搜索引擎排名的重要因素。Lighthouse 作为 Google 官方的网页质量评估工具,提供了对这些指…...

Qt进阶开发:QTcpServer的详解

文章目录 一、QTcpServer 简介二、常用成员函数的使用三、信号函数的使用四、虚函数的使用五、连接多客户端-服务端示例一、QTcpServer 简介 QTcpServer 是 Qt 网络模块中的一个核心类,用于实现 基于 TCP 协议的服务端(Server),它负责监听端口、接收客户端连接请求,并通过…...

Leetcode 3544. Subtree Inversion Sum

Leetcode 3544. Subtree Inversion Sum 1. 解题思路2. 代码实现 题目链接&#xff1a;3544. Subtree Inversion Sum 1. 解题思路 这一题我的思路上就是一个动态规划的思路&#xff0c;因为原则上我们只需要遍历一下所有的状态即可&#xff0c;但是这样显然时间复杂度过高&am…...

物理:由基本粒子组成的个体能否提炼和重组?

个体差异源于基本粒子组合的复杂性与随机性,这一假设若成立,确实可能为生物医学带来革命性突破——但需要突破技术、理论与系统层级的多重壁垒。以下从科学逻辑与技术路径展开分析: 一、随机组合中的共性与稳定结构 1. 自然界的自组织规律 涌现性(Emergence):尽管粒子组…...

信息学奥赛一本通 1535:【例 1】数列操作

【题目链接】 ybt 1535&#xff1a;【例 1】数列操作 【题目考点】 1. 树状数组 【解题思路】 本题为树状数组模板题&#xff0c;维护区间和&#xff0c;进行单点修改&#xff0c;区间查询。 详细讲解见&#xff1a;洛谷 P3374 【模板】树状数组 1&#xff08;树状数组解法…...

【登录认证】JWT令牌

一、概述 JWT全称:**JSON Web Token **(https://jwt.io/)定义了一种简洁的、自包含的格式&#xff0c;用于通信双方以json数据格式安全的传输信息。组成: ①第一部分:Header(头)&#xff0c;记录令牌类型、签名算法等。例如: (“alg”:" HS256"," type":“…...

手撕算法(定制整理版2)

最长无重复子字符串 class Solution(object):def lengthOfLongestSubstring(self, s):""":type s: str:rtype: int"""if not s:return 0max_len 0tp []for a in s:while a in tp:del tp[0]tp.append(a)if len(tp) > max_len:max_len len(…...

python3:文件与异常

本来这篇教程是打算在base python数据类型之后出的&#xff0c;但是计划赶不上变化&#xff0c;反正最后都要融会贯通&#xff0c;今日有时间、今天遇到了类似的问题&#xff0c;就今天做这一模块的整理&#xff0c;顺序不是重点。 参考我的上一篇博客&#xff1a;https://blo…...

【兽医电子处方软件】佳易王宠物医院电子处方管理系统:宠物医院诊所用什么软件?一键导入配方模板软件程序实操教程 #操作简单 #宠物医院软件下载安装

一、概述 软件试用版资源文件下载方法&#xff1a; 【进入头像主页第一篇文章最后 卡片按钮 可点击了解详细资料 或左上角本博客主页 右侧按钮了解具体资料信息】 本实例以 佳易王宠物医院电子处方管理系统软件 为例说明&#xff0c;其他版本可参考本实例。试用版软…...

centos7.x下,使用宝塔进行主从复制的原理和实践

操作原理&#xff1a; 一、主库配置 1.修改 MySQL 配置文件 # 编辑主库配置文件&#xff08;路径根据实际系统可能不同&#xff09; vim /etc/my.cnf # 添加以下配置 [mysqld] server-id 1 # 唯一 ID&#xff0c;主库设置为 1 log-bin mysql-bin …...

langchain学习

无门槛免费申请OpenAI ChatGPT API搭建自己的ChatGPT聊天工具 https://nuowa.net/872 基本概念 LangChain 能解决大模型的两个痛点&#xff0c;包括模型接口复杂、输入长度受限离不开自己精心设计的模块。根据LangChain 的最新文档&#xff0c;目前在 LangChain 中一共有六大…...