等待链表 调度链表

线程的状态

线程有3种状态,run wait ready

run:在KPCR里可以找到正在运行的线程。一个CPU有一个KPCR,就可以有一个处于run状态的线程。 8个CPU就有8个同时run的线程。

wait: Sleep WaitForSingleObject Suspend 都可以让线程处于wait状态

等待链表

kd> dd KiWaitListHead
8055b088 861f83e0 862e7e08 00000011 00000000
8055b098 e57a42bd d6bf94d5 01000013 ffdff980
8055b0a8 ffdff980 804dd2cd 00000000 00000494
8055b0b8 00000000 ffdff9c0 8055b0c0 8055b0c0
8055b0c8 00000000 00000000 8055b0d0 8055b0d0
8055b0d8 00000000 00000000 00000000 867b08b8
8055b0e8 00000000 00000000 00040001 00000000
8055b0f8 867b0928 867b0928 00000001 000000

查看出来的地址是_ETHREAD的60处。 减去0x60就是_ETHREAD的开始处
在这里插入图片描述

就绪链表

一共有32个链表,线程不同的优先级,就在不同的链表中。如果当前地址=链表中第一个值 链表中第一个值 =链表中第二个值 那么这个链表就是空的。 调试时,所有线程都会被挂起来,所以就绪链表是空的。

dd KiDispatcherReadyListHead l70

8055bb20 8055bb20 8055bb20 8055bb28 8055bb28
8055bb30 8055bb30 8055bb30 8055bb38 8055bb38
8055bb40 8055bb40 8055bb40 8055bb48 8055bb48
8055bb50 8055bb50 8055bb50 8055bb58 8055bb58
8055bb60 8055bb60 8055bb60 8055bb68 8055bb68
8055bb70 8055bb70 8055bb70 8055bb78 8055bb78
8055bb80 8055bb80 8055bb80 8055bb88 8055bb88
8055bb90 8055bb90 8055bb90 8055bb98 8055bb98
8055bba0 8055bba0 8055bba0 8055bba8 8055bba8
8055bbb0 8055bbb0 8055bbb0 8055bbb8 8055bbb8
8055bbc0 8055bbc0 8055bbc0 8055bbc8 8055bbc8
8055bbd0 8055bbd0 8055bbd0 8055bbd8 8055bbd8
8055bbe0 8055bbe0 8055bbe0 8055bbe8 8055bbe8
8055bbf0 8055bbf0 8055bbf0 8055bbf8 8055bbf8
8055bc00 8055bc00 8055bc00 8055bc08 8055bc08
8055bc10 8055bc10 8055bc10 8055bc18 8055bc18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值