CN103218291B - 多任务操作***中互斥信号量异常的检测方法及装置 - Google Patents
多任务操作***中互斥信号量异常的检测方法及装置 Download PDFInfo
- Publication number
- CN103218291B CN103218291B CN201310108697.XA CN201310108697A CN103218291B CN 103218291 B CN103218291 B CN 103218291B CN 201310108697 A CN201310108697 A CN 201310108697A CN 103218291 B CN103218291 B CN 103218291B
- Authority
- CN
- China
- Prior art keywords
- task
- holder
- mutex amount
- mutex
- amount
- 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.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及多任务操作***中互斥信号量异常的检测技术。本发明公开了一种多任务操作***中互斥信号量异常的检测方法及装置。本发明的技术方案是,多任务操作***中互斥信号量异常的检测方法,其特征在于,构造互斥信号量管理列表,创建互斥信号量时将互斥信号量加入互斥信号量管理列表,删除互斥信号量时将互斥信号量从互斥信号量管理列表中删除;创建一个优先级最高的互斥信号量状态检测任务,周期性检测信互斥信号量管理列表中的互斥信号量的状态信息,所述状态信息包括互斥信号量占有者任务及其获取该互斥信号量的次数。本发明的检测装置包括列表管理模块和状态检测模块。本发明可以高效的检测***中互斥信号量的错误使用。
Description
技术领域
本发明涉及计算机多任务操作***领域,特别涉及多任务操作***中互斥信号量异常的检测技术。
背景技术
信号量(Semaphore),有时也称为信号灯,是在多线程环境下使用的一种设施,它负责协调各个线程,以保证它们能够正确、合理的使用公共资源。在vxWorks操作***中,一般使用互斥信号量来保护临界资源。如果在软件实现的使用互斥信号量过程中,任务获取互斥信号量后不释放就退出,其它的来获取该互斥信号量的任务将永远阻塞在该互斥信号量上,这样将使***工作异常。
可以在软件的编码过程中提高编码质量部分解决此问题,但软件编码中的此类编码问题也难于全部解决,而且人工排查此类问题的效率有限。
发明内容
本发明所要解决的技术问题,就是提供一种多任务操作***中互斥信号量异常的检测方法及装置,在软件开发过程中高效的发现互斥信号量的使用问题,提高软件质量。
本发明解决所述技术问题,采用的技术方案是,多任务操作***中互斥信号量异常的检测方法,其特征在于,
构造互斥信号量管理列表,创建互斥信号量时将互斥信号量加入互斥信号量管理列表,删除互斥信号量时将互斥信号量从互斥信号量管理列表中删除;
创建一个优先级最高的互斥信号量状态检测任务,周期性检测信互斥信号量管理列表中的互斥信号量的状态信息,所述状态信息包括互斥信号量占有者任务及其获取该互斥信号量的次数。
进一步的,通过检测信号量控制块中的占有者任务字段来判断所述互斥信号量占有者任务是否合法。
具体的,如果检测到某互斥信号量占有者任务不合法,说明互斥信号量占有者任务在取得该信号量后已经被删除,向用户输出错误信息。
具体的,如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于就绪状态,进一步判断:
如果占有者任务的PC指针在变化,则占有者任务取得该信号量后出现了死循环,根据PC指针输出所述占有者任务的死循环轨迹;
如果占有者任务的PC指针没有变化,则该占有者任务取得该信号量后,***中出现了更高优先级任务的死循环。
具体的,如果连续检测到某互斥信号量占有者任务字段没有变化,且该互斥信号量的递归嵌套调用字段的值在增加,则占有者任务取得互斥信号量和释放互斥信号量的次数不对称,取得互斥信号量的次数大于释放互斥信号量的次数;
如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于阻塞状态,则占有者任务获取所述互斥信号量后阻塞在了其它信号量上,输出占有者任务的PC指针,根据PC指针查找占有者任务阻塞在哪个信号量上。
本发明的另一个目的,提供一种多任务操作***中互斥信号量异常的检测装置,其特征在于,包括列表管理模块和状态检测模块;
所述列表管理模块,用于构造互斥信号量管理列表,创建互斥信号量时将互斥信号量加入互斥信号量管理列表,删除互斥信号量时将互斥信号量从互斥信号量管理列表中删除;
所述状态检测模块,用于创建一个优先级最高的互斥信号量状态检测任务,周期性检测信互斥信号量管理列表中的互斥信号量的状态信息,所述状态信息包括互斥信号量占有者任务及其获取该互斥信号量的次数。
进一步的,所诉状态检测模块,用于通过检测信号量控制块中的占有者任务字段来判断所述互斥信号量占有者任务是否合法。
具体的,所述状态检测模块,用于判断如果检测到某互斥信号量占有者任务不合法,说明互斥信号量占有者任务在取得该信号量后已经被删除,向用户输出错误信息。
具体的,所述状态检测模块,用于判断如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于就绪状态,进一步判断:
如果占有者任务的PC指针在变化,则占有者任务取得该信号量后出现了死循环,根据PC指针输出所述占有者任务的死循环轨迹;
如果占有者任务PC指针没有变化,则该占有者任务取得该信号量后,***中出现了更高优先级任务的死循环。
具体的,所述状态检测模块,用于判断如果连续检测到某互斥信号量占有者任务字段没有变化,且该互斥信号量的递归嵌套调用字段的值在增加,则占有者任务取得互斥信号量和释放互斥信号量的次数不对称,取得互斥信号量的次数大于释放互斥信号量的次数;
如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于阻塞状态,则占有者任务获取所述互斥信号量后阻塞在了其它信号量上,输出占有者任务的PC指针,根据PC指针查找占有者任务阻塞在哪个信号量上。
本发明的有益效果是,可以高效的检测***中互斥信号量的错误使用,这些错误使用包括:信号量的获取和释放不配对,某次获取后没有释放;或者某任务获取互斥信号量后出现死循环;或者某任务获取互斥信号量后永远阻塞在其它信号量上。
附图说明
图1是信号量控制块示意图;
图2是本发明的方法流程图;
图3是本发明的装置结构示意图。
具体实施方式
下面结合附图详细描述本发明的技术方案。
如图1,vxWorks操作***中,使用一个结构体来管理信号量,称此结构体为信号量控制块(SemaphoreControlBlock,简称为SCB)。对于互斥信号量来说,信号量控制块中:占有者任务字段表示已经获取该信号量的任务的任务控制块指针;递归嵌套调用字段表示占有者递归获取该互斥信号量的次数。
检测信号量占有者流程如图2所示:
(1)统一管理互斥信号量
构造互斥信号量管理列表,***创建互斥信号量时将互斥信号量加入互斥信号量管理列表,***删除互斥信号量时将互斥信号量从互斥信号量管理列表中删除。
(2)利用检测任务检测所有互斥信号量
在***中创建一个具有最高优先级的互斥信号量检测任务,检测信互斥信号量管理列表中的互斥信号量的状态信息,包括互斥信号量占有者任务及其获取该互斥信号量的次数。
通过检测信号量控制块中的占有者任务字段来判断互斥信号量占有者任务是否合法。
(3)互斥信号量检测任务周期性检测信号量管理列表中的互斥信号量的占有者任务及该占有者任务获取互斥信号量的次数。
(301)如果检测某个互斥信号量的占有者任务字段不合法,则该控制块不合法,说明占有者任务在取得该信号量后已经被删除,向用户输出错误信息。
(302)如果连续检测到某互斥信号量占有者任务字段没有变化,且该互斥信号量的递归嵌套调用字段的值在增加,说明占有者任务取得互斥信号量和释放互斥信号量的次数不对称,取得互斥信号量的次数大于释放互斥信号量的次数;
如果连续检测到某互斥信号量的占有者任务字段没有变化,且占有者任务处于阻塞状态,则说明占有者任务获取所述互斥信号量后阻塞在了其它信号量上,可以输出占有者任务的PC(ProgramCounter)指针,根据PC指针查找占有者任务阻塞在哪个信号量上。
(303)如果连续检测到某信号量的占有者任务字段没有变化,且占有者任务处于就绪状态,如果占有者任务的PC指针在变化,则说明可能是占有者任务取得该信号量后出现了死循环,可以根据PC指针输出占有者任务的死循环轨迹;
如果占有者任务的PC指针没有变化。则说明该占有者任务取得该信号量后,***中出现了更高优先级任务的死循环。
本发明基于同样构思的多任务操作***中互斥信号量异常的检测装置,结构如图3所示,包括列表管理模块1和状态检测模块2。
列表管理模块1,用于构造互斥信号量管理列表,创建互斥信号量时将互斥信号量加入互斥信号量管理列表,删除互斥信号量时将互斥信号量从互斥信号量管理列表中删除。
状态检测模块2,用于创建一个优先级最高的互斥信号量状态检测任务,周期性检测信互斥信号量管理列表中的互斥信号量的状态信息,所述状态信息包括互斥信号量占有者任务及其获取该互斥信号量的次数。
状态检测模块2,通过检测信号量控制块中的占有者任务字段来判断所述互斥信号量占有者任务是否合法。
如果状态检测模块2检测到某互斥信号量占有者任务不合法,说明互斥信号量占有者任务在取得该信号量后已经被删除,向用户输出错误信息。
如果状态检测模块2连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于就绪状态:
如果状态检测模块2还检测到占有者任务的PC指针在变化,则占有者任务取得该信号量后出现了死循环,根据PC指针输出所述占有者任务的死循环轨迹;
如果状态检测模块2检测到占有者任务PC指针没有变化,则该占有者任务取得该信号量后,***中出现了更高优先级任务的死循环。
如果状态检测模块2连续检测到某互斥信号量占有者任务字段没有变化,且该互斥信号量的递归嵌套调用字段的值在增加,则占有者任务取得互斥信号量和释放互斥信号量的次数不对称,取得互斥信号量的次数大于释放互斥信号量的次数;
如果状态检测模块2连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于阻塞状态,则占有者任务获取所述互斥信号量后阻塞在了其它信号量上,输出占有者任务的PC指针,根据PC指针查找占有者任务阻塞在哪个信号量上。
Claims (6)
1.多任务操作***中互斥信号量异常的检测方法,其特征在于,
构造互斥信号量管理列表,创建互斥信号量时将互斥信号量加入互斥信号量管理列表,删除互斥信号量时将互斥信号量从互斥信号量管理列表中删除;
创建一个优先级最高的互斥信号量状态检测任务,周期性检测信互斥信号量管理列表中的互斥信号量的状态信息,所述状态信息包括互斥信号量占有者任务及其获取该互斥信号量的次数;
通过检测信号量控制块中的占有者任务字段来判断所述互斥信号量占有者任务是否合法,如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于就绪状态,进一步判断:
如果占有者任务的PC指针在变化,则占有者任务取得该信号量后出现了死循环,根据PC指针输出所述占有者任务的死循环轨迹;
如果占有者任务的PC指针没有变化,则该占有者任务取得该信号量后,***中出现了更高优先级任务的死循环。
2.根据权利要求1所述的多任务操作***中互斥信号量异常的检测方法,其特征在于,如果检测到某互斥信号量占有者任务不合法,说明互斥信号量占有者任务在取得该信号量后已经被删除,向用户输出错误信息。
3.根据权利要求1所述的多任务操作***中互斥信号量异常的检测方法,其特征在于,
如果连续检测到某互斥信号量占有者任务字段没有变化,且该互斥信号量的递归嵌套调用字段的值在增加,则占有者任务取得互斥信号量和释放互斥信号量的次数不对称,取得互斥信号量的次数大于释放互斥信号量的次数;
如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于阻塞状态,则占有者任务获取所述互斥信号量后阻塞在了其它信号量上,输出占有者任务的PC指针,根据PC指针查找占有者任务阻塞在哪个信号量上。
4.多任务操作***中互斥信号量异常的检测装置,其特征在于,包括列表管理模块和状态检测模块;
所述列表管理模块,用于构造互斥信号量管理列表,创建互斥信号量时将互斥信号量加入互斥信号量管理列表,删除互斥信号量时将互斥信号量从互斥信号量管理列表中删除;
所述状态检测模块,用于创建一个优先级最高的互斥信号量状态检测任务,周期性检测信互斥信号量管理列表中的互斥信号量的状态信息,所述状态信息包括互斥信号量占有者任务及其获取该互斥信号量的次数;
通过检测信号量控制块中的占有者任务字段来判断所述互斥信号量占有者任务是否合法,如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于就绪状态,进一步判断:
如果占有者任务的PC指针在变化,则占有者任务取得该信号量后出现了死循环,根据PC指针输出所述占有者任务的死循环轨迹;
如果占有者任务PC指针没有变化,则该占有者任务取得该信号量后,***中出现了更高优先级任务的死循环。
5.根据权利要求4所述的多任务操作***中互斥信号量异常的检测装置,其特征在于,所述状态检测模块,用于判断如果检测到某互斥信号量占有者任务不合法,说明互斥信号量占有者任务在取得该信号量后已经被删除,向用户输出错误信息。
6.根据权利要求4所述的多任务操作***中互斥信号量异常的检测装置,其特征在于,
所述状态检测模块,用于判断如果连续检测到某互斥信号量占有者任务字段没有变化,且该互斥信号量的递归嵌套调用字段的值在增加,则占有者任务取得互斥信号量和释放互斥信号量的次数不对称,取得互斥信号量的次数大于释放互斥信号量的次数;
如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于阻塞状态,则占有者任务获取所述互斥信号量后阻塞在了其它信号量上,输出占有者任务的PC指针,根据PC指针查找占有者任务阻塞在哪个信号量上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310108697.XA CN103218291B (zh) | 2013-03-29 | 2013-03-29 | 多任务操作***中互斥信号量异常的检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310108697.XA CN103218291B (zh) | 2013-03-29 | 2013-03-29 | 多任务操作***中互斥信号量异常的检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103218291A CN103218291A (zh) | 2013-07-24 |
CN103218291B true CN103218291B (zh) | 2016-05-04 |
Family
ID=48816109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310108697.XA Active CN103218291B (zh) | 2013-03-29 | 2013-03-29 | 多任务操作***中互斥信号量异常的检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103218291B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778115B (zh) * | 2014-01-09 | 2017-08-25 | 北大方正集团有限公司 | 互斥检测方法及装置 |
CN105511969B (zh) * | 2015-11-25 | 2020-05-19 | 中国船舶工业***工程研究院 | 一种跨进程的线程间进行互斥的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1831779A (zh) * | 2005-03-11 | 2006-09-13 | 华为技术有限公司 | 一种信号量死锁的检测方法 |
US7353515B1 (en) * | 2001-02-04 | 2008-04-01 | Cisco Technology, Inc. | Method and apparatus for dynamic allocation and management of semaphores for accessing shared resources |
CN102567096A (zh) * | 2011-12-30 | 2012-07-11 | 中国科学院软件研究所 | 一种在多任务环境下防止死锁的互斥信号量管理方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7428732B2 (en) * | 2001-12-05 | 2008-09-23 | Intel Corporation | Method and apparatus for controlling access to shared resources in an environment with multiple logical processors |
EP1569121B1 (en) * | 2004-02-26 | 2007-07-11 | Research In Motion Limited | Method and system for detecting potential deadlocks in computer programs |
CN101853191B (zh) * | 2010-06-23 | 2013-02-20 | 迈普通信技术股份有限公司 | 检测操作***中任务死循环的方法及*** |
-
2013
- 2013-03-29 CN CN201310108697.XA patent/CN103218291B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7353515B1 (en) * | 2001-02-04 | 2008-04-01 | Cisco Technology, Inc. | Method and apparatus for dynamic allocation and management of semaphores for accessing shared resources |
CN1831779A (zh) * | 2005-03-11 | 2006-09-13 | 华为技术有限公司 | 一种信号量死锁的检测方法 |
CN102567096A (zh) * | 2011-12-30 | 2012-07-11 | 中国科学院软件研究所 | 一种在多任务环境下防止死锁的互斥信号量管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103218291A (zh) | 2013-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107870845B (zh) | 面向微服务架构应用的管理方法及*** | |
CN102360328B (zh) | 程序监控装置和程序监控方法 | |
CN103455377B (zh) | 用于管理业务线程池的***和方法 | |
CN107526645B (zh) | 一种通信优化方法及*** | |
EP3230861B1 (en) | Technologies for fast synchronization barriers for many-core processing | |
CN102722431B (zh) | 进程监控方法及装置 | |
CN106201676A (zh) | 一种任务分配方法及装置 | |
CN106293893A (zh) | 作业调度方法、装置及分布式*** | |
CN103425592A (zh) | 一种多进程***中的内存管理方法及装置 | |
CN106095413B (zh) | 一种蓝牙驱动程序的配置方法及装置 | |
RU2009139312A (ru) | Способ устранения исключительной ситуации в одном из ядер многоядерной системы | |
CN104503989B (zh) | 一种完成异构数据库归集的方法 | |
CN110012062A (zh) | 一种多机房任务调度方法、装置及存储介质 | |
CN109739627B (zh) | 任务的调度方法、电子设备及介质 | |
CN103218291B (zh) | 多任务操作***中互斥信号量异常的检测方法及装置 | |
CN110347407A (zh) | 一种获取内存占用量的方法、装置、计算机设备及介质 | |
CN105824709B (zh) | 一种临界区访问方法及装置 | |
CN106170013B (zh) | 一种基于Redis的Kafka消息唯一性方法 | |
CN104572394A (zh) | 进程监控方法及装置 | |
CN100517177C (zh) | 一种组合式复位***处理方法及装置 | |
CN103502906B (zh) | 运行操作***的处理器核的动态分配 | |
CN109324959A (zh) | 一种自动转移数据的方法、服务器及计算机可读存储介质 | |
CN103927244B (zh) | 一种基于动态代理实现的插件调度过程监控的方法 | |
CN102141955B (zh) | 一种基于Linux的内核日志***及实现方法 | |
CN102622300A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |