一种资源调度方法及相关设备与流程

文档序号:34037297发布日期:2023-05-05 13:26阅读:66来源:国知局
一种资源调度方法及相关设备与流程

本技术涉及终端,尤其涉及一种资源调度方法及相关设备。


背景技术:

1、安卓(android)系统是当前主流的操作系统之一。android系统中的多个应用程序在前台运行时,常常出现多任务并发和高负载的情况,导致资源调度器工作繁忙,有一些任务无法及时响应,尤其是前台紧急任务无法及时获得所需的中央处理器(centralprocessing unit,cpu)资源,从而出现卡顿等情况,严重影响用户体验。

2、因此,如何在多任务并发的情况下合理进行资源调度是目前亟待解决的问题。


技术实现思路

1、本技术提供了一种资源调度方法及相关设备。根据该资源调度方法,运行在电子设备中的进程l1可以向进程l2请求binder,在进程l2对应的binder线程池没有空闲的binder的情况下,电子设备可以提升该binder线程池中的binder线程的优先级,还可以提升cpu频率。在这种情况下,电子设备可以将cpu资源优先调度给紧急的任务,从而避免了卡顿等问题的出现。

2、第一方面,本技术提供了一种资源调度方法。该方法可以应用于运行有第一进程和第二进程的电子设备。第二进程可以包括若干binder线程。该方法可以包括:响应于第一进程的binder请求,电子设备确定第一binder线程池中是否存在空闲的binder线程;在第一binder线程池中不存在空闲的binder线程的情况下,电子设备从第一binder线程池中选择第一binder线程,并提升第一binder线程的优先级和/或提升cpu频率。其中,binder请求用于向第二进程请求binder线程。第一binder线程池为第二进程对应的binder线程池。

3、在本技术提供的方案中,第一进程可以向第二进程发送binder请求。电子设备可以检测到该binder请求,响应于该binder请求,电子设备可以确定第二进程对应的binder线程池(即第一binder线程池)中是否存在空闲的binder线程,并在第二进程对应的binder线程池中不存在空闲的binder线程的情况下,从该binder线程池中选择一个binder线程,并提高该binder线程的优先级和/或提升cpu频率。通过这种方式,电子设备可以加快当前任务的执行以使得第一进程能尽快得到空闲的binder来与第二进程进行通信,即更快地将cpu资源调度给第一进程对应的任务。

4、在本技术的一些实施例中,第一进程可以为进程l1。第二进程可以为l2。第一binder线程池可以为binder线程池-1。

5、在本技术的一些实施例中,第一binder线程可以为binder-1。

6、在本技术的一些实施例中,第一binder线程可以为binder-3。

7、在本技术的一些实施例中,第一binder线程可以为binder-5。

8、在本技术的一些实施例中,第一binder线程可以为binder-7。

9、结合第一方面,在一种可能的实现方式中,电子设备从第一binder线程池中选择第一binder线程,具体可以包括:电子设备从第一binder线程池中的当前对应的cpu为大核cpu的binder线程中选择第一binder线程。

10、在本技术提供的方案中,电子设备可以从第一binder线程池中的当前对应的cpu为大核cpu的binder线程中选择第一binder线程,这样,第一binder线程的优先级提高和/或cpu频率提高后,第一binder线程能尽快处理完当前任务,从而空闲下来。

11、在本技术的一些实施例中,电子设备执行步骤s302时,可以首先从第一binder线程池中的当前对应的cpu为大核cpu的binder线程中选择第一binder线程。

12、在本技术的一些实施例中,电子设备执行步骤s402时,可以首先从第一binder线程池中的当前对应的cpu为大核cpu的binder线程中选择第一binder线程。

13、结合第一方面,在一种可能的实现方式中,第一binder线程为第一binder线程池中的任意一个binder线程。

14、在本技术提供的方案中,电子设备可以从第一binder线程池中任意选择一个binder线程作为第一binder线程。

15、结合第一方面,在一种可能的实现方式中,电子设备从第一binder线程池中选择第一binder线程,具体可以包括:在第一binder线程池中存在处于等待状态的binder线程的情况下,电子设备可以从第一binder线程池中的处于等待状态的binder线程中选择第一binder线程;在第一binder线程池中不存在处于等待状态的binder线程的情况下,电子设备可以从第一binder线程池中的处于运行状态的binder线程中选择第一binder线程。

16、在本技术提供的方案中,电子设备可以优先选择处于等待状态的binder线程作为第一binder线程,而在第一binder线程池中不存在处于等待状态的binder线程的情况下,才选择处于运行状态的binder线程作为第一binder线程。通过这种方式,电子设备可以在尽可能减少对正在执行的任务的影响的情况下,尽快地执行进程l1对应的任务。

17、在本技术的一些实施例中,如步骤s203,在第一binder线程池中存在处于等待状态的binder线程的情况下,第一binder线程可以为binder-1。

18、在本技术的一些实施例中,如步骤s206,在第一binder线程池中不存在处于等待状态的binder线程的情况下,第一binder线程可以为binder-3。

19、需要说明的是,在本技术提供的方案中,电子设备还可以优先选择处于运行状态的binder线程作为第一binder线程,而在第一binder线程池中不存在处于运行状态的binder线程的情况下,才选择处于等待状态的binder线程作为第一binder线程。

20、结合第一方面,在一种可能的实现方式中,电子设备提升第一binder线程的优先级和/或提升cpu频率,具体可以包括:电子设备提升第一binder线程的优先级和/或第一binder线程对应的任务的uclamp最小值。其中,随着第一binder线程对应的任务的uclamp最小值的提升,第一binder线程运行时的cpu频率也相应提升。

21、在本技术提供的方案中,电子设备可以通过提升第一binder线程对应的任务的uclamp最小值来提升cpu频率。

22、在一种实现方式中,电子设备可以通过换核的方式来提升cpu频率。比如,电子设备可以将第一binder线程对应的cpu由小核cpu换成大核cpu。可理解,关于大核cpu和小核cpu的相关描述可以参考后文和相关技术文档,在此不展开说明。

23、结合第一方面,在一种可能的实现方式中,电子设备提升第一binder线程的优先级和/或第一binder线程对应的任务的uclamp最小值,具体可以包括:在第一binder线程为处于等待状态的binder线程的情况下,电子设备可以提升第一binder线程的优先级;在第一binder线程为处于运行状态的binder线程的情况下,电子设备可以提升第一binder线程对应的任务的uclamp最小值。

24、在本技术提供的方案中,第一binder线程为处于等待状态的binder线程的情况下,电子设备可以提升第一binder线程的优先级,从而使得第一binder线程可以尽快分配的cpu资源并得以运行。而在第一binder线程为处于运行状态的binder线程的情况下,电子设备可以提升第一binder线程对应的任务的uclamp最小值,从而可以加快执行第一binder线程对应的当前任务,使得第一binder线程尽快完成当前任务并空闲下来。

25、结合第一方面,在一种可能的实现方式中,该方法还可以包括:在提升第一binder线程的优先级的情况下,若提升第一binder线程的优先级的时间达到第一时间,且第一进程的binder请求未得到响应,电子设备可以再次提升第一binder线程的优先级;在提升第一binder线程对应的任务的uclamp最小值的情况下,若提升第一binder线程对应的任务的uclamp最小值的时间达到第二时间,且第一进程的binder请求未得到响应,电子设备可以再次提升第一binder线程对应的任务的uclamp最小值;在提升第一binder线程的优先级和第一binder线程对应的任务的uclamp最小值的情况下,若提升第一binder线程的优先级的时间达到第一时间和/或提升第一binder线程对应的任务的uclamp最小值达到第二时间,且第一进程的binder请求未得到响应,电子设备可以再次提升第一binder线程的优先级和/或第一binder线程对应的任务的uclamp最小值。

26、在本技术提供的方案中,电子设备可以在不同的情况下,继续提升第一binder线程的优先级和/或第一binder线程对应的任务的uclamp最小值。在第一binder线程处于等待状态的情况下,上述方式可以缩短第一binder线程的等待时间,使其尽快运行并执行其对应的任务。在第一binder线程处于运行状态的情况下,电子设备继续提升第一binder线程的优先级,可以使得第一binder线程的优先级处于较高水平,不会太容易受到其他binder线程的影响,也就意味着,第一binder线程不会太容易被其他binder线程抢占cpu资源。在第一binder线程处于运行状态的情况下,电子设备继续提升第一binder线程对应的任务的uclamp最小值,可以使得第一binder线程加快执行当前任务,从而更快地空闲下来。

27、在本技术的一些实施例中,第一时间可以为时间a。具体可以参考步骤s205,在此不展开说明。

28、在本技术的一些实施例中,第二时间可以为时间b。具体可以参考步骤s208,在此不展开说明。

29、在本技术的一些实施例中,第一时间可以与第二时间相同,并且第一时间和第二时间均为时间c。在这种情况下,在提升第一binder线程的优先级和第一binder线程对应的任务的uclamp最小值的情况下,若提升第一binder线程的优先级的时间达到第一时间,以及提升第一binder线程对应的任务的uclamp最小值达到第二时间,并且第一进程的binder请求未得到响应,则电子设备可以再次提升第一binder线程的优先级和第一binder线程对应的任务的uclamp最小值。这种方式的具体描述可以参考步骤s304,在此不展开说明。

30、需要说明的是,与步骤s304类似,在提升第一binder线程的优先级和第一binder线程对应的任务的uclamp最小值的情况下,若提升第一binder线程的优先级的时间达到第一时间或提升第一binder线程对应的任务的uclamp最小值达到第二时间,且第一进程的binder请求未得到响应,电子设备可以再次提升第一binder线程的优先级和/或第一binder线程对应的任务的uclamp最小值。

31、结合第一方面,在一种可能的实现方式中,该方法还可以包括:在提升第一binder线程的优先级的情况下,若提升第一binder线程的优先级的时间达到第一时间,且第一进程的binder请求未得到响应,电子设备可以从第一binder线程池中选择第二binder线程,并提升第二binder线程的优先级和/或第二binder线程对应的任务的uclamp最小值;在提升第一binder线程对应的任务的uclamp最小值的情况下,若第一binder线程对应的任务的uclamp最小值的时间达到第二时间,且第一进程的binder请求未得到响应,电子设备可以从第一binder线程池中选择第二binder线程,并提升第二binder线程的优先级和/或第二binder线程对应的任务的uclamp最小值;在提升第一binder线程的优先级和第一binder线程对应的任务的uclamp最小值的情况下,若提升第一binder线程的优先级的时间达到第一时间和/或提升第一binder线程对应的任务的uclamp最小值达到第二时间,且第一进程的binder请求未得到响应,电子设备可以从第一binder线程池中选择第二binder线程,并提升第二binder线程的优先级和/或第二binder线程对应的任务的uclamp最小值。其中,第二binder线程为第一binder线程池中的不同于第一binder线程的binder线程。

32、在本技术提供的方案中,若一段时间后第一进程的binder请求没有得到响应,电子设备可以选择第一binder线程池中的其他binder线程,并提升该binder线程的优先级和/或该binder线程对应的任务的uclamp最小值,那么该binder线程可以尽快空闲下来,从而使得第一binder线程池中可以包括空闲的binder线程以供第一进程与第二进程之间的通信。

33、在本技术的一些实施例中,第二线程可以为binder-2。具体描述可以参考步骤s204,在此不展开说明。

34、在本技术的一些实施例中,第二线程可以为binder-4。具体描述可以参考步骤s207,在此不展开说明。

35、在本技术的一些实施例中,第二线程可以为binder-6。具体描述可以参考步骤s303,在此不展开说明。

36、在本技术的一些实施例中,第二线程可以为binder-8。具体描述可以参考步骤s405和步骤s408,在此不展开说明。

37、可理解,在提升第一binder线程的优先级的情况下,若提升第一binder线程的优先级的时间达到第一时间,且第一进程的binder请求未得到响应,电子设备可以从第一binder线程池中选择第二binder线程,并提升第二binder线程的优先级和/或第二binder线程对应的任务的uclamp最小值。示例性的,这一部分可以参考步骤s405,在此不展开说明。

38、可理解,在提升第一binder线程对应的任务的uclamp最小值的情况下,若第一binder线程对应的任务的uclamp最小值的时间达到第二时间,且第一进程的binder请求未得到响应,电子设备可以从第一binder线程池中选择第二binder线程,并提升第二binder线程的优先级和/或第二binder线程对应的任务的uclamp最小值。示例性的,这一部分可以参考步骤s408,在此不展开说明。

39、可理解,在提升第一binder线程的优先级和第一binder线程对应的任务的uclamp最小值的情况下,若提升第一binder线程的优先级的时间达到第一时间和/或提升第一binder线程对应的任务的uclamp最小值达到第二时间,且第一进程的binder请求未得到响应,电子设备从第一binder线程池中选择第二binder线程,并提升第二binder线程的优先级和/或第二binder线程对应的任务的uclamp最小值。

40、根据上述内容,在提升第一binder线程的优先级和第一binder线程对应的任务的uclamp最小值的情况下,若提升第一binder线程的优先级的时间达到第一时间和提升第一binder线程对应的任务的uclamp最小值达到第二时间,且第一进程的binder请求未得到响应,电子设备从第一binder线程池中选择第二binder线程,并提升第二binder线程的优先级和第二binder线程对应的任务的uclamp最小值。这一部分具体可以参考步骤s303,在此不展开说明。在这种情况下,第二binder线程可以为binder-6。

41、需要说明的是,与步骤s303类似,在提升第一binder线程的优先级和第一binder线程对应的任务的uclamp最小值的情况下,若提升第一binder线程的优先级的时间达到第一时间或提升第一binder线程对应的任务的uclamp最小值达到第二时间,且第一进程的binder请求未得到响应,电子设备从第一binder线程池中选择第二binder线程,并提升第二binder线程的优先级和/或第二binder线程对应的任务的uclamp最小值。

42、需要说明的是,电子设备提升第二binder线程的优先级和/或第二binder线程对应的任务的uclamp最小值的具体方式,可以参考对第一binder线程的优先级和/或第一binder线程对应的任务的uclamp最小值的具体提升方式,在此不再赘述。

43、结合第一方面,在一种可能的实现方式中,该方法还可以包括:在电子设备提升第一binder线程的优先级的情况下,若提升第一binder线程的优先级的时间达到第三时间,电子设备可以恢复第一binder线程的优先级,在电子设备提升cpu频率的情况下,若提升第一binder线程所对应的uclamp最小值的时间达到第四时间的情况下,电子设备可以恢复cpu频率。

44、在本技术提供的方案中,电子设备可以将第一binder线程的优先级提升一定时间之后,可以恢复第一binder线程的优先级。电子设备还可以将第一binder线程所对应的任务的uclamp最小值提升一定时间之后,可以恢复第一binder线程所对应的任务的uclamp最小值。通过这种恢复机制,电子设备可以尽可能将cpu资源调度给当前紧急的任务使用。

45、在本技术的一些实施例中,第三时间可以为t1。

46、在本技术的一些实施例中,第四时间可以为t2。

47、结合第一方面,在一种可能的实现方式中,电子设备恢复cpu频率,具体可以包括:电子设备可以恢复第一binder线程对应的任务的uclamp最小值。

48、需要说明的是,本技术中所提及的恢复cpu频率可以指恢复第一binder线程对应的任务的uclamp最小值。

49、结合第一方面,在一种可能的实现方式中,电子设备提升第一binder线程的优先级和/或提升cpu频率之后,该方法还可以包括:在第一进程的binder请求得到响应的情况下,电子设备可以恢复第一binder线程的优先级和/或恢复cpu频率。

50、在本技术提供的方案中,电子设备可以在第一进程的binder请求得到响应的情况下,恢复第一binder线程的优先级和/或恢复cpu频率。通过这种恢复机制,电子设备可以尽可能将cpu资源调度给当前紧急的任务使用。

51、结合第一方面,在一种可能的实现方式中,在第一进程的binder请求得到响应的情况下,电子设备恢复第一binder线程的优先级和/或恢复cpu频率,具体可以包括:第一进程的binder请求得到响应时,电子设备可以恢复第一binder线程的优先级和/或恢复cpu频率。

52、在本技术提供的方案中,一旦第一进程的binder请求得到响应,电子设备可以立即恢复第一binder线程的优先级和/或恢复cpu频率。

53、结合第一方面,在一种可能的实现方式中,在第一进程的binder请求得到响应的情况下,电子设备恢复第一binder线程的优先级和/或恢复cpu频率,具体可以包括:第一进程的binder请求得到响应,且第一进程与第二进程完成通信后,电子设备可以恢复第一binder线程的优先级和/或恢复cpu频率。

54、在本技术的一些实施例中,进程l1通过binder线程完成传输数据的任务后,电子设备可以恢复第一binder线程的优先级和/或恢复cpu频率。

55、在本技术的一些实施例中,第一进程的binder请求得到响应,且第一进程与第二进程完成通信的时间达到第六时间,电子设备可以恢复第一binder线程的优先级和/或恢复cpu频率。例如,第六时间可以为t5。再例如,第六时间还可以为t6。

56、结合第一方面,在一种可能的实现方式中,在第一进程的binder请求得到响应的情况下,电子设备恢复第一binder线程的优先级和/或恢复cpu频率,具体可以包括:第一进程的binder请求得到响应的时间达到第五时间后,电子设备恢复第一binder线程的优先级和/或恢复cpu频率。

57、在本技术提供的一些实施例中,第五时间可以为t3。在本技术提供的又一些实施例中,第五时间可以为t4。具体可以参考后文,在此不展开说明。

58、值得注意的是,本技术所提及的第一binder线程的选择方式、binder线程的优先级和其对应的任务的uclamp最小值的具体提升方式,以及优先级恢复机制和uclamp最小值恢复机制可以组合实现,本技术对此不作限制。

59、结合第一方面,在一种可能的实现方式中,第一进程为桌面进程,第一进程包括ui线程和渲染线程。第二进程为surfaceflinger进程。第一进程的binder请求为渲染线程向surfaceflinger进程发送的binder请求,并且,第一进程的binder请求用于请求binder以向第二进程传递绘帧数据。

60、第二方面,本技术提供了一种电子设备,该电子设备包括一个或多个处理器和一个或多个存储器;其中,一个或多个存储器与一个或多个处理器耦合,一个或多个存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,使得电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。

61、第三方面,本技术实施例提供了一种芯片系统,该芯片系统应用于电子设备,该芯片系统包括一个或多个处理器,该处理器用于调用计算机指令以使得该电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。

62、第四方面,本技术提供一种计算机可读存储介质,包括指令,当上述指令在电子设备上运行时,使得上述电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。

63、第五方面,本技术提供一种包含指令的计算机程序产品,当上述计算机程序产品在电子设备上运行时,使得上述电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。

64、可以理解地,上述第二方面提供的电子设备、第三方面提供的芯片系统、第四方面提供的计算机存储介质、第五方面提供的计算机程序产品均用于执行本技术所提供的方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。

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