bimingda
驱动牛犊
驱动牛犊
  • 注册日期2006-04-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分540分
  • 威望55点
  • 贡献值0点
  • 好评度54点
  • 原创分0分
  • 专家分0分
阅读:1898回复:8

问一个irql的问题,不解。

楼主#
更多 发布于:2007-05-25 15:43
为何irql大于dispatch_level时候不能请求非分页内存。windows internel中解释:访问一个未驻留的内存将会导致一个页面错误,页面错误发生时,内存管理器激发一个磁盘io,然后要等待文件系统驱动程序从磁盘读取该页面。这一等待又一次要求调度器执行一个环境切换。因此违反了此时调度器不能被调用的规则。
那这是否表明,当优先级高于dispatch_level时候,不能被中断?

最新喜欢:

qdyangjingqdyang...
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2007-05-27 10:32
no. 如果有irql高于它的,也可以中断它...
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
bimingda
驱动牛犊
驱动牛犊
  • 注册日期2006-04-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分540分
  • 威望55点
  • 贡献值0点
  • 好评度54点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-05-27 17:16
那为何irql大于dispatch_level时候不能请求非分页内存。
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
地板#
发布于:2007-05-28 09:39
因为.....此时没机会进行缺页中断,无法将磁盘上的文件换入... windows  这么规定的.想来应该是页面调度的irql优先级低于dispatch_level了,此时.....
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
bimingda
驱动牛犊
驱动牛犊
  • 注册日期2006-04-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分540分
  • 威望55点
  • 贡献值0点
  • 好评度54点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-05-28 11:22
非常感谢,问你另外一个问题。中断被执行的时候,伴随着线程的切换吧。
driverdance
驱动牛犊
驱动牛犊
  • 注册日期2007-04-18
  • 最后登录2007-08-13
  • 粉丝0
  • 关注0
  • 积分640分
  • 威望65点
  • 贡献值0点
  • 好评度64点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-05-28 16:12
分页中断是apc_level,没记错的话.
承接WDM和hook的项目。
qiweixue
驱动小牛
驱动小牛
  • 注册日期2004-07-21
  • 最后登录2011-12-19
  • 粉丝0
  • 关注0
  • 积分1006分
  • 威望274点
  • 贡献值0点
  • 好评度268点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2007-05-28 17:56
一个高IRQL中断环境,尽量不要回调访问比它低的IRQL,,,,

那样很容易死锁了,,,
bimingda
驱动牛犊
驱动牛犊
  • 注册日期2006-04-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分540分
  • 威望55点
  • 贡献值0点
  • 好评度54点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-05-28 23:51
通常,如果在线程执行时发生了软件或硬件中断,那么在内核处理中断期间,该线程仍然是“当前”线程。而内核模式代码执行时所在的上下文环境就是指这个“当前”线程的上下文。为了响应各种中断,Windows NT调度器可能会切换线程,这样,另一个线程将成为新的“当前”线程。


这句话怎么理解,意思是中断时候可能导致线程切换,也可能不?
yunyanrong
驱动小牛
驱动小牛
  • 注册日期2003-04-18
  • 最后登录2013-03-02
  • 粉丝0
  • 关注0
  • 积分1040分
  • 威望457点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-05-30 17:30
中断也分很多种的嘛,比如硬件、电源、软件中断,所以“可能”,或者“可能不”。
游客

返回顶部