CN111831433A - 资源分配方法、装置、存储介质及电子设备 - Google Patents
资源分配方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN111831433A CN111831433A CN202010627156.8A CN202010627156A CN111831433A CN 111831433 A CN111831433 A CN 111831433A CN 202010627156 A CN202010627156 A CN 202010627156A CN 111831433 A CN111831433 A CN 111831433A
- Authority
- CN
- China
- Prior art keywords
- thread
- threads
- type
- preset
- user interaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 139
- 238000013468 resource allocation Methods 0.000 title claims abstract description 75
- 230000003993 interaction Effects 0.000 claims abstract description 90
- 238000004590 computer program Methods 0.000 claims description 20
- 230000000903 blocking effect Effects 0.000 claims description 19
- 239000010410 layer Substances 0.000 description 28
- 230000003068 static effect Effects 0.000 description 23
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 239000012792 core layer Substances 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 239000011230 binding agent Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种资源分配方法、装置、存储介质及电子设备,其中,本申请实施例中,确定出用于执行用户交互事件中相关任务的目标线程,并将目标线程标记为第一类线程;当接收到线程发送的资源分配请求时,确定线程的类别,其中,将除第一类线程之外的其他线程作为第二类线程;根据类别和预设分配机制为所述线程分配系统资源,其中,按照预设分配机制为第一类线程分配系统资源的速度或数量,大于为第二类线程分配系统资源的速度或数量。该方案识别出执行用户交互事件中相关任务的线程,并对这些线程的资源分配效率进行优化,以减少用户交互场景下出现卡顿现象。
Description
技术领域
本申请涉及电子设备技术领域,具体涉及一种资源分配方法、装置、存储介质及电子设备。
背景技术
随着技术的发展,电子设备中安装的各类应用程序越来越多,例如视频类应用、游戏类应用以及即时通讯类应用等。这使得电子设备经常需要在前台和后台运行多个应用程序,容易在用户交互场景中出现卡顿现象。
发明内容
本申请实施例提供一种资源分配方法、装置、存储介质及电子设备,能够优化资源分配机制,减少交互场景下的卡顿现象。
第一方面,本申请实施例提供一种资源分配方法,包括:
确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;
当接收到线程发送的资源分配请求时,确定所述线程的类别,其中,将除所述第一类线程之外的其他线程作为第二类线程;
根据所述类别和预设分配机制为所述线程分配系统资源,其中,按照预设分配机制为所述第一类线程分配系统资源的速度或数量,大于为所述第二类线程分配系统资源的速度或数量。
第二方面,本申请实施例还提供一种资源分配装置,包括:
线程标记模块,用于确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;
资源分配模块,用于当接收到线程发送的资源分配请求时,确定所述线程的类别,其中,将除所述第一类线程之外的其他线程作为第二类线程;
所述资源分配模块,还用于根据所述类别和预设分配机制为所述线程分配系统资源,其中,按照预设分配机制为所述第一类线程分配系统资源的速度或数量,大于为所述第二类线程分配系统资源的速度或数量。
第三方面,本申请实施例还提供一种存储介质,其上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如本申请任一实施例提供的资源分配方法。
第四方面,本申请实施例还提供一种电子设备,包括处理器和存储器,所述存储器有计算机程序,所述处理器通过调用所述计算机程序,用于执行如本申请任一实施例提供的资源分配方法。
本申请实施例提供的技术方案,确定出用于执行用户交互事件中相关任务的目标线程,并将这些目标线程标记为第一类线程。当线程在运行过程中请求系统资源时,比如CPU资源、IO资源、内存资源等,系统对请求系统资源的线程进行识别,如果请求系统资源的第一类线程,而不是其他线程,则系统会为该线程分配数量更多的资源,例如分配大核的CPU,并且,会以更快的速度为该线程分配资源,例如,将该线程放置运行队列的队首,使得系统能够优先为该线程分配资源。由于执行用户交互事件中相关任务的线程是否能够流畅运行决定着是否会在用户交互事件中产生用户可感知的卡顿,通过该方案,识别出执行用户交互事件中相关任务的线程,并对这些线程的资源分配效率进行优化,以减少用户交互场景下出现卡顿现象。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的资源分配方法的第一种流程示意图。
图2为本申请实施例提供的资源分配方法的第二种流程示意图。
图3为本申请实施例提供的资源分配装置的结构示意图。
图4为本申请实施例提供的电子设备的第一种结构示意图。
图5为本申请实施例提供的电子设备的第二种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请的保护范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请实施例提供一种资源分配方法,该资源分配方法的执行主体可以是本申请实施例提供的资源分配装置,或者集成了该资源分配装置的电子设备,其中该资源分配装置可以采用硬件或者软件的方式实现。其中,电子设备可以是智能手机、平板电脑、掌上电脑、笔记本电脑、或者台式电脑等设备。
请参阅图1,图1为本申请实施例提供的资源分配方法的第一种流程示意图。本申请实施例提供的资源分配方法的具体流程可以如下:
在101中,确定出用于执行用户交互事件中相关任务的目标线程,并将目标线程标记为第一类线程。
本申请实施例中,电子设备的操作系统可以是基于linux内核的系统,例如,安卓操作系统等。电子设备上运行着系统进程和应用程序的进程,线程是进程的一条执行路径,是程序执行时的最小单位。一个进程可以有多个线程,但至少有一个线程。对于内核来说,在进行资源调度时,比如CPU调度,都是具体到某个线程的。进程内有一个主线程,它也会创建出很多子线程来协助工作。比如一个微信应用进程,它会起一个主线程来执行代码,执行途中也会起其它子线程来协助运行各部分的任务代码。
随着安卓生态的不断扩张,这些线程群体将变得更加庞大。它们共同使用着有限的内核资源,如内存、CPU资源、IO(Input/Output,输入/输出)资源等。它们之间对资源的竞争相当激烈,因此,需要对它们进行分类,使发生资源竞争时,对重要的线程给予一定的倾斜。
常规的资源分配方式是利用cgroup机制来对线程进行分组,在分组内依赖cgroup机制调配资源,但是这种机制存在以下缺点:资源调控范围存在局限性,由于依赖的是cgroup机制,那么能调控的资源也只能在cgroup配置参数所涉及的范围,cgroup配置参数涉及不到的范围则无法优化资源分配。
为了解决这一问题,本申请实施例中,不依赖于cgroup机制,而是从线程的运行情况是否会影响到用户体验的角度出发,将那些直接或者间接地影响到用户体验的线程标记出来,在资源分配时,将资源向这些线程倾斜。
本申请实施例中的进程包括系统级进程和应用级进程。由于产生用户可感知的界面的卡顿的场景多是相对于运行在前台的进程来说的。因此,本申请实施例的方案中,“确定出用于执行用户交互事件中相关任务的目标线程”包括:在检测到有进程切换到前台运行时,确定该前台进程;从该前台进程的线程中确定出用于执行用户交互事件中相关任务的线程,作为目标线程。
例如,在一实施例中,“从前台进程的线程中确定出用于执行用户交互事件中相关任务的目标线程,并将目标线程标记为第一类线程”包括:从前台进程的线程中识别出用于执行用户交互事件中相关任务的第一预设线程,作为目标线程;为目标线程添加预设标签,以将线程标记为第一类线程。
由于执行用户交互事件中相关任务的线程是否能够流畅运行决定着是否会在用户交互事件中产生用户可感知的卡顿,故将这些与用户体验紧密相关的线程记为ux(userexperience,用户体验)线程,即第一类线程。本申请实施例中,将除ux线程之外的线程记为第二类线程。第二类线程的运行情况一般不会影响用户体验,或者对用户体验影响较小,对于这些线程来说,就按照系统原本的资源分配机制进行资源的分配。
其中,电子设备的系统架构至少包括应用框架(framework)层和内核(kernel)层,本申请实施例,从框架层和内核层的角度对ux线程进行识别和标记,例如,应用框架层为一些直接执行用户交互事件中相关任务的线程添加预设标签,以将这些线程标记为静态ux线程,内核层将一些间接地影响到用户交互事件中相关任务执行的线程标记为动态ux线程。
比如,对于上述第一预设线程来说,包括进程运行时创建的一些用于直接执行用户交互事件的相关任务的线程,例如,UI(user interface,用户界面)线程,Render(渲染)线程,GL线程,用户输入事件的分发线程,用户输入事件的检测线程等。这些线程是否能够流畅运行决定着是否会在用户与该进程的交互界面中产生用户可感知的卡顿。
比如,用户使用聊天软件与某一好友聊天,用户在对话框输入文字,电子设备通过服务器将用户输入的文字发送至该好友的电子设备。在这次交互事件中,需要UI线程、Render线程、用户输入事件的分发线程、用户输入事件的检测线程等线程共同工作,以完成本次用户交互事件,其中,每一个线程的运行都需要系统为其分配资源。因此,在检测到该聊天软件在前台运行时,识别出这些线程,将其标记为ux线程。当内核层接收到资源分配请求时,可以根据该标签判断要对该线程进行资源倾斜。
其中,第一预设线程一般是应用级线程,这些线程可以是通过对实际的卡顿场景进行分析来确定。比如,在测试中,如果某一用户交互场景下发生了应用卡顿,通过对该场景分析发现卡顿现象是某个线程处理任务太慢导致的,则可以认为该线程是用于执行用户交互事件中相关任务的,该线程的运行与用户体验紧密相关,可以将该线程作为第一预设线程。
基于此,可以通过对各种可能的卡顿场景进行测试,记录这些导致卡顿出现的线程。电子设备中存储这些第一预设线程的相关信息,当进程切换到前台运行时,将该进程下的属于预先记录的第一预设线程的线程都标记为ux线程。
可以理解的是,对于电子设备来说,存储的第一预设线程的相关信息并不是不可修改的,当进行系统升级时,可以对第一预设线程的相关信息进行更新。
此外,在另一实施例中,“确定出用于执行用户交互事件中相关任务的目标线程,并将目标线程标记为第一类线程”还包括:当检测到有第二预设线程创建时,将创建的第二预设线程标记为第一类线程,其中,第二预设线程为系统级线程。
由于在执行用户交互事件的过程中,除了应用级线程之外,可能还涉及到一些系统级的线程来完成任务,系统框架层也需要将这些系统级线程标记为ux线程。一般这些线程在系统启动时就会创建,因此,可以在检测到系统启动时,识别出这些线程并进行标记,比如,Surfaceflinger线程、系统动画线程等。或者,在系统运行过程中,如果检测到有新的系统级线程创建并用来执行用户交互事件中相关任务,系统框架层也将这些线程标记为ux线程。比如,SystemUI线程。其中,第二预设线程也可以通过对实际的卡顿场景进行分析来确定。比如,在测试中,如果某一用户交互场景下发生了应用卡顿,通过对该场景分析发现卡顿现象是某个系统级线程处理任务太慢导致的,则可以认为该系统级线程是用于执行用户交互事件中相关任务的,该系统级线程的运行与用户体验紧密相关,可以将该系统级线程作为第二预设线程。电子设备中存储有这些第二预设线程的相关信息,当内核根据该相关信息判断系统创建的线程属于第二预设线程,则将其标记为ux线程。
其中,预设标签可以为ux标签,其添加方式如下:Linux使用task_struct结构体描述和记录线程,每个线程都有对应的task_struct结构体。task_struct中记录了线程的名称、标识符、状态、优先级、内存指针、上下文数据等属性信息。因此,应用框架层可以在task_struct结构体中增加对应的ux flag成员,以将前台进程的UI线程、Render线程、GL线程等执行用户交互事件中相关任务的线程,通过标记ux flag位,使内核层能够识别该线程的任务属性。
需要说明的是,上述几种静态ux线程仅为举例说明,并不局限于此,只要是直接地执行用户交互事件中相关任务的线程,使得其运行情况直接地影响到用户体验的线程,都可以将其标记为静态ux线程。对于应用框架层来说,在检测到新创建的线程是用来执行用户交互事件,或者检测到某些常驻系统级线程是用以处理用户交互事件时,为这些线程添加ux标签,以将其标记为静态ux线程。
在另一实施例中,“从前台进程的线程中确定出用于执行用户交互事件中相关任务的目标线程,并将目标线程标记为第一类线程”还包括:在前台进程的运行过程中,当检测到有新线程创建时,确定新创建的线程是否用于执行用户交互事件中的相关任务;当新创建的线程用于执行用户交互事件中的相关任务时,将新创建的线程标记为第一类线程。
前台进程在运行过程中,如果有用户交互事件发生,除了上述第一预设线程之外,还可能会有一些临时创建的任务线程,这些任务线程的运行也会直接影响到是否会在用户与该进程的交互界面中产生用户可感知的卡顿。因此,应用框架层会将这些线程也标记为ux线程,以优化系统对该线程的资源分配。
其中,电子设备根据检测到的用户指令确定发生的用户交互事件。用户交互事件一般是指用户触发了某指令后,电子设备需要即时的对该指令进行响应,进行某种处理并将处理结果显示在界面上的情况。例如,用户使用电子设备观看视频、编辑短信、使用聊天软件、使用游戏软件、控制电子设备界面的切换、使用浏览浏览网页等,都属于用户交互事件。比如,用户使用聊天软件与某一好友聊天,用户在对话框输入文字,电子设备通过服务器将用户输入的文字发送至该好友的电子设备。在这个过程中,电子设备需要调度多个线程以完成本次用户交互事件,从该用户交互事件的开始到完成的整个过程中,进程创建的用来完成这次用户交互事件的线程都可以认为是与用户体验相关的线程。
在102中,当接收到线程发送的资源分配请求时,确定线程的类别,其中,将除第一类线程之外的其他线程作为第二类线程。
在103中,根据类别和预设分配机制为所述线程分配资源,其中,按照预设分配机制为第一类线程分配系统资源的速度或数量,大于为第二类线程分配系统资源的速度或数量。
通过上述实施例,框架层识别出那些直接影响到用户体验的线程并为其添加标记。而线程的运行需要内核为之分配系统资源。因此,线程在执行任务前,会向内核发送系统资源分配请求。当内核接收到资源分配请求时,可以先判断该线程是否为ux线程,如果是ux线程,则优先为其分配资源,如果不是ux线程,则按照系统本身的资源分配机制进行分配。
需要说明的是,这里的第一类线程和第二类线程中的“第一类”和“第二类”,仅仅是为了区分线程是否具有ux标签,而不是说将系统中的线程只划分为这两种类别。本申请的资源分配优化方案是从线程是否具有ux标签这一角度出发的,如果线程同时还具有其他属性,则在资源分配时,考虑了是否具有ux标签这一属性后,仍然会考虑其他属性。
例如,系统资源为CPU资源。一般情况下,内核中的线程是有区分调度类的,调度类保存在上文提到的task_struct结构体中,内核中的线程最常见的是CFS(complete fairschedule,完全公平调度)调度类线程(比如UI线程、Render线程以及很多比较常见的线程都是CFS的)、RT(RealTime scheduler,实时调度)调度类线程(比如Surfaceflinger线程以及一些其他核心线程)。不同调度类的优先级不一样(这里的优先级是指某一调度类线程整体上相对于另一调度类线程具有的优先级)。比如,调度类的优先级体现在:多核CPU进行调度时,会先通过RT调度类的任务调度方法中选择RT线程运行,如果没有RT线程,才会从CFS调度类的调度方法中选择CFS线程,也就是说,RT调度类的优先级高于CFS调度类的优先级。当然,这两种调度类各自的调度方法中,会区分各自处理的线程的优先级(这里的优先级是指某一调度类内部各线程的优先级),如RT优先级,CFS优先级。
在没有区分ux线程和非ux线程的情况下,内核按照上文中各调度类的优先级,以及各调度类内部各线程的优先级分配资源。
而本申请实施例中,标记了ux线程之后,预设分配机制为:优先考虑同调度类线程的ux属性,之后再考虑线程优先级。也就是说,ux flag位为新增的标记位,一个线程增加了该标记位之后,并不影响其原有的其他标记位,比如,一个CFS线程在具有了ux标识后,它仍然属于CFS线程,仍然按照CFS调度类对应的预设分配机制分配资源,只是在按照CFS调度类对应的预设分配机制分配资源时,要考虑到该线程具有ux标签,在CFS线程队列里,具有ux标签的CFS线程比其他不具有ux标签的CFS线程可以更快更多的得到处理器资源。但是,不具有ux标签的RT线程的优先级仍然高于具有ux标签的CFS线程,因为RT调度类的优先级高于CFS调度类的优先级。
也就是说,本申请中,所谓的“按照预设分配机制为所述第一类线程分配系统资源的速度或数量,大于为所述第二类线程分配系统资源的速度或数量”,是在线程的其他属性条件相同的情况下进行的一种资源优化分配机制。
比如,如果有三个RT线程A、B和C,无论它们的优先级是否一样,假如A是ux线程,B和C是非ux线程,那么优先对A进行调度执行,对于B和C,则仍然按照B和C的RT优先级进行调度,如先调度B和C中RT优先级最高的那个线程。
又比如,在一些实施例中,还可以为ux线程专门预留一个大核CPU核心,将ux线程都分配到该预留的核心上运行,以保证ux线程及时分配到资源,而对于非ux线程来说,仍然按照默认的分配机制去竞争除该预留CPU核心之外的其他CPU资源。
又例如,系统资源为IO资源。预设分配机制为:当请求IO资源的线程为ux线程时,将该ux线程添加至IO队列的队首,当请求IO资源的线程为非ux线程时,按照请求时间的先后顺序或者线程的优先级的高低将该非ux线程添加至IO队列。
又例如,系统资源为内存。预设分配机制为:为ux线程预留一个内存池,当请求内存的线程为ux线程时,从该内存池中为ux线程分配内存,当请求内存的线程不是ux线程时,从系统内存空间为其分配内存,通过这种方式,ux线程不必与其他普通线程竞争内存资源,可以及时分配到内存资源进行运行。
系统框架层将和用户体验相关的线程和其他的普通线程区分开来,内核采用上述资源分配方式中的一种或者多种方式,将系统资源向ux线程倾斜,系统会加快ux线程的执行,减少卡顿现象的出现,从而提高用户体验。
具体实施时,本申请不受所描述的各个步骤的执行顺序的限制,在不产生冲突的情况下,某些步骤还可以采用其它顺序进行或者同时进行。
由上可知,本申请实施例提供的资源分配方法,确定出用于执行用户交互事件中相关任务的目标线程,并将这些目标线程标记为第一类线程。当线程在运行过程中请求系统资源时,比如CPU资源、IO资源、内存资源等,系统对请求系统资源的线程进行识别,如果请求系统资源的第一类线程,而不是其他线程,则系统会为该线程分配数量更多的资源,例如分配大核的CPU,并且,会以更快的速度为该线程分配资源,例如,将该线程放置运行队列的队首,使得系统能够优先为该线程分配资源。由于执行用户交互事件中相关任务的线程是否能够流畅运行决定着是否会在用户交互事件中产生用户可感知的卡顿,通过该方案,识别出执行用户交互事件中相关任务的线程,并对这些线程的资源分配效率进行优化,以减少用户交互场景下出现卡顿现象。
在一些实施例中,将目标线程标记为第一类线程之后,该方法还包括:若前台进程为应用进程,则在检测到前台进程切换至后台运行时,删除第一预设线程的预设标签。
当前台进程切换到后台运行时,该进程的运行情况已经与用户体验无关,其线程的重要程度也有所下降,因此,可以将该进程对应的第一预设线程的ux标记删除,将这些ux线程恢复为普通线程,按照第二分配机制为其分配资源。
此外,对于那些在用户交互事件中临时创建的任务线程来说,在执行完对应的任务后就会被销毁,其自然会丢失掉ux标签。而对于系统级的第二预设线程来说,即使发生了进程的前后台切换,这些线程始终与用户体验相关,所以始终保有ux标签。
上述实施例介绍了静态ux线程的识别。还有一些线程虽然并没有直接地执行用户交互事件的相关任务,但是这些线程的运行情况也会影响到静态ux线程的运行情况,进而间接地影响到用户交互事件的相关任务的执行。也就是说,这些线程并不是总是与用户体验相关,但是这些线程在执行过程的某段时间内,可能通过资源约束与静态ux线程产生关联,因此,在一些实施例中,为了进一步地减少交互场景下的卡顿现象,将这些与静态ux线程之间有约束关系的线程也标记为ux线程。而一旦这种约束关系结束,就会将该线程恢复至非ux线程。本申请实施例中将这类线程定义为动态ux线程。其中,具体的约束关系包括但不限于进程间通信、线程间通信或者持有临界区资源等。比如,静态ux线程通过进程间通信请求的普通线程,静态ux线程通过某种线程间通信方式请求的普通线程,持有静态ux线程需要的等待信号量、读写信号量、互斥锁等临界区资源的普通线程等,本申请实施例中将这类线程标记为动态ux线程。
基于此,在一些实施例中,该方法还包括:对第一类线程的运行状态进行检测;当检测到有第一类线程进入阻塞状态,则确定与进入阻塞状态的第一类线程之间有约束关系的关联线程;为关联线程添加预设标签,以将关联线程标记为第一类线程。
在一些实施例中,将关联线程标记为第一类线程之后,还包括:当检测到约束关系解除时,删除关联线程的预设标签。
其中,关于线程的阻塞状态,在内核层面一般会区分为D状态(Uninterruptablesleep状态,不可中断的睡眠状态)和S状态(interruptable sleep状态,可中断的睡眠状态),比如,线程发起IO请求但得不到满足,就进入D状态;线程发起同步Binder请求,就会进入S状态。线程进入这些状态一般都是因为这些都是线程任务执行途中因为某些原因或者逻辑,需要主动或者被动地放弃CPU资源。
该实施例中,内核层对静态ux线程的状态进行检测,当检测到ux线程进入到阻塞状态时,确定出与进入阻塞状态的ux线程之间具有约束关系的关联线程,如果这些关联线程没有及时分配到资源,比如IO资源,而导致运行受阻,则由于关联线程的运行缓慢又会导致该ux线程长时间处于阻塞状态,因此,为了避免该ux线程长时间处于阻塞状态,内核层会将识别出的关联线程也标记为ux线程,以提高其IO处理效率,保证其及时执行,进而快速解除该ux线程的阻塞状态。
根据前面实施例所描述的方法,以下将举例作进一步详细说明。
请参阅图2,图2为本发明实施例提供的资源分配方法的第二流程示意图。
方法包括:
在201中,当检测到系统启动时,从系统启动过程创建的线程中确定出第二预设线程,并将第二预设线程标记为第一类线程。
由于执行用户交互事件中相关任务的线程是否能够流畅运行决定着是否会在用户交互事件中产生用户可感知的卡顿,故将这些与用户体验紧密相关的线程记为ux(userexperience,用户体验)线程,即第一类线程。本申请实施例中,将除ux线程之外的线程记为第二类线程。第二类线程的运行情况一般不会影响用户体验。
其中,电子设备的系统架构至少包括应用框架(framework)层和内核(kernel)层,本申请实施例,从框架层和内核层的角度对ux线程进行识别和标记,例如,应用框架层为一些直接执行用户交互事件中相关任务的线程添加预设标签,以将这些线程标记为静态ux线程,内核层将一些间接地影响到用户交互事件中相关任务执行的线程标记为动态ux线程。
由于在执行用户交互事件的过程中,除了对应的进程的线程之外,可能还涉及到一些系统级的线程来完成任务,系统框架层也需要将这些系统级线程标记为ux线程。一般这些线程在系统启动时就会创建,因此,可以在检测到系统启动时,识别出这些线程并进行标记,比如,Surfaceflinger线程、系统动画线程等。
在202中,当检测到有进程切换至前台运行时,确定前台进程。
在203中,从前台进程的线程中识别出用于执行用户交互事件中相关任务的第一预设线程,作为目标线程。
在204中,为目标线程添加预设标签,以将线程标记为第一类线程。
在205中,在前台进程的运行过程中,当检测到有新线程创建时,确定新创建的线程是否用于执行用户交互事件中的相关任务。
在206中,当新创建的线程用于执行用户交互事件中的相关任务时,将新创建的线程标记为第一类线程。
此外,在检测到有进程切换到前台运行时,先确定该前台进程。从该前台进程的线程中确定出用于执行用户交互事件中相关任务的线程,作为目标线程。例如,第一预设线程和一些临时创建的用来执行用户交互事件中相关任务的任务线程。对于第一预设线程,可以判断前台进程的线程的属性信息是否与预设的属性信息匹配,以确定出第一预设线程,将这些第一预设线程标记为ux线程,对于临时创建的任务线程,可以通过判断这些线程是不是用户交互事件的执行过程中创建的用来执行相关任务的线程,如果是,则也将其标记为ux线程。
在207中,对第一类线程的运行状态进行检测。
在208中,当检测到有第一类线程进入阻塞状态,则确定与进入阻塞状态的第一类线程之间有约束关系的关联线程。
在209中,为关联线程添加预设标签,以将关联线程标记为第一类线程。
还有一些线程虽然并没有直接地执行用户交互事件的相关任务,但是这些线程的运行情况也会影响到静态ux线程的运行情况,进而间接地影响到用户交互事件的相关任务的执行。也就是说,这些线程并不是总是与用户体验相关,但是这些线程在执行过程的某段时间内,可能通过资源约束与静态ux线程产生关联,因此,在一些实施例中,为了进一步地减少交互场景下的卡顿现象,将这些与静态ux线程之间有约束关系的线程也标记为ux线程。而一旦这种约束关系结束,就会将该线程恢复至非ux线程。本申请实施例中将这类线程定义为动态ux线程。其中,具体的约束关系包括但不限于进程间通信、线程间通信或者持有临界区资源等。比如,静态ux线程通过进程间通信请求的普通线程,静态ux线程通过某种线程间通信方式请求的普通线程,持有静态ux线程需要的等待信号量、读写信号量、互斥锁等临界资源的普通线程等,本申请实施例中将这类线程标记为动态ux线程。
此外,需要说明的是,动态ux线程的标记是内核层执行的,而从内核的角度来说,并不会去区分这些线程究竟是属于哪一个进程的,因此,内核只单纯从上述约束关系来对动态ux线程进行标记。
可以理解的是,临时创建的用来执行用户交互事件中相关任务的任务线程的标记,以及动态ux线程的标记,并不局限于发生在前台进程运行的某个特定阶段。因此,205至209,与210至211的执行可以交叉的,不受所描述的各个步骤的执行顺序的限制。
在210中,当接收到线程发送的资源分配请求时,确定线程的类别,其中,将除第一类线程之外的其他线程作为第二类线程。
在211中,根据类别和预设分配机制为所述线程分配资源,其中,按照预设分配机制为第一类线程分配系统资源的速度或数量,大于为第二类线程分配系统资源的速度或数量。
通过上述实施例,应用框架层识别出那些直接影响到用户体验的线程并为其添加标记。而线程需要内核为之分配系统资源供其运行。因此,线程在执行任务前,会向内核请求资源。内核在基于该请求为其分配资源时,可以先确定该线程的类别,如果该线程是ux线程,则优先为其分配资源,如果该线程不是ux线程,则按照系统本身的资源分配机制进行分配。具体分配方式请参见上述实施例,在此不再赘述。
由上可知,本发明实施例提出的资源分配方法,应用框架层识别出直接执行用户交互事件中执行相关任务的线程,将其标记为静态ux线程,静态ux线程阻塞时,将阻塞其运行的对端线程标记为动态ux线程,这种阻塞关系由内核层识别并进行动态设置,由静态和动态组成的ux线程群体,在系统运行时将会标记上ux标签以供识别,这一群体极具针对性地覆盖了电子始备复杂系统中真正与用户体验相关的线程,内核可以在IO资源、内存、CPU、网络、GPU(Graphics Processing Unit,图形处理器)等资源上为ux线程进行优先分配,以减少用户交互场景中的卡顿现象,提升用户体验。
在一实施例中还提供一种资源分配装置。请参阅图3,图3为本申请实施例提供的资源分配装置300的结构示意图。其中该资源分配装置300应用于电子设备,该资源分配装置300包括线程标记模块301、线程识别模块302以及资源分配模块303,如下:
线程标记模块301,用于确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;
线程识别模块302,用于当接收到线程发送的资源分配请求时,确定所述线程的类别,其中,将除所述第一类线程之外的其他线程作为第二类线程;
资源分配模块303,还用于根据所述类别和预设分配机制为所述线程分配系统资源,其中,按照预设分配机制为所述第一类线程分配系统资源的速度或数量,大于为所述第二类线程分配系统资源的速度或数量。
在一些实施例中,线程标记模块301还用于:当检测到有进程切换至前台运行时,确定前台进程;从所述前台进程的线程中确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程。
在一些实施例中,线程标记模块301还用于:从所述前台进程的线程中识别出用于执行用户交互事件中相关任务的第一预设线程,作为目标线程;
为所述目标线程添加预设标签,以将所述线程标记为第一类线程。
在一些实施例中,线程标记模块301还用于:在所述前台进程的运行过程中,当检测到有新线程创建时,确定新创建的线程是否用于执行用户交互事件中的相关任务;
当新创建的线程用于执行用户交互事件中的相关任务时,将新创建的线程标记为第一类线程。
在一些实施例中,线程标记模块301还用于:若所述前台进程为应用进程,则在检测到所述前台进程切换至后台运行时,删除所述第一预设线程的预设标签。
在一些实施例中,线程标记模块301还用于:当检测到有第二预设线程创建时,将创建的第二预设线程标记为第一类线程,其中,所述第二预设线程为系统级线程。
在一些实施例中,线程标记模块301还用于:对所述第一类线程的运行状态进行检测;
当检测到有第一类线程进入阻塞状态,则确定与进入阻塞状态的第一类线程之间有约束关系的关联线程;
为所述关联线程添加预设标签,以将所述关联线程标记为所述第一类线程。
在一些实施例中,线程标记模块301还用于:当检测到所述约束关系解除时,删除所述关联线程的所述预设标签。
应当说明的是,本申请实施例提供的资源分配装置与上文实施例中的资源分配方法属于同一构思,通过该资源分配装置可以实现资源分配方法实施例中提供的任一方法,其具体实现过程详见资源分配方法实施例,此处不再赘述。
由上可知,本申请实施例提出的资源分配装置,确定出用于执行用户交互事件中相关任务的目标线程,并将这些目标线程标记为第一类线程。当线程在运行过程中请求系统资源时,比如CPU资源、IO资源、内存资源等,系统对请求系统资源的线程进行识别,如果请求系统资源的第一类线程,而不是其他线程,则系统会为该线程分配数量更多的资源,例如分配大核的CPU,并且,会以更快的速度为该线程分配资源,例如,将该线程放置运行队列的队首,使得系统能够优先为该线程分配资源。由于执行用户交互事件中相关任务的线程是否能够流畅运行决定着是否会在用户交互事件中产生用户可感知的卡顿,通过该方案,识别出执行用户交互事件中相关任务的线程,并对这些线程的资源分配效率进行优化,以减少用户交互场景下出现卡顿现象。
本申请实施例还提供一种电子设备。所述电子设备可以是智能手机、平板电脑等设备。请参阅图4,图4为本申请实施例提供的电子设备的第一种结构示意图。电子设备400包括处理器401和存储器402。其中,处理器401与存储器402电性连接。
处理器401是电子设备400的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或调用存储在存储器402内的计算机程序,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。
存储器402可用于存储计算机程序和数据。存储器402存储的计算机程序中包含有可在处理器中执行的指令。计算机程序可以组成各种功能模块。处理器401通过调用存储在存储器402的计算机程序,从而执行各种功能应用以及数据处理。
在本实施例中,电子设备400中的处理器401会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的计算机程序,从而实现各种功能:
当检测到有进程切换至前台运行时,确定前台进程;
从所述前台进程的线程中确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;
当接收到线程发送的资源分配请求时,确定所述线程的类别,其中,将除所述第一类线程之外的其他线程作为第二类线程;
根据所述类别和预设分配机制为所述线程分配系统资源,其中,按照预设分配机制为所述第一类线程分配系统资源的速度或数量,大于为所述第二类线程分配系统资源的速度或数量。
在一些实施例中,请参阅图5,图5为本申请实施例提供的电子设备的第二种结构示意图。电子设备400还包括:射频电路403、显示屏404、控制电路405、输入单元406、音频电路407、传感器408以及电源409。其中,处理器401分别与射频电路403、显示屏404、控制电路405、输入单元406、音频电路407、传感器408以及电源409电性连接。
射频电路403用于收发射频信号,以通过无线通信与网络设备或其他电子设备进行通信。
显示屏404可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图像、文本、图标、视频和其任意组合来构成。
控制电路405与显示屏404电性连接,用于控制显示屏404显示信息。
输入单元406可用于接收输入的数字、字符信息或用户特征信息(例如指纹),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。其中,输入单元406可以包括指纹识别模组。
音频电路407可通过扬声器、传声器提供用户与电子设备之间的音频接口。其中,音频电路407包括麦克风。所述麦克风与所述处理器401电性连接。所述麦克风用于接收用户输入的语音信息。
传感器408用于采集外部环境信息。传感器408可以包括环境亮度传感器、加速度传感器、陀螺仪等传感器中的一种或多种。
电源409用于给电子设备400的各个部件供电。在一些实施例中,电源409可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
虽然图中未示出,电子设备400还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本实施例中,电子设备400中的处理器401会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的计算机程序,从而实现各种功能:
当检测到有进程切换至前台运行时,确定前台进程;
从所述前台进程的线程中确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;
当接收到线程发送的资源分配请求时,确定所述线程的类别,其中,将除所述第一类线程之外的其他线程作为第二类线程;
根据所述类别和预设分配机制为所述线程分配系统资源,其中,按照预设分配机制为所述第一类线程分配系统资源的速度或数量,大于为所述第二类线程分配系统资源的速度或数量。
由上可知,本申请实施例提供了一种电子设备,所述电子设备确定出用于执行用户交互事件中相关任务的目标线程,并将这些目标线程标记为第一类线程。当线程在运行过程中请求系统资源时,比如CPU资源、IO资源、内存资源等,系统对请求系统资源的线程进行识别,如果请求系统资源的第一类线程,而不是其他线程,则系统会为该线程分配数量更多的资源,例如分配大核的CPU,并且,会以更快的速度为该线程分配资源,例如,将该线程放置运行队列的队首,使得系统能够优先为该线程分配资源。由于执行用户交互事件中相关任务的线程是否能够流畅运行决定着是否会在用户交互事件中产生用户可感知的卡顿,通过该方案,识别出执行用户交互事件中相关任务的线程,并对这些线程的资源分配效率进行优化,以减少用户交互场景下出现卡顿现象。
本申请实施例还提供一种存储介质,所述存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,所述计算机执行上述任一实施例所述的资源分配方法。
需要说明的是,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过计算机程序来指令相关的硬件来完成,所述计算机程序可以存储于计算机可读存储介质中,所述存储介质可以包括但不限于:只读存储器(ROM,Read OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
此外,本申请中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、系统、产品或设备没有限定于已列出的步骤或模块,而是某些实施例还包括没有列出的步骤或模块,或某些实施例还包括对于这些过程、方法、产品或设备固有的其它步骤或模块。
以上对本申请实施例所提供的资源分配方法、装置、存储介质及电子设备进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (11)
1.一种资源分配方法,其特征在于,包括:
确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;
当接收到线程发送的资源分配请求时,确定所述线程的类别,其中,将除所述第一类线程之外的其他线程作为第二类线程;
根据所述类别和预设分配机制为所述线程分配系统资源,其中,按照所述预设分配机制为所述第一类线程分配系统资源的速度或数量,大于为所述第二类线程分配系统资源的速度或数量。
2.如权利要求1所述的资源分配方法,其特征在于,所述确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程,包括:
当检测到有进程切换至前台运行时,确定前台进程;
从所述前台进程的线程中确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程。
3.如权利要求2所述的资源分配方法,其特征在于,所述从所述前台进程的线程中确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程,包括:
从所述前台进程的线程中识别出用于执行用户交互事件中相关任务的第一预设线程,作为目标线程;
为所述目标线程添加预设标签,以将所述线程标记为第一类线程。
4.如权利要求3所述的资源分配方法,其特征在于,所述从所述前台进程的线程中确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程,还包括:
在所述前台进程的运行过程中,当检测到有新线程创建时,确定新创建的线程是否用于执行用户交互事件中的相关任务;
当新创建的线程用于执行用户交互事件中的相关任务时,将新创建的线程标记为第一类线程。
5.如权利要求3所述的资源分配方法,其特征在于,所述将所述目标线程标记为第一类线程之后,还包括:
若所述前台进程为应用进程,则在检测到所述前台进程切换至后台运行时,删除所述第一预设线程的预设标签。
6.如权利要求1所述的资源分配方法,其特征在于,所述确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程,还包括:
当检测到有第二预设线程创建时,将创建的第二预设线程标记为第一类线程,其中,所述第二预设线程为系统级线程。
7.如权利要求1至6任一项所述的资源分配方法,其特征在于,所述方法还包括:
对所述第一类线程的运行状态进行检测;
当检测到有第一类线程进入阻塞状态,则确定与进入阻塞状态的第一类线程之间有约束关系的关联线程;
为所述关联线程添加预设标签,以将所述关联线程标记为所述第一类线程。
8.如权利要求7所述的资源分配方法,其特征在于,所述将所述关联线程标记为所述第一类线程之后,还包括:
当检测到所述约束关系解除时,删除所述关联线程的所述预设标签。
9.一种资源分配装置,其特征在于,包括:
线程标记模块,用于确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;
线程识别模块,用于当接收到线程发送的资源分配请求时,确定所述线程的类别,其中,将除所述第一类线程之外的其他线程作为第二类线程;
资源分配模块,用于根据所述类别和预设分配机制为所述线程分配系统资源,其中,按照所述预设分配机制为所述第一类线程分配系统资源的速度或数量,大于为所述第二类线程分配系统资源的速度或数量。
10.一种存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至8任一项所述的资源分配方法。
11.一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,其特征在于,所述处理器通过调用所述计算机程序,用于执行如权利要求1至8任一项所述的资源分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010627156.8A CN111831433A (zh) | 2020-07-01 | 2020-07-01 | 资源分配方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010627156.8A CN111831433A (zh) | 2020-07-01 | 2020-07-01 | 资源分配方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111831433A true CN111831433A (zh) | 2020-10-27 |
Family
ID=72900042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010627156.8A Pending CN111831433A (zh) | 2020-07-01 | 2020-07-01 | 资源分配方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831433A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112836158A (zh) * | 2021-03-09 | 2021-05-25 | Vidaa美国公司 | 显示设备上的资源加载方法及显示设备 |
CN112925595A (zh) * | 2021-01-25 | 2021-06-08 | 北京达佳互联信息技术有限公司 | 资源分发方法、装置、电子设备及存储介质 |
CN113076194A (zh) * | 2021-03-29 | 2021-07-06 | Oppo广东移动通信有限公司 | 内存资源分配方法、装置、终端和存储介质 |
CN117931418A (zh) * | 2022-10-26 | 2024-04-26 | 荣耀终端有限公司 | 资源管控方法、装置、芯片、电子设备及介质 |
WO2024183518A1 (zh) * | 2023-03-09 | 2024-09-12 | 华为技术有限公司 | 资源调度方法及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684069A (zh) * | 2017-10-13 | 2019-04-26 | 华为技术有限公司 | 资源管理的方法及终端设备 |
CN109783028A (zh) * | 2019-01-16 | 2019-05-21 | Oppo广东移动通信有限公司 | I/o调度的优化方法、装置、存储介质及智能终端 |
CN109992398A (zh) * | 2017-12-29 | 2019-07-09 | 广东欧珀移动通信有限公司 | 资源管理方法、装置、移动终端及计算机可读存储介质 |
CN109992400A (zh) * | 2017-12-29 | 2019-07-09 | 广东欧珀移动通信有限公司 | 资源分配方法、装置、移动终端及计算机可读存储介质 |
CN111158910A (zh) * | 2019-12-27 | 2020-05-15 | Oppo广东移动通信有限公司 | 内存管理方法、装置、存储介质及电子设备 |
-
2020
- 2020-07-01 CN CN202010627156.8A patent/CN111831433A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684069A (zh) * | 2017-10-13 | 2019-04-26 | 华为技术有限公司 | 资源管理的方法及终端设备 |
CN109992398A (zh) * | 2017-12-29 | 2019-07-09 | 广东欧珀移动通信有限公司 | 资源管理方法、装置、移动终端及计算机可读存储介质 |
CN109992400A (zh) * | 2017-12-29 | 2019-07-09 | 广东欧珀移动通信有限公司 | 资源分配方法、装置、移动终端及计算机可读存储介质 |
CN109783028A (zh) * | 2019-01-16 | 2019-05-21 | Oppo广东移动通信有限公司 | I/o调度的优化方法、装置、存储介质及智能终端 |
CN111158910A (zh) * | 2019-12-27 | 2020-05-15 | Oppo广东移动通信有限公司 | 内存管理方法、装置、存储介质及电子设备 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925595A (zh) * | 2021-01-25 | 2021-06-08 | 北京达佳互联信息技术有限公司 | 资源分发方法、装置、电子设备及存储介质 |
CN112836158A (zh) * | 2021-03-09 | 2021-05-25 | Vidaa美国公司 | 显示设备上的资源加载方法及显示设备 |
CN113076194A (zh) * | 2021-03-29 | 2021-07-06 | Oppo广东移动通信有限公司 | 内存资源分配方法、装置、终端和存储介质 |
CN117931418A (zh) * | 2022-10-26 | 2024-04-26 | 荣耀终端有限公司 | 资源管控方法、装置、芯片、电子设备及介质 |
WO2024183518A1 (zh) * | 2023-03-09 | 2024-09-12 | 华为技术有限公司 | 资源调度方法及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111831440B (zh) | 内存回收方法、装置、存储介质及电子设备 | |
CN111831441A (zh) | 内存回收方法、装置、存储介质及电子设备 | |
CN111831433A (zh) | 资源分配方法、装置、存储介质及电子设备 | |
CN111831434A (zh) | 资源分配方法、装置、存储介质及电子设备 | |
CN111831437B (zh) | 设备管理方法、装置、存储介质及电子设备 | |
JP6320520B2 (ja) | 多数の優先順キューに対するスレッドの割り当ておよびスケジューリング | |
CN111813520A (zh) | 线程调度方法、装置、存储介质及电子设备 | |
CN111831414A (zh) | 线程迁移方法、装置、存储介质及电子设备 | |
CN111831435A (zh) | 内存分配方法、装置、存储介质及电子设备 | |
CN111831438A (zh) | 资源分配方法、装置、存储介质及电子设备 | |
CN111813521A (zh) | 线程调度方法、装置、存储介质及电子设备 | |
US8782674B2 (en) | Wait on address synchronization interface | |
CN111597042A (zh) | 业务线程运行方法、装置、存储介质及电子设备 | |
CN111831413A (zh) | 线程调度方法、装置、存储介质及电子设备 | |
CN113495780A (zh) | 任务调度方法、装置、存储介质及电子设备 | |
CN111831432B (zh) | Io请求的调度方法、装置、存储介质及电子设备 | |
CN111831436B (zh) | Io请求的调度方法、装置、存储介质及电子设备 | |
CN111475299B (zh) | 内存分配方法、装置、存储介质及电子设备 | |
CN111831411B (zh) | 任务处理方法、装置、存储介质及电子设备 | |
CN111831462A (zh) | Io请求的处理方法、装置、存储介质及电子设备 | |
US20040098722A1 (en) | System, method, and computer program product for operating-system task management | |
CN107977275B (zh) | 基于消息队列的任务处理方法及相关设备 | |
CN111831439A (zh) | Io请求的处理方法、装置、存储介质及电子设备 | |
CN111831442A (zh) | 一种资源分配的方法、装置、存储介质及电子设备 | |
CN111831443A (zh) | 处理器状态调整方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |