【转载】揭开硬件中断请求IRQ所有秘密(图解)

转载自:http://news.csdn.net/n/20040517/45868.html

IRQ(Interrupt Request)的作用就是在我们所用的电脑中,执行硬件中断请求的动作,用来停止其相关硬件的工作状态。比如我们要打印一份文件,在打印结束时就需要由系统对打印机提出相应的中断请求,来以此结束这个打印的操作。

  产生中断请求的设备或者事件被称为中断源,中断源可分为两类:一类是CPU内部中断,即执行软件中断指令INT或遇到软件陷阱而产生的中断,它们的中断类型号已由CPU规定好;另一类中断是由CPU以外的I/O设备产生的中断,又称硬件中断,硬件中断可分为不可屏蔽中断NMI和可屏蔽中断INTR,NMI用于紧急情况的故障处理,如RAM奇偶校验错等,INTR则用于外部依靠中断来工作的硬件设备。网卡使用的就是INTR,下面我们对IRQ进行更深入的了解。

  一、中断类型号和IRQ

  外部设备的中断请求是通过中断控制器8259A的INT引脚输入到CPU的INTR引脚向CPU提出中断申请的,并送去一个中断类型号,这是一个8位的二进制数。

  一片8259A能负责整个外部设备的中断请求(1RQ0-IRQ7),每个外设对应一个中断请求号。


图为:中断类型号与中断请求号

  二、IRQ的优先级和默认配置

  一般计算机只能支持16个IRQ,也就是提供16个硬件设备的中断请求,16个IRQ是用两个8259A通过级联来实现的。


图为:主从8259A连接图

  主中断控制器8259A的IRQ2与从中断控制器8259A的INT引脚相连,因此从8259A上的中断请求优先级(Priority)享受主8259AIRQ2上的优先分级。所谓优先级是指当有多个中断源提出中断请求时,CPU先为优先权高的中断请求服务。再为优先权低的中断服务。主8259A中IRQ0~IRQ7中的IRQ0优先权最高,IRQ7最低;从8259A中以IRQ8最高,IRQl5最低。

  由于两个8259A的连接关系,从8259A的IRQ8~IRQ15的优先权低于主8259A的IRQ0~IRQl,而高于主8259A的IRQ3~IRQ7。


图为:中断优先级顺序

  计算机中有些IRQ有默认的配置,这些默认的配置都是些常用设备,一般的默认配置。


图为:1RQ的默认配置使用情况

  现在的Windows操作系统已经运用PNP技术,这种“即插即用”的功能可以将中断进行自动分配,大大简化了用户的操作。不过这种PNP技术也有它的弱点,那就是如果不能认出要安装的新设备,那么自动分配中断时就会产生冲突。我们日常所用的硬件对于IRQ的设置也不尽相同,所以在安装新硬件的时候,系统往往并不能自动检测正确的IRQ来分配给所有调用的硬件,这就会造成此硬件设备或是原来的旧硬件出现不能正常工作的现象。现在新的硬件产品层出不穷,各种产品又相互兼容,功能类似,这就导致了操作系统常常不能正确检测出新设备,中断冲突也就不可避免了。其实这是因为系统自动将该硬件的IRQ分配给了其他与此IRQ相同的硬件上,从而发生冲突使硬件不能正常工作。一般如果遇到这种情况,只要将新旧两个硬件的IRQ配置手动调开就可以解决了。手动配置IRQ时,最好检查有无保留中断(IRQ),不要让其他设备使用该中断号,以免引起新的中断冲突,造成系统死机。另外从表2还可以看出,COM1端口设置为IRQ4,而COM2端口设置为IRQ3,即COM2比COMl中断优先权高,所以为保持通信的传输质量通常将COM2端口接调制解调器,而把COM1留给鼠标使用。利用相同的原理,合理分配各硬件设备的中断号,将使你的系统性能佳。

转载于:https://www.cnblogs.com/IamEasy_Man/archive/2009/09/08/1562195.html

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

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

相关文章

(七)DKN:用于新闻推荐的深度知识感知网络

摘要: 背景: 新闻语言是高度浓缩的,充满了知识实体和常识。然而,现有的方法并没有意识到一些外在的知识,也不能充分发现新闻之间潜在的知识层面的联系。因此,推荐给用户的结果仅限于简单的模式&#xff0c…

平面方程(Plane Equation)

平面方程(Plane Equation) 原文链接:http://www.songho.ca/math/plane/plane.html翻译:罗朝辉 (http://www.cnblogs.com/kesalin/)本文遵循“署名-非商业用途-保持一致”创作公用协议平面方程平面上的一点以及垂直于该平面的法线唯一定义了 3D 空间的一个…

【DKN】(三)data_preprogress.py

内容 try: # 以绝对导入的方式导入cofig对象,并获取其{model_name}Config! config getattr(importlib.import_module(config), f"{model_name}Config") except AttributeError:print(f"{model_name} not included!")exit()这里…

mask属性是css3的吗_使用CSS3 mask(蒙版,遮罩)属性实现超酷按钮悬停动画

CSS语言:CSSSCSS确定import url("https://fonts.googleapis.com/css?familyLato:100,300,400");import url("https://fonts.googleapis.com/css?familyRoboto:100");* {margin: 0;padding: 0;box-sizing: border-box;}.header {text-align: c…

Java核心API需要掌握的程度

Java的核心API是非常庞大的,这给开发者来说带来了很大的方便,经常人有评论,java让程序员变傻。 但是一些内容我认为是必须掌握的,否则不可以熟练运用java,也不会使用就很难办了。 1、java.lang包下的80%以上的类的功能的灵活运用。…

主成分分析(Principal Component Analysis,PCA)

文章目录1. 总体主成分分析2. 样本主成分分析3. 主成分分析方法3.1 相关矩阵的特征值分解算法3.2 矩阵奇异值分解算法4. sklearn.decomposition.PCA主成分分析(Principal Component Analysis,PCA)是一种常用的无监督学习方法利用正交变换把由…

【DKN】(二)config.py

class BaseConfig():"""General configurations appiled to all models"""num_epochs 2 #迭代次数num_batches_show_loss 100 # Number of batchs to show lossnum_batches_validate 1000 # Number of batchs to check metrics on valid…

log4net异步写入日志_微信支付万亿日志在Hermes中的实践

导语 | 微信支付日志系统利用 Hermes 来实现日志的全文检索功能,自从接入以来,日志量持续增长。目前单日入库日志量已经突破万亿级,单集群日入库规模也已经突破了万亿,存储规模达 PB 级。本文将介绍微信支付日志系统在 Hermes 上的…

使用Axis2调用Web Service

本文作为使用Axis2创建Web Service的后篇,主要介绍如何使用Axis2调用Web Service。有关准备工作详情请参考前篇的内容。 在Eclipse的Packge Explorer中右键点击New,选择Other项,新建一个Axis2 Code Genrateor向导。点击Next,打开向…

LeetCode 旋转数组 系列

旋转数组系列,多数是排序数组进行了旋转,可以使用二分查找。做一个集合,如还有缺失的,可以留言指出,一起加油! LeetCode 33. 搜索旋转排序数组(二分查找) LeetCode 81. 搜索旋转排…

如何并行运行程序

参考了官方文档, torch.nn.parallel.DataParallel 以及https://zhuanlan.zhihu.com/p/102697821 在运行此DataParallel模块之前,并行化模块必须在device_ids [0]上具有其参数和缓冲区。在执行DataParallel之前,会首先把其模型的参数放在devi…

matlab打开笔记本摄像头_matlab窗口调用摄像头

更改”.m“文件:function varargout untitled1(varargin)% UNTITLED1 MATLAB code for untitled1.fig% UNTITLED1, by itself, creates a new UNTITLED1 or raises the existing% singleton*.%% H UNTITLED1 returns the handle to a new UNTITLED…

session过期后登陆页面跳出iframe页面问题

登陆页面增加javascript:function window.onload(){if(window.parent.length>0)window.parent.locationlocation;}转载于:https://www.cnblogs.com/shenyunjun420/archive/2009/09/29/1576400.html

LeetCode 1143. 最长公共子序列(动态规划)

1. 题目 给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新…

【DKN】(四)train.py

内容 try: #不用多言, 获得该模块下的model_name函数Model getattr(importlib.import_module(f"model.{model_name}"), model_name)config getattr(importlib.import_module(config), f"{model_name}Config") except AttributeError:print(…

用promise封装ajax_ES6-promise封装AJAX请求

【摘要】ES6-promise封装AJAX请求考必过小编为大家整理了关于ES6-promise封装AJAX请求的信息,希望可以帮助到大家!ES6-promise封装AJAX请求标签:const状态码setreject对象响应状态ISErequest// 接口地址:https://api.apiopen.top/getJoke// 1…

REST和SOAP Web Service的比较(写得非常清晰易懂,转载于此)

本文转载自他人的博客,ArcGIS Server 推出了 对 SOAP 和 REST两种接口(用接口类型也许并不准确)类型的支持,本文非常清晰的比较了SOAP和Rest的区别联系!REST似乎在一夜间兴起了,这可能引起一些争议,反对者可…

LeetCode 1249. 移除无效的括号(栈+set / deque)

1. 题目 给你一个由 (、) 和小写字母组成的字符串 s。 你需要从字符串中删除最少数目的 ‘(’ 或者 ‘)’ (可以删除任意位置的括号),使得剩下的「括号字符串」有效。 请返回任意一个合法字符串。 有效「括号字符串」应当符合以下 任意一条 要求&…

【DKN】(七)dataset.py【未完】

内容 里面有的函数在这里https://blog.csdn.net/qq_35222729/article/details/119882362 try:config getattr(importlib.import_module(config), f"{model_name}Config") except AttributeError:print(f"{model_name} not included!")exit()class BaseDa…

php raabitmq中间件_rabbitMQ消息中间件环境配置及原理了解

视频教程一、Docker 入门Docker是什么?Docker 是一个开源的应用容器引擎,你可以将其理解为一个轻量级的虚拟机,开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任 何流行的 Linux 机器上。为什么要使用 Docke…