zoukankan      html  css  js  c++  java
  • Scheduling

    Scheduling Priorities
    线程基本优先级由哪两个因素决定?
    进程的优先级class(有6种)
    进程优先级类下的线程优先级level(每个class下有7种)

    Context Switches
    1、上下文切换分为哪几个步骤?
    调度器为每个优先级维护一个可执行线程队列。
    保存刚刚完成的线程上下文
    将刚刚完成执行的线程放到相应优先级队列尾部
    找到包含就绪线程的最高优先级队列
    删除队列首部的线程,加载它的上下文并执行
    2、哪些原因会导致上下文切换?
    线程用完时间片
    更高优先级的线程已经准备好执行
    运行中的线程发生等待

    Priority Boosts
    1、什么是线程动态优先级?
    动态优先级是调度器确定调度哪个线程的优先级
    2、动态优先级和基本优先级有什么关系?
    初始时,线程的动态优先级和基础优先级相同。操作系统可以提高或降低动态优先级,目的是确保相应和防止线程饥渴。
    提升线程优先级后,调度器会在每过一个时间片时将该优先级降低一级,直到降到基础优先级。线程的动态优先级不会低于其基础优先级
    3、哪些线程可以获得动态优先级提升?
    基本优先级在0到15的线程才会获得优先级提升,基本优先级在16到31之间的线程不会获得优先级提升
    4、哪些情况下会导致线程的动态优先级被提升?
    a.前台窗口相关的进程优先级会被提升,使其大于或等于任何后台进程的优先级。当进程不再处于前台时,优先级会回到原始
    b.当窗口接收定时器消息、鼠标消息、键盘消息等输入时,调度器会提高拥有该窗口的线程的优先级
    c.当阻塞的线程满足等待条件时,调度器会提高线程的优先级

    Priority Invertion
    1、什么情况下会发生优先级反转?如果一个高优先级的线程在等待低优先级线程手里的锁,调度器如何处理?
    调度器会通过随机提高线程优先级处理这个问题。提高低优先级线程的动态优先级,分配时间片使其足以释放锁。如果本次分配的时间片不足以让低优先级线程释放锁,那么低优先级线程在下一轮调度中会再次获得释放锁的机会

    Multiple Processors
    1、多CPU架构分为哪两种?对线程的调度有什么影响?
    多CPU架构分为非统一内存访问(NUMA)和对称式(SMT)
    非对称式的CPU架构,每个CPU都会比其他的CPU更接近内存中的某些部分,使得内存的某些部分会比其他部分访问的更快。系统会在接近所使用内存的CPU上调度线程
    对称式CPU架构SMT,多个CPU连接到单个共享主存。任何线程可以分配给任何的CPU,可以用CPU池让调度的线程并发运行,调度可以按照优先级决定。可以通过设置线程的CPU关联性和设置线程理想CPU来影响调度
    2、如何设置线程的CPU关联性?
    设置线程的CPU关联性主要是用来测试CPU,会降低并发性能。通过设置关联掩码SetProcessAffinityMask来改变线程的CPU关联性
    3、如何设置线程理想CPU?
    可以通过SetThreadIdealProcessorEx 设置线程首选(建议)CPU

  • 相关阅读:
    函数的调用惯例
    docker 强制删除镜像
    docker 安装 tomcat8
    阿里云 maven仓库地址配置
    ubuntu 18.04 安装搜狗输入法
    centos 监控进程,并自动重启
    intellj idea show "run dashboard" panel
    Centos7 服务器启动jar包
    maven centos7 环境变量
    linux关于IP,端口,防火墙相关命令
  • 原文地址:https://www.cnblogs.com/SwiftChocolate/p/14141256.html
Copyright © 2011-2022 走看看