一种进程调度方法、装置、设备及存储介质与流程

文档序号:28165254发布日期:2021-12-24 22:08阅读:90来源:国知局
一种进程调度方法、装置、设备及存储介质与流程

1.本技术涉及计算机技术领域,具体涉及一种进程调度方法、装置、设备及存储介质。


背景技术:

2.实时操作系统一般是基于优先级和时间片轮转调度的,系统给每个进程赋予一个优先级,每次需要进程切换时,调度当前优先级最高的进程;对同一优先级的进程,使用时间片轮转调度。
3.然而,如果一直有高优先级进程在执行,低优先级进程就不能执行,导致低优先级进程饥饿,甚至饿死,因此,需要提供更加科学有效的技术方案。


技术实现要素:

4.本技术提供了一种进程调度方法、装置、设备及存储介质,可以在正常调度待执行进程的同时提升饥饿进程的调度效率,避免饥饿进程因长时间不被执行而饿死,从而提升进程调度方法的灵活性和有效性,本技术技术方案如下:
5.一方面,提供了一种进程调度方法,所述方法包括:
6.获取多个待执行进程对应的等待时间;
7.基于所述等待时间对所述多个待执行进程进行降序排列,得到进程链表;
8.根据所述多个待执行进程的执行优先级,对所述多个待执行进程进行调度执行;
9.当所述多个待执行进程的第一执行数量满足第一切换条件时,根据所述进程链表中多个饥饿进程的排列顺序,对所述多个饥饿进程进行调度执行,所述多个饥饿进程为对应的等待时间大于等于饥饿阈值的待执行进程。
10.另一方面,提供了一种进程调度装置,所述装置包括:
11.等待时间获取模块,用于获取多个待执行进程对应的等待时间;
12.进程链表模块,用于基于所述等待时间对所述多个待执行进程进行降序排列,得到进程链表;
13.第一调度执行模块,用于根据所述多个待执行进程的执行优先级,对所述多个待执行进程进行调度执行;
14.第二调度执行模块,用于当所述多个待执行进程的第一执行数量满足第一切换条件时,根据所述进程链表中多个饥饿进程的排列顺序,对所述多个饥饿进程进行调度执行,所述多个饥饿进程为对应的等待时间大于等于饥饿阈值的待执行进程。
15.另一方面,提供了一种进程调度设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如上述的进程调度方法。
16.另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如
上述的进程调度方法。
17.本技术提供的进程调度方法、装置、设备及存储介质,具有如下技术效果:
18.利用本技术提供的技术方案,可以基于等待时间对多个待执行进程进行降序排列后得到进程链表,根据执行优先级对多个待执行进程进行调度执行,当满足切换条件时,根据进程链表中多个饥饿进程的排列顺序对多个饥饿进程进行调度执行,在正常调度待执行进程的同时提升饥饿进程的调度效率,避免饥饿进程因长时间不被执行而饿死,从而提升进程调度方法的灵活性和有效性。
附图说明
19.为了更清楚地说明本技术实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
20.图1是本技术实施例提供的一种进程调度方法的流程示意图;
21.图2是本技术实施例提供的一种进程链表的示意图;
22.图3是本技术实施例提供的一种根据上述多个待执行进程的执行优先级,对上述多个待执行进程进行调度执行的流程示意图;
23.图4是本技术实施例提供的一种根据上述进程链表中多个饥饿进程的排列顺序,对上述多个饥饿进程进行调度执行的流程示意图;
24.图5是本技术实施例提供的另一种进程调度方法的流程示意图;
25.图6是本技术实施例提供的一种进程调度装置示意图;
26.图7是本技术实施例提供的一种进程调度方法的服务器的硬件结构框图。
具体实施方式
27.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
28.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
29.以下介绍本技术实施例提供的一种进程调度方法,图1为本技术实施例提供的一种进程调度方法的流程示意图。需要说明的是,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在
实际中的系统或产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图1所示,上述方法可以包括:
30.s101,获取多个待执行进程对应的等待时间。
31.在本说明书实施例中,等待时间可以为当前时间与对应的待执行进程的上次调度时间的间隔时长。
32.在实际应用中,操作系统中的进程状态可以包括:运行态、就绪态、挂起态、休眠态等,其中,上述多个待执行进程可以为操作系统中多个处于就绪态的进程。在本说明书实施例中,上述操作系统可以为实时操作系统,例如, rt

linux、vxworks、μc/os

ii等。
33.s103,基于上述等待时间对上述多个待执行进程进行降序排列,得到进程链表。
34.在实际应用中,进程控制块(processing control block,pcb)是操作系统核心中用于表示进程状态的一种数据结构。操作系统可以按照进程状态以链表的形式将进程的pcb组成队列,从而生成对应的运行队列、就绪队列和挂起队列等。具体的实施例中,基于等待时间对多个待执行进程进行降序排列,并以链表的形式将上述多个待执行进程的pcb组成队列,生成该进程链表对应的就绪队列,其中,距离上次调度时间越长的待执行进程排在链表的越前面,距离上次调度时间越短的待执行进程排在链表的越后面。
35.在一个可选的实施例中,如图2所示,可以在pcb中添加指针字段,使得该指针字段对应的目标指针p指向进程链表中的第一个非饥饿进程,其中,非饥饿进程即对应的等待时间小于饥饿阈值的待执行进程。在该进程链表中,在目标指针之前的待执行进程的等待时间超过饥饿阈值。当目标指针指向进程链表的头部(head)时,表示进程链表中均为非饥饿进程,不存在饥饿进程,其中,饥饿进程即对应的等待时间大于等于饥饿阈值的待执行进程。优选的,饥饿阈值可以结合实际应用中进程链表中的进程数量和等待时间进行设置。
36.s105,根据上述多个待执行进程的执行优先级,对上述多个待执行进程进行调度执行。
37.在一个具体的实施例中,如图3所示,上述根据上述多个待执行进程的执行优先级,对上述多个待执行进程进行调度执行可以包括:
38.s301,根据上述执行优先级从上述多个待执行进程中确定当前调度到的待执行进程。
39.具体的,执行优先级较高的待执行进程越先被调度,同一执行优先级的待执行进程使用时间片轮转调度。
40.s303,执行上述当前调度到的待执行进程。
41.s305,在执行上述当前调度到的待执行进程结束后,将上述当前调度到的待执行进程添加到上述进程链表的尾部。
42.s307,重复执行上述根据上述执行优先级从上述多个待执行进程中确定当前调度到的待执行进程至上述将上述当前调度到的待执行进程添加到上述进程链表的尾部的第一调度过程直至上述第一调度过程中上述第一执行数量满足上述第一切换条件。
43.在一个可选的实施例中,上述第一切换条件可以包括:第一执行数量大于等于第一数量阈值,其中,第一数量阈值可以结合实际应用中进程链表中的饥饿进程与非饥饿进程的数量进行设置。
44.由以上实施例可见,根据执行优先级对多个待执行进程进行调度执行,能够满足
待执行进程的正常调度需求,提升待执行进程的调度效率。
45.s107,当上述多个待执行进程的第一执行数量满足第一切换条件时,根据上述进程链表中多个饥饿进程的排列顺序,对上述多个饥饿进程进行调度执行,上述多个饥饿进程为对应的等待时间大于等于饥饿阈值的待执行进程。
46.在一个具体的实施例中,如图4所示,上述根据上述进程链表中多个饥饿进程的排列顺序,对上述多个饥饿进程进行调度执行可以包括:
47.s401,根据上述排列顺序,执行上述多个饥饿进程中的第一个饥饿进程。
48.具体的,执行第一个饥饿进程即执行多个饥饿进程中等待时间最长的饥饿进程,避免该饥饿进程因等待时间过长而饿死。
49.s403,在执行上述第一个饥饿进程结束后,将上述第一个饥饿进程添加到上述进程链表的尾部。
50.s405,更新上述多个饥饿进程,得到多个更新饥饿进程。
51.在实际应用中,某些非饥饿进程的等待时间超过饥饿阈值时,该些非饥饿进程将作为饥饿进程处理,基于进程链表中的排列顺序对其进行调度。
52.具体的,更新上述进程链表中多个非饥饿进程对应的等待时间,得到上述多个非饥饿进程对应的更新等待时间;基于上述更新等待时间,更新上述多个非饥饿进程,得到多个更新非饥饿进程;基于上述多个更新非饥饿进程,更新上述多个饥饿进程,得到多个更新饥饿进程。
53.s407,基于上述多个更新饥饿进程,重复执行上述根据上述排列顺序,执行上述多个饥饿进程中的第一个饥饿进程至上述更新上述多个饥饿进程,得到多个更新饥饿进程的第二调度过程直至上述第二调度过程中执行过的饥饿进程的第二执行数量满足第二切换条件。
54.在一个可选的实施例中,上述第二切换条件可以包括:第二执行数量大于等于第二数量阈值,或,进程链表中的当前饥饿进程的数量为零个,其中,第二数量阈值可以结合实际应用中进程链表中的饥饿进程与非饥饿进程的数量进行设置。
55.由以上实施例可见,根据进程链表中多个饥饿进程的排列顺序对多个饥饿进程进行调度执行,优先执行等待时间长的饥饿进程,避免饥饿进程因长时间不被执行而饿死,提升饥饿进程的调度效率。
56.在一个可选的实施例中,如图5所示,上述方法还可以包括:
57.s109,当上述第二执行数量满足上述第二切换条件时,根据多个当前待执行进程的执行优先级,对上述多个当前待执行进程进行调度执行。
58.具体的,当上述第二执行数量满足上述第二切换条件时,从对当前饥饿进程的第二调度过程切换为对当前待执行进程的第一调度过程。
59.由以上实施例可见,基于预设切换条件,在待执行进程的第一调度过程与饥饿进程的第二调度过程之间灵活切换,满足不同类型进程的调度需求,提升进程调度方法的灵活性和普适性。
60.在一个可选的实施例中,上述方法还可以包括:当上述多个待执行进程中存在处于挂起状态的待执行进程时,将上述处于挂起状态的待执行进程从上述进程链表中移除。
61.具体的,处于挂起状态的待执行进程可以为当系统内存资源不能满足多个待执行
进程运行的要求时暂时被淘汰出系统内存的待执行进程。
62.由以上实施例可见,能够及时调整进程链表中的挂起进程,提升了资源分配和进程调度的效率。
63.由以上本技术书实施例可见,利用本技术实施例提供的技术方案,可以基于等待时间对多个待执行进程进行降序排列后得到进程链表,一方面,根据执行优先级对多个待执行进程进行调度执行,能够满足待执行进程的正常调度需求,提升待执行进程的调度效率;另一方面,根据进程链表中多个饥饿进程的排列顺序对多个饥饿进程进行调度执行,优先执行等待时间长的饥饿进程,避免饥饿进程因长时间不被执行而饿死,提升饥饿进程的调度效率;另一方面,基于预设切换条件,在待执行进程的第一调度过程与饥饿进程的第二调度过程之间灵活切换,满足不同类型进程的调度需求,提升进程调度方法的灵活性和普适性;另一方面,能够及时调整进程链表中的挂起进程,提升了资源分配和进程调度的效率。
64.本技术实施例提供了一种进程调度装置,如图6所示,上述装置包括:
65.等待时间获取模块610,用于获取多个待执行进程对应的等待时间;
66.进程链表模块620,用于基于所述等待时间对所述多个待执行进程进行降序排列,得到进程链表;
67.第一调度执行模块630,用于根据所述多个待执行进程的执行优先级,对所述多个待执行进程进行调度执行;
68.第二调度执行模块640,用于当所述多个待执行进程的第一执行数量满足第一切换条件时,根据所述进程链表中多个饥饿进程的排列顺序,对所述多个饥饿进程进行调度执行,所述多个饥饿进程为对应的等待时间大于等于饥饿阈值的待执行进程。
69.在一个具体的实施例中,上述第一调度执行模块630可以包括:
70.第一调度单元,用于根据上述执行优先级从上述多个待执行进程中确定当前调度到的待执行进程;
71.第一执行单元,用于执行上述当前调度到的待执行进程;
72.第一添加单元,用于在执行上述当前调度到的待执行进程结束后,将上述当前调度到的待执行进程添加到上述进程链表的尾部;
73.第一重复单元,用于重复执行上述根据上述执行优先级从上述多个待执行进程中确定当前调度到的待执行进程至上述将上述当前调度到的待执行进程添加到上述进程链表的尾部的第一调度过程直至上述第一调度过程中上述第一执行数量满足上述第一切换条件。
74.在一个具体的实施例中,上述第二调度执行模块640可以包括:
75.第二执行单元,用于根据上述排列顺序,执行上述多个饥饿进程中的第一个饥饿进程;
76.第二添加单元,用于在执行上述第一个饥饿进程结束后,将上述第一个饥饿进程添加到上述进程链表的尾部;
77.饥饿进程更新单元,用于更新上述多个饥饿进程,得到多个更新饥饿进程;
78.第二重复单元,用于基于上述多个更新饥饿进程,重复执行上述根据上述排列顺序,执行上述多个饥饿进程中的第一个饥饿进程至上述更新上述多个饥饿进程,得到多个
更新饥饿进程的第二调度过程直至上述第二调度过程中执行过的饥饿进程的第二执行数量满足第二切换条件。
79.在一个可选的实施例中,上述装置还可以包括:
80.第三调度执行模块,用于当上述第二执行数量满足上述第二切换条件时,根据多个当前待执行进程的执行优先级,对上述多个当前待执行进程进行调度执行。
81.在一个可选的实施例中,上述装置还可以包括:
82.移除模块,用于当上述多个待执行进程中存在处于挂起状态的待执行进程时,将上述处于挂起状态的待执行进程从上述进程链表中移除。
83.上述的装置实施例中的装置与方法实施例基于同样地发明构思。在此不再一一赘述。
84.本技术实施例提供了一种进程调度设备,该进程调度设备包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的进程调度方法。
85.存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据上述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
86.本技术实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置的操作系统中执行,即上述计算机设备可以包括移动终端、计算机终端、服务器或者类似的运算装置。以运行在服务器上为例,图7是本技术实施例提供的一种进程调度方法的服务器的硬件结构框图。如图7所示,该服务器700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,cpu)710(处理器710可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器730,一个或一个以上存储应用程序723或数据722的存储介质720 (例如一个或一个以上海量存储设备)。其中,存储器730和存储介质720可以是短暂存储或持久存储。存储在存储介质720的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器710可以设置为与存储介质720通信,在服务器700上执行存储介质720 中的一系列指令操作。服务器700还可以包括一个或一个以上电源760,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口740,和/ 或,一个或一个以上操作系统721,更进一步地,操作系统721可以为实时操作系统,例如rt

linux、vxworks、μc/os

ii等等。
87.输入输出接口740可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器700的通信供应商提供的无线网络。在一个实例中,输入输出接口740包括一个网络适配器(network interface controller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口740可以为射频(radio frequency,rf)模块,其用于通过无线方式与互联网进行通讯。
88.本领域普通技术人员可以理解,图7所示的结构仅为示意,其并不对上述电子装置
的结构造成限定。例如,服务器700还可包括比图7中所示更多或者更少的组件,或者具有与图7所示不同的配置。
89.本技术实施例还提供了一种存储介质,上述存储介质可设置于服务器之中以保存用于实现方法实施例中一种的进程调度方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的进程调度方法。
90.可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
91.由上述本技术提供的进程调度方法、装置、设备或存储介质的实施例可见,利用本技术实施例提供的技术方案,可以基于等待时间对多个待执行进程进行降序排列后得到进程链表,一方面,根据执行优先级对多个待执行进程进行调度执行,能够满足待执行进程的正常调度需求,提升待执行进程的调度效率;另一方面,根据进程链表中多个饥饿进程的排列顺序对多个饥饿进程进行调度执行,优先执行等待时间长的饥饿进程,避免饥饿进程因长时间不被执行而饿死,提升饥饿进程的调度效率;另一方面,基于预设切换条件,在待执行进程的第一调度过程与饥饿进程的第二调度过程之间灵活切换,满足不同类型进程的调度需求,提升进程调度方法的灵活性和普适性;另一方面,能够及时调整进程链表中的挂起进程,提升了资源分配和进程调度的效率。
92.需要说明的是:上述本技术实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
93.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
94.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指示相关的硬件完成,上述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
95.以上所述仅为本技术的较佳实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1