图谱映射资源信号量

时间:2012-03-19 19:50:01

标签: c linux pthreads mutex semaphore

你好我的朋友我有这个例子我不明白解决方案: 这就是问题:

3个进程P1,P2,P3,它们对信号量,S1,S2,S3执行三个操作,初始值为:S1 = 1, S2 = 1,S3 = 1.知道每个进程在循环内执行以下序列,以指示是否有任何可能保持状态interbloqueig。如果是这样,除了指示执行指令的顺序之外,还要通过图形映射资源来证明它。

        **P1**                 **P2**                   **P3**
        P(s1)                   P(s3)                     P(2)
        P(s3)                   P(s2)                 the critical section
   the critical section         P(s1)                     V(s2)
        V(s3)               the critical section
        V(s1)                   V(s1)
                                V(2)
                                V(3)
像我一样,我有这个: 我认为这不正确!

enter image description here

2 个答案:

答案 0 :(得分:0)

假设您在P3的开头意味着P(s2)而不是P(2),并且图中的R指的是具有相同数字的信号量,您的图表描述了当所有3个进程都在在其关键部分之前的指示;并且由于存在循环(P2-> R1-> P1-> R2-> P2),因此存在死锁。所以我想完成这项功课所需要的只是列出为达到这一点而执行的指令序列。

答案 1 :(得分:0)

乍一看,我猜测留在状态interbloqueig 指死锁;致命的拥抱。谷歌似乎证实了这一点。但请下次使用英语。 :)

基本上P3是红鲱鱼,因为它只对S2感兴趣。死锁涉及S1和S3,因为它们是由P1和P2以相反的顺序获取的。当然P3涉及死锁,但即使P3不存在,P1和P2之间的死锁仍然是一个麻烦的情况。

我认为您被要求使用资源分配图表显示死锁情景(这就是图表的样子)。

我认为图表不能证明给定代码有死锁;但是如果我们已经知道死锁是如何发生的,我们可以为该死锁绘制上面的图形资源分配图,然后显示存在一个周期。如果资源没有经过多次实例化,则循环表示死锁:它们不是:S1,S2和S3是单个,单实例资源。)证明可能不是您要查找的单词:也许说明

我相信你的资源分配图正确地显示P1保持资源R3(即S3)并且P2保持资源R1(即S1)并且它还显示P1想要获取R1而P2想要获取R3从而说明循环这与僵局相对应。