• 【现代操作系统】笔记 3


    CPU调度

    定义:控制、协调进程对CPU的竞争,即按一定的调度算法从就绪队列中选择一个进程,把CPU使用权转交。若没有就绪进程,则安排一个空闲系统进程或者idle进程

    系统场景:

    N个就绪进程,等待CPU

    多个CPU

    决策(给哪个进程分配哪个CPU)

    解决问题:

    调度算法、调度时机、如何调度(切换)

    进程切换工作内容:(对原来运行进程各种状态的保持和对新进程状态的恢复)

    切换全局页目录以加载新的地址空间-->切换内核栈和硬件上下文

    上下文切开销:

    直接开销(内核完成切换所用的CPU时间,包括保持和恢复寄存器、切换地址空间)

    间接开销(高速缓存、缓冲区缓存、TLB)

    CPU调度算法

    衡量指标:吞吐量、周转时间、响应时间、CPU利用率(越多越好)、等待时间

    进程优先级枪占式与非抢占式IO密集型与CPU密集型时间片

    时间片影响因素:进程切换开销、对响应时间的要求、就绪进程个数、CPU能力、进程的行为

    批处理系统中调度算法(指标:吞吐量、周转时间、CPU利用率):

    先来先服务、最短作业优先、最短剩余时间优先、最高响应比优先

    交互式系统调度算法(指标:响应时间):

    时间片轮转、最高优先级调度、多级反馈队列、最短进程优先

    多级反馈调度算法:

    综合调度算法

    各种调度算法比较总结:

    多处理器调度算法设计:

    选择哪个进程执行、在哪个CPU执行、进程在多CPU之间迁移时开销(使进程尽可能在同一CPU上执行)、负载均衡

    典型系统采用的调度算法

    UNIX 动态优先算法

    5.3BSD 多级反馈队列法

    linux 抢占式调度

    windows 基于优先级的抢占式多任务

    solaris 综合调度算法

    windows 线程调度:

    调度单位是线程,采用动态优先级的抢占式调度,结合时间配额的调整

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

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

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

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

    线程调度的条件:

    线程优先级改变、一个线程改变了它的亲和处理机集合(允许此进程允许的CPU)

    windows使用32个优先级,分为三类:

    实时优先级(16-32,不可变)、可变优先级(1-15,可变,基本优先级和当前优先级)系统线程(0,零页线程,用于对系统中空闲物理页面清零)

    主动切换、抢占、时间片用完

    线程优先级提升与时间配额调整(调大)

    5种情况提升线程的当前优先级:

      I/O操作完成

      信号量或事件等待结束

      前台进程汇总线程完成一个等待操作

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

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

      

    windows中线程优先级提升只针对可变优先级:

  • 相关阅读:
    LC 155 Min Stack
    TUM 慕尼黑工业大学 MSEI 课程结构介绍 ws19/20
    C++ MinGW 配合 Sublime Text 搭建
    LC 752 Open the Lock
    LC 200 Number of Islands
    Python lambda
    关于无法连接网络安装VisualVM解决方案
    二叉堆的解读
    哈希表的实现
    红黑树解读
  • 原文地址:https://www.cnblogs.com/wygyxrssxz/p/4509155.html
Copyright © 2020-2023  润新知