中断屏蔽技术

2023-05-16

【README】

本文总结自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐;


【1】中断屏蔽

1,中断屏蔽的意思是,在中断1的服务程序执行过程中,不允许被其他中断打扰;

2,按理,对于不同中断源,它有中断响应优先级,但这个是硬件决定的,无法修改;而如果要修改各个中断的优先级(即是否可以被打扰),可以通过中断屏蔽寄存器(人工设置该寄存器的值)来实现;这是提出中断屏蔽技术的原因所在;

3,中断屏蔽的具体原理是: 每个中断源都有一个中断屏蔽字(如16个bit); 当该中断被响应或执行该中断的服务请求时,对应中断源的屏蔽字设置到中断屏蔽寄存器;在中断响应时,cpu会根据屏蔽寄存器的值来判断是否响应该中断;

【1.1】屏蔽技术介绍

1 中断屏蔽技术

  • 1.1 通过设置中断屏蔽字来改变中断服务优先级,从而提高系统设计和响应的灵活性;
  • 1.2 中断屏蔽字是通过中断屏蔽触发器来设置的;INTR 是中断请求寄存器;MASK 是中断屏蔽触发器(MASK=0,非门输出1时表示未屏蔽);

2 如何提出中断请求?

  • 触发器D在完成后,提出中断请求,能够提出中断的条件是,这个中断源没有被屏蔽掉;

3 右图第2种方式实现中断屏蔽

  • 中断屏蔽字的长度等于中断源的个数,屏蔽字的每个bit对应到每个mask的取值上
  • 若maski等于1,则表示第i个中断源的中断请求不会被响应(或被屏蔽);当然也无法提出中断请求;

中断屏蔽触发器的作用是 屏蔽某个中断源发出中断请求,也不能参加中断请求优先级的排队;

【1.2】中断屏蔽字

屏蔽触发器对应的值是屏蔽字;
如,16个中断源,每个中断源都对应一个屏蔽字;
每个屏蔽字表示当中断源的中断服务程序在执行过程中,是否允许其他中断源提出中断请求
进入到排队器进行排队(即是否允许其他中断源提出中断请求);对应的bit位为1表示屏蔽,0表示不屏蔽;

如:1号中断源的中断服务程序在执行过程中,无论是1号还是2.。。。16号中断源提出的中断请求都不会进入中断排队器中排队(即1号中断源屏蔽其他中断源的中断请求);
但2号中断服务程序的执行过程中,允许1号中断源提出中断请求并被1号打断;


【2】 屏蔽技术可以改变中断处理优先级

【2.1】中断响应优先级与处理优先级

1,中断优先级分为响应优先级,处理优先级;

  • 响应优先级,属于中断硬件给定,无法修改;
  • 处理优先级,可以通过屏蔽技术进行修改;

2,处理优先级是可以改变的,通过重置屏蔽字,让低优先级的中断无法进入排队器排队;通过中断屏蔽字让某一个中断源的处理优先级被提高

【例】在执行C的中断服务程序的过程中,对应的中断屏蔽字(中断屏蔽寄存器)被设置为0110,只有A或D的中断请求可以进入中断排队器中排队;

 【2.2】例子,屏蔽技术修改中断处理优先级

响应优先级为 A B C D,降序排列, 无法修改;处理优先级修改为, A D C B,降序排列;

【例子】加入屏蔽技术后的多中断处理步骤

  • 步骤1:ABCD同时提出中断服务请求,因为主程序屏蔽字(即中断屏蔽寄存器)为0000(不会屏蔽任何中断),所以4个中断都会进入排队器;
  • 步骤2:又A的响应优先级最高,所以cpu先响应A,转而执行A的中断服务程序;在执行A中断服务程序过程中,因A的屏蔽字为1111,故它会把中断屏蔽字设置为1111,这会屏蔽其他中断源(ABCD)的中断请求;
  • 步骤3:A的中断服务程序执行后,返回主程序,这时主程序屏蔽字是0000,所以中断屏蔽字寄存器为0000; 即主程序随时可以被打断,DCB都可以进入中断排队器进行排队;
  • 步骤4:又B的响应优先级最高,所以先响应B,执行B的中断服务程序;又B的中断屏蔽字为0100,所以B允许被CD中断源打断;
  • 步骤5:在执行B的中断服务程序过程中,CD均可以提出中断请求,并进入中断排队器排队;
  • 步骤6:又C的响应优先级高于D,所以先响应C,转而执行C的中断服务程序(C中断B);响应C后, C的中断屏蔽字设置到中断屏蔽字寄存器,即0110;那么C的中断服务程序可以被AD中断源打断;
  • 步骤7:在执行C的中断服务程序过程中,D提出中断请求,进入排队器进行排队;又D的处理优先级高于C,所以中断C,转而执行D(D中断C);
  • 步骤8:执行D完成后,回到C的中断服务程序的断点,继续执行C,因为D中断的是C(中断谁就返回谁);
  • 步骤9: C执行完成后,再返回到B,因为C中断的是B;
  • 步骤10:B执行完成后,整个执行就结束了;

【3】新屏蔽字的设置

新屏蔽字的设置步骤:

序号

步骤

描述

1

保护现场

Push指令,把要用到的寄存器的值保存起来,以便从中断恢复后使用;

2

置屏蔽字

设置中断屏蔽字;

3

开中断

提前开中断,目的是实现多重中断;设置EINT=1

4

执行中断服务程序

5

关中断

因为恢复现场,恢复中断屏蔽字的过程不能被打断;设置EINT=0

6

恢复现场

把之前被保护的现场数据从内存恢复到寄存器;

7

恢复中断屏蔽字

把中断屏蔽寄存器的值设置为主程序的屏蔽字(0000),允许被任何中断打断;

8

开中断

允许中断;设置EINT=1

9

中断返回

从中断中恢复到主程序;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

中断屏蔽技术 的相关文章

  • 【MC】新加载器 Quilt 好用吗?和 Fabric 相比好在哪?

    在今年四月 2022 4 20 xff0c 一个船新加载器 Quilt 发布了第一个测试版 Quilt officially entered its first beta today attracting an influx of new
  • 科学上最令人舒服的十种颜色(RGB)

    这是科学上最令人舒服的十种颜色 xff0c 我将RGB整理了一下 xff0c 大家做软件的时候可以考虑这个配色 xff0c 看着真的很舒服 19CAAD 8CC7B5 A0EEE1 BEE7E9 BEEDC7 1 R 25 G 202 B
  • Android Beam 文件传输失败分析与解决

    最近在修改Android7 0原生平台的一些bug xff0c 其中有关Android Beam传输文件的一些问题还是蛮多的 所以特地找时间总结下曾经踏过的坑 1 传输的文件名包含中文时 xff0c 导致传输失败 可能是由于Google未考
  • 【IDEA】下载插件失败Failed to Download

    下载插件的时候又莫名其妙报错了 xff0c 报错信息还挺让人困惑的 xff0c failed to download xff0c 然后 response 200 OK What the hell 确实挺奇怪的 xff0c 看图吧 这个报错太
  • OpenCV经典人脸识别算法(特征脸,Fisherface,LBP)

    引言 OpenCV中有三个经典的人脸识别的算法 xff0c 各有优缺点 参考链接很详细 xff0c 只提炼重要内容 参考1 参考2 经典人脸识别算法 1 EigenFace 征脸识别的局限性 要让系统准确识别需要保证人脸图像满足 xff1a
  • Ubuntu 16.04 安装onos 2.2.0

    之前使用了别人分享的安装好的p4虚拟机 xff0c 应该是这个人的 xff0c 不过我记得的是用的谷永普的 xff0c 当时还是从微云上下载的 xff0c 但是找不到了 不过无所谓 xff0c 本文不讲p4的安装 xff0c 有需要的 xf
  • WindowsServer2012r2远程桌面多用户同时远程连接设置

    安装远程桌面服务下子项远程桌面会话主机 远程桌面授权 xff1a 点击左下角服务器管理器 xff0c 选择添加角色和功能 安装完成后会自动重启服务器 xff0c 如报错找不到文件 xff0c 请指定备用源路径 2 配置远程桌面连接数及激活许
  • 从企业广泛应用要求如入手推荐Java学习思路

    第一 xff1a 先学习Java的核心库 xff08 JavaSE xff09 JavaSE的内容包括 xff1a 环境搭建 基础语法 面向对象 数组 集合 常用类 IO流 反射机制 网络编程 第二 xff1a MySQL数据库搞定一门数据
  • jupyterLab打开后出现Config option `template_path` not recognized by `ExporterCollapsibleHeadings`相关问题

    jupyterLab打开后出现 template path 相关问题 之前在anaconda中装了TensorFlow pytorch OpenCV几个环境 xff0c 由于使用OpenCV较多 xff0c 在OpenCV里面装了一些插件
  • 记录换源操作

    记录一下换源操作 1 清华源 conda config span class token operator span add channels https span class token operator span span class
  • 论文《基于深度学习的表面缺陷检测方法综述》学习笔记

    基于深度学习的表面缺陷检测方法综述 学习笔记 前段时间完成了 基于图像的零部件缺陷识别系统设计 毕业课程设计 xff0c 过程中收获了很多 xff0c 老师也分享了很多论文 xff0c 在此记录一下学习的收获 本文的论文引用 xff1a 陶
  • 记录关于标记工具LabelIMG生成txt文件时的相关问题

    在做基于深度学习的目标检测时 xff0c 对数据图片标记时出现了一些问题 xff0c 特此记录一下 在对数据图片的目标标记时 xff0c 有很多的标记工具 xff0c 而我钟爱LabelIMG这一工具 在此附上github链接 xff1a
  • 记录关于利用txt文件划分训练集、测试集与验证集

    利用txt文件划分训练集 测试集与验证集 在基于深度学习的目标检测任务中 xff0c 往往需要将数据图片划分成训练集 验证集与测试集 xff0c 在此记录一种笨办法 xff0c 各位大佬可忽略 训练集 xff1a 日常学习 验证集 xff1
  • python读取像素值

    记录一下利用python读取像素值 xff0c 并将像素值保存在txt文档中 xff0c 可使用matlab将txt文档转换为像素矩阵 代码如下 xff1a span class token comment 将mask图转换为像素值 xff
  • 记录linux的内网穿透frp操作

    记录linux的内网穿透frp操作 由于本人在宿舍偶尔需要查看实验室内电脑程序结果及传输一些文件 xff0c 不得不利用frp内网穿透 xff0c 需要准备以下三台电脑 xff0c 如果有多个客户端 xff0c 也可以进行配置 xff1a
  • vscode1.65.2 + anaconda 在python拓展为2022.2.1924087327版本上的问题及解决

    在vscode 提示更新的时候我更新到了最新的版本 xff0c 但是遇到了下面的问题 xff1a 即在ananonda环境内安装了pytorch xff0c 但是在vscode里面一直提示no module named torch 一开始以
  • cpolar内网穿透:自动化登录服务器

    使用cpolar内网穿透工具自动化登录服务器 1 本文简介2 实现2 1 安装与卸载cpolar2 2 使用cpolar登录服务器 3 注意 1 本文简介 家里没有公网ipv4 xff0c 公网ipv6默认不能直接访问 xff0c 懒得找电
  • Ubuntu的sources.list文件

    更新后用apt get update更新源 1 Ubuntu 20 10 sources list deb http span class token operator span span class token comment old r

随机推荐

  • 关于模型训练中显存占用过大的或直接报显存爆炸的解决方法

    模型训练显存爆炸解决方法 在模型训练中 xff0c 应该理解梯度 反向传播 图层 显存这些概念 xff0c 在模型训练过程中 xff0c 一般会分为训练 43 验证 43 测试 xff0c 在这些过程中 xff0c 一般在训练过程中会比较占
  • 关于archlinux的安装

    安装系统时间 xff1a 2022年9月18日 镜像版本 xff1a archlinux 2022 09 03 x86 64 iso Linux内核版本 xff1a Linux version 5 15 68 1 lts linux lts
  • SpringBoot项目在使用Maven打包war中遇到的问题

    问题描述 在使用maven打包 xff08 package xff09 springboot项目为war项目后 xff0c 在本地机器上使用Tomcat跑这个项目 xff0c 访问资源时出现下面的错误 xff1a span class to
  • 做一个完整网站的流程(独立完成个人网站)

    注 xff1a 我写这个博客的目的只是为了分享我自己做网站的流程 xff0c 不是教大家一行一行敲代码的 xff0c 如果是想学语言的基本操作 xff0c 只能自己去找视频学习了 1 购买服务器 xff08 根据自己的需求以及爱好购买 xf
  • 维修1台联想SR550服务器亮黄灯 感叹号 开不了机

    客户信息 xff1a 一个省外客户朋友公司 设备型号 xff1a Lenovo ThinkSystem SR550 故障问题 xff1a 主机前面板亮黄灯 xff0c 能开机但无法正常完成BIOS UEFI自检程序 xff0c 故障界面 x
  • Android 8.0 利用Settings.Global属性跨应用定义标志位

    需求 需要在不同应用中定义一个标志位 xff0c 这里介绍下系统级别的应用和非系统级别应用如何添加 当然这不一定是最好的办法 xff0c 因为不能够添加intent putExtra 属性 系统级别应用 在需要定义的地方使用 SystemP
  • k-近邻算法实现手写数字识别系统

    k 近邻算法实现手写数字识别系统 一 实验介绍 1 1 实验内容 本实验将会从电影题材分类的例子入手 xff0c 详细讲述k 近邻算法的原理 在这之后 xff0c 我们将会使用该算法实现手写数字识别系统 1 2 课程来源 本课程源自 图灵教
  • 调整eclipse控制台console的方法

    调整eclipse控制台console的方法 会把在用eclipse的过程中产生的问题和找到的解决方案记录一下 xff0c 以便之后再用到 今天在运行代码的时候 xff0c 突然控制台和代码并列了 然后百度了一下找到了方法 windows
  • Linux: 运行sh命令时command not found

    问题 xff1a 解决 xff1a 1 查看PATH变量 echo PATH 2 把查询出来的PATH放到sh文件中并导入
  • 修改git tag的描述信息

    今天手贱 xff0c 非要用TortoiseGit打tag xff0c 没用命令行 xff0c 结果这不是还没有学习么 xff0c 然后就出现问题了 不过好在是我自己的Toy代码 xff0c 那就看看如何解决吧 问题描述 使用Tortois
  • Linux 设置用户登录超时

    Linux 系统中使用SSH进行远程登录 xff0c 如果长时间不操作将自动注销用户的登录 原本以为在 etc ssh sshd config文件中配置 查了资料和测试只需要在shell环境变量中设置即可 span class hljs c
  • rime配置

    文件路径 AppData Rime 配置修改 default custom yaml span class hljs label customization span span class hljs label distribution c
  • matlab中(),[],与{}的区别认识

    转载自 http blog csdn net CV YOU article details 52873666 在matlab中 xff0c 常常会遇到 xff0c 和 这个3种符号怎么区分 xff0c 怎么用 xff0c 这里我来总结一下
  • WinServer2012 R2忘记密码的解决方案+远程连接另一种莫名其妙故障

    WinServer2012 R2忘记密码的解决方案 43 远程连接另一种莫名其妙故障 参考文章 xff1a xff08 1 xff09 WinServer2012 R2忘记密码的解决方案 43 远程连接另一种莫名其妙故障 xff08 2 x
  • 迅雷 应版权方要求,文件无法下载 解决方法

    迅雷 应版权方要求 xff0c 文件无法下载 解决方法 参考文章 xff1a xff08 1 xff09 迅雷 应版权方要求 xff0c 文件无法下载 解决方法 xff08 2 xff09 https www cnblogs com sui
  • redis集群搭建报错-(error) CLUSTERDOWN The cluster is down

    README 最近搭建一个redis集群 xff0c 参考博文 xff08 https www cnblogs com mafly p redis cluster html xff09 对集群配置后 xff0c master xff0c s
  • rabbitmq-通配符模式

    README 本文介绍 通配符模式 xff0c 及代码示例 1 intro to rabbitmq通配符模式 0 xff09 通配符模式 交换机类型为 Topic xff1b 1 xff09 与路由模式相比 xff0c 相同点是 两者都可以
  • springboot:BeanPostProcessor示例及分析

    README 1 xff0c 本文主要分析 BeanPostProcessor 的作用 xff0c 开发方式 xff1b 2 xff0c BeanPostProcessor 是bean后置处理器 xff0c 简而言之就是bean被创建好了
  • 字节数组转jsonobject(如读取HttpServletRequest.inputstream到jsonobject)

    README 本文po出了 如何读取 字节数组到jsonobject xff1b 字节数组如何获取 xff0c 本文不再赘述 xff1b 1 代码 64 Description 字节数组转json演示 64 author xiao tang
  • 中断屏蔽技术

    README 本文总结自bilibili 计算机组成原理 xff08 哈工大刘宏伟 xff09 的视频讲解 xff0c 非常棒 xff0c 墙裂推荐 xff1b 1 中断屏蔽 1 xff0c 中断屏蔽的意思是 xff0c 在中断1的服务程序