作业调度算法的解析

1.前言

操作系统这门课身边有好多小伙伴都说它难,每到期末考试挂科的同学也是偏多,在众多知识点当中,作业调度算法也是操作系统这门课当中较为频繁的一个考点。今天我想写出我自己对作业调度的看法,不仅是加强自身知识的巩固,也是想和各位小伙伴们一起探讨、一起进步。

要想彻底弄清作业调度算法,首先要知道作业调度的概念。我们都知道中央处理机(Central Processing Unit)简称CPU,它在多用户批处理操作系统当中,对处理机的分配分为两级:作业调度进程调度

2.作业调度

作业是指用户在一次解决或是一个事务处理过程中要求计算机系统所做的工作的集合。所以作业调度就是以一定的策略进行挑选,并分配主存等一些必要的资源,建立作业对应的进程,使其投入运行。

我们看图1.1,我们知道作业在整个活动期间有三种状态,即后备状态执行状态完成状态

当系统响应用户要求,将作业输入到磁盘后备作业列队上,该作业进入系统,等待调度,则称该作业进入后备状态。

从作业进入主存开始,到作业计算完毕,称该作业处于执行状态。

从作业计算完成开始,到善后处理完毕并退出系统为止,称该作业处于完成作业。

值得注意的是,在作业的执行期间,它包括进程的状态转化,要分清它们各自的关系,作业进入磁盘,称为进入系统的时间。

3.作业调度算法

先来先服务调度算法

先来先服务算法顾名思义就是先进入系统的则先进行调度,后进入系统的则后进行调度。

从表1.1我们可以看出,最早进入系统的是作业一,时间是8.00,由于是第一个进入系统的作业,并且前面没有正在执行的作业,所以作业一无需进行等待,直接开始执行。所以作业一的开始时间也是8.00。

再看公式(相对于同一作业而言):

完成时间=开始时间+执行时间

周转时间=完成时间-进入系统时间

带权周转时间=周转时间/执行时间

所以作业一的完成时间是8.00+2.00=10.00,周转时间是10.00-8.00=2.00,带权周转时间为2.00/2.00=1。

当作业一完成后,看接下来哪个作业进入系统的时间较早,进入系统时间早的作业接着执行。

由于作业二是2、3、4当中最早的那一个,所以作业一执行完接着作业二执行,由于作业二是等待作业一完成后才开始执行,所以作业二的开始时间是作业一的结束时间10.00。完成时间是10.00+0.20=10.20,周转时间是10.20-9.10=1.10,带权周转时间是1.10/0.20=5.5。作业三、四同理。

由于作业二来的时间是2、3、4当中最早的,换句话说作业二等待的时间也是最长,所以先来先服务的算法优先考虑的是在系统中等待时间最长的作业,而忽略了它执行时间的长短,所以效率也较低。

短作业优先调度算法

和先来先服务不同的是,短作业优先总是选取计算时间最短的作业作为下一次服务的对象。

短作业优先是谁执行时间短先执行谁,但由于作业一来的最早,系统处于空闲状态,所以作业一先执行。此处作业一和先来先服务作业一算出的结果一样。

由于作业一执行完,作业2、3、4都处于等待序列当中,所以再看等待序列中谁的执行时间最短,谁最短则执行谁。作业三执行时间最短,则执行作业三。开始时间是作业一的结束时间10.00,完成时间是10.00+0.10=10.10,周转时间是10.10-9.00=1.10,带权周转时间是1.10/0.10=11。

其它作业同理。

短作业优先这一算法易于实现,且效率较高,它的主要弱点是只照顾短作业的利益,而不考虑长作业的利益,如果系统不断地接受新的作业,就有可能使长作业长时间等待而不能运行。

响应比高者优先调度算法

首先我们看公式:

响应比=响应时间/执行时间

响应比=1+作业等待时间/执行时间

所谓响应比高者优先算法,就是每调度一个作业投入运行时,计算后备作业表中每个作业的响应比,然后挑选响应比最高者投入运行。

采用该算法时,这4个作业的执行次序为:作业一、作业三、作业二、作业四。之所以会是这样的次序,是因为该算法在一个作业运行完时要计算剩下的所有作业的响应比,然后选响应比高者去运行。

响应比2=1+作业等待时间/执行时间=1+(10.00-8.50)/0.5=1+3

响应比3=1+作业等待时间/执行时间=1+(10.00-9.00)/0.10=1+10

响应比4=1+作业等待时间/执行时间=1+(10.00-9.50)/0.20=1+2.5

从计算结果也可以看出,作业三的响应比最高,所以接下来先执行作业三,等作业三结束后,再算出剩下所有没执行过的作业的响应比,找到响应比最高的作业再执行,重复以上操作,直到所有作业都执行完。

这种算法,虽然其调度性能不如短作业优先调度算法好,但是它既照顾了用户的先来后到,又考虑了系统服务时间的长短,所以,它是上述两种算法的一种较好的折中。

优先调度算法

优先调度算法是按照优先级的高低排序,调度时选取优先级高者先执行。

根据优先级大小挑选作业,优先数的计算保证使输出量最少、要求执行时间短的作业以及已经等了很久的作业得到优待。即

优先数=等待时间 x 等待时间-要求执行时间-16 x 输出量

其中,等待时间是指作业在磁盘中已等候的时间(以分计),要求执行时间(以秒计)和输出量(以行计)是根据作业控制块中所记录的相应值推算出来的。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿陈爱编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值