一种进程调度方法

文档序号:9564499阅读:547来源:国知局
一种进程调度方法
【技术领域】
[0001]本发明涉及linux进程调度技术领域,特别是涉及一种进程调度方法。
【背景技术】
[0002]目前,随着linux操作系统的发展,系统的应用范围越来越广,从大型服务器到便携式嵌入式设备,都对Linux操作系统的进程调度提出了不同的需求。对于不同的应用场景,其进程调度的需求是不同的。在大型服务器上更强调任务的公平性,而在桌面环境下则更追求交互任务的优先响应。
[0003]BFS是一个进程调度器,是专门为linux桌面环境所设计的内核调度器,已有的BFS调度器采用的进程调度方法是采用给进程分配不同的优先级组,从高到低调度不同的优先级组,组内则按照进程的deadline调度。已有的BFS调度器将进程分为4个大类,即realtime、SCHED_IS0、SCHED_N0RMAL 和 SCHED_IDELPR0,并将所有进程分配了 103 个优先级。但是采用现有的BFS调度器进行进程调度,优先级越多,低优先级进程等待调度的时间就越长,而且BFS调度器分配给进程的时间片有些不合理,每个进程的时间片是由优先级预先分配好的,不能实时调整,这样都导致系统的整体响应速度很低。

【发明内容】

[0004]本发明的目的是提供一种进程调度方法,以实现提高系统的整体响应速度。
[0005]为解决上述技术问题,本发明提供一种进程调度方法,该方法包括:
[0006]将linux系统内的所有进程任务分为多个优先级;其中,实时进程任务的优先级高于交互进程任务的优先级,交互进程任务的优先级高于普通进程任务的优先级;
[0007]将每一个优先级里面的所有进程任务作为一个进程任务组,对每个优先级里面的进程任务组设定组时间片,进行组间调度;
[0008]若进程任务组的组时间片用完,将组内剩余进程任务加入到比当前优先级低一级的优先级里面的进程任务组中。
[0009]优选的,所述对每个优先级里面的进程任务组设定组时间片,进行组间调度之后,还包括:
[0010]每个进程任务组的进程任务按照默认时间片进行组内调度,按照默认时间片进行调度完成之后,再按照deadline调度方式对进程任务组进行组内调度。
[0011]优选的,所述默认时间片=组间时间片/组内进程数。
[0012]优选的,每一个优先级对应相应的一组进程任务组。
[0013]优选的,所述将linux系统内的所有进程任务分为多个优先级,包括:
[0014]将linux系统内所有进程任务分为三个大类,所述三个大类为SCHED_REALHME、SCHED_10 和 SCHED_N0RMAL ;其中,SCHED_REALHME 映射有 50 个优先级,SCHED_10 映射有 1个优先级,SCHED_N0RMAL映射有一个优先级,所述三个大类包括53个优先级。
[0015]优选的,所述SCHED_REALHME对应实时进程任务,SCHED_REALTIME的优先级最高;所述SCHED_1对应交互进程任务,SCHED_1的优先级排第二 ;所述SCHED_NORMAL对应普通进程任务,SCHED_NORMAL的优先级最低。
[0016]优选的,每个优先级有一个队列queue,队列queue用于存储对应优先级的进程任务,所有的队列queue的状态映射到一个位图文件bitmap上;其中,所述队列queue为所述进程任务组。
[0017]优选的,若所述队列queue中存在可被调度的进程,所述队列queue对应的位图文件bitmap上的位设置为1。
[0018]本发明所提供的一种进程调度方法,将linux系统内的所有进程任务分为多个优先级;其中,实时进程任务的优先级尚于交互进程任务的优先级,交互进程任务的优先级尚于普通进程任务的优先级;每一个优先级里面的所有进程任务作为一个进程任务组,对每个优先级里面的进程任务组设定组时间片,进行组间调度;若进程任务组的组时间片用完,将组内剩余进程任务加入到比当前优先级低一级的优先级里面的进程任务组中。可见,将系统内进程分为多个优先级,实时进程任务的优先级 > 交互进程任务的优先级 > 普通进程任务的优先级,不同优先级的任务分组,各组设定组时间片,进行组间调度,若组时间片用完则将组内剩余任务加入到低一个优先级的组中。在调度的过程中,是从高优先级到低优先级遍历进行,优先调度高优先级的组,并设定组时间片,若组中的进程用完该组时间片后,仍有进程未运行完,则将剩余进程加入到下一优先级组中,从而让低优先级的组可以与高优先级的组竞争,增加了公平性,如此考虑了 linux系统桌面环境下进程调度时,优先满足交互式任务,减少了优先级的数目,从而减少低优先级分组的等待时间,增加公平性,即组间调度中低优先级队列有机会和高优先级队列竞争,增加了公平性,所以该方法保证交互式任务优先响应,同时又增加了公平性,提高了系统的整体响应速度。
【附图说明】
[0019]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0020]图1为本发明所提供的一种进程调度方法的流程图;
[0021]图2为任务进程优先级与队列queue对应关系图;
[0022]图3为组间调度示意图;
[0023]图4为组内调度示意图。
【具体实施方式】
[0024]本发明的核心是提供一种进程调度方法,以实现提高系统的整体响应速度。
[0025]为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0026]请参考图1,图1为本发明所提供的一种进程调度方法的流程图,该方法应用于BFS调度器,该方法包括:
[0027]S11:将linux系统内的所有进程任务分为多个优先级;其中,实时进程任务的优先级高于交互进程任务的优先级,交互进程任务的优先级高于普通进程任务的优先级;
[0028]其中,进程任务组将linux系统内的所有进程任务分为多个优先级的过程为将linux系统内所有进程任务分为三个大类,进程任务组三个大类为SCHED_REALHME、SCHED_10 和 SCHED_N0RMAL ;其中,SCHED_REALHME 映射有 50 个优先级,SCHED_10 映射有 1个优先级,SCHED_N0RMAL映射有一个优先级,进程任务组三个大类包括53个优先级。系统内进程分为多个优先级,实时进程任务的优先级 > 交互进程任务的优先级 > 普通进程任务的优先级;
[0029]其中,进程任务组SCHED_REALHME对应实时进程任务,SCHED_REALTIME的优先级最高;进程任务组SCHED_10对应交互进程任务,SCHED_10的优先级排第二 ;进程任务组SCHED_N0RMAL对应普通进程任务,SCHED_N0RMAL的优先级最低。
[0030]S12:将每一个优先级里面的所有进程任务作为一个进程任务组,对每个优先级里面的进程任务组设定组时间片,进行组间调度;
[0031]其中,每一个优先级对应相应的一组进程任务组。组间调度时,设定组时间片,对于超时的进程降到下一个优先级。
[0032]其中,对每个优先级里面的进程任务组设定组时间片,进行组间调度之后,每个进程任务组的进程任务按照默认时间片进行组内调度,按照默认时间片进行调度完成之后,再按照截止时间调度方式即deadline调度方式对进程任务组进行组内调度。进程任务组默认时间片=组间时间片/组内进程数,组内进程数即为组内进程任务的数目。组内调度时,优先米用公平调度,然后米用deadline调度。
[0033]其中,每个优先级有一个队列queue,队列queue用于存储对应优先级的进程任务,所有的队列queue的状态映射到一个位图文件bitmap上;其中,队列queue为进程任务组,队列queue指代的就是进程任务组。若队列queue中存在可被调度的进程,队列queue对应的位图文件bitmap上的位设置为1。
[0034]S13:若进程任务组的组时间片用完,将组内剩余进程任务加入到比当前优先级低一级的优先级里面的进程任务组中。
[0035]具体的,S11至S13的执行者均为BFS调度器。以上方法针对桌面环境的进程调度,将进程分为3个大类,共53个优先级,不同的优先级对应不同的队列queue,所有的queue的状态映射到位图bitmap上对应的位。
[0036]BFS调度器从高优先级到低优先级遍历bitmap,优先调度高优先级的组,并设定组时间片。若组中的进程用完该组时间片后,仍有进程未运行完,则将剩余进程加入到下一优先级组中,从而让低优先级的组可以与高优先级的组竞争,增加了公平性。
[0037]而组内则优先采用公平调度,其次采用deadline调度。即组内进程默认平分组时间片,当进程的deadline即截止时间小于默认时间片时,优先调度deadline最小的进程,从而在兼顾进程公平性的同时优先保证deadline进程调度。
[0038]具体的,BFS调度器首先将系统内进程即进程任务分为多个优先级
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1