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倍的时间配额,被提升的线程用完

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

转载于:https://www.cnblogs.com/yb38156/p/9749715.html

操作系统-Windows操作系统的线程调度了解这些相关推荐

  1. 如何在安装了Windows操作系统的电脑上安装Linux操作系统

    [原创]如何在安装了Windows操作系统的电脑上安装Linux操作系统 一.不得不知道的一件事 相信中国大多数个人用的电脑在买回来时已经 安装了Windows,并且大家习惯了用Windows,而且有 ...

  2. Windows 操作系统的安全设置

    Windows 操作系统的安全设置 ,微软认证考试也需要学的. 一.系统与磁盘格式选择 1.不要使用Ghost版的Windows XP系统 在选用操作系统时,最好不要选择Ghost版的Windows ...

  3. Windows操作系统的各进程的作用

    btwdins.exe是为了微软Windows操作系统支持蓝牙技术的程序. cisvc.exe是微软Windows操作系统自带的程序.它用于监测CIDAEMON.exe内存使用状态,防止可用内存过低问 ...

  4. 【操作系统】—操作系统的发展与分类

    [操作系统]-操作系统的发展与分类 本章的思维导图如下 一.手工操作阶段 手工操作阶段的主要缺点:用户独占全机.人机速度矛盾导致资源利用率很低 二.批处理阶段-单道批处理系统 引入脱机输入/输出技术( ...

  5. 【操作系统】—操作系统的概念 目标和功能

    [操作系统]-操作系统的概念 目标和功能 本章节的思维导图 一.操作系统的概念 操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理的组织调度计算机的 ...

  6. 工具的使用——windows操作系统的使用(二)

    工具的使用--windows操作系统的使用 (1)域名解析文件的位置:C:/Windows/System32/drivers/etc/hosts (2)windows7 启动屏幕保护程序 [桌面右键] ...

  7. 国内首个基于Windows操作系统的GPU高性能计算集群研制成功

    国内首个基于Windows操作系统的GPU高性能计算集群研制成功 一个普通的实验室里,在一台普通的台式机上发出一条集群工作的指令,通过一个小小的交换机,三台计算机同时进行演算,一个蒙特卡洛的计算问题在 ...

  8. Windows操作系统的日志分析

    Windows操作系统的日志分析 Windows日志简介 Windows操作系统在其运行的生命周期中会记录其大量的日志信息,这些日志信息包括:Windows事件日志,Windows服务器角色日志,FT ...

  9. 【操作系统】操作系统的概念、功能和目标

    目录 一.熟悉的操作系统 二.操作系统的概念和定义 1.结合生活经验来理解计算机系统的层次结构 2.操作系统 三.操作系统的功能和目标 1.作为系统资源的管理者 1.1 提供的功能 1.2 目标 2. ...

最新文章

  1. 九章算法班L8 Array Number
  2. asp.net访问sqlserver获取数据、IsPostBack属性和VS可视化调试的概念
  3. mysql 主备及时_MySQL高可用(二)主备延时如何解决?
  4. 两个int()方法的区别
  5. Python操作文件目录
  6. pytorch 学习率代码_DL知识拾贝(Pytorch)(五):如何调整学习率
  7. RESTful Request:GET/PUT/DELETE/POST/HEAD/OPTIONS
  8. c int最小值的宏_20个成熟软件中常用的宏定义,赶快收藏!
  9. 无纸化办公模式如何取代传统办公模式
  10. 【程序人生】底层程序员,出局
  11. Python入门篇(下)
  12. 什么是智能颈部按摩仪低频脉冲电流?它会对人体有何影响?
  13. 微信小程序调用小票打印机实现打印订单
  14. 如何通过优化网站内容提高外贸网站的谷歌排名?
  15. ejwt积分_菜鸡速通微积分:从十进制展开到数列、级数、幂级数、函数项级数...
  16. PD QC BC 充电协议的电流电压
  17. 自定义表单mysql_自定义表单系统 如何设计数据库
  18. 万字长文解析“数据中台”的硅谷实践(文末有福利!)
  19. 【链块观点01期】当区块链的风刮到教育行业,哪些变革是注定要发生的?
  20. SPSS(基础篇07)--随机数生成器

热门文章

  1. [转]给定单链表,检测是否有环。如果有环,则求出进入环的第一个节点
  2. Ubuntu 10.10安装Vmware Tools
  3. 傳統經理人的迷思(转)
  4. 【Java从0到架构师】JS_jQuery_BootStrap
  5. 【数据库系统设计】关系数据理论(函数依赖、码、范式、模式分解)
  6. 小程序进阶学习01--功能思维导图梳理
  7. 日常积累--javaweb
  8. ‘telnet‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
  9. cython加密代码python_python通过cython加密代码
  10. 报表填报时,如何实现多个单元格绑定一个字段?