CN117667430A - 持锁进程检测方法及相关设备 - Google Patents
持锁进程检测方法及相关设备 Download PDFInfo
- Publication number
- CN117667430A CN117667430A CN202211059212.8A CN202211059212A CN117667430A CN 117667430 A CN117667430 A CN 117667430A CN 202211059212 A CN202211059212 A CN 202211059212A CN 117667430 A CN117667430 A CN 117667430A
- Authority
- CN
- China
- Prior art keywords
- lock
- holding
- detection method
- thread
- detection thread
- 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 239
- 230000008569 process Effects 0.000 title claims abstract description 222
- 238000001514 detection method Methods 0.000 title claims abstract description 177
- 230000006870 function Effects 0.000 claims description 44
- 230000004044 response Effects 0.000 claims description 24
- 238000007639 printing Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 abstract description 27
- 239000010410 layer Substances 0.000 description 18
- 238000010295 mobile communication Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 10
- 230000000903 blocking effect Effects 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 238000005259 measurement Methods 0.000 description 4
- 229920001621 AMOLED Polymers 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011835 investigation Methods 0.000 description 3
- 230000008531 maintenance mechanism Effects 0.000 description 3
- 230000005236 sound signal Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000003416 augmentation Effects 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 239000002096 quantum dot Substances 0.000 description 2
- 238000013024 troubleshooting Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- 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]
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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/54—Interprogram communication
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
技术领域
本申请涉及通信领域,尤其涉及一种持锁进程检测方法及相关设备。
背景技术
现有的操作***(例如Linux***)一般都提供了维测机制来检测进程是否卡死。当通过维测机制检测到某个进程是因为等待锁(读写锁、互斥锁等)而卡死时,操作***可以打印该进程的相关信息。但是开发人员往往需要分析持锁的进程的信息,才能定位卡死的原因,而非等待锁的进程的信息,给开发人员的排查工作带来较大的困难。
发明内容
有鉴于此,有必要提供一种持锁进程检测方法,解决现有技术中由于无法获取持锁的进程信息导致卡死原因排查不便的问题。
本申请实施例第一方面公开了一种持锁进程检测方法,包括:创建检测线程,利用检测线程申请数据结构中的锁,数据结构位于内核中;在检测线程等待使用申请的锁期间,获取持有检测线程申请的锁的进程的相关信息。
采用上述技术方案,可以预先将待检测的锁添加至内核的数据结构中,通过创建检测线程申请数据结构中的锁,若检测线程申请的锁被占用,检测线程可以在等待使用申请的锁期间,持续获取持有该锁的进程的相关信息,例如将持有该锁的进程的相关信息保存至内核日志中,使得开发人员分析某个进程因为等待使用该锁而卡死时,可以基于检测线程获取的持有该锁的进程的相关信息定位卡死的原因,降低开发人员的排查工作量。
在一些实施例中,在创建检测线程之后,持锁进程检测方法还包括:响应于应用程序不响应事件,运行检测线程。
采用上述技术方案,检测线程可以在电子设备启动之后进行创建,若电子设备运行的应用未出现应用程序不响应事件时,检测线程可以处于休眠状态,若电子设备运行的应用出现应用程序不响应事件时,可以唤醒检测线程执行申请数据结构中的锁的操作。
在一些实施例中,利用检测线程申请数据结构中的锁,包括:响应于应用程序不响应事件,利用检测线程申请数据结构中的锁。
采用上述技术方案,检测线程可以在电子设备启动之后进行创建,若电子设备运行的应用出现应用程序不响应事件时,可以利用检测线程申请数据结构中的锁,若电子设备运行的应用未出现应用程序不响应事件时,检测线程可以处于休眠状态或者一直为活跃状态。
在一些实施例中,利用检测线程申请数据结构中的锁,包括:基于检测线程获取数据结构中的每个锁的状态;若数据结构中的第一锁的状态为占用状态,利用检测线程申请数据结构中的第一锁。
采用上述技术方案,可以先通过检测线程获取数据结构中的每个锁的状态,例如获取锁的状态是占用状态还是非占用状态,利用检测线程申请处于占用状态的锁,以获取持有检测线程申请的锁的进程的相关信息,对于未处于占用状态的锁,由于不会出现其他进程因为等待使用锁而卡死,检测线程可以不进行申请。
在一些实施例中,进程的相关信息包括进程中持有第一锁的堆栈信息。
采用上述技术方案,进程的相关信息包括进程中持有锁的堆栈信息,堆栈信息包含了持有锁的函数,使得开发人员可以定位到持有锁的函数,即可以确定本次等待锁引起的卡顿是出现在哪个函数调用上,便于开发人员后续进行该函数或者函数调用逻辑的优化。
在一些实施例中,获取持有检测线程申请的锁的进程的相关信息,包括:启动定时器,基于定时器将持有检测线程申请的锁的进程的相关信息保存至内核日志中。
采用上述技术方案,检测线程在等待使用申请的锁期间,可以通过启动一定时器,通过定时器将持有检测线程申请的锁的进程的相关信息保存至内核日志中,例如可以设置定时器的打印周期,使得定时器可以在检测线程等待使用申请的锁期间,周期性将持有检测线程申请的锁的进程的相关信息保存至内核日志中,使得开发人员后续可以基于定时器打印的持有检测线程申请的锁的进程相关信息定位等待锁卡死的原因。
在一些实施例中,基于定时器将持有检测线程申请的锁的进程的相关信息保存至内核日志中,包括:利用检测线程获取持有检测线程申请的锁的进程的指针,并传送给定时器;利用所述定时器运行打印函数,打印函数用于基于持有检测线程申请的锁的进程的指针将进程的相关信息保存至内核日志中。
采用上述技术方案,检测线程在等待使用申请的锁期间,可以通过启动一定时器,通过定时器运行打印函数实现将持有检测线程申请的锁的进程的相关信息保存至内核日志中,例如打印函数可以基于持有检测线程申请的锁的进程的指针实现将进程的相关信息保存至内核日志中。
在一些实施例中,持锁进程检测方法还包括:若检测线程申请到锁,删除定时器。
采用上述技术方案,检测线程申请到数据结构中的锁,表明数据结构中的该锁当前未被占用,或者被先前占用该锁的进程释放了,检测线程可以删除先前启动的定时器,停止打印持有该锁的进程的相关信息。
在一些实施例中,持锁进程检测方法还包括:若检测线程申请到锁,检测线程释放锁。
采用上述技术方案,检测线程申请到数据结构中的锁,表明数据结构中的该锁当前未被占用,或者被先前占用该锁的进程释放了,检测线程可以释放锁,使得电子设备中的其他进程可以正常申请该锁。
在一些实施例中,数据结构包括内核的全局链表或者全局数组。
采用上述技术方案,可以采用内核中的全局链表或者全局数组存放待检测的锁,便于检测线程申请数据结构中的锁。
在一些实施例中,持锁进程检测方法还包括:响应于应用程序不响应事件,获取应用程序不响应事件的持续时间;若应用程序不响应事件的持续时间超过预设时间,且与应用程序不响应事件关联的进程申请锁,关闭持有锁的进程。
采用上述技术方案,电子设备中的某个应用的进程因为等待使用某个锁,而出现卡住不动的现象时,电子设备的操作***可以在发生卡顿持续预设时长之后强制关闭持有该锁的进程,使得该锁可以被强制释放,便于申请该锁的进程可以顺利申请到该锁,避免进程因为等待使用该锁,而一直出现卡屏,影响用户使用电子设备的问题。
在一些实施例中,持锁进程检测方法还包括:响应于应用程序不响应事件,获取应用程序不响应事件的持续时间;若应用程序不响应事件的持续时间超过预设时间,且与应用程序不响应事件关联的进程申请锁,关闭申请锁的进程。
采用上述技术方案,电子设备中的某个应用的进程因为等待使用某个锁,而出现卡住不动的现象时,电子设备的操作***可以在发生卡顿持续预设时长之后强制关闭该应用的进程,使得用户可以正常触控电子设备,避免由于进程因为等待使用该锁,而一直出现卡屏,影响用户使用电子设备的问题。
在一些实施例中,内核为Linux内核、安卓内核、iOS内核、Windows内核、鸿蒙内核中的任意一个。
采用上述技术方案,电子设备可以包括但不限于搭载Linux***、安卓***、iOS***、Windows***、鸿蒙***,内核包括但不限于Linux内核、安卓内核、iOS内核、Windows内核、鸿蒙内核。
第二方面,本申请实施例提供一种计算机可读存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如第一方面所述的持锁进程检测方法。
第三方面,本申请实施例提供一种电子设备,电子设备包括处理器和存储器,存储器用于存储指令,处理器用于调用存储器中的指令,使得电子设备执行如第一方面所述的持锁进程检测方法。
第四方面,本申请实施例提供一种计算机程序产品,当计算机程序产品在电子设备(如计算机)上运行时,使得电子设备执行如第一方面所述的持锁进程检测方法。
第五方面,提供一种装置,所述装置具有实现上述第一方面所提供的方法中电子设备行为的功能。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。
可以理解地,上述提供的第二方面所述的计算机可读存储介质,第三方面所述的电子设备,第四方面所述的计算机程序产品,第五方面所述的装置均与上述第一方面的方法对应,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
附图说明
图1为电子设备采用现有的维持机制打印得到等待锁的进程信息的示意图;
图2为本申请一实施例提供的一种电子设备的结构示意图;
图3为本申请一实施例提供的一种电子设备的软件结构示意图;
图4为本申请一实施例提供的持锁进程检测技术的应用场景示意图;
图5为本申请一实施例提供的电子设备实现持锁进程检测的流程图;
图6为本申请一实施例提供的持锁进程检测技术打印得到持锁的进程信息的示意图;
图7为本申请另一实施例提供的持锁进程检测技术的应用场景示意图;
图8为本申请一实施例提供的持锁进程检测方法的流程示意图。
具体实施方式
需要说明的是,本申请中“至少一个”是指一个或者多个,“多个”是指两个或多于两个。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。本申请的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不是用于描述特定的顺序或先后次序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
操作***(Operating System,OS):管理计算机硬件与软件资源的程序,是计算机***的内核与基石。
内核:建立了计算机软件与硬件之间通讯的平台,内核提供***服务,比如文件管理、虚拟内存、设备输入/输出(Input/Output,I/O)等。
进程:是一个具有一独立功能的程序关于某个数据集合的一次运行活动,进程是操作***动态执行的基本单元,在传统的操作***中,进程既是基本的分配单元,也是基本的执行单元,进程可以被认为是正在运行的程序的实例。
线程:是操作***能够进行运算调度的最小单位,线程可被包含在进程之中,是进程中的实际运作单位。一个进程中可以并发多个线程,每条线程并行执行不同的任务。
锁:在多线程操作中,为了保证数据的一致性,保证临界代码的安全性,操作***引入了锁机制,通过锁机制,能够保证多核多进程环境下,某一个时间点,只有一个线程进入临界区代码,从而保证临界区中操作数据的一致性。
以操作***为Linux***为例,Linux***提供了一种维测机制来检测进程是否卡死,例如维测机制为Hungtask机制,Hungtask机制可以每隔第一预设时间(如30秒)检测一次***关键进程是否卡死。当检测到***关键进程卡死超过第二预设时间(如90秒),触发操作***打印进程的堆栈信息。打印进程的堆栈信息可以是指将进程的堆栈信息导出并保存至指定位置,便于开发人员从指定位置获取进程的堆栈信息分析进程的卡死原因。如图1所示,init进程等待mutex锁超过90秒,触发了操作***打印init进程等待mutex锁的信息。现有的维测机制只能触发操作***打印等待锁的进程的信息,无法触发操作***打印持有mutex锁的进程的信息。然而,开发人员分析进程卡死原因是需要基于持锁的进程的信息,而非等待锁的进程的信息,给开发人员的排查工作带来较大的困难。
为解决上述技术问题,本申请实施例提供一种持锁进程检测方法,可以在进程因等待锁卡死时,打印持锁的进程的信息,便于开发人员进行进程卡死排查,降低了开发人员的排查工作量。
本申请实施例提供的持锁进程检测方法,可应用于电子设备中。本申请的电子设备可以包括但不限于手机、可折叠电子设备、平板电脑、个人电脑(personal computer,PC)、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobilepersonal computer,UMPC)、上网本、蜂窝电话、个人数字助理(personal digitalassistant,PDA)、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、人工智能(artificial intelligence,AI)设备、可穿戴式设备、智能家居设备、车机设备、及智慧城市设备、服务器中的至少一种,本申请实施例对电子设备的具体类型不作特殊限制。
在一些实施例中,电子设备还可以通过通信网络与其他电子设备或服务器进行通信。通信网络可以是有线网络,也可以是无线网络。例如,通信网络可以是局域网(localarea networks,LAN),也可以是广域网(wide area networks,WAN),例如互联网。当该通信网络为局域网时,示例性的,该通信网络可以是无线保真(wireless fidelity,Wi-Fi)热点网络、Wi-Fi P2P网络、蓝牙网络、zigbee网络或近场通信(near field communication,NFC)网络等近距离通信网络。当该通信网络为广域网时,示例性的,该通信网络可以是第三代移动通信技术(3rd-generation wireless telephone technology,3G)网络、***移动通信技术(the4th generation mobile communication technology,4G)网络、第五代移动通信技术(5th-generation mobile communication technology,5G)网络、未来演进的公共陆地移动网络(public land mobile network,PLMN)或因特网等。
在一些实施例中,电子设备可以安装一个或多个APP(Application)。APP可以简称应用,为能够实现某项或多项特定功能的软件程序。例如,即时通讯类应用、视频类应用、音频类应用、图像拍摄类应用、云桌面类应用等等。其中,即时通信类应用,例如可以包括短信应用。图像拍摄类应用,例如可以包括相机应用(***相机或第三方相机应用)。视频类应用,例如可以包括华为视频。音频类应用,例如可以包括华为音乐。以下实施例中提到的应用,可以是电子设备出厂时已安装的***应用,也可以是用户在使用电子设备的过程中从网络下载或其他电子设备获取的第三方应用。
电子设备包括但不限于搭载Windows /> 或其他操作***。
图2示意了一种电子设备10的结构示意图。
电子设备10可以包括处理器110,外部存储器接口120,内部存储器121,天线1,天线2,移动通信模块130,无线通信模块140,音频模块150,传感器模块160,摄像模组170,显示屏180等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备10的具体限定。在本申请另一些实施例中,电子设备10可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器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)接口等。处理器110可以通过以上至少一种接口连接音频模块、无线通信模块、显示器、摄像头等模块。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备10的结构限定。在本申请另一些实施例中,电子设备10也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
电子设备10的无线通信功能可以通过天线1,天线2,移动通信模块130,无线通信模块140,调制解调处理器以及基带处理器等实现。
移动通信模块130可以提供应用在电子设备10上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块130可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。在一些实施例中,移动通信模块130的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块130的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
无线通信模块140可以提供应用在电子设备10上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),蓝牙低功耗(bluetooth low energy,BLE),超宽带(ultra wide band,UWB),全球导航卫星***(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块140可以是集成至少一个通信处理模块的一个或多个器件。
在一些实施例中,电子设备10可以通过无线通信技术与网络和其他电子设备通信。所述无线通信技术可以包括全球移动通讯***(global system for mobilecommunications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code division multiple access,CDMA),宽带码分多址(wideband codedivision multiple access,WCDMA),时分码分多址(time-division code divisionmultiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位***(global positioning system,GPS),全球导航卫星***(global navigation satellite system,GLONASS),北斗卫星导航***(beidou navigation satellite system,BDS),准天顶卫星***(quasi-zenithsatellite system,QZSS)和/或星基增强***(satellite based augmentation systems,SBAS)。
电子设备10可以通过GPU,显示屏180,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏180和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
摄像模组170包括摄像头。显示屏180用于显示图像,视频等。显示屏180包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等。在一些实施例中,电子设备10可以包括1个或多个显示屏180。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备10的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备10使用过程中所创建的数据等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备10的各种功能方法或数据处理。
音频模块150用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块150还可以用于对音频信号编码和解码。在一些实施例中,音频模块150可以设置于处理器110中,或将音频模块150的部分功能模块设置于处理器110中。
电子设备10的软件***可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android***为例,示例性说明电子设备10的软件结构。
图3是本申请一实施例的电子设备10的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android***分为五层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime,ART)和原生C/C++库,硬件抽象层(HardwareAbstract Layer,HAL)以及内核层。
应用程序层可以包括一系列应用程序包。
如图3所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图3所示,应用程序框架层可以包括窗口管理器,内容提供器,视图***,资源管理器,通知管理器,活动管理器,输入管理器等。
窗口管理器提供窗口管理服务(Window Manager Service,WMS),WMS可以用于窗口管理、窗口动画管理、surface管理以及作为输入***的中转站。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图***包括可视控件,例如显示文字的控件,显示图片的控件等。视图***可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在***顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
活动管理器可以提供活动管理服务(Activity Manager Service,AMS),AMS可以用于***组件(例如活动、服务、内容提供者、广播接收器)的启动、切换、调度以及应用进程的管理和调度工作。
输入管理器可以提供输入管理服务(Input Manager Service,IMS),IMS可以用于管理***的输入,例如触摸屏输入、按键输入、传感器输入等。IMS从输入设备节点取出事件,通过和WMS的交互,将事件分配至合适的窗口。
安卓运行时包括核心库和安卓运行时。安卓运行时负责将源代码转换为机器码。安卓运行时主要包括采用提前(ahead or time,AOT)编译技术和及时(just in time,JIT)编译技术。
核心库主要用于提供基本的Java类库的功能,例如基础数据结构、数学、IO、工具、数据库、网络等库。核心库为用户进行安卓应用开发提供了API。
原生C/C++库可以包括多个功能模块。例如:表面管理器(surface manager),媒体框架(Media Framework),libc,OpenGL ES、SQLite、Webkit等。
其中,表面管理器用于对显示子***进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体框架支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。OpenGL ES提供应用程序中2D图形和3D图形的绘制和操作。SQLite为电子设备10的应用程序提供轻量级关系型数据库。
硬件抽象层运行于用户空间(user space),对内核层驱动进行封装,向上层提供调用接口。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
下面结合图4,示例性的介绍本申请实施例提供的进程持锁检测方法的应用场景图。
如图4所示,电子设备10以手机为例进行介绍。在该实施例中,电子设备10安装有操作***。电子设备10还安装有多个APP,用户点击某个APP后,电子设备10可以创建相应的应用进程,应用进程可以实现对应APP的各项功能。例如,用户点击华为视频APP图标,电子设备创建华为视频APP的进程,用户可以通过华为视频APP的进程实现全屏在线观看视频或者离线观看视频等功能。当华为视频APP的进程因为访问某个数据(例如共享内存中的数据)要等待锁时,如果等待锁时间超过***设置的阈值,在电子设备10的用户界面显示的华为视频APP会卡住不动,例如提示华为视频无响应。阈值可以根据实际需求进行设定,本申请对此不作限定,例如阈值可以是5s。
本申请实施例提供一种维测机制,可以在华为视频APP的进程因为等待锁而卡死时,获取持有华为视频所申请的锁的进程,并打印持有该锁的进程的相关信息,便于开发人员对华为视频APP的进程的卡死原因进行排查。
如图5所示,为本申请的电子设备实现持锁进程检测的流程图。
该实施例中以电子设备10安装的操作***为Linux***为例进行说明。
S51,将待检测的锁添加至内核的数据结构中。
在一些实施例中,开发人员可以根据实际需求将待检测的锁添加至内核的数据结构中。本申请对待检测的锁不作限定,例如可以是mutex锁、mmap_sem锁等。本申请对内核的数据结构亦不作限定,可用于存储待检测的锁即可,例如内核的数据结构可以是内核的全局链表、内核的全局数组等。
S52,创建检测线程,利用检测线程申请数据结构中的锁。
在一些实施例中,检测线程可以是指内核线程,通过内核线程来实现申请位于内核的数据结构中的锁。例如,可以在电子设备10启动之后创建检测线程,检测线程在创建之后,执行申请数据结构中的锁的操作。数据结构可以添加有多个待检测的锁,检测线程可以采用预设方式对多个待检测的锁进行申请,预设方式可以根据实际需求进行设定,本申请对此不作限定,例如可以根据每个锁在数据结构中的添加顺序依次进行申请,也可以根据自定义规则对数据结构中的每个锁依次进行申请。
检测线程可以在执行完一次申请数据结构中的锁的操作之后,间隔第三预设时间再次执行一次申请数据结构中的锁的操作,或者是无间断地立即再次执行一次申请数据结构中的锁的操作,第三预设时间可以根据实际需求进行设定,本申请对此不作限定。检测线程执行完一次申请数据结构中的锁的操作,可以是指检测线程完成了一次申请数据结构中的每个锁的操作。
在一些实施例中,检测线程也可以在创建之后,响应于预设事件才执行申请数据结构中的锁的操作。预设事件可以根据实际需求进行设定,本申请对此不作限定。例如,预设事件可以是检测到电子设备10在运行时出现卡顿或者卡死。
例如,预设事件可以是电子设备10中运行的APP出现应用程序不响应(Application Not Response,ANR)事件,当电子设备10运行的APP出现ANR事件时,运行检测线程申请数据结构中的锁,当电子设备10运行的APP未出现ANR事件时,检测线程处于休眠状态,或者当电子设备10运行的APP未出现ANR事件时,检测线程虽然处于活跃状态(active状态),但不执行申请数据结构中的锁的操作。
在一些实施例中,利用检测线程申请数据结构中的某个锁是为了检测持有该锁的进程,分析持有该锁的进程为何长时间不释放该锁,导致其他进程因为等待使用该锁而卡死。利用检测线程申请数据结构中的锁之前,可以先通过检测线程获取数据结构中的每个锁的状态(占用状态或者非占用状态),利用检测线程申请处于占用状态的锁,对于未处于占用状态的锁,并不会出现其他进程因为等待使用锁而卡死,因此检测线程可以不进行申请。
在一些实施例中,对于处于占用状态的锁,检测线程会一直尝试进行申请,直至申请成功。
S53,若检测线程申请的数据结构中的第一锁为占用状态,在检测线程等待使用第一锁期间,利用定时器打印持有第一锁的进程的相关信息。
第一锁为待检测的锁,可以由开发人员预先将第一锁添加至数据结构中,例如第一锁为mutex锁。若检测线程申请的数据结构中的第一锁为占用状态,检测线程可以启动一个定时器,在检测线程等待使用第一锁期间,利用该定时器持续打印持有第一锁的进程的相关信息。定时器打印持有第一锁的进程的相关信息可以是指定时器运行打印函数,将进程的相关信息保存至指定位置,例如保存至内核日志中。例如,定时器可以设置打印周期,定时器基于预设的打印周期实现周期性打印持有第一锁的进程的相关信息。定时器周期性打印持有第一锁的进程的相关信息可以是指定时器运行打印函数,通过打印函数将持有第一锁的进程的相关信息保存至内核日志中。
在一些实施例中,在检测线程等待使用第一锁期间,检测线程可以获取持有第一锁的进程的指针,并传递给定时器,定时器可以基于打印周期周期性运行打印函数,打印函数可以基于持有第一锁的进程的指针打印该进程的相关信息。
在一些实施例中,进程的相关信息可以包括进程中持有第一锁的堆栈信息。堆栈信息包含了持有第一锁的函数,使得开发人员可以定位到持有第一锁的函数,即可以确定本次等待锁引起APP卡住不动是出现在哪个函数调用上,便于开发人员后续进行该函数或者函数调用逻辑的优化。
如图6所示,为定时器打印的持有第一锁的进程的相关信息。以第一锁为mutex锁(例如,kernfs_mutex锁)为例,进程sh持有mutex锁达到5分钟仍然未释放mutex锁,检测线程可以检测出mutex锁被进程sh持有,且通过定时器打印进程sh中持有mutex锁的堆栈信息。
在一些实施例中,在内核创建某个进程时,内核会为该进程分配一个独一无二的进程识别号(process identification,PID),检测线程可以基于持有第一锁的进程的PID获取持有第一锁的进程的指针。指针可以是指进程保存在***内存中的首地址。
S54,若检测线程申请到数据结构中的第一锁,检测线程删除定时器。
在一些实施例中,若检测线程申请到数据结构中的第一锁,表明数据结构中的第一锁未被占用,或者被先前占用第一锁的进程释放,检测线程可以删除先前启动的定时器,停止打印持有第一锁的进程的相关信息。
S55,检测线程释放第一锁。
检测线程在申请到数据结构中的第一锁之后,可以释放第一锁,便于其他进程可以申请使用第一锁。
如图7所示,电子设备10安装有华为视频APP,检测线程可以在电子设备10开机之后自动创建。
用户点击华为视频APP图标,电子设备10创建华为视频APP的进程,用户在使用华为视频APP观看视频的过程中,可能会因为华为视频APP的进程访问某个数据要等待使用某个锁(例如,锁Lock1),且等待锁的时间超过***设置的阈值,在电子设备10的用户界面,华为视频APP会卡住不动,例如弹出提示华为视频无响应的提示框。
假设锁Lock1已预先添加在内核的数据结构中,电子设备10可以通过检测线程申请锁Lock1,在检测线程等待使用锁Lock1期间,启动定时器T1,定时器T1运行打印函数,利用定时器T1周期性将持有锁Lock1的进程的堆栈信息保存至内核日志中,便于开发人员基于内核日志保存的信息分析持有锁Lock1的进程长时间不释放锁Lock1的原因,以进行针对性改善,即开发人员可以通过分析定时器T1保存至内核日志的信息,分析得到华为视频APP的进程等待使用锁Lock1的时间超过***设置的阈值的原因。
在一些实施例中,若电子设备10中的某个APP的进程因为等待使用某个锁,而导致APP出现卡住不动的现象,操作***可以在发生卡顿持续预设时长之后强制关闭该APP的进程或者关闭持有该锁的进程。
例如,华为视频APP的进程由于等待使用锁Lock1而发生卡顿的持续时间超过第四预设时间或者等待锁时间超过第四预设时间,电子设备10的操作***可以强制关闭华为视频APP的进程,使得用户可以正常触控电子设备10,或者关闭持有锁Lock1的进程,使得华为视频APP的进程可以申请到锁Lock1。第四预设时间可以根据实际需求进行设定,本申请对此不作限定。例如,如图7所示,华为视频APP的进程由于等待使用锁Lock1而发生卡顿的持续时间超过第四预设时间或者等待锁时间超过第四预设时间,电子设备10的操作***强制关闭华为视频APP的进程,返回至主界面。
参照图8所示,本申请一实施例提供一种持锁进程检测方法,应用于电子设备10。本实施例中,持锁进程检测方法可以包括:
S81,创建检测线程,利用检测线程申请数据结构中的锁。
在一些实施例中,数据结构位于内核中,本申请对数据结构不作限定,可用于存储待检测的锁即可,例如数据结构可以是内核的全局链表、内核的全局数组等。本申请对内核亦不作限定,由于电子设备10所安装的操作***不同,内核亦不相同,例如内核可以是Linux内核、安卓内核、iOS内核、Windows内核、鸿蒙内核中的任意一个。
可以在电子设备10启动之后创建检测线程,检测线程在创建之后,执行申请数据结构中的锁的操作。数据结构可以添加有多个待检测的锁,检测线程可以采用预设方式对多个待检测的锁进行申请,预设方式可以根据实际需求进行设定,本申请对此不作限定,例如可以根据每个锁在数据结构中的添加顺序依次进行申请,也可以根据自定义规则对数据结构中的每个锁依次进行申请。
在一些实施例中,检测线程也可以在创建之后,响应于预设事件才执行申请数据结构中的锁的操作。预设事件可以根据实际需求进行设定,本申请对此不作限定。例如,预设事件可以是检测到电子设备10在运行时出现卡顿或者卡死现象。
例如,预设事件可以是电子设备10中运行的APP出现ANR事件,当电子设备10运行的APP出现ANR事件时,运行检测线程申请数据结构中的锁,当电子设备10运行的APP未出现ANR事件时,检测线程处于休眠状态,或者当电子设备10运行的APP未出现ANR事件时,检测线程虽然处于active状态,但不执行申请数据结构中的锁的操作。
在一些实施例中,利用检测线程申请数据结构中的某个锁是为了检测持有该锁的进程,分析持有该锁的进程为何长时间不释放该锁,导致其他进程因为等待使用该锁而卡死。利用检测线程申请数据结构中的锁之前,还可以先通过检测线程获取数据结构中的每个锁的状态(占用状态或者非占用状态),利用检测线程申请处于占用状态的锁,对于未处于占用状态的锁,并不会出现其他进程因为等待使用锁而卡死,因此检测线程可以不进行申请。
S82,在检测线程等待使用申请的锁期间,获取持有检测线程申请的锁的进程的相关信息。
在一些实施例中,若检测线程申请的数据结构中的锁为占用状态,检测线程可以启动一个定时器,在检测线程等待使用该锁期间,利用定时器持续打印持有该锁的进程的相关信息。进程的相关信息可以包括进程中持有该锁的堆栈信息。堆栈信息包含了持有该锁的函数,使得开发人员可以定位到持有该锁的函数,即可以确定本次等待使用该锁引起APP卡住不动是出现在哪个函数调用上,便于开发人员后续进行该函数或者函数调用逻辑的优化。
例如,检测线程启动定时器时,可以配置定时的打印周期,定时器基于预设的打印周期实现周期性打印持有该锁的进程的堆栈信息。定时器周期性打印持有该锁的进程的堆栈信息可以是指定时器运行打印函数,通过打印函数将持有该锁的进程的堆栈信息保存至内核日志中。
在一些实施例中,在检测线程等待使用该锁期间,检测线程可以获取持有该锁的进程的指针,并传递给定时器,定时器可以基于打印周期周期性运行打印函数,打印函数可以基于持有该锁的进程的指针将其堆栈信息保存至内核日志中。
在一些实施例中,在内核创建某个进程时,内核会为该进程分配一个独一无二的PID,检测线程可以基于持有该锁的进程的PID获取持有该锁的进程的指针,并将持有该锁的进程的指针传送给定时器。
在一些实施例中,若检测线程申请到数据结构中的锁,表明数据结构中的该锁未被占用,或者被先前占用该锁的进程释放,检测线程可以删除先前启动的定时器,停止打印持有该锁的进程的堆栈信息。
在一些实施例中,检测线程在申请到数据结构中的锁之后,可以释放该锁,便于其他进程可以申请使用该锁。
在一些实施例中,若电子设备10中的APP A1的进程因为等待使用某个锁,而导致APP A1出现卡住不动的现象,电子设备10的操作***还可以在发生卡顿持续预设时长之后强制关闭该APP A1的进程或者关闭持有该锁的进程,避免APP A1的进程因为等待使用该锁,而一直出现卡屏,影响用户正常使用电子设备10的问题。例如,若APP A1的进程的ANR事件的持续时间超过第四预设时间,且APP A1的进程是因为等待使用锁而触发的ANR事件,操作***可以强制关闭APP A1的进程。例如,若APP A1的进程的ANR事件的持续时间超过第四预设时间,且APP A1的进程是因为等待使用锁而触发的ANR事件,而该锁正在被另一个APPA2的进程持有,操作***可以强制关闭持有该锁的APP A2的进程。
本申请实施例提供的电子设备10,内部存储器121可用于存储指令,处理器110可用于调用内部存储器121中的指令,使得电子设备10执行上述相关方法步骤实现上述实施例中的持锁进程检测方法。
本申请实施例还提供一种计算机存储介质,所述计算机存储介质中存储有计算机指令,当所述计算机指令在电子设备10上运行时,使得电子设备10执行上述相关方法步骤实现上述实施例中的持锁进程检测方法。
本申请实施例还提供了一种计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得电子设备执行上述相关步骤,以实现上述实施例中的持锁进程检测方法。
另外,本申请实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,所述装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的持锁进程检测方法。
其中,本申请实施例提供的计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应所述理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例是示意性的,例如,所述模块或单元的划分,为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者所述技术方案的全部或部分可以以软件产品的形式体现出来,所述软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。
Claims (16)
1.一种持锁进程检测方法,其特征在于,所述持锁进程检测方法包括:
创建检测线程,利用所述检测线程申请数据结构中的锁,所述数据结构位于内核中;
在所述检测线程等待使用申请的锁期间,获取持有所述检测线程申请的锁的进程的相关信息。
2.如权利要求1所述的持锁进程检测方法,其特征在于,在创建检测线程之后,所述持锁进程检测方法还包括:
响应于应用程序不响应事件,运行所述检测线程。
3.如权利要求1所述的持锁进程检测方法,其特征在于,所述利用所述检测线程申请数据结构中的锁,包括:
响应于应用程序不响应事件,利用所述检测线程申请数据结构中的锁。
4.如权利要求1所述的持锁进程检测方法,其特征在于,所述利用所述检测线程申请数据结构中的锁,包括:
基于所述检测线程获取所述数据结构中的每个锁的状态;
若所述数据结构中的第一锁的状态为占用状态,利用所述检测线程申请所述数据结构中的第一锁。
5.如权利要求1至3中任意一项所述的持锁进程检测方法,其特征在于,所述进程的相关信息包括所述进程中持有所述锁的堆栈信息。
6.如权利要求1至3中任意一项所述的持锁进程检测方法,其特征在于,所述获取持有所述检测线程申请的锁的进程的相关信息,包括:
启动定时器,基于所述定时器将持有所述检测线程申请的锁的进程的相关信息保存至内核日志中。
7.如权利要求6所述的持锁进程检测方法,其特征在于,所述基于所述定时器将持有所述检测线程申请的锁的进程的相关信息保存至内核日志中,包括:
利用所述检测线程获取持有所述检测线程申请的锁的进程的指针,并传送给所述定时器;
利用所述定时器运行打印函数,所述打印函数用于基于持有所述检测线程申请的锁的进程的指针将所述进程的相关信息保存至所述内核日志中。
8.如权利要求6或7所述的持锁进程检测方法,其特征在于,所述持锁进程检测方法还包括:
若所述检测线程申请到所述锁,删除所述定时器。
9.如权利要求6或7所述的持锁进程检测方法,其特征在于,所述持锁进程检测方法还包括:
若所述检测线程申请到所述锁,所述检测线程释放所述锁。
10.如权利要求1至9中任意一项所述的持锁进程检测方法,其特征在于,所述数据结构包括所述内核的全局链表或者全局数组。
11.如权利要求1所述的持锁进程检测方法,其特征在于,所述持锁进程检测方法还包括:
响应于应用程序不响应事件,获取所述应用程序不响应事件的持续时间;
若所述应用程序不响应事件的持续时间超过预设时间,且与所述应用程序不响应事件关联的进程申请所述锁,关闭持有所述锁的进程。
12.如权利要求1所述的持锁进程检测方法,其特征在于,所述持锁进程检测方法还包括:
响应于应用程序不响应事件,获取所述应用程序不响应事件的持续时间;
若所述应用程序不响应事件的持续时间超过预设时间,且与所述应用程序不响应事件关联的进程申请所述锁,关闭申请所述锁的进程。
13.如权利要求1至12中任意一项所述的持锁进程检测方法,其特征在于,所述内核为Linux内核、安卓内核、iOS内核、Windows内核、鸿蒙内核中的任意一个。
14.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在处理器上运行时,使得电子设备执行如权利要求1至权利要求13任一项所述的持锁进程检测方法。
15.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器用于存储指令,所述处理器用于调用所述存储器中的指令,使得所述电子设备执行权利要求1至权利要求13中任一项所述的持锁进程检测方法。
16.一种计算机程序产品,其特征在于,包括计算机指令,当所述计算机指令在处理器上运行时,使得电子设备执行如权利要求1至权利要求13中任一项所述的持锁进程检测方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211059212.8A CN117667430A (zh) | 2022-08-31 | 2022-08-31 | 持锁进程检测方法及相关设备 |
PCT/CN2023/112510 WO2024046089A1 (zh) | 2022-08-31 | 2023-08-11 | 持锁进程检测方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211059212.8A CN117667430A (zh) | 2022-08-31 | 2022-08-31 | 持锁进程检测方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117667430A true CN117667430A (zh) | 2024-03-08 |
Family
ID=90064945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211059212.8A Pending CN117667430A (zh) | 2022-08-31 | 2022-08-31 | 持锁进程检测方法及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117667430A (zh) |
WO (1) | WO2024046089A1 (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101576830B (zh) * | 2009-06-04 | 2011-11-30 | 中兴通讯股份有限公司 | 数据库事务锁机制的死锁检测方法及装置 |
CN107247630A (zh) * | 2017-06-05 | 2017-10-13 | 努比亚技术有限公司 | 线程检测方法、终端及计算机可读存储介质 |
CN111045926B (zh) * | 2019-11-05 | 2023-04-14 | 北京字节跳动网络技术有限公司 | 一种应用程序卡顿的检测方法、装置、介质和电子设备 |
CN112099960A (zh) * | 2020-09-21 | 2020-12-18 | 天津神舟通用数据技术有限公司 | 一种基于路径推进的分布式死锁检测方法 |
CN114625545A (zh) * | 2020-12-10 | 2022-06-14 | 华为技术有限公司 | 进程持锁检测方法及其电子设备和可读介质 |
CN112579307A (zh) * | 2020-12-10 | 2021-03-30 | 腾讯科技(深圳)有限公司 | 一种物理锁资源的分配检测方法、装置及电子设备 |
CN113778696A (zh) * | 2021-08-19 | 2021-12-10 | 北京小米移动软件有限公司 | 线程控制方法、线程控制装置及存储介质 |
CN114064300A (zh) * | 2021-11-01 | 2022-02-18 | 上海浦东发展银行股份有限公司 | 线程死锁检测方法、装置、设备、介质和计算机程序产品 |
-
2022
- 2022-08-31 CN CN202211059212.8A patent/CN117667430A/zh active Pending
-
2023
- 2023-08-11 WO PCT/CN2023/112510 patent/WO2024046089A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024046089A1 (zh) | 2024-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11922100B2 (en) | System and method for energy usage accounting in software applications | |
CN108572818B (zh) | 一种用户界面渲染方法及装置 | |
CN104205109B (zh) | 持续性和弹性的工作者进程 | |
EP4095723B1 (en) | Permission reuse method, permission reuse-based resource access method, and related device | |
US20170372067A1 (en) | Method for detecting the tampering of application code and electronic device supporting the same | |
WO2022247301A1 (zh) | 检测方法、图形界面及相关装置 | |
WO2019128588A1 (zh) | 进程处理方法和装置、电子设备、计算机可读存储介质 | |
CN114625545A (zh) | 进程持锁检测方法及其电子设备和可读介质 | |
WO2021027772A1 (zh) | 一种应用切换运行的方法及设备 | |
Sharma et al. | Advance woman security system based on android | |
CN116339818B (zh) | 代码变更类型的筛选方法、电子设备及可读存储介质 | |
CN114816031B (zh) | 终端设备的省电方法、终端设备及介质 | |
CN117667430A (zh) | 持锁进程检测方法及相关设备 | |
CN116136826B (zh) | 内存访问方法、芯片、电子设备及计算机可读存储介质 | |
WO2020147859A1 (zh) | 分散式重锁降级 | |
CN117131497B (zh) | 一种软件检测方法及电子设备 | |
CN116795557B (zh) | 通信方法、电子设备及可读存储介质 | |
CN116701320B (zh) | 一种日志生成方法及相关装置 | |
CN117130809B (zh) | 一种应用运行状态的检测方法及设备 | |
CN117891647B (zh) | 日志处理方法、电子设备和计算机可读存储介质 | |
CN117827228A (zh) | 快应用部署方法及相关设备 | |
CN117909287A (zh) | 快照方法、电子设备、计算机程序产品及可读存储介质 | |
CN118113289A (zh) | 代码编译方法、代码运行方法及相关设备 | |
CN116701101A (zh) | 一种SensorHUB的异常检测方法和电子设备 | |
CN117707814A (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 |