中断不就是查询吗,为什么说中断比查询效率高
在《30天自制操作系统》103页有这么段话:
我们拿电脑的键盘来举个例子。以CPU的速度来看,键盘特别慢,只是偶尔动一动。就算是重复按同一个键,一秒钟也很难输入50个字符。而CPU在1/50秒的时间内,能执行200万条指令(CPU主频100MHz时)。CPU每执行200万条指令,查询一次键盘的状况就已经足够了。如果查询的太慢,用户输入一个字符时电脑就会半天没反应。
要是设备只有键盘,用“查询”这种处理方法还好。但事实上还有鼠标、软驱、硬盘、光驱、网卡、声卡等很多需要定期查看状态的设备。其中,网卡还需要CPU 快速响应。响应不及时的话,数据就可能接受失败,而不得不再传送一次。如果因为害怕处理不及时而靠轮流的方法轮流查看各个设备状态的话,CPU就会穷于应付,不能完成正常的处理。
正是为了解决以上问题,才有了中断机制。各个设备有变化时就产生中断,中断发生后,CPU暂时停止正在处理的任务,并做好接下来能够继续处理的准备,转而执行中断程序。中断程序执行完以后,再调用事先设定好的函数,返回处理中的任务。正是得益于中断机制,CPU可以不用一直查询键盘,鼠标,网卡等设备的状态,将精力集中在处理任务上。
问:这些外部设备发来的中断信号,不也得CPU去轮流查询吗,不查询怎么知道来了信号呢?