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

查缺补漏----I/O中断处理过程

中断优先级包括响应优先级和处理优先级,响应优先级由硬件线路或查询程序的查询顺序决定,不可动态改变。处理优先级可利用中断屏蔽技术动态调整,以实现多重中断。下面来看他们如何运用在中断处理过程中:

中断控制器位于CPU和外设之间,用于处理I/O中断请求。以下是一个简化的中断控制器:

现在有A,B,C三个中断源。中断响应优先级:A>B>C,中断处理优先级:C>B>A

根据图来看,CPU响应中断应该具备3个条件:

① 在 CPU 内部设置的中断屏蔽寄存器(触发器)必须是开放的。

② 外设有中断请求时,中断请求寄存器(触发器)必须处于“1”状态,保持中断请求信号。

③ 外设(接口)中断允许触发器必须为“1”,这样才能把外设中断请求送至 CPU。

具备上述三个条件时,CPU 在现行指令结束的最后一个状态周期响应中断。

假设CPU正在处理A中断源的中断请求,此时B,C同时发出了中断请求,CPU执行完当前指令后,会检查INTR(中断请求信号寄存器)是否有效(INTR高电平有效)。

怎么看INTR是否有效,那就要看屏蔽寄存器是否会将信号屏蔽,由于中断处理优先级C>B>A,所以屏蔽寄存器不会屏蔽中断信号,INTR会接收到中断请求,变为有效。

CPU是否能检测到中断请求信号有效,是由中断处理优先级决定的,而不是中断响应优先级。

由于现在B,C的处理优先级都大于A,所以都要被送到判优电路当有多个中断源的中断请求到达判优电路时,就由中断响应优先级来决定CPU应该响应哪一个。响应优先级B>C,所以向量地址形成线路会形成中断源B的中断类型号(也就是下图的送中断向量的过程)。

CPU响应B中断源的中断请求,执行B的中断服务程序,程序会设置新的中断屏蔽字(每个中断源对应一个屏蔽字,其中1越多,优先级越高),并且保存现场,并且开中断。

由于C的中断请求还没有被处理,并且处理优先级C>B,所以B的中断服务程序又会响应C中断源发来的中断请求。当C的中断服务程序执行完后,返回到B,B的服务程序再返回到A。所以,完成顺序C>B>A,响应顺序B>C。

总结(非常重要):

中断优先级包括响应优先级和处理优先级,中断屏蔽标志改变的是处理优先级。中断响应优先级是由中断查询程序或中断判优电路决定的,它反映的是多个中断同时请求时哪个先被响应即中断服务程序开始执行的顺序。在多重中断系统中,中断处理优先级决定了本中断是否能打断正在执行的中断服务程序,决定了多个中断服务程序执行完的次序

注:

中断类型号是通过数据线传给CPU的,一定要记得地址线是单向的(地址只能从 CPU 传向外部存储器或 I/O 端口)。中断类型号用于指出中断向量的地址,CPU响应某个外部中断后,就从数据总线上获取该中断源的中断类型号,然后据此计算对应中断向量的地址,再根据该地址从中断向量表中取出中断服务程序入口地址,即中断向量。

② 只有每条指令执行的最后一个操作控制信号CPU才会检测INTR是否有中断请求信号CPU采样到INT信号有效,则进入中断响应周期。

③ CPU检测到信号有效,进入中断响应周期,隔一段固定的时间就会发出中断查询信号,也就是在中断响应过程中,发出中断查询信号(中断回答信号)。由这个信号,所有未被屏蔽的信号就会进入判优电路,由判优线路决定是否响应。

到这里就可以更清楚地理解中断响应的条件:

① CPU处于开中断状态        ② 一条指令执行完        ③ 至少要有一个未被屏蔽的中断请求

中断响应的时间点和异常处理的时间点是不一样的,中断一定是在一条指令执行结束后开始查询有无中断请求,有的话立即响应,所以一定是在指令执行完时响应中断,而异常发生在指令执行过程中,异常的处理是在指令执行中进行的。

中断处理的过程:

中断响应:

中断响应是硬件完成的,也就是从总线上取中断地址,CPU会做三件事:

① 关中断;② 保护断点和程序状态;③ 识别中断源:取得中断服务程序的首地址和初始PSW送PC和PSWR

执行中断服务:

(1)准备阶段:

① 保护现场(比如一些通用寄存器的内容)及旧屏蔽字(比如B打断A的中断服务程序后,要保存A的中断屏蔽字,以便中断返回时恢复旧的屏蔽字)

② 查明原因(软件识别中断时才会用到)

③ 设置新屏蔽字 ④ 开中断

注:对于保存屏蔽字,设置新的屏蔽字以及开中断,都是针对多级中断的,因为可能会有多个中断请求,所以需要设置屏蔽字和开中断。

(2)进行具体的中断处理

(3)恢复阶段:
① 关中断 ② 恢复现场及旧屏蔽字 ③ 清除中断标志(清除该中断源的中断请求,否则CPU又检测到中断,又会反复进入中断)④ 开中断 ⑤ 中断返回

注:这里为什么又要开中断了呢?这个开中断是对应中断响应的关中断的,如果这里不开中断就没有办法响应新的中断请求了。

所以:

对于单级中断:

中断响应:

① 关中断        ② 保存断点和程序状态        ③ 寻找中断程序入口地址

中断服务:

① 保存现场        ② 处理中断事件       ③ 恢复现场        ④ 开中断        ⑤ 中断返回

对于多级中断:

中断响应:

① 关中断        ② 保存断点和程序状态        ③ 寻找中断程序入口地址

中断服务:

① 保存现场和屏蔽字        ②开中断        ③ 处理中断事件       ④ 关中断        ③ 恢复现场和屏蔽字        ④ 开中断        ⑤ 中断返回

(1)1号中断源:11111 2号:01100 3号:00100 4号:01111 5号: 01101

① 先响应2的中断请求,即保存现场,保存中断屏蔽字,设置新的中断屏蔽字,开中断。一旦开中断,就会立马响应4,因为4的中断处理优先级大于2。

② 处理完4的中断服务程序后,会回到2继续执行其中断服务程序。

③ 中断处理优先级1>5>2>3,所以当1,3,5同时发出中断请求,2能屏蔽3。

④ 中断响应优先级1>5,所以先执行1,并且1的中断处理优先级也是最高的,所以1不会被5打断。(如果这里1的中断处理优先级小于5,则1中断服务程序执行过程中会响应5的中断请求)

⑤ 1处理完后,返回2,由于5的中断处理优先级大于2,所以5会被响应。

⑥ 由于2的处理优先级大于3,所以3号中断源被2号屏蔽,只有当2号执行完后,并且返回用户程序(因为2号的中断屏蔽字决定了2号是检测不到3号的中断请求的),再执行3号中断请求

例题:

相关文章:

查缺补漏----I/O中断处理过程

中断优先级包括响应优先级和处理优先级,响应优先级由硬件线路或查询程序的查询顺序决定,不可动态改变。处理优先级可利用中断屏蔽技术动态调整,以实现多重中断。下面来看他们如何运用在中断处理过程中: 中断控制器位于CPU和外设之…...

Java API接口开发规范

文章目录 一、命名规范1.1 接口命名1.2 变量命名 二、接收参数规范2.1 请求体(Body)2.2 查询参数(Query Parameters) 三、参数检验四、接收方式规范五、异常类处理六、统一返回格式的定义七、API接口的幂等性(Idempote…...

Go语言实现长连接并发框架 - 任务管理器

文章目录 前言接口结构体接口实现项目地址最后 前言 你好,我是醉墨居士,我们上篇博客实现了路由分组的功能,接下来这篇博客我们将要实现任务管理模块 接口 trait/task_mgr.go type TaskMgr interface {RouterGroupStart()StartWorker(tas…...

【大数据】深入解析分布式数据库:架构、技术与未来

目录 1. 分布式数据库的定义2. 架构类型2.1 主从架构2.2 同步与异步复制2.3 分片架构 3. 技术实现3.1 一致性模型3.2 CAP理论3.3 数据存储引擎 4. 应用场景5. 选择分布式数据库的因素5.1 数据一致性需求5.2 读写负载5.3 成本5.4 技术栈兼容性 6. 未来发展趋势总结 分布式数据库…...

uniapp框架中实现文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间

前言 uni-file-picker是uniapp中的一个文件选择器组件,用于选择本地文件并返回选择的文件路径或文件信息。该组件支持选择单个文件或多个文件,可以设置文件的类型、大小限制,并且可以进行文件预览。 提示:以下是本篇文章正文内容,下面案例可供参考 uni-file-picker组件具…...

GEE教程:NASA/GRACE/MASS_GRIDS/LAND数据的查看不同时期液态水数据的变化情况

目录 简介 NASA/GRACE/MASS_GRIDS/LAND 函数 first() Arguments: Returns: Image 代码 结果 简介 利用NASA/GRACE/MASS_GRIDS/LAND数据的查看不同时期液态水数据的变化情况。 NASA/GRACE/MASS_GRIDS/LAND NASA/GRACE/MASS_GRIDS/LAND数据是由NASA的重力恒星MASS数据…...

世邦通信股份有限公司IP网络对讲广播系统RCE

漏洞描述 SPON世邦IP网络广播系统采用的IPAudio™技术, 将音频信号以数据包形式在局域网和广域网上进行传送,是一套纯数字传输的双向音频扩声系统。传统广播系统存在的音质不佳,传输距离有限,缺乏互动等问题。该系统设备使用简便&#xff0c…...

爬虫——爬取小音乐网站

爬虫有几部分功能??? 1.发请求,获得网页源码 #1.和2是在一步的 发请求成功了之后就能直接获得网页源码 2.解析我们想要的数据 3.按照需求保存 注意:开始爬虫前,需要给其封装 headers {User-…...

5G NR SSB简介

文章目录 SSB介绍SSB波束扫描 SSB介绍 5G NR 引入了SSB 这个概念,同步信号和PBCH块(Synchronization Signal and PBCH block, 简称SSB) 它由主同步信号(Primary Synchronization Signals, 简称PSS)、辅同步信号(Secondary Synchronization Signals, 简称SSS)、PBCH…...

java将mysql表结构写入到word表格中

文章目录 需要的依赖 需要的依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version> </dependency> <!--07版本的&#xff0c;行数不受限制--> <dependency>&l…...

SpringBoot教程(安装篇) | Docker Desktop的安装(Windows下的Docker环境)

SpringBoot教程&#xff08;安装篇&#xff09; | Docker Desktop的安装&#xff08;Windows下的Docker环境&#xff09; 前言如何安装Docker Desktop资源下载安装启动&#xff08;重点&#xff09;1. 检查 bcdedit的hypervisorlaunchtype是否为Auto2. 检查CPU是否开启虚拟化3.…...

day2网络编程项目的框架

基于终端的 UDP云聊天系统 开发环境 Linux 系统GCCUDPmakefilesqlite3 功能描述 通过 UDP 网络使服务器与客户端进行通信吗&#xff0c;从而实现云聊天。 Sqlite数据库 用户在加入聊天室前&#xff0c;需要先进行用户登录或注册操作&#xff0c;并将注册的用户信息&#xf…...

C++和OpenGL实现3D游戏编程【连载13】——多重纹理混合详解

🔥C++和OpenGL实现3D游戏编程【目录】 1、本节要实现的内容 前面说过纹理贴图能够大幅提升游戏画面质量,但纹理贴图是没有叠加的。在一些游戏场景中,要求将非常不同的多个纹理(如泥泞的褐色地面、绿草植密布的地面、碎石遍布的地面)叠加(混合)起来显示,实现纹理间能够…...

探索云计算中的 Serverless 架构:未来的计算范式?

目录 引言 一、Serverless架构概览 二、Serverless 架构的优势 三、Serverless架构的挑战 四、Serverless架构的未来展望 五、结论 引言 在当今快速发展的 IT 行业中&#xff0c;云计算无疑占据了举足轻重的地位。随着技术的不断演进&#xff0c;云计算的一个新兴分支——…...

爬虫及数据可视化——运用Hadoop和MongoDB数据进行分析

作品详情  运用Hadoop和MongoDB对得分能力数据进行分析&#xff1b;  运用python进行机器学习的模型调理&#xff0c;利用Pytorch框架对爬取的评论进行情感分析预测&#xff1b;  利用python和MySQL对网站的数据进行爬取、数据清洗及可视化。...

扩散引导语言建模(DGLM):一种可控且高效的AI对齐方法

随着大型语言模型(LLMs)的迅速普及,如何有效地引导它们生成安全、适合特定应用和目标受众的内容成为一个关键挑战。例如,我们可能希望语言模型在与幼儿园孩子互动时使用不同的语言,或在撰写喜剧小品、提供法律支持或总结新闻文章时采用不同的风格。 目前,最成功的LLM范式是训练…...

LeetCode hot100---数组及矩阵专题(C++语言)

1、最大子数组和 &#xff08;1&#xff09;题目描述以及输入输出 (1)题目描述: 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 (2)输入输出描述&#xff1a; 输入&#…...

LabVIEW提高开发效率技巧----快速实现原型和测试

在LabVIEW开发中&#xff0c;DAQ助手&#xff08;DAQ Assistant&#xff09;和Express VI为快速构建原型和测试功能提供了极大的便利&#xff0c;特别适合于简单系统的开发和早期验证阶段。 DAQ助手&#xff1a;是一种可视化配置工具&#xff0c;通过图形界面轻松设置和管理数据…...

大论文记录

基础知识回顾 1.强化学习&#xff08;Agent、Environment) 在 RL 中&#xff0c;代理通过不断与环境交互、以试错的方式进行学习&#xff0c;在不确定性下做出顺序决策&#xff0c;并在探索&#xff08;新领域&#xff09;和开发&#xff08;使用从经验中学到的知识&#xff…...

蘑菇分类检测数据集 21类蘑菇 8800张 带标注 voc yolo

蘑菇分类检测数据集 21类蘑菇 8800张 带标注 v 蘑菇分类检测数据集 21类蘑菇 8800张 带标注 voc yolo 蘑菇分类检测数据集介绍 数据集名称 蘑菇分类检测数据集 (Mushroom Classification and Detection Dataset) 数据集概述 该数据集专为训练和评估基于YOLO系列目标检测模型…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...