CN103218291B - 多任务操作系统中互斥信号量异常的检测方法及装置 - Google Patents

多任务操作系统中互斥信号量异常的检测方法及装置 Download PDF

Info

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
Application number
CN201310108697.XA
Other languages
English (en)
Other versions
CN103218291A (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.)
Maipu Communication Technology Co Ltd
Original Assignee
Maipu 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 Maipu Communication Technology Co Ltd filed Critical Maipu Communication Technology Co Ltd
Priority to CN201310108697.XA priority Critical patent/CN103218291B/zh
Publication of CN103218291A publication Critical patent/CN103218291A/zh
Application granted granted Critical
Publication of CN103218291B publication Critical patent/CN103218291B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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指针查找占有者任务阻塞在哪个信号量上。
CN201310108697.XA 2013-03-29 2013-03-29 多任务操作系统中互斥信号量异常的检测方法及装置 Active CN103218291B (zh)

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)

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

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

* Cited by examiner, † Cited by third party
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
DE602004007475T2 (de) * 2004-02-26 2008-03-13 Research In Motion Ltd., Waterloo Verfahren und System zur Erkennung von möglichen Blockierungen in Computerprogrammen
CN101853191B (zh) * 2010-06-23 2013-02-20 迈普通信技术股份有限公司 检测操作系统中任务死循环的方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
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) 用于管理业务线程池的系统和方法
EP3230861B1 (en) Technologies for fast synchronization barriers for many-core processing
CN102722431B (zh) 进程监控方法及装置
CN106293893A (zh) 作业调度方法、装置及分布式系统
CN103425592A (zh) 一种多进程系统中的内存管理方法及装置
CN103647723B (zh) 一种流量监控的方法和系统
CN106095413B (zh) 一种蓝牙驱动程序的配置方法及装置
RU2009139312A (ru) Способ устранения исключительной ситуации в одном из ядер многоядерной системы
CN104503989B (zh) 一种完成异构数据库归集的方法
CN110012062A (zh) 一种多机房任务调度方法、装置及存储介质
CN110347407A (zh) 一种获取内存占用量的方法、装置、计算机设备及介质
CN109739627B (zh) 任务的调度方法、电子设备及介质
CN103218291B (zh) 多任务操作系统中互斥信号量异常的检测方法及装置
CN105824709B (zh) 一种临界区访问方法及装置
CN106170013B (zh) 一种基于Redis的Kafka消息唯一性方法
CN104572394A (zh) 进程监控方法及装置
CN100517177C (zh) 一种组合式复位系统处理方法及装置
CN103502906B (zh) 运行操作系统的处理器核的动态分配
CN109324959A (zh) 一种自动转移数据的方法、服务器及计算机可读存储介质
CN103927244B (zh) 一种基于动态代理实现的插件调度过程监控的方法
CN102141955B (zh) 一种基于Linux的内核日志系统及实现方法
CN102622300A (zh) 多任务系统中死循环或类死循环的检测方法
CN106547606B (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