CN105912394B - 线程处理方法和系统 - Google Patents

线程处理方法和系统 Download PDF

Info

Publication number
CN105912394B
CN105912394B CN201610262493.5A CN201610262493A CN105912394B CN 105912394 B CN105912394 B CN 105912394B CN 201610262493 A CN201610262493 A CN 201610262493A CN 105912394 B CN105912394 B CN 105912394B
Authority
CN
China
Prior art keywords
thread
executing
predetermined task
task
acquiring
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
CN201610262493.5A
Other languages
English (en)
Other versions
CN105912394A (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.)
Oneplus Technology Shenzhen Co Ltd
Original Assignee
Oneplus Technology Shenzhen 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 Oneplus Technology Shenzhen Co Ltd filed Critical Oneplus Technology Shenzhen Co Ltd
Priority to CN201610262493.5A priority Critical patent/CN105912394B/zh
Publication of CN105912394A publication Critical patent/CN105912394A/zh
Application granted granted Critical
Publication of CN105912394B publication Critical patent/CN105912394B/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Small-Scale Networks (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种线程处理方法和系统,该线程处理方法包括以下步骤:获取一处于运行状态的线程所使用的存储资源的信息;对所述存储资源的信息进行解析,获取解析结果;当解析结果中存在预定标记时,确定该处于运行状态的线程为执行预定任务的线程。上述的线程处理方法和系统,能够精确识别出执行预定任务/功能所对应的线程。

Description

线程处理方法和系统
技术领域
本发明涉及处理器技术领域,特别是涉及一种线程处理方法和系统。
背景技术
在一些领域中,例如移动智能通讯终端领域中,应用程序在执行时,一个应用进程会被分成多个线程,每个线程负责不同的任务。现有的线程处理技术只是做一些基础运算、或者执行一些线程/进程间的通信,不能识别出执行特定任务所对应的线程。这些特定任务包括,例如绘制画面、播出声音、响应回馈等对用户体验影响大的任务。
发明内容
基于此,有必要针对上述技术问题,提供一种线程处理方法和系统,其能够识别出执行预定任务/功能所对应的线程。
一种线程处理方法,包括以下步骤:
获取一处于运行状态的线程所使用的存储资源的信息;
对所述存储资源的信息进行解析,获取解析结果;
当所述解析结果中存在预定标记时,确定所述处于运行状态的线程为执行预定任务的线程。
在其中一个实施例中,在获取所述处于运行状态的线程所使用的存储资源的步骤之前,还包括:
获取执行预定任务的线程所使用的存储资源,并对所述存储资源进行标记。
在其中一个实施例中,在确定所述线程为执行预定任务的线程的步骤之后,还包括:
确定与执行预定任务的当前线程相关联的前导线程和/或后继线程,其中,所述前导线程和所述后继线程均为执行预定任务的线程。
在其中一个实施例中,所述获取与所述执行预定任务的当前线程相关联的后继线程的步骤包括:
根据所述执行预定任务的当前线程所使用的资源,获取所述后继线程;或者
获取与所述执行预定任务的当前线程进行通信的线程,将所述通信的线程作为所述后继线程。
在其中一个实施例中,还包括:根据预定的规则管理所述执行预定任务的线程。
一种线程处理系统,包括:
存储资源信息获取模块,用于获取一处于运行状态的线程所使用的存储资源的信息;
解析模块,用于对所述存储资源信息进行解析,获取解析结果;
处理模块,用于当所述解析结果中存在预定标记时,确定所述处于运行状态的线程为执行预定任务的线程。
在其中一个实施例中,还包括:标记模块,用于获取执行预定任务的线程所使用的存储资源,并对所述存储资源进行标记。
在其中一个实施例中,所述处理模块还用于:确定与执行预定任务的当前线程相关联的前导线程和/或后继线程,其中,所述前导线程和所述后继线程均为执行预定任务的线程。
在其中一个实施例中,所述处理模块还用于:根据所述执行预定任务的当前线程所使用的资源,获取所述后继线程;或者获取与所述执行预定任务的当前线程进行通信的线程,将所述通信的线程作为所述后继线程。
在其中一个实施例中,还包括:管理模块,用于根据预定的规则管理所述执行预定任务的线程。
上述的线程处理方法和系统,通过获取处理器上处于运行状态的线程所使用的存储资源;对该存储资源进行解析,获取解析结果;当解析结果中存在预定标记时,确定线程为执行预定任务的线程。上述的线程处理方法和系统能够精确地识别执行预定任务的线程。
附图说明
图1为一个实施例中的线程处理方法的流程图;
图2为一个实施例中的与当前线程相关联的线程的状态示意图;
图3为一个实施例中的线程处理系统的结构框图;
图4为另一个实施例中的线程处理系统的结构框图。
具体实施方式
在一个实施例中,如图1所示,提出一种线程处理方法。该方法包括以下步骤:
步骤102,获取一处于运行状态的线程所使用的存储资源的信息。
线程(thread)有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID、当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。
线程在处于运行状态时,线程运行所需要的原始数据来自内存。在线程运行过程中,有些数据可能被频繁读取,这些数据将被存储在寄存器和高速缓存中。当线程运行结束,这些缓存的数据在适当的时候应该写回内存。因此,处于运行状态的线程使用的存储资源可以包括寄存器、高速缓存、内存和外部存储设备等。存储资源的信息可包括线程所使用的存储资源的地址空间。
在本实施方式中,可以先获取处理器上运行的所有的进程,然后执行步骤104以逐一获取每个进程所使用的存储资源的信息。在本实施例中处理器的数目可以为一个或者多个。处理器可以为中央处理器(Central Processing Unit,CPU),图形处理器(GraphicsProcessing Unit,GPU),视频处理单元(Video Processing Unit,VPU)等中的至少一种。线程的数目可以为一个或多个。
步骤104,对存储资源的信息进行解析,获取解析结果。
在本实施例中,对存储资源的解析包括线程所使用的存储资源的地址空间进行解析。例如,读取存储资源上某一地址空间的文件夹的名称。获取的解析结果包括地址空间中的地址以及该地址空间的文件夹的名称。这些文件夹的名称可以为字符串形式。
步骤106,当解析结果中存在预定标记时,确定处于运行状态的线程为执行预定任务的线程。
由于会预先对执行预定任务/功能所使用的存储资源上进行标记,因此根据上述步骤104获取的解析结果,当解析结果中存在预定标记时,则可确定该处于运行状的线程在使用该存储资源,因此可以确定该处于运行状态的线程为执行预定任务的线程。反之,确定该处于运行状态的线程为执行非预定任务的线程。其中,可以将标记添加在存储资源的某一地址空间的文件夹的名称中。
在本实施例中,预定任务指对用户体验影响大的任务,例如执行绘制画面、播出声音、响应回馈等任务。
上述的线程处理方法,获取处理器上处于运行状态的线程所使用的存储资源;对该存储资源进行解析,获取解析结果;当解析结果中存在预定标记时确定线程为执行预定任务的线程。上述的线程处理方法能够精确地识别执行预定任务的线程。如此,在识别出执行预定任务(例如对用户体验影响大的任务)的线程后,可以有针对性的对所述线程进行管理,使得预定任务能够顺利的执行,避免设备的卡顿。
在一个实施例中,在获取一处于运行状态的线程所使用的存储资源的信息的步骤之前,还包括:
对执行预定任务的线程所使用的存储资源进行标记。
每个线程都有自己的执行空间(即工作内存),线程运行时用到某变量,首先要将该变量从主内存拷贝到工作内存空间,然后对变量进行读取、修改、赋值等操作。这些均在工作内存完成,操作完成后再将变量写回主内存。
在本实施例中,获取执行预定任务的线程所使用的存储资源,在该存储资源的地址空间的文件夹的名称进行标记。例如,可以在文件夹的名称的起始位置和/或结尾位置添加标记。
在一个实施例中,在确定处于运行状态的线程为执行预定任务的线程的步骤之后,该方法还包括:
确定与所述执行预定任务的线程相关联的后继线程和/或前导线程。
在本实施例中,后继线程为接手当前预定任务的线程。由于某一任务从处理器接收到任务执行指令到准备工作,整个过程会有不同的线程去处理。因此确定当前执行预定任务的线程创建的后继线程是有必要的,因为后继进程也会影响预定任务的执行。例如图2所示,线程B为执行预定任务的当前线程,线程C为线程B的后继线程。
在本实施例中,前导线程为传递预定任务给当前执行预定任务的线程,即前导线程为创建当前执行预定任务的线程。用与确定后继线程相同的方式反向追踪出前导线程。例如图2所示,线程B为执行预定任务的当前线程,线程A为线程B的前导线程。
上述实施例的方式,通过追踪和反向追踪的方式获取与执行预定任务的当前线程相关联的前导线程和后继线程,便于线程调度器对与执行预定任务的线程相关联的线程进行调度管理。
在一个实施例中,获取与执行预定任务的当前线程相关联的后继线程的步骤包括:
根据执行预定任务的当前线程所使用的资源,获取后继线程。
在本实施例中,以Linux多线程为例,如果当前线程在存储资源上请求了某一特定的地址空间,当有线程也去这一特定的地址空间存取,那么则可认为该线程是为接手预定任务去该地址空间存取,该线程则可判定为当前线程的后继线程。
在另一个实施例中,获取与执行预定任务的当前线程相关联的后继线程的步骤包括:
获取与执行预定任务的当前线程进行通信的线程,将通信的线程作为后继线程。
在本实施例中,线程之间有多种通信关系,如果存在与执行预定任务的当前线程通信的线程,则可以认为该通信的线程与执行预定任务的当前线程有任务合作关系,因此可以判定该通信的线程即为执行预定任务的当前线程的后继线程。
进一步地,可以利用上述实施例描述的方式方向追踪出与执行预定任务的当前线程相关联(有任务合作关系)的前导线程。
在一个实施例中,在确定处于运行状态的线程为执行预定任务的线程之后,还包括:
根据预定的规则管理执行预定任务的线程。
所述预定的规则包括:执行预定任务的线程效能最大化和资源竞争最小化的原则。线程效能为执行预定任务的线程完成预定任务/功能所花费时间的倒数,时间越短,则执行预定任务的线程的效能越好。
在本实施例中,对执行预定任务的线程进行管理包括:线程调度器将效能高的处理器调配给执行预定任务的线程,以满足执行预定任务的线程的效能需求。同时,线程调度器对处理器上的线程进行调度,减少执行预定任务的线程的资源竞争,进一步地提高执行预定任务的线程的效能。
在一个实施例中,如图3所示,提出了一种线程处理系统300。该系统300包括:存储资源信息获取模块302、解析模块304和处理模块306。
存储资源信息获取模块302,用于获取一处于运行状态的线程所使用的存储资源的信息。解析模块304用于对存储资源信息进行解析,获取解析结果。处理模块306用于当解析结果中存在预定标记时,确定该处于运行状态的线程判定为执行预定任务的线程。
在一个实施例中,如图4所示,系统300还包括:标记模块308。标记模块308,用于获取执行预定任务的线程所使用的存储资源,并对存储资源进行标记。
在一个实施例中,处理模块306还用于:确定与执行预定任务的当前线程相关联的前导线程和/或后继线程,其中,前导线程和后继线程均为执行预定任务的线程。
在一个实施例中,处理模块306还用于:根据执行预定任务的当前线程所使用的资源,获取后继线程;或者获取与执行预定任务的当前线程进行通信的线程,将通信的线程作为后继线程。
在一个实施例中,如图4所示,该系统300还包括:管理模块310。管理模块310,用于根据预定的规则管理执行预定任务的线程。
本实施例的线程处理系统300用于实现前述的线程处理方法,因此线程处理系统300中的具体实施可参见前文中线程处理方法的实施例部分,在此不再累述。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种线程处理方法,其特征在于,包括以下步骤:
获取执行预定任务的线程所使用的存储资源,并对所述存储资源进行标记;
获取一处于运行状态的线程所使用的存储资源的信息;
对所述存储资源的信息进行解析,获取解析结果;
当所述解析结果中存在预定标记时,则确定所述处于运行状态的线程为所述执行预定任务的线程。
2.根据权利要求1所述的方法,其特征在于,在确定所述处于运行状态的线程为执行预定任务的线程的步骤之后,还包括:
确定与执行预定任务的当前线程相关联的前导线程和/或后继线程,其中,所述前导线程和所述后继线程均为执行预定任务的线程。
3.根据权利要求2所述的方法,其特征在于,所述确定与执行预定任务的当前线程相关联的后继线程的步骤包括:
根据所述执行预定任务的当前线程所使用的资源,获取所述后继线程;或者
获取与所述执行预定任务的当前线程进行通信的线程,将与所述当前线程通信的线程作为所述后继线程。
4.根据权利要求1或2所述的方法,其特征在于,还包括:根据预定的规则管理所述执行预定任务的线程。
5.一种线程处理系统,其特征在于,包括:
标记模块,用于获取执行预定任务的线程所使用的存储资源,并对所述存储资源进行标记;
存储资源信息获取模块,用于获取一处于运行状态的线程所使用的存储资源的信息;
解析模块,用于对所述存储资源的信息进行解析,获取解析结果;
处理模块,用于当所述解析结果中存在预定标记时,确定所述处于运行状态的线程为所述执行预定任务的线程。
6.根据权利要求5所述的系统,其特征在于,所述处理模块还用于:确定与执行预定任务的当前线程相关联的前导线程和/或后继线程,其中,所述前导线程和所述后继线程均为执行预定任务的线程。
7.根据权利要求6所述的系统,其特征在于,所述处理模块还用于:根据所述执行预定任务的当前线程所使用的资源,获取所述后继线程;或者获取与所述执行预定任务的当前线程进行通信的线程,将与所述当前线程通信的线程作为所述后继线程。
8.根据权利要求5或6所述的系统,其特征在于,还包括:管理模块,用于对根据预定的规则管理所述执行预定任务的线程。
9.一种存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时可实现如权利要求1至4中任一项所述的线程处理方法。
10.一种终端设备,包括存储介质,处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至4中任一项所述的线程处理方法。
CN201610262493.5A 2016-04-25 2016-04-25 线程处理方法和系统 Active CN105912394B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610262493.5A CN105912394B (zh) 2016-04-25 2016-04-25 线程处理方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610262493.5A CN105912394B (zh) 2016-04-25 2016-04-25 线程处理方法和系统

Publications (2)

Publication Number Publication Date
CN105912394A CN105912394A (zh) 2016-08-31
CN105912394B true CN105912394B (zh) 2020-02-11

Family

ID=56752884

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610262493.5A Active CN105912394B (zh) 2016-04-25 2016-04-25 线程处理方法和系统

Country Status (1)

Country Link
CN (1) CN105912394B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108509260B (zh) * 2018-01-31 2021-08-13 深圳市万普拉斯科技有限公司 线程识别处理方法、装置、计算机设备和存储介质
CN109388485B (zh) * 2018-09-26 2021-01-22 广州虎牙信息科技有限公司 一种任务执行线程的处理方法、装置、设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101196833B (zh) * 2006-12-07 2013-02-27 国际商业机器公司 用于存储器利用的方法和装置
CN102012844B (zh) * 2010-11-29 2013-01-09 上海大学 一种面向cmp系统的线程调度方法
CN103699432B (zh) * 2013-12-17 2017-04-12 华中科技大学 一种异构环境下的多任务运行时协同调度系统
US9552223B2 (en) * 2014-09-30 2017-01-24 International Business Machines Corporation Post-return asynchronous code execution
CN104503828B (zh) * 2014-12-12 2018-12-11 广东欧珀移动通信有限公司 一种进程管理方法及终端

Also Published As

Publication number Publication date
CN105912394A (zh) 2016-08-31

Similar Documents

Publication Publication Date Title
CN109684065B (zh) 一种资源调度方法、装置及系统
DE112012003716B4 (de) Erzeugen von kompiliertem Code, der Registeraktivität angibt
CN113535367B (zh) 任务调度方法及相关装置
US9996394B2 (en) Scheduling accelerator tasks on accelerators using graphs
US11163677B2 (en) Dynamically allocated thread-local storage
US20100257527A1 (en) Computer applications classifier
DE102014003689A1 (de) Verfolgung des kontrollflusses von befehlen
US20150286504A1 (en) Scheduling and execution of tasks
US20170177415A1 (en) Thread and/or virtual machine scheduling for cores with diverse capabilities
DE112017006568T5 (de) Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern
CN111324427B (zh) 一种基于dsp的任务调度方法及装置
CN106354616B (zh) 监测应用执行性能的方法、装置及高性能计算系统
US10732841B2 (en) Tracking ownership of memory in a data processing system through use of a memory monitor
US7870541B1 (en) Context tracing for software with a frame pointer and a stack pointer and with a stack pointer but without a frame pointer
CN105912394B (zh) 线程处理方法和系统
JP2007304765A (ja) プロセッサシステム及びプロセッサシステムの性能測定方法
CN111831432B (zh) Io请求的调度方法、装置、存储介质及电子设备
CN115543586B (zh) 应用层系统进程的启动方法、装置、设备及可读存储介质
CN110825461B (zh) 数据处理方法和装置
US11481250B2 (en) Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values
US10310857B2 (en) Systems and methods facilitating multi-word atomic operation support for system on chip environments
CN115981808A (zh) 调度方法、装置、计算机设备和存储介质
CN111078449B (zh) 信息处理方法、信息处理装置及终端设备
CN114356516A (zh) 资源调度方法及相关装置、设备和存储介质
CN113835953A (zh) 作业信息的统计方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant