操作系统 在SJF中预测进程的CPU突发时间
SJF算法是最佳调度算法之一,因为它提供最大吞吐量和最小等待时间,但该算法的问题是无法事先知道CPU突发时间。
我们可以估计进程的CPU突发时间。有各种技术可用于假定进程的CPU突发时间。为了最佳利用算法,我们的假设需准确无误。
以下是用于假定进程的CPU突发时间的技术。
1. 静态技术
进程大小
我们可以从进程的大小预测其突发时间。如果我们有两个进程 T_OLD 和 T_New ,旧进程的实际突发时间已知为 20秒 ,进程的大小为 20 KB 。我们知道 P_NEW 的大小为21 KB 。那么 P_New 与 20秒 具有相似突发时间的概率最大。
If, P_OLD → 20 KB
P_New → 21 KB
BT(P_OLD) → 20 Secs
Then,
BT(P_New) → 20 secs
因此,在这种技术中,我们根据与新进程大小相似的旧进程的爆发时间来预测新进程的爆发时间。
进程类型
我们还可以根据进程的类型来预测进程的爆发时间。进程可以具有以下不同的类型。
- 操作系统进程
进程可以是操作系统进程,例如调度程序、编译器、程序管理器等等系统进程。它们的爆发时间通常较低,例如3至5个时间单位。
- 用户进程
用户创建的进程称为用户进程。可以有以下三种类型的进程。
- 交互式进程
交互式进程与用户时刻保持交互,或其执行完全取决于用户输入,例如各种游戏。它们的爆发时间需要较低,因为它们不需要大量时间的CPU,主要依赖于用户与进程的交互,因此它们主要是IO绑定进程。
- 前台进程
前台进程是用户用来满足其需求的进程,例如MS Office、编辑器、实用软件等等。这些类型的进程的爆发时间稍高,因为它们是CPU和IO绑定进程的完美结合。
- 后台进程
后台进程支持其他进程的执行,它们以隐藏模式工作。例如,键盘记录器是一种记录用户按键和活动的进程。它们主要是CPU绑定进程,需要更多的CPU时间。
2.动态技术
简单平均
在简单平均法中,给出了n个进程P(i)…….P(n)的列表。设T(i)表示进程P(i)的爆发时间。设τ(n)表示第n+1个进程的预测爆发时间。根据简单平均法,第n+1个进程的预测爆发时间将计算如下:
τ(n+1) = (1/n) ∑ T(i)
其中,0≤i≤n,∑ T(i)是到目前为止所有可用进程的实际突发时间的总和。
指数平均或老化
设Tn为第n个进程的实际突发时间。τ(n)为第n个进程的预测突发时间,则下一个进程(n+1)的CPU突发时间将计算为,
τ(n+1) = α. Tn + (1-α) . τ(n)
其中α是平滑度。其值介于0和1之间。