accessory 发表于 2010-06-03 00:15

其实中断丢失是很常见的一个现象

多年前,新手的我自己写WINDOWS驱动的时候,觉得中断丢失简直是难以理解。那时的我觉得硬件应该是很可靠的,OS也是。

不过后来慢慢发现,其实硬件本身很多时候是不一定可靠的,还有其他的问题也可能导致中断丢失。最近在版上也看到不少类似的问题。

一般在写驱动的时候,就要考虑到中断丢失的情况。解决办法是用一些定时器(看门狗,WACHDOG),定时的查下硬件状态。如果硬件本身有BUFFER, 虽然中断丢了,数据或者命令还在,那么直接读出来就可以了。

有兴趣的可以参考下 LINUX E1000网卡的实现中WATCHDOG部分。

希望对大家有些帮助。

klanet 发表于 2010-06-03 08:56

顶!受益不小!

aaaaa5aa 发表于 2010-06-05 15:09

有坏道会不会引起中断

accessory 发表于 2010-06-05 22:28

回LS,不一定,看硬件说明书。

smalloc 发表于 2010-06-05 22:31

中断丢失用时候是硬件间协同或同步问题。
芯片本身的设计思路也考虑了这些问题.可能有不同的解决方案.

accessory 发表于 2010-06-06 20:58

恩。不过总的来说,不要指望硬件很完美。

new_learner 发表于 2011-03-31 23:53

恩。不过总的来说,不要指望硬件很完美。
accessory 发表于 2010-06-06 20:58 http://bbs.chinaunix.net/images/common/back.gif


    我最近在看一款OS的CPC实现,就是基于IPI的(APIC IPI),但软件层上没有去考虑IPI丢失的情况。
所以想请教下,像IPI这种核间中断,硬件会保证不丢失吗?

accessory 发表于 2011-04-01 00:24

对IPI不是很了解。不过感觉上应该比较可靠,因为如果IPI丢了,那就没有啥其他替代的方法了。一般的网卡如果中断丢了,还可以定时轮询下。IPI 是CPU之间的,似乎不能轮询那些变化? 纯属猜测 ,不一定对

ymxlou 发表于 2011-04-07 09:28

感谢分享:)

amarant 发表于 2011-04-07 10:25

我也一直對這個問題感到很困惑,系統更新時間靠的是時鐘中斷,但是cpu關中斷的時間那麼多,按理說時鐘中斷丟失不算小概率事件,那麼為什麼不會造成系統計時的偏差呢?
页: [1] 2
查看完整版本: 其实中断丢失是很常见的一个现象