CN105320571B - 一种进程调度方法 - Google Patents

一种进程调度方法 Download PDF

Info

Publication number
CN105320571B
CN105320571B CN201510866458.XA CN201510866458A CN105320571B CN 105320571 B CN105320571 B CN 105320571B CN 201510866458 A CN201510866458 A CN 201510866458A CN 105320571 B CN105320571 B CN 105320571B
Authority
CN
China
Prior art keywords
priority
group
task
sched
queue
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510866458.XA
Other languages
English (en)
Other versions
CN105320571A (zh
Inventor
邓宇羽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Beijing Electronic Information Industry Co Ltd
Original Assignee
Inspur Beijing Electronic Information Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Beijing Electronic Information Industry Co Ltd filed Critical Inspur Beijing Electronic Information Industry Co Ltd
Priority to CN201510866458.XA priority Critical patent/CN105320571B/zh
Publication of CN105320571A publication Critical patent/CN105320571A/zh
Application granted granted Critical
Publication of CN105320571B publication Critical patent/CN105320571B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种进程调度方法,该方法包括:将linux系统内的所有进程任务分为多个优先级;其中,实时进程任务的优先级高于交互进程任务的优先级,交互进程任务的优先级高于普通进程任务的优先级;将每一个优先级里面的所有进程任务作为一个进程任务组,对每个优先级里面的进程任务组设定组时间片,进行组间调度;若进程任务组的组时间片用完,将组内剩余进程任务加入到比当前优先级低一级的优先级里面的进程任务组中。该方法实现提高系统的整体响应速度。

Description

一种进程调度方法
技术领域
本发明涉及linux进程调度技术领域,特别是涉及一种进程调度方法。
背景技术
目前,随着linux操作系统的发展,系统的应用范围越来越广,从大型服务器到便携式嵌入式设备,都对Linux操作系统的进程调度提出了不同的需求。对于不同的应用场景,其进程调度的需求是不同的。在大型服务器上更强调任务的公平性,而在桌面环境下则更追求交互任务的优先响应。
BFS是一个进程调度器,是专门为linux桌面环境所设计的内核调度器,已有的BFS调度器采用的进程调度方法是采用给进程分配不同的优先级组,从高到低调度不同的优先级组,组内则按照进程的deadline调度。已有的BFS调度器将进程分为4个大类,即realtime、SCHED_ISO、SCHED_NORMAL和SCHED_IDELPRO,并将所有进程分配了103个优先级。但是采用现有的BFS调度器进行进程调度,优先级越多,低优先级进程等待调度的时间就越长,而且BFS调度器分配给进程的时间片有些不合理,每个进程的时间片是由优先级预先分配好的,不能实时调整,这样都导致系统的整体响应速度很低。
发明内容
本发明的目的是提供一种进程调度方法,以实现提高系统的整体响应速度。
为解决上述技术问题,本发明提供一种进程调度方法,该方法包括:
将linux系统内的所有进程任务分为多个优先级;其中,实时进程任务的优先级高于交互进程任务的优先级,交互进程任务的优先级高于普通进程任务的优先级;
将每一个优先级里面的所有进程任务作为一个进程任务组,对每个优先级里面的进程任务组设定组时间片,进行组间调度;
若进程任务组的组时间片用完,将组内剩余进程任务加入到比当前优先级低一级的优先级里面的进程任务组中。
优选的,所述对每个优先级里面的进程任务组设定组时间片,进行组间调度之后,还包括:
每个进程任务组的进程任务按照默认时间片进行组内调度,按照默认时间片进行调度完成之后,再按照deadline调度方式对进程任务组进行组内调度。
优选的,所述默认时间片=组间时间片/组内进程数。
优选的,每一个优先级对应相应的一组进程任务组。
优选的,所述将linux系统内的所有进程任务分为多个优先级,包括:
将linux系统内所有进程任务分为三个大类,所述三个大类为SCHED_REALTIME、SCHED_IO和SCHED_NORMAL;其中,SCHED_REALTIME映射有50个优先级,SCHED_IO映射有1个优先级,SCHED_NORMAL映射有一个优先级,所述三个大类包括53个优先级。
优选的,所述SCHED_REALTIME对应实时进程任务,SCHED_REALTIME的优先级最高;所述SCHED_IO对应交互进程任务,SCHED_IO的优先级排第二;所述SCHED_NORMAL对应普通进程任务,SCHED_NORMAL的优先级最低。
优选的,每个优先级有一个队列queue,队列queue用于存储对应优先级的进程任务,所有的队列queue的状态映射到一个位图文件bitmap上;其中,所述队列queue为所述进程任务组。
优选的,若所述队列queue中存在可被调度的进程,所述队列queue对应的位图文件bitmap上的位设置为1。
本发明所提供的一种进程调度方法,将linux系统内的所有进程任务分为多个优先级;其中,实时进程任务的优先级高于交互进程任务的优先级,交互进程任务的优先级高于普通进程任务的优先级;每一个优先级里面的所有进程任务作为一个进程任务组,对每个优先级里面的进程任务组设定组时间片,进行组间调度;若进程任务组的组时间片用完,将组内剩余进程任务加入到比当前优先级低一级的优先级里面的进程任务组中。可见,将系统内进程分为多个优先级,实时进程任务的优先级>交互进程任务的优先级>普通进程任务的优先级,不同优先级的任务分组,各组设定组时间片,进行组间调度,若组时间片用完则将组内剩余任务加入到低一个优先级的组中。在调度的过程中,是从高优先级到低优先级遍历进行,优先调度高优先级的组,并设定组时间片,若组中的进程用完该组时间片后,仍有进程未运行完,则将剩余进程加入到下一优先级组中,从而让低优先级的组可以与高优先级的组竞争,增加了公平性,如此考虑了linux系统桌面环境下进程调度时,优先满足交互式任务,减少了优先级的数目,从而减少低优先级分组的等待时间,增加公平性,即组间调度中低优先级队列有机会和高优先级队列竞争,增加了公平性,所以该方法保证交互式任务优先响应,同时又增加了公平性,提高了系统的整体响应速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明所提供的一种进程调度方法的流程图;
图2为任务进程优先级与队列queue对应关系图;
图3为组间调度示意图;
图4为组内调度示意图。
具体实施方式
本发明的核心是提供一种进程调度方法,以实现提高系统的整体响应速度。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明所提供的一种进程调度方法的流程图,该方法应用于BFS调度器,该方法包括:
S11:将linux系统内的所有进程任务分为多个优先级;其中,实时进程任务的优先级高于交互进程任务的优先级,交互进程任务的优先级高于普通进程任务的优先级;
其中,进程任务组将linux系统内的所有进程任务分为多个优先级的过程为将linux系统内所有进程任务分为三个大类,进程任务组三个大类为SCHED_REALTIME、SCHED_IO和SCHED_NORMAL;其中,SCHED_REALTIME映射有50个优先级,SCHED_IO映射有1个优先级,SCHED_NORMAL映射有一个优先级,进程任务组三个大类包括53个优先级。系统内进程分为多个优先级,实时进程任务的优先级>交互进程任务的优先级>普通进程任务的优先级;
其中,进程任务组SCHED_REALTIME对应实时进程任务,SCHED_REALTIME的优先级最高;进程任务组SCHED_IO对应交互进程任务,SCHED_IO的优先级排第二;进程任务组SCHED_NORMAL对应普通进程任务,SCHED_NORMAL的优先级最低。
S12:将每一个优先级里面的所有进程任务作为一个进程任务组,对每个优先级里面的进程任务组设定组时间片,进行组间调度;
其中,每一个优先级对应相应的一组进程任务组。组间调度时,设定组时间片,对于超时的进程降到下一个优先级。
其中,对每个优先级里面的进程任务组设定组时间片,进行组间调度之后,每个进程任务组的进程任务按照默认时间片进行组内调度,按照默认时间片进行调度完成之后,再按照截止时间调度方式即deadline调度方式对进程任务组进行组内调度。进程任务组默认时间片=组间时间片/组内进程数,组内进程数即为组内进程任务的数目。组内调度时,优先采用公平调度,然后采用deadline调度。
其中,每个优先级有一个队列queue,队列queue用于存储对应优先级的进程任务,所有的队列queue的状态映射到一个位图文件bitmap上;其中,队列queue为进程任务组,队列queue指代的就是进程任务组。若队列queue中存在可被调度的进程,队列queue对应的位图文件bitmap上的位设置为1。
S13:若进程任务组的组时间片用完,将组内剩余进程任务加入到比当前优先级低一级的优先级里面的进程任务组中。
具体的,S11至S13的执行者均为BFS调度器。以上方法针对桌面环境的进程调度,将进程分为3个大类,共53个优先级,不同的优先级对应不同的队列queue,所有的queue的状态映射到位图bitmap上对应的位。
BFS调度器从高优先级到低优先级遍历bitmap,优先调度高优先级的组,并设定组时间片。若组中的进程用完该组时间片后,仍有进程未运行完,则将剩余进程加入到下一优先级组中,从而让低优先级的组可以与高优先级的组竞争,增加了公平性。
而组内则优先采用公平调度,其次采用deadline调度。即组内进程默认平分组时间片,当进程的deadline即截止时间小于默认时间片时,优先调度deadline最小的进程,从而在兼顾进程公平性的同时优先保证deadline进程调度。
具体的,BFS调度器首先将系统内进程即进程任务分为多个优先级,实时任务优先级>交互任务优先级>普通任务优先级。然后不同优先级的任务分组,各组设定组时间片,进行组间调度。若组时间片用完则将组内剩余任务加入到低一个优先级的组中。最后组内进程先按照默认时间片调度,再按照deadline调度,默认时间片=组时间片/组内进程数。
所述方法考虑了桌面环境下进程调度时,优先满足交互式任务,减少了优先级的数目,从而减少低优先级分组的等待时间,增加公平性。同时组间调度使得低优先级队列有机会和高优先级队列竞争,增加了公平性。最后组内调度时,兼顾公平调度和按deadline调度,既满足了deadline任务的优先运行,又兼顾了组内各个任务之间的公平性。从而在保证交互式任务优先响应的同时,增加了公平性,从而提高了系统的整体响应速度。所以上述方法在追求交互任务响应速度的同时,更好地保证进程调度的公平性,从而提高系统的整体响应速度。
更详细的,以上方法首先将所有进程即所有进程任务分为3个大类,SCHED_REALTIME、SCHED_IO、SCHED_NORMAL。其中SCHED_REALTIME映射为50个优先级,SCHED_IO和SCHED_NORMAL分别各自映射1个优先级,一共53个优先级。SCHED_REALTIME对应系统中的守护进程,优先级最高。SCHED_IO对应交互式进程,优先级第二,SCHED_NORMAL对应其他进程,优先级最低。具体是将进程分为3个大类,53个优先级,为每个优先级创建一个队列queue。具体请参考图2,图2为任务进程优先级与队列queue对应关系图,进程一共分为53个queue,每个queue对应不同的优先级,每个queue对应bitmap中对应的位。
然后进行组间调度:首先,每个优先级有一个队列queue,用于存储对应优先级的进程。所有的queue的状态映射到一张bitmap上,只要queue中存在可以被调度的进程,那么对应bitmap上的位就置1。调度器遍历bitmap,对所有置1的queue进行调度。每一个queue有一个组时间片,如果queue中的进程已经用该组时间片而queue中还有进程未调度,则将剩下的进程降到下一个优先级的分组中,从而保证低优先级的分组能够有机会和高优先级分组竞争。具体是调度器查找bitmap,对置1的queue进行调度;不同优先级的queue有不同的组时间片,当queue中的进程使用完组时间片后,若queue内还有未完成的进程,则这些进程下降到下一优先级的queue中。具体请参考图3,图3为组间调度示意图,在图3中,最左边的图显示的是调度开始运行时queue1和queue2的状态,此时先运行queue1,中间的图显示的是调度运行一段时间后,queue1组的时间片到,还有未完成运行的进程的状态,此时需将queue1中的剩余进程加入queue2中继续执行,最右边的图显示的是剩余进程降低优先级,加入到queue2后的状态。最后进行组内调整:对于组内进程,按照进程的deadline排序,deadline越小则任务越紧急,所以会被优先执行。进程的默认时间片=组时间片/组内进程数。进程每经过一次调度,它所需的截止时间deadline就越小。当deadline>进程默认时间片时,进程可运行时间=进程默认时间片,即优先进行公平调度;当deadline<=进程默认时间片时,进程可运行时间=deadline,即进行deadline调度。从而保证任务时间片可以动态调整,保证任务公平性的同时,优先完成快到期的任务。具体是组内调度时,每个进程有默认时间片,默认时间片=组时间片/组内进程数目,优先公平调度,当进程的deadline<默认时间片时,按照进程的deadline进行调度,优先保证deadline进程完成运行。具体请参考图4,图4为组内调度示意图,在图4中,左边的图显示的是调度运行时进程间进行公平调度的状态,此时P1-P7都是具有相同时间片的进程,P1-P7这7个进程之间进行公平调度,右边的图显示的是调度运行一段时间后进程间进行deadline调度的状态,此时由于P4的时间片最小,剩余截止时间最小,对于P4这个进程执行优先调度。
如此,进程分为3个大类,共53个优先级,不同的优先级对应不同的队列queue,所有的queue的状态映射到bitmap上对应的位。调度器从高优先级到低优先级遍历bitmap,优先调度高优先级的组,并设定组时间片。若组中的进程用完该组时间片后,仍有进程未运行完,则将剩余进程加入到下一优先级组中,从而让低优先级的组可以与高优先级的组竞争,增加了公平性。而组内则优先采用公平调度,其次采用deadline调度。即组内进程默认平分组时间片,当进程的deadline小于默认时间片时,优先调度deadline最小的进程,从而在兼顾进程公平性的同时优先保证deadline进程调度。
综上,本发明所提供的一种进程调度方法,将linux系统内的所有进程任务分为多个优先级;其中,实时进程任务的优先级高于交互进程任务的优先级,交互进程任务的优先级高于普通进程任务的优先级;将每一个优先级里面的所有进程任务作为一个进程任务组,对每个优先级里面的进程任务组设定组时间片,进行组间调度;若进程任务组的组时间片用完,将组内剩余进程任务加入到比当前优先级低一级的优先级里面的进程任务组中。可见,将系统内进程分为多个优先级,实时进程任务的优先级>交互进程任务的优先级>普通进程任务的优先级,不同优先级的任务分组,各组设定组时间片,进行组间调度,若组时间片用完则将组内剩余任务加入到低一个优先级的组中。在调度的过程中,是从高优先级到低优先级遍历进行,优先调度高优先级的组,并设定组时间片,若组中的进程用完该组时间片后,仍有进程未运行完,则将剩余进程加入到下一优先级组中,从而让低优先级的组可以与高优先级的组竞争,增加了公平性,如此考虑了linux系统桌面环境下进程调度时,优先满足交互式任务,减少了优先级的数目,从而减少低优先级分组的等待时间,增加公平性,即组间调度中低优先级队列有机会和高优先级队列竞争,增加了公平性,所以该方法保证交互式任务优先响应,同时又增加了公平性,提高了系统的整体响应速度。
以上对本发明所提供的一种进程调度方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (7)

1.一种进程调度方法,其特征在于,包括:
将linux系统内的所有进程任务分为多个优先级;其中,实时进程任务的优先级高于交互进程任务的优先级,交互进程任务的优先级高于普通进程任务的优先级;
将每一个优先级里面的所有进程任务作为一个进程任务组,对每个优先级里面的进程任务组设定组时间片,进行组间调度;
若进程任务组的组时间片用完,将组内剩余进程任务加入到比当前优先级低一级的优先级里面的进程任务组中;
其中,在对每个优先级里面的进程任务组设定组时间片,进行组间调度之后,还包括:每个进程任务组的进程任务按照默认时间片进行组内调度,按照默认时间片进行调度完成之后,再按照deadline调度方式对进程任务组进行组内调度。
2.如权利要求1所述的方法,其特征在于,所述默认时间片=组间时间片/组内进程数。
3.如权利要求1所述的方法,其特征在于,每一个优先级对应相应的一组进程任务组。
4.如权利要求1所述的方法,其特征在于,所述将linux系统内的所有进程任务分为多个优先级,包括:
将linux系统内所有进程任务分为三个大类,所述三个大类为SCHED_REALTIME、SCHED_IO和SCHED_NORMAL;其中,SCHED_REALTIME映射有50个优先级,SCHED_IO映射有1个优先级,SCHED_NORMAL映射有一个优先级,所述三个大类包括53个优先级。
5.如权利要求4所述的方法,其特征在于,所述SCHED_REALTIME对应实时进程任务,SCHED_REALTIME的优先级最高;所述SCHED_IO对应交互进程任务,SCHED_IO的优先级排第二;所述SCHED_NORMAL对应普通进程任务,SCHED_NORMAL的优先级最低。
6.如权利要求1所述的方法,其特征在于,每个优先级有一个队列queue,队列queue用于存储对应优先级的进程任务,所有的队列queue的状态映射到一个位图文件bitmap上;其中,所述队列queue为所述进程任务组。
7.如权利要求6所述的方法,其特征在于,若所述队列queue中存在可被调度的进程,所述队列queue对应的位图文件bitmap上的位设置为1。
CN201510866458.XA 2015-11-27 2015-11-27 一种进程调度方法 Active CN105320571B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510866458.XA CN105320571B (zh) 2015-11-27 2015-11-27 一种进程调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510866458.XA CN105320571B (zh) 2015-11-27 2015-11-27 一种进程调度方法

Publications (2)

Publication Number Publication Date
CN105320571A CN105320571A (zh) 2016-02-10
CN105320571B true CN105320571B (zh) 2019-05-10

Family

ID=55247992

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510866458.XA Active CN105320571B (zh) 2015-11-27 2015-11-27 一种进程调度方法

Country Status (1)

Country Link
CN (1) CN105320571B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106095557B (zh) * 2016-06-20 2019-05-28 浪潮(北京)电子信息产业有限公司 一种o1调度算法的改进方法及装置
CN106293918A (zh) * 2016-08-11 2017-01-04 浪潮(北京)电子信息产业有限公司 一种调度进程的方法、系统及计算机
CN108009006B (zh) * 2016-11-02 2022-02-18 华为技术有限公司 I/o请求的调度方法及装置
CN106708618A (zh) * 2017-01-20 2017-05-24 郑州云海信息技术有限公司 一种进程调度方法及装置
CN109067699B (zh) * 2018-06-22 2021-09-28 中国建设银行股份有限公司 登录任务分发执行系统和方法、存储介质
CN111541623B (zh) * 2020-04-10 2022-12-06 深圳前海微众银行股份有限公司 一种数据处理方法及装置
CN112667369A (zh) * 2020-06-08 2021-04-16 宸芯科技有限公司 一种线程调度方法、装置、存储介质及电子设备
CN112860397A (zh) * 2021-02-01 2021-05-28 芯河半导体科技(无锡)有限公司 一种调度策略可配置的方法和装置
CN112506640B (zh) * 2021-02-07 2021-05-18 浙江地芯引力科技有限公司 一种用于加密运算芯片的多处理器架构及调配方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1606301A (zh) * 2004-07-09 2005-04-13 清华大学 一种共享资源访问的调度控制方法及装置
CN101266551A (zh) * 2008-04-11 2008-09-17 浙江大学 一个在schedsim中模拟linux调度器的方法
CN101894045A (zh) * 2010-06-18 2010-11-24 阳坚 一种实时Linux操作系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1606301A (zh) * 2004-07-09 2005-04-13 清华大学 一种共享资源访问的调度控制方法及装置
CN101266551A (zh) * 2008-04-11 2008-09-17 浙江大学 一个在schedsim中模拟linux调度器的方法
CN101894045A (zh) * 2010-06-18 2010-11-24 阳坚 一种实时Linux操作系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Linux调度器BFS简介;刘明;《https://www.ibm.com/developerworks/cn/linux/l-cn-bfs/index.html?ca=drs-》;20101202;第1-9页
多级反馈队列调度策略在Linux中的应用和实现;黄斌;《计算机工程》;20041031;第30卷(第20期);第81-83页

Also Published As

Publication number Publication date
CN105320571A (zh) 2016-02-10

Similar Documents

Publication Publication Date Title
CN105320571B (zh) 一种进程调度方法
US11403569B2 (en) System and method of work assignment management
RU2647657C2 (ru) Назначение и планирование потоков для нескольких очередей с учетом приоритета
Ladas Scrumban-essays on kanban systems for lean software development
CN110516936B (zh) 一种智能生产流水线调配系统
CN106293918A (zh) 一种调度进程的方法、系统及计算机
CN104199730B (zh) 一种基于同步i/o复用机制的单线程多任务处理方法
US20110224816A1 (en) Multi-agent system for distributed manufacturing scheduling with genetic algorithms and tabu search
US20090031317A1 (en) Scheduling threads in multi-core systems
CN106408112A (zh) 生产订单的排产管理方法与排产优化器系统
EP2666083B1 (en) Integrated environment for execution monitoring and profiling of applications running on multi-processor system-on-chip
US20080306805A1 (en) Method and Apparatus for Queue-Based Automated Staff Scheduling
CN102495804A (zh) 软件自动化测试方法
WO2000063819A1 (en) Method and system for allocating personnel and resources to efficiently complete diverse work assignments
CN106201676A (zh) 一种任务分配方法及装置
CN109902975A (zh) 调度方法、系统、装置以及计算机可读存储介质
CN110427257A (zh) 多任务调度方法、装置及计算机可读存储介质
CN102541642A (zh) 一种增强实时性能的任务管理方法
CN109343960A (zh) 一种Linux系统的任务调度方法、系统及相关装置
Babiceanu et al. Real-time holonic scheduling of material handling operations in a dynamic manufacturing environment
CN112925616A (zh) 任务分配方法、装置、存储介质及电子设备
Carroll et al. Incentive compatible online scheduling of malleable parallel jobs with individual deadlines
CN106648831A (zh) 基于萤火虫算法和动态优先级的云工作流调度方法
Klevanskiy et al. Multi-project scheduling: multicriteria time-cost trade-off problem
CN117149388A (zh) 一种批量任务调度方法和系统、电子设备、存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant