Windows XP线程调度策略

   Windows XP线程调度策略

  Windows 2000/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来终止。如果处于终止状态的线程对象上没有未关闭的句柄,则该线程将被从进程的线程列表中删除,相关数据结构将被释放。

时间: 2024-12-24 19:01:10

Windows XP线程调度策略的相关文章

解析Windows XP 线程调度策略

1.主动切换一个线程可能因为进入等待状态而主动放弃处理器的使用,此时Windows 2000/XP将选杼一个新线程开始运行.许多WIN32等待函数调用(如WaitForSingkObject或WaitFor- MultipkObjects等)都使线程等待某个对象,等待的对象可能有事件.互斥信号量.资源信号M.I/O操作.进程.线程.窗口消息等.如果进入等待线程的时间配额有剩余,在等待事件出现时,线程的时间配额被减1,相当于1/3个时钟间隔;如果线程的优先级大于等于14,在等待事件出现时,线程的优

Windows XP 技巧-应用篇

为了能更好的应用Windows,下面笔者就来介绍几个搜索到的应用方面的小技巧. 1.关掉调试器Dr. Watson: Dr.Watson会在程序加载失败或崩溃时显示.运行drwtsn32,把 "转储全部线程上下文"之外的全都去掉,否则一旦有程序出错,硬盘会响很久,而且会占用很多空间.如果以前遇到过这种情况,请查找user.dmp文件并删掉,这样可以节省几十M的空间.然后打开注册表,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Cu

140个Windows XP技巧

  1. 重装Windows XP不需再激活 如果你需要重装Windows XP,通常必须重新激活.事实上只要在第一次激活时,备份好WindowsSystem32目录中的Wpa.dbl文件,就不用再进行激活的工作了.在重装Windows XP后,只需要复制该文件到上面的目录即可. 2. 如何知道自己的Windows XP是否已激活 打开开始→运行,在bomb出的对话框中输入:oobe/msoobe /a,回车后系统会bomb出窗口告诉你系统是否已经激活. 3. 关闭zip文件夹功能 你是不是觉得

windows XP全面系统优化教程

德国人的Windows XP系统优化补丁是不是看了很多的Windows XP的优化文章,把系统也是折腾得死去活来,还是老牛拉破车.下面我们就业来详细介绍人一下windows XP全面系统优化. 一.系统属性中的项目∶ 鼠标右健单击桌面上的"我的电脑",选择"属性",打开"系统属性" 对话框 1.关闭系统还原 找到系统还原选项, 如果你不是老噼里啪啦安装一些软件(难道你比我还厉害),你也可以去掉,这样可以节省好多空间.将"在所有盘中禁用系

使用 Windows XP 的两种强大的工具在您的代码中检测并堵塞 GDI 泄漏

在以前的一篇文章中,作者设计了一种简单的方法来检测图形设备接口 (GDI) 对象,这些对象并未由 Windows 9x 平台上基于 Win32 的应用程序正确地进行发布.因为有些更新版本的 Windows 需要一种不太相同的 GDI 泄漏方法,作者已经更新了针对那些操作系统的方法.他构建并说明了两种工具,这两种工具旨在检测并消除在 Windows XP.Windows 2000 和 Windows NT 上运行的应用程序中的 GDI 泄漏. 在 Windows 95.Windows 98 和 W

Windows XP终极设置之系统优化篇_WindowsXP

一.系统优化设置. 1.删除Windows强加的附件: 1) 用记事本NOTEPAD修改winntinfsysoc.inf,用檎?替换功能,在查找框中输入,hide(一个英文逗号紧跟hide),将"替换为"框设为空.并选全部替换,这样,就把所有的,hide都去掉了, 2) 存盘退出, 3)再运行"添加-删除程序",就会看见"添加/删除 Windows 组件"中多出了好几个选项:这样你可以删除好些没有用的附件. 2.关掉调试器Dr. Watson:

WINDOWS XP终极设置(呕心沥血版)第1/2页_应用技巧

 WINDOWS XP终极设置WINDOWS XP终极设置(呕心沥血版) 声明:以上资料均是从从互联网上搜集整理而来,本人未曾一一测试,所以在改动时要小心,做好备份,有备无患么,呵呵. 一.系统优化设置. 1.删除Windows强加的附件:  1) 用记事本NOTEPAD修改\winnt\inf\sysoc.inf,用查找/替换功能,在查找框中输入,hide(一个英文逗号紧跟hide),将"替换为"框设为空.并选全部替换,这样,就把所有的,hide都去掉了, 2) 存盘退出, 3)再运

简单的把Windows XP进行升级已经不行了

专家表示:"简单的把Windows XP进行升级已经不行了."并且预测,将有相当多的大企业在微软停止对XP系统的支持以后,依旧选择使用这一系统.微软计划,到2014年4月8日,全面停止对XP系统包括公共安全补丁在内的所有支持.     虚拟技术厂商VMware台式产品营销主管贝蒂·朱诺(Betty Junod)表示:"我们的调查显示,大型企业在将XP升级为Windows 7方面的进程最为缓慢,有64%的大型企业尚未完成这一升级." 她补充道:"一半多一点的

教你排除Windows XP启动故障

如果你电脑的电源已经打开,而Windows XP没有正常启动,你需要采取一些故障排除手段.下面列举了可能出现的问题以及解决问题的方法. 1. 使用Windows启动盘 如果启动问题是由于活动分区的启动记录或者操作系统启动所使用的文件被破坏造成的,启动盘就能够解决问题.具体方法如下: 创建Windows启动盘,找一台配置相似.工作正常的Windows XP机器,打开我的电脑,单击鼠标右键选择磁盘图标,然后在后续的菜单中选择格式化.当格式化对话框出现以后,保留所有缺省设置,然后点击开始按钮.当格式化