阅读:853回复:1
问题11,帮帮忙,谢谢
4.一个网卡硬件通常有两个最主要的中断(发送完成中断,还有接收中断)。
第一个问题:是不是一旦发生中断,CPU便将当前信息保存下来以便中断处理完成之后,跳出中断继续执行刚刚被中断的代码。我以前所学的只是书上的知识没有接触过真正的硬件中断。不过我问过几个硬件的老师,他们说就是这样。 第二个问题:在中断处理过程中一旦再次出现中断情况,譬如在处理发送完成中断时,又有新的数据到来。那么是不是因为是平级中断所以不再发生接收中断。而是在中断状态位上标明有新的中断需要处理。还是说我已经在硬件上的某个寄存器上写0了,硬件就不产生中断了。我看到好几个例子感觉是这样的。只是看到DDK带的NE2000例子中的中断处理代码HandleInterrupt()函数感觉好像就跳不出中断循环了。 其实这个问题还是因为我担心产生时序混乱上的问题。 |
|
|
沙发#
发布于:2005-05-18 13:54
1。是象你说的那样
2。和具体硬件相关,也和os中断处理架构有关。这种问题我认为只有在linux 这种可以看到源代码的os上才能彻底搞清楚。 在windows 上,你只是提供了几个会调函数,系统做了什么你都不清楚,很难彻底搞清楚。 常见的处理,是在网卡中断处理函数里,设置网卡的硬件中断屏蔽位 就使硬件不会向cpu产生硬件中断了,但应该是尽早打开,不然会造成数据丢失。 |
|