阅读:1899回复:8
问一个irql的问题,不解。
为何irql大于dispatch_level时候不能请求非分页内存。windows internel中解释:访问一个未驻留的内存将会导致一个页面错误,页面错误发生时,内存管理器激发一个磁盘io,然后要等待文件系统驱动程序从磁盘读取该页面。这一等待又一次要求调度器执行一个环境切换。因此违反了此时调度器不能被调用的规则。
那这是否表明,当优先级高于dispatch_level时候,不能被中断? |
|
最新喜欢:![]() |
沙发#
发布于:2007-05-27 10:32
no. 如果有irql高于它的,也可以中断它...
|
|
|
板凳#
发布于:2007-05-27 17:16
那为何irql大于dispatch_level时候不能请求非分页内存。
|
|
地板#
发布于:2007-05-28 09:39
因为.....此时没机会进行缺页中断,无法将磁盘上的文件换入... windows 这么规定的.想来应该是页面调度的irql优先级低于dispatch_level了,此时.....
|
|
|
地下室#
发布于:2007-05-28 11:22
非常感谢,问你另外一个问题。中断被执行的时候,伴随着线程的切换吧。
|
|
5楼#
发布于:2007-05-28 16:12
分页中断是apc_level,没记错的话.
|
|
|
6楼#
发布于:2007-05-28 17:56
一个高IRQL中断环境,尽量不要回调访问比它低的IRQL,,,,
那样很容易死锁了,,, |
|
7楼#
发布于:2007-05-28 23:51
通常,如果在线程执行时发生了软件或硬件中断,那么在内核处理中断期间,该线程仍然是“当前”线程。而内核模式代码执行时所在的上下文环境就是指这个“当前”线程的上下文。为了响应各种中断,Windows NT调度器可能会切换线程,这样,另一个线程将成为新的“当前”线程。
这句话怎么理解,意思是中断时候可能导致线程切换,也可能不? |
|
8楼#
发布于:2007-05-30 17:30
中断也分很多种的嘛,比如硬件、电源、软件中断,所以“可能”,或者“可能不”。
|
|