一种线程异常阻塞的检测方法、装置及电子设备与流程

摘要: 本申请涉及嵌入式系统,特别是涉及一种线程异常阻塞的检测方法、装置及电子设备。背景技术:1、线程(thread)是操作系统能够进行运算调度的最小单位。线程的状态包...
一种线程异常阻塞的检测方法、装置及电子设备与流程

本申请涉及嵌入式系统,特别是涉及一种线程异常阻塞的检测方法、装置及电子设备。

背景技术:

1、线程(thread)是操作系统能够进行运算调度的最小单位。线程的状态包括初始态、阻塞态、等待调度态(就绪态)、运行态,其中,阻塞态指的是线程因为等待某些特定事件的发生而暂停执行的状态,例如等待i/o(输入/输出)操作完成、等待获取某个锁、等待特定的条件变量等。当线程异常阻塞时,将会导致系统的响应时间变长,阻碍系统运行。

2、相关技术中,通常在应用层进行处理,例如云服务,数据库服务等,通过应用程序上层接口埋点,基于计算接口调用时间来判断是否异常,这样的计算较为复杂,需要占用资源较多。在嵌入式系统中,由于计算资源紧张,所以很难通过这种方式实现对线程异常阻塞的检测,需要一种更适配嵌入式系统的线程异常阻塞的检测方法。

技术实现思路

1、本申请实施例的目的在于提供一种线程异常阻塞的检测方法、装置及电子设备,以实现更适配嵌入式系统进行线程异常阻塞的检测。具体技术方案如下:

2、第一方面,本申请实施例提供了一种线程异常阻塞的检测方法,应用于嵌入式系统,包括:

3、获取当前状态为阻塞态的待检测线程的第一阻塞点;

4、对所述第一阻塞点与预设的所述待检测线程的正常阻塞点进行匹配;

5、在所述第一阻塞点与所述正常阻塞点匹配失败的情况下,判定所述待检测线程的当前状态为异常阻塞状态。

6、本申请的一个实施例中,在判定所述待检测线程的当前状态为异常阻塞之后,所述方法还包括:

7、检测所述待检测线程的状态为异常阻塞状态的异常持续时间;

8、在所述异常持续时间超过预设时间阈值的情况下,判定所述待检测线程的状态为潜在死锁状态。

9、本申请的一个实施例中,所述在判定所述待检测线程的状态为潜在死锁状态之后,所述方法还包括:

10、获取当前运行的多个第一线程的状态;

11、在各所述第一线程中确定当前状态为异常阻塞状态的第二线程,并获取各所述第二线程的系统调用栈,以及各所述第二线程对多个系统锁的持有状态;

12、在所述待检测线程持有的系统锁与各所述第二线程持有的系统锁存在加锁顺序相反的情况下,判定所述待检测线程的状态为死锁状态。

13、本申请的一个实施例中,

14、所述第一阻塞点为所述待检测线程当前预设级数的系统调用栈,所述预设的正常阻塞点为所述待检测线程的固定阻塞点的预设级数的系统调用栈。

15、第二方面,本申请实施例提供了一种线程异常阻塞的检测装置,应用于嵌入式系统,包括:

16、阻塞点获取模块,用于获取当前状态为阻塞态的待检测线程的第一阻塞点;

17、阻塞点匹配模块,用于对所述第一阻塞点与预设的所述待检测线程的正常阻塞点进行匹配;

18、阻塞状态判断模块,用于在所述第一阻塞点与所述正常阻塞点匹配失败的情况下,判定所述待检测线程的当前状态为异常阻塞状态。

19、本申请的一个实施例中,所述装置还包括:

20、状态检测模块,用于检测所述待检测线程的状态为异常阻塞状态的异常持续时间;

21、状态判定模块,用于在所述异常持续时间超过预设时间阈值的情况下,判定所述待检测线程的状态为潜在死锁状态。

22、本申请的一个实施例中,所述装置还包括:

23、状态获取模块,用于获取当前运行的多个第一线程的状态;

24、异常线程确定模块,用于在各所述第一线程中确定当前状态为异常阻塞状态的第二线程,并获取各所述第二线程的系统调用栈,以及各所述第二线程对多个系统锁的持有状态;

25、死锁判定模块,用于在所述待检测线程持有的系统锁与各所述第二线程持有的系统锁存在加锁顺序相反的情况下,判定所述待检测线程的状态为死锁状态。

26、本申请的一个实施例中,

27、所述第一阻塞点为所述待检测线程当前预设级数的系统调用栈,所述预设的正常阻塞点为所述待检测线程的固定阻塞点的预设级数的系统调用栈。

28、第三方面,本申请实施例提供了一种电子设备,包括:

29、存储器,用于存放计算机程序;

30、处理器,用于执行存储器上所存放的程序时,实现上述任一所述的线程异常阻塞的检测方法。

31、第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的线程异常阻塞的检测方法。

32、本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的线程异常阻塞的检测方法。

33、本申请实施例有益效果:

34、本申请实施例提供的线程异常阻塞的检测方法、装置及电子设备,应用于嵌入式系统,先获取当前状态为阻塞态的待检测线程的第一阻塞点;对第一阻塞点与预设的待检测线程的正常阻塞点进行匹配;在第一阻塞点与正常阻塞点匹配失败的情况下,判定待检测线程的当前状态为异常阻塞状态。预先获取线程正常运行会发生正常阻塞的固定阻塞点,当线程进入阻塞态时,对比当前阻塞位置与固定阻塞位置,若不一致,即可判定线程当前的阻塞态为异常阻塞,无需对线程所调用的资源进行复杂计算,降低了线程异常阻塞检测的复杂程度和计算难度,应用于底层系统层,相比于在应用层埋点计算接口调用时间的计算方式,更适配于算力及内存资源有限的嵌入式系统,即使是算力资源丰富的其他系统,也可以通过本申请实施例提供的方法,实现更简单地检测线程的异常阻塞。

35、当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。

1.一种线程异常阻塞的检测方法,应用于嵌入式系统,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,在判定所述待检测线程的当前状态为异常阻塞之后,所述方法还包括:

3.根据权利要求2所述的方法,其特征在于,所述在判定所述待检测线程的状态为潜在死锁状态之后,所述方法还包括:

4.根据权利要求1所述的方法,其特征在于,

5.一种线程异常阻塞的检测装置,应用于嵌入式系统,其特征在于,包括:

6.根据权利要求5所述的装置,其特征在于,所述装置还包括:

7.根据权利要求6所述的装置,其特征在于,所述装置还包括:

8.根据权利要求5所述的装置,其特征在于,

9.一种电子设备,其特征在于,包括:

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4任一所述的方法。