阅读:1768回复:5
关于中断的几个参数不明? IRQL, Level, Vector, Affinity, MappedVector
ULONG MappedVector =
HalGetInterruptVector( IN INTERFACE_TYPE InterfaceType, IN ULONG BusNumber, IN ULONG BusInterruptLevel, IN ULONG BusInterruptVector, OUT PKIRQL Irql, OUT PKAFFINITY Affinity ); 其中的几个参数不甚理解 BusInterruptLevel,BusInterruptVector, Irql, Affinity, MappedVector ? 在设备管理器中我们看到中断值是这个 BusInterruptLevel 吧? 为什么在设备管理器中不直接赋一个Irql值给设备呢? |
|
沙发#
发布于:2005-05-14 22:44
BusInterruptLevel,
对于8259A中断控制器,每个中断有一个优先级,优先级低的会被高的屏蔽掉 BusInterruptVector, 对于8259A中断控制器,每个中断有一个中断线,代表由某条中断线引起的中断 Irql, Windows为了使中断与平台无关,重新定义了操作系统自己使用的中断优先级,这个参数是上面的BusInterruptLevel对应到操作系统的优先级 Affinity, 不了解 MappedVector 中断向量,8259a为每根中断线编程了特定的中断向量, |
|
|
板凳#
发布于:2005-05-16 09:52
BusInterruptLevel 和 KIRQL是不同的两套关于中断级别标准,
其区别和联系是什么? BusInterruptVector 和 MappedVector也是不同的两套中断向量表, 其区别和联系是什么? 还有就是Affinity和cpu之间发生了什么关系? |
|
地板#
发布于:2005-05-16 17:52
Affinity 指的应该是在多cpu环境下的亲缘性吧
也就是只能中断某些cpu吧 |
|
地下室#
发布于:2005-05-18 19:07
BusInterruptLevel 和 BusInterruptVector 是DOS下的中断号和中断向量表
KIRQL 和 MappedVector是windows把DOS下的中断号和中断向量映射到windows系统中去, 我的理解是这样的,不知道说的对否? Affinity还是没搞明白 |
|
5楼#
发布于:2005-05-19 08:51
Affinity是指和CPU的亲和性,因为某线程如果已经在某CPU上运行,那么下次调度时最好还在这个CPU上运行,这样CPU的Cache就不会失效.有些程序必须在一个CPU上运行,不能同时在多个CPU上运行,这样就是有CPU的Affinity了 |
|
|