【问题标题】:graph mapping resources semaphores图映射资源信号量
【发布时间】:2012-04-04 08:00:30
【问题描述】:

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

是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)

就像我有这个: 我认为这是不正确的!

【问题讨论】:

    标签: c linux pthreads mutex semaphore


    【解决方案1】:

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

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

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

    我认为图表不能证明给定的代码有死锁;但是如果我们已经知道死锁是如何发生的,我们可以为那个死锁画上图资源分配图,然后证明有一个循环。如果资源没有多次实例化,则循环表示死锁,它们不是:S1、S2 和 S3 是单实例资源。)证明可能不是您要寻找的词:也许 说明 em>。

    我相信您的资源分配图正确地显示了 P1 拥有资源 R3(即 S3)和 P2 拥有资源 R1(即 S1),它还表明 P1 想要获得 R1 而 P2 想要获得 R3 从而说明了循环这对应于死锁。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2015-02-26
        • 2014-04-13
        • 2014-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-28
        • 2012-07-16
        • 2016-03-08
        相关资源
        最近更新 更多