一种不平衡作业调度算法

文档序号:26792283发布日期:2021-09-28 23:48阅读:218来源:国知局
一种不平衡作业调度算法

1.本发明涉及计算机技术领域,尤其是一种不平衡作业调度算法。


背景技术:

2.在计算机操作系统中,可能有很多批处理作业存放在磁盘的后备作业队列中,或者有很多终端与主机相连,交互型作业不断地进入系统,使得内存和处理器等资源供不应求。应按照何种原则挑选批处理作业进入内存运行,能否继续接纳分时用户,处理器时间应该如何划分,时间片长短如何确定,怎样在进程之间分配处理器资源等,这些都是操作系统进行处理器管理所要面对的问题。因此,基于资源利用率、吞吐量、公平性、响应时间、作业周转时间,选择合适的作业调度算法。作业周转时间是指批处理用户从向系统提交作业开始到作业完成为止所需的时间,使作业周转时间或者平均作业周转时间尽可能短,这是批处理系统衡量调度性能的一项重要指标。
3.目前,计算机操作系统存在很多常用的调度算法,但是大多数都是平衡算法,不能根据作业大小而自动分配提供资源的调度算法称为平衡作业调度算法,因为他们的调度过程分配的资源数比较平衡,不会出现资源的倾斜分配现象。
4.例如:1、fcfs算法,按照作业进入系统作业队列的先后次序来挑选作业,先来先服务算法,这是一种非剥夺式调度算法,易于实现,但是效率不高。2、sjf算法即最短作业优先算法,以进入系统作业所要求的cpu运行时间的长短为标准,总是选取预计计算时间最短的作业投入运算,这是一种剥夺式调度算法,易于实现,但是执行效率不高,对长作业的资源分配极为不利。3、rr算法即轮转调度算法,采用时间片进行调度,也是一种剥夺式调度算法,系统耗费在进程切换上的开销比较大,这个开销与时间片大小有关,遇到长作业时,会反复执行,中断次数过多,系统消耗大。
5.现有技术中也有一些不平衡作业调度算法,如响应比高者调度算法,虽然其对公平性和周转时间提高了重视,但设置响应比参数动态性不强,改善系统性能不明显,实现困难。例如,采用一般的不平衡作业调度算法,当系统需要调度一个需要使用较多资源但其自身为重要进程的作业时,虽然能够使其在响应比上排序靠前,但是作业不是一次调度完成的,需要多次调度才可以完成,一个没完成的作业会重新进入队列参与竞争,随着系统不断地批处理小型作业时,仍然需要花费时间并且进行调度多次,导致完成一个工作量较大的作业需要进行多次调度,作业调度次数过多,响应比在这个过程中也会发生变化,影响了系统性能,仍然存在系统在任务间切换之间资源消耗多,出现有的作业响应时间延迟,作业周转时间或者平均作业周转时间变大,系统效率降低。


技术实现要素:

6.为了克服上述现有技术中的缺陷,本发明提供一种不平衡作业调度算法,能够提高系统资源利用率,降低作业周转时间,从软件角度提升系统性能。
7.为实现上述目的,本发明采用以下技术方案,包括:
8.一种不平衡作业调度算法,包括以下步骤:
9.s1,生成作业队列,作业队列中包括j个作业;
10.s2,为作业队列中的各个作业分配进程即分配总调度次数,分配第j个作业m
j
执行完成所需的总调度次数为
11.其中,m
j
为作业队列中的第j个作业,j=1,2,3

j;为第j个作业m
j
执行完成所需的总调度次数;
12.s3,按照作业队列中的各个作业的排列顺序,依次对作业队列中的各个作业分别进行调度;
13.其中,对作业队列中的第j个作业m
j
进行调度后,判断第j个作业m
j
是否执行完成;若是,将该第j个作业m
j
移处作业队列;若否,第j个作业m
j
等待下一次调度;
14.判断该第j个作业是否为作业队列中的最后一个作业,若否,则对作业队列中的下一个作业即第j+1个作业m
j+1
进行调度;若是,则跳转步骤s4,进行下一次调度;
15.s4,等待作业队列中的各个作业均执行完上一次调度后,按照步骤s3的方式,依次对作业队列中的各个作业分别进行下一次调度。
16.步骤s3和步骤s4中,作业队列中的第j个作业m
j
的第i次调度时所分配的资源即时间片为:
17.其中,t为设定的固定时间片;为第j个作业m
j
的第i次调度时的分配系数;为第j个作业m
j
的第i次调度所分配的资源即时间片。
18.第j个作业m
j
的第i次调度时的分配系数为:根据第i次调度时作业队列的总作业量p
i
和第j个作业m
j
执行完成所需的总调度次数确定取值。
19.第j个作业m
j
的第i次调度时的分配系数的取值满足以下要求:
[0020][0021]
其中,p
i
为第i次调度时的作业队列的总作业量。
[0022]
在步骤s1~s4中,若有新的作业达到,则将该新的作业放入作业队列的队尾,且为该新的作业分配进程。
[0023]
本发明的优点在于:
[0024]
(1)本发明使得作业队列中的各个作业能够及时得到响应,使得短作业具有较短作业周转时间,长作业也能在较少的轮转次数内完成,从而获得满意的周转时间。
[0025]
(2)本发明的不平衡作业调度算法时,根据作业的总调度次数与总作业量动态改变系统分配执行时间片,从而确保大作业也能够在更少的调度次数内完成,并且保持算法高效。
[0026]
(3)本发明不平衡作业调度算法,随着其它作业加入作业队列,系统会自适应改变第j个作业m
j
的第i次调度时的分配系数从而自适应改变第j个作业m
j
的第i次调度时的资源即时间片使大作业在不影响其它作业的前提下保持较少的轮转次数即调度次数与运行周期,从而确保了本发明的不平衡作业调度算法的可行性。
附图说明
[0027]
图1为本发明的一种不平衡作业调度算法的流程图。
[0028]
图2为平衡作业调度算法与本发明的不平衡作业调度算法的调度对比图。
具体实施方式
[0029]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0030]
由图1所示,本发明的一种不平衡作业调度算法,具体如下所示:
[0031]
s1,将到达的作业按照fcfs算法排列,生成作业队列,作业队列中包括j个作业。
[0032]
s2,cpu为作业队列中的各个作业分配进程即分配总调度次数,分配第j个作业m
j
执行完成所需的总调度次数为
[0033]
s3,按照作业队列中的各个作业的排列顺序,依次对作业队列中的各个作业分别进行调度。
[0034]
其中,对作业队列中的第j个作业m
j
进行调度后,判断第j个作业m
j
是否执行完成;若是,将该第j个作业m
j
移处作业队列;若否,第j个作业m
j
等待下一次调度;
[0035]
判断该第j个作业是否为作业队列中的最后一个作业,若否,则对作业队列中的下一个作业即第j+1个作业m
j+1
进行调度;若是,则跳转步骤s4,进行下一次调度。
[0036]
s4,等待作业队列中的各个作业均执行完上一次调度后,按照步骤s3的方式,依次对作业队列中的各个作业分别进行下一次调度。
[0037]
步骤s3和步骤s4中,
[0038]
作业队列中的第j个作业m
j
的第i次调度时所分配的资源即时间片为:
[0039][0040]
其中,t为设定的固定时间片,t的取值由系统静态设定,目前大部分系统中t的取值为24;为第j个作业m
j
的第i次调度时的分配系数;m
j
为作业队列中的第j个作业,j=1,2,3

j;为第j个作业m
j
的第i次调度所分配的资源即时间片;
[0041]
要求因此
[0042]
其中,p
i
为第i次调度时作业队列的总作业量,为第j个作业m
j
执行完成所需的总调度次数;
[0043]
在步骤s1~s4中,若有新的作业达到,则将该新的作业放入作业队列的队尾,cpu为该新的作业分配进程即分配总调度次数,且假如该新的作业假如作业队列后作业队列的总作业量p
i
也相应的增加。
[0044]
若采用一般调度算法,当操作系统需要调度一个工作时间长并且重要的作业时,因为作业不是一次调度完成的,需要进行多次调度,才可以完成,一个没完成的作业会重新进入作业队列参与竞争,但是由于作业调度次数过多,对系统性能负担较大,导致平均周转
或者带权周转的时间变大,降低效率,过多占用系统资源。本发明的不平衡作业调度算法将会使任务的调度次数减少,通过对分配系数d的调节使得系统获得较佳的性能,可以适应系统对调度次数的控制,且系统开发者柯根据需要选择分配系数d,实现调度多样性和自由性。
[0045]
当使用平衡算法调度作业队列中的第j个作业m
j
时,每轮调度投入资源为t

,第j个作业m
j
调度执行完成最少需要20轮调度,并且随着小作业的不断加入,作业m
j
可能出现饥饿现象,即cpu长时间不投入资源调度大作业,持续调度小作业的情况,虽然可以使用优先级调度算法,但仍然无法解决20轮调度的问题,若使用多级反馈队列调度算法,那么意味着必须等到该作业m
j
的优先级逐渐降低至最低,才能得到系统指定的一个固定值资源数分配给该作业m
j
,因此该调度算法需要等待优先级逐步降低,并且在作业量很大时仍然需要多次调度。
[0046]
当使用本发明的不平衡作业调度算法时,系统根据该作业m
j
的总调度次数与任务量动态改变cpu分配资源数即时间片,从而确保大作业也能够在更少的调度次数内完成,并且保持算法高效。
[0047]
大作业情况下,现有技术的平衡作业调度算法与本发明的不平衡作业调度算法的调度对比由图2所示。可知,平衡作业调度算法会随着作业调度次数增加导致平均周转时间快速增加,极大的影响了系统的运行效率。本发明的不平衡作业调度算法,随着其它作业加入作业队列,系统会自适应改变第j个作业m
j
的第i次调度时的分配系数从而改变第j个作业m
j
的第i次调度时的资源即时间片使大作业在不影响其它作业的前提下保持较少的轮转次数即调度次数与运行周期,从而确保了本发明的不平衡作业调度算法的可行性。
[0048]
要求因此
[0049]
根据第i次调度时作业队列的总作业量p
i
和第j个作业m
j
执行完成所需的总调度次数选择第j个作业m
j
的第i次调度时的分配系数的最优取值。
[0050]
以上仅为本发明创造的较佳实施例而已,并不用以限制本发明创造,凡在本发明创造的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明创造的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1