阅读:1993回复:13
是否所有的dpc例程都运行在dispatch_level上呢??给分
看了art baker的2000设备驱动程序设置指南,说中断服务历程的DPC运行在dispatch_level。
DPC历程好像有很多,像计时器也有DPC历程(通过KeSettimer即可设置),这个dpc历程是不是也运行在dispatch_level上呢??只有这样才能抢夺运行在passive_level上历程的cpu以得到执行? |
|
沙发#
发布于:2005-01-21 16:42
在dispatch_level上运行的代码肯定比passive_level上的要紧急了,dispatch例程都在passive_level上进行,所以DPC例程比dispatch例程的中断级高。
由于线程调度器在dispatch_level运行,所以便于调度?即使DPC例程运行在passive_level上也同样的调度啊。 |
|
板凳#
发布于:2005-01-24 16:02
我现在设置了一个带DPC例程的计时器,在计时器超时的时候,DPC例程得到执行。
请问这个DPC例程运行在Dispatch_level上吗? 如果是的话,它就会比分发例程有更高得中断级。 现在分发例程要read一块非分页内存,此时计时器超时,那正在执行得分发例程被中断。OS保存上下文(此上下文包含这块内存吗),并调用DPC例程,DPC例程中要修改这一块非分页内存。这样子的话,会否导致分发例程重新得到CPU得时候出问题?因为非分页内存已经被改变了,从而导致了上下文得改变。 |
|
地板#
发布于:2005-01-25 17:37
谢谢阿。
我关注的不是分业与否,确切地说,我知道非分业内存不会被交换到磁盘上,也不能再dispatch_level及其以上访问分业内存。 我想了解的是: 您所说的内核中不切换上下文是指中断到来的时候,os不保存当前的执行的环境?? 还有ddk中常说的arbitary context和nonarbitary context是指的什么东东呢?? “所有的用户进程对应的核心是相同的,核心不切换。“这句话意思是说用户进程对应了同一个驱动,驱动不切换?能否解释一下? |
|
地下室#
发布于:2005-01-26 18:20
谢谢您热心的回答!!给分:)))
上下文可以理解成一个进程吗?或者是一个线程? |
|