具有预测突发时间的最短作业优先 CPU 调度
先决条件 – CPU 调度,SJF – Set 1(非抢占式),Set 2(抢占式)
最短作业优先 (SJF)是一种最佳调度算法,因为它提供了最大吞吐量和最小平均等待时间 (WT) 和周转时间 (TAT),但实际上无法实现,因为进程的突发时间无法预测进步。
我们可能不知道下一个 CPU 突发的长度,但我们可能能够预测它的值。我们预计下一个 CPU 突发的长度将与之前的相似。通过计算下一个 CPU 突发长度的近似值,我们可以选择具有最短预测 CPU 突发的进程。
有两种方法可以预测过程的爆发时间:
1. 静态方法——我们可以通过两个因素来预测突发时间:
- 工艺规模 –
假设我们有一个大小为 200 KB 的进程 P old已经被执行并且它的突发时间是 20 个时间单位,现在假设我们有一个大小为 201 KB的新进程 P new 尚未执行。
我们将已经执行的进程 P old 的突发时间与新进程的大小几乎相同,作为新进程 P new 的突发时间。 - 流程类型 –
我们可以根据过程类型预测突发时间。操作系统进程(如调度程序、调度程序、分段、碎片)比用户进程(游戏、应用软件)快。任何新操作系统进程的突发时间都可以从任何类似类型的旧操作系统进程中预测出来,用户进程也是如此。注 –突发时间预测的静态方法并不可靠,因为它总是无法正确预测。
2. 动态方法——设 t i是第 i 个进程的实际突发时间,T n+1是第 n+1个进程的预测突发时间。
- 简单平均 –给定 n 个进程 ( P 1 , P 2 … P n )
Τn+1 = 1/n(Σi=1 to n ti)
- 指数平均值(老化) –
Τn+1 = αtn + (1 - α)Τn
其中 α = 是平滑因子, 0 <= α <= 1 ,
t n = 第n 个进程的实际突发时间,
Τ n = 第n 个过程的预测突发时间。一般术语,
αtn + (1 - α)αtn-1 + (1 - α)2αtn-2...+ (1 - α)jαtn-j...+ (1 - α)n+1Τ0
Τ 0是常数或整体系统平均值。
平滑因子 (α) –它控制我们预测中近期和过去历史的相对权重。
- 如果 α = 0,则 Τ n+1 = Τ n即初始预测突发时间的值没有变化。
- 如果 α = 1, Τ n+1 = t n即新进程的预测 Burst-Time 将始终根据第n 个进程的实际 Burst-time 变化。
- 如果 α = 1/2,则近期和过去历史的权重相等。
例子 -
使用 T1 = 10, α = 0.5 计算指数平均,算法是 SJF,之前的运行次数为 8、7、4、16。
(一) 9
(乙) 8
(c) 7.5
(d) 无解释 :
最初 T1 = 10 和 α = 0.5 并且给定的运行时间是 8、7、4、16,因为它是最短的作业,
因此,这些进程服务的可能顺序是 4、7、8、16,因为 SJF 是一种非抢占技术。
所以,使用公式:T2 = α*t1 + (1-α)T1
所以我们有,
T2 = 0.5*4 + 0.5*10 = 7,这里 t1 = 4 且 T1 = 10
T3 = 0.5*7 + 0.5*7 = 7,这里 t2 = 7 和 T2 = 7
T4 = 0.5*8 + 0.5*7 = 7.5,这里 t3 = 8 和 T3 = 7
所以第四个过程的未来预测将是 T4 = 7.5,这是选项(c)。在我们的 youtube 频道上通过免费直播课程学习所有 GATE CS 概念。
- 简单平均 –给定 n 个进程 ( P 1 , P 2 … P n )