CN103902356B - 一种信号量死锁的检测方法 - Google Patents

一种信号量死锁的检测方法 Download PDF

Info

Publication number
CN103902356B
CN103902356B CN201210575762.5A CN201210575762A CN103902356B CN 103902356 B CN103902356 B CN 103902356B CN 201210575762 A CN201210575762 A CN 201210575762A CN 103902356 B CN103902356 B CN 103902356B
Authority
CN
China
Prior art keywords
semaphore
task
deadlock
signal
chained list
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.)
Expired - Fee Related
Application number
CN201210575762.5A
Other languages
English (en)
Other versions
CN103902356A (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.)
Shanghai Feixun Data Communication Technology Co Ltd
Original Assignee
Shanghai Feixun Data Communication 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 Shanghai Feixun Data Communication Technology Co Ltd filed Critical Shanghai Feixun Data Communication Technology Co Ltd
Priority to CN201210575762.5A priority Critical patent/CN103902356B/zh
Publication of CN103902356A publication Critical patent/CN103902356A/zh
Application granted granted Critical
Publication of CN103902356B publication Critical patent/CN103902356B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

本发明提供了一种信号量死锁的检测方法,通过调用系统提供的信号量和任务函数动态的获取到信号量和任务信息,在操作系统之外的应用层创建信号量结构体和信号量链表。将处于等待状态的任务加入到信号量链表中,对链表进行死锁检测。本发明完全独立于操作系统,不必在操作系统中添加任何代码,是作为一套工具性的软件存在于系统的应用层。且没有繁琐的代码改动,没有给系统增加额外的开销,有效的解决了现有方法的缺点。

Description

一种信号量死锁的检测方法
【技术领域】
本发明涉及操作系统的信号量死锁的检测方法。
【背景技术】
在实时嵌入式操作系统中,对于共享资源的保护和任务间的协调及调度一般都是由系统提供信号量机制来进行管理。信号量可以有效地防止多个任务同时去访问系统的受保护资源。但有时,如果系统存在两个或两个以上的任务相互申请对方独占的信号量而导致双方都无法将任务继续下去,必须依靠外力的协助,这种现象称为信号量死锁。信号量死锁在软件开发和调试中比较常见,有效而精确的信号量死锁检测方法可以显示死锁中的信号量与任务间的占有和等待关系,有助于开发和调试。
当前,比较常见的信号量死锁检测方法是构造一个任务数组和一个信号量数组,通过系统创建任务和信号量时把相关信息记录到数组中,例如公开日为2006年9月13日、公开号为CN1831779A的专利文献揭示了一种信号量死锁的检索方法,该方法就构造了进程数组(即任务数组)和信号量数组。这类方法的缺点是显而易见的。创建任务和信号量是系统调用非常频繁的操作,如果每次操作的时候去给数组赋值这样不仅在代码上很繁琐,而且也增大的系统资源的开销。
【发明内容】
本发明需解决的技术问题是克服上述的不足,提供一种不必在操作系统中添加任何代码、没有繁琐的代码改动、没有给操作系统增加额外开销的操作系统信号量死锁的检测方法。
为解决上述的技术问题,本发明设计了一种操作系统信号量死锁的检测方法,其包括以下几个步骤:Step1:在操作系统之上的应用层建立信号量死锁检测命令;Step2:创建信号量结构体,信号量结构体包含的字段设有:信号量ID pSem、等待信号量的任务pWaitTaskTcb、拥有信号量的任务pOwner;Step3:通过调用操作系统函数判断所有任务,把处于等待的任务赋值给pWaitTaskTcb,通过pWaitTaskTcb偏移找到等待的信号量赋值给IDpSem,获取到占有信号量的任务赋值给pOwner;Step4:根据占有信号量的任务的信号量建立信号量链表a;Step5:执行死锁检测命令,遍历整条链条a,把存在等待和占有信号量关系的信号量结构体挑出来并重新组成一个新链表b,判断新链表b是否存在信号量环路,如果存在,则检测到存在信号死锁;如果不存在,则不存在信号死锁;继续遍历链表a,直到遍历完成为止。
根据本发明进一步改进,检测到存在信号死锁,把构成环路的任务及信号量打印出来。
本发明完全独立于操作系统,不必在操作系统中添加任何代码,是作为一套工具性的软件存在于系统的应用层。且没有繁琐的代码改动,没有给系统增加额外的开销,有效的解决了现有方法的缺点。
【附图说明】
图1是本发明操作系统信号量死锁的检测方法的流程图。
【具体实施方式】
下面结合附图和实施方式对本发明作进一步说明。
本发明提供了一种信号量死锁的检测方法,通过调用系统提供的信号量和任务函数动态的获取到信号量和任务信息,在操作系统之外的应用层创建信号量结构体和信号量链表。将处于等待状态的任务加入到链表中,对链表进行死锁检测。其具体的操作步骤如下:
Step1:在操作系统之上的应用层建立信号量死锁检测命令,sem check命令执行信号量死锁检测。
Step2:创建信号量结构体,信号量结构体包含的字段设有:信号量IDpSem、等待信号量的任务pWaitTaskTcb、拥有信号量的任务pOwner;
Step3:通过调用操作系统函数判断所有任务,把处于等待的任务赋值给pWaitTaskTcb,通过pWaitTaskTcb偏移找到等待的信号量赋值给ID pSem,获取到占有信号量的任务赋值给pOwner;
Step4:根据占有信号量的任务的信号量建立信号量链表a;
Step5:执行死锁检测命令sem check,遍历整条链条a,把存在等待和占有信号量关系的信号量结构体挑出来并重新组成一个新链表b,判断新链表b是否存在信号量环路。
如果存在信号量环路,则检测到存在信号死锁,把构成环路的任务及信号量打印出来。
如果不存在信号量环路,则不存在信号死锁;继续遍历链表a,直到遍历完成为止。
本发明完全独立于操作系统,不必在操作系统中添加任何代码,是作为一套工具性的软件存在于系统的应用层。且没有繁琐的代码改动,没有给系统增加额外的开销,有效的解决了现有方法的缺点。
以上所述的仅是本发明的实施方式,在此应当指出,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出改进,但这些均属于本发明的保护范围。

Claims (1)

1.一种信号量死锁的检测方法,其特征在于,通过调用系统提供的信号量和任务函数动态的获取到信号量和任务信息,在操作系统之外的应用层创建信号量结构体和信号量链表,将处于等待状态的任务加入到链表中,对链表进行死锁检测,具体包括以下几个步骤:
Step1:在操作系统之外的应用层建立信号量死锁检测命令,sem check命令执行信号量死锁检测;
Step2:创建信号量结构体,信号量结构体包含的字段设有:信号量IDpSem、等待信号量的任务pWaitTaskTcb、拥有信号量的任务pOwner;
Step3:通过调用操作系统函数判断所有任务,把处于等待的任务赋值给pWaitTaskTcb,通过pWaitTaskTcb偏移找到等待的信号量赋值给ID pSem,获取到占有信号量的任务赋值给pOwner;
Step4:根据占有信号量的任务的信号量建立信号量链表a;
Step5:执行死锁检测命令sem check,遍历整条链表a,把存在等待和占有信号量关系的信号量结构体挑出来并重新组成一个新链表b,判断新链表b是否存在信号量环路,如果存在,则检测到存在信号死锁,把构成环路的任务及信号量打印出来;如果不存在,则不存在信号死锁;继续遍历链表a,直到遍历完成为止。
CN201210575762.5A 2012-12-26 2012-12-26 一种信号量死锁的检测方法 Expired - Fee Related CN103902356B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210575762.5A CN103902356B (zh) 2012-12-26 2012-12-26 一种信号量死锁的检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210575762.5A CN103902356B (zh) 2012-12-26 2012-12-26 一种信号量死锁的检测方法

Publications (2)

Publication Number Publication Date
CN103902356A CN103902356A (zh) 2014-07-02
CN103902356B true CN103902356B (zh) 2018-07-31

Family

ID=50993695

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210575762.5A Expired - Fee Related CN103902356B (zh) 2012-12-26 2012-12-26 一种信号量死锁的检测方法

Country Status (1)

Country Link
CN (1) CN103902356B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104331370A (zh) * 2014-11-26 2015-02-04 上海斐讯数据通信技术有限公司 一种栈安全检测方法与系统
CN109189582B (zh) * 2018-07-20 2020-09-15 新华三技术有限公司合肥分公司 一种检测信号量超时原因的方法及装置
CN115344360A (zh) * 2021-05-13 2022-11-15 华为技术有限公司 死锁检测方法、装置以及相关设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560627B1 (en) * 1999-01-28 2003-05-06 Cisco Technology, Inc. Mutual exclusion at the record level with priority inheritance for embedded systems using one semaphore
CN1703676A (zh) * 2002-01-12 2005-11-30 英特尔公司 基于进程事件的信号量系统
CN1831779A (zh) * 2005-03-11 2006-09-13 华为技术有限公司 一种信号量死锁的检测方法
CN102567096A (zh) * 2011-12-30 2012-07-11 中国科学院软件研究所 一种在多任务环境下防止死锁的互斥信号量管理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09330241A (ja) * 1996-06-07 1997-12-22 Tokai Univ デッドロック防止排他制御方式

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560627B1 (en) * 1999-01-28 2003-05-06 Cisco Technology, Inc. Mutual exclusion at the record level with priority inheritance for embedded systems using one semaphore
CN1703676A (zh) * 2002-01-12 2005-11-30 英特尔公司 基于进程事件的信号量系统
CN1831779A (zh) * 2005-03-11 2006-09-13 华为技术有限公司 一种信号量死锁的检测方法
CN102567096A (zh) * 2011-12-30 2012-07-11 中国科学院软件研究所 一种在多任务环境下防止死锁的互斥信号量管理方法

Also Published As

Publication number Publication date
CN103902356A (zh) 2014-07-02

Similar Documents

Publication Publication Date Title
CN103902356B (zh) 一种信号量死锁的检测方法
CN1158596C (zh) 使用相关矩阵的调度操作
WO2009014367A3 (en) Method and apparatus for managing access privilege in cldc osgi environment
RU2011116176A (ru) Атомарная множественная модификация данных в распределенной системе хранения данных
CN103346902B (zh) 数据采集调度的方法及系统
JP2008527555A5 (zh)
MY155867A (en) Scheduling collections in a scheduler
WO2008126221A1 (ja) ソフトウェア修正管理プログラム、ソフトウェア修正管理装置、およびソフトウェア修正管理方法
WO2010080323A3 (en) Method and system for integrating an interaction management system with a business rules management system
JP2009031851A5 (zh)
CN1818875A (zh) 嵌入式操作系统分组硬实时任务调度的实现方法
CN103064748A (zh) 一种Linux下处理多进程间通讯的方法
GB2532400A (en) Efficient task scheduling using locking mechanism
BR112014027772A2 (pt) permuta de dados entre antena e modem de dispositivo móvel
WO2010051336A3 (en) System and method for well surveillance and management
WO2006118682A3 (en) Validating application resources
Chen et al. Status quo of China earthquake networks and analyses on its early warning capacity
CN102222189A (zh) 一种保护操作系统的方法
CN103197958A (zh) 一种数据传输方法及系统与转发器设备
CN205788952U (zh) 一种led显示屏模块与箱体的组合结构
CN104657222B (zh) 一种面向smp调度系统的优化方法
CN106169250A (zh) 一种基于app的城市停车场与车主位置匹配方法
CN102880506B (zh) 一种基于作业调度系统的应用作业控制系统及其控制方法
CN101546278A (zh) 32位的程序与64位的驱动传输数据技术
CN103729187A (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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180731

Termination date: 20181226