linac
驱动牛犊
驱动牛犊
  • 注册日期2005-04-25
  • 最后登录2005-11-20
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1475回复:3

dispatch_level 是如何调度的?

楼主#
更多 发布于:2005-05-15 09:39
是高优先级如DIRQL的进程一执行完毕,立即将所有dispatch level的进程按序执行,
还是所有进程按时间片依调度算法排序? 即interrupt routine执行时,派发了一个dpc,但是在这个dispatch level的dpc执行前,系统有无可能中间插入一个时间片给passive level的进程?
saicflying
驱动牛犊
驱动牛犊
  • 注册日期2004-10-30
  • 最后登录2012-12-26
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-15 16:27
我觉得吧,应该是系统维护了一个DPC队列,这个优先级的东东都是按队列走得吧
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-16 09:29
是高优先级如DIRQL的进程一执行完毕,立即将所有dispatch level的进程按序执行,
还是所有进程按时间片依调度算法排序? 即interrupt routine执行时,派发了一个dpc,但是在这个dispatch level的dpc执行前,系统有无可能中间插入一个时间片给passive level的进程?

不可能插入一个时间片给passive level的进程,DPC是靠DPC软件中断
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
lifeship
驱动小牛
驱动小牛
  • 注册日期2002-10-18
  • 最后登录2005-07-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-17 13:34
线程调度例程运行在dpc level上,当产生了调度请求,实际上就是产生一个dpc中断,当所有高于dpc level的中断都处理完后,系统将会检查系统dpc对列,一次处理其中的所有请求。这其中可能有线程调度请求。线程调度例程受到调用后,它将决定下一个运行的线程是谁,觉得算法很多,可以参见一些操作系统书籍。当所有的中断完成后,调度运行的线程就开始运行了。

注意线程正常运行都是在passive level上的。
杯汝前来,  老子今朝,  放荡形骸!  甚长年抱渴,  咽如焦釜,  于今喜醉,  气似奔雷!  慢说刘伶,  古今达者,  醉后何妨死便埋! 
游客

返回顶部