掌桥专利:专业的专利平台
掌桥专利
首页

一种进程调度方法及装置

文献发布时间:2024-04-18 19:58:26


一种进程调度方法及装置

技术领域

本申请实施例涉及计算机技术领域,涉及但不限于一种进程调度方法及装置。

背景技术

电脑的续航能力越来越被看重,受限于硬件的原因电池容量不可能无限的增大。这就需要在系统和应用上做节能操作。对于不是当前关注的应用的进程进行关闭或降低优先级被认为是一种有效的方式。但是一个应用的进程往往不是单独存在的,一个应用可能是由多个进程来支撑起来的,如果只保护了主进程而关闭了其他相关进程或降低了它们的优先级,往往会造成该应用运行不正常。

现有技术方案中操作系统的进程调度算法采用完全公平调度算法(CompletelyFair Scheduler,CFS)进行进程调度,其采用控制组的方式进行进程资源调度,这种方式往往更加关注于通用的情况,无法做到更高效的系统优化,用户使用体验不佳。

发明内容

有鉴于此,本申请实施例提供一种进程调度方法、装置、设备及存储介质。

本申请实施例的技术方案是这样实现的:

第一方面,本申请实施例提供一种进程调度方法,所述方法包括:

确定目标应用;

基于进程的关联关系表,获取与目标应用具有第一关联关系的第一进程组,以及与所述目标应用具有第二关联关系的第二进程组,所述第一关联关系所表征的关联性大于第二关联关系所表征的关联性;其中,所述第一进程组包括处于运行状态的至少一个第一进程,所述第二进程组包括处于至少一个第二进程;

为第一进程组分配第一运行资源,为第二进程组分配第二运行资源,所述第一运行资源的配置高于所述第二运行资源。

第二方面,本申请实施例提供一种进程调度装置,所述装置包括:

第一确定模块,用于确定目标应用;

第一获取模块,用于基于进程的关联关系表,获取与目标应用具有第一关联关系的第一进程组,以及与所述目标应用具有第二关联关系的第二进程组,所述第一关联关系所表征的关联性大于第二关联关系所表征的关联性;其中,所述第一进程组包括处于运行状态的至少一个第一进程,所述第二进程组包括处于至少一个第二进程;

第一分配模块,用于为第一进程组分配第一运行资源,为第二进程组分配第二运行资源,所述第一运行资源的配置高于所述第二运行资源。

第三方面,本申请实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法。

第四方面,本申请实施例提供一种存储介质,存储有可执行指令,用于处理器执行时,实现上述方法。

本申请实施例中,首先确定目标应用,然后基于进程的关联关系表,获取与目标应用具有第一关联关系的第一进程组,以及与所述目标应用具有第二关联关系的第二进程组,所述第一关联关系所表征的关联性大于第二关联关系所表征的关联;最后为第一进程组分配第一运行资源,为第二进程组分配第二运行资源,所述第一运行资源的配置高于所述第二运行资源。这样,可以实现基于与目标应用的关联关系对当前运行的进程进行分组。并且为第一进程组分配的第一运行资源的配置高于为第二进程组分配的第二运行资源,可以更好的支撑目标应用的运行,实现更加灵活的进程调度,用来适应不同目标应用的资源需求,实现更高效的系统优化。

附图说明

图1为本申请实施例提供的一种进程调度方法的实现流程示意图;

图2A为本申请实施例提供的一种用知识图谱确定进程分组的示意图;

图2B为本申请实施例提供的一种不同电源模式下对不同进程组分配资源的示意图;

图2C为本申请实施例提供的一种为进程组分配运行资源的示意图;

图3A为本申请实施例提供的一种确定进程的关联关系表方法的流程示意图;

图3B为本申请实施例提供的一种句柄表的示意图;

图4A为本申请实施例提供的一种更新无向图搜索矩阵方法的流程示意图;

图4B为本申请实施例提供的一种进程血缘关系的无向图;

图5为本申请实施例提供的一种进程调度装置的组成结构示意图;

图6为本申请实施例提供的电子设备的一种硬件实体示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对申请实施例的具体技术方案做进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

在以下的描述中,所涉及的术语“第一第二第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一第二第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

本申请实施例提供一种进程调度方法,如图1所示,该方法包括:

步骤S110、确定目标应用;

在一些实施例中,可以确定不止一个当前运行的目标应用。在实施过程中,可以基于当前应用场景对不止一个目标应用的进行优先级排序,在基于电子设备的当前供电电源能力确定优先响应的目标应用。这里,应用场景可以包括影音场景、游戏场景、聊天场景和文档编辑场景等;电源能力可以是由电源的供电类型决定的,举例来说,使用交流供电较使用直流供电给电子设备提供的续航能力更强。

步骤S120、基于进程的关联关系表,获取与目标应用具有第一关联关系的第一进程组,以及与所述目标应用具有第二关联关系的第二进程组,所述第一关联关系所表征的关联性大于第二关联关系所表征的关联性;其中,所述第一进程组包括处于运行状态的至少一个第一进程,所述第二进程组包括处于至少一个第二进程;

这里,进程是指在系统中正在运行的一个应用程序,进程是操作系统结构的基础,是一次程序的执行,是一个应用及其数据在电子设备上顺序执行时所发生的活动。进程之间具有关联关系,举例来说,某一进程可能与其它进程的进程之间的存在父子关联,路径关联,句柄关联,习惯关联等等。

其中,句柄是一种特殊的智能指针。当一个应用程序要引用其它系统(如数据库、操作系统)所管理的内存块或对象时,可以使用句柄。Windows下许多的资源都是以句柄的形式存在的,很多进程间通讯的方式也是以句柄的方式来标识的,比如命名管道(Namedpipe),共享内存(Sharememory)等,不同的几个进程使用了相同的句柄,则可以确定这几个进程之间是相互关联的。

用户在使用中习惯性的打开某几个软件,但是这些软件可能不具备程序上的关联关系,比如用户在用VScode写代码的时候,可能往往会打开git,vscode和git在程序的角度上是没有关联的,但是在用户使用逻辑的角度上是关联的,用户习惯使用这些软件的协作来进行工作。这样的软件关联关系被叫做习惯关联。

在实施过程中,可以获取与目标应用具有第一关联关系的第一进程组,和与目标应用具有第二关联关系的第二进程组,即将与目标应用关联关系较紧密的至少一个第一进程划分至第一进程组,以为目标应用提供运行支撑;将与目标应用关联关系较第一进程组中的进程较低的至少一个进程划分至第二进程组。这样,可以实现基于与目标应用的关联关系对当前运行的进程进行分组。

举例来说,进程之间的关联关系可以通过知识图谱进行描述。图2A为本申请实施例提供的一种用知识图谱确定进程分组的示意图,如图2A所示,该示意图包括:

进程信息21、当前场景22、知识图谱23和进程分组24。

在实施过程中,可以基于当前场景22和知识图谱23,利用获取到的进程信息对进程进行分组。根据知识图谱23将进程分为核心进程组(第一进程组),关联进程组(第二进程组)和其它进程组(第三进程组)。或者按照其它的需求分为更多的进程组,比如容器需求,网络监控需求等。其中,其它进程组可以按照当前的需求进行分组,比如如果需要对服务应用和用户应用进行资源分配,可以添加服务应用组和用户界面(User Interfac,UI)应用组等。

步骤S130、为第一进程组分配第一运行资源,为第二进程组分配第二运行资源,所述第一运行资源的配置高于所述第二运行资源。

这里,为了更好的支撑目标应用的运行,为第一进程组分配的第一运行资源的配置高于为第二进程组分配的第二运行资源。举例来说,对不同进程组分配不同的运行资源,可以灵活适应诸如容器,省电,性能释放,安全等需求的进程调度。

举例来说,如图2A所示的进程分组,基于知识图谱,将进程分配到不同的进程组中,可以为不同的进程组,设置不同的调度策略。不同的进程组按照知识图谱的划分,提供不同的调度策略。该调度策略包括:如CPU频率范围,网络带宽范围,是否控制FPS,以及应用CPU亲和性等等。其中,CPU亲和性,是指进程在指定CPU长时间运行,而尽量不向其它CPU迁移。设置了CPU亲和性,一个进程绑定了CPU之后,缓存的命中率可以保持在一个较高的水平,从而提高程序性能。

本申请实施例中,首先确定目标应用,然后基于进程的关联关系表,获取与目标应用具有第一关联关系的第一进程组,以及与所述目标应用具有第二关联关系的第二进程组,所述第一关联关系所表征的关联性大于第二关联关系所表征的关联;最后为第一进程组分配第一运行资源,为第二进程组分配第二运行资源,所述第一运行资源的配置高于所述第二运行资源。这样,可以实现基于与目标应用的关联关系对当前运行的进程进行分组。并且为第一进程组分配的第一运行资源的配置高于为第二进程组分配的第二运行资源,可以更好的支撑目标应用的运行,实现更加灵活的进程调度,用来适应不同目标应用的资源需求,实现更高效的系统优化。

在一些实施例中,以上进程调度方法还包括以下步骤:

步骤S140、基于所述进程的关联关系表,获取与所述目标应用具有第三关联关系的第三进程组,所述第三关联关系所述表征的关联性小于所述第二关联关系所表征的关联性;

这里,第三进程组可以是如图2A中所示的其它进程组。该第三进程组与目标应用的关联性小于第二进程组与目标应用的关联性。

步骤S150、为所述第三进程组分配第三运行资源,所述第三运行资源的配置低于所述第二运行资源。

在实施过程中,由于该第三进程组与目标应用的关联性小于第二进程组与目标应用的关联性。所以为第三进程组分配的第三运行资源的资源配置低于第二运行资源。

本申请实施例中,首先基于所述进程的关联关系表,获取与所述目标应用具有第三关联关系的第三进程组,所述第三关联关系所述表征的关联性小于所述第二关联关系所表征的关联性;然后为所述第三进程组分配第三运行资源,所述第三运行资源的配置低于所述第二运行资源。这样,第三进程组在运行中可以释放更多的运行资源给第一进程组和第二进程组,可以有效提升目标应用的运行效率。

在一些实施例中,以上步骤S110“确定目标应用”可以通过以下至少之一的步骤确定:

步骤111、获取当前的应用场景,基于当前的应用场景确定至少一个目标应用;

在实施过程中,当前应用场景可以确定目标应用,即可以确定目标应用对应的第一进程组,可以基于目标应用对进程重进行分组。

在一些实施例中,在确定应用场景切换的场景下,可以重新确定目标应用对应的核心进程组(第一进程组)。举例来说,用户在使用爱奇艺在看电影时,打开某个游戏,也就是从影音场景切换到游戏场景,这时游戏的核心进程组可以获得最大的资源分配,影音的核心进程组则不需要最大的资源分配,这时就要重新划分进程组,将游戏进程及其在知识图谱中的相关进程放入核心进程组。而将影音进程和它的相关进程移出核心进程组。

或者,

步骤112、在确定当前使用应用切换的情况下,将当前响应操作的至少一个应用确定为所述目标应用;

在一些实施例中,存在正在运行的多个应用(Application,APP),可以将响应用户操作的应用确定为目标应用。举例来说,用户正在打开音乐播放的APP进行音乐播放,即应用场景为娱乐场景,当前操作切换至打开使用文字编辑的APP进行文字编辑,那么可以将文字编辑的APP确定为目标应用,即,将娱乐场景切换为工作场景。

在一些实施例中,当前使用应用切换,若当前使用应用不止一个,例如工作场景下,多个工作应用同时运行,如果关了其中一个工作APP,打开了非工作app,但是还存在其它工作应用在响应用户的操作。在这种情况下,应用场景还是可以确定为工作场景,目标应用还是正在运行的其它工作APP。

或者,

步骤113、基于网络监控的触发指令,确定目标应用。

这里,网络监控可以是利用网络对正在运行的应用进行监控。在这种情况下,可以基于网络监控的需求,确定目标应用。

本申请实施例中,可以获取当前的应用场景,基于当前的应用场景确定至少一个目标应用;也可以在确定当前使用应用切换的情况下,将当前响应操作的至少一个应用确定为所述目标应;还可以基于网络监控的触发指令,确定目标应用。这样,可以实现在不同应用场景,程序切换和网络监控确定当前需要分配资源的目标应用。

在一些实施例中,以上步骤S120中“基于进程的关联关系表,获取与目标应用具有第一关联关系的第一应用进程组”还可以通过以下步骤实现:

步骤121、获取电子设备的电源模式,其中,所述电源模式包括第一电源模式和第二电源模式,所述第一电源模式的电源性能优于所述第二电源模式的电源性能;

这里,第一电源模式的电源性能优于第二电源模式的电源性能,可以是在第一电源模式下提供的续航能力优于第二电源模式下提供的续航能力,也可以0是在第一电源模式下提供的电源的稳定性优于第二电源模式下的稳定性。

步骤122、根据电子设备的电源模式,确定与目标应用具有第一关联关系的第一进程组;其中,所述第一电源模式下的第一进程组的数量大于所述第二电源模式下的第一进程组的数量,和/或,根据电子设备的电源模式,确定所述电源模式下的第一进程组的资源;其中,所述第一电源模式下的第一进程组的资源大于所述第二电源模式下的第一进程组的资源。

这里,由于第一电源模式的电源性能优于第二电源模式的电源性能,在一些实施例中,可以设置第一电源模式下的第一进程组的数量大于第二电源模式下的第一进程组的数量。实现在第一电源模式下,为目标应用提供较多的运行资源;第二电源模式下减小进程资源消耗,延长到目标应用的使用时间。

在一些实施例中,可以根据电子设备的电源模式确定电源模式下第一进程组的资源,即在不同的电源模式下,第一进程对应不同的资源。由于第一电源模式的电源性能优于第二电源模式的电源性能,所以可以设置第一电源模式下的第一进程组的资源大于第二电源模式下的第一进程组的资源。举例来说,第一电源模式可以是交流供电模式,第二电源模式可以是利用电池进行供电的直流供电模式,由于交流供电模式的电源性能优于直流供电模式下的电源性能,在实施过程中,可以设置交流供电模式下第一进程的资源大于直流供电模式下第二进程的资源。

在一些实施例中,在所述第一电池模式下,所述第一进程组以及所述第二进程组的运行资源配置,要高于所述第二电池模式下所述第一进程组以及所述第二进程组的运行资源配置。

这里,由于第一电源模式的电源性能优于第二电源模式的电源性能,所以在第一电池模式下,第一进程组以及第二进程组的运行资源配置,要高于第二电池模式下第一进程组以及第二进程组的运行资源配置。

在一些实施例中,在所述第一电池模式下,所述第一进程组、所述第二进程组以及所述第三进程组的运行资源配置,要高于所述第二电池模式下所述第一进程组、所述第二进程组以及所述第三进程组的运行资源配置。

图2B为本申请实施例提供的一种不同电源模式下对不同进程组分配资源的示意图,如图2B所示,在直流(Direct Current,DC)模式切换至交流(Alternating Current,AC)模式,或者交流模式切换至直流模式的情况下,可以为第一进程组、第二进程组以及第三进程组进行重新分组,并为新的第一进程组、第二进程组以及第三进程组重新进程运行资源配置。

本申请实施例中,获取电子设备的电源模式,其中,所述电源模式包括第一电源模式和第二电源模式,所述第一电源模式的电源性能优于所述第二电源模式的电源性能;根据电子设备的电源模式,确定与目标应用具有第一关联关系的第一进程组;其中,所述第一电源模式下的第一进程组的数量大于所述第二电源模式下的第一进程组的数量,和/或,根据电子设备的电源模式,确定所述电源模式下的第一进程组的资源;其中,所述第一电源模式下的第一进程组的资源大于所述第二电源模式下的第一进程组的资源。这样,可以实现基于不同的电源模式确定第一进程组的资源,以达到通过为第一进程组分配资源,在不同的电源模式下满足目标应用的使用需求。

在一些实施中,以上步骤S130中“为第一进程组分配第一运行资源”可以通过以下过程实现:基于所述目标应用的属性,确定第一运行资源,其中,所述第一运行资源包括以下至少之一:处理器设置、存储器资源、网络带宽、屏幕刷新次数,外设响应度、读写速率。

这里,目标应用的属性可以将目标应用划分为影音类应用、游戏类应用、聊天类应用和文档编辑类应用等。在实施过程中,可以基于目标应用的属性为该目标应用分配能够满足目标应用运行需求的第一运行资源。举例来说,影音类应用可以不限制屏幕刷新次数以满足用户的观看需求;游戏类应用可以设置不限制网络带宽和处理器核数,以满足用户对游戏的连贯性需求;聊天类应用和文档编辑类应用对屏幕刷新次数要求不高,其中,文档编辑类应用对网络带宽的要求也不高,可以适当进行限制。

图2C为本申请实施例提供的一种为进程组分配运行资源的示意图,如图2C所示,该示意图包括核心进程组21对应的资源、关联进程组22对应的资源和其它进程组23对应的资源,其中,

为核心进程组21提供的资源包括,处理器设置:处理器核数不限制,处理器利用率60%至80%;网络设置:带宽不限制;输入输出(I/O)接口设置:每秒读写次数不限制,带宽不限制;挂起设置:不挂起;用户界面设置:不限制屏幕刷新次数;应用程序接口调用设置:不限制调用应用程序接口。

为关联进程组22提供的资源包括,处理器设置:处理器核数设置为1,处理器利用率20%至40%;网络设置:动态设置带宽;输入输出(I/O)接口设置:每秒读写次数不限制,带宽不限制;挂起设置:不挂起;用户界面设置:限制屏幕刷新次数;应用程序接口调用设置:不限制调用应用程序接口。

为其它进程组23提供的资源包括,处理器设置:处理器核数设置为1,处理器利用率50%至20%;网络设置:限制带宽;输入输出(I/O)接口设置:限制每秒读写次数,限制带宽;挂起设置:挂起;用户界面设置:限制屏幕刷新次数;应用程序接口调用设置:限制调用应用程序接口。

本申请实施例中,可以基于所述目标应用的属性,确定第一运行资源,其中,所述第一运行资源包括以下至少之一:处理器设置、存储器资源、网络带宽、屏幕刷新次数,外设响应度、读写速率。这样,确定的第一运行资源可以为目标应用提供合适有效的运行支持。

在一些实施例中,图3A为本申请实施例提供的一种确定进程的关联关系表方法的流程示意图,如图3A所示,包括以下步骤:

步骤S310、获取进程列表,其中,所述进程列表中包括正在运行的所有进程;

这里,进程列表中包括所有处于运行状态下的进程。

步骤S320、基于所述进程列表中每一进程的第一标识,确定进程之间的父子关系;

这里,第一标识可以是进程ID(ProcessID,PID),是电子设备操作系统的内核用于唯一标识进程的一个数值。这一数值可以作为许多函数调用的参数。

在实施过程中,父进程可以复制该父进程的地址空间创建一个新的(子)进程结构。每个新进程分配一个唯一的进程ID。PID和父进程ID(PPID)是子进程环境的元素。所以,可以基于进程ID确定进程之间的父子关系。

在一些实施例中,可以通过设置黑名单,排除一些系统进程,如Explore,Idle,System等。其中,黑名单可以自定义,举例来说,可以将微软签名的系统进程定义为黑名单,因为大量的进程都是从系统中几个进程派生,如果加入如Explore等进程,在利用生成的关联关系表进行深度搜索的时候可能增大范围,导致数据错误。

步骤S330、基于所述进程之间的父子关系确定所述进程的关联关系表。

这里,该关联关系表可以是无向图的形式。即,基于进程之间的父子关系生成无向图,该无向图以搜索矩阵的形式存在,矩阵的横纵方式都是进程ID,约定如果两个进程有关系,则两个进程的焦点标定为数字1,无关联则标定为数字0。

本申请实施例中,首先获取进程列表,然后基于所述进程列表中每一进程的第一标识,确定进程之间的父子关系;最后基于所述进程之间的父子关系确定所述进程的关联关系表。这样,可以利用进程列表得到进程的关联关系表。

在一些实施中,以上确定进程的关联关系表方法还包括以下步骤:

步骤S340、获取所述进程的关联关系表中每一进程的第二标识,其中,所述第二标识中至少包括与进程通信关联的标识;

这里,第二标识可以是进程的句柄。在实施过程中,可以先通过在驱动获取句柄表,在利用句柄表确定进程对应的句柄。句柄有很多种,进程的句柄可以是进程间通讯所用的句柄,如Namedpipe、ShareMemory等等。

步骤S350、基于所述每一进程的第二标识确定进程之间的交集关系;

在实施过程中,可以根据句柄的名称确定进程之间的交集关系,如果两个进程都使用了同一个句柄,那么它们之间是存在通讯关系的。

步骤S360、基于所述进程之间的交集关系更新所述进程的关联关系表。

在实施过程中,可以对多个进程之间对句柄表求交集。如果交集存在,则更新关联关系表。

图3B为本申请实施例提供的一种句柄表的示意图,如图3B所示,该示意图包括进程ID1和进程ID2,其中,

进程ID1对应类型1和类型2,类型1和类型2又分别对应各自的句柄;

进程ID2对应类型1,类型1对应句柄。

在实施过程中,可以根据进程列表获取每个进程ID的句柄表,过滤出跟进程通讯相关的句柄,即确定句柄的类型,类型指的是进程间通讯的句柄类型,比如Namedpipe类型,Sharememory类型等。

在一些实施例中,句柄的类型包括命名管道类型,以File形式存在,可以根据特殊字段查找该类型的句柄。

在一些实施例中,句柄的类型包括共享内存类型。共享内存,以Section的形式存在。在实施过程中,可以利用共享内存句柄确定进程之间共享内存的关联关系。

在一些实施例中,句柄的类型包括信号量类型。信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务之间同步或临界资源的互斥访问,常用于协助一组相互竞争的任务来访问临界资源。使用多任务系统的操作系统中的资源的排他控制中,常常使用信号量。在使用信号量的资源的排他控制中,在使用资源之前,任务首先利用信号量生成命令来生成信号量。在生成信号量时,将信号量结构体的指针、信号量结构体阵列的索引或操作系统提供的用于信号量操作的句柄,即信号量句柄。在实施过程中,可以利用信号量句柄确定进程之间存在通信关系。

在实施过程中,可以将进程ID对应以上类型的句柄保存在如图3B所示的结构中,形成句柄汇总表。

本申请实施例中,首先基于所述每一进程的第二标识确定进程之间的交集关系;然后基于所述每一进程的第二标识确定进程之间的交集关系;最后基于所述进程之间的交集关系更新所述进程的关联关系表。这样,可以利用关联关系表中每一进程的第二标识更新该关联关系表。得到的关联关系表能够更好的体现进程之间的关联关系。

在一些实施中,以上确定进程的关联关系表方法还包括以下步骤:

步骤S370、获取所述进程列表中每一进程的应用路径;

在实施过程中,可以根据当前进程列表获取每一进程的应用程序路径。

步骤S380、基于所述每一进程的应用程序路径确定路径相同信息,其中,所述路径相同信息用于表征两个进程的应用程序相同;

在实施过程中,可以确定每一进程的应用程序路径是否在相同文件夹或者相同路径的子文件夹下。由于路径相同信息可以表征两个进程的应用程序相同,可以将应用程序路径位于相同文件夹或者相同路径的子文件夹下的进程对应确定关联关系。

步骤S390、基于所述路径相同信息更新所述进程的关联关系表。

本申请实施例中,首先获取所述进程列表中每一进程的应用路径;然后基于所述每一进程的应用程序路径确定路径相同信息;最后基于所述路径相同信息更新所述进程的关联关系表。这样,可以综合进程的应用路径优化关联信息表。得到的关联关系表能够更好的体现进程之间的关联关系。

图4A为本申请实施例提供的一种更新无向图搜索矩阵方法的流程示意图,如图4A所示,该方法包括以下步骤:

步骤S410、获取进程列表;

在实施过程中,可以获取进程列表并根据进程列表生成无向图。

步骤S420、生成搜索矩阵;

在实施过程中,基于步骤S420得到的无向图以搜索矩阵的形式存在,矩阵的横纵方式都是进程ID,约定如果两个进程有关系,则两个进程的焦点标定为数字1,无关联则标定为数字0。

步骤S430、获取进程的父子关系;

在实施过程中,可以遍历进程列表,根据进程ID获取该进程的父进程,子进程,这个过程中根据黑名单排除一些系统进程,如Explore,Idle,System等。获取父子进程之后,将有关系的两个进程ID写入无向图的搜索矩阵中。

步骤S440、获取进程的关系路径;

在实施过程中,可以根据当前进程列表获取每个进程的应用程序路径,确定其中某些进程是否在相同文件夹或者相同路径的子文件夹下。

步骤S440、获取进程句柄表;

在实施过程中,可以根据进程列表获取每个进程的句柄表,过滤出跟进程通讯相关的句柄,比如命名管道,信号量,共享内存等。并将这些数据保存在如图3B所示的句柄汇总表。

步骤S450、句柄表求交集;

在实施过程中,句柄汇总表中的每个进程ID和其它进程ID进行求交集的操作,如果存在交集,将这两个进程ID加入到无向图的搜索矩阵中。其中,可以根据句柄的名称求交集,即确定两个进程都使用了同一个句柄的情况下,可以确定两个进程之间是存在通讯关系的。

步骤S460、更新搜索矩阵;

这里,可以基于以下之一的步骤更新搜索矩阵:步骤S430、步骤S440、步骤S450和步骤S460。

在实施过程中,对更新搜索矩阵并列的三个方法不做先后顺序的限定,且可以任意组合其中之一、之二或全部的方法实现更新搜索矩阵。

步骤S470、深度优先搜索获取进程血缘关系。

在实施过程中,当需要查询某个进程相关进程的时候,可以在无向图中对于该进程ID进行深度优先搜索,就可获得所有相关的进程ID。

图4B为本申请实施例提供的一种进程血缘关系的无向图,如图4B所示,该无向图中不同花纹的圆圈表示不同血缘的进程,实线形式的连接线表示进程的父子关系,虚线形式的连接线表示的是进程间的句柄关系。

本申请实施例中,首先遍历进程列表,查找所有进程的父子关系,插入到无向图中。然后遍历进程的句柄表,查找需要的句柄,多个进程之间对句柄表求交集。如果交集存在,则完善先前的无向图。查找进程血缘的时候,只要在无向图中对指定进程ID进行深度优先搜索即可。

基于前述的实施例,本申请实施例提供一种进程调度装置,该装置包括所包括的各模块,各模块包括各子模块,可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(Central Processing Unit,CPU)、微处理器(Microprocessor Unit,MPU)、数字信号处理器(Digital Signal Process,DSP)或现场可编程门阵列(Field Programmable Gate Array,FPGA)等。

图5为本申请实施例提供的进程调度装置的组成结构示意图,如图5所示,所述装置500包括:

第一确定模块510,用于确定目标应用;

第一获取模块520,用于基于进程的关联关系表,获取与目标应用具有第一关联关系的第一进程组,以及与所述目标应用具有第二关联关系的第二进程组,所述第一关联关系所表征的关联性大于第二关联关系所表征的关联性;其中,所述第一进程组包括处于运行状态的至少一个第一进程,所述第二进程组包括处于至少一个第二进程;

第一分配模块530,用于为第一进程组分配第一运行资源,为第二进程组分配第二运行资源,所述第一运行资源的配置高于所述第二运行资源。

在一些实施例中,所述装置还包括第二获取模块和第二分配模块,其中,所述第二获取模块,用于基于所述进程的关联关系表,获取与所述目标应用具有第三关联关系的第三进程组,所述第三关联关系所述表征的关联性小于所述第二关联关系所表征的关联性;所述第二分配模块,用于为所述第三进程组分配第三运行资源,所述第三运行资源的配置低于所述第二运行资源。

在一些实施例中,所述第一确定模块510包括以下至少之一的子模块:第一确定子模块、第二确定子模块和第三确定子模块,其中,所述第一确定子模块用于获取当前的应用场景,基于当前的应用场景确定至少一个目标应用;或者,所述第二确定子模块,用于在确定当前使用应用切换的情况下,将当前响应操作的至少一个应用确定为所述目标应用;或者,所述第三确定子模块,用于基于网络监控的触发指令,确定目标应用。

在一些实施例中,所述第一获取模块520包括第一获取子模块和第一确定子模块,其中,所述第一获取子模块,用于获取电子设备的电源模式,其中,所述电源模式包括第一电源模式和第二电源模式,所述第一电源模式的电源性能优于所述第二电源模式的电源性能;所述第一确定子模块,用于根据电子设备的电源模式,确定与目标应用具有第一关联关系的第一进程组;其中,所述第一电源模式下的第一进程组的数量大于所述第二电源模式下的第一进程组的数量,和/或,根据电子设备的电源模式,确定所述电源模式下的第一进程组的资源;其中,所述第一电源模式下的第一进程组的资源大于所述第二电源模式下的第一进程组的资源。

在一些实施例中,在所述第一电池模式下,所述第一进程组以及所述第二进程组的运行资源配置,要高于所述第二电池模式下所述第一进程组以及所述第二进程组的运行资源配置。

在一些实施例中,所述第一分配模块530,还用于基于所述目标应用的属性,确定第一运行资源,其中,所述第一运行资源包括以下至少之一:处理器设置、存储器资源、网络带宽、屏幕刷新次数,外设响应度、读写速率。

在一些实施例中,所述装置还包括第三获取模块、第二确定模块和第三确定模块,其中,所述第三获取模块,用于获取进程列表,其中,所述进程列表中包括正在运行的所有进程;所述第二确定模块,用于基于所述进程列表中每一进程的第一标识,确定进程之间的父子关系;所述第三确定模块,用于基于所述进程之间的父子关系确定所述进程的关联关系表。

在一些实施例中,所述装置还包括第三获取模块、第三确定模块和第一更新模块,其中,所述第三获取模块,用于获取所述进程的关联关系表中每一进程的第二标识,其中,所述第二标识中至少包括与进程通信关联的标识;所述第三确定模块,用于基于所述每一进程的第二标识确定进程之间的交集关系;所述第一更新模块,用于基于所述进程之间的交集关系更新所述进程的关联关系表。

在一些实施例中,所述装置还包括第四获取模块、第四确定模块和第二更新模块,其中,所述第四获取模块,用于获取所述进程列表中每一进程的应用路径;所述第四确定模块,用于基于所述每一进程的应用程序路径确定路径相同信息,其中,所述路径相同信息用于表征两个进程的应用程序相同;所述第二更新模块,用于基于所述路径相同信息更新所述进程的关联关系表。

以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是手机、平板电脑、笔记本电脑、台式计算机等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。

对应地,本申请实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中提供的进程调度方法中的步骤。

对应地,本申请实施例提供一种电子设备,图6为本申请实施例提供的电子设备的一种硬件实体示意图,如图6所示,该设备600的硬件实体包括:包括存储器601和处理器602,所述存储器601存储有可在处理器602上运行的计算机程序,所述处理器602执行所述程序时实现上述实施例中提供的进程调度方法中的步骤。

存储器601配置为存储由处理器602可执行的指令和应用,还可以缓存待处理器602以及电子设备600中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。

这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是手机、平板电脑、笔记本电脑、台式计算机等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。

本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。

本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。

本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。

以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 一种进程调度方法和装置
  • 一种基于多核处理的进程调度方法
  • 一种信号控制装置及方法、显示控制装置及方法、显示装置
  • 进程调度装置、进程调度方法、程序以及记录媒体
  • 一种进程调度优化方法、进程执行方法及相关装置
技术分类

06120116489862