学会如何进行线程的调度

线程的调度

背景:当一个计算机是多道程序设计系统时,会不断产生进程和线程之间的切换,此时就要需要一种方法来从就绪队列中挑选一个进程/线程作为CPU将要运行的下一次进程/线程。

调度程序:挑选进程/线程的内核函数

  1. CPU使用率:CPU处于忙状态所占时间的百分比
  2. 吞吐量:在单位时间内完成的进程数量
  3. 周转时间:一个进程初始化到结束,包括所有等待时间所花费的时间
  4. 等待时间:进程在就绪队列中的总时间
  5. 响应时间:从一个请求被提及到产生第一次响应所花费的总时间

1,调度策略

    内核运行调度程序的条件(满足一条即可):

  • 一个进程从运行状态切换到sn等待状态
  • 一个进程被终结了

  分为两种:

    不可抢占

  • 调度程序必须等待事件结束

    可以抢占

  • 调度程序在中断被响应后执行
  • 当前的进程从运行切换到就绪,或者从一个进程从等待切换到就绪
  • 当前运行的进程可以被换出调度原则

2,程序执行模型:程序在CPU突发和I/O中交替

  • 每个调度决定都是关于下一个CPU突发时将哪个工作交给CPU
  • 在时间分片机制下,线程可能在结束当前CPU突发前被迫放弃CPU

3,比较调度算法的准则

  • 减少响应时间
    及时处理用户的输出并尽快将输出提供给用户
  • 减少平均响应时间的波动
    在交互系统中,可预测性比高差异性低平均更重要
  • 增加吞吐量
    减少开销(操作系统开销,上下文切换)
    系统资源的高效利用(CPU,I/O设备)
  • 减少等待时间
    减少每个进程的等待时间

4,吞吐量 & 延迟

  • 低延迟调度增加了交互式表现
  • 操作系统需要保证吞吐量不受影响
  • 吞吐量是操作系统的计算带宽
  • 响应时间是操作系统的计算延迟

5,公平的目标

eg:

  1. 保证每个进程占用相同的CPU时间
  2. 保证每个进程都等待相同的时间
  • 公平通常会增加平均响应时间

调度算法

1,FCFS(先来先服务)

FIFO队列的规定

  • 如果一个进程在执行中阻塞,队列中的下一个会得到CPU

优点:

  • 简单

缺点:

  • 平均等待时间波动比较大
  • 花费时间少的任务可能排在花费时间长的任务后面
  • 可能导致I/O和CPU之间的重叠处理
    CPU密集型进程会导致I/O设备闲置时,I/O密集型进程也在等待

2,SPN(SJF) SRT (短进程优先(短作业优先)短剩余时间优先)

  • 按照预测的完成时间来将任务入队

不足:

  • 可能导致饥饿
  1. 连续的短任务流会使长任务饥饿
  2. 短任务可用时的任何长任务的CPU时间都会增加平均等待时间
  • ​​需要预知未来
  1. 怎样评估下一个CPU突发的持续时间
  2. 简单的解决办法:询问用户
  3. 如果用户欺骗就杀死进程
  4. 如果用户不知道怎么办

3,HRRN   (最高响应比优先)

  • 在SPN调度的基础上改进
  • 不可抢占
  • 关注进程等到了多长时间
  • 防止无限期推迟

4,Round Robin    (轮循)

  • 在叫做量子(时间切片)的离散单元中分配处理器
  • 时间片结束时,切换到下一个准备好的进程

不足:

  • RR花销:额外的上下文切换
  • 时间量子太大
  1. 等待时间过长
  2. 极限情况退化成FCFS
  • 时间量子太小
  1. 吞吐量由于大量的上下文切换开销收到影响
  • 目标:
  1. 选择一个合适的时间量子
  2. 经验规则:维持上下文切换开销处于1%以内

5,Multilevel Feedback Queues    (多级反馈队列)

  • 就绪队列被划分成独立的队列
  • 每个队列拥有自己的调度策略
  • 调度必须在队列间进行
  1. 固定优先级
    。先处理前台,然后处理后天
    。可能导致饥饿
  2. 时间切片
    。每个队列都得到一个确定的能够调度其进程的CPU总时间

6,Fair Share Scheduling     (公平共享调度)

FFS控制用户对系统资源的访问

  • 一些用户组比其它用户组更重要
  • 保证不重要的组无法垄断资源
  • 未使用的资源按照每个组所分配的资源的比例来分配
  • 没有达到资源使用率的目标的组获得更高的优先级

实时调度

定义:

正确性依赖于其时间和功能两方面的一种操作系统

性能指标:

时间约束的及时性

速度和平均性能相对不重要

主要特性

时间约束的课预测性

实时系统

  • 强实时系统
    需要在保证的时间内完成重要的任务,必须完成
  • 弱实时系统
    要求重要的进程的优先级更高,尽量完成,并非必须

硬时限

  • 如果错过了最后的期限,可能会发生灾难性或非常严重的后果
  • 必须验证:在最坏的情况下也能满足时限吗?
  • 保证确定性

软时限

  • 理想情况下,时限应该被最大满足,如果有时限没有被满足,那么就相应的降低要求
  • 尽最大努力去保证

表示一个实时系统能否满足deadline要求

  • 决定实时任务执行的顺序
  • 静态优先级调度
  • 动态优先级调度

可调度性

单调速率(RM)

  • 最佳静态优先级调度
  • 通过周期安排优先级
  • 周期越短优先级越高
  • 执行周期最短的任务

截至日期最早优先(EDF)

  • 最佳的动态优先级调度
  • Deadline越早优先级越高
  • 指向Deadline最早的任务

多处理器调度

  • 多处理器的CPU调度更加复杂
  1. 多个相同的单处理器组成一个多处理器
  2. 优点:负载共享
  • 对称多处理器
  1. 每个处理器运行自己的调度程序
  2. 需要在调度程序中同步

优先级反转

优先级反转的持续时间取决于其它不相关任务的不可预测的行为

低优先级任务继承高优先级任务的优先级依赖于他们共享的资源

  • 优先级天花板:“资源“的优先级和”所有可以锁定该资源的任务中优先级最高的哪个任务“优先级相同
  • 除非优先级高于系统中所有被锁定的资源的优先级上限,否则任务尝试执行临界区的时候会被阻塞
  • 持有最高优先级上限的信号量锁的任务,会继承被该锁所阻塞的任务的优先级-
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大学生毕设

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值