中断不就是查询吗,为什么说中断比查询效率高

谁学逆向工程 2019-12-15 04:25:47
在《30天自制操作系统》103页有这么段话:

我们拿电脑的键盘来举个例子。以CPU的速度来看,键盘特别慢,只是偶尔动一动。就算是重复按同一个键,一秒钟也很难输入50个字符。而CPU在1/50秒的时间内,能执行200万条指令(CPU主频100MHz时)。CPU每执行200万条指令,查询一次键盘的状况就已经足够了。如果查询的太慢,用户输入一个字符时电脑就会半天没反应。

要是设备只有键盘,用“查询”这种处理方法还好。但事实上还有鼠标、软驱、硬盘、光驱、网卡、声卡等很多需要定期查看状态的设备。其中,网卡还需要CPU 快速响应。响应不及时的话,数据就可能接受失败,而不得不再传送一次。如果因为害怕处理不及时而靠轮流的方法轮流查看各个设备状态的话,CPU就会穷于应付,不能完成正常的处理。

正是为了解决以上问题,才有了中断机制。各个设备有变化时就产生中断,中断发生后,CPU暂时停止正在处理的任务,并做好接下来能够继续处理的准备,转而执行中断程序。中断程序执行完以后,再调用事先设定好的函数,返回处理中的任务。正是得益于中断机制,CPU可以不用一直查询键盘,鼠标,网卡等设备的状态,将精力集中在处理任务上。


问:这些外部设备发来的中断信号,不也得CPU去轮流查询吗,不查询怎么知道来了信号呢?
...全文
440 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
谁学逆向工程 2019-12-17
  • 打赏
  • 举报
回复
引用 9 楼 liups 的回复:
我比较好奇:楼主注册CSDN11年了,不知道中断?

混灌水区的
liups 2019-12-16
  • 打赏
  • 举报
回复
引用 7 楼 谁学逆向工程 的回复:
[quote=引用 5 楼 liups 的回复:] 前面说了看一下微机原理,不行也可以查一下百度百科什么的,看一下中断是怎么回事
这书太厚了,补一个疑问就看一本书,我的书也看不完了[/quote] 可是很显然你没有搞清楚什么是中断!看这个书也不是让你全部看啊,把中断搞清楚就没有这样的问题了
谁学逆向工程 2019-12-16
  • 打赏
  • 举报
回复
引用 5 楼 liups 的回复:
前面说了看一下微机原理,不行也可以查一下百度百科什么的,看一下中断是怎么回事

这书太厚了,补一个疑问就看一本书,我的书也看不完了
谁学逆向工程 2019-12-16
  • 打赏
  • 举报
回复
引用 4 楼 真相重于对错 的回复:
其实,在实际生活中也可以理解这个概念。
比如,你寄快递,如果查询的话,那么你每隔一段时间都要打一个电话问一下快递小哥或者上网查一下快递情况。
如果是中断,那么就是快递小哥主动的给你打电话,告诉你来拿快递。
这两种方式,你觉得那种更节约你的时间呢?
查询的话,如果不存在信号,你不是白白浪费时间去查了吗?

这个比喻不错
liups 2019-12-16
  • 打赏
  • 举报
回复
引用 楼主 谁学逆向工程 的回复:
问:这些外部设备发来的中断信号,不也得CPU去轮流查询吗,不查询怎么知道来了信号呢?
CPU在有中断请求时,“中断”当前操作,转而去处理中断请求,然后再再继续原来操作,这个过程称为中断。 所以楼主的想法是错误的! 前面说了看一下微机原理,不行也可以查一下百度百科什么的,看一下中断是怎么回事
真相重于对错 2019-12-16
  • 打赏
  • 举报
回复
其实,在实际生活中也可以理解这个概念。 比如,你寄快递,如果查询的话,那么你每隔一段时间都要打一个电话问一下快递小哥或者上网查一下快递情况。 如果是中断,那么就是快递小哥主动的给你打电话,告诉你来拿快递。 这两种方式,你觉得那种更节约你的时间呢? 查询的话,如果不存在信号,你不是白白浪费时间去查了吗?
liups 2019-12-16
  • 打赏
  • 举报
回复
我比较好奇:楼主注册CSDN11年了,不知道中断?
liups 2019-12-15
  • 打赏
  • 举报
回复
微机原理看一下(也有叫接口与通信的)
谁学逆向工程 2019-12-15
  • 打赏
  • 举报
回复
引用 1 楼 寻开心 的回复:
查询是cpu主动去问外设的状态是什么样子, 因此查询是必须要定期循环去查看的

中断则相反,是设备主动把自身的变化通知给cpu

显然后者是更节省cpu的资源的

怎么通知,不也是把电信号放在某个缓存吗,然后让CPU自己去缓存查询
寻开心 2019-12-15
  • 打赏
  • 举报
回复
查询是cpu主动去问外设的状态是什么样子, 因此查询是必须要定期循环去查看的

中断则相反,是设备主动把自身的变化通知给cpu

显然后者是更节省cpu的资源的

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧