资源分配方法和电子设备与流程

未命名 08-15 阅读:110 评论:0


1.本技术涉及终端领域,尤其涉及资源分配方法和电子设备。


背景技术:

2.一个电子设备通常可以同时运行多个应用程序(简称为应用)。例如,前台运行一个应用,后台运行至少一个应用。电子设备中用于运行应用的资源(例如处理器、内存、网络等)是有限的。这些资源的分配对于应用的性能和体验有着至关重要的影响。由此可见,应用能分配到的资源也是有限的,一个应用在分配到资源之后,电子设备也需要合理地利用这些资源运行该应用,才能达到最佳的使用效果。在一些情况中,应用在执行时会创建至少一个进程,一个进程中可以包括多个线程,线程是进程中的执行单元。电子设备可以先按照进程为单位为应用中的进程分配资源。一个进程所能分配到的资源是有限的,当资源被分配给应用的进程之后,该进程中的不同线程共同竞争该资源以完成运行。
3.由此可见,电子设备如何为不同线程分配资源决定了线程是否可以被更好运行,进一步关系到该线程所在应用运行时的性能和体验。
4.如何合理的进行资源分配以使得各应用合理运行是值得讨论的。


技术实现要素:

5.本技术提供了一种资源分配方法和电子设备,控制binder线程在中核或者大核上运行,可以使得调用该binder线程的关键线程处于休眠状态的时间较短,进而使得该关键线程可以尽快完成业务,提高应用的运行性能。
6.第一方面,本技术提供了一种资源分配方法,电子设备包括中央处理器cpu,该cpu包括小核以及其他核,该其他核的计算能力强于该小核的计算能力;该方法包括:该电子设备基于第一线程调用第二线程执行第一操作;该第一线程以及该第二线程属于不同的进程;在确定该第一线程属于前台应用的情况下,该电子设备调整该第二线程的cpu最小限制大于或者等于预设限制阈值;该前台应用为包括的界面显示在该电子设备的显示屏中的应用;基于该第二线程的cpu最小限制,该电子设备在该其他核上运行该第二线程;在该第一线程确定该第二线程完成该第一操作的情况下,该电子设备基于该第一线程执行第二操作。
7.上述实施例中,第一线程可以为实施例中涉及的关键线程,第二线程可以为实施例中涉及的binder线程。第一操作可以看作为实施例中关键线程调用binder线程执行的操作,例如用户触摸一个控件之后,响应该触摸时涉及的操作。电子设备的cpu中包括小核、中核或者大核,其中其他核就可以是除小核以外的核心(包括中核或者大核中的一个或者多个),其他核的计算能力强于小核的计算能力。核心(包括小核和其他核)的计算能力决定了核心运行线程时的运行速度,计算能力越强,则运行速度越快。电子设备调整第二线程的cpu最小限制使得其大于或者等于预设限制阈值,该预设限制阈值可以是使得一个线程运行在其他核上的最小值。在第二线程的cpu最小限制大于或者等于该预设限制阈值时,该第
二线程可以运行在其他核上,运行速度较快,可以较快的向第一线程返回运行结果,进一步使得第一线程可以较快的执行其他操作,以使得前台应用的性能较好。
8.结合第一方面,在一些实施例中,该电子设备在该其他核上运行该第二线程之前,该方法还包括:该电子设备确定该第一线程的优先级大于预设优先级;该优先级用于确定该电子设备为线程分配资源的先后顺序,优先级越高则线程从被唤醒至分配到资源之间的等待时间越短。
9.上述实施例中,第一线程的优先级为预设优先级可以使得该第一线程在唤醒之后,尽快分配到运行时需要的资源,控制第一线程为优先级较高的线程,可以进一步控制第二线程的类型,不至于将全部被调用的线程都作为第二线程去进行cpu最小限制的调整,防止cpu的其他核过于“繁忙”,但是小核却比较“空闲”。
10.结合第一方面,在一些实施例中,该电子设备确定该第一线程的优先级大于预设优先级之后,该方法还包括:该电子设备将该第二线程的优先级设置为与该第一线程相同的优先级。
11.上述实施例中,将第二线程的优先级设置得与第一线程相同,可以使得两个线程分配到资源运行的速度同步。
12.结合第一方面,在一些实施例中,该电子设备调整该第二线程的cpu最小限制大于或者等于预设限制阈值,具体包括:在确定该第一线程的cpu最小限制大于该预设限制阈值与该第二线程的cpu最小限制时,该电子设备将该第二线程的cpu最小限制调整为该第一线程的cpu最小限制。
13.上述实施例中,电子设备调整第二线程的cpu最小限制使得其等于第一线程的cpu最小限制。可以使得该第一线程以及第二线程可以运行在相同的核上,运行速度较快且同步,可以较快的向第一线程返回运行结果,进一步使得第一线程可以较快的执行其他操作,以使得前台应用的性能较好。
14.结合第一方面,在一些实施例中,该电子设备调整该第二线程的cpu最小限制大于或者等于预设限制阈值,具体包括:在确定该第二线程的cpu最小限制小于该预设限制阈值的情况下,该电子设备将该第二线程的cpu最小限制调整为该预设限制阈值。
15.上述实施例中,电子设备调整第二线程的cpu最小限制使得其等于预设限制阈值。在第二线程的cpu最小限制等于该预设限制阈值时,该第二线程可以运行在其他核上,运行速度较快,可以较快的向第一线程返回运行结果,进一步使得第一线程可以较快的执行其他操作,以使得前台应用的性能较好。
16.结合第一方面,在一些实施例中,该电子设备基于第一线程调用第二线程执行第一操作之前,该方法还包括:该电子设备检测到针对第一界面中第一控件的操作;将该针对第一控件的操作识别为该第一应用对应的用户界面ui事件;该电子设备基于该第一线程响应该ui事件。
17.上述实施例中,第一界面可以为实施例中涉及的界面1,第二界面可以为实施例中涉及的界面2。在应用转场的场景中,可以将前台应用响应ui事件时的线程(例如主线程)作为第一线程。这样,可以加快响应ui事件的速度,使得前台应用的性能较好。
18.结合第一方面,在一些实施例中,该电子设备基于该第一线程调用该第二线程执行第一操作,具体包括:该电子设备基于该第一线程调用该第二线程开启该第二界面,以
及,关闭该第一界面。
19.上述实施例中,第一操作的一种情况可以为开启第二界面,以及关闭第一界面。
20.结合第一方面,在一些实施例中,该电子设备基于第一线程执行第二操作,具体包括:该电子设备基于该第一线程在屏幕中绘制该第二界面。
21.结合第一方面,在一些实施例中,该第一线程为该前台应用中的ui线程,该第二线程为系统服务中的至少一个binder线程。
22.结合第一方面,在一些实施例中,该电子设备基于该第一线程调用该第二线程开启该第二界面,以及,关闭该第一界面,具体包括:该电子设备基于ui线程调用第一binder线程开启该第二界面,以及,该电子设备基于ui线程调用第二binder线程开关闭该第一界面。
23.结合第一方面,在一些实施例中,该电子设备基于ui线程调用第一binder线程开启该第二界面,以及,该电子设备基于ui线程调用第二binder线程开关闭该第一界面,具体包括:该电子设备基于该ui线程向该第一binder线程发送第一通信请求,该第一通信请求用于唤醒该第一binder线程并请求该第一binder线程开启该第二界面;在确定该ui线程发送该第一通信请求之后,该电子设备设置该第一binder线程进入休眠状态;在确定该ui线程接收到第一通信结束请求之后,该电子设备基于ui线程向该第二binder线程发送第二通信请求,该第二通信请求用于唤醒该第二binder线程并请求该第二binder线程关闭该第一界面;在确定该ui线程发送该第二通信请求之后,该电子设备设置该第一binder线程再次进入休眠状态;该电子设备基于该ui线程接收到第二通信结束请求。
24.上述实施例中,binder线程的cpu最小限制被调整至大于或者等于预设限制阈值之后,可以运行在其他核上运行速度较快,可以较快为ui线程返回执行结果,使得ui线程进行完成对ui事件的响应,使得前台应用的性能较好。
25.第二方面,本技术实施例提供了一种电子设备,该电子设备包括:一个或多个处理器和存储器;该存储器与该一个或多个处理器耦合,该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令,该一个或多个处理器调用该计算机指令以使得该电子设备执行如第一方面中实施的方法。
26.上述实施例中,电子设备调整第二线程的cpu最小限制使得其大于或者等于预设限制阈值,该预设限制阈值可以是使得一个线程运行在其他核上的最小值。在第二线程的cpu最小限制大于或者等于该预设限制阈值时,该第二线程可以运行在其他核上,运行速度较快,可以较快的向第一线程返回运行结果,进一步使得第一线程可以较快的执行其他操作,以使得前台应用的性能较好。
27.第三方面,本技术实施例提供了一种计算机可读存储介质,包括指令,当该指令在电子设备上运行时,使得该电子设备执行如第一方面中实施的方法。
28.上述实施例中,电子设备调整第二线程的cpu最小限制使得其大于或者等于预设限制阈值,该预设限制阈值可以是使得一个线程运行在其他核上的最小值。在第二线程的cpu最小限制大于或者等于该预设限制阈值时,该第二线程可以运行在其他核上,运行速度较快,可以较快的向第一线程返回运行结果,进一步使得第一线程可以较快的执行其他操作,以使得前台应用的性能较好。
29.第四方面,本技术实施例提供了一种芯片系统,该芯片系统应用于电子设备,该芯
片系统包括一个或多个处理器,该处理器用于调用计算机指令以使得该电子设备执行如第一方面实施的方法。
30.上述实施例中,电子设备调整第二线程的cpu最小限制使得其大于或者等于预设限制阈值,该预设限制阈值可以是使得一个线程运行在其他核上的最小值。在第二线程的cpu最小限制大于或者等于该预设限制阈值时,该第二线程可以运行在其他核上,运行速度较快,可以较快的向第一线程返回运行结果,进一步使得第一线程可以较快的执行其他操作,以使得前台应用的性能较好。
31.第五方面,本技术实施例提供了一种包含指令的计算机程序产品,当该计算机程序产品在电子设备上运行时,使得该电子设备执行如第一方面实施的方法。
32.上述实施例中,电子设备调整第二线程的cpu最小限制使得其大于或者等于预设限制阈值,该预设限制阈值可以是使得一个线程运行在其他核上的最小值。在第二线程的cpu最小限制大于或者等于该预设限制阈值时,该第二线程可以运行在其他核上,运行速度较快,可以较快的向第一线程返回运行结果,进一步使得第一线程可以较快的执行其他操作,以使得前台应用的性能较好。
33.可以理解地,第二方面提供的电子设备、第三方面提供的计算机存储介质、第四方面提供的芯片系统和第五方面提供的计算机程序产品均用于执行本技术实施例所提供的方法。因此,其所能达到其他有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
34.图1示出了一种方案中为binder线程分配资源时涉及的示例图;图2示出了binder线程的摆核情况相同时,调整binder线程的优先级前后binder线程与关键线程的状态对比示意图;图3示出了binder线程的摆核情况不相同时,调整binder线程的优先级前后binder线程与关键线程的状态对比示意图;图4示出了电子设备调整binder线程的摆核情况时涉及的一个示例性流程图;图5示出了调整binder线程的优先级时,binder线程在不同摆核情况下binder线程与关键线程的状态对比示意图;图6示出了对运行性能要求较低的场景示意图;图7示出了对运行性能要求较高的场景示意图;图8示出了电子设备进行资源分配时涉及的示例性软件结构框图;图9中示出了电子设备为线程进行资源分配以响应ui事件时涉及的示例性交互图;图10中示出了电子设备为线程进行资源分配以响应ui事件时涉及的示例性流程图;图11是本技术实施例提供的电子设备的结构示意图。
具体实施方式
35.本技术以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本技术的限制。如在本技术的说明书和所附权利要求书中所使用的那样,单数表达
形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括复数表达形式,除非其上下文中明确地有相反指示。还应当理解,本技术中使用的术语“和/或”是指并包含一个或多个所列出项目的任何或所有可能组合。
36.以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本技术实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
37.在一种方案中,电子设备在为应用分配资源时,可以为前台应用分配更多的资源以使得前台应用中各线程正常运行,进而提升前台应用的性能。例如,在分配资源时,电子设备识别应用中的关键线程。然后提升该关键线程分配资源时涉及的优先级,将关键线程的优先级提升至大于预设优先级。这样,相比于优先级未提高的情况,电子设备可以基于该关键线程的优先级(提高之后的)更快的为关键线程分配运行时所需的资源以使得该关键线程可以更快运行。其中,前台应用是指时刻1,其包括的用户界面(可以简称为界面)正在电子设备的显示屏上进行显示的应用。在时刻1,前台应用中显示的界面可以接收用户的操作,该前台应用可以响应该操作。
38.在一些可能的情况下,关键线程可以为应用中与用户界面显示相关的线程,例如可以包括用户界面(user interface ,ui)线程或者渲染(render)线程等。该ui线程还可以被称为主线程。
39.但是,电子设备在运行关键线程(属于进程1)以实现业务1时,存在垮进程调用其他线程(属于进程2)完成子业务1(属于业务1的)的情况。在关键线程得到该其他线程返回的完成子业务1的结果之后,电子设备才可以继续运行关键线程以完成业务1中的其他子业务,进而完成业务1。在该其他线程分配资源的优先级较低时,该其他线程需要等待较长时间才能获得运行时涉及的资源进而完成子业务1。则关键线程也需要等待较长时间才可以接收到完成子业务1的结果,进而影响关键线程的运行。
40.其中,在一些可能的情况下,电子设备通过关键线程调用该其他线程完成业务1涉及两个进程间不同线程的通信。在一些可能的情况下,一个进程中线程与其他进程中的线程通信时通常采用binder通信机制。前述涉及的电子设备通过关键线程(属于进程1)调用其他线程(属于进程2)完成子业务1(属于业务1的)也可以理解为关键线程通过binder通信机制唤醒该其他线程以使得该其他线程运行。
41.在线程间通信时,binder通信机制可实现不同线程间的通信。因此,我们可以将binder这个术语理解为实现线程间通信的“绑定者”或“粘合剂”,它将不同线程之间的对象“黏”在一起,实现了线程之间的相互调用和交互。
42.后文中,可以称该其他线程为关键线程对应(或者调用的)的binder线程,简称为binder线程。
43.这里应该理解的是,通过一个线程(线程1)调用另一个线程(线程2)包括:通过线程1唤醒线程2,然后基于线程2完成线程1的子业务。例如,电子设备在运行关键线程以完成业务1的情况下,该业务1可以被划分为不同的子业务,其中一些子业务(例如子业务1)可以通过唤醒binder线程来完成。例如,在通过关键线程唤醒binder线程之后,关键线程接收到binder线程返回的结果之前,关键线程处于休眠(sleep)状态。一个线程处于休眠状态是指
该线程被创建之后,暂停运行,需要被唤醒之后才可以继续运行的状态。
44.其中,电子设备运行一个线程以完成一个业务,可以理解为该业务为线程对应的业务,电子设备运行该线程可以理解为线程执行该线程所对应业务的逻辑,该逻辑可以看作线程中的指令。
45.还应该理解的是,线程(包括binder线程以及关键线程)分配到资源的优先级可以简称为线程对应的优先级。线程对应的优先级可以用于指示线程从被唤醒至分配到资源之间的等待时间。该优先级越高则等待时间越短,线程在被唤醒之后可以更快的分配到资源以运行。
46.其中,线程(包括binder线程以及关键线程)从被唤醒至分配到资源之间的状态可以被称为准备(runnable)状态。线程在分配到资源之后可以进入到执行(running)状态,此时电子设备可以基于分配给线程的资源执行线程所对应业务的逻辑。
47.在一种方案中,为了解决因binder线程等待资源分配的时间太长进而影响调用该binder线程的关键线程继续运行的问题。电子设备可以将关键线程所调用的binder线程的优先级提升至高于或者等于预设优先级,以使得binder线程相比于优先级未提升之前,可以较快分配到资源以运行该binder线程从而使得电子设备可以尽快完成关键线程的运行。
48.图1示出了一种方案中为binder线程分配资源时涉及的示例图。
49.图1中以关键线程调用binder线程执行“a+b”为例进行说明,描述该方案中电子设备加快为binder线程分配资源以使得binder线程运行的过程。对于该过程的描述可以参考下述步骤s11-步骤s14的描述。
50.s11.关键线程唤醒binder线程并基于binder线程计算a+b。
51.在执行步骤s11时,binder线程处于休眠状态,关键线程处于执行状态,关键线程分配到资源的优先级较高,记为优先级a。
52.电子设备通过关键线程唤醒binder线程并基于binder线程计算a+b。然后,电子设备将关键线程的状态从执行状态切换为休眠状态。
53.s12.binder线程在唤醒后执行c=a+b,且唤醒后binder线程的优先级与关键线程的优先级相同。
54.电子设备将binder线程的优先级b更改为优先级a。然后电子设备通过关键线程唤醒binder线程,binder线程在唤醒后执行c=a+b。
55.s13.binder线程唤醒关键线程并返回c。
56.通过binder线程唤醒关键线程并返回c之后,电子设备恢复该binder线程的优先级为优先级b,然后设置binder线程处于休眠状态。
57.s14.关键线程在唤醒后基于c执行其他相关操作。
58.图2示出了binder线程的摆核情况相同时,调整binder线程的优先级前后binder线程与关键线程的状态对比示意图。
59.其中,binder线程的摆核情况相同是指:在两次运行binder线程时,电子设备是通过中央处理器(central processing unit,cpu)中相同类型的核心(cpu核心)运行binder线程的。 也可以理解为:电子设备在两次都是将binder线程置于cpu中相同类型的核心上进行运行的。
60.cpu核心是一种cpu资源。在一些可能的情况下,cpu属于电子设备的处理器。一个
cpu中可以包括至少一个cpu核心(简称为核心),核心是cpu中的一个组件,它是执行指令的实际处理单元。每个cpu核心都包括多个处理器指令集架构(isa),可以执行不同的操作。按照运行性能进行分类,cpu中核心的类型可以包括小核心(简称小核)、中核心(简称中核)、大核心(简称大核)。
61.其中,小核心,也可以被称为低功耗核心。该小核心通常能够提供较低的性能与功耗,用于执行一些基本的任务,如静态显示、音频播放等。中核心的性能和功耗居于小核和大核之间,适用于一些中等负载的任务,如文本处理、轻量级游戏等。大核心则通常是三者之中最快、最强大的核心,能够处理较重负载的任务,如高质量游戏、视频编解码等。基于前述描述,同一binder线程置于不同的核心进行运行时,运行速度从快到慢依次为大核心、中核心、小核心。
62.下面结合图1以及图2详细描述调整binder线程的优先级前后关键线程与binder线程的状态对比图。
63.如图2所示,标有状态(包括休眠、准备或者执行)的矩形框表示线程处于该状态的时间。标有“执行”的矩形框表示线程处于执行状态,标有“休眠”的矩形框表示线程处于休眠状态,标有“准备”的矩形框表示线程处于准备状态。对比图2中(1)以及图2中(2),具有相同标号的矩形代表线程被运行时完成的业务相同,也可以理解为线程执行的逻辑相同。该逻辑可以看作线程中的指令。
64.如图2中(1)所示,为binder线程的优先级为优先级b(未提高)的情况下,关键线程与binder线程的状态示意图。如图2中(2)所示,为binder线程的优先级从优先级b提高为优先级a的情况下,关键线程与binder线程的状态示意图。
65.对比图2中(1)以及图2中(2)可知,在binder线程的摆核情况相同时,相比于优先级为优先级b,在优先级为优先级a时,电子设备运行binder线程执行相同的逻辑时所需要的时间更短。因此可以减少关键线程处于休眠状态的时间,以使得电子设备可以尽快完成关键线程的运行。
66.图3示出了binder线程的摆核情况不相同时,调整binder线程的优先级前后binder线程与关键线程的状态对比示意图。
67.图3与图2中相同的图像和标志可以表示相同的含义,此处不再赘述。
68.如图3中(1)所示,为binder线程的优先级为优先级b(未提高)且在中核或者小核上运行的情况下,关键线程与binder线程的状态示意图。如图3中(2)所示,为binder线程的优先级从优先级b提高为优先级a但是在小核上运行的情况下,关键线程与binder线程的状态示意图。
69.对比图3中(1),参考图3中(2)可知,相比于优先级为优先级b,在优先级为优先级a时,虽然电子设备提高了binder线程的优先级可以使得binder可以更快的分配到资源以被运行。但是由于电子设备在小核上运行该binder线程,仍然会导致该binder线程运行的时间较长,使得关键线程处于休眠状态的时间较长,进而使得电子设备不可以尽快完成关键线程的运行。
70.由此可见,binder线程的运行时间除了受优先级的影响,还会受到摆核情况的影响。
71.在另一种方案中,为了解决前述涉及的因binder线程在小核上运行而导致电子设
备运行该binder线程的时间过长,进而导致调用该binder线程的关键线程处于休眠状态的时间过长,使得电子设备不能尽快完成关键线程所对应业务的问题。电子设备在为应用分配资源时,关键线程唤醒binder线程之前,电子设备可以调整binder线程的摆核情况,使得binder线程被关键线程唤醒之后可以运行在中核或者大核上。
72.在一些可能的情况下,调整binder线程的摆核情况的方法包括但不限于以下调整方法中的一个:调整方法1:在确定调用binder线程的关键线程对应的cpu最小限制大于预设限制阈值与binder线程对应的cpu最小限制时,电子设备将binder线程对应的cpu最小限制调整为关键线程对应的cpu最小限制。
73.调整方法2:在确定binder线程1的cpu最小限制小于预设限制阈值时,电子设备将binder线程对应的cpu最小限制(uclamp.min)调整为预设限制阈值,使得其可以在中核或者大核上被运行。
74.调整方法3:在确定调用binder线程的关键线程对应的cpu最小限制大于预设限制阈值的情况下,电子设备将binder线程对应的cpu最小限制调整为关键线程对应的cpu最小限制。
75.其中,一个线程对应的cpu最小限制(uclamp.min)是线程的一个属性,该属性为调度器给予操作系统调整该线程负载水线的属性。一个线程对应的cpu最小限制越小,表示该线程运行时负载越小。也可以理解为一个线程对应的cpu最小限制越小,表示该线程运行时对运行时所涉及的资源要求越低。示例性的,该cpu最小限制的取值范围可以为[0,1024]。通常来说,线程的cpu最小限制等于300时,即可使得其运行在中核或者大核。则预设限制阈值可以为300。此处300只是举例说明,实际情况中可以根据其他因素(例如电子设备或者cpu的类型)进行调整,不应该构成对本技术实施例的限定。
[0076]
在另一些可能的情况下,调整binder线程的摆核情况之前,电子设备还可以确定调用binder线程的关键线程属于前台应用。除了满足调用binder线程的关键线程属于前台应用这一条件,还可以满足以下条件中的一个或者多个。
[0077]
调整条件1:电子设备确定binder线程的优先级存在被提升的情况。
[0078]
调整条件2:电子设备确定调用binder线程的关键线程的优先级大于预设优先级。
[0079]
调整条件3:电子设备确定binder线程对应的业务为目标业务。该目标业务可以为下述对运行性能要求较高的场景中涉及的业务,例如响应于针对当前界面的ui事件显示新的界面(这个看作应用内的转场场景),再例如应用热启动场景下涉及的线程也可以作为关键线程,其调用的binder线程也可以被调整cpu最小限制。
[0080]
图4示出了电子设备调整binder线程的摆核情况时涉及的一个示例性流程图。
[0081]
图4中以关键线程调用binder线程执行“a+b”为例进行说明,描述电子设备加快为binder线程分配资源且在中核或者大核上运行binder线程的过程。对于该过程的描述可以参考下述步骤s21-步骤s24的描述。
[0082]
s21.唤醒binder线程并基于binder线程计算a+b。
[0083]
在执行步骤s11时,binder线程处于休眠状态,关键线程处于执行状态,关键线程分配到资源的优先级较高,记为优先级a。
[0084]
电子设备通过关键线程唤醒binder线程并基于binder线程计算a+b。然后,电子设
备将关键线程的状态从执行状态切换为休眠状态。
[0085]
s22.在唤醒后执行c=a+b,且唤醒后binder线程的优先级以及cpu最小限制与关键线程相同。
[0086]
电子设备将binder线程的优先级从较低的优先级b更改为优先级a。
[0087]
在关键线程对应的cpu最小限制(记为cpu最小限制a)大于预设限制阈值,且,binder线程对应的cpu最小限制(记为cpu最小限制b)小于cpu最小限制a时,电子设备将binder线程对应的cpu最小限制从cpu最小限制b更改为cpu最小限制a。
[0088]
然后电子设备通过关键线程唤醒binder线程,binder线程在唤醒后执行c=a+b。
[0089]
s23.唤醒关键线程并返回c。
[0090]
通过binder线程唤醒关键线程并返回c之后,电子设备恢复该binder线程的优先级为优先级b,且,恢复该binder线程的cpu最小限制为cpu最小限制b。然后,设置binder线程处于休眠状态。
[0091]
s24.唤醒后基于c执行其他相关操作。
[0092]
图5示出了调整binder线程的优先级时,binder线程在不同摆核情况下binder线程与关键线程的状态对比示意图。
[0093]
图5与图2中相同的图像和标志可以表示相同的含义,此处不再赘述。
[0094]
对比图5中(1)以及图5中(2),为binder线程的优先级从优先级b提高为优先级a前后,摆核情况分别为在中核或者大核上运行以及在小核上运行的情况下,关键线程与binder线程的状态对比。关于图5中(1)以及图5中(2)对比时涉及的相关内容,可以参考前述对图3中(2)以及图3中(2)的描述,此处不再赘述。
[0095]
对比图5中(1)以及图5中(3),为binder线程的优先级从优先级b提高为优先级a前后,binder线程的摆核情况为在中核或者大核上运行时,关键线程与binder线程的状态对比。对比图5中(1),参考图5中(3)可知,相比于binder线程的优先级为优先级b,在binder线程的优先级提升为优先级a时,电子设备提高了binder线程的优先级可以使得binder可以更快的分配到资源以被运行。同时由于电子设备在中核或者大核上运行该binder线程,可以使得该 binder线程运行的时间减少,使得关键线程处于休眠状态的时间减少,进而使得电子设备可以尽快完成关键线程的运行。
[0096]
基于前述描述可知,在一些可能的情况下,电子设备可以调整binder线程的优先级或者摆核情况提升应用运行时的性能。电子设备可以调整binder线程的优先级和摆核情况以进一步提升应用运行时的性能。例如,针对一些对运行性能要求较低的场景,电子设备只需要调整binder线程的摆核情况即可使得应用运行时的性能满足需求。但是在一些对运行性能要求较高的场景中,电子设备可以调整binder线程的优先级和摆核情况以使得应用运行时的性能满足需求。
[0097]
图6示出了对运行性能要求较低的场景示意图。
[0098]
对运行性能要求较低的场景可以包括电子设备开启应用之后涉及的第一类绘帧场景。第一类绘帧场景是指电子设备在显示相邻两帧用户界面时使用的ui组件不改变,例如视频播放的场景。该相邻两帧用户界面对应的activity相同,电子设备不用关闭前一帧用户界面对应的activity,直接基于前一帧对应的activity即可绘制下一帧用户界面。其中,activity 指的是运行在电子设备上的一个屏幕,屏幕上显示的内容可以由ui组件构
成,该屏幕可以展示用户界面,响应用户的交互并启动其他的activity。
[0099]
如图6所示,用户界面11与用户界面12中使用的ui组件相同,响应于针对用户界面11的操作(例如滑动操作),电子设备可以显示用户界面12。该过程不涉及关闭与启动activity,因此电子设备第一类绘帧场景中,运行binder线程执行线程所对应业务的逻辑所需平均时间通常在3ms-5ms,小于相邻两帧用户界面的帧间间隔时长(通常最小约为8.3ms,还可以为 11.2ms等)。在电子设备关闭前一帧用户界面到开启下一帧用户界面之前,电子设备有充足的时间完成binder线程从而将下一帧用户界面进行绘制与显示。
[0100]
图7示出了对运行性能要求较高的场景示意图。
[0101]
对运行性能要求较高的场景可以包括电子设备开启应用之后涉及的第二类绘帧场景。第二类绘帧场景是指电子设备在显示相邻两帧用户界面时使用的ui组件改变,例如响应于针对一个控件的操作,显示该控件对应的用户界面。该相邻两帧用户界面对应的activity不相同,电子设备需要关闭前一帧用户界面对应的activity,再启动下一帧用户界面对应的activity才可以绘制下一帧用户界面。
[0102]
如图7所示,用户界面21与用户界面22中使用的ui组件相同,响应于针对预览框210的操作(例如点击操作),电子设备可以先关闭用户界面21对应的activity,然后开启用户界面22对应的activity,再绘制用户界面22以显示用户界面22。该过程涉及关闭与启动activity,在一些可能的情况下,关闭activity和启动activity至少比前述第一类绘帧场景多涉及两个binder线程。因此在第二类绘帧场景中,电子设备通过运行binder线程以实现显示新用户界面(例如用户界面22)涉及的时间相比于第一类绘帧场景更长(例如长6ms-10ms)。则第二类绘帧场景中,电子设备运行binder线程执行线程所对应业务的逻辑所需时间通常大于相邻两帧用户界面的帧间间隔时长(通常最小约为8.3ms,还可以为 11.2ms等)。因此需要对binder线程的cpu最小限制以及优先级均进行提升以使得电子设备在接收到针对当前用户界面中一个控件的操作之后,可以较快显示该控件对应的用户界面。
[0103]
图8示出了电子设备进行资源分配时涉及的示例性软件结构框图。
[0104]
如图8所示,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些可能的情况下,将系统分为四层,从上至下分别为应用程序层,应用程序框架层,运行时(runtime)和系统库(未示出),以及内核层。
[0105]
应用程序层可以包括一系列应用程序包。
[0106]
应用程序包可以包括相机,图库等应用程序(也可以称为应用)。部分应用可以作为前台应用被运行。当一个应用被电子设备开启,且该应用的界面显示在显示屏中时,该应用可以为前台应用。
[0107]
前台应用中可以包括关键线程。该关键线程可以为应用中与用户界面显示相关的线程,用于控制前台应用的界面,例如控制界面的开启、关闭、绘制等。在一些可能的情况下,该关键线程可以包括ui线程或者render线程等。
[0108]
其中,ui线程可以用于负责响应ui 事件,例如响应用户的点击。处理(包括关闭、开启、绘制等)用户界面等。
[0109]
render线程可以用于在用户界面中实现动画效果。
[0110]
应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。
[0111]
应用程序框架层可以包括系统服务等。
[0112]
系统服务中可以包括binder线程。
[0113]
binder线程可以用于被其他线程(例如关键线程)调用以实现系统服务为其他应用或者服务提供的功能。
[0114]
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的编程文件(例如,jave文件)执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理等功能。
[0115]
内核层是硬件和软件之间的层。内核层至少包含多个驱动,例如可以包括binder驱动等。
[0116]
binder驱动可以用于负责线程间通信,例如负责关键线程和binder线程间的通信。
[0117]
binder驱动还可以用于负责线程管理。例如,可以唤醒线程使得线程从休眠状态进入非休眠状态(包括准备状态或者执行状态等),还可以使线程从非休眠状态进入休眠状态。还还可以管理线程的属性,例如设置线程的优先级以及cpu最小限制值等属性。
[0118]
下面,结合图8具体介绍电子设备进行资源分配时的一个示例性处理流程。
[0119]
步骤1,前台应用的关键线程响应于ui事件,通过binder驱动向系统服务发送通信请求,该通信请求包括调用系统服务执行响应该ui事件涉及的操作(记为操作1)。后续,关键线程进入休眠状态。其中,ui事件可以为针对显示屏的触摸操作(例如点击操作、长按操作等),还可以为语音输入等其他形式。
[0120]
其中,步骤1即图8中的圆圈标识


[0121]
步骤2,binder驱动在系统服务对应的线程池中选择空闲线程作为负责执行操作1的binder线程。binder驱动提升binder线程的cpu最小限制。在一些可能的情况下,该binder驱动还可以提升该binder线程的优先级。后续,该binder驱动唤醒binder线程以使得binder线程执行操作1。
[0122]
其中,步骤2即图8中的圆圈标识


[0123]
步骤3,binder线程在执行完操作1之后,通过binder驱动向关键线程返回通信结束请求。后续,binder驱动可以恢复binder线程的cpu最小限制。在提升了binder线程的优先级时,该binder驱动还可以恢复binder线程的优先级。
[0124]
其中,步骤3即图8中的圆圈标识


[0125]
步骤4,binder驱动返回操作1的结果并唤醒关键线程执行响应该ui事件涉及的后续操作。
[0126]
其中,步骤4即图8中的圆圈标识


[0127]
应该理解的是,前台应用的关键线程可以调用至少一个binder线程来执行响应该ui事件涉及的其他操作,直到完成对该ui事件的响应。该至少一个binder线程可以属于系统服务,也可以属于除操作系统以外的其他模块。本技术实施例对此不作限定。
[0128]
后文中以第二类绘帧场景中,ui事件为针对控件1的点击事件为例,详细描述电子设备通过前台应用响应该点击事件以显示控件1所对应界面的过程。
[0129]
图9中示出了电子设备为线程进行资源分配以响应ui事件时涉及的示例性交互图。
[0130]
在一些可能的情况下,通过前台应用响应该点击事件以显示控件1所对应界面时的过程中,涉及的模块可以包括前台应用的关键线程、binder驱动、以及系统服务中的binder线程(包括binder线程1以及binder线程2)。关于该过程的描述可以参考下述对步骤s101-步骤s120的描述。
[0131]
s101.关键线程响应针对界面1中控件1的点击事件,确定调用系统服务显示控件1对应的界面2。
[0132]
在一些可能的情况下,界面1可以为前述图7中示出的用户界面21,控件1可以为前述图7中示出的预览框210。控件1对应的界面2可以为前述图7中示出的用户界面22。
[0133]
电子设备的前台应用基于关键线程在确定调用系统服务显示控件1对应的界面2包括:调用系统服务中启动界面2,以及调用系统服务关闭界面1。
[0134]
其中,关于调用系统服务启动界面2的过程可以参考下述对步骤s102-步骤s110的描述。关于调用系统服务关闭界面2的过程可以参考下述对步骤s111到步骤s119的描述。
[0135]
s102.关键线程向binder驱动发送与系统服务通信涉及的通信请求1,该通信请求1中包括调用系统服务启动界面2的请求。
[0136]
该通信请求1可以用于关键线程调用系统服务中的binder线程启动界面2。将启动界面2涉及的数据发送至系统服务中的binder线程。
[0137]
其中,启动界面2包括创建并启动界面2对应的activity。后续,关键线程可以基于该界面2对应的activity绘制界面2。
[0138]
s103.关键线程进入休眠状态。
[0139]
前述步骤s101以及步骤s102中,关键线程处于执行状态。执行完步骤s102之后,关键线程可以等待系统服务返回通信请求1对应的通信结束请求(记为通信结束请求1)。在发出通信请求1之后,接收到通信结束请求1之前,关键线程进入休眠状态。
[0140]
s104.binder驱动响应该通信请求1,在系统服务对应的线程池中选择空闲线程1作为负责启动界面2的binder线程1。
[0141]
s105.确定关键线程的cpu最小限制大于预设限制阈值与binder线程1对应的cpu最小限制时,binder驱动将binder线程1的cpu最小限制更改为关键线程的cpu最小限制。
[0142]
步骤s105中涉及的调整binder线程1的cpu最小限制的调整方法包括前述涉及的调整方法1:在调用binder线程的关键线程对应的cpu最小限制大于预设限制阈值与binder线程对应的cpu最小限制时,电子设备将binder线程对应的cpu最小限制调整为关键线程对应的cpu最小限制。
[0143]
这里应该理解的是,除了步骤s105中所涉及的调整方法1以外。binder驱动将binder线程1的cpu最小限制更改为关键线程的cpu最小限制的条件还可以包括前述涉及的调整方法2-调整方法3。
[0144]
还应该理解的是,调整binder线程的摆核情况之前,binder驱动还可以确定满足前述调整条件1-调整条件3中的一个或者多个。
[0145]
在一些可能的情况下,binder驱动可以使用binder_transaction_uclamp函数获取binder线程1的uclamp.min属性并调整binder线程1的ucalmp.min属性。该可以为uclamp.min属性可以为cpu最小限制。
[0146]
s106.binder驱动唤醒binder线程1。
[0147]
binder驱动唤醒binder线程1,使得binder线程1可以从休眠状态进入准备状态或者执行状态。
[0148]
在一些可能的情况下,binder驱动在唤醒binder线程1之前,还可以将binder线程1的优先级提升至高于预设优先级。该预设优先级为较高的优先级,可以使得binder线程1尽快获取资源,则进入准备状态之后的时间较短可以忽略不计。则可以认为binder驱动唤醒binder线程1之后,使得binder线程1从休眠状态进入执行状态。
[0149]
在一些可能的情况下,在唤醒binder线程1之后,binder线程1的优先级低于预设优先级。则binder驱动唤醒binder线程1之后,可以使得binder线程1从休眠状态进入准备状态。
[0150]
s107.binder线程1执行启动界面2的相关操作。
[0151]
在一些可能的情况下,binder线程1可以创建并启动一个新activity,将该新activity作为界面2对应的activity。示例性的,binder线程1可以通过startactivity()类创建并启动一个新activity。
[0152]
s108.binder线程1向binder驱动返回通信结束请求1。
[0153]
该通信结束请求1用于通知关键线程已完成界面2的启动。
[0154]
s109.binder驱动恢复binder线程1的cpu最小限制。
[0155]
在一些可能的情况下,binder驱动可以使用binder_restore_uclamp函数恢复binder线程1的uclamp.min属性,例如恢复binder线程1的cpu最小限制。
[0156]
s110.binder驱动唤醒关键线程并返回通信结束请求1。
[0157]
关键线程在接收到通信结束请求1之后,可以确定界面2已经完成启动。然后,关键线程可以执行显示界面2涉及的后续操作。其中一个后续操作包括关闭界面1,关于关闭界面1的过程可以参考下述对步骤s111-步骤s119的描述。
[0158]
s111.关键线程向binder驱动发送与系统服务通信涉及的通信请求2,该通信请求2中包括调用系统服务关闭界面1的请求。
[0159]
该通信请求2可以用于关键线程调用系统服务中的binder线程关闭界面1。将关闭界面1涉及的数据发送至系统服务中的binder线程。
[0160]
其中,关闭界面1包括关闭界面1对应的activity。后续,关键线程可以基于界面2对应的activity绘制界面2。
[0161]
s112.关键线程再次进入休眠状态。
[0162]
前述步骤s111中关键线程处于执行状态。执行完步骤s111之后,关键线程可以等待系统服务返回通信请求2对应的通信结束请求(记为通信结束请求2)。在发出通信请求2之后,接收到通信结束请求2之前,关键线程进入休眠状态。
[0163]
s113.binder驱动响应该通信请求2,在系统服务对应的线程池中选择空闲线程2作为负责关闭界面1的binder线程2。
[0164]
s114. 确定关键线程的cpu最小限制大于预设限制阈值与binder线程2对应的cpu最小限制时,binder驱动将binder线程2的cpu最小限制更改为关键线程的cpu最小限制。
[0165]
该步骤s114与前述步骤s105相似,将binder线程1更改为binder线程2即可。可以参考前述对步骤s105的描述,此处不再赘述。
[0166]
s115.binder驱动唤醒binder线程2。
[0167]
该步骤s115与前述步骤s106相似,将binder线程1更改为binder线程2即可。可以参考前述对步骤s106的描述,此处不再赘述。
[0168]
s116.binder线程2执行关闭界面1的相关操作。
[0169]
在一些可能的情况下,binder线程2执行关闭界面1的相关操作可以包括关闭界面1对应的activity。示例性的,binder线程2可以通过activitypaused()类关闭界面1对应的activity。
[0170]
s117.binder线程2向binder驱动返回通信结束请求2。
[0171]
该通信结束请求2用于通知关键线程已完成界面1的关闭。
[0172]
s118.binder驱动恢复binder线程2的cpu最小限制。
[0173]
s119.binder驱动唤醒关键线程并返回通信结束请求2。
[0174]
关键线程在接收到通信结束请求1之后,可以确定界面2已经完成启动。然后,关键线程可以执行显示界面2涉及的后续操作。其中一个后续操作包括执行下述步骤s120绘制界面2。
[0175]
s120.关键线程绘制界面2。
[0176]
关键线程绘制界面2,绘制完成之后,电子设备的显示屏中可以显示界面2。
[0177]
图10中示出了电子设备为线程进行资源分配以响应ui事件时涉及的示例性流程图。
[0178]
s201.电子设备检测到针对界面1中控件1的操作。
[0179]
在一些可能的情况下,电子设备可以基于触摸传感器检测到针对界面1中控件1的点击操作。
[0180]
s202.电子设备将该点击操作识别为ui事件,确定该ui事件对应的应用为前台应用。
[0181]
在一些可能的情况下,触摸传感器检测到针对界面1中控件1的操作之后,相应的硬件中断被发给内核层。内核层将该点击操作加工成原始输入事件(包括触摸坐标,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。应用程序框架层从内核层获取原始输入事件,识别该输入事件所对应的应用以及所对应的控件。
[0182]
确定显示屏中显示了该应用的界面时,电子设备可以确定该ui事件对应的应用为前台应用。
[0183]
s203.电子设备通知前台应用响应该ui事件以显示控件1对应的界面2。
[0184]
电子设备基于前台应用响应该ui事件以显示界面2的过程可以参考下述对步骤s204-步骤s209的描述。
[0185]
s204.电子设备基于前台应用的关键线程确定响应该ui事件涉及的binder线程,该binder线程与关键线程属于不同的进程。
[0186]
在一些可能的情况下,该关键线程可以确定调用其他进程的binder线程执行响应该ui事件涉及的操作。示例性的,该关键线程可以通过binder驱动实现调用其他进程的binder线程执行响应该ui事件涉及的操作。
[0187]
其中,响应该ui事件涉及的操作可以包括至少一个操作。例如,启动界面2以及关闭界面1。该其他进程的binder线程可以包括至少一个binder线程。关键线程可以调用不同的binder线程实现不同的操作。例如,电子设备可以基于关键线程确定调用binder线程1实
现启动界面2,关于该过程涉及的相关内容可以参考前述对步骤s102-步骤s104的描述,此处不再赘述。电子设备可以基于关键线程确定调用binder线程2实现关闭界面1,关于该过程涉及的相关内容可以参考前述对步骤s111-步骤s113的描述,此处不再赘述。
[0188]
下述步骤s205以及步骤s206是可选的。
[0189]
s205.电子设备确定关键线程的优先级大于预设优先级。
[0190]
关键线程的优先级大于预设优先级时。该预设优先级可以使得关键线程较快的分配到资源以被运行。
[0191]
s206.电子设备将binder线程的优先级设置为与关键线程相同的优先级。
[0192]
在确定关键线程的优先级大于预设优先级的情况下,电子设备将binder线程的优先级设置为与关键线程相同的优先级。
[0193]
可选的,在一些可能的情况下,在执行步骤s205或者步骤s206之前,电子设备还可以将关键线程的优先级提升至大于预设优先级。
[0194]
s207.确定关键线程的cpu最小限制大于预设限制阈值与binder线程对应的cpu最小限制时,电子设备将binder线程的cpu最小限制更改为关键线程的cpu最小限制。
[0195]
步骤s207中涉及的调整binder线程的cpu最小限制的调整方法包括前述涉及的调整方法1:在调用binder线程的关键线程对应的cpu最小限制大于预设限制阈值与binder线程对应的cpu最小限制时,电子设备将binder线程对应的cpu最小限制调整为关键线程对应的cpu最小限制。
[0196]
这里应该理解的是,除了步骤s207中所涉及的调整方法1以外。电子设备将binder线程1的cpu最小限制更改为关键线程的cpu最小限制的条件还可以包括前述涉及的调整方法2-调整方法3。
[0197]
还应该理解的是,调整binder线程的摆核情况之前,电子设备还可以确定满足前述调整条件1-调整条件3中的一个或者多个。
[0198]
示例性的,电子设备可以基于binder驱动执行步骤s207,关于该过程涉及的相关内容可以参考前述对步骤s105以及步骤s114的描述,此处不再赘述。
[0199]
s208.电子设备基于binder线程执行响应ui事件对应的操作,包括启动控件1对应的界面2以及关闭界面1。
[0200]
基于binder线程的cpu最小限制,电子设备在中核或者大核上运行该binder线程。
[0201]
在一些可能的情况下,运行该binder线程可以表示:电子设备基于binder线程执行响应ui事件对应的操作。示例性的,该关键线程可以通过binder驱动调用其他进程的binder线程执行响应该ui事件涉及的操作。
[0202]
其中,响应该ui事件涉及的操作可以包括至少一个操作。例如,启动界面2以及关闭界面1。该其他进程的binder线程可以包括至少一个binder线程。关键线程可以调用不同的binder线程实现不同的操作。例如,电子设备可以基于关键线程确定调用binder线程1启动界面2,关于该过程涉及的相关内容可以参考前述对步骤s102-步骤s107的描述,此处不再赘述。电子设备可以基于关键线程调用binder线程2关闭界面1,关于该过程涉及的相关内容可以参考前述对步骤s111-步骤s116的描述,此处不再赘述。
[0203]
s209.确定界面1关闭之后,电子设备基于关键线程绘制界面2。
[0204]
电子设备关键线程绘制界面2,绘制完成之后,电子设备的显示屏中可以显示界面
2。
[0205]
应该理解的是,步骤s206以及步骤s07之间没有先后顺序, 步骤s205以及步骤s07之间没有也先后顺序。
[0206]
在一些可能的情况下,前述图9以及图10中涉及的关键线程可以为前台应用的主线程(ui线程)。
[0207]
下面首先介绍本技术实施例提供的示例性电子设备。
[0208]
图11是本技术实施例提供的电子设备的结构示意图。
[0209]
下面以电子设备为例对实施例进行具体说明。应该理解的是,电子设备可以具有比图11中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图11中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
[0210]
电子设备可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194以及用户标识模块(subscriber identification module,sim)卡接口195等。其中传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
[0211]
可以理解的是,本技术实施例示意的结构并不构成对电子设备的具体限定。在本技术另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0212]
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
[0213]
可以理解的是,本技术实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备的结构限定。在本技术另一些实施例中,电子设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
[0214]
充电管理模块140用于从充电器接收充电输入。
[0215]
电源管理模块141用于连接电池142,充电管理模块140与处理器110。
[0216]
电子设备的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
[0217]
电子设备通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
[0218]
电子设备可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。
[0219]
内部存储器121可以包括一个或多个随机存取存储器(random access memory, ram )和一个或多个非易失性存储器(non-volatile memory, nvm)。
[0220]
外部存储器接口120可以用于连接外部的非易失性存储器,实现扩展电子设备的存储能力。
[0221]
电子设备可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
[0222]
电子设备还包括对个传感器以用于采集信号。例如,触摸传感器180k,也称“触控面板”。触摸传感器180k可以设置于显示屏194,由触摸传感器180k与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180k用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180k也可以设置于电子设备的表面,与显示屏194所处的位置不同。
[0223]
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备可以接收按键输入,产生与电子设备的用户设置以及功能控制有关的键信号输入。
[0224]
马达191可以产生振动提示。
[0225]
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
[0226]
sim卡接口195用于连接sim卡。
[0227]
本技术实施例中,该处理器110可以调用内部存储器121中存储的计算机指令,以使得终端执行本技术实施例中的资源分配方法。
[0228]
以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
[0229]
上述实施例中所用,根据上下文,术语“当

时”可以被解释为意思是“如果
…”
或“在

后”或“响应于确定
…”
或“响应于检测到
…”
。类似地,根据上下文,短语“在确定

时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定
…”
或“响应于确定
…”
或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。
[0230]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中
心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如dvd)、或者半导体介质(例如固态硬盘)等。
[0231]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:rom或随机存储记忆体ram、磁碟或者光盘等各种可存储程序代码的介质。

技术特征:
1.一种资源分配方法,其特征在于,电子设备包括中央处理器cpu,所述cpu包括小核以及其他核,所述其他核的计算能力强于所述小核的计算能力;所述方法包括:所述电子设备基于第一线程调用第二线程执行第一操作;所述第一线程以及所述第二线程属于不同的进程;在确定所述第一线程属于前台应用的情况下,所述电子设备调整所述第二线程的cpu最小限制大于或者等于预设限制阈值;所述前台应用为包括的界面显示在所述电子设备的显示屏中的应用;基于所述第二线程的cpu最小限制,所述电子设备在所述其他核上运行所述第二线程;在所述第一线程确定所述第二线程完成所述第一操作的情况下,所述电子设备基于所述第一线程执行第二操作。2.根据权利要求1所述的方法,其特征在于,所述电子设备在所述其他核上运行所述第二线程之前,所述方法还包括:所述电子设备确定所述第一线程的优先级大于预设优先级;所述优先级用于确定所述电子设备为线程分配资源的先后顺序,优先级越高则线程从被唤醒至分配到资源之间的等待时间越短。3.根据权利要求2所述的方法,其特征在于,所述电子设备确定所述第一线程的优先级大于预设优先级之后,所述方法还包括:所述电子设备将所述第二线程的优先级设置为与所述第一线程相同的优先级。4.根据权利要求3所述的方法,其特征在于,所述电子设备调整所述第二线程的cpu最小限制大于或者等于预设限制阈值,具体包括:在确定所述第一线程的cpu最小限制大于所述预设限制阈值与所述第二线程的cpu最小限制时,所述电子设备将所述第二线程的cpu最小限制调整为所述第一线程的cpu最小限制。5.根据权利要求3所述的方法,其特征在于,所述电子设备调整所述第二线程的cpu最小限制大于或者等于预设限制阈值,具体包括:在确定所述第二线程的cpu最小限制小于所述预设限制阈值的情况下,所述电子设备将所述第二线程的cpu最小限制调整为所述预设限制阈值。6.根据权利要求3所述的方法,其特征在于,所述电子设备基于第一线程调用第二线程执行第一操作之前,所述方法还包括:所述电子设备检测到针对第一界面中第一控件的操作;将所述针对第一控件的操作识别为第一应用对应的用户界面ui事件;所述电子设备基于所述第一线程响应所述ui事件。7.根据权利要求6所述的方法,其特征在于,所述电子设备基于所述第一线程调用所述第二线程执行第一操作,具体包括:所述电子设备基于所述第一线程调用所述第二线程开启第二界面,以及,关闭所述第一界面。8.根据权利要求7所述的方法,其特征在于,所述电子设备基于第一线程执行第二操作,具体包括:所述电子设备基于所述第一线程在屏幕中绘制所述第二界面。
9.根据权利要求7或8中任一项所述的方法,其特征在于,所述第一线程为所述前台应用中的ui线程,所述第二线程为系统服务中的至少一个binder线程。10.根据权利要求9所述的方法,其特征在于,所述电子设备基于所述第一线程调用所述第二线程开启所述第二界面,以及,关闭所述第一界面,具体包括:所述电子设备基于ui线程调用第一binder线程开启所述第二界面,以及,所述电子设备基于ui线程调用第二binder线程开关闭所述第一界面。11.根据权利要求10所述的方法,其特征在于,所述电子设备基于ui线程调用第一binder线程开启所述第二界面,以及,所述电子设备基于ui线程调用第二binder线程开关闭所述第一界面,具体包括:所述电子设备基于所述ui线程向所述第一binder线程发送第一通信请求,所述第一通信请求用于唤醒所述第一binder线程并请求所述第一binder线程开启所述第二界面;在确定所述ui线程发送所述第一通信请求之后,所述电子设备设置所述第一binder线程进入休眠状态;在确定所述ui线程接收到第一通信结束请求之后,所述电子设备基于ui线程向所述第二binder线程发送第二通信请求,所述第二通信请求用于唤醒所述第二binder线程并请求所述第二binder线程关闭所述第一界面;在确定所述ui线程发送所述第二通信请求之后,所述电子设备设置所述第一binder线程再次进入休眠状态;所述电子设备基于所述ui线程接收到第二通信结束请求。12.一种电子设备,其特征在于,包括:一个或多个处理器和存储器;所述存储器与所述一个或多个处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述一个或多个处理器调用所述计算机指令以使得所述电子设备执行如权利要求1至11中任一项所述的方法。13.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1至11中任一项所述的方法。

技术总结
本申请提供了一种资源分配方法和电子设备。在该方法中,电子设备在为应用分配资源时,在应用的关键线程唤醒binder线程之前,电子设备可以调整binder线程的摆核情况,使得binder线程被关键线程唤醒之后可以运行在中核或者大核上。实施本申请提供的技术方案,控制binder线程在中核或者大核上运行,可以使得调用该binder线程的关键线程处于休眠状态的时间较短,进而使得该关键线程可以尽快完成业务,提高应用的运行性能。提高应用的运行性能。提高应用的运行性能。


技术研发人员:朱科嘉 李耀宗 刘璐
受保护的技术使用者:荣耀终端有限公司
技术研发日:2023.06.15
技术公布日:2023/8/13
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐