本申请涉及一种多线程操作系统信号量的异常检测方法和装置,能够接收信号量获取指令;当信号量链表队列中存在第一信号量标识时,添加待执行线程至第一线程链表队列的尾部;当第一线程链表队列中不存在第二个待执行线程标识时,获取第一线程链表队列中线程状态为运行的线程的第一线程标识;遍历信号量链表队列,当第二线程链表队列中存在第一线程标识且线程状态为阻塞时,获取第二线程链表队列中线程状态为运行的线程的第二线程标识;当第一线程链表队列中存在第二线程标识时,提示检测出现异常。采用本方法能够自动进行线程的异常检测,防止多线程操作系统出现线程运行阻塞的情况,提高了多线程操作系统运行的稳定性。
背景技术
信号量是嵌入式多线程操作系统的用来保护临界资源的一种机制,临界资源指的是只能被一个进程或者线程所占用的资源。信号量负责协调各个线程,以确保他们能够正确、合理的使用公共资源。互斥是指进程或者线程间之间的间接制约关系,当一个进程进入临界区使用临界资源时,另一个进程或者线程必须等待。只有当使用临界资源的进程退出临界区后,这个进程或者线程才会解除阻塞状态。在传统的各种操作系统中,一般使用互斥信号量来保护临界资源。如果在软件实现的使用互斥信号量过程中,任务获取互斥信号量后不释放就退出,其它的来获取该互斥信号量的任务将永远阻塞在该互斥信号量上,这样将使系统工作异常。
传统技术中,通常采用人工检查和测试的方式来发现多线程操作系统中的异常情况,然而随着多线程操作系统的功能逐渐丰富,多线程操作系统的软件开发工作量日渐庞大,且多线程操作系统的软件开发还可能存在协作分工的情况,以往的人工检测方法已经逐渐无法满足传统的多线程操作系统异常检测的需求。
实现思路