4.等待链表与调度链表
生活随笔
收集整理的這篇文章主要介紹了
4.等待链表与调度链表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
等待鏈表
kd>dd KiWaitListHead
比如:線程調用了Sleep()或者WaitForSingleObject()等函數時,就掛到這個雙向鏈表, (查看等待線程)
33個鏈表
線程有3種狀態:就緒、等待、運行
正在運行中的線程存儲在KPCR中,就緒和等待的線程全在另外的33個鏈表中。1個等待鏈表, 32個就緒鏈表:
這些鏈表都使用了_KTHREAD(0x060)這個位置,也就是說,線程在某一時刻,只能屬于其中一個圈。
4、查看調度鏈表
既然有32個鏈表,就要有32個鏈表頭。
kd> dd KiDispatcherReadyListHead L70
版本差異XP
只有一個33個圈,也就是說上面這個數組只有一個,多核也只有一個Win7也是一樣的只有一個圈,如果是64位的,那就有64個圈。
服務器版本:
KiWaitListHead整個系統只有一個,但KiDispatcherReadyListHead這個數組有幾個CPU就有幾組
總結
以上是生活随笔為你收集整理的4.等待链表与调度链表的全部內容,希望文章能夠幫你解決所遇到的問題。