进程的调度方法及装置与流程

文档序号:18409379发布日期:2019-08-10 00:49阅读:148来源:国知局
进程的调度方法及装置与流程

本发明涉及电子技术领域,特别涉及一种进程的调度方法及装置。



背景技术:

进程是正在运行的程序的实例,是系统进行资源分配和调度的基本单位。在具有多个处理单元的的电子设备中,每个处理单元都有单独的进程队列,该进程队列中可以包括多个按照优先级排列的进程,每个处理单元可以根据自身的进程队列对各个进程进行处理。同时,为了提高各个进程的处理速度,系统可以根据每个处理单元进程队列上排列的进程个数检测每个处理单元的负载状态。当某个处理单元处于过载状态时,该过载处理单元可以将自身进程队列上的部分进程调度到空闲状态的处理单元的进程队列上。

相关技术中,进程的调度过程一般包括:过载处理单元向所有空闲状态的处理单元广播通知消息,以通知所有处于空闲状态的处理单元该过载处理单元需要进行进程调度,所有接收到该通知消息的空闲状态的处理单元均可以将自身的进程队列锁定,并试图锁定该过载处理单元的进程队列,当有任一空闲状态的处理单元锁定该过载处理单元的进程队列后,该过载处理单元即可将自身进程队列中的某个进程调度至该空闲状态的处理单元的进程队列中。

但是,如果空闲状态的处理单元在锁定过载处理单元的进程队列的过程中,又有新进程需要创建,由于所有空闲状态的处理单元的进程队列已被锁定,使得在该进程的调度过程中,该新进程无法及时创建。



技术实现要素:

为了解决相关技术中在进行进程调度时,新进程可能无法创建的问题,本发明提供了一种进程的调度方法及装置。所述技术方案如下:

第一方面,提供一种进程的调度方法,所述方法包括:

电子设备中的第一处理单元接收第二处理单元发送的通知消息,所述通知消息用于指示所述第二处理单元为空闲状态,所述电子设备中包括至少两个处理单元,所述第一处理单元为所述至少两个处理单元中处于过载状态的处理单元;

根据所述通知消息将第一进程队列锁定,所述第一进程队列为所述第一处理单元的进程队列;

将第二进程队列锁定,所述第二进程队列为所述第二处理单元的进程队列;

将所述第一进程队列中的进程插入至所述第二进程队列中。

第二方面,提供一种进程的调度方法,所述方法包括:

当电子设备中的第二处理单元确定自身处于空闲状态时,所述第二处理单元确定处于过载状态的第一处理单元,所述电子设备中包括至少两个处理单元;

所述第二处理单元将第一进程队列锁定,所述第一进程队列为所述第一处理单元的进程队列;

将第二进程队列锁定,所述第二进程队列为所述第二处理单元的进程队列;

将所述第一进程队列中的进程插入至所述第二进程队列中。

第三方面,提供一种进程的调度装置,应用于电子设备中的第一处理单元,所述装置包括:

接收单元,用于接收第二处理单元发送的通知消息,所述通知消息用于指示所述第二处理单元为空闲状态,所述电子设备中包括至少两个处理单元,所述第一处理单元为所述至少两个处理单元中处于过载状态的处理单元;

第一锁定单元,用于根据所述通知消息将第一进程队列锁定,所述第一进程队列为所述第一处理单元的进程队列;

第二锁定单元,用于将第二进程队列锁定,所述第二进程队列为所述第二处理单元的进程队列;

调度单元,用于将所述第一进程队列中的进程插入至所述第二进程队列中。

第四方面,提供一种进程的调度装置,应用于电子设备中的第二处理单元,所述装置包括:

确定单元,用于当所述第二处理单元确定自身处于空闲状态时,确定处于过载状态的第一处理单元,所述电子设备中包括至少两个处理单元;

第一锁定单元,用于将第一进程队列锁定,所述第一进程队列为所述第一处理单元的进程队列;

第二锁定单元,用于将第二进程队列锁定,所述第二进程队列为所述第二处理单元的进程队列;

调度单元,用于将所述第一进程队列中的进程插入至所述第二进程队列中。

本发明提供的技术方案带来的有益效果是:

本发明提供了一种进程的调度方法及装置,处于空闲状态的第二处理单元可以主动向处于过载状态的第一处理单元发送通知消息,该第一处理单元可以根据该通知消息,在将第一进程队列锁定后,再去锁定第二处理单元的第二进程队列,避免了在进行进程调度时,处于空闲状态的多个处理单元的进程队列同时被锁定的情况,因此可以保证新进程能够及时插入至空闲状态的处理单元的进程队列中,从而保证了新进程能够及时创建,避免了进程调度对新进程创建的影响。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种进程的调度方法的流程图;

图2-1是本发明实施例提供的另一种进程的调度方法的流程图;

图2-2是本发明实施例提供的一种进程的调度过程的示意图;

图3是本发明实施例提供的又一种进程的调度方法的流程图;

图4是本发明实施例提供的再一种进程的调度方法的流程图;

图5是本发明实施例提供的一种进程的调度装置的结构示意图;

图6是本发明实施例提供的另一种进程的调度装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

在本发明实施例中,电子设备可以包括至少两个处理单元,当电子设备中的中央处理器(英文:centralprocessingunit;简称cpu)为多核cpu时,每个处理单元可以为该多核cpu中的一个内核;当电子设备中的cpu为cpu集群(英文:cpucluster)时,每个处理单元可以为该cpucluster中的一个单核cpu。

图1是本发明实施例提供的一种进程的调度方法的流程图,参考图1,该方法包括:

步骤101、电子设备中的第一处理单元接收第二处理单元发送的通知消息,该通知消息用于指示该第二处理单元为空闲状态,该电子设备中包括至少两个处理单元,该第一处理单元为该至少两个处理单元中处于过载状态的处理单元。

步骤102、根据该通知消息将第一进程队列锁定,该第一进程队列为该第一处理单元的进程队列。

步骤103、将第二进程队列锁定,该第二进程队列为该第二处理单元的进程队列。

步骤104、将该第一进程队列中的进程插入至第二进程队列中。

综上所述,本发明实施例提供的进程的调度方法,处于空闲状态的第二处理单元可以主动向处于过载状态的第一处理单元发送通知消息,该第一处理单元可以根据该通知消息,在将第一进程队列锁定后,再去锁定第二处理单元的第二进程队列,避免了在进行进程调度时,处于空闲状态的多个处理单元的进程队列同时被锁定的情况,因此可以保证新进程能够及时插入至空闲状态的处理单元的进程队列中,从而保证了新进程能够及时创建,避免了进程调度对新进程创建的影响。

图2-1是本发明实施例提供的一种进程的调度方法的流程图,该方法可以应用于电子设备中的第一处理单元,该电子设备包括至少两个处理单元,该第一处理单元为过载状态,该至少两个处理单元中的第二处理单元为空闲状态,参考图2-1,该方法包括:

步骤201、第一处理单元接收第二处理单元发送的通知消息。

该通知消息用于指示该第二处理单元为空闲状态。在本发明实施例中,每个处理单元都有单独的进程队列,该进程队列中可以包括多个按照优先级排列的进程。电子设备的操作系统可以周期性的对每个处理单元的进程队列中的进程个数以及该处理单元的负载进行检测,并对每个处理单元的负载状态进行标记。例如当某个处理单元的进程队列中的进程个数为0时,操作系统可以将该处理单元的负载状态标记为空闲状态;当某个处理单元的负载不超过预设阈值时,操作系统可以将该处理单元的负载状态标记为正常状态;当某个处理单元的负载超过预设阈值时,操作系统可以将该处理单元的负载状态标记为过载状态。每个处理单元根据操作系统的标记,不仅可以确定自身的负载状态,还可以获取到其他处理单元的负载状态。当第一处理单元确定自身为空闲状态时,可以向处于过载状态的第二处理单元发送通知消息,以便对该第二处理单元的进程队列中的进程进行调度。若该处于过载状态的第二处理单元包括多个,则该第一处理单元可以根据每个第二处理单元的负载情况,向负载最大的第二处理单元发送该通知消息。

示例的,假设如图2-2所示,电子设备中包括4个处理单元:cpu1至cpu4,其中cpu1为过载状态(overload),cpu2为空闲状态(idle),则该cpu2可以向该cpu1发送通知消息,同时,若cpu3和cpu4也为空闲状态,则该cpu3和cpu4也可以向该cpu1发送通知消息。

步骤202、根据该通知消息将第一进程队列锁定。

该第一进程队列为该第一处理单元的进程队列。第一处理单元接收到处于空闲状态的第二处理单元发送的通知消息后,可以确定能够将该第一进程队列中的进程调度至该第二处理单元中,因此该第一处理单元可以将该第一进程队列锁定。进程队列锁定后,只能由锁定该进程队列的处理单元对该进程队列进行操作(例如插入进程或者迁移进程等),此时系统中新创建的进程无法插入至该已锁定的进程队列中。示例的,cpu1接收到cpu2发送的通知消息后,可以将获取自身进程队列(cpu-rt-rq)的队列锁,并将该cpu-rt-rq锁定。

步骤203、检测该第二进程队列是否已经被锁定。

当该第二进程队列未被锁定时,执行步骤204;当该第二进程队列已经被锁定时,执行步骤206。其中,该第二进程队列为该第二处理单元的进程队列。

当第一处理单元将第一进程队列锁定后,为了将该第一进程队列中的进程调度至第二处理处理单元的第二进程队列中,该第一处理单元还需要将该第二进程队列锁定,由于进程队列锁定后,只能由锁定该进程队列的处理单元对该进程队列进行操作,因此只有当第一处理单元将两个进程队列都锁定后,才可以实现该进程的调度。在第一处理单元锁定第二进程队列之前,还需要先对该第二进程队列的锁定状态进行检测,若该第二进程队列未被锁定,则可以执行步骤204;如果当该第二处理单元向第一处理发送通知消息后,系统中有新进程需要创建时,该第二处理单元可以将自身的第二进程队列锁定,以便将该新进程插入至该第二进程队列中,此时,该第一处理单元可以检测到该第二进程队列已经被锁定,并执行步骤206。

需要说明的是,在实际应用中,每个处理单元中可以设置有用于指示该处理单元的锁定状态的锁定变量,该锁定变量在不同取值时可以分别表示该处理单元已被锁定或者未被锁定,且该锁定变量的取值可以由该处理单元自身进行调整,也可以由其他处理单元进行调整,关于进程队列锁定的具体实现方式可以参考相关技术,本发明实施例对此不做赘述。

步骤204、将第二进程队列锁定。执行步骤205。

当该第二进程队列未被锁定时,该第一处理单元可以将该第二进程队列锁定。若存在多个第二处理单元向该第一处理单元发送了通知消息,则该第一处理单元可以根据各个第二处理单元的标识,对优先级最高的第二处理单元的进程队列进行锁定。

示例的,假设每个cpu的标识为该cpu的编号,cpu编号的数字越小,其优先级越高,如图2-2所示,cpu2、cpu3和cpu4同时向cpu1发送了通知消息,当该cpu1锁定第一进程队列后,由于cpu2至cpu4中cpu2的优先级最高,则该cpu1可以先获取该cpu2的队列锁(获取队列锁是指调整锁定变量的取值,使得该锁定变量指示该处理单元已被锁定),以便将该cpu2锁定。由于此时其他处于空闲状态的cpu3和cpu4的进程队列并未锁定,因此当有新进程需要创建时,可以及时将该新进程插入至该处于空闲状态且未被锁定的处理单元中,由此避免了进程调度对新进程创建的影响。

步骤205、将该第一进程队列中的进程插入至第二进程队列中。

当该第一处理单元将第一进程队列和第二进程队列均锁定后,即可将第一进程队列中的进程插入至第二处理单元的第二进程队列中,由此即完成了该进程的调度。其中,该插入至第二进程队列中的进程可以为该第一进程队列中,除正在运行的进程之外,优先级最高的进程。示例的,cpu1可以将第一进程队列中的进程:rt-task1插入至cpu2的第二进程队列中。

在该进程的调度过程中,过载状态的第一处理单元将第一进程队列锁定后,再去锁定第二处理单元的第二进程队列,由于该第一处理单元只能锁定一个第二处理单元的进程队列(例如,锁定cpu2的进程队列),因此避免了进程调度时,多个空闲状态的处理单元的进程队列同时处于锁定状态,导致新进程无法创建的情况。该进程的调度不仅降低了第一处理单元的负载,并且由于在进程调度前,该第二处理单元为空闲状态,进程插入至该第二进程队列后,可以得到及时运行,使得电子设备中各个进程能够均匀分配,各个处理单元的资源能够合理利用。

步骤206、锁定备选处理单元的进程队列。执行步骤207。

该备选处理单元是在该第二处理单元向该第一处理单元发送该通知消息之后,向该第一处理单元发送通知消息的处理单元。

在本发明实施例中,当该第二处理单元的第二进程队列已经被锁定时,第一处理单元可以继续对备选处理单元的进程队列进行锁定。若该备选处理单元包括多个,则该第一处理单元可以根据各个备选处理单元的标识,对优先级最高的备选处理单元的进程队列进行锁定。示例的,假设如图2-2所示,cpu3和cpu4在cpu2之后向该cpu1发送了通知消息,当该cpu1未获取到cpu2的队列锁时,可以继续获取cpu3的队列锁,若该cpu3的进程队列也已经被锁定,则该cpu1可以继续获取cpu4的队列锁。其中,每个cpu的标识可以为该cpu的编号,cpu编号的数字越小,其优先级可以越高。

步骤207、将该第一进程队列中的进程插入至该备选处理单元的进程队列中。

当该第一处理单元获取到该备选处理单元的进程队列的队列锁,将该备选处理单元的进程队列锁定后,第一处理单元即可将该进程插入至该备选处理单元的进程队列中。示例的,cpu1可以将第一进程队列中的进程:rt-task1插入至cpu3的进程队列中。

需要说明的是,在本发明实施例中,该各个处理单元中的进程队列中的进程可以均为实时进程。

综上所述,本发明实施例提供的进程的调度方法,处于空闲状态的第二处理单元可以主动向处于过载状态的第一处理单元发送通知消息,该第一处理单元可以根据该通知消息,在将第一进程队列锁定后,再去锁定第二处理单元的第二进程队列,避免了在进行进程调度时,处于空闲状态的多个处理单元的进程队列同时被锁定的情况,例如,cpu1可以先将自身的第一进程队列锁定后,再去锁定cpu2的进程队列,此时其他空闲状态的处理单元:cpu3和cpu4的进程队列均未被锁定,因此可以保证新进程能够及时插入至该空闲状态的处理单元的进程队列中,从而保证了新进程能够及时创建,避免了进程调度对新进程创建的影响。

需要说明的是,本发明实施例提供的进程的调度方法的步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减。任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本发明的保护范围之内,因此不再赘述。

图3是本发明实施例提供的另一种进程的调度方法的流程图,参考图3,该方法可以包括:

步骤301、当电子设备中的第二处理单元确定自身处于空闲状态时,该第二处理单元确定处于过载状态的第一处理单元,该电子设备中包括至少两个处理单元。

步骤302、第二处理单元将第一进程队列锁定,该第一进程队列为该第一处理单元的进程队列。

步骤303、将第二进程队列锁定,该第二进程队列为该第二处理单元的进程队列。

步骤304、将该第一进程队列中的进程插入至该第二进程队列中。

综上所述,本发明实施例提供的进程的调度方法,处于空闲状态的第二处理单元可以主动向处于过载状态的第一处理单元发送通知消息,并可以在将该第一处理单元的第一进程队列锁定后,再去锁定自身的第二进程队列,避免了在进行进程调度时,处于空闲状态的多个处理单元的进程队列同时被锁定的情况,因此可以保证新进程能够及时插入至空闲状态的处理单元的进程队列中,从而保证了新进程能够及时创建。

图4是本发明实施例提供的另一种进程的调度方法的流程图,该方法可以应用于电子设备的第二处理单元,该电子设备包括至少两个处理单元,该第二处理单元为空闲状态,该至少两个处理单元中的第一处理单元为过载状态,参考图4,该方法可以包括:

步骤401、当第二处理单元确定自身处于空闲状态时,确定处于过载状态的第一处理单元。

步骤402、将第一进程队列锁定。执行步骤403。

该第一进程队列为该第一处理单元的进程队列。在本发明实施例中,第二处理单元确定自身为空闲状态后,可以直接将处于过载状态的第一处理单元的第一进程队列进行锁定;或者,该第二处理单元也可以先向该第一处理单元发送用于指示该第二处理单元为空闲状态的通知消息后,再将该第一处理单元的第一进程队列锁定。

步骤403、检测第二进程队列是否已经被锁定。

该第二进程队列为第二处理单元的进程队列。

当该第二进程队列未被锁定时,执行步骤404;当该第二进程队列已被锁定时,执行步骤406。

步骤404、将该第二进程队列锁定。执行步骤405。

步骤405、将该第一进程队列中的进程插入至该第二进程队列中。

步骤406、向第三处理单元发送通知消息。

当该第二进程队列已被锁定时,该第二处理单元可以向第三处理单元发送通知消息,以便该第三处理单元将自身的进程队列锁定,使得该进程能够插入至该第三处理单元的进程队列中,该至少两个处理单元包括该第三处理单元,且该第三处理单元为空闲状态。

示例的,参考图2-2,假设cpu2将cpu1的进程队列锁定后,检测到该cpu2自身的进程队列已被锁定,则该cpu2可以向cpu3发送通知消息,以便cpu3将自身的进程队列锁定,使得cpu1的进程队列中的进程:rt-task1可以插入至cpu3的进程队列中。

上述步骤402至步骤405的具体实现过程可以参考前述步骤302至步骤305中的描述,本发明实施例不再重复赘述。

综上所述,本发明实施例提供的进程的调度方法,处于空闲状态的第二处理单元可以主动向处于过载状态的第一处理单元发送通知消息,并可以在将该第一处理单元的第一进程队列锁定后,再去锁定自身的第二进程队列,避免了在进行进程调度时,处于空闲状态的多个处理单元的进程队列同时被锁定的情况,因此可以保证新进程能够及时插入至空闲状态的处理单元的进程队列中,从而保证了新进程能够及时创建。

图5是本发明实施例提供的一种进程的调度装置,该装置可以应用于电子设备中的第一处理单元,如图5所示,该装置可以包括:

接收单元501,用于接收第二处理单元发送的通知消息,该通知消息用于指示该第二处理单元为空闲状态,该电子设备中包括至少两个处理单元,该第一处理单元为该至少两个处理单元中处于过载状态的处理单元。

第一锁定单元502,用于根据该通知消息将第一进程队列锁定,该第一进程队列为该第一处理单元的进程队列。

第二锁定单元503,用于将第二进程队列锁定,该第二进程队列为该第二处理单元的进程队列。

调度单元504,用于将该第一进程队列中的进程插入至第二进程队列中。

综上所述,本发明实施例提供的进程的调度装置,处于过载状态的第一处理单元接收到处于空闲状态的第二处理单元发送的通知消息后,可以根据该通知消息,在将自身的第一进程队列锁定后,再去锁定第二处理单元的第二进程队列,避免了在进行进程调度时,处于空闲状态的多个处理单元的进程队列同时被锁定的情况,因此可以保证新进程能够及时插入至空闲状态的处理单元的进程队列中,从而保证了新进程能够及时创建。

可选的,该第二锁定单元503,还用于:

检测该第二进程队列是否已经被锁定;当该第二进程队列未被锁定时,将该第二进程队列锁定。

可选的,电子设备中包括多核中央处理器cpu,每个处理单元为该多核cpu中的一个内核。

综上所述,本发明实施例提供的进程的调度装置,处于过载状态的第一处理单元接收到处于空闲状态的第二处理单元发送的通知消息后,可以根据该通知消息,在将自身的第一进程队列锁定后,再去锁定第二处理单元的第二进程队列,避免了在进行进程调度时,处于空闲状态的多个处理单元的进程队列同时被锁定的情况,因此可以保证新进程能够及时插入至空闲状态的处理单元的进程队列中,从而保证了新进程能够及时创建。

图6是本发明实施例提供的另一种进程的调度装置,该装置可以应用于电子设备的第二处理单元,如图6所示,该装置可以包括:

确定单元601,用于当该第二处理单元确定自身处于空闲状态时,确定处于过载状态的第一处理单元,该电子设备中包括至少两个处理单元。

第一锁定单元602,用于将第一进程队列锁定,该第一进程队列为该第一处理单元的进程队列。

第二锁定单元603,用于将第二进程队列锁定,该第二进程队列为该第二处理单元的进程队列。

调度单元604,用于将该第一进程队列中的进程插入至该第二进程队列中。

综上所述,本发明实施例提供的进程的调度装置,处于空闲状态的第二处理单元可以主动向处于过载状态的第一处理单元发送通知消息,并可以在将该第一处理单元的第一进程队列锁定后,再去锁定自身的第二进程队列,避免了在进行进程调度时,处于空闲状态的多个处理单元的进程队列同时被锁定的情况,因此可以保证新进程能够及时插入至空闲状态的处理单元的进程队列中,从而保证了新进程能够及时创建。

可选的,该第二锁定单元603,还用于:

检测该第二进程队列是否已经被锁定;当该第二进程队列未被锁定时,将该第二进程队列锁定。

可选的,该第二锁定单元603,还用于:

当该第二进程队列已被锁定时,向第三处理单元发送通知消息,以便该第三处理单元将自身的进程队列锁定,使得该进程能够插入至该第三处理单元的进程队列中。

综上所述,本发明实施例提供的进程的调度装置,处于空闲状态的第二处理单元可以主动向处于过载状态的第一处理单元发送通知消息,并可以在将该第一处理单元的第一进程队列锁定后,再去锁定自身的第二进程队列,避免了在进行进程调度时,处于空闲状态的多个处理单元的进程队列同时被锁定的情况,因此可以保证新进程能够及时插入至空闲状态的处理单元的进程队列中,从而保证了新进程能够及时创建。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1