CN114461409A - 一种互斥信号量异常阻塞辅助分析方法、系统及存储介质 - Google Patents
一种互斥信号量异常阻塞辅助分析方法、系统及存储介质 Download PDFInfo
- Publication number
- CN114461409A CN114461409A CN202210038538.6A CN202210038538A CN114461409A CN 114461409 A CN114461409 A CN 114461409A CN 202210038538 A CN202210038538 A CN 202210038538A CN 114461409 A CN114461409 A CN 114461409A
- Authority
- CN
- China
- Prior art keywords
- semaphore
- thread
- wait
- resource
- information
- 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
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种互斥信号量异常阻塞辅助分析方法、系统及存储介质,该方法包括:步骤1:线程占用了共享资源时,将相应的互斥信号量进行lock操作,lock之前,记录wait信息,将该wait信息加入wait list;步骤2:lock之后,记录lock信息,同时从wait list中将wait信息删除;步骤3:访问完共享资源后,将信号量进行unlock操作,之后,清除lock信息;步骤4:每个信号量形成表记录,实时记录到内存中和定时记录到flash中;步骤5:出现异常时,通过查看所述表记录信息,确定出问题的信号量和代码。本发明的有益效果是:本发明用于实时监测信号量的异常阻塞情况,同时可以快速定位问题点。
Description
技术领域
本发明涉及多线程编程技术领域,尤其涉及基于嵌入式linux内核的ZebOS平台开发的网络通信软件。
背景技术
在ZebOS平台中,几乎所有模块都是采用进程的方式实现,模块间通信使用进程间通信的IPC机制,保证了模块使用内存的安全性。而核心模块HSL,由于需要同时跟芯片和上层应用打交道,为了保证其高效性,使用了多线程模式,在shell中执行ps–T|grep hsl可以看到。由于同一进程中的所有线程是共享内存的,资源互斥使用是必须考虑的问题,而多个互斥信号量的相互嵌套使用又极容易导致死锁。Linux内核提供了信号量异常跟踪机制,需要打开相应的编译选项。通常我们在嵌入开发中所使用的Linux内核要求小而稳定,并且不轻易升级。另外,coredump信息有时会因为调用栈被破坏而难以确定问题代码。
发明内容
本发明提供了一种互斥信号量异常阻塞辅助分析方法,包括如下步骤:
步骤1:线程占用了共享资源时,需要将相应的互斥信号量进行lock操作,lock之前,记录wait信息,将该wait信息加入wait list;
步骤2:lock之后,记录lock信息,同时从wait list中将wait信息删除;
步骤3:访问完共享资源后,将信号量进行unlock操作,unlock之后,清除lock信息;
步骤4:每个信号量形成表记录,实时记录到内存中和定时记录到flash中;
步骤5:出现异常时,通过查看所述表记录信息,确定出问题的信号量和代码。
作为本发明的进一步改进,在所述步骤1中,wait信息包括线程号、等待函数、等待行数。
作为本发明的进一步改进,在所述步骤2中,lock信息包括线程号、等待函数、等待行数。
作为本发明的进一步改进,在所述步骤1中:
进程中存在两个或以上的线程,存在两个或以上的共享资源,并且有相应的互斥信号量进行访问保护;
线程T1占用了资源R1后,使用信号量M1进行保护;同时,线程T1需要访问资源R2,但资源R2被其他线程占用着,线程T1只能进入pending状态;
线程T2占用了资源R2后,使用信号量M2进行保护;同时,线程T2需要访问资源R1,但资源R2被其他线程占用着,线程T2只能进入pending状态;
线程T1和线程T2同时等待访问对方持有的资源,形成了死锁;
其他线程需要访问资源R1或者资源R2,也都只能进入永久的pending状态。
本发明还提供了一种互斥信号量异常阻塞辅助分析系统,包括:
锁定模块:用于线程占用了共享资源时,需要将相应的互斥信号量进行lock操作,lock之前,记录wait信息,将该wait信息加入wait list;
记录模块:用于lock之后,记录lock信息,同时从wait list中将wait信息删除;
解锁模块:用于访问完共享资源后,将信号量进行unlock操作,unlock之后,清除lock信息;
存储模块:用于每个信号量形成表记录,实时记录到内存中和定时记录到flash中;
查询模块:用于出现异常时,通过查看所述表记录信息,确定出问题的信号量和代码。
作为本发明的进一步改进,在所述锁定模块中,wait信息包括线程号、等待函数、等待行数。
作为本发明的进一步改进,在所述记录模块中,lock信息包括线程号、等待函数、等待行数。
作为本发明的进一步改进,在所述锁定模块中:
进程中存在两个或以上的线程,存在两个或以上的共享资源,并且有相应的互斥信号量进行访问保护;
线程T1占用了资源R1后,使用信号量M1进行保护;同时,线程T1需要访问资源R2,但资源R2被其他线程占用着,线程T1只能进入pending状态;
线程T2占用了资源R2后,使用信号量M2进行保护;同时,线程T2需要访问资源R1,但资源R2被其他线程占用着,线程T2只能进入pending状态;
线程T1和线程T2同时等待访问对方持有的资源,形成了死锁;
其他线程需要访问资源R1或者资源R2,也都只能进入永久的pending状态。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现所述的互斥信号量异常阻塞辅助分析方法的步骤。
本发明的有益效果是:本发明,在用户态层面,提供一种互斥信号量异常阻塞辅助分析方法,用于实时监测信号量的异常阻塞情况,同时可以快速定位问题点。
附图说明
图1是本发明的方法流程图;
图2是本发明使用的场景示意图。
具体实施方式
通常互斥信号量用于共享资源的访问保护,访问前需要lock。这时不允许其他进程访问共享资源,只能处于pending等待状态,多个进程等待同一个信号量则需要排队。访问共享资源后需要unlock,这时其他等待线程就可以按顺序访问资源。
由于互斥锁的使用必须是在同一个线程中成对出现的,在正常状态下的locked次数等于unlocked次数。利用此特点,分别记录信号量的lock之前和unlock之后的信息,这里的信息包括lock计数,线程名称、函数名称、代码行数和线程id(注意:lock计数必须在lock之后才能记录)。这样在发生阻塞时,就可以通过观察lock之前的记录信息来判断代码pending的位置。
由于互斥信号量可以嵌套使用,可能会出现多级锁的情况,因此需要记录多级锁的信息。另外,一个互斥信号量可能会同时有多个线程在等待,因此需要记录等待线程列表。
如图1所示,本发明公开了一种互斥信号量异常阻塞辅助分析方法,包括如下步骤:
步骤1:线程占用了共享资源时,需要将相应的互斥信号量进行lock(锁)操作,lock之前,记录wait(等待)信息,将该wait信息加入wait list(等待列表);
步骤2:lock之后,记录lock信息,同时从wait list中将wait信息删除;
步骤3:访问完共享资源后,将信号量进行unlock(解锁)操作,unlock之后,清除lock信息;
步骤4:每个信号量形成表记录,实时记录到内存中和定时记录到flash中;
步骤5:出现异常时,通过查看所述表记录信息,确定出问题的信号量和代码。
在所述步骤1中,wait信息包括线程号、等待函数、等待行数。
在所述步骤2中,lock信息包括线程号、等待函数、等待行数。
如图2所示,在所述步骤1中:
进程中存在两个或以上的线程,存在两个或以上的共享资源,并且有相应的互斥信号量进行访问保护;
线程T1占用了资源R1后,使用信号量M1进行保护;同时,线程T1需要访问资源R2,但资源R2被其他线程占用着,线程T1只能进入pending(待定)状态;
线程T2占用了资源R2后,使用信号量M2进行保护;同时,线程T2需要访问资源R1,但资源R2被其他线程占用着,线程T2只能进入pending状态;
线程T1和线程T2同时等待访问对方持有的资源,形成了死锁;
其他线程需要访问资源R1或者资源R2,也都只能进入永久的pending状态。
本发明也可以用于基于其他os内核的嵌入式开发,在用户态层面,提供一种互斥信号量异常阻塞辅助分析方法,用于实时监测信号量的异常阻塞情况,同时可以快速定位问题点。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (9)
1.一种互斥信号量异常阻塞辅助分析方法,其特征在于,包括如下步骤:
步骤1:线程占用了共享资源时,需要将相应的互斥信号量进行lock操作,lock之前,记录wait信息,将该wait信息加入wait list;
步骤2:lock之后,记录lock信息,同时从wait list中将wait信息删除;
步骤3:访问完共享资源后,将信号量进行unlock操作,unlock之后,清除lock信息;
步骤4:每个信号量形成表记录,实时记录到内存中和定时记录到flash中;
步骤5:出现异常时,通过查看所述表记录信息,确定出问题的信号量和代码。
2.根据权利要求1所述的互斥信号量异常阻塞辅助分析方法,其特征在于,在所述步骤1中,wait信息包括线程号、等待函数、等待行数。
3.根据权利要求1所述的互斥信号量异常阻塞辅助分析方法,其特征在于,在所述步骤2中,lock信息包括线程号、等待函数、等待行数。
4.根据权利要求1至3任一项所述的互斥信号量异常阻塞辅助分析方法,其特征在于,在所述步骤1中:
进程中存在两个或以上的线程,存在两个或以上的共享资源,并且有相应的互斥信号量进行访问保护;
线程T1占用了资源R1后,使用信号量M1进行保护;同时,线程T1需要访问资源R2,但资源R2被其他线程占用着,线程T1只能进入pending状态;
线程T2占用了资源R2后,使用信号量M2进行保护;同时,线程T2需要访问资源R1,但资源R2被其他线程占用着,线程T2只能进入pending状态;
线程T1和线程T2同时等待访问对方持有的资源,形成了死锁;
其他线程需要访问资源R1或者资源R2,也都只能进入永久的pending状态。
5.一种互斥信号量异常阻塞辅助分析系统,其特征在于,包括:锁定模块:用于线程占用了共享资源时,需要将相应的互斥信号量进行lock操作,lock之前,记录wait信息,将该wait信息加入waitlist;
记录模块:用于lock之后,记录lock信息,同时从wait list中将wait信息删除;
解锁模块:用于访问完共享资源后,将信号量进行unlock操作,unlock之后,清除lock信息;
存储模块:用于每个信号量形成表记录,实时记录到内存中和定时记录到flash中;
查询模块:用于出现异常时,通过查看所述表记录信息,确定出问题的信号量和代码。
6.根据权利要求5所述的互斥信号量异常阻塞辅助分析系统,其特征在于,在所述锁定模块中,wait信息包括线程号、等待函数、等待行数。
7.根据权利要求5所述的互斥信号量异常阻塞辅助分析系统,其特征在于,在所述记录模块中,lock信息包括线程号、等待函数、等待行数。
8.根据权利要求5至7任一项所述的互斥信号量异常阻塞辅助分析系统,其特征在于,在所述锁定模块中:
进程中存在两个或以上的线程,存在两个或以上的共享资源,并且有相应的互斥信号量进行访问保护;
线程T1占用了资源R1后,使用信号量M1进行保护;同时,线程T1需要访问资源R2,但资源R2被其他线程占用着,线程T1只能进入pending状态;
线程T2占用了资源R2后,使用信号量M2进行保护;同时,线程T2需要访问资源R1,但资源R2被其他线程占用着,线程T2只能进入pending状态;
线程T1和线程T2同时等待访问对方持有的资源,形成了死锁;
其他线程需要访问资源R1或者资源R2,也都只能进入永久的pending状态。
9.一种计算机可读存储介质,其特征在于:所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现权利要求1-4中任一项所述的互斥信号量异常阻塞辅助分析方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210038538.6A CN114461409A (zh) | 2022-01-13 | 2022-01-13 | 一种互斥信号量异常阻塞辅助分析方法、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210038538.6A CN114461409A (zh) | 2022-01-13 | 2022-01-13 | 一种互斥信号量异常阻塞辅助分析方法、系统及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114461409A true CN114461409A (zh) | 2022-05-10 |
Family
ID=81408697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210038538.6A Pending CN114461409A (zh) | 2022-01-13 | 2022-01-13 | 一种互斥信号量异常阻塞辅助分析方法、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114461409A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114661481A (zh) * | 2022-05-25 | 2022-06-24 | 广州市保伦电子有限公司 | 一种单进程中多线程多互斥量间的控制方法以及终端 |
-
2022
- 2022-01-13 CN CN202210038538.6A patent/CN114461409A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114661481A (zh) * | 2022-05-25 | 2022-06-24 | 广州市保伦电子有限公司 | 一种单进程中多线程多互斥量间的控制方法以及终端 |
CN114661481B (zh) * | 2022-05-25 | 2022-09-06 | 广州市保伦电子有限公司 | 一种单进程中多线程多互斥量间的控制方法以及终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7870443B2 (en) | Method to isolate crash of an embedded multi-threaded application to a shared library call without core dump files or debugger | |
US7380073B2 (en) | Computer-implemented system and method for lock handling | |
US7941616B2 (en) | System to reduce interference in concurrent programs | |
CN102460376B (zh) | 无约束事务存储器(utm)系统的优化 | |
US8074116B2 (en) | Exception raised notification | |
US10915424B2 (en) | Defeating deadlocks in production software | |
Feldman et al. | A wait-free multi-word compare-and-swap operation | |
CN102262559B (zh) | 一种资源共享的方法及系统 | |
CN112015599B (zh) | 错误恢复的方法和装置 | |
US20070143766A1 (en) | Deadlock detection in a computing environment | |
CN105074656B (zh) | 管理并发谓词表达式的方法和装置 | |
CN101403979A (zh) | 一种自旋锁的加锁方法及计算机系统 | |
US7512748B1 (en) | Managing lock rankings | |
EP3274839B1 (en) | Technologies for root cause identification of use-after-free memory corruption bugs | |
CN113220535A (zh) | 程序异常的处理方法、装置、设备及存储介质 | |
CN114461409A (zh) | 一种互斥信号量异常阻塞辅助分析方法、系统及存储介质 | |
Li et al. | Brief announcement: Detectable sequential specifications for recoverable shared objects | |
CN100437511C (zh) | 使用状态跟踪来检测计算机系统中的错误的方法和系统 | |
US7996585B2 (en) | Method and system for state tracking and recovery in multiprocessing computing systems | |
Feldman et al. | A practical wait-free multi-word compare-and-swap operation | |
US8108865B2 (en) | Process replication method and system | |
US9507817B2 (en) | Method for synchronizing access to shared resources of a computing system and detecting and eliminating deadlocks using lock files | |
US6366946B1 (en) | Critical code processing management | |
CN106776052B (zh) | 共享资源访问方法和装置 | |
US7673125B2 (en) | Resetting multiple cells within a partition of a multiple partition computer system |
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 |