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

操作系统考试大题-处理机调度算法-详解-2

抢占式优先级调度步骤详解

在抢占式优先级调度中,当更高优先级的进程到达时,当前运行的进程会被中断,调度器会选择更高优先级的进程执行。调度顺序基于进程的优先级,优先级高的先执行(假设数字越小优先级越高)。

初始进程信息:
进程到达时间服务时间优先级
A033
B262
C444
D651
E825
调度过程:
  1. 时间 0:只有进程 A 到达,开始执行 A。

    • A 运行时间:0 → 2(此时 B 到达)

    • 当前时间:2

  2. 时间 2:检查就绪队列:

    • 已到达的进程:B(优先级 2)、A(优先级 3)。

    • B 的优先级高于 A,抢占 A 的执行。

    • A 剩余服务时间:3 - 2 = 1。

    • 执行 B。

    • B 运行时间:2 → 6(此时 D 到达)

    • 当前时间:6

  3. 时间 6:检查就绪队列:

    • 已到达的进程:A(剩余 1)、B(剩余 6 - 4 = 2)、C(到达时间 4)、D(优先级 1)、E(未到达)。

    • 就绪进程:A、B、C、D。

    • 优先级顺序:D(1)、B(2)、A(3)、C(4)。

    • D 的优先级最高,抢占 B 的执行。

    • B 剩余服务时间:6 - (6 - 2) = 2。

    • 执行 D。

    • D 运行时间:6 → 11(此时 E 到达)

    • 当前时间:11

  4. 时间 11:检查就绪队列:

    • 已到达的进程:A(剩余 1)、B(剩余 2)、C(到达时间 4)、E(优先级 5)。

    • 就绪进程:A、B、C、E。

    • 优先级顺序:B(2)、A(3)、C(4)、E(5)。

    • B 的优先级最高,继续执行 B。

    • B 运行时间:11 → 13

    • 当前时间:13

  5. 时间 13:检查就绪队列:

    • 就绪进程:A(剩余 1)、C、E。

    • 优先级顺序:A(3)、C(4)、E(5)。

    • 执行 A。

    • A 运行时间:13 → 14

    • 当前时间:14

  6. 时间 14:检查就绪队列:

    • 就绪进程:C、E。

    • 优先级顺序:C(4)、E(5)。

    • 执行 C。

    • C 运行时间:14 → 18

    • 当前时间:18

  7. 时间 18:检查就绪队列:

    • 就绪进程:E。

    • 执行 E。

    • E 运行时间:18 → 20

    • 当前时间:20

调度顺序:

A (0-2) → B (2-6) → D (6-11) → B (11-13) → A (13-14) → C (14-18) → E (18-20)

0 --A-- 2 --B-- 6 --D-- 11 --B-- 13 --A-- 14 --C-- 18 --E-- 20
计算各项时间:
进程到达时间服务时间完成时间周转时间 (完成时间 - 到达时间)带权周转时间 (周转时间 / 服务时间)
A031414 - 0 = 1414 / 3 ≈ 4.67
B261313 - 2 = 1111 / 6 ≈ 1.83
C441818 - 4 = 1414 / 4 = 3.5
D651111 - 6 = 55 / 5 = 1
E822020 - 8 = 1212 / 2 = 6
平均时间:
  • 平均周转时间 = (14 + 11 + 14 + 5 + 12) / 5 = 56 / 5 = 11.2

  • 平均带权周转时间 = (4.67 + 1.83 + 3.5 + 1 + 6) / 5 ≈ 17 / 5 ≈ 3.4

最终表格:
进程到达时间服务时间优先级开始时间完成时间周转时间带权周转时间
A033014144.67
B262213111.83
D65161151
C4441418143.5
E8251820126

非抢占式优先级调度步骤详解

        在非抢占式优先级调度中,进程一旦开始执行就会一直运行到完成,不会被更高优先级的进程打断。调度顺序基于进程的优先级,优先级高的先执行(假设数字越小优先级越高)。

初始进程信息:
进程到达时间服务时间优先级
A033
B262
C444
D651
E825
调度过程:
  1. 时间 0:只有进程 A 到达,开始执行 A。

    • A 运行时间:0 → 3

    • 当前时间:3

  2. 时间 3:检查就绪队列:

    • 已到达的进程:B(到达时间 2)、C(到达时间 4,未到达)、D(到达时间 6,未到达)、E(到达时间 8,未到达)。

    • 就绪进程:B。

    • 执行 B(优先级 2)。

    • B 运行时间:3 → 9

    • 当前时间:9

  3. 时间 9:检查就绪队列:

    • 已到达的进程:C(到达时间 4)、D(到达时间 6)、E(到达时间 8)。

    • 就绪进程:C、D、E。

    • 优先级顺序:D(1)、C(4)、E(5)。

    • 执行 D(优先级最高)。

    • D 运行时间:9 → 14

    • 当前时间:14

  4. 时间 14:检查就绪队列:

    • 就绪进程:C、E。

    • 优先级顺序:C(4)、E(5)。

    • 执行 C(优先级更高)。

    • C 运行时间:14 → 18

    • 当前时间:18

  5. 时间 18:检查就绪队列:

    • 就绪进程:E。

    • 执行 E。

    • E 运行时间:18 → 20

    • 当前时间:20

调度顺序:

A → B → D → C → E

0 --A-- 3 --B-- 9 --D-- 14 --C-- 18 --E-- 20
计算各项时间:
进程到达时间服务时间完成时间周转时间 (完成时间 - 到达时间)带权周转时间 (周转时间 / 服务时间)
A0333 - 0 = 33 / 3 = 1
B2699 - 2 = 77 / 6 ≈ 1.17
C441818 - 4 = 1414 / 4 = 3.5
D651414 - 6 = 88 / 5 = 1.6
E822020 - 8 = 1212 / 2 = 6
平均时间:
  • 平均周转时间 = (3 + 7 + 14 + 8 + 12) / 5 = 44 / 5 = 8.8

  • 平均带权周转时间 = (1 + 1.17 + 3.5 + 1.6 + 6) / 5 ≈ 13.27 / 5 ≈ 2.65

最终表格:
进程到达时间服务时间优先级开始时间完成时间周转时间带权周转时间
A0330331
B2623971.17
D65191481.6
C4441418143.5
E8251820126

 

最高响应比优先(HRRN)调度步骤详解

最高响应比优先(HRRN)是一种非抢占式调度算法,选择响应比最高的进程执行。响应比的计算公式为:

$$
[ R = \frac{\text{等待时间} + \text{服务时间}}{\text{服务时间}} ]
$$

初始进程信息:
进程到达时间服务时间
A03
B26
C44
D65
E82
调度过程:
  1. 时间 0:只有进程 A 到达,开始执行 A。

    • A 运行时间:0 → 3(完成)

    • 当前时间:3

  2. 时间 3:检查就绪队列:

    • 已到达的进程:B(到达时间 2)、C(到达时间 4,未到达)、D(到达时间 6,未到达)、E(到达时间 8,未到达)。

    • 就绪进程:B。

    • 执行 B。

    • B 运行时间:3 → 9(完成)

    • 当前时间:9

  3. 时间 9:检查就绪队列:

    • 已到达的进程:C(到达时间 4)、D(到达时间 6)、E(到达时间 8)。

    • 计算响应比:


      • ( R_C = \frac{(9 - 4) + 4}{4} = \frac{9}{4} = 2.25 )

      • ( R_D = \frac{(9 - 6) + 5}{5} = \frac{8}{5} = 1.6 )
      • ( R_E = \frac{(9 - 8) + 2}{2} = \frac{3}{2} = 1.5 )
    • C 的响应比最高,执行 C。

    • C 运行时间:9 → 13(完成)

    • 当前时间:13

  4. 时间 13:检查就绪队列:

    • 已到达的进程:D(到达时间 6)、E(到达时间 8)。

    • 计算响应比:

      • ( R_D = \frac{(13 - 6) + 5}{5} = \frac{12}{5} = 2.4 )

      • ( R_E = \frac{(13 - 8) + 2}{2} = \frac{7}{2} = 3.5 )

    • E 的响应比最高,执行 E。

    • E 运行时间:13 → 15(完成)

    • 当前时间:15

  5. 时间 15:检查就绪队列:

    • 已到达的进程:D(到达时间 6)。

    • 执行 D。

    • D 运行时间:15 → 20(完成)

    • 当前时间:20

调度顺序:

A → B → C → E → D

0 --A-- 3 --B-- 9 --C-- 13 --E-- 15 --D-- 20
计算各项时间:
进程到达时间服务时间完成时间周转时间 (完成时间 - 到达时间)带权周转时间 (周转时间 / 服务时间)
A0333 - 0 = 33 / 3 = 1
B2699 - 2 = 77 / 6 ≈ 1.17
C441313 - 4 = 99 / 4 = 2.25
E821515 - 8 = 77 / 2 = 3.5
D652020 - 6 = 1414 / 5 = 2.8
平均时间:
  • 平均周转时间 = (3 + 7 + 9 + 7 + 14) / 5 = 40 / 5 = 8

  • 平均带权周转时间 = (1 + 1.17 + 2.25 + 3.5 + 2.8) / 5 ≈ 10.72 / 5 ≈ 2.14

最终表格:
进程到达时间服务时间开始时间完成时间周转时间带权周转时间响应比(选择时)
A030331-
B263971.17-
C4491392.252.25
E82131573.53.5
D651520142.82.4
关键点说明:
  1. 响应比计算

    • 在时间 9:C、D、E 的响应比分别为 2.25、1.6、1.5,选择最高的 C。

    • 在时间 13:D、E 的响应比分别为 2.4、3.5,选择最高的 E。

  2. 非抢占式:进程一旦开始执行,会一直运行到完成。

  3. 性能指标

    • 平均周转时间:8(时间单位)

    • 平均带权周转时间:2.14

http://www.dtcms.com/a/265066.html

相关文章:

  • 代码实现特殊的字段的基本功能
  • 用Rust编写的开源支付解决方案——Hyperswitch
  • springboot集成达梦数据库,取消MySQL数据库,解决问题和冲突
  • nohup java -jar 命令启动jar包,项目仍然会挂掉或者停止运行的解决方案
  • C++——手撕智能指针、单例模式、线程池、String
  • Vue + RuoYi 前后端分离入门手册
  • [深度学习环境踩坑记录]ubuntu22.04安装RTX3060驱动,黑屏、桌面只有壁纸和鼠标,一顿折腾
  • javaWeb02-Tomcat
  • java.sql.SQLSyntaxErrorException: Unknown column ‘user_name‘ in ‘field list‘
  • YOLOv11剪枝与量化(一)模型压缩的必要性
  • Qt写入excel
  • 整流电路Multisim电路仿真实验汇总——硬件工程师笔记
  • Rust实现FasterR-CNN目标检测全流程
  • 教程:国内如何免费用Claude4+GPT4o生成高质量科研绘图
  • vue动态绑定样式
  • Kalibr解毒填坑(一):相机标定失败
  • 408第三季part1 - 操作系统 - 文件基本概念
  • 基于STM32的土豆种植自动化灌溉系统设计与实现
  • java依赖注入方法
  • 【C语言】知识总结·文件操作
  • Redis在项目中的使用
  • 在移动端使用 Tailwind CSS (uniapp)
  • 在项目架构时,如何选择打包构建工具?
  • Nginx、Spring Cloud Gateway 与 Higress 的应用场景及核心区别
  • Linux基本命令篇 —— alias命令
  • AI专业化应用加速落地,安全治理挑战同步凸显
  • 车载软件架构 -- SOA服务分层设计原则
  • 数学建模_非线性规划
  • 时钟(6.25-26)
  • pppoe宽带连接-系列命令调用