CN114461409A - 一种互斥信号量异常阻塞辅助分析方法、系统及存储介质 - Google Patents

一种互斥信号量异常阻塞辅助分析方法、系统及存储介质 Download PDF

Info

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
Application number
CN202210038538.6A
Other languages
English (en)
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.)
Beijing Telixin Electronics Technology Co ltd
Original Assignee
Beijing Telixin Electronics Technology 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 Beijing Telixin Electronics Technology Co ltd filed Critical Beijing Telixin Electronics Technology Co ltd
Priority to CN202210038538.6A priority Critical patent/CN114461409A/zh
Publication of CN114461409A publication Critical patent/CN114461409A/zh
Pending legal-status Critical Current

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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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/54Interprogram 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中任一项所述的互斥信号量异常阻塞辅助分析方法的步骤。
CN202210038538.6A 2022-01-13 2022-01-13 一种互斥信号量异常阻塞辅助分析方法、系统及存储介质 Pending CN114461409A (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114661481A (zh) * 2022-05-25 2022-06-24 广州市保伦电子有限公司 一种单进程中多线程多互斥量间的控制方法以及终端

Cited By (2)

* Cited by examiner, † Cited by third party
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