操作系统_第三章处理器管理_批处理作业的调度算法

aduovip 2021-09-24

栏目: android ·

来源: aduovip

作者:aduovip

简介  这篇文章主要介绍了操作系统_第三章处理器管理_批处理作业的调度算法以及相关的经验技巧,文章约4845字,浏览量384,点赞数4,值得参考!

在批处理操作系统控制下的作业称为批处理作业。

在操作系统中,我们把磁盘上用来存放作业信息的专用区域称为输入井,把在输入井中等待处理的作业称为后备作业。

批处理操作系统应怎样从输入井中选取作业装入主存储器呢?  所以在设计调度算法时, 可考虑如下原则:

  1. 公平性,对用户公平
  2. 平衡资源使用。 尽可能地使用系统资源都处于忙碌。
  3. 极大的流量。 在单位时间内为尽可能多的作业服务, 保证计算机系统的吞吐能力。

一个理想的调度算法是既提高系统效率又能使进入系统的作业及明得到计算结果。

假定作业 i 进入输入井的时间为 Si, 若它被选中执行, 得到计算结果的时间为Ei, 那么它的周转时间就定义为Ti = Ei-Si。 对于每一个用户来说, 总希望自己作业的周转时间Ti尽可能地小,  最理想的情况是进入输入井后立即被选中执行。  这样 Ti 几乎是作业的计算时间。 但是, 在批处理操作系统控制下实现多道并行工作时, 不可能让每个用户都得到理想的效果。  从系统的角度, 希望进入输入井的作业的平均周转时间尽可能地小。  对 n 个作业来说, 它们的平均周转时间为:

     \'操作系统_第三章处理器管理_批处理作业的调度算法_先来先服务\'

周转时间和平均周转时间与选用的调度算法有关。 现在介绍一些常用的作业调度算法。

  1. 先来先服务算法

    这是最简单的算法, 先进入的作业优先被挑选。但是不是先进入的一定被先选中, 只有满足必要条件的作业才可能被选中。

例如: 有一个多道程序设计系统, 设供用户使用的主存空间为100KB,  作业调度和进程调度均采用先来先服务算法, 又设有如表3-1 所示的作业序列。

\'操作系统_第三章处理器管理_批处理作业的调度算法_吞吐能力_02\'

假定所用作业都是计算型的且忽略系统进行调度时所用时间。 当进行作业调度时,显然作业A和B首先依次被选中装入主存储器。 但作业C到达输入井后, 由于不能满足它对主存量的需求, 只能让它在输入井中等待。  对随后到达输入井的作业D和E, 

作业D的主存需求可以得到满足, 于是将其选中装入主存。 这时主存中已经装入了三个作业A、 B和D,  总共占用了85KB主存, 还剩下一个 15KB的空闲区, 不够装入作业E。 当作业A先执行结束后, 归还了所占的主存空间, 这时有两个分散的  15KB空闲区, 仍不能装入作业C 和 E。 直到作业B执行结束归还了60KB的空间后, 与作业A归还的空间合并成了一个75KB的空闲空间, 才可用来依次装入作业C和E。 

把各作业被选中装入主存的时间、占用处理器开始执行的时间、执行结束的时间和周转时间制成表3-2.

\'操作系统_第三章处理器管理_批处理作业的调度算法_主存_03\'

注意:   C的周转时间 = 执行结束的时间-进入输入井的时间 = 12.1-10.5=1.6

                 E的周转时间=执行结束时间-进入输入井的时间 = 12.3 - 10.7 = 1.6 

在这里,  时间以 "时" 为单位,现在 5个作业的平均周转时间为: 

(0.7+ 1.0+ 1.6+ 1.1+ 1.6)/  5 = 1.2 (小时)

先来先服务算法具有一定的公平性,容易实现。 

但从例子可以看到, 由于计算时间长的作业A和B先进入输入井而被 先选中时, 就可能使计算时间短的作业长时间地等待。  这不仅使这些用户不满意, 而且使计算时间短的作业周转时间很少, 从而也增加了平均周转时间,降低了系统的吞吐能力。

-----------------------------------------------------------------------

2.   计算时间短的作业优先算法

采用这种算法时,  要求用户对自己的作业需要计算的时间预先作一个估计。  作业调度时依据在输入井中的作业提出的计算时间为标准, 优先选择计算时间短且资源能得到满足的作业。 这种算法能降低作业的平均周转时间,从而提高系统的吞吐能力。

以上述例子进行分析, 由于作业是依次进入输入井的,所以该算法仍将像先来先服务算法一样, 会依次把作业A、B、D先装入主存储器。 进程调度按装入的次序让它们依次占用处理器。 当作业A执行结束时, 输入井中的两个作业C 和E对资源要求都不能满足, 必须在输入井中继续等待。  当作业B执行结束后, 两个作业的资源要求又都能被 满足, 按照计算时间短的作业优先算法将以先E后C的次序把它们装入主存储器。 同样地, 我们对这5个作业在采用计算时间短者优先的调度算法时的情况进行列表 3-3

\'操作系统_第三章处理器管理_批处理作业的调度算法_批处理_04\'

可计算出它们的平均周转时间为:

(0.7 + 1.0 + 1.8 + 1.1+ 1.2) / 5 = 1.16 (小时)

比先来先服务算法的平均周转时间缩短了0.04 小时。

采用计算时间短的作业优先算法要注意两个问题:

第一  该算法是以用户估计的计算时间为标准,  有些用户为了使自己的作业能优先执行,可能把计算时间故意估计得短些。 为了避免这一现象,  若作业执行时间超过所估计的时间,则可加价收费。

第二  由于系统不断地接受新作业进入输入井, 如果新进入输入井的作业估计的计算时间比较短,则将会使进入输入井早但要求计算时间长的作业等待很长的时间。这样会使某些用户不满意。

注意: 短作业优先算法 也要按照第一个作业进入时间先后顺序来

这里作业 E 耗时最短,也不能最先执行!因为E进入输入井时间晚。

 

 

 

 

 


以上就是本文的全部内容,希望对大家的学习有所帮助,本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文地址:https://blog.51cto.com/u_7320208/3993551

相关文章

操作系统第三章

作业调度算法(示例代码)

调度算法(示例代码)

操作系统_第三章处理器管理_进程

OS中处理机调度模型和调度算法(示例代码)

操作系统(二)—— 进程管理(3):进程调度

模拟处理机作业调度---短作业优先调度算法(示例代码)

操作系统8——处理机调度