CN113535340B - 一种任务调度方法、装置及电子设备 - Google Patents

一种任务调度方法、装置及电子设备 Download PDF

Info

Publication number
CN113535340B
CN113535340B CN202010285991.8A CN202010285991A CN113535340B CN 113535340 B CN113535340 B CN 113535340B CN 202010285991 A CN202010285991 A CN 202010285991A CN 113535340 B CN113535340 B CN 113535340B
Authority
CN
China
Prior art keywords
thread
real
task
input event
time
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.)
Active
Application number
CN202010285991.8A
Other languages
English (en)
Other versions
CN113535340A (zh
Inventor
王阳涛
窦泽飞
黄一炜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202010285991.8A priority Critical patent/CN113535340B/zh
Priority to PCT/CN2021/079057 priority patent/WO2021208627A1/zh
Publication of CN113535340A publication Critical patent/CN113535340A/zh
Application granted granted Critical
Publication of CN113535340B publication Critical patent/CN113535340B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本申请实施例提供了一种任务调度方法、装置及电子设备。当电子设备系统中的第一进程接收到输入事件时,设置第一进程及其关键线程为实时任务,关键线程包括第一进程的用于处理输入事件的第一线程;当第一线程处理输入事件完毕时,设置第一进程及其关键线程为非实时任务;当第二线程通过跨进程调用线程调用第二进程时,判断第二线程是否为实时任务;如果第二线程为实时任务,将跨进程调用线程设置为实时任务;其中,电子设备对实时任务的调度优先级高于非实时任务的调度优先级。这样,可以防止上述用于处理输入事件的进程或线程被其他进程或线程抢占,缩短上述进程或线程的响应时间,从而降低电子设备对于用户在显示屏上执行触摸操作的响应延时。

Description

一种任务调度方法、装置及电子设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种任务调度方法、装置及电子设备。
背景技术
电子设备中的软件系统中运行着各种用于实现各类软件功能的进程及其相关线程。每一个进程或者线程的运行都需要占用一定的硬件资源,例如处理器资源。当处理器负载较高时,电子设备无法提供足够的处理器资源调度给各个进程及其相关线程使用,使得进程和/或线程之间会争抢有限的处理器资源,导致进程和/或线程出现排队、响应慢的情况,增加了各个进程及其相关线程执行任务消耗的时间。
例如,当用户在电子设备的显示屏上执行点击或者滑动等触摸操作时,从用户开始操作到显示屏显示出相应的界面具有一个响应延时。当处理器负载较低时,用于响应触摸操作的进程或者线程能够迅速利用空闲的处理器资源迅速完成相应任务,电子设备一般不会出现卡顿。然而,当处理器负载较高时,电子设备运行的各个进程或者线程在完全公平调度机制(completely fair scheduler,CFS)的调度下会抢占处理器资源,导致用于响应触摸操作的进程或者线程需要花费更长的时间去完成相应任务,使得电子设备出现界面卡顿、操作响应延时高等问题。
发明内容
本申请提供了一种任务调度方法、装置及电子设备,能够降低电子设备对于用户在显示屏上执行触摸操作的响应延时。
第一方面,本申请提供了一种任务调度方法,该方法可以应用于具备显示屏的电子设备。该方法具体包括:当第一进程接收到输入事件时,设置第一进程及其关键线程为实时任务,关键线程包括第一进程的用于处理输入事件的第一线程;当第一线程处理输入事件完毕时,设置第一进程及其关键线程为非实时任务;其中,电子设备对实时任务的调度优先级高于非实时任务的调度优先级。根据上述方案,第一进程及其关键线程在处理输入事件时具有更高的调度优先级,能够避免其需要占用的处理器资源被其他进程或者线程抢占,缩短第一进程及其关键线程对输入事件的响应时间,从而降低电子设备对于用户在显示屏上执行触摸操作的响应延时。
在一种实现方式中,输入事件包括对应用户手指在电子设备的显示屏按下的第一输入事件,以及,对应用户手指从电子设备的显示屏抬起的第二输入事件。当第一进程接收到输入事件时,设置第一进程及其关键线程为实时任务,包括:当第一进程接收到第一输入事件时,设置第一进程为实时任务。当第一进程接收到输入事件时,设置第一进程及其关键线程为实时任务,还包括:当第一进程接收到第二输入事件时,创建第一线程,并且设置第一线程为实时任务。由此,当用户手指在显示屏按下时,第一进程的调度优先级就首先被提高,从而快速地判断用户手指的输入行为,当用户手指从显示屏抬起时,用于处理输入事件的第一线程就被设置为实时任务,快速处理输入事件,降低电子设备对于用户在显示屏上执行触摸操作的响应延时。
在一种实现方式中,输入事件是电子设备的输入读取线程和输入响应线程根据用户手指在电子设备的显示屏执行的按下和/或抬起操作生成的;其中,输入读取线程用于获取用户手指在电子设备的显示屏按下的坐标点信息,以及将坐标点信息传递给输入响应线程;输入响应线程用于根据坐标点信息,识别用户手指在电子设备的显示屏执行的按下和/或抬起操作,以生成对应的输入事件。输入读取线程和/或输入响应线程在进程初始化时被设置成实时任务。由此,输入读取线程和/或输入响应线程能够始终对用户手指的输入行为进行快速响应,及时地生成输入事件,并上报给第一进程,从而降低电子设备对于用户在显示屏上执行触摸操作的响应延时。
在一种实现方式中,第一进程为Android系统的systemUI进程。
第二方面,本申请提供了一种任务调度方法,该方法可以应用于具备显示屏的电子设备。该方法具体包括:当第二线程通过跨进程调用线程调用第二进程时,判断第二线程是否为实时任务;如果第二线程为实时任务,将跨进程调用线程设置为实时任务;其中,电子设备对实时任务的调度优先级高于非实时任务的调度优先级。根据上述方案,在处理输入事件的过程中,如果作为实时任务的第二线程通过跨进程调用线程调用第二进程,则将这个跨进程调用线程设置为实时任务,使得第二进程被快速调用,更快地响应,从而降低电子设备对于用户在显示屏上执行触摸操作的响应延时。
在一种实现方式中,如果第二线程为实时任务,将跨进程调用线程设置为实时任务,包括:如果第二线程为实时任务,获取第二线程的调用标识,如果调用标识为第一标识,则将跨进程调用线程设置为实时任务。
在一种实现方式中,当第二进程被第二线程调用完毕时,将跨进程调用线程设置为非实时任务。由此,避免跨进程调用线程对正在执行其他任务的其他进程或者线程造成抢占。
在一种实现方式中,跨进程调用线程属于第二进程。
第三方面,本申请提供了一种任务调度装置,包括:第一设置模块,用于当第一进程接收到输入事件时,设置第一进程及其关键线程为实时任务,关键线程包括第一进程的用于处理输入事件的第一线程;第二设置模块,用于当第一线程处理输入事件完毕时,设置第一进程及其关键线程为非实时任务;其中,装置对实时任务的调度优先级高于非实时任务的调度优先级。
在一种实现方式中,输入事件包括对应用户手指在装置的显示屏按下的第一输入事件,以及,对应用户手指从装置的显示屏抬起的第二输入事件。
在一种实现方式中,第一设置模块,具体用于当第一进程接收到第一输入事件时,设置第一进程为实时任务。
在一种实现方式中,第一设置模块,具体用于当第一进程接收到第二输入事件时,创建第一线程,并且设置第一线程为实时任务。
在一种实现方式中,输入事件是该装置的输入读取线程和输入响应线程根据用户手指在装置的显示屏执行的按下和/或抬起操作生成的;其中,输入读取线程用于获取用户手指在装置的显示屏按下的坐标点信息,以及将坐标点信息传递给输入响应线程;输入响应线程用于根据坐标点信息,识别用户手指在装置的显示屏执行的按下和/或抬起操作,以生成对应的输入事件。
在一种实现方式中,第一进程为Android系统的systemUI进程。
第四方面,本申请提供了一种任务调度装置,包括:判断模块,用于当第二线程通过跨进程调用线程调用第二进程时,判断第二线程是否为实时任务;第三设置模块,用于如果第二线程为实时任务,将跨进程调用线程设置为实时任务;其中,电子设备对实时任务的调度优先级高于非实时任务的调度优先级。
在一种实现方式中,第三设置模块,具体用于当第二线程为实时任务时,获取第二线程的调用标识,如果调用标识为第一标识,则将跨进程调用线程设置为实时任务。
在一种实现方式中,该装置还包括:第四设置模块,用于当第二进程被第二线程调用完毕时,将跨进程调用接口设置为非实时任务。
在一种实现方式中,跨进程调用线程属于第二进程。
第五方面,本申请提供一种电子设备,该电子设备包括显示屏、存储器和一个或多个处理器;显示屏、存储器和处理器耦合;存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当处理器执行计算机指令时,使得电子设备执行如第一方面及其任一种实现方式,和/或,如第二方面及其任一种实现方式的方法。
第六方面,本申请提供一种芯片系统,该芯片系统应用于包括显示屏的电子设备;芯片系统包括一个或多个接口电路和一个或多个处理器;接口电路和处理器通过线路互联;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行如第一方面及其任一种实现方式,和/或,如第二方面及其任一种实现方式的方法。
第七方面,本申请提供一种计算机存储介质,该计算机存储介质包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如第一方面及其任一种实现方式,和/或,如第二方面及其任一种实现方式的方法。
第八方面,本申请提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如第一方面及其任一种实现方式,和/或,如第二方面及其任一种实现方式的方法。
可以理解地,上述提供的第三方面、第四方面的装置,第五方面的电子设备、第六方面的芯片系统,第七方面的计算机存储介质,第八方面的计算机程序产品所能达到的有益效果,可参考第一方面及其任一种实现方式,和/或,如第二方面及其任一种实现方式中的有益效果,此处不再赘述。
附图说明
图1是本申请实施例提供的一种电子设备的结构示意图;
图2是用户在电子设备的显示屏上点击home键的示意图;
图3是电子设备对用户在显示屏的触摸操作的响应过程示意图;
图4是本申请实施例一提供的一种任务调度方法的流程图;
图5是CFS公平调度的机制的示意图;
图6是systemUI进程和systemUI_navThread线程的实时任务设置示意图;
图7是本申请实施例一减少用户在显示屏上执行触摸操作的响应延时的效果示意图;
图8是本申请实施例一减少用户在显示屏上执行触摸操作的响应延时的效果示意图;
图9是本申请实施例二提供的一种任务调度方法的流程图;
图10是本申请实施例二减少用户在显示屏上执行触摸操作的响应延时的效果示意图;
图11是本申请实施例二减少用户在显示屏上执行触摸操作的响应延时的效果示意图;
图12是本申请实施例二减少线程间锁竞争的效果示意图;
图13是本申请实施例提供的一种任务调度装置的示意图;
图14是本申请实施例提供的一种任务调度装置的示意图;
图15是本申请实施例提供的一种芯片系统的示意图。
具体实施方式
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本申请实施例提供了一种任务调度方法,该方法可以应用到包含显示屏的电子设备中。具体地,能够降低电子设备对于用户在显示屏上执行触摸操作的响应延时。其中,“用户在显示屏上执行触摸操作的响应延时”例如可以是从用户在显示屏上执行点击操作到显示屏显示出相应的界面所经过的延时。
请参考图1,为本申请实施例提供的一种电子设备100的结构示意图。如图1所示,电子设备100可以包括处理器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等。
可以理解的是,本实施例示意的结构并不构成对电子设备100的具体限定。在另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,GPU,图像信号处理器(image signalprocessor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signalprocessor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。该显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。
其中,本申请实施例中的显示屏194可以是触摸屏。即该显示屏194中集成了触摸传感器180K。该触摸传感器180K也可以称为“触控面板”。也就是说,显示屏194可以包括显示面板和触摸面板,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器180K检测到的触摸操作后,可以由内核层的驱动(如TP驱动)传递给上层,以确定输入事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。ISP用于处理摄像头193反馈的数据。摄像头193用于捕获静态图像或视频。数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。例如,在本申请实施例中,处理器110可以通过执行存储在内部存储器121中的指令,内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。耳机接口170D用于连接有线耳机。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。本申请实施例中,电子设备100可以通过压力传感器180A获取用户的触摸操作的按压力度。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。
以下实施例中的方法均可以在具有上述硬件结构的电子设备100中实现。
可以理解的是,电子设备中的软件系统中运行着各种用于实现各类软件功能的进程及其相关线程。每一个进程或者线程的运行都需要占用一定的硬件资源,例如处理器资源。电子设备的处理器资源的占用率可以称作处理器负载或者系统负载。当处理器负载较低时,电子设备有充足的处理器资源调度给各个进程及其相关线程使用,因此各个进程及其相关线程执行任务消耗的时间较短。当处理器负载较高时,电子设备无法提供足够的处理器资源调度给各个进程及其相关线程使用,使得进程和/或线程之间会争抢有限的处理器资源,导致进程和/或线程出现排队、响应慢的情况,增加了各个进程及其相关线程执行任务消耗的时间。
可以理解的是,处理器是否容易出现高负载,与处理器的性能有关,处理器的性能越高,越不容易出现高负载,处理器性能越低,越容易出现高负载。其中,处理器的性能是由处理器的物理核心(core)数量、各个物理核心的架构和基准频率决定的。一般来说,在物理核心的架构和基准频率相同的情况下,物理核心的数量越多,处理器的性能越高;在物理核心的架构相同的情况下,物理核心的基准频率越高,处理器的性能越高。另外,处理器的性能还与物理核心的温度有关,当物理核心的温度过高时,物理核心会降低运行频率,从而导致处理器的性能下降。
“用户在显示屏上执行触摸操作的响应延时”至少可以出现在以下几种任务场景中:
(1)用户点击显示屏上的导航键时,显示屏显示相应的界面所消耗的延时。示例地,在Android系统中,导航键可以包括返回键(back)、主屏幕键(home,以下简称home键)、最近打开的任务键(rencent)。其中,如图2所示,当用户点击home键010时,显示屏从当前显示的界面返回到主屏幕界面,例如Android系统的启动器launcher界面,那么“响应延时”就是从用户点击home键到显示屏显示launcher界面的延时;当用户点击返回键020时,显示屏从当前显示的界面返回到上一个显示的界面,那么“响应延时”就是从用户点击返回键到显示屏显示上一个界面的延时;当用户点击最近打开的任务键030时,显示屏从当前显示的界面切换到多任务窗口界面(即最近打开的任务窗口),那么“响应延时”就是从用户点击最近打开的任务键到显示屏显示多任务窗口界面的延时。
(2)用户在显示屏顶部向下滑动时,状态栏从显示屏顶部滑出所消耗的延时。
(3)用户在状态栏点击一个应用的通知消息,显示屏显示该应用的消息界面所消耗的延时。
请参见图3,下面以用户在运行有Android系统的电子设备的显示屏上点击home键为例,示出电子设备对用户在显示屏的触摸操作的响应过程。如图3所示,当用户在运行有Android系统的电子设备的显示屏上点击home键时,Android系统的系统服务进程system_server、系统界面主进程systemUI和启动器launcher参与到这个触摸响应。整个响应过程可以包括以下步骤①-步骤⑧,从步骤①-步骤⑧消耗的时间。即为“用户在显示屏上执行触摸操作的响应延时”:
步骤①:当用户点击显示屏的home键时,显示屏的硬件驱动持续采集用户触摸显示屏的坐标点。
步骤②:系统服务进程system_server的InputReader线程可以从显示屏的硬件驱动中读取上述坐标点,并传递给InputDispatcher线程。
步骤③:InputDispatcher线程在第一次接收到InputReader线程传递的坐标点时,识别为对应用户手指在显示屏按下的touchDown事件;然后,InputDispatcher线程按照一定频率持续读取InputReader线程传递过来的坐标点信息,并识别为对应用户手指在显示屏上驻留或滑动的touchMove事件;当InputDispatcher线程读取不到InputReader线程传递过来的坐标点时,识别为对应用户手指抬起(即离开屏幕)的touchUp事件。InputDispatcher线程同时判断上述坐标点在显示屏上对应的处于焦点界面的控件或应用,并根据判断结果,将上述输入事件发送给对应的进程去处理,其中,“处于焦点界面的控件或应用”是指要对输入事件做出相应和处理的控件或应用。示例地,home键属于Android系统导航栏控件,对应的进程是systemUI进程,因此,当InputDispatcher线程判断处于焦点界面的是导航栏控件时,会将上述输入事件发送给systemUI进程。
步骤④:systemUI进程接收到来自InputDispatcher线程的输入事件消息后,根据内部的逻辑判断该输入事件是点击事件还是长按事件。例如,当touchDown事件与touchUp事件的时间间隔小于一个阈值时,识别为点击事件。systemUI进程在识别到用户对home键的点击事件时,可创建相应的systemUI_navThread线程来处理这一点击事件。需要补充说明的是,在Android系统中,systemUI进程可以处理导航栏、状态栏、最近任务列表/窗口、截图和屏幕录制等系统界面的输入事件,systemUI_navThread线程则具体用于处理导航栏的输入事件。
步骤⑤:systemUI_navThread线程被创建后,通过system_server进程的跨进程调用binder线程向system_server进程发送执行与home键被点击(包括手指按下和抬起)相对应的动画效果的通知消息。通知消息发送完成之后,systemUI_navThread线程即完成任务。
步骤⑥:system_server进程通过自身的binder线程接收来自systemUI_navThread线程的通知消息,并唤醒InputDispatcher线程处理这一消息。
步骤⑦:InputDispatcher线程被唤醒后,需要进行一系列的系统级的判断和决策,例如:判断系统后台是否存在活动应用activity的操作,如果有,则暂停;判断系统前台是否存在其他活动窗口,例如输入法、对话框等,如果有,则关闭。
步骤⑧:InputDispatcher线程通过launcher进程的异步binder线程调用launcher进程完成动画效果和主界面图像对应的帧绘制DrawFrame和帧渲染等操作,并图像帧在显示屏进行显示。
可以理解的是,上述各个进程和线程在执行上述处理输入事件的各个步骤时需要消耗一定的时间,造成了“用户在显示屏上执行触摸操作的响应延时”。另外,电子设备的系统中除了运行上述system_server进程、systemUI进程、启动器launcher、InputReader线程、InputDispatcher线程和systemUI_navThread线程之外,还会同时运行着几十个甚至上百个多个进程,这些进程及其启动的各个线程用于执行不同的任务,例如软件推送、设备定位、后台下载、后台唤醒、媒体播放、数据服务等。可以理解的是,每个进程或线程为了完成相应的任务都需要占用一定的处理器资源,在处理器资源有限的情况下,为了保证这些任务在一段时间内都能够得到执行,Android等系统对于这些任务采取了完全公平调度机制CFS。基于CFS机制,系统按照一定的队列顺序为各个进程或线程分配使用处理器资源的时间,使得各个进程或线程按照队列顺序依次执行任务。在CFS机制下,各个进程或线程从任务准备就绪到获得完成任务所需的处理器资源存在一个等待时间。因此,当用户点击home键时,上述各个用于处理输入事件的进程或者线程等也需要加入到CFS的队列中,等待CFS为其分配处理器资源,从增加了“用户在显示屏上执行触摸操作的响应延时”。
实施例一
下面以用户在电子设备的显示屏上点击home键为例,对本申请实施例一提供的任务调度方法进行具体的阐述,以说明该方法是如何降低“用户在显示屏上执行触摸操作的响应延时”的。在本申请实施例一中,systemUI进程可以对应权利要求书中的第一进程;systemUI_navThread线程和systemUI_statusBar线程可以对应权利要求书中的关键线程,例如第一线程;InputReader线程可以对应权利要求书中的输入读取线程;InputDispatcher线程例如可以对应权利要求书中的输入响应线程;touchDown事件可以对应权利要求书中的第一输入事件;touchUp事件例如可以对应权利要求书中的第二输入事件。
请参见图4,为本申请实施例一提供的一种任务调度方法的流程图。该方法包括:
步骤S101,当systemUI进程接收到输入事件时,设置systemUI进程及其关键线程为实时任务,其中,关键线程包括systemUI进程的用于处理所述输入事件的systemUI_navThread线程。
步骤S102,systemUI进程在systemUI_navThread线程处理输入事件完毕之后,设置自身及其关键线程为非实时任务。
在Android系统系统中,systemUI进程一般负责实现以下任务:
(1)主屏幕管理,例如:从当前界面返回主屏幕,管理主屏幕布局等。
(2)状态栏信息的展示,例如:电池电量、wi-fi状态、蜂窝移动网络状态、时间、应用程序的推送消息、短信消息、未接电话消息等。
(3)壁纸管理,例如:设定锁屏壁纸或主屏幕壁纸,壁纸切换等。
(4)截图功能,例如:截取显示屏当前显示的内容,滚动截取长截图等。
(5)近期任务栏显示,例如:长按home键或者从显示屏底部向上滑动显示最近使用的应用程序APP等。
(6)录制屏幕功能。
可以理解的是,上述任务可以是systemUI进程根据接收到的对应用户在显示屏上点击、滑动或者滑动+停留等操作的输入事件执行的。例如,当用户点击home键时,systemUI进程要执行从当前界面返回主屏幕的任务;当用户从显示屏的顶部向下滑动时,systemUI进程要执行下拉显示状态栏的任务;当用户从显示屏底部向上滑动并停留时,systemUI进程要执行显示最近使用的APP的任务。
具体实现中,针对不同的输入事件时,systemUI进程会创建不同的线程以执行不同的任务。例如,当用户点击home键时,systemUI进程会创建systemUI_navThread线程去执行返回主屏幕的任务;当用户从显示屏的顶部向下滑动时,systemUI进程会创建systemUI_statusBar线程去执行下拉显示状态栏的任务。
需要说明的是,Android系统的CFS机制针对各个进程或线程引入了调度优先级概念。调度优先级影响着CFS机制为各个进程和线程分配处理器资源的策略,一般来说,CFS机制会为调度优先级高的进程或者线程分配更多的处理器资源(例如分配给进程或者线程更长的处理器的占用时间),而为调度优先级低的进程或者线程分配更少的处理器资源(例如分配给进程或者线程更短的处理器占用时间)。
在一个示例中,CFS机制可以基于下面的计算公式为各个进程或者线程分配处理器的占用时间:
Figure BDA0002448525510000101
其中,当CFS队列中包含N个进程(或线程)时,ti表示分配给第i个进程(或线程)的时间(i∈N),T表示CFS可调度的处理器总的时间资源,wi表示第i个进程(或线程)的调度优先级,
Figure BDA0002448525510000102
表示CFS队列所有进程(或线程)调度优先级之和。
调度优先级可以使用一定范围区间内的数值表示,调度优先级越高,对应的数值越小,调度优先级越低,对应的数值越大。例如,调度优先级的取值范围可以是0~139,那么,对于任意的线程A和线程B,其调度优先级可以是0-139中的任意数值(一般为整数)。示例地,如果线程A的调度优先级的取值是100,线程B的调度优先级的取值是50,则表示线程A的调度优先级低于线程B的优先级;如果线程A的调度优先级的取值是50,线程B的调度优先级的取值是100,则表示线程A的调度优先级高于线程B的优先级;如果线程A的调度优先级的取值是50,线程B的调度优先级的取值也是50,则表示线程A的调度优先级等于线程B的优先级。
可以理解的是,对于一个进程或者线程来说,在处理器性能一定的情况下,其完成一项任务,例如处理用户点击home键的输入事件所消耗的时间是恒定的。那么,根据上述公式,假设CFS队列包含N个线程,并且这N个线程具有相同的调度优先级(例如:wi=20),则图5所示,每个线程都可以被CFS分配相同的处理器时间,即ti=T×20/(N×20)=(1/N)T。那么,对于其中用于处理输入事件的线程,例如线程1来说,如果它在(1/N)T的时间内没有完成任务,处理器资源就会由于CFS的调度而被其他进程或者线程抢占,因此线程2需要等候CFS为其下一次分配处理器资源时才能继续执行任务,如果下一次也没有完成任务,那么线程2还需要等候CFS为其再一次分配处理器资源时才能继续执行任务。这种由于CFS调度导致多个进程或者线程在执行任务时相互抢占并且频繁等待处理器资源的情况在处理器处于高负载时会更加严重,导致进程或者线程完成任务所消耗的总时长更长,当被抢占的进程或者线程是处理输入事件的进程或者线程时,就会增加“用户在显示屏上执行触摸操作的响应延时”。
根据图5,本申请实施例的基本思路是:当systemUI进程接收到输入事件时,如果能够减少systemUI进程及其关键线程(例如systemUI_navThread线程)的处理器时间被其他进程或者线程抢占,缩短systemUI进程及其关键线程获得处理器资源的等待时间,就能够提高systemUI进程及其关键线程对输入事件的响应速度,实现降低“用户在显示屏上执行触摸操作的响应延时”的目的。
为达到上述目的,本申请实施例将各个进程和线程划分为实时任务和非实时任务。实时任务的调度优先级高于非实时任务的调度优先级,使得实时任务不会被非实时任务抢占。示例地,当调度优先级的取值范围是0~139时,可以设置实时任务的调度优先级的取值范围是0~99,非实时任务的调度优先级的取值范围是100~139。实时任务和非实时任务是动态设置的,在不同时刻,一个进程或者线程可能是实时任务,也可能是非实时任务,因此同一个进程或者线程在不同时刻的调度优先级也可以是不同的。示例地,当线程A是实时任务时,它的调度优先级例如可以是98,当线程A是非实时任务时,它的调度优先级例如可以是120。
本申请实施例中,systemUI进程在未接收到输入事件时,设置自身及其关键线程为非实时任务。当systemUI进程接收到用户点击home键的输入事件时,首先设置自身为实时任务,然后创建用于处理该输入事件的systemUI_navThread线程,并设置systemUI_navThread线程为实时任务,由此避免其他进程或者线程抢占systemUI进程和systemUI_navThread线程的处理器资源。systemUI_navThread线程被创建后,开始具体处理该输入事件,例如通过Android系统中的跨进程调用binder线程向system_server进程发送执行与home键被点击相对应的动画效果的通知消息,然后结束线程。
请参见图6,systemUI进程可以在接收到touchDown事件和touchUp事件时先后设置systemUI进程和systemUI_navThread线程为实时任务。具体来说,当systemUI进程接收到来自InputDispatcher线程的touchDown事件时,设置自身为实时任务。当systemUI进程接收到来自InputDispatcher线程的touchUp事件时,根据touchDown事件与touchUp事件判断该输入事件是点击事件还是长按事件,并创建相应的线程,例如,当输入事件时点击事件时,创建systemUI_navThread线程,并且设置systemUI_navThread线程为实时任务。
另外,当systemUI_navThread线程通过Android系统中的跨进程调用binder线程向system_server进程发送执行与home键被点击相对应的动画效果的通知消息之后,systemUI_navThread线程会结束运行,此时systemUI进程将自身和systemUI_navThread线程设置成非实时任务,从而避免systemUI进程和systemUI_navThread线程对正在执行其他任务的其他进程或者线程造成抢占。
请参见图7,在本申请实施例一中,由于systemUI进程及其systemUI_navThread线程为实时任务,具有极高的调度优先级,因此CFS机制会为systemUI进程和systemUI_navThread线程优先分配更长的处理器占用时间,并且使得systemUI进程和systemUI_navThread线程在处理输入事件时不会被其他进程或者线程抢占。由此,systemUI进程和systemUI_navThread线程能够在CFS机制的一次调度内就完成对输入事件的处理,减少了等待时间,使得处理输入事件所消耗的总时长被缩短,从用户体验上来看,减少了“用户在显示屏上执行触摸操作的响应延时”。
请参见图8,作为可选择的一种实现方式,本申请实施例可以将InputReader线程和InputDispatcher线程长期设置成实时任务,例如在InputReader线程和InputDispatcher线程初始化时将其设置成实时任务。一般来说,InputReader线程和InputDispatcher线程的初始化可以发生在电子设备开机的过程中。根据图8,当InputReader线程和InputDispatcher线程长期为实时任务时,CFS机制会为其分配更多的处理器资源,使得InputReader线程和InputDispatcher线程在读取和传递用户触摸显示屏的坐标点信息以及识别输入事件的过程中不会被其他进程或者线程抢占,从而及时快速地将输入事件传递给systemUI进程,进一步减少“用户在显示屏上执行触摸操作的响应延时”。
实施例二
下面以用户在电子设备的显示屏上点击home键为例,对本申请实施例二提供的任务调度方法进行具体的阐述,以说明该方法是如何降低“用户在显示屏上执行触摸操作的响应延时”的。可以理解的是,本申请实施例一提供的方法可以单独应用,也可以与本申请实施例二提供的方法共同应用,实现更为明显的降低“用户在显示屏上执行触摸操作的响应延时”的效果。在本申请实施例二中,systemUI_navThread线程和InputDispatcher线程可以对应权利要求书中的第二线程,system_server进程和launcher进程可以对应权利要求书中的第二进程,system_server进程的binder线程和launcher进程的异步binder线程可以对应权利要求书中的跨进程调用线程。具体地,当systemUI_navThread线程对应第二线程时,system_server进程对应第二进程,system_server进程的binder线程对应跨进程调用线程;当InputDispatcher线程对应第二线程时,launcher进程对应第二进程,launcher进程的异步binder线程对应跨进程调用线程。
请参见图9,为本申请实施例二提供的一种任务调度方法的流程图。该方法包括:
步骤S103,当systemUI_navThread线程通过system_server进程的binder线程调用system_server进程时,system_server进程的binder线程判断systemUI_navThread线程是否为实时任务。
步骤S104,如果systemUI_navThread线程为实时任务,system_server进程的binder线程将自身设置为实时任务。
在Android系统中,binder线程用于实现不同进程间的跨进程调用。例如,当进程A被创建后,可以建立其binder线程池,并向binder线程池内注入binder线程。另一个进程B或者进程B的线程b可以通过进程A的binder线程实现对进程A的调用,例如发送信息或通知等。
本申请实施例在binder线程定义了一个用于指示线程是否为实时任务的调用标识flag,通过flag的不同赋值指示不同的任务类型。例如,当flag=0时,指示线程为非实时任务;当flag=1时,指示线程为实时任务。其中,flag=1对应权利要求书中的第一标识。
具体实现中,当systemUI_navThread线程通过system_server进程的binder线程调用system_server进程时,system_server进程的binder线程获取systemUI_navThread线程调用标识flag的值。如果flag=1,则system_server进程的binder线程确定systemUI_navThread线程是实时任务,并将自身设置为实时任务,使其具有极高的调度优先级。
请参见图10,当system_server进程的binder线程为实时任务时,CFS机制会为该binder线程优先分配更长的处理器占用时间,并且使得该binder线程在处理输入事件时不被其他进程或者线程抢占。因此,该binder线程能够及时地将home键被点击的动效通知消息发送给system_server进程,使得system_server进程能及时唤醒InputDispatcher线程以执行后续的任务流程,从而降低“用户在显示屏上执行触摸操作的响应延时”。
另外,当system_server进程的binder线程被systemUI_navThread线程调用完毕时(例如binder线程已经将home键被点击的动效通知消息发送给system_server进程时),binder线程将自身设置成非实时任务,从而避免该binder线程对正在执行其他任务的其他进程或者线程造成抢占。
进一步地,参见图9,本申请实施例二还包括以下步骤:
步骤S105,当InputDispatcher线程通过launcher进程的异步binder线程调用launcher进程时,launcher进程的异步binder线程判断InputDispatcher线程是否为实时任务。
步骤S106,如果InputDispatcher线程为实时任务,launcher进程的异步binder线程将自身设置为实时任务。
具体实现中,InputDispatcher线程在被system_server进程唤醒之后,通过launcher进程的异步binder线程调用launcher进程以完成动画效果和主界面图像对应的帧绘制drawframe和帧渲染等操作。launcher进程的异步binder线程获取InputDispatcher线程调用标识flag的值。如果flag=1,则launcher进程的异步binder线程确定InputDispatcher线程是实时任务,并将自身设置为实时任务,使其具有极高的调度优先级。
请参见图11,当launcher进程的异步binder线程为实时任务时,CFS机制会为该异步binder线程优先分配更长的处理器占用时间,并且使得该异步binder线程在处理输入事件时不被其他进程或者线程抢占。因此,该异步binder线程能够及时地将launcher进程唤醒,使得launcher进程能及时地完成动画效果和主界面图像对应的帧绘制drawframe和帧渲染等操作,从而降低“用户在显示屏上执行触摸操作的响应延时”。
另外,launcher进程的异步binder线程被调用完毕时(例如launcher进程已经被唤醒),异步binder线程将自身设置成非实时任务,从而避免该异步binder线程对正在执行其他任务的其他进程或者线程造成抢占。
结合图10和图11,在本申请实施例二中,system_server进程的binder线程和launcher进程的异步binder线程均为实时任务,具有极高的调度优先级,因此system_server进程的binder线程和launcher进程的异步binder线程优先分配更长的处理器占用时间,并且使得system_server进程的binder线程和launcher进程的异步binder线程在处理输入事件时不会被其他进程或者线程抢占。由此,system_server进程的binder线程和launcher进程的异步binder线程能够在CFS机制的一次调度内就完成对输入事件的处理,减少了等待时间,使得处理输入事件所消耗的总时长被缩短,从用户体验上来看,减少了“用户在显示屏上执行触摸操作的响应延时”。
进一步地,请参见图12,launcher进程在唤醒后,需要通过RelayWindow阶段等完成后续的UI绘制等操作。此时,如果InputDispatcher线程还未执行完任务,那么RelayWindow阶段和InputDispatcher线程会出现Activity管理服务(activity managerservice,AMS)锁竞争。锁竞争导致RelayWindow阶段需要等待到InputDispatcher线程执行任务完毕之后才能够进行,这一等待过程延长了launcher进程从唤醒到显示输入事件对应图像帧的延时。为了减少延时,本申请实施例可以将InputDispatcher线程长期设置成实时任务,使得InputDispatcher线程快速完成任务,减少锁竞争的发生的几率和时长,从而缩短RelayWindow阶段的等待时间,进而减少launcher进程从唤醒到显示输入事件对应图像帧的延时。
上述本申请提供的实施例一和实施例二对本申请提供的任务调度方法的各方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
例如,上述电子设备通过软件模块来实现相应的功能。
在一个实施例中,如图13所示,用于实现上述电子设备行为的功能的装置包括:第一设置模块301,用于当第一进程接收到输入事件时,设置第一进程及其关键线程为实时任务,关键线程包括第一进程的用于处理输入事件的第一线程;第二设置模块302,用于当第一线程处理输入事件完毕时,设置第一进程及其关键线程为非实时任务;其中,装置对实时任务的调度优先级高于非实时任务的调度优先级。根据上述方案,第一进程及其关键线程在处理输入事件时具有更高的调度优先级,能够避免其需要占用的处理器资源被其他进程或者线程抢占,缩短第一进程及其关键线程对输入事件的响应时间,从而降低电子设备对于用户在显示屏上执行触摸操作的响应延时。
可选的,输入事件包括对应用户手指在装置的显示屏按下的第一输入事件,以及,对应用户手指从装置的显示屏抬起的第二输入事件。第一设置模块301,具体用于当第一进程接收到第一输入事件时,设置第一进程为实时任务,以及,当第一进程接收到第二输入事件时,创建第一线程,并且设置第一线程为实时任务。由此,当用户手指在显示屏按下时,第一进程的调度优先级就首先被提高,从而快速地判断用户手指的输入行为,当用户手指从显示屏抬起时,用于处理输入事件的第一线程就被设置为实时任务,快速处理输入事件,降低电子设备对于用户在显示屏上执行触摸操作的响应延时。
其中,输入事件是该装置的输入读取线程和输入响应线程根据用户手指在装置的显示屏执行的按下和/或抬起操作生成的;其中,输入读取线程用于获取用户手指在装置的显示屏按下的坐标点信息,以及将坐标点信息传递给输入响应线程;输入响应线程用于根据坐标点信息,识别用户手指在装置的显示屏执行的按下和/或抬起操作,以生成对应的输入事件。由此,输入读取线程和/或输入响应线程能够始终对用户手指的输入行为进行快速响应,及时地生成输入事件,并上报给第一进程,从而降低电子设备对于用户在显示屏上执行触摸操作的响应延时。
可选的,第一进程为Android系统的systemUI进程。
在另一个实施例中,如图14所示,用于实现上述电子设备行为的功能的装置包括:判断模块303,用于当第二线程通过跨进程调用线程调用第二进程时,判断第二线程是否为实时任务;第三设置模块304,用于如果第二线程为实时任务,将跨进程调用线程设置为实时任务;其中,电子设备对实时任务的调度优先级高于非实时任务的调度优先级。根据上述方案,在处理输入事件的过程中,如果作为实时任务的第二线程通过跨进程调用线程调用第二进程,则将这个跨进程调用线程设置为实时任务,使得第二进程被快速调用,更快地响应,从而降低电子设备对于用户在显示屏上执行触摸操作的响应延时。
可选的,第三设置模块304,具体用于如果第二线程为实时任务,获取第二线程的调用标识,如果调用标识为第一标识,则将跨进程调用线程设置为实时任务。
可选的,该装置还包括第四设置模块305,用于当第二进程被第二线程调用完毕时,将跨进程调用接口设置为非实时任务。由此,避免跨进程调用线程对正在执行其他任务的其他进程或者线程造成抢占。
可选的,跨进程调用线程属于第二进程。
另外,上述电子设备通过硬件模块来实现相应的功能。
在一个实施例中,如图1所示,该电子设备例如可以包括:显示屏194、存储器121和处理器110。该显示屏194、存储器121和处理器110耦合。该存储器121用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器110执行计算机指令时,电子设备可执行上述方法实施例中的各个功能或者步骤。
本申请实施例还提供一种芯片系统,如图15所示,该芯片系统包括至少一个处理器401和至少一个接口电路402。处理器401和接口电路402可通过线路互联。例如,接口电路402可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路402可用于向其它装置(例如处理器401或者电子设备的触摸屏)发送信号。示例性的,接口电路402可读取存储器中存储的指令,并将该指令发送给处理器401。当指令被处理器401执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本申请实施例还提供一种计算机存储介质,该计算机存储介质包括计算机指令,当计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中电子设备执行的各个功能或者步骤。
本申请实施例还提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述方法实施例中电子设备执行的各个功能或者步骤。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
容易理解的是,本领域技术人员在本申请提供的几个实施例的基础上,可以对本申请的实施例进行结合、拆分、重组等得到其他实施例,这些实施例均没有超出本申请的保护范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (11)

1.一种任务调度方法,其特征在于,应用于电子设备,所述方法包括:
第一进程接收到对应用户手指在所述电子设备的显示屏按下的第一输入事件时,设置自身为实时任务,所述第一进程为Android系统的systemUI进程;
所述第一进程接收到对应用户手指从所述电子设备的显示屏抬起的第二输入事件时,根据所述第一输入事件和所述第二输入事件的时间间隔确定输入事件类型,以及根据所述输入事件类型确定并创建第一线程,并设置所述第一线程为实时任务,所述第一线程为所述第一进程的用于处理输入事件的线程,当所述输入事件类型为点击事件时,所述第一线程包括所述systemUI进程中的systemUI_navThread线程,所述电子设备对实时任务的调度优先级高于非实时任务的调度优先级,以使所述第一进程和所述第一线程在完全公平调度CFS机制的一次调度内完成对输入事件的处理;
所述第一进程在所述第一线程处理输入事件完毕时,设置自身和所述第一线程为非实时任务,并结束所述第一线程;
当第二线程通过跨进程调用线程调用第二进程时,所述跨进程调用线程判断所述第二线程是否为实时任务;
如果所述第二线程为实时任务,所述跨进程调用线程设置自身为实时任务;
其中,所述第二线程包括systemUI_navThread线程或InputDispatcher线程;当所述第二线程为systemUI_navThread线程时,所述第二进程为Android系统的system_server进程,所述跨进程调用线程为system_server进程的binder线程;当所述第二线程为InputDispatcher线程时,所述第二进程为Android系统的launcher进程,所述跨进程调用线程为launcher进程的异步binder线程,所述InputDispatcher线程长期为实时任务。
2.根据权利要求1所述的任务调度方法,其特征在于,所述输入事件是所述电子设备的输入读取线程和输入响应线程根据用户手指在所述电子设备的显示屏执行的按下和/或抬起操作生成的;其中,
所述输入读取线程用于获取用户手指在电子设备的显示屏按下的坐标点信息,以及将所述坐标点信息传递给所述输入响应线程;
所述输入响应线程用于根据所述坐标点信息,识别用户手指在电子设备的显示屏执行的按下和/或抬起操作,以生成对应的输入事件;
所述输入读取线程和/或所述输入响应线程在进程初始化时被设置成实时任务。
3.根据权利要求1所述的任务调度方法,其特征在于,所述如果所述第二线程为实时任务,所述跨进程调用线程将自身设置为实时任务,包括:
如果所述第二线程为实时任务,所述跨进程调用线程获取所述第二线程的调用标识,如果所述调用标识为第一标识,则设置自身为实时任务。
4.根据权利要求1所述的任务调度方法,其特征在于,还包括:
所述第二进程被所述第二线程调用完毕时,所述跨进程调用线程设置自身为非实时任务。
5.一种任务调度装置,其特征在于,包括:
第一设置模块,用于当第一进程接收到对应用户手指在电子设备的显示屏按下的第一输入事件时,设置所述第一进程为实时任务,所述第一进程为Android系统的systemUI进程;
所述第一设置模块,还用于当所述第一进程接收到对应用户手指从所述电子设备的显示屏抬起的第二输入事件时,根据所述第一输入事件和所述第二输入事件的时间间隔确定输入事件类型,以及根据所述输入事件类型确定并创建第一线程,并设置所述第一线程为实时任务,所述第一线程为所述第一进程的用于处理输入事件的第一线程,当所述输入事件类型为点击事件时,所述第一线程包括所述systemUI进程中的systemUI_navThread线程,所述电子设备对实时任务的调度优先级高于非实时任务的调度优先级,以使所述第一进程和所述第一线程在完全公平调度CFS机制的一次调度内完成对输入事件的处理;
第二设置模块,用于当所述第一线程处理输入事件完毕时,设置所述第一进程和所述第一线程为非实时任务,并结束所述第一线程;
判断模块,用于当第二线程通过跨进程调用线程调用第二进程时,判断所述第二线程是否为实时任务;
第三设置模块,用于当所述第二线程为实时任务时,将所述跨进程调用线程设置为实时任务;
其中,所述第二线程包括systemUI_navThread线程或InputDispatcher线程;当所述第二线程为systemUI_navThread线程时,所述第二进程为Android系统的system_server进程,所述跨进程调用线程为system_server进程的binder线程;当所述第二线程为InputDispatcher线程时,所述第二进程为Android系统的launcher进程,所述跨进程调用线程为launcher进程的异步binder线程,所述InputDispatcher线程长期为实时任务。
6.根据权利要求5所述的任务调度装置,其特征在于,所述输入事件是所述装置的输入读取线程和输入响应线程根据用户手指在所述装置的显示屏执行的按下和/或抬起操作生成的;其中,
所述输入读取线程用于获取用户手指在装置的显示屏按下的坐标点信息,以及将所述坐标点信息传递给所述输入响应线程;
所述输入响应线程用于根据所述坐标点信息,识别用户手指在装置的显示屏执行的按下和/或抬起操作,以生成对应的输入事件。
7.根据权利要求5所述的任务调度装置,其特征在于,
所述第三设置模块,具体用于如果所述第二线程为实时任务,获取所述第二线程的调用标识,如果所述调用标识为第一标识,则将所述跨进程调用线程设置为实时任务。
8.根据权利要求5所述的任务调度装置,其特征在于,还包括:
第四设置模块,用于当所述第二进程被所述第二线程调用完毕时,将所述跨进程调用线程设置为非实时任务。
9.一种电子设备,其特征在于,所述电子设备包括显示屏、存储器和一个或多个处理器;所述显示屏、所述存储器和所述处理器耦合;所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述处理器执行所述计算机指令时,所述电子设备执行如权利要求1-4中任一项所述的任务调度方法。
10.一种芯片系统,其特征在于,所述芯片系统应用于包括显示屏的电子设备;所述芯片系统包括一个或多个接口电路和一个或多个处理器;所述接口电路和所述处理器通过线路互联;所述接口电路用于从所述电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括所述存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述电子设备执行如权利要求1-4中任一项所述的任务调度方法。
11.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-4中任一项所述的任务调度方法。
CN202010285991.8A 2020-04-13 2020-04-13 一种任务调度方法、装置及电子设备 Active CN113535340B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010285991.8A CN113535340B (zh) 2020-04-13 2020-04-13 一种任务调度方法、装置及电子设备
PCT/CN2021/079057 WO2021208627A1 (zh) 2020-04-13 2021-03-04 一种任务调度方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010285991.8A CN113535340B (zh) 2020-04-13 2020-04-13 一种任务调度方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN113535340A CN113535340A (zh) 2021-10-22
CN113535340B true CN113535340B (zh) 2023-03-31

Family

ID=78084081

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010285991.8A Active CN113535340B (zh) 2020-04-13 2020-04-13 一种任务调度方法、装置及电子设备

Country Status (2)

Country Link
CN (1) CN113535340B (zh)
WO (1) WO2021208627A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115202902B (zh) * 2022-07-01 2023-08-22 荣耀终端有限公司 控制进程交互的方法及相关装置
CN115309547B (zh) * 2022-07-31 2023-08-29 荣耀终端有限公司 处理异步binder调用的方法和装置
CN116048771B (zh) * 2022-08-15 2023-10-20 荣耀终端有限公司 一种资源调度方法及相关设备
CN116048744B (zh) * 2022-08-19 2023-09-12 荣耀终端有限公司 一种图像获取方法及相关电子设备
CN116737330B (zh) * 2022-09-02 2024-05-07 荣耀终端有限公司 任务处理方法和电子设备
CN116737672B (zh) * 2022-09-13 2024-04-26 荣耀终端有限公司 嵌入式操作系统中文件系统的调度方法、设备及存储介质
CN117931418A (zh) * 2022-10-26 2024-04-26 荣耀终端有限公司 资源管控方法、装置、芯片、电子设备及介质
CN118363671A (zh) * 2023-01-19 2024-07-19 荣耀终端有限公司 显示方法、终端设备及计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107273130A (zh) * 2017-06-20 2017-10-20 深圳市万普拉斯科技有限公司 加速界面绘制的方法、装置和终端
CN109992397A (zh) * 2017-12-29 2019-07-09 广东欧珀移动通信有限公司 进程处理方法和装置、电子设备、计算机可读存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589950B2 (en) * 2011-01-05 2013-11-19 Blackberry Limited Processing user input events in a web browser
CN103870327A (zh) * 2012-12-18 2014-06-18 华为技术有限公司 一种实时多任务调度方法和装置
CN106445660B (zh) * 2016-09-12 2019-05-28 Oppo广东移动通信有限公司 移动终端的应用控制方法及移动终端
US20180260784A1 (en) * 2017-03-09 2018-09-13 Samsung Electronics Co., Ltd. Electronic device and schedule ui providing method thereof

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107273130A (zh) * 2017-06-20 2017-10-20 深圳市万普拉斯科技有限公司 加速界面绘制的方法、装置和终端
CN109992397A (zh) * 2017-12-29 2019-07-09 广东欧珀移动通信有限公司 进程处理方法和装置、电子设备、计算机可读存储介质

Also Published As

Publication number Publication date
CN113535340A (zh) 2021-10-22
WO2021208627A1 (zh) 2021-10-21

Similar Documents

Publication Publication Date Title
CN113535340B (zh) 一种任务调度方法、装置及电子设备
EP3952263A1 (en) Notification message preview method and electronic device
CN112527476B (zh) 资源调度方法及电子设备
US20240021176A1 (en) Image Processing Method Based on Vertical Sychronization Signal and Electronic Device
WO2023279820A1 (zh) 一种触摸屏采样率的调整方法及电子设备
WO2021223539A1 (zh) 射频资源分配方法及装置
CN113535250B (zh) 一种应用保活方法、装置和电子设备
WO2022262434A1 (zh) 一种功耗优化方法和电子设备
WO2022017474A1 (zh) 任务处理方法及相关装置
CN116578422B (zh) 资源分配方法和电子设备
CN111190590B (zh) 卡顿优化方法、装置、终端和计算机可读存储介质
CN111104209B (zh) 一种处理任务的方法及相关设备
CN113596919A (zh) 数据下载方法、装置和终端设备
CN116700913B (zh) 嵌入式文件系统的调度方法、设备及存储介质
CN116679900B (zh) 一种音频业务处理方法、固件去加载方法及相关装置
CN116048772B (zh) 中央处理单元频率的调整方法、装置和终端设备
CN115729684B (zh) 输入输出请求处理方法和电子设备
WO2024217062A1 (zh) 文件存储方法及电子设备
CN117112154B (zh) 线程调度方法及相关装置
WO2024007970A1 (zh) 线程调度方法及电子设备
WO2023246604A1 (zh) 手写输入方法及终端
WO2023005783A1 (zh) 数据处理方法及电子设备
WO2024032430A1 (zh) 管理内存的方法和电子设备
CN116661984B (zh) 一种负载管控方法、电子设备及存储介质
WO2024087840A1 (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
GR01 Patent grant
GR01 Patent grant