CN1831779A - 一种信号量死锁的检测方法 - Google Patents
一种信号量死锁的检测方法 Download PDFInfo
- Publication number
- CN1831779A CN1831779A CN 200510053781 CN200510053781A CN1831779A CN 1831779 A CN1831779 A CN 1831779A CN 200510053781 CN200510053781 CN 200510053781 CN 200510053781 A CN200510053781 A CN 200510053781A CN 1831779 A CN1831779 A CN 1831779A
- Authority
- CN
- China
- Prior art keywords
- semaphore
- array
- information
- record
- preserve
- 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
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种信号量死锁的检测方法,该方法包括以下步骤:预先设定用于保存进程与信号量之间关系的记录的格式;在所述进程对所述信号量的操作过程中,在所述记录中保存所述进程和信号量之间关系的信息;遍历当前记录,判断是否存在资源等待环路,如果是则检测到信号量死锁。本发明根据是否存在资源等待环路这个统一的判断条件检测出系统中是否发生信号量死锁,能够精确地得到发生死锁的信号量和相关进程,并且本发明的实现过程简便,能够方便地移植在各种操作系统中。
Description
技术领域
本发明涉及操作系统的进程管理领域,特别是一种信号量死锁的检测方法。
背景技术
现代软件系统中一般运行着多个进程,进程互斥是进程之间一种常见的活动。进程互斥的通常情况是两个或两个以上的进程需要同时访问某个共享资源。进程间由于互相占有独占的资源,并申请属于对方的独占资源,导致双方都无法继续执行的现象称为死锁(Dead Lock)。
产生死锁需要如下四个条件:
条件1、出现死锁的系统中必须存在需要互斥使用的资源,即一次仅能有一个进程使用的资源,如打印机等。这个条件称为互斥性条件。
条件2、出现死锁的系统中一定存在这样的进程,它们已经分配到了某些资源,并且还在等待另外的资源。这个条件称为占有等待条件。
条件3、出现死锁的系统中一定存在不可剥夺使用的资源,即该资源一旦被某一进程占用,其它进程只有等待。这个条件称为非剥夺条件。
条件4、出现死锁的系统中一定存在一个处于等待状态的进程集合{P0,P1,...Pn},其中Pi等待的资源被Pi+1(i=0,1,...n-1)占有,Pn等待的资源被P0占有。这个条件称为等待条件。
上述4个条件中,条件1、2、3描述了系统中进程和资源已有的属性,条件4描述了产生死锁时进程集合形成资源等待环路的情况。
信号量(Semaphore)是一种用来解决进程同步与互斥问题的机制,包括一个称为信号量的变量以及对它进行的两个原语操作。信号量记录了资源能被占用的进程数目,在进程互斥中信号量的初值设为1,该信号量一次仅能由一个进程占用,并且一旦被某一进程占用,其它进程只有等待,即满足了上面的条件1和条件3。对于信号量的两个原语操作为获取(P)操作和释放(V)操作,P操作使信号量减1,V操作使信号量加1,当信号量为负数时,它的绝对值为等待这个信号量的进程个数。当一个进程对一个被其它进程占用的信号量进行P操作时,该进程会被挂起进入封锁状态,直到其它进程释放该信号量。
假设系统中有互斥信号量a、b和进程A、B,其中信号量a、b的初值为1,如果进程A、B对信号量a、b依次进行了如下操作:
A对a进行P操作;
B对b进行P操作;
A对b进行P操作;
B对a进行P操作。
那么A、B两个进程都顺利完成它们的第一个P操作,使得信号量a、b的值都变为0。但是当A对b进行P操作时由于b被B占用,A就转入封锁状态,当B对a进行P操作时由于a被A占用,B同样进入封锁状态,因此这两个进程就不能继续运行,进入如图1所示的死锁状态。在图1中,进程A、B分别占用着信号量a、b,而进程A、B又分别等待信号量b、a,这两个进程就满足了条件2,并形成上面条件4所描述的资源等待环路。因此,此时的信号量a、b和进程A、B满足了上面所说的4个条件,形成了信号量死锁。
对于信号量死锁的检测,一般由用户软件提供的监控进程完成,监控进程周期性地检测各个进程,如果发现某个进程的相关计数器长期不增长,或者长期收不到进程间的握手消息,则认为该进程异常,监控进程记录相关信息或复位系统。
在上述技术方案中,有的进程需要通过计数器来判断其是否异常,有的进程需要通过握手信息来判断其是否异常,可见各个进程异常的判断条件不一定相同,因此该检测方式不具备通用性,可移植性较差。并且,这种技术只能检测出进程异常,并不能检测出系统中是否存在信号量死锁,表明该方法检测的结果比较笼统。
发明内容
有鉴于此,本发明提出了一种信号量死锁的检测方法,其目的在于用统一的判断条件检测系统中的信号量死锁。
根据上述目的,本发明提供了一种信号量死锁的检测方法,该方法预先设定用于保存进程与信号量之间关系的记录的格式,并且包括以下步骤:
A.在所述进程对所述信号量的获取操作成功之前,在所述记录中保存所述进程阻塞在所述信号量的信息;
在所述进程对所述信号量的获取操作成功之后,在所述记录中保存所述进程没有阻塞在任何信号量的信息和所述信号量的拥有者为所述进程的信息;
在所述进程对所述信号量进行释放操作之前,在所述记录中保存所述信号量没有被任何进程占用的信息;
B.遍历当前记录,根据所述进程阻塞所在所述信号量的信息和所述信号量的拥有者为所述进程的信息判断是否存在资源等待环路,如果是则检测到信号量死锁。
所述记录的格式为数组、链表或表格。
在步骤A之前进一步以下步骤:将所述记录初始化为各进程没有阻塞在任何信号量和各信号量没有被任何进程占用。
在步骤A之前进一步包括构造获取(P)操作函数和释放(V)操作函数的步骤;所述步骤A包括:所述进程通过P操作函数对所述信号量进行获取操作,在所述进程对所述信号量的获取操作成功之前,P操作函数在记录中保存所述进程阻塞在所述信号量的信息;在所述进程对所述信号量的获取操作成功之后,P操作函数在所述记录中保存所述进程没有阻塞在任何信号量的信息和所述信号量的拥有者为所述进程的信息;所述进程通过V操作函数对所述信号量进行释放操作,在所述进程对所述信号量进行释放操作之前,V操作函数在记录中保存所述信号量没有被任何进程占用的信息。
所述记录的格式包括进程数组和信号量数组,其中所述进程数组用于保存各进程和各进程阻塞所在的信号量的信息,所述信号量数组用于保存各信号量和各信号量的拥有者的信息;所述步骤A包括:在所述进程对所述信号量的获取操作成功之前,在所述进程数组中保存所述进程阻塞在所述信号量的信息;在所述进程对所述信号量的获取操作成功之后,在所述进程数组中保存所述进程没有阻塞在任何信号量的信息,在所述信号量数组中保存所述信号量的拥有者为所述进程的信息;在所述进程对所述信号量进行释放操作之前,在所述信号量数组中保存所述信号量没有被任何进程占用的信息;所述步骤B包括:遍历当前进程数组,当发现其中一个进程阻塞在信号量时,交替遍历进程数组和信号量数组;并在上述遍历过程中判断是否存在资源等待环路,如果是则检测到信号量死锁。
所述记录的格式包括进程数组和信号量数组,其中所述进程数组用于保存各进程和各进程阻塞所在的信号量的信息,所述信号量数组用于保存各信号量和各信号量的拥有者的信息;所述步骤A包括:在所述进程对所述信号量的获取操作成功之前,在所述进程数组中保存所述进程阻塞在所述信号量的信息;在所述进程对所述信号量的获取操作成功之后,在所述进程数组中保存所述进程没有阻塞在任何信号量的信息,在所述信号量数组中保存所述信号量的拥有者为所述进程的信息;在所述进程对所述信号量进行释放操作之前,在所述信号量数组中保存所述信号量没有被任何进程占用的信息;所述步骤B包括:遍历当前信号量数组,当发现其中一个信号量被进程占用时,交替遍历进程数组和信号量数组;并在上述遍历过程中判断是否存在资源等待环路,如果是则检测到信号量死锁。
在步骤C之后进一步包括保存资源等待环路或者将资源等待环路显示给用户的步骤。
从上述方案中可以看出,由于本发明在进程对信号量的操作过程中保存了进程和信号量之间关系的信息,在系统运行过程中遍历上述保存的信息,根据是否存在资源等待环路判断系统中是否存在信号量死锁。本发明以是否存在资源等待环路作为判断条件,适用于不同的进程,具有良好的移植性,并且本发明能够检测到系统中的信号量死锁,以及相关的进程和信号量,与现有技术相比本发明检测的结果更精确。
附图说明
图1为信号量死锁的示意图;
图2为根据本发明实施例的流程示意图;
图3为本发明实施例中信号量死锁的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下举实施例对本发明进一步详细说明。
分析产生信号量死锁的四个条件可以看出,条件1、2、3为进程和信号量已有的属性,那么只要形成条件4即资源等待环路,就可以判断得出发生了信号量死锁。本发明的核心思想就是将进程对信号量进行P、V操作产生的进程与信号量之间的关系记录下来,然后遍历所记录的信息,判断是否存在资源等待环路,如果存在资源等待环路则说明系统中存在信号量死锁。
本发明可以用数组、链表、表格等多种格式来记录进程和信号量之间的关系,在下面的实施例中仅以数组为例说明本发明的实施过程,但是本发明所保护的范围不限于此。
参照图2,本发明的实施过程包括以下步骤:
在步骤201,构造进程数组task[]和信号量数组sem[]两个数组,用以保存进程和信号量之间的关系。这两个数组的结构如下:
1、进程数组
typedef struct TASK_CB
{
UINT32 ulTaskID;
UINT32 ulBlockSemID;
……
}
当进程为T时,其中task[T].ulTaskID表示进程T的任务ID。操作系统中的ID一般来说是个句柄(handle),它可能是数组的索引或对象的地址。这里的UINT32表示32位无符号数,为了更加通用,也可以参照Windows程序风格,设置为无符号长整型(unsigned long)。task[T].ulBlockSemID记录进程T阻塞所在的信号量的ID,即进程T正在等待的信号量的ID。当task[T].ulBlockSemID的值为-1(即UINT32类型中的0xFFFFFFFF)时,表示该任务没有阻塞在任何信号量。这里使用-1是因为在目前绝大多数系统中,-1不可能是一个有效的ID,不会与正在使用的进程或信号量的ID相同,以免造成误解。
2、信号量数组
typedef struct SEM_CB
{
UINT32 ulSemID;
UINT32 ulOwnTaskID;
……
}
当信号量为s时,其中sem[s].ulSemID记录信号量s的ID,使用sem[s]ulOwnTaskID记录占有此信号量的进程,即信号量s的拥有者,当sem[s].ulownTaskID的值为0xFFFFFFFF时,表示该信号量没有被任何进程占用。
为了简化对上述数组的记录过程,本发明还进一步对操作系统进行包裹构造了对信号量操作的函数,包括创建信号量操作函数SmCreate、删除信号量操作函数SmDelete、P操作函数SmP、V操作函数SmV。进程通过这几个函数对信号量进行操作,并改变上述数组中变量的值。
例如调用函数SmCreate创建一个信号量,或者调用函数SmDelete删除某个信号量。如果进程T对信号量s调用P操作函数SmP,函数SmP中在P操作成功之前置task[T].ulBlockSemID=s,表示进程T阻塞在信号量s上,并且在P操作成功之后置task[T].ulBlockSemID=0xFFFFFFFF,同时置信号量数组中的sem[s].ulOwnTaskID=T,表示进程T没有阻塞在任何信号量并且信号量s的拥有者是进程T。如果进程T对信号量s调用V操作函数SmV,函数SmV中在V操作之前置sem[s].ulOwnTaskID=0xFFFFFFFF,表示信号量s没有被任何进程占用。
在步骤202,初始化上述两个数组,即给进程数组和信号量数组中变量赋予初始值。初始化过程通常如下:
task[].ulBlockSemID=0xFFFFFFFF,
sem[].ulOwnTaskID=0xFFFFFFFF。
在初始化之后,两个数组中记录的信息为:每一个进程都没有阻塞,并且每一个信号量都没有被占用。当然,也可以不进行初始化的步骤,而直接执行步骤203在数组中记录相关信息。
在步骤203,在进程对信号量进行操作的过程中,记录进程和信号量关系的信息。
以系统中的进程A、B、C和信号量a、b、c为例,如果依次发生了如下操作:
1、A对a调用函数SmP。根据步骤201中对P操作函数的定义,在P操作成功之前记录:
task[A].ulBlockSemID=a,
由于a没有被占用,因此该P操作成功,在P操作成功之后记录:
task[A].ulBlockSemID=0xFFFFFFFF和sem[a].ulOwnTaskID=A。
2、B对b调用函数SmP。同样,在P操作成功之后记录:
task[B].ulBlockSemID=0xFFFFFFFF和sem[b].ulOwnTaskID=B。
3、C对c调用函数SmP。同样,在P操作成功之后记录:
task[C].ulBlockSemID=0xFFFFFFFF和sem[c].ulOwnTaskID=C。
4、A对a调用函数SmV。在V操作之前,记录:
sem[c].ulOwnTaskID=0xFFFFFFFF。
5、B对a调用函数SmP。在P操作成功之前记录:
task[B].ulBlockSemID=a,
由于现在a没有被占用,因此该P操作成功,在P操作成功之后记录:
task[B].ulBlockSemID=0xFFFFFFFF和sem[a].ulOwnTaskID=B。
6、C对a调用函数SmP。在P操作成功之前记录:
task[C].ulBlockSemID=a,
由于现在a已经被B占用,因此该P操作没有成功。
7、B对c调用函数SmP。在P操作成功之前记录:
task[B].ulBlockSemID=c,
由于现在c已经被C占用,因此该P操作没有成功。
8、A对a调用函数SmP。在P操作成功之前记录:
task[A].ulBlockSemID=a,
由于现在a已经被B占用,因此该P操作没有成功。
经过上述过程之后,进程A、B、C和信号量a、b、c形成如图3所示的关系。并且进程数组中记录的信息有:
task[A].ulBlockSemID=a;
task[B].ulBlockSemID=c;
task[C].ulBlockSemID=a。
信号量数组中记录的信息有:
sem[a].ulOwnTaskID=B;
sem[b].ulOwnTaskID=B;
sem[c].ulOwnTaskID=C。
在步骤204至步骤207,监控进程首先遍历当前进程数组或信号量数组之中的一个,为了提高效率,通常选择遍历变量较少的数组。下面以遍历进程数组为例,当监控进程在遍历进程数组中发现某进程阻塞在某信号量时,交替遍历进程数组和信号量数组,直到发现资源等待环路或者完成对进程数组的遍历。例如监控进程发现进程A阻塞在信号量a上时,交替遍历进程数组和信号量数组,接着发现信号量a被进程B占有,进程B阻塞在信号量c上,信号量c被进程C占有,进程C阻塞在信号量a上,这时发现存在aBcCa这样一个资源等待环路,从而检测到系统中发生了信号量死锁,并且得到死锁的详细信息,即进程B、C和信号量a、c之间的关系。如果没有发现资源等待环路,监控进程将接着完成对进程数组的遍历。如果遍历完当前进程数组后没有发现资源等待环路,则说明当前系统中不存在信号量死锁,重新执行步骤203及后续步骤,简单的说就是进行下一次检测。
下面以遍历信号量数组为例,再一次说明判断过程。在遍历信号量数组的过程中,当监控进程发现某信号量被进程占用时,交替遍历进程数组和信号量数组,直到发现资源等待环路或者完成对信号量数组的遍历。例如发现信号量a被进程B占有时,交替遍历进程数组和信号量数组,接着发现进程B阻塞在信号量c上,信号量c被进程C占有,进程C阻塞在信号量a上,这时发现存在aBcCa这样一个资源等待环路,从而检测到系统中发生了信号量死锁,并且得到死锁的详细信息。如果没有发现资源等待环路,监控进程将接着完成对信号量数组的遍历。如果遍历完当前信号量数组后没有发现资源等待环路,则说明当前系统中不存在信号量死锁,重新执行步骤203及后续步骤,简单的说就是进行下一次检测。
在检测到信号量死锁后,监控进程可以将结果记录保存或者显示给用户查看。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1、一种信号量死锁的检测方法,其特征在于,预先设定用于保存进程与信号量之间关系的记录的格式,该方法包括以下步骤:
A.在所述进程对所述信号量的获取操作成功之前,在所述记录中保存所述进程阻塞在所述信号量的信息;
在所述进程对所述信号量的获取操作成功之后,在所述记录中保存所述进程没有阻塞在任何信号量的信息和所述信号量的拥有者为所述进程的信息;
在所述进程对所述信号量进行释放操作之前,在所述记录中保存所述信号量没有被任何进程占用的信息;
B.遍历当前记录,根据所述进程阻塞所在所述信号量的信息和所述信号量的拥有者为所述进程的信息判断是否存在资源等待环路,如果是则检测到信号量死锁。
2、根据权利要求1所述的方法,其特征在于,所述记录的格式为数组、链表或表格。
3、根据权利要求1所述的方法,其特征在于,在步骤A之前进一步以下步骤:
将所述记录初始化为各进程没有阻塞在任何信号量和各信号量没有被任何进程占用。
4、根据权利要求1所述的方法,其特征在于,在步骤A之前进一步包括构造获取(P)操作函数和释放(V)操作函数的步骤;
所述步骤A包括:所述进程通过P操作函数对所述信号量进行获取操作,在所述进程对所述信号量的获取操作成功之前,P操作函数在记录中保存所述进程阻塞在所述信号量的信息;在所述进程对所述信号量的获取操作成功之后,P操作函数在所述记录中保存所述进程没有阻塞在任何信号量的信息和所述信号量的拥有者为所述进程的信息;
所述进程通过V操作函数对所述信号量进行释放操作,在所述进程对所述信号量进行释放操作之前,V操作函数在记录中保存所述信号量没有被任何进程占用的信息。
5、根据权利要求1所述的方法,其特征在于,所述记录的格式包括进程数组和信号量数组,其中所述进程数组用于保存各进程和各进程阻塞所在的信号量的信息,所述信号量数组用于保存各信号量和各信号量的拥有者的信息;
所述步骤A包括:在所述进程对所述信号量的获取操作成功之前,在所述进程数组中保存所述进程阻塞在所述信号量的信息;
在所述进程对所述信号量的获取操作成功之后,在所述进程数组中保存所述进程没有阻塞在任何信号量的信息,在所述信号量数组中保存所述信号量的拥有者为所述进程的信息;
在所述进程对所述信号量进行释放操作之前,在所述信号量数组中保存所述信号量没有被任何进程占用的信息;
所述步骤B包括:遍历当前进程数组,当发现其中一个进程阻塞在信号量时,交替遍历进程数组和信号量数组;并在上述遍历过程中判断是否存在资源等待环路,如果是则检测到信号量死锁。
6、根据权利要求1所述的方法,其特征在于,所述记录的格式包括进程数组和信号量数组,其中所述进程数组用于保存各进程和各进程阻塞所在的信号量的信息,所述信号量数组用于保存各信号量和各信号量的拥有者的信息;
所述步骤A包括:在所述进程对所述信号量的获取操作成功之前,在所述进程数组中保存所述进程阻塞在所述信号量的信息;
在所述进程对所述信号量的获取操作成功之后,在所述进程数组中保存所述进程没有阻塞在任何信号量的信息,在所述信号量数组中保存所述信号量的拥有者为所述进程的信息;
在所述进程对所述信号量进行释放操作之前,在所述信号量数组中保存所述信号量没有被任何进程占用的信息;
所述步骤B包括:遍历当前信号量数组,当发现其中一个信号量被进程占用时,交替遍历进程数组和信号量数组;并在上述遍历过程中判断是否存在资源等待环路,如果是则检测到信号量死锁。
7、根据权利要求1所述的方法,其特征在于,在步骤C之后进一步包括保存资源等待环路或者将资源等待环路显示给用户的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100537811A CN100337207C (zh) | 2005-03-11 | 2005-03-11 | 一种信号量死锁的检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100537811A CN100337207C (zh) | 2005-03-11 | 2005-03-11 | 一种信号量死锁的检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1831779A true CN1831779A (zh) | 2006-09-13 |
CN100337207C CN100337207C (zh) | 2007-09-12 |
Family
ID=36994093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100537811A Active CN100337207C (zh) | 2005-03-11 | 2005-03-11 | 一种信号量死锁的检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100337207C (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299196B (zh) * | 2008-05-04 | 2011-09-21 | 中兴通讯股份有限公司 | 一种阻止进程继承关系产生环路的方法 |
CN102567096A (zh) * | 2011-12-30 | 2012-07-11 | 中国科学院软件研究所 | 一种在多任务环境下防止死锁的互斥信号量管理方法 |
CN102662632A (zh) * | 2012-03-14 | 2012-09-12 | 北京神州数码思特奇信息技术股份有限公司 | 一种利用信号量实现的序列号生成方法和生成器 |
CN103218291A (zh) * | 2013-03-29 | 2013-07-24 | 迈普通信技术股份有限公司 | 多任务操作系统中互斥信号量异常的检测方法及装置 |
CN103268256A (zh) * | 2013-05-31 | 2013-08-28 | 迈普通信技术股份有限公司 | 多任务操作系统中死锁检测方法及装置 |
CN103678364A (zh) * | 2012-09-13 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种动态检测url重定向死循环的方法及装置 |
CN103902356A (zh) * | 2012-12-26 | 2014-07-02 | 上海斐讯数据通信技术有限公司 | 一种信号量死锁的检测方法 |
CN104461729A (zh) * | 2013-09-22 | 2015-03-25 | 腾讯科技(北京)有限公司 | 一种资源共享保护方法及装置 |
US9009710B2 (en) | 2009-12-07 | 2015-04-14 | Zte Corporation | Detecting deadlocked file transfer protocol upload connections and performing session self-recovery using information stored in a FIFO resource array |
CN109189582A (zh) * | 2018-07-20 | 2019-01-11 | 新华三技术有限公司合肥分公司 | 一种检测信号量超时原因的方法及装置 |
CN110427272A (zh) * | 2019-07-26 | 2019-11-08 | 新华三技术有限公司成都分公司 | 接口函数定位方法、装置及网络设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1131080A (ja) * | 1997-07-11 | 1999-02-02 | Nec Corp | 動的ロックのデッドロック検出方法及び方式 |
SE521433C2 (sv) * | 1998-07-22 | 2003-11-04 | Ericsson Telefon Ab L M | En metod för hantering av risken för en total låsning mellan samtidiga transaktioner i en databas |
GB0118294D0 (en) * | 2001-07-27 | 2001-09-19 | Ibm | Method and system for deadlock detection and avoidance |
US7185339B2 (en) * | 2001-08-03 | 2007-02-27 | Oracle International Corporation | Victim selection for deadlock detection |
-
2005
- 2005-03-11 CN CNB2005100537811A patent/CN100337207C/zh active Active
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299196B (zh) * | 2008-05-04 | 2011-09-21 | 中兴通讯股份有限公司 | 一种阻止进程继承关系产生环路的方法 |
US9009710B2 (en) | 2009-12-07 | 2015-04-14 | Zte Corporation | Detecting deadlocked file transfer protocol upload connections and performing session self-recovery using information stored in a FIFO resource array |
CN102567096A (zh) * | 2011-12-30 | 2012-07-11 | 中国科学院软件研究所 | 一种在多任务环境下防止死锁的互斥信号量管理方法 |
CN102567096B (zh) * | 2011-12-30 | 2017-02-08 | 中国科学院软件研究所 | 一种在多任务环境下防止死锁的互斥信号量管理方法 |
CN102662632B (zh) * | 2012-03-14 | 2015-04-08 | 北京思特奇信息技术股份有限公司 | 一种利用信号量实现的序列号生成方法和生成器 |
CN102662632A (zh) * | 2012-03-14 | 2012-09-12 | 北京神州数码思特奇信息技术股份有限公司 | 一种利用信号量实现的序列号生成方法和生成器 |
CN103678364A (zh) * | 2012-09-13 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种动态检测url重定向死循环的方法及装置 |
CN103902356B (zh) * | 2012-12-26 | 2018-07-31 | 上海斐讯数据通信技术有限公司 | 一种信号量死锁的检测方法 |
CN103902356A (zh) * | 2012-12-26 | 2014-07-02 | 上海斐讯数据通信技术有限公司 | 一种信号量死锁的检测方法 |
CN103218291B (zh) * | 2013-03-29 | 2016-05-04 | 迈普通信技术股份有限公司 | 多任务操作系统中互斥信号量异常的检测方法及装置 |
CN103218291A (zh) * | 2013-03-29 | 2013-07-24 | 迈普通信技术股份有限公司 | 多任务操作系统中互斥信号量异常的检测方法及装置 |
CN103268256A (zh) * | 2013-05-31 | 2013-08-28 | 迈普通信技术股份有限公司 | 多任务操作系统中死锁检测方法及装置 |
CN104461729A (zh) * | 2013-09-22 | 2015-03-25 | 腾讯科技(北京)有限公司 | 一种资源共享保护方法及装置 |
CN104461729B (zh) * | 2013-09-22 | 2019-02-05 | 腾讯科技(北京)有限公司 | 一种资源共享保护方法及装置 |
CN109189582A (zh) * | 2018-07-20 | 2019-01-11 | 新华三技术有限公司合肥分公司 | 一种检测信号量超时原因的方法及装置 |
CN109189582B (zh) * | 2018-07-20 | 2020-09-15 | 新华三技术有限公司合肥分公司 | 一种检测信号量超时原因的方法及装置 |
CN110427272A (zh) * | 2019-07-26 | 2019-11-08 | 新华三技术有限公司成都分公司 | 接口函数定位方法、装置及网络设备 |
CN110427272B (zh) * | 2019-07-26 | 2022-07-01 | 新华三技术有限公司成都分公司 | 接口函数定位方法、装置及网络设备 |
Also Published As
Publication number | Publication date |
---|---|
CN100337207C (zh) | 2007-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100337207C (zh) | 一种信号量死锁的检测方法 | |
CN101055532A (zh) | 对并行计算机执行全局收集操作的方法及其并行计算机 | |
CN1308826C (zh) | 用于smt处理器上的cpi调度的系统和方法 | |
CN1920780A (zh) | 访问临界区的方法和系统 | |
CN1308825C (zh) | 用于在smt处理器中进行cpi负载平衡的系统和方法 | |
CN1614555A (zh) | 用于自主硬件辅助的线程栈跟踪的装置与方法 | |
CN1710535A (zh) | 一种gis应用系统及其开发方法 | |
US8516494B2 (en) | Executing an application on a parallel computer | |
CN1725187A (zh) | 在计算机上当软件崩溃时保存用户数据的方法及装置 | |
CN1801096A (zh) | 在计算机系统中用于对进程进行休眠的方法和系统 | |
CN1862512A (zh) | 单板信息的读写系统与方法 | |
JP2010211546A (ja) | 仮想マシン管理システム、仮想マシン管理方法、仮想マシン管理装置及び仮想マシン管理プログラム | |
CN100351793C (zh) | 支持osek标准的嵌入式实时操作系统的任务调度方法 | |
CN1539105A (zh) | 用于死锁检测的牺牲选择 | |
CN1885282A (zh) | 多处理器系统 | |
CN1400546A (zh) | 用于协议数据单元中协议模式识别的方法和设备 | |
CN1928832A (zh) | 多处理计算系统中的状态跟踪和恢复方法和系统 | |
CN1245685C (zh) | 基于构件的操作系统动态设备驱动的方法 | |
CN101075219A (zh) | 一种中断处理方法及系统 | |
CN1862502A (zh) | 实现主备节点间数据备份的方法和系统 | |
CN1851651A (zh) | 嵌入式sram操作系统进程优先权调度的实现方法 | |
CN1384431A (zh) | 上下文保存 | |
CN106844044B (zh) | 一种数据处理方法和装置 | |
CN111045799B (zh) | 基于回收再分配的低安全关键任务调度方法 | |
CN104657222B (zh) | 一种面向smp调度系统的优化方法 |
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 |