CN103218291A - 多任务操作系统中互斥信号量异常的检测方法及装置 - Google Patents
多任务操作系统中互斥信号量异常的检测方法及装置 Download PDFInfo
- Publication number
- CN103218291A CN103218291A CN201310108697XA CN201310108697A CN103218291A CN 103218291 A CN103218291 A CN 103218291A CN 201310108697X A CN201310108697X A CN 201310108697XA CN 201310108697 A CN201310108697 A CN 201310108697A CN 103218291 A CN103218291 A CN 103218291A
- Authority
- CN
- China
- Prior art keywords
- task
- holder
- mutex
- mutex amount
- 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及多任务操作系统中互斥信号量异常的检测技术。本发明公开了一种多任务操作系统中互斥信号量异常的检测方法及装置。本发明的技术方案是,多任务操作系统中互斥信号量异常的检测方法,其特征在于,构造互斥信号量管理列表,创建互斥信号量时将互斥信号量加入互斥信号量管理列表,删除互斥信号量时将互斥信号量从互斥信号量管理列表中删除;创建一个优先级最高的互斥信号量状态检测任务,周期性检测信互斥信号量管理列表中的互斥信号量的状态信息,所述状态信息包括互斥信号量占有者任务及其获取该互斥信号量的次数。本发明的检测装置包括列表管理模块和状态检测模块。本发明可以高效的检测系统中互斥信号量的错误使用。
Description
技术领域
本发明涉及计算机多任务操作系统领域,特别涉及多任务操作系统中互斥信号量异常的检测技术。
背景技术
信号量(Semaphore),有时也称为信号灯,是在多线程环境下使用的一种设施,它负责协调各个线程,以保证它们能够正确、合理的使用公共资源。在vxWorks操作系统中,一般使用互斥信号量来保护临界资源。如果在软件实现的使用互斥信号量过程中,任务获取互斥信号量后不释放就退出,其它的来获取该互斥信号量的任务将永远阻塞在该互斥信号量上,这样将使系统工作异常。
可以在软件的编码过程中提高编码质量部分解决此问题,但软件编码中的此类编码问题也难于全部解决,而且人工排查此类问题的效率有限。
发明内容
本发明所要解决的技术问题,就是提供一种多任务操作系统中互斥信号量异常的检测方法及装置,在软件开发过程中高效的发现互斥信号量的使用问题,提高软件质量。
本发明解决所述技术问题,采用的技术方案是,多任务操作系统中互斥信号量异常的检测方法,其特征在于,
构造互斥信号量管理列表,创建互斥信号量时将互斥信号量加入互斥信号量管理列表,删除互斥信号量时将互斥信号量从互斥信号量管理列表中删除;
创建一个优先级最高的互斥信号量状态检测任务,周期性检测信互斥信号量管理列表中的互斥信号量的状态信息,所述状态信息包括互斥信号量占有者任务及其获取该互斥信号量的次数。
进一步的,通过检测信号量控制块中的占有者任务字段来判断所述互斥信号量占有者任务是否合法。
具体的,如果检测到某互斥信号量占有者任务不合法,说明互斥信号量占有者任务在取得该信号量后已经被删除,向用户输出错误信息。
具体的,如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于就绪状态,进一步判断:
如果占有者任务的PC指针在变化,则占有者任务取得该信号量后出现了死循环,根据PC指针输出所述占有者任务的死循环轨迹;
如果占有者任务的PC指针没有变化,则该占有者任务取得该信号量后,系统中出现了更高优先级任务的死循环。
具体的,如果连续检测到某互斥信号量占有者任务字段没有变化,且该互斥信号量的递归嵌套调用字段的值在增加,则占有者任务取得互斥信号量和释放互斥信号量的次数不对称,取得互斥信号量的次数大于释放互斥信号量的次数;
如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于阻塞状态,则占有者任务获取所述互斥信号量后阻塞在了其它信号量上,输出占有者任务的PC指针,根据PC指针查找占有者任务阻塞在哪个信号量上。
本发明的另一个目的,提供一种多任务操作系统中互斥信号量异常的检测装置,其特征在于,包括列表管理模块和状态检测模块;
所述列表管理模块,用于构造互斥信号量管理列表,创建互斥信号量时将互斥信号量加入互斥信号量管理列表,删除互斥信号量时将互斥信号量从互斥信号量管理列表中删除;
所述状态检测模块,用于创建一个优先级最高的互斥信号量状态检测任务,周期性检测信互斥信号量管理列表中的互斥信号量的状态信息,所述状态信息包括互斥信号量占有者任务及其获取该互斥信号量的次数。
进一步的,所诉状态检测模块,用于通过检测信号量控制块中的占有者任务字段来判断所述互斥信号量占有者任务是否合法。
具体的,所述状态检测模块,用于判断如果检测到某互斥信号量占有者任务不合法,说明互斥信号量占有者任务在取得该信号量后已经被删除,向用户输出错误信息。
具体的,所述状态检测模块,用于判断如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于就绪状态,进一步判断:
如果占有者任务的PC指针在变化,则占有者任务取得该信号量后出现了死循环,根据PC指针输出所述占有者任务的死循环轨迹;
如果占有者任务PC指针没有变化,则该占有者任务取得该信号量后,系统中出现了更高优先级任务的死循环。
具体的,所述状态检测模块,用于判断如果连续检测到某互斥信号量占有者任务字段没有变化,且该互斥信号量的递归嵌套调用字段的值在增加,则占有者任务取得互斥信号量和释放互斥信号量的次数不对称,取得互斥信号量的次数大于释放互斥信号量的次数;
如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于阻塞状态,则占有者任务获取所述互斥信号量后阻塞在了其它信号量上,输出占有者任务的PC指针,根据PC指针查找占有者任务阻塞在哪个信号量上。
本发明的有益效果是,可以高效的检测系统中互斥信号量的错误使用,这些错误使用包括:信号量的获取和释放不配对,某次获取后没有释放;或者某任务获取互斥信号量后出现死循环;或者某任务获取互斥信号量后永远阻塞在其它信号量上。
附图说明
图1是信号量控制块示意图;
图2是本发明的方法流程图;
图3是本发明的装置结构示意图。
具体实施方式
下面结合附图详细描述本发明的技术方案。
如图1,vxWorks操作系统中,使用一个结构体来管理信号量,称此结构体为信号量控制块(Semaphore Control Block,简称为SCB)。对于互斥信号量来说,信号量控制块中:占有者任务字段表示已经获取该信号量的任务的任务控制块指针;递归嵌套调用字段表示占有者递归获取该互斥信号量的次数。
检测信号量占有者流程如图2所示:
(1)统一管理互斥信号量
构造互斥信号量管理列表,系统创建互斥信号量时将互斥信号量加入互斥信号量管理列表,系统删除互斥信号量时将互斥信号量从互斥信号量管理列表中删除。
(2)利用检测任务检测所有互斥信号量
在系统中创建一个具有最高优先级的互斥信号量检测任务,检测信互斥信号量管理列表中的互斥信号量的状态信息,包括互斥信号量占有者任务及其获取该互斥信号量的次数。
通过检测信号量控制块中的占有者任务字段来判断互斥信号量占有者任务是否合法。
(3)互斥信号量检测任务周期性检测信号量管理列表中的互斥信号量的占有者任务及该占有者任务获取互斥信号量的次数。
(301)如果检测某个互斥信号量的占有者任务字段不合法,则该控制块不合法,说明占有者任务在取得该信号量后已经被删除,向用户输出错误信息。
(302)如果连续检测到某互斥信号量占有者任务字段没有变化,且该互斥信号量的递归嵌套调用字段的值在增加,说明占有者任务取得互斥信号量和释放互斥信号量的次数不对称,取得互斥信号量的次数大于释放互斥信号量的次数;
如果连续检测到某互斥信号量的占有者任务字段没有变化,且占有者任务处于阻塞状态,则说明占有者任务获取所述互斥信号量后阻塞在了其它信号量上,可以输出占有者任务的PC(Program Counter)指针,根据PC指针查找占有者任务阻塞在哪个信号量上。
(303)如果连续检测到某信号量的占有者任务字段没有变化,且占有者任务处于就绪状态,如果占有者任务的PC指针在变化,则说明可能是占有者任务取得该信号量后出现了死循环,可以根据PC指针输出占有者任务的死循环轨迹;
如果占有者任务的PC指针没有变化。则说明该占有者任务取得该信号量后,系统中出现了更高优先级任务的死循环。
本发明基于同样构思的多任务操作系统中互斥信号量异常的检测装置,结构如图3所示,包括列表管理模块1和状态检测模块2。
列表管理模块1,用于构造互斥信号量管理列表,创建互斥信号量时将互斥信号量加入互斥信号量管理列表,删除互斥信号量时将互斥信号量从互斥信号量管理列表中删除。
状态检测模块2,用于创建一个优先级最高的互斥信号量状态检测任务,周期性检测信互斥信号量管理列表中的互斥信号量的状态信息,所述状态信息包括互斥信号量占有者任务及其获取该互斥信号量的次数。
状态检测模块2,通过检测信号量控制块中的占有者任务字段来判断所述互斥信号量占有者任务是否合法。
如果状态检测模块2检测到某互斥信号量占有者任务不合法,说明互斥信号量占有者任务在取得该信号量后已经被删除,向用户输出错误信息。
如果状态检测模块2连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于就绪状态:
如果状态检测模块2还检测到占有者任务的PC指针在变化,则占有者任务取得该信号量后出现了死循环,根据PC指针输出所述占有者任务的死循环轨迹;
如果状态检测模块2检测到占有者任务PC指针没有变化,则该占有者任务取得该信号量后,系统中出现了更高优先级任务的死循环。
如果状态检测模块2连续检测到某互斥信号量占有者任务字段没有变化,且该互斥信号量的递归嵌套调用字段的值在增加,则占有者任务取得互斥信号量和释放互斥信号量的次数不对称,取得互斥信号量的次数大于释放互斥信号量的次数;
如果状态检测模块2连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于阻塞状态,则占有者任务获取所述互斥信号量后阻塞在了其它信号量上,输出占有者任务的PC指针,根据PC指针查找占有者任务阻塞在哪个信号量上。
Claims (10)
1.多任务操作系统中互斥信号量异常的检测方法,其特征在于,
构造互斥信号量管理列表,创建互斥信号量时将互斥信号量加入互斥信号量管理列表,删除互斥信号量时将互斥信号量从互斥信号量管理列表中删除;
创建一个优先级最高的互斥信号量状态检测任务,周期性检测信互斥信号量管理列表中的互斥信号量的状态信息,所述状态信息包括互斥信号量占有者任务及其获取该互斥信号量的次数。
2.根据权利要求1所述的多任务操作系统中互斥信号量异常的检测方法,其特征在于,通过检测信号量控制块中的占有者任务字段来判断所述互斥信号量占有者任务是否合法。
3.根据权利要求2所述的多任务操作系统中互斥信号量异常的检测方法,其特征在于,如果检测到某互斥信号量占有者任务不合法,说明互斥信号量占有者任务在取得该信号量后已经被删除,向用户输出错误信息。
4.根据权利要求2所述的多任务操作系统中互斥信号量异常的检测方法,其特征在于,如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于就绪状态,进一步判断:
如果占有者任务的PC指针在变化,则占有者任务取得该信号量后出现了死循环,根据PC指针输出所述占有者任务的死循环轨迹;
如果占有者任务的PC指针没有变化,则该占有者任务取得该信号量后,系统中出现了更高优先级任务的死循环。
5.根据权利要求2所述的多任务操作系统中互斥信号量异常的检测方法,其特征在于,
如果连续检测到某互斥信号量占有者任务字段没有变化,且该互斥信号量的递归嵌套调用字段的值在增加,则占有者任务取得互斥信号量和释放互斥信号量的次数不对称,取得互斥信号量的次数大于释放互斥信号量的次数;
如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于阻塞状态,则占有者任务获取所述互斥信号量后阻塞在了其它信号量上,输出占有者任务的PC指针,根据PC指针查找占有者任务阻塞在哪个信号量上。
6.多任务操作系统中互斥信号量异常的检测装置,其特征在于,包括列表管理模块和状态检测模块;
所述列表管理模块,用于构造互斥信号量管理列表,创建互斥信号量时将互斥信号量加入互斥信号量管理列表,删除互斥信号量时将互斥信号量从互斥信号量管理列表中删除;
所述状态检测模块,用于创建一个优先级最高的互斥信号量状态检测任务,周期性检测信互斥信号量管理列表中的互斥信号量的状态信息,所述状态信息包括互斥信号量占有者任务及其获取该互斥信号量的次数。
7.根据权利要求6所述的多任务操作系统中互斥信号量异常的检测装置,其特征在于,所诉状态检测模块,用于通过检测信号量控制块中的占有者任务字段来判断所述互斥信号量占有者任务是否合法。
8.根据权利要求7所述的多任务操作系统中互斥信号量异常的检测装置,其特征在于,所述状态检测模块,用于判断如果检测到某互斥信号量占有者任务不合法,说明互斥信号量占有者任务在取得该信号量后已经被删除,向用户输出错误信息。
9.根据权利要求7所述的多任务操作系统中互斥信号量异常的检测装置,其特征在于,所述状态检测模块,用于判断如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于就绪状态,进一步判断:
如果占有者任务的PC指针在变化,则占有者任务取得该信号量后出现了死循环,根据PC指针输出所述占有者任务的死循环轨迹;
如果占有者任务PC指针没有变化,则该占有者任务取得该信号量后,系统中出现了更高优先级任务的死循环。
10.根据权利要求7所述的多任务操作系统中互斥信号量异常的检测装置,其特征在于,
所述状态检测模块,用于判断如果连续检测到某互斥信号量占有者任务字段没有变化,且该互斥信号量的递归嵌套调用字段的值在增加,则占有者任务取得互斥信号量和释放互斥信号量的次数不对称,取得互斥信号量的次数大于释放互斥信号量的次数;
如果连续检测到某互斥信号量占有者任务字段没有变化,且占有者任务处于阻塞状态,则占有者任务获取所述互斥信号量后阻塞在了其它信号量上,输出占有者任务的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 true CN103218291A (zh) | 2013-07-24 |
CN103218291B 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) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778115A (zh) * | 2014-01-09 | 2015-07-15 | 北大方正集团有限公司 | 互斥检测方法及装置 |
CN105511969A (zh) * | 2015-11-25 | 2016-04-20 | 中国船舶工业系统工程研究院 | 一种跨进程的线程间进行互斥的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030105796A1 (en) * | 2001-12-05 | 2003-06-05 | Sandri Jason G. | Method and apparatus for controlling access to shared resources in an environment with multiple logical processors |
EP1569121A1 (en) * | 2004-02-26 | 2005-08-31 | Research In Motion Limited | Method and system for detecting potential deadlocks in computer programs |
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 |
CN101853191A (zh) * | 2010-06-23 | 2010-10-06 | 迈普通信技术股份有限公司 | 检测操作系统中任务死循环的方法及操作系统 |
CN102567096A (zh) * | 2011-12-30 | 2012-07-11 | 中国科学院软件研究所 | 一种在多任务环境下防止死锁的互斥信号量管理方法 |
-
2013
- 2013-03-29 CN CN201310108697.XA patent/CN103218291B/zh active Active
Patent Citations (6)
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 |
US20030105796A1 (en) * | 2001-12-05 | 2003-06-05 | Sandri Jason G. | Method and apparatus for controlling access to shared resources in an environment with multiple logical processors |
EP1569121A1 (en) * | 2004-02-26 | 2005-08-31 | Research In Motion Limited | Method and system for detecting potential deadlocks in computer programs |
CN1831779A (zh) * | 2005-03-11 | 2006-09-13 | 华为技术有限公司 | 一种信号量死锁的检测方法 |
CN101853191A (zh) * | 2010-06-23 | 2010-10-06 | 迈普通信技术股份有限公司 | 检测操作系统中任务死循环的方法及操作系统 |
CN102567096A (zh) * | 2011-12-30 | 2012-07-11 | 中国科学院软件研究所 | 一种在多任务环境下防止死锁的互斥信号量管理方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778115A (zh) * | 2014-01-09 | 2015-07-15 | 北大方正集团有限公司 | 互斥检测方法及装置 |
CN104778115B (zh) * | 2014-01-09 | 2017-08-25 | 北大方正集团有限公司 | 互斥检测方法及装置 |
CN105511969A (zh) * | 2015-11-25 | 2016-04-20 | 中国船舶工业系统工程研究院 | 一种跨进程的线程间进行互斥的方法 |
CN105511969B (zh) * | 2015-11-25 | 2020-05-19 | 中国船舶工业系统工程研究院 | 一种跨进程的线程间进行互斥的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103218291B (zh) | 2016-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9846601B2 (en) | Method and apparatuses for determining a leak of resource and predicting usage of resource | |
TW201610703A (zh) | 雲端中之分散式串流處理 | |
US20240020215A1 (en) | Analyzing large-scale data processing jobs | |
CN107783829B (zh) | 任务处理方法、装置、存储介质和计算机设备 | |
CN104317712A (zh) | 一种基于linux的存储服务器疲劳测试方法 | |
CN107025224B (zh) | 一种监控任务运行的方法和设备 | |
CN106095413B (zh) | 一种蓝牙驱动程序的配置方法及装置 | |
CN110347407A (zh) | 一种获取内存占用量的方法、装置、计算机设备及介质 | |
CN105487971A (zh) | 一种软件测试中操作步骤记录和复现的方法及系统 | |
CN103645961A (zh) | 计算密集型并行任务的异常检测方法及系统 | |
CN102622300B (zh) | 多任务系统中死循环或类死循环的检测方法 | |
CN106547861A (zh) | 一种智能管理机器节点的数据库的方法及装置 | |
CN103019977A (zh) | 嵌入式系统应用设备实现版本自动识别的方法及启动方法 | |
CN107315652B (zh) | 一种数据备份方法及云hdfs系统 | |
CN103218291A (zh) | 多任务操作系统中互斥信号量异常的检测方法及装置 | |
CN103092710A (zh) | 云计算操作系统中一种高可用虚拟机运行方法 | |
CN112988540B (zh) | 图元替换方法、系统、计算机可读存储介质及终端设备 | |
CN103400219A (zh) | 一种应用于封装生产线的统计报表智能管理方法 | |
CN104123205A (zh) | 一种检测cpu超频工作状态的方法及装置 | |
CN113886342A (zh) | 文件的格式转换方法、装置、存储介质及处理器 | |
CN106354635A (zh) | 一种嵌入式设备的程序代码段自检方法及装置 | |
CN104239180B (zh) | 变更处理方法、装置及系统 | |
CN105224861B (zh) | 一种智能设备的死机状态处理方法及系统 | |
Jofri et al. | A survey on energy-aware profiler for mobile devices | |
CN104181909A (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 |