KiFindReadyThreadV2
2024-07-20 18:43:17 0 举报
Kernel查找就绪线程
作者其他创作
大纲/内容
N
start
将当前核序号加到此线程 nextProcessor 表示该线程执行在哪个逻辑核
; 清空位图font color=\"#e74f4c\
线程链表是否为空
; ecx来源上面_list_entry.Flink,这里-74是_KTHREAD的就绪链表font color=\"#e74f4c\
Y
;判断就绪位图是否为空font color=\"#e74f4c\
判断线程能是否亲当前逻辑核
是否还有下一个线程
位图还有就绪线程链表
eax=找到的线程返回
font color=\"#e74f4c\
;判断亲和性是不是同一个组font color=\"#e74f4c\
从新核就绪位图中获取最高优先级的就绪线程链表
; 根据当前的亲和性判断当前线程能否跑在这个核font color=\"#e74f4c\
保护现场 寄存器压栈
清掉局部位图变量中该线程链表的就绪状态 对应索引位置 0
结束
从匹配到的线程链中向前拿出一个线程
loop
判断线程和当前CPU是否亲核
拿出此线程的亲核性KTHREAD.Affinity
获取到当前核所在的组 即 CPU的序号
从线程链表移除掉当前线程
0 条评论
回复 删除
下一页