解析Windows XP 线程调度策略
1.主动切换
一个线程可能因为进入等待状态而主动放弃处理器的使用,此时Windows 2000/XP将选杼一个新线程开始运行。许多WIN32等待函数调用(如WaitForSingkObject或WaitFor-MultipkObjects等)都使线程等待某个对象,等待的对象可能有事件、互斥信号量、资源信号M、I/O操作、进程、线程、窗口消息等。如果进入等待线程的时间配额有剩余,在等待事件出现时,线程的时间配额被减1,相当于1/3个时钟间隔;如果线程的优先级大于等于14,在等待事件出现时,线程的优先级被重置。
2.抢先
当一个高优先级线程的等待完成,即一个线程等待的事件出现,高优先级线程进入就绪状态,或者一个线程的优先级被增加或减少,出现正在处于运行状态的低优先级线程低于就绪队列中的某个线程时,系统都要确定是否让当前线程继续运行或当前线程是否要被一个高优先级线程抢先。在Windows 2000/XP中的用户态下运行的线程也可以抢先内核态下运行的线程。在判断一个线程是否被抢先时,并不考虑线程处于用户态还是内核态,调度器只是依据线程优先级进行判断。
当线程被抢先时,它被放回相应优先级的就绪队列的队首。处于实时优先级的线程在被抢先时,时间配额被重置为一个完整的时间片;而处于动态优先级的线程在被抢先时,时间配额不变,重新得到处理器使用权后将运行到剩余的时间配额用完。
3.时间配额用完
当一个处于运行状态的线程用完它的时间配额时,Windows 2000/XP首先必须确定是否需要降低该线程的优先级,然后确定是否需要调度另一个线程进入运行状态。
如果刚用完时间配额的线程的优先级被降低了,Windows 2000/XP将寻找一个更适合的线程进入运行状态,所谓更适合的线程是指优先级高于刚用完时间配额的线程的新设S值的就绪线程。如果刚用完时间配额的线程的优先级没有降低,并且有其他优先级相同的就绪线程,Windows 2000/XP将选杼相同优先级的就绪队列中的下一个线程进入运行状态,刚用完时间配额的线程被排到就绪队列的队尾(即分配一个新的时间配额并把线程状态从运行状态改为就绪状态如果没有优先级相同的就绪线程可运行,刚用完时间配额的线程将得到一个新的时间配额并继续运行。
4.线程运行结束
当线程完成运行时,它的状态从运行状态转到终止状态。此时系统将处理器调度给另一个线程。线程完成运行的原因可能是通过调用ExhThread而从主函数中返回或被其他线程通过调用TerminateThread来终止。如果处于终止状态的线程对象上没有未关闭的句柄,则该线程将被从进程的线程列表中删除,相关数据结构将被释放。
相关文章

WinXP登录失败提示:未授予用户在此计算机上的请求登陆类型怎么办?
WinXP登录失败提示:“未授予用户在此计算机上的请求登陆类型”怎么办?今天我们就来看看详细的解决过程2023-08-16
xp系统我的文档在哪? WinXP系统下我的文档打不开怎么办?
xp系统我的文档在哪?winxp系统中的我的文档打不开,可能是权限出现了变化,下面我们就来看看WinXP系统下我的文档打不开怎么办?2023-08-16
XP系统如何快速升级到Win8系统?当我们使用XP系统的电脑时,想要升级到Win8系统,这时我们该怎么做呢,让我们一起看下文寻找解决的方法吧2020-12-24
如何解决WinXP系统LOL安全证书不可用?最近有不少XP系统的用户,向小编反应LOL安全证书不可用该怎么解决,下面就由小编带领大家来解决问题2020-12-22
如何恢复XP系统本地连接?最近有不少XP系统的用户,在使用电脑的时候遇到了这样的问题本地连接不见了,那么如何恢复呢。下面就由小编为大家解决问题2020-12-11
如何解决WinXP系统记事本乱码?解决WinXP系统记事本乱码的教程
如何解决WinXP系统记事本乱码?相信很多WinXP系统用户都有因为设置不当导致记事本乱码而烦恼过,那么如何解决这一问题呢,让我们一起来看看吧2020-12-08
怎么解决WinXP系统网页不能复制粘贴?windows xp系统,在使用电脑的时需要复制粘贴这个功能,但是有时候我们在WinXP系统网页不能完成复制粘贴,该如何解决这一问题,下面小编2020-12-07
如何解决winxp系统oracle无法使用?很多电脑用户不知道oracle的话,就需要开启oracle服务,但是如何开启oracle服务呢,下面小编带领大家学习一下2020-12-07
怎么解决XP出现"数据执行保护"?最近有很多小伙伴向小编反应使用xp系统过程中,总是会弹出"数据执行保护",那么我们该如何解决这一问题呢,下面小编为2020-12-07
winxp超级管理员账户消失了怎么办? winxp管理员账户恢复的技巧
winxp超级管理员账户消失了怎么办?最近遇到一个问题,winxp创建新账户后超级管理员账户消失了,该怎么办呢?下面我们就来看看winxp管理员账户恢复的技巧,需要的朋友可以2020-08-19











最新评论