一、学习自
滴水编程达人
中级班课程,官网:https://bcdaren.com
二、海东老师牛逼!
时钟中断发生时,以下两种情况会导致线程切换:
KPCR.PrcbData.NextThread
)描述:
_KTHREAD.Quantum
赋初始值,该值的大小由 _KPROCESS.ThreadQuantum
决定(观察 ThreadQuantum
大小)KeUpdateRunTime
函数,该函数每次将当前线程 Quantum
减少3个单位,如果减到0,则将 KPCR.PrcbData.QuantumEnd
的值设置为非0。KiDispatchInterrupt
判断时间片到期:KiQuantumEnd
(重新设置时间片、找到要运行的线程)
若CPU时间片到期,则跳转至 loc_405920
KiQuantumEnd 重新设置了时间片
然后调用了 KiFindReadyThread,找到下一个要运行的线程
KiQuantumEnd 结束后,若存在下一个将要运行的线程,跳转至 loc_4058D1
KiReadyThread 将原线程挂载到调度链表中