Windows操作系统支持内核级线程,调度单位是线程,它采用基于动态优先级的,抢占式调度,并结合时间配额的调整来完成调度

一、几个前提知识点

  就绪线程按优先级进入相应的就绪队列

  系统总是选择优先级最高的就绪线程运行

  同一优先级的各个线程按时间片轮转方式进行调度

  多CPU系统中允许多个线程并行运行

二、调度时机

线程调度的引发条件,除了前面提到的公共的4种情况外还有以下两种

  一个线程的优先级改变

  一个线程改变了它的亲和处理机集合(线程可以被处理的处理机的集合,比如这个集合中增加了一个新的处理机)

  前面提到的4种情况也列出来:

  线程正常终止 或 由于某种错误而终止

  新线程创建 或 一个等待线程变为就绪态

  当一个线程由运行态线程变为就绪态

  当一个线程由运行态进入阻塞态

三、线程优先级(重要)

  Windows使用的三类共32个线程优先级:(优先级和优先数自行查阅概念)

    实时优先级:16-31(一旦确定优先级不再改变)

    可变优先级:1-15(优先级可以在一定范围内升高或降低,分为基本优先级和当前优先级)

    系统线程:0(物理内存清零的操作等)

四、时间配额:加粗加硬,理解这个概念非常重要

  时间配额不是一个时间长度值,而是一个被称为配额单位的整数值

  一个线程用完了自己的时间配额时,如果没有其他相同优先级的线程,Windows将重新给该线程分配一个新的时间配额使其继续运行

五、调度策略

1、主动切换

  一个正在运行态的线程由于等待I/O结果进入阻塞态,让出CPU,调度程序从就绪队列选择一个新的线程上CPU运行

2、抢占

  如果刚才被阻塞的线程被唤醒,由于他的优先级高,会抢占CPU取运行,被抢占的线程回到就绪队列

  当线程被抢占时,它被放回相应优先级的就绪队列的队首

  处于实时优先级的线程被抢占时,时间配额被重置为一个完整的时间配额

  处于可变优先级的线程被抢占时,时间配额不变,重新得到CPU后将运行剩下的时间配额

3、时间配额用完

  时间配额用完的线程,如果优先级降低了,Windows将选择一个优先级更高的线程上CPU

  优先级没有降低的情况下,

    如果队列中有其他的就绪线程,则选择下一个线程执行,A回到原来就绪队列的末尾

    如果队列中没有其他的就绪线程,系统会给当前线程重新分配一个新的时间配额,让他继续运行

六、优化方案

提升优先级的情况(只针对可变优先级1-15的线程)

  线程处于就绪态超过了一定的时间还没有运行 (俗称饥饿)

  完成I/O操作的线程

  前台进程中的线程完成一个等待操作

  由于窗口活动而唤醒窗口线程

  信号量或事件等待结束

特别的,"饥饿线程"的优先级提升

  系统线程"平衡集管理器"每秒钟扫描一次就绪队列,发现是否存在等待时间超过300个时钟中断间隔的线程

平衡集管理器将这些线程的优先级提升到15,并分配它一个长度值为正常值4倍的时间配额,被提升的线程用完

它的时间配额后立即衰减到它原先的基本优先级

操作系统-Windows操作系统的线程调度了解这些的更多相关文章

  1. 杂谈:Windows操作系统的介绍与对Win8操作系统市场反响冷淡原因的分析

    Windows操作系统,毫无疑问是操作系统市场上的霸主,也正因为Windows操作系统的诞生让电脑的操作性能变得更加平民化,深的用户的喜爱.至今身边的人也是选择windows操作系统的居多,这篇文章也 ...

  2. Windows操作系统的版本

    Windows操作系统的版本号一览 操作系统 PlatformID 主版本号 副版本号 Windows95 1 4 0 Windows98 1 4 10 WindowsMe 1 4 90 Window ...

  3. winxp退市是微软windows操作系统的滑铁卢

    winxp退市是微软windows操作系统的滑铁卢 兵败如山倒,windowsxp退市.宣布微软时代结束,windows将逐步退出中国市场,取而代之将是中国人自己的操作系统.中国人努力.中国人加油,不 ...

  4. Windows操作系统的发展简介

    一.简介    Microsoft Windows,是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用, ...

  5. 转:使用DOS命令chcp查看windows操作系统的默认编码以及编码和语言的对应关系

    代码页是字符集编码的别名,也有人称"内码表".早期,代码页是IBM称呼电脑BIOS本身支持的字符集编码的名称.当时通用的操作系统都是命令行界面系统,这些操作系统直接使用BIOS供应 ...

  6. 关于windows操作系统的内核

    操作系统内核.从本质上来讲,它本身也是一个程序.比如windows的内核 ntoskrnl.exe 就是一个我们平常看到的 PE 文件,它的位置位于 \WINDOWS\system32\ntoskrn ...

  7. windows操作系统的快捷键

    编号:1015时间:2016年5月26日09:25:34功能:windows操作系统的快捷键URL:https://www.douban.com/group/topic/5937774/

  8. Windows操作系统的历史

    30 years ago Windows was first released, see how much it has changed回顾了Windows操作系统的历史. 1985, Windows ...

  9. 微软操作系统 Windows Server 2012 R2 官方原版镜像

    微软操作系统 Windows Server 2012 R2 官方原版镜像 Windows Server 2012 R2 是由微软公司(Microsoft)设计开发的新一代的服务器专属操作系统,其核心版 ...

随机推荐

  1. css 布局,过渡

    做了一个小案例,关于我们内边距的处理的,然后再加上一些过渡效果 效果: 具体实现重点加上这里: 具体代码实现: CSS部分: <style> #container{ border:2px ...

  2. delphi 注册表

    Delphi中定义了一个Tregistry类,通过使用这个类中封装的很多有关对注册表操作的方法和属性可以完成对注册表的操作.1. 在注册表中创建一个新的关键字Tregistry类中有一个CreateK ...

  3. NX二次开发-UFUN创建圆柱UF_MODL_create_cyl1

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <u ...

  4. [JZOJ 5129] 字符串

    题意:统计本质不同的串的个数. 思路: 显然后缀自动机,对于每个串建一个\(SAM\)统计即可. #include <bits/stdc++.h> using namespace std; ...

  5. Python爬虫-《神雕侠侣》

    Python3.5 爬取<神雕侠侣>http://www.kanunu8.com/wuxia/201102/1610.html 武侠迷,所以喜欢爬取武侠小说 #!/usr/bin/pyth ...

  6. (转)python资料汇总(建议收藏)零基础必看

    摘要:没料到在悟空问答的回答大受欢迎,为方便朋友,重新整理汇总,内容包括长期必备.入门教程.练手项目.学习视频. 一.长期必备. 1. StackOverflow,是疑难解答.bug排除必备网站,任何 ...

  7. 2019 牛客多校第一场 F Random Point in Triangle

    题目链接:https://ac.nowcoder.com/acm/contest/881/F 题目大意 给定二维平面上 3 个整数表示的点 A,B,C,在三角形 ABC 内随机选一点 P,求期望$E ...

  8. 剑指offer——17数值的整数次方

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方.   保证base和exponent不同时为0   一般解法: 直接相乘: cl ...

  9. Soci介绍

    soci是一个用C++封装的数据库访问库,目前通过 “前端(应用程序)/核心/后端(数据库适配)”模式支持firebird,mysql,sqlite3,oracle,postgresql,odbc多种 ...

  10. EXE 和 SYS 信息交互

    操了,分发函数少发一个,让我白调了两个多小时.