8.4-中断系统小结(cpu中断七个问题)

【README】

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


【1】中断介绍

1)作用:用中断系统实现了外设数据的输入输出; 还可以用于程序调试,计算机系统的异常事件,都可以用中断系统来处理;

2)中断因素

  1. 人为设置的中断;
  2. 程序性事故,如java异常;
  3. 硬件故障,如硬盘坏道;
  4. Io设备,如数据输入输出;
  5. 外部事件,如键盘中断按钮,调试程序;

【2】 cpu中断问题

【2.1】问题1:各中断源如何向cpu提出请求?

给每一个中断源设置一个触发器,用触发器来标记这个中断源是否提出了中断请求;
一个中断源对应一个中断请求触发器INTR,多个触发器组成了中断请求标记寄存器 INTR

中断请求标记寄存器 INTR 如下:


【2.2】 问题2:各中断源同时提出请求,怎么办?

对中断源进行分级;响应优先级最高的中断源(对中断源的级别进行排队);

中断优先级分为:响应优先级和处理优先级;

响应优先级,由硬件决定(中断源)决定,无法修改;

处理优先级可以修改,通过设置中断屏蔽字到中断屏蔽寄存器来屏蔽其他中断


 【2.3】问题3:Cpu在什么条件,什么时间,以什么方式响应中断?

【2.3.1】cpu在什么条件下响应中断请求 ?

  • 为了表示cpu是否响应中断请求,有一个允许中断触发器EINT,值=1表示允许cpu 响应中断源发出的中断请求;

【2.3.2】 cpu在什么时间响应中断请求 ?

  • 通常情况下,cpu只有在指令的执行阶段结束以后,才能够响应中断请求;但cpu的某些指令的执行阶段比较长,这种情况就允许cpu在指令执行过程中,响应中断请求;

【2.3.3】 cpu响应中断过程:

  • 在指令执行以后,cpu发送查询信号到中断源的中断请求触发器;查询信号把中断请求触发器的输出端设置为1,把中断请求信号发送到排队电路;

补充:中断隐指令作为响应中断的一部分,有3个操作(保护程序断点,寻找入口地址,硬件关中断):如下:

中断响应步骤如下:

步骤

描述

1

Cpu完成指令执行阶段后,通过硬件向量法查找中断源;各个中断源的信号送入排队器;

2

排队器把中断源信号(只有一根线为1)送给中断标记触发器,从而把INT设置为1,而EINT设置为0;

3

此外,排队器还要把中断信号送给向量地址形成部件,这个向量地址送给PC,为执行中断服务程序做准备;(向量地址保存了中断服务程序的入口地址)

 【小结】中断响应过程中要解决的3个问题

问题1)保护程序断点 断点就是中断服务程序执行完成后,返回执行的指令;

       方法1 断点存到特定地址(0号地址)内;

        方法2 断点进栈;

问题2)寻找中断服务程序入口地址;

        方法1 采用硬件向量法:把中断向量地址发送到PC寄存器;PC中保存了向量地址,这个向量地址保存了中断服务程序的入口地址,或跳转指令,该指令会跳转到中断服务程序;

        方法2 软件查询法:中断识别程序的入口地址发送到PC寄存器;计算机执行中断识别程序来查找中断服务程序的入口地址;

问题3)硬件关中断(把中断允许触发器的值设置为0

关中断的目的: 避免在单重中断的机器中,在执行中断服务程序的过程中,有新的中断源会打断当前的中断服务程序的执行;

另外,即使在多重中断的cpu中,采用关中断的方式,也是为了保存程序断点,保存程序现场的一个过程;


【2.4】问题4:如何保护现场 ?

【2.5】问题5:如何恢复现场?

1 保护现场
1.1    保存断点:由中断隐指令(硬件)来做,包括3个步骤(保存断点,形成中断服务程序的入口地址,硬件关中断) ;
1.2    保存寄存器内容(由中断服务程序来做,软件):cpu当中的一些寄存器在执行中断服务程序的时候需要用到;这些寄存器的内容也要进行保存 ;因为这些内容将来中断返回的时候,主程序还要用到;

2 恢复现场
2.1 由中断服务程序完成;
因为中断服务程序在保存现场的时候,可以吧寄存器内容压入到堆栈中;
在中断服务程序恢复现场时,可以出栈;

3 中断服务程序的工作内容包括:
1)    保护现场;push指令;
2)    其他服务程序(中断服务程序剩余部分);
3)    恢复现场;pop指令;
4)    中断返回;IRET指令;

【补充*】上述保护现场入栈,恢复现场出栈,也是线程切换的流程,即线程上线文切换的原理,可以看到,频繁切换就是入栈和出栈过程,即寄存器数据送入内存栈,和内存栈数据送入寄存器的过程;频繁切换的话,可以看到成本非常高,这个切换过程并没有做实际的业务逻辑


【2.6】问题6:如何寻找中断服务程序的入口地址?

通过硬件向量法,或程序查询法寻找;

【2.6.1】硬件向量法

排队器输出:只有1根线是高电平1,其他全部为低电平0;
向量地址形成部件:根据排队器输出,确定需要响应的中断源,从而确定执行哪一个中断服务程序(通过中断向量地址确定);

用硬件查找中断服务程序入口地址有两种方法:
方法1: 在中断向量地址的存储单元中存放一条跳转指令 如 jmp 200,则200就是中断服务程序的入口地址;
方法2: 在中断向量地址的存储单元中存放的就是中断服务程序的入口地址,如中断向量地址12H,其保存的入口地址200;

【2.6.2】程序查询法

中断识别程序查询步骤

步骤

指令

说明

1

SKP DZ 1#

SKP表示跳过下一条指令;

指令功能:查询第1号中断源的完成触发器D;看触发器是等于0还是等于1;

    1. 若等于1,说明中断源已经准备好了,提出了中断请求,cpu就要去执行响应的中断服务程序(步骤2);
    2. 若等于0,说明1号中断源没有准备好,则跳过指令2,进入2号中断源的查询(步骤3)

2

JMP 1#SR

执行中断服务程序

3

SKP DZ 2

……

4

JMP 2SR

……


【2.7】问题7:处理中断的过程中又出现新的中断 怎么办?

 处理过程如下:

  • 处理中断1时,发生了中断2,且中断2优先级大于中断1,则停止中断1的服务程序,转而执行中断2的服务程序;
  • 处理中断2时,发生了中断3,且中断3优先级大于中断2,则停止中断2的服务程序,转而执行中断3的服务程序;

上图中: 产生了3次中断,和3个断点,分别是 k+1, l+1, m+1 ;

【例】利用中断屏蔽字修改中断处理优先级(响应多个中断),参见

https://blog.csdn.net/PacosonSWJTU/article/details/123595867


 【3】cpu中断全过程小结

cpu全过程有5个步骤:

  1. 中断请求;
  2. 中断判优;
  3. 中断响应;
  4. 中断处理;
  5. 中断返回;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第二篇 Entity Framework Plus 之 Query Future

从性能的角度出发,能够减少 增,删,改,查,跟数据库打交道次数,肯定是对性能会有所提升的(这里单纯是数据库部分)。 今天主要怎样减少Entity Framework查询跟数据库打交道的次数&#…

python长整数相乘_python写的大整数相乘的方法

输入72106547548473106236 982161082972751393 两个大整数输出结果70820244829634538040848656466105986748解题思路首先根据 大整数相乘的原理的基础上,把大整数进行优化拆分,拆分的长度,要考虑语言中整形的长度。这里用的python&#xff0c…

Java Web应用的代码分层最佳实践

转载自 Java Web应用的代码分层最佳实践代码分层,对于任何一个Java Web开发来说应该都不陌生。一个好的层次划分不仅可以能使代码结构更加清楚,还可以使项目分工更加明确,可读性大大提升,更加有利于后期的维护和升级。从另外一个角…

中断屏蔽技术

【README】 本文总结自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐; 【1】中断屏蔽 1,中断屏蔽的意思是,在中断1的服务程序执行过程中,不允许被其他中断…

.NET FM的未来计划

2016年3月21日,我们启动了.NET FM这档独立播客来服务中文.NET和微软技术社区。如同早先感谢信所言,能够得到社区的肯定和全力支持,二位主播是受宠若惊。关于未来的计划,下面简单和大家分享一下。 首先,关于节目播出频率…

Java开发必须掌握的日志分析命令

转载自 Java开发必须掌握的日志分析命令 对于大型网站来说,很多网站在可用性方面提出4个9或者5个9的要求,如果是4个9,那么网站全年的不可用时间不能超过52.6分钟,如果是5个9,全年不可用时间不能超过5.2分钟。这其实是很…

指令寻址方式与数据寻址方式

【README】 1.本文总结自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐; 2. cpu访存寄存器耗费 10ns,访问缓存(高速缓冲寄存器)耗费20ns,访问主…

python oj 输入_Python写OJ题时输入问题

# encoding: utf-8Created on Nov 6th, 2014author: SpeedcellPython的输入是野生字符串,所以要自己转类型strip去掉左右两端的空白符,返回strslipt把字符串按空白符拆开,返回[str]map把list里面的值映射到指定类型,返回[type]EOF…

本地缓存的原理及技术选型参考

转载自 本地缓存的原理及技术选型参考互联网架构设计的五大要素:高性能、高可用、可伸缩性、可扩展性、安全。如何做到高性能、高可用,缓存是一大助力。我们知道,绝大部分的时候,读数据写数据符合二八定律。并且读数据中&#xff…

程序员欢呼:微软Bing开始支持搜索源码、可直接运行

日常生活中,程序员们经常会遇见这样那样的问题,比如忘记了代码该怎么写,又或者需要实现一些特殊的算法和功能。这时候,你就可以去找微软 Bing 帮忙啦! 微软最近联合 HackerRank 一起研发了一项新功能:源代码…

rabbitmq创建缓存连接工厂

转自: 【RabbitMQ-3】连接池的配置_小胖学编程的博客-CSDN博客文章目录1. rabbitmq的connection连接池1.1 问题提出1.1.1 Connection对象管理以及性能1.1.2 Channel对象管理以及性能1.2 Spring AMQP线程池配置1.2.1 ConnectionFactory连接工厂1.2.2 消费发送和接收…

python简短语法_写出优雅简洁的 python 语法(二)函数传参

Python中函数传递参数的形式包含多种,可根据情况而定使用哪种方式。基本所有语言都有简介明了的语法去替代繁琐的代码,优雅的写法不仅能提升代码美观,更能提高提高开发效率,让代码更加易读。位置传递,默认参数位置传参…

你真的了解Java中的三目运算符吗

转载自 你真的了解Java中的三目运算符吗三目运算符是我们经常在代码中使用的,a (bnull?0:1);这样一行代码可以代替一个if-else,可以使代码变得清爽易读。但是,三目运算符也是有一定的语言规范的。在运用不恰当的时候会导致意想不到的问题。本文就介绍一…

关于.NET下开源及商业图像处理(PSD)组件

1 前言 这篇博客的背景是:为了完成吉日嘎拉的“PSD文件损坏检测和图层检测”任务,查找了目前.NET各种开源的及商业的图像处理资料,在完成任务之后,进行总结。此次任务主要是用C#操作PSD(PhotoShop)文件,中文资料很少&a…

SpringBoot连接多RabbitMQ源

转自: SpringBoot连接多RabbitMQ源 - 掘金在实际开发中,很多场景需要异步处理,这时就需要用到RabbitMQ,而且随着场景的增多程序可能需要连接多个RabbitMQ。SpringBoot本身提供了默认的配置可以快速配置连接RabbitMQ,但…

满足其中一个条件则可_农村分户好处多,但并非人人都可分户!满足这4个条件才可以申请...

分户,一般指子女成年或者成家后从父母户口里面独立出去,自立一户;也可以是指夫妻离婚后一方将户口独立出去(离婚也可以不分户,变更婚姻状态就行)。简单的说分户是指原本在一个户口本上的人口,现在分出去自成一个户口本…

Synchronized的实现原理(一)

转载自 Synchronized的实现原理(一)synchronized,是Java中用于解决并发情况下数据同步访问的一个很重要的关键字。当我们想要保证一个共享资源在同一时间只会被一个线程访问到时,我们可以在代码中使用synchronized关键字对类或者对…

FOSS历史回顾:三代开源人的故事

现在是2016年,你环顾一下四周,开源早已无处不在了。开源无论是规范、形式、以及面貌都和最初的大相径庭,然而事实上,这也预示着新一代的开源程序员们的崛起。下面我们尝试解释下。 (以下这一段落为作者自谦&#xff09…

Spring中@Autowired、@Qualifier、@Resource的区别

转自: Spring中Autowired、Qualifier、Resource的区别_老周聊架构的博客-CSDN博客_qualifier和resource区别1、AutowiredAutowired 可以单独使用。如果单独使用,它将按类型装配。因此,如果在容器中声明了多个相同类型的bean,则会…

map分组后取前10个_海关数据 | 图解前10个月外贸

*内容转载自微信公众号:海关发布RECOMMEND【 推荐阅读 】海关数据 | 图解前三季度我国外贸海关数据 | 图解8月外贸海关数据 | 一图看懂前7个月外贸海关数据 | 图解上半年度外贸增3.9%声明本微信订阅号不以商业营利为目的,不排除部分文字内容或图片转载自…