当前位置: 首页 > news >正文

【OS笔记06】:进程和线程4-进程调度的核心算法

文章目录

      • 接续:进程调度算法 (思路2)
        • 4. 时间片轮转法 (RR)
          • (1) 时间片取多大比较合适?
          • (2) 最佳的时间片值是多少?
        • 5. 调度算法的融合:多级反馈队列
          • 多级反馈队列调度算法
          • 算法规则
          • 多级反馈队列调度算法示例
      • 相关习题与解析

接续:进程调度算法 (思路2)

在上一节笔记中,学习了基于“重要性”的调度算法,如短进程优先(SJF)和最高响应比优先(HRN)。现在,我们来学习另一种完全不同的设计思路:

从 “先到的进程结束,后到的进程方运行” 演进为 “先到的进程运行一个片刻,后到的进程立即运行”。

这种公平地给予每个进程一个运行机会的思想,就是时间片轮转法

4. 时间片轮转法 (RR)
  • 核心思想:
    • 进程就绪队列往往按到达的时间来排序。
    • 调度程序总是选择就绪队列中的第一个进程,即按照先来先服务原则调度。
    • 但是,一个进程占用处理机则仅使用一个时间片
    • 在使用完一个时间片后,如果进程还没有完成,它必须释放出处理机给下一个就绪的进程。
    • 该进程返回到就绪队列的末尾,重新排队等待再次运行。

在这里插入图片描述

(1) 时间片取多大比较合适?

这是一个关键的权衡问题:

  • 如果时间片长度过短:
    • 调度程序剥夺处理机的次数增多,这将使进程上下文切换次数也大大增加,加重了系统开销,影响整体效率。
  • 如果时间片长度过长:
    • 长到足以让一个进程完成其全部运行工作,那么时间片轮转法就退化为先来先服务(FCFS)策略了,失去了快速响应的优势。
(2) 最佳的时间片值是多少?

最佳时间片没有一个固定的值,它取决于具体的系统环境。

  • 参考公式: 时间片长度 q = 响应时间 R / 最大进程数 N_max
  • 它将随系统而异、随负载而异,同时也随进程而异。
  • 时间片的选择是实现调度算法的关键之处,通常需要综合考虑终端数目、处理机能力、各终端任务的急迫程度、外存传输速度等方面的因素。

5. 调度算法的融合:多级反馈队列

我们已经学习了 FCFS、优先级算法和时间片轮转法。有没有一种算法能集它们之所长呢:多队列表反馈法,也常被称为多级反馈队列调度算法

多级反馈队列调度算法
  • 定义: 它是先来先服务时间片轮转优先级算法的综合。
  • 核心思想:
    • 设置多个就绪队列,并为每个队列赋予不同的优先级。第1个队列优先级最高,第2个次之,以此类推。
    • 每个队列中进程执行的时间片大小也各不相同。进程所在队列的优先级越高,其相应的时间片就越短
    • 根据作业性质或类型不同,将进程就绪队列分为多个,每个队列采用不同的调度算法。
      • 例如: 终端型作业为前台作业(优先级高,用RR),批处理作业为后台作业(优先级低,用FCFS)。

在这里插入图片描述

算法规则
  1. 新进程进入: 当一个新进程进入系统时,首先将它放入第1队列(最高优先级)的末尾,按FCFS原则排队等待调度。
  2. 时间片用完降级: 如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第2队列的末尾,再同样地按FCFS原则等待调度执行。这个过程可以一直持续下去,直到进程被移入最后一个队列。在最后一个队列中,通常采用时间片轮转的方式运行。
  3. 调度原则(抢占式):
    • 仅当第1队列为空时,调度程序才调度第2队列中的进程运行。
    • 仅当第1至第(i-1)个队列均为空时,才会调度第i个队列中的进程运行。
    • 抢占: 如果处理机正在为第i队列中的某进程服务时,又有新进程进入优先级较高的队列(第1至i-1队列),则此时新进程将抢占正在运行进程的处理机。被抢占的进程被放回第i队列的末尾,重新等待调度。
多级反馈队列调度算法示例
  • 问题: 设有A、B、C、D、E五个进程,其到达时间和要求运行时间如下表。采用多级反馈队列调度算法,系统中共有3个队列,其时间片依次为1、2和4。试计算其平均周转时间和平均带权周转时间。
作业提交时间运行时间
A03
B18
C34
D45
E57
  • 调度分析: 这是一个非常复杂的抢占和降级过程。根据算法规则,CPU总是在最高优先级的非空队列中选择进程运行。一个进程在用完当前队列的时间片后,会被移动到下一级队列的队尾。
    (书中的调度分析过程较为简略,我们直接看最终的计算结果)

  • 周转时间的计算结果:

作业提交时间运行时间开始时间完成时间周转时间带权周转时间
A030993.00
B18127263.25
C34320174.25
D45422183.60
E57526213.00
  • 平均周转时间 T = (9 + 26 + 17 + 18 + 21) / 5 = 18.2
  • 平均带权周转时间 W = (3 + 3.25 + 4.25 + 3.6 + 3) / 5 = 3.42
    • 带权周转时间 = 周转时间 / 运行时间,它衡量了单位运行时间所带来的等待开销。

相关习题与解析

  1. 下面关于进程的叙述中,不正确的有 _____ 条。

    • ① 进程申请CPU得不到满足时,其状态变为等待状态。
    • ② 在单CPU系统中,任一时刻都有一个进程处于运行状态。
    • ③ 优先级是进行进程调度的重要依据,一旦确定不能改变。
    • ④ 进程获得处理机而运行是通过调度而实现的。
    • 参考答案: 3 (即 ① ② ③)

    解析:

    • 错误。申请CPU而得不到满足时,是就绪态。等待态是等待I/O等资源。
    • 错误。当所有进程都在等待I/O或系统空闲时,没有进程在运行。
    • 错误。优先级分为静态优先级和动态优先级,动态优先级在运行中是会改变的。
  2. 下述作业调度算法中,______调度算法与作业的估计运行时间有关。

    • A. 先来先服务
    • B. 短作业优先 (✓)
    • C. 时间片轮转
    • D. 多级队列

    解析: 短作业优先(SJF)算法的核心就是根据作业的估计运行时间来选择最短的作业进行调度。

  3. ______ 优先权是在创建进程时确定的,确定之后在整个进程运行期间不再改变。

    • A. 静态 (✓)
    • B. 作业
    • C. 资源
    • D. 动态

    解析: 这是静态优先级的定义。动态优先级则是在运行过程中可以改变的。

  4. 现有3个同时到达的作业J1、J2和J3,它们的执行时间分别是T1、T2和T3,且T1<T2<T3。系统按单道方式运行且采用短作业优先算法,则平均周转时间是 _____ 。

    • A. (3T₁+2T₂+T₃)/3 (✓)
    • B. (T₁+T₂+T₃)/3
    • C. (T₁+2T₂+3T₃)/3
    • D. T₁+T₂+T₃

    解析:

    • 短作业优先,执行顺序为 J1 → J2 → J3。
    • J1的周转时间 = T₁
    • J2的周转时间 = T₁ + T₂
    • J3的周转时间 = T₁ + T₂ + T₃
    • 平均周转时间 = (T₁ + (T₁ + T₂) + (T₁ + T₂ + T₃)) / 3 = (3T₁ + 2T₂ + T₃) / 3。
  5. 设有四个作业同时到达,每个作业的执行时间均为2小时,它们在一台处理器上按单道方式运行,则平均周转时间为 _____ 。

    • A. 8小时
    • B. 2.5小时
    • C. 5小时 (✓)
    • D. 1小时

    解析: 由于作业同时到达且运行时间相同,任何调度算法(如FCFS)效果都一样。

    • 第一个作业的周转时间 = 2小时
    • 第二个作业的周转时间 = 2 + 2 = 4小时
    • 第三个作业的周转时间 = 4 + 2 = 6小时
    • 第四个作业的周转时间 = 6 + 2 = 8小时
    • 平均周转时间 = (2 + 4 + 6 + 8) / 4 = 20 / 4 = 5小时。
http://www.dtcms.com/a/461265.html

相关文章:

  • 自助建网站工具网站建设与推广
  • 操作系统第二章(下)
  • UNIX下C语言编程与实践49-UNIX 信号量创建与控制:semget 与 semctl 函数的使用
  • 探索Playwright MCP和Claude的协作:智能网页操作新境界
  • Java-144 深入浅出 MongoDB BSON详解:MongoDB核心存储格式与JSON的区别与应用场景
  • 网站的流量是怎么算的双牌网站建设
  • TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 神经网络基础原理
  • Flink State V2 实战从同步到异步的跃迁
  • xml网站地图在线生成工具杭州城西做网站的公司
  • 怎样搭建个人网站wordpress farmer
  • 10.9 lpf|求凸包|正反扫描
  • HashMap 与 Hashtable 深度对比分析
  • 网站开始开发阶段的主要流程辽宁建设工程信息网工程业绩怎么上传
  • 缓存雪崩、击穿、穿透是什么与解决方案
  • 桌面图标又乱了?这个小神器,让你的桌面布局“一键复位”
  • mongodb慢查询优化 速度欻欻滴~
  • 从零开始的C++学习生活 6:string的入门使用
  • 风景网站模板济南seo关键词排名工具
  • UE5 测量 -1,长度测量:P2制作定位球与定位线,P3制作射线检测节点,P4在鼠标位置生成定位球
  • UE5 GAS GameAbility源码解析 EndAbility
  • 潍坊网站建设 潍坊做网站外贸网站服务器推荐
  • 第7章 n步时序差分(3) n 步离轨策略学习
  • 【Leetcode hot 100】35.搜索插入位置
  • Django ORM 字段查询表达式(Field lookup expressions)
  • 设计模式--组合模式:统一处理树形结构的优雅设计
  • 推荐算法学习笔记(十九)阿里SIM 模型
  • 高级网站开发工程师证书现代网站建设
  • 只能在线观看的电影网站咋么做wordpress教程 菜单
  • echarts画一个饼图
  • 基于改进YOLO算法的果园环境中障碍物识别与检测技术研究