并发:死锁和饥饿
死锁可以定义为永久阻塞一组进程,这些进程要么竞争系统资源,要么相互通信。当集合中的每个进程被阻塞等待一个事件(通常是释放一些请求的资源)时,一组进程就会陷入死锁,该事件只能由集合中的另一个被阻塞的进程触发。死锁是永久性的,因为没有一个事件被触发过。与并发进程管理中的其他问题不同,一般情况下没有有效的解决方案。
所有死锁都涉及两个或多个进程对资源的相互冲突需求。一个常见的例子是交通堵塞。图6.1a显示了四辆汽车大约在同一时间到达一个四向交叉路口的情况。十字路口的四个象限是需要控制的资源。特别是,如果所有四辆车都希望直接穿过十字路口,资源要求如下:
-1号车,向北行驶,需要象限a和b。
-2号车,向西行驶,需要象限b和c。
-3号车,向南行驶,需要象限c和d。
-4号车,向东行驶,需要象限d和a。
美国的道路规则是,四路停车的汽车应立即向右行驶。如果十字路口只有两三辆车,这条规则就有效。例如,如果只有北行和西行汽车到达十字路口,北行汽车将等待,西行汽车继续前进。然而,如果所有四辆车都大约在同一时间到达,并且所有四辆车都遵守规则,那么每辆车都将避免进入十字路口。这导致了潜在的死锁。这只是潜在的死锁,因为任何汽车都可以获得必要的资源。如果一辆车最终选择继续,它就可以这样做。
然而,如果所有四辆车都无视规则,同时(小心翼翼地)进入十字路口,那么每辆车都会夺取一个资源(一个象限),但无法继续,因为所需的第二种资源已经被另一辆车夺取。这是一个实际的死锁。
现在让我们看看涉及进程和计算机资源的死锁的描述。图6.2,我们称之为联合进度图,说明了两个争夺两种资源的进程的进度。每个进程都需要在一段时间内独家使用这两种资源。P和Q这两个进程具有表6.2的一般形式。
在图6.2中,x轴表示执行P的进度,y轴表示执行Q的进度。因此,这两个进程的联合进度由从原点向东北方向前进的路径表示。对于单处理器系统,一次只能执行一个进程,路径由交替的水平和垂直段组成,水平段代表P执行的周期,Q等待,垂直段代表Q执行和P等待的周期。该图显示了P和Q都需要资源A(向上倾斜线)的区域;P和Q都需要资源B(向下倾斜线);P和Q都需要两种资源。因为我们假设每个进程都需要对任何资源进行独家控制,所以这些都是被禁止的区域;也就是说,任何代表P和Q联合执行进度的路径都不可能进入这些区域。
图6.2显示了六种不同的执行路径。这些可以总结如下:
1.Q获得B,然后A,然后释放B和A。当P恢复执行时,它将能够获得这两种资源。
2.Q获得B,然后获得A。P执行并在请求A资源上阻塞。Q释放B和A。当P恢复执行时,它将能够获得这两种资源。
3.Q获得B,然后P获得A。死锁是不可避免的,因为随着执行的进行,Q将在A上阻塞,P将在B上阻塞。
4.P获得A,然后Q获得B。死锁是不可避免的,因为随着执行的进行,Q将在A上阻塞,P将在B上阻塞。
5.P获得A,然后B。Q执行并在请求B上阻塞。P释放A和B。当Q恢复执行时,它将能够获得这两种资源。
6.P获得A,然后B,然后释放A和B。当Q恢复执行时,它将能够获得这两种资源。
图6.2的灰度区域可以被称为致命区域,适用于路径3和4的注释。如果执行路径进入这个致命区域,那么死锁是不可避免的。请注意,致命区域的存在取决于这两个进程的逻辑。然而,只有当这两个进程的联合进度创造了一条进入致命区域的道路时,死锁是不可避免的。
是否发生死锁取决于执行的动态和应用程序的细节。例如,假设P不同时需要这两种资源,因此这两个进程具有表6.3形式。这种情况反映在图6.3中。有些想法应该让你相信,无论这两个进程的相对时间如何,都不可能发生死锁。
如图所示,联合进度图可用于记录共享资源的两个进程的执行历史记录。如果两个以上的进程可能争夺相同的资源,则需要一个更高维度的图表。有关致命区域和死锁的原则将保持不变。
死锁可以定义为永久阻塞一组进程,这些进程要么竞争系统资源,要么相互通信。当集合中的每个进程被阻塞等待一个事件(通常是释放一些请求的资源)时,一组进程就会陷入死锁,该事件只能由集合中的另一个被阻塞的进程触发。死锁是永久性的,因为没有一个事件被触发过。与并发进程管理中的其他问题不同,一般情况下没有有效的解决方案。
所有死锁都涉及两个或多个进程对资源的相互冲突需求。一个常见的例子是交通堵塞。图6.1a显示了四辆汽车大约在同一时间到达一个四向交叉路口的情况。十字路口的四个象限是需要控制的资源。特别是,如果所有四辆车都希望直接穿过十字路口,资源要求如下:
-1号车,向北行驶,需要象限a和b。
-2号车,向西行驶,需要象限b和c。
-3号车,向南行驶,需要象限c和d。
-4号车,向东行驶,需要象限d和a。
美国的道路规则是,四路停车的汽车应立即向右行驶。如果十字路口只有两三辆车,这条规则就有效。例如,如果只有北行和西行汽车到达十字路口,北行汽车将等待,西行汽车继续前进。然而,如果所有四辆车都大约在同一时间到达,并且所有四辆车都遵守规则,那么每辆车都将避免进入十字路口。这导致了潜在的死锁。这只是潜在的死锁,因为任何汽车都可以获得必要的资源。如果一辆车最终选择继续,它就可以这样做。
然而,如果所有四辆车都无视规则,同时(小心翼翼地)进入十字路口,那么每辆车都会夺取一个资源(一个象限),但无法继续,因为所需的第二种资源已经被另一辆车夺取。这是一个实际的死锁。
现在让我们看看涉及进程和计算机资源的死锁的描述。图6.2,我们称之为联合进度图,说明了两个争夺两种资源的进程的进度。每个进程都需要在一段时间内独家使用这两种资源。P和Q这两个进程具有表6.2的一般形式。
在图6.2中,x轴表示执行P的进度,y轴表示执行Q的进度。因此,这两个进程的联合进度由从原点向东北方向前进的路径表示。对于单处理器系统,一次只能执行一个进程,路径由交替的水平和垂直段组成,水平段代表P执行的周期,Q等待,垂直段代表Q执行和P等待的周期。该图显示了P和Q都需要资源A(向上倾斜线)的区域;P和Q都需要资源B(向下倾斜线);P和Q都需要两种资源。因为我们假设每个进程都需要对任何资源进行独家控制,所以这些都是被禁止的区域;也就是说,任何代表P和Q联合执行进度的路径都不可能进入这些区域。
图6.2显示了六种不同的执行路径。这些可以总结如下:
1.Q获得B,然后A,然后释放B和A。当P恢复执行时,它将能够获得这两种资源。
2.Q获得B,然后获得A。P执行并在请求A资源上阻塞。Q释放B和A。当P恢复执行时,它将能够获得这两种资源。
3.Q获得B,然后P获得A。死锁是不可避免的,因为随着执行的进行,Q将在A上阻塞,P将在B上阻塞。
4.P获得A,然后Q获得B。死锁是不可避免的,因为随着执行的进行,Q将在A上阻塞,P将在B上阻塞。
5.P获得A,然后B。Q执行并在请求B上阻塞。P释放A和B。当Q恢复执行时,它将能够获得这两种资源。
6.P获得A,然后B,然后释放A和B。当Q恢复执行时,它将能够获得这两种资源。
图6.2的灰度区域可以被称为致命区域,适用于路径3和4的注释。如果执行路径进入这个致命区域,那么死锁是不可避免的。请注意,致命区域的存在取决于这两个进程的逻辑。然而,只有当这两个进程的联合进度创造了一条进入致命区域的道路时,死锁是不可避免的。
是否发生死锁取决于执行的动态和应用程序的细节。例如,假设P不同时需要这两种资源,因此这两个进程具有表6.3形式。这种情况反映在图6.3中。有些想法应该让你相信,无论这两个进程的相对时间如何,都不可能发生死锁。
如图所示,联合进度图可用于记录共享资源的两个进程的执行历史记录。如果两个以上的进程可能争夺相同的资源,则需要一个更高维度的图表。有关致命区域和死锁的原则将保持不变。
我真惊了 半夜两点了快我妈还在外边打麻将......
这个成绩从我13号下午出场就已经知道了,可能是第一次考吧,那天晚上难受了大半夜。所以今天没什么感觉其实,技不如人我认了[二哈][二哈]可能是因为我心里有一个最准确的目标和最想干的事,让我觉得这些都还在可弥补的范围内[加油][加油]还有我真的好爱我妈妈[心],听完她的话我甚至对明天双倍期待,乖乖入睡,晚安各位
(我一直以来心态好应该跟我妈关系挺大的)#初级会计#
这个成绩从我13号下午出场就已经知道了,可能是第一次考吧,那天晚上难受了大半夜。所以今天没什么感觉其实,技不如人我认了[二哈][二哈]可能是因为我心里有一个最准确的目标和最想干的事,让我觉得这些都还在可弥补的范围内[加油][加油]还有我真的好爱我妈妈[心],听完她的话我甚至对明天双倍期待,乖乖入睡,晚安各位
(我一直以来心态好应该跟我妈关系挺大的)#初级会计#
在2014-2015左右,唱了这首歌。
我每年都会听。
因为里面歌词有这么一句
「生平所历之人,非身死太难忘啊」
每年的7月3号是
一个朋友的祭日
初中同学
每年的5月1号是她的生日
柿子当年的心情,我觉得跟我类似,根本不能用语言表达。
明明前几天就见过,还欢声笑语的朋友。往常都是她安慰别人。这次大家都没有机会跟她认错了。
纵身从长江大桥跳下去的瞬间,不知道她有没有害怕。
我在2013年曾经受过这个朋友的帮助。
当时状态太差无论是心态还是别的,都没有道一句谢谢。
遗书只有我们几个同学好朋友看到了。
省*中把消息压下来了。
那个暑假开始之前,最后一次大考试结束之前发生的事情。
暑假里,本来以为可以参加她的葬礼。
可是没有,取消了。
我不知道为什么取消,我认为父母亲所谓的为大家安全考虑是一种托辞。
她永远活在大家心里。
永远。
我每年都会听。
因为里面歌词有这么一句
「生平所历之人,非身死太难忘啊」
每年的7月3号是
一个朋友的祭日
初中同学
每年的5月1号是她的生日
柿子当年的心情,我觉得跟我类似,根本不能用语言表达。
明明前几天就见过,还欢声笑语的朋友。往常都是她安慰别人。这次大家都没有机会跟她认错了。
纵身从长江大桥跳下去的瞬间,不知道她有没有害怕。
我在2013年曾经受过这个朋友的帮助。
当时状态太差无论是心态还是别的,都没有道一句谢谢。
遗书只有我们几个同学好朋友看到了。
省*中把消息压下来了。
那个暑假开始之前,最后一次大考试结束之前发生的事情。
暑假里,本来以为可以参加她的葬礼。
可是没有,取消了。
我不知道为什么取消,我认为父母亲所谓的为大家安全考虑是一种托辞。
她永远活在大家心里。
永远。
✋热门推荐