一种进程调度方法_2

文档序号:9564499阅读:来源:国知局
,实时任务优先级 > 交互任务优先级 > 普通任务优先级。然后不同优先级的任务分组,各组设定组时间片,进行组间调度。若组时间片用完则将组内剩余任务加入到低一个优先级的组中。最后组内进程先按照默认时间片调度,再按照deadline调度,默认时间片=组时间片/组内进程数。
[0039]所述方法考虑了桌面环境下进程调度时,优先满足交互式任务,减少了优先级的数目,从而减少低优先级分组的等待时间,增加公平性。同时组间调度使得低优先级队列有机会和高优先级队列竞争,增加了公平性。最后组内调度时,兼顾公平调度和按deadline调度,既满足了 deadline任务的优先运行,又兼顾了组内各个任务之间的公平性。从而在保证交互式任务优先响应的同时,增加了公平性,从而提高了系统的整体响应速度。所以上述方法在追求交互任务响应速度的同时,更好地保证进程调度的公平性,从而提高系统的整体响应速度。
[0040]更详细的,以上方法首先将所有进程即所有进程任务分为3个大类,SCHED_REALTIME^ SCHED_10、SCHED_N0RMALo 其中 SCHED_REALHME 映射为 50 个优先级,SCHED_10和SCHED_N0RMAL分别各自映射1个优先级,一共53个优先级。SCHED_REALTIME对应系统中的守护进程,优先级最高。SCHED_10对应交互式进程,优先级第二,SCHED_N0RMAL对应其他进程,优先级最低。具体是将进程分为3个大类,53个优先级,为每个优先级创建一个队列queue。具体请参考图2,图2为任务进程优先级与队列queue对应关系图,进程一共分为53个queue,每个queue对应不同的优先级,每个queue对应bitmap中对应的位。
[0041]然后进行组间调度:首先,每个优先级有一个队列queue,用于存储对应优先级的进程。所有的queue的状态映射到一张bitmap上,只要queue中存在可以被调度的进程,那么对应bitmap上的位就置1。调度器遍历bitmap,对所有置1的queue进行调度。每一个queue有一个组时间片,如果queue中的进程已经用该组时间片而queue中还有进程未调度,则将剩下的进程降到下一个优先级的分组中,从而保证低优先级的分组能够有机会和高优先级分组竞争。具体是调度器查找bitmap,对置1的queue进行调度;不同优先级的queue有不同的组时间片,当queue中的进程使用完组时间片后,若queue内还有未完成的进程,则这些进程下降到下一优先级的queue中。具体请参考图3,图3为组间调度示意图,在图3中,最左边的图显示的是调度开始运行时queuel和queue2的状态,此时先运行queuel,中间的图显示的是调度运行一段时间后,queuel组的时间片到,还有未完成运行的进程的状态,此时需将queuel中的剩余进程加入queud中继续执行,最右边的图显示的是剩余进程降低优先级,加入到queue2后的状态。最后进行组内调整:对于组内进程,按照进程的deadline排序,deadline越小则任务越紧急,所以会被优先执行。进程的默认时间片=组时间片/组内进程数。进程每经过一次调度,它所需的截止时间deadline就越小。当deadline)进程默认时间片时,进程可运行时间=进程默认时间片,即优先进行公平调度;当deadline〈=进程默认时间片时,进程可运行时间=deadline,即进行deadline调度。从而保证任务时间片可以动态调整,保证任务公平性的同时,优先完成快到期的任务。具体是组内调度时,每个进程有默认时间片,默认时间片=组时间片/组内进程数目,优先公平调度,当进程的deadline〈默认时间片时,按照进程的deadline进行调度,优先保证deadline进程完成运行。具体请参考图4,图4为组内调度示意图,在图4中,左边的图显示的是调度运行时进程间进行公平调度的状态,此时P1-P7都是具有相同时间片的进程,P1-P7这7个进程之间进行公平调度,右边的图显示的是调度运行一段时间后进程间进行deadline调度的状态,此时由于P4的时间片最小,剩余截止时间最小,对于P4这个进程执行优先调度。
[0042]如此,进程分为3个大类,共53个优先级,不同的优先级对应不同的队列queue,所有的queue的状态映射到bitmap上对应的位。调度器从高优先级到低优先级遍历bitmap,优先调度高优先级的组,并设定组时间片。若组中的进程用完该组时间片后,仍有进程未运行完,则将剩余进程加入到下一优先级组中,从而让低优先级的组可以与高优先级的组竞争,增加了公平性。而组内则优先采用公平调度,其次采用deadline调度。即组内进程默认平分组时间片,当进程的deadline小于默认时间片时,优先调度deadline最小的进程,从而在兼顾进程公平性的同时优先保证deadline进程调度。
[0043]综上,本发明所提供的一种进程调度方法,将linux系统内的所有进程任务分为多个优先级;其中,实时进程任务的优先级高于交互进程任务的优先级,交互进程任务的优先级高于普通进程任务的优先级;将每一个优先级里面的所有进程任务作为一个进程任务组,对每个优先级里面的进程任务组设定组时间片,进行组间调度;若进程任务组的组时间片用完,将组内剩余进程任务加入到比当前优先级低一级的优先级里面的进程任务组中。可见,将系统内进程分为多个优先级,实时进程任务的优先级 > 交互进程任务的优先级>普通进程任务的优先级,不同优先级的任务分组,各组设定组时间片,进行组间调度,若组时间片用完则将组内剩余任务加入到低一个优先级的组中。在调度的过程中,是从高优先级到低优先级遍历进行,优先调度高优先级的组,并设定组时间片,若组中的进程用完该组时间片后,仍有进程未运行完,则将剩余进程加入到下一优先级组中,从而让低优先级的组可以与高优先级的组竞争,增加了公平性,如此考虑了 linux系统桌面环境下进程调度时,优先满足交互式任务,减少了优先级的数目,从而减少低优先级分组的等待时间,增加公平性,即组间调度中低优先级队列有机会和高优先级队列竞争,增加了公平性,所以该方法保证交互式任务优先响应,同时又增加了公平性,提高了系统的整体响应速度。
[0044]以上对本发明所提供的一种进程调度方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
【主权项】
1.一种进程调度方法,其特征在于,包括: 将linux系统内的所有进程任务分为多个优先级;其中,实时进程任务的优先级尚于交互进程任务的优先级,交互进程任务的优先级高于普通进程任务的优先级; 将每一个优先级里面的所有进程任务作为一个进程任务组,对每个优先级里面的进程任务组设定组时间片,进行组间调度; 若进程任务组的组时间片用完,将组内剩余进程任务加入到比当前优先级低一级的优先级里面的进程任务组中。2.如权利要求1所述的方法,其特征在于,所述对每个优先级里面的进程任务组设定组时间片,进行组间调度之后,还包括: 每个进程任务组的进程任务按照默认时间片进行组内调度,按照默认时间片进行调度完成之后,再按照deadline调度方式对进程任务组进行组内调度。3.如权利要求2所述的方法,其特征在于,所述默认时间片=组间时间片/组内进程数。4.如权利要求1所述的方法,其特征在于,每一个优先级对应相应的一组进程任务组。5.如权利要求1所述的方法,其特征在于,所述将linux系统内的所有进程任务分为多个优先级,包括: 将linux系统内所有进程任务分为三个大类,所述三个大类为SCHED_REALHME、SCHED_1 和 SCHED_NORMAL ;其中,SCHED_REALHME 映射有 50 个优先级,SCHED_1 映射有 1个优先级,SCHED_NORMAL映射有一个优先级,所述三个大类包括53个优先级。6.如权利要求5所述的方法,其特征在于,所述SCHED_REALHME对应实时进程任务,SCHED_REALTIME的优先级最高;所述SCHED_1对应交互进程任务,SCHED_1的优先级排第二 ;所述SCHED_NORMAL对应普通进程任务,SCHED_NORMAL的优先级最低。7.如权利要求1所述的方法,其特征在于,每个优先级有一个队列queue,队列queue用于存储对应优先级的进程任务,所有的队列queue的状态映射到一个位图文件bitmap上;其中,所述队列queue为所述进程任务组。8.如权利要求7所述的方法,其特征在于,若所述队列queue中存在可被调度的进程,所述队列queue对应的位图文件bitmap上的位设置为1。
【专利摘要】本发明公开了一种进程调度方法,该方法包括:将linux系统内的所有进程任务分为多个优先级;其中,实时进程任务的优先级高于交互进程任务的优先级,交互进程任务的优先级高于普通进程任务的优先级;将每一个优先级里面的所有进程任务作为一个进程任务组,对每个优先级里面的进程任务组设定组时间片,进行组间调度;若进程任务组的组时间片用完,将组内剩余进程任务加入到比当前优先级低一级的优先级里面的进程任务组中。该方法实现提高系统的整体响应速度。
【IPC分类】G06F9/50
【公开号】CN105320571
【申请号】CN201510866458
【发明人】邓宇羽
【申请人】浪潮(北京)电子信息产业有限公司
【公开日】2016年2月10日
【申请日】2015年11月27日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1