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

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

先来先服务(FCFS)调度算法步骤详解

先来先服务(FCFS)是一种非抢占式调度算法,按照作业提交的顺序依次执行。以下是详细的调度过程和性能指标计算。

初始作业信息:
作业号提交时间运行时间
18.02.0
28.41.0
38.80.5
49.00.2
调度过程:
  1. 时间 8.0:作业1到达,开始执行作业1。

    • 开始时间:8.0

    • 完成时间:8.0 + 2.0 = 10.0

    • 当前时间:10.0

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

    • 已到达的作业:作业2(提交时间8.4)、作业3(提交时间8.8)、作业4(提交时间9.0)。

    • 按提交顺序,执行作业2。

    • 开始时间:10.0

    • 完成时间:10.0 + 1.0 = 11.0

    • 当前时间:11.0

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

    • 已到达的作业:作业3、作业4。

    • 按提交顺序,执行作业3。

    • 开始时间:11.0

    • 完成时间:11.0 + 0.5 = 11.5

    • 当前时间:11.5

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

    • 已到达的作业:作业4。

    • 执行作业4。

    • 开始时间:11.5

    • 完成时间:11.5 + 0.2 = 11.7

    • 当前时间:11.7

调度顺序:

作业1 → 作业2 → 作业3 → 作业4

8.0 --作业1-- 10.0 --作业2-- 11.0 --作业3-- 11.5 --作业4-- 11.7
计算各项时间:
作业号提交时间运行时间开始时间等待时间 (开始时间 - 提交时间)完成时间周转时间 (完成时间 - 提交时间)带权周转时间 (周转时间 / 运行时间)
18.02.08.08.0 - 8.0 = 010.010.0 - 8.0 = 2.02.0 / 2.0 = 1.0
28.41.010.010.0 - 8.4 = 1.611.011.0 - 8.4 = 2.62.6 / 1.0 = 2.6
38.80.511.011.0 - 8.8 = 2.211.511.5 - 8.8 = 2.72.7 / 0.5 = 5.4
49.00.211.511.5 - 9.0 = 2.511.711.7 - 9.0 = 2.72.7 / 0.2 = 13.5
性能指标:
  • 平均等待时间 = (0 + 1.6 + 2.2 + 2.5) / 4 = 6.3 / 4 = 1.575

  • 平均周转时间 = (2.0 + 2.6 + 2.7 + 2.7) / 4 = 10.0 / 4 = 2.5

  • 平均带权周转时间 = (1.0 + 2.6 + 5.4 + 13.5) / 4 = 22.5 / 4 = 5.625

最终表格:
作业号提交时间运行时间开始时间等待时间完成时间周转时间带权周转时间
18.02.08.00.010.02.01.0
28.41.010.01.611.02.62.6
38.80.511.02.211.52.75.4
49.00.211.52.511.72.713.5
关键点说明:
  1. 非抢占式:作业一旦开始执行,必须运行完成才会处理下一个作业。

  2. 等待时间:作业从提交到开始执行的时间。

  3. 性能问题:FCFS算法对短作业不利,可能导致短作业等待时间过长(如作业4的带权周转时间高达13.5)。

最短剩余时间(SRT)调度步骤详解

在最短剩余时间(SRT)调度中,总是选择剩余服务时间最短的进程执行。这是一种抢占式调度算法,当新进程到达时,如果其服务时间比当前运行进程的剩余时间更短,则会抢占CPU。

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

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

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

    • 当前时间:2

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

    • 已到达的进程:A(剩余 1)、B(服务时间 6)。

    • A 的剩余时间更短,继续执行 A。

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

    • 当前时间:3

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

    • 已到达的进程:B(服务时间 6)。

    • 执行 B。

    • B 运行时间:3 → 4(此时 C 到达)

    • B 剩余服务时间:6 - 1 = 5。

    • 当前时间:4

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

    • 已到达的进程:B(剩余 5)、C(服务时间 4)。

    • C 的剩余时间更短,抢占 B 的执行。

    • 执行 C。

    • C 运行时间:4 → 8(此时 E 到达)

    • C 剩余服务时间:4 - 4 = 0(完成)。

    • 当前时间:8

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

    • 已到达的进程:B(剩余 5)、D(到达时间 6)、E(服务时间 2)。

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

    • E 的剩余时间最短(2),执行 E。

    • E 运行时间:8 → 10(完成)

    • 当前时间:10

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

    • 已到达的进程:B(剩余 5)、D(服务时间 5)。

    • B 和 D 的剩余时间相同(5),选择先到达的 B。

    • 执行 B。

    • B 运行时间:10 → 15(完成)

    • 当前时间:15

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

    • 已到达的进程:D(服务时间 5)。

    • 执行 D。

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

    • 当前时间:20

调度顺序:

A (0-2) → A (2-3) → B (3-4) → C (4-8) → E (8-10) → B (10-15) → D (15-20)

0 --A-- 2 --A-- 3 --B-- 4 --C-- 8 --E-- 10 --B-- 15 --D-- 20
计算各项时间:
进程到达时间服务时间完成时间周转时间 (完成时间 - 到达时间)带权周转时间 (周转时间 / 服务时间)
A0333 - 0 = 33 / 3 = 1
B261515 - 2 = 1313 / 6 ≈ 2.17
C4488 - 4 = 44 / 4 = 1
D652020 - 6 = 1414 / 5 = 2.8
E821010 - 8 = 22 / 2 = 1
平均时间:
  • 平均周转时间 = (3 + 13 + 4 + 14 + 2) / 5 = 36 / 5 = 7.2

  • 平均带权周转时间 = (1 + 2.17 + 1 + 2.8 + 1) / 5 ≈ 7.97 / 5 ≈ 1.59

最终表格:
进程到达时间服务时间开始时间完成时间周转时间带权周转时间
A030331
B26315132.17
C444841
E8281021
D651520142.8
补充说明:
  • 抢占时机:每次有新进程到达时,会比较新进程的服务时间与当前运行进程的剩余时间,选择更短的执行。

  • 周转时间:从进程到达系统到完成的时间。

  • 带权周转时间:周转时间与服务时间的比值,反映进程的相对等待时间。

最短作业优先(SJF)调度算法步骤详解

最短作业优先(SJF)是一种非抢占式调度算法,总是优先调度运行时间最短的作业。以下是详细的调度过程和性能指标计算。

初始作业信息:
作业号进入时刻运行时间
18.002.00
28.500.50
39.000.10
49.500.20
调度过程:
  1. 时间 8.00:作业1到达,开始执行作业1。

    • 开始时刻:8.00

    • 完成时刻:8.00 + 2.00 = 10.00

    • 当前时间:10.00

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

    • 已到达的作业:作业2(进入时刻8.50)、作业3(进入时刻9.00)、作业4(进入时刻9.50)。

    • 按运行时间排序:作业3(0.10)、作业4(0.20)、作业2(0.50)。

    • 执行运行时间最短的作业3。

    • 开始时刻:10.00

    • 完成时刻:10.00 + 0.10 = 10.10

    • 当前时间:10.10

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

    • 已到达的作业:作业2、作业4。

    • 按运行时间排序:作业4(0.20)、作业2(0.50)。

    • 执行运行时间最短的作业4。

    • 开始时刻:10.10

    • 完成时刻:10.10 + 0.20 = 10.30

    • 当前时间:10.30

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

    • 已到达的作业:作业2。

    • 执行作业2。

    • 开始时刻:10.30

    • 完成时刻:10.30 + 0.50 = 10.80

    • 当前时间:10.80

调度顺序:

作业1 → 作业3 → 作业4 → 作业2

8.00 --作业1-- 10.00 --作业3-- 10.10 --作业4-- 10.30 --作业2-- 10.80
计算各项时间:
作业号进入时刻运行时间开始时刻完成时刻周转时间 (完成时刻 - 进入时刻)带权周转时间 (周转时间 / 运行时间)
18.002.008.0010.0010.00 - 8.00 = 2.002.00 / 2.00 = 1.00
28.500.5010.3010.8010.80 - 8.50 = 2.302.30 / 0.50 = 4.60
39.000.1010.0010.1010.10 - 9.00 = 1.101.10 / 0.10 = 11.00
49.500.2010.1010.3010.30 - 9.50 = 0.800.80 / 0.20 = 4.00
性能指标:
  • 平均周转时间 = (2.00 + 2.30 + 1.10 + 0.80) / 4 = 6.20 / 4 = 1.55

  • 平均带权周转时间 = (1.00 + 4.60 + 11.00 + 4.00) / 4 = 20.60 / 4 = 5.15

最终表格:
作业号进入时刻运行时间开始时刻完成时刻周转时间带权周转时间
18.002.008.0010.002.001.00
28.500.5010.3010.802.304.60
39.000.1010.0010.101.1011.00
49.500.2010.1010.300.804.00
关键点说明:
  1. 非抢占式:作业一旦开始执行,必须运行完成才会处理下一个作业。

  2. 调度策略:每次选择当前已到达且运行时间最短的作业执行。

  3. 性能特点:SJF算法能有效降低平均周转时间,但可能导致长作业等待时间过长(如作业2的带权周转时间较高)。

 

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

相关文章:

  • 2025-暑期训练二
  • 通过具有一致性嵌入的大语言模型实现端到端乳腺癌放射治疗计划制定|文献速递-最新论文分享
  • AlpineLinux安装部署zabbix
  • 进程概念以及相关函数
  • 进程(起个开头,复习的一天)day26
  • 轻松上手:使用Nginx实现高效负载均衡
  • 应用密码学纲要
  • 怎样理解:source ~/.bash_profile
  • 决策树(Decision tree)算法详解(ID3、C4.5、CART)
  • 在线学堂-3.媒资管理模块(二)
  • 软件反调试(2)- 基于窗口列表的检测
  • 外侧三兵策略
  • 睿抗省赛2023
  • 【通识】机器学习相关
  • YOLOv11剪枝与量化(二)通道剪枝技术原理
  • 【Ragflow】30.离线环境迁移方案
  • 数据库9:数据库字符编码调整与校队(排序)规则
  • STM32F103_Bootloader程序开发11 - 实现 App 安全跳转至 Bootloader
  • UI 设计|审美积累 | 拟物化风格(Skeuomorphism)
  • 基于Jeecgboot3.8.1的vue3版本前后端分离的flowable流程管理平台
  • ai之RAG本地知识库--基于OCR和文本解析器的新一代RAG引擎:RAGFlow 认识和源码剖析
  • 学习笔记(29):训练集与测试集划分详解:train_test_split 函数深度解析
  • SimBa:实现深度强化学习参数scaling up
  • 多路I/O转接服务器(select、poll、epoll)
  • 跨境贸易的主要挑战是什么?
  • monorepo + Turborepo --- 构建仓库结构
  • 如何设置电脑定时休眠?操作指南详解
  • 从 PostgreSQL 到 DolphinDB:数据实时同步一站式解决方案
  • 金融安全生命线:用AWS EventBridge和CloudTrail构建主动式入侵检测系统
  • 少样本学习在计算机视觉中的应用:原理、挑战与最新突破