阅读:1475回复:3
dispatch_level 是如何调度的?
是高优先级如DIRQL的进程一执行完毕,立即将所有dispatch level的进程按序执行,
还是所有进程按时间片依调度算法排序? 即interrupt routine执行时,派发了一个dpc,但是在这个dispatch level的dpc执行前,系统有无可能中间插入一个时间片给passive level的进程? |
|
沙发#
发布于:2005-05-15 16:27
我觉得吧,应该是系统维护了一个DPC队列,这个优先级的东东都是按队列走得吧
|
|
板凳#
发布于:2005-05-16 09:29
是高优先级如DIRQL的进程一执行完毕,立即将所有dispatch level的进程按序执行, 不可能插入一个时间片给passive level的进程,DPC是靠DPC软件中断 |
|
|
地板#
发布于:2005-05-17 13:34
线程调度例程运行在dpc level上,当产生了调度请求,实际上就是产生一个dpc中断,当所有高于dpc level的中断都处理完后,系统将会检查系统dpc对列,一次处理其中的所有请求。这其中可能有线程调度请求。线程调度例程受到调用后,它将决定下一个运行的线程是谁,觉得算法很多,可以参见一些操作系统书籍。当所有的中断完成后,调度运行的线程就开始运行了。
注意线程正常运行都是在passive level上的。 |
|
|