首页 > 编程知识 正文

关于死锁的问题,什么是死锁?产生死锁的原因是什么?

时间:2023-05-06 08:20:22 阅读:177809 作者:1854

一、资源分类系统中有许多不同类型的资源,需要采用互斥的访问方法,并采用不可切割的资源,即临界资源。

1 .按使用次数(1)可复用资源每个可复用资源中的设备只能分配给一个进程,不能由多个进程共享。 进程按资源顺序: 1请求资源。 如果请求失败,进程将在块或循环中等待。 2使用资源。 3释放资源。 运行相对固定的程序时,系统中的可回收资源数量无法增加或删除。 )2)消耗资源他是一种临时资源,通过进程的执行动态创建和消耗。 各类消耗资源单元的数量不断变化,通常由生产者流程编制,由消费者流程消耗。

2 .按能否抢占资源分类(1)可以抢占资源CPU、主存储器等可共享资源。 )不得抢占资源打印机、光驱等不可共享的资源。

二、死锁(Deadlock )的形成例如假设有P1和P2这2个过程,所以都需要a和b这2个资源。 现在,P1持有a等待b的资源,P2等待b的资源,双方都拒绝等待另一方的资源释放资源,就这样无限等待中。 这也是死锁的一种。 按如下方式定义死锁: 如果组中的每个进程都在等待只有该组中的其他进程触发的事件,则该组中的进程处于死锁状态。

1 .竞争无法切断资源会导致死锁,这是我们说的第一种情况,这是对方在等待占有的无法切断的资源。 2 .可消耗资源竞争导致的死锁有p1、p2、p3三个进程。 p1向p2发送信息,接收来自p3的信息,p2向p3发送信息,p3向p1发送信息,接收来自p2的信息。 如果设置为在收到消息后发送消息,则无法发送所有消息,从而导致死锁。

3 .由于进程的推进顺序不完备导致的死锁,有进程p1、p2,都需要资源a、b。 当p1执行A -- p1以执行B -- p2以执行A -- p2以执行b时,如果p2在p1执行a的同时执行b,则容易发生第一类型的死锁。 互相抢占资源。

三、发生死锁的必要条件1 .有排他条件的资源只能在一个进程中使用,其他进程请求该资源时,只能等待,在知道资源使用完毕的情况下释放资源。 2 .请求和保留条件程序已至少保留一项资源,但提出了新的请求,该资源被其他进程占用,自己占用资源,但保留不变。 3 .通过不可抢占条件进程获得的资源未使用,无法抢占。 4 .循环等待条件中必然存在循环链。

四.处理死锁的思路1 .预防死锁破坏死锁4个必要条件中的一个或多个预防死锁。 2 .避免死锁和预防死锁的区别在于,在动态分配资源的过程中,以某种方式防止系统进入不安全状态。 3 .运行死锁时检测到发生死锁,及时发现死锁,释放程序4 .解除死锁发生死锁后,释放流程,通常取消流程,回收资源,阻塞

五.死锁预防方法1 .破坏要求和保持条件共识1

在开始所有流程之前,必须一次性申请所有必需的资源。 这样,在执行过程中就不会发出资源请求,即使请求条件被破坏,一个资源无法满足请求,也无法分配空闲资源。 这样会耗尽资源,破坏保留条件,并防止死锁的发生。 协议2允许一个进程只获得初始资源并开始执行,释放已执行的资源。 然后要求新的资源。 2 .已保留不可抢占条件破坏不可抢占资源的流程,如果提出新的资源要求仍不能满足,它必须释放所有已保留的资源,以后根据需要重新申请。 3 .打破循环等待条件,对系统中所有资源类型进行线性排序,规定每个进程必须按序列号递增顺序请求资源。 如果流程请求序列号较高的资源,然后请求序列号较低的资源,则在请求序列号较低的资源之前,流程必须释放序列号或更高的资源。 必须一并请求多个资源。

本文根据原文作了一些调整,转载于https://blog.csdn.net/dt _ Zhang Shuo/article/details/5334030

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。