
设某系统中有3个并发进程都需要4个同类资源,该系统不会发生死锁的最少资源数量?
两种死锁的解除方法其实类似与,算法思想中的广度优先搜索,和深度优先搜索。
第一种死锁的解除方法,是广度优先,它要依次从p1,p2,...,pk中撤除一个进程。
这从根节点(为第0层)到第一层各个节点的代价的路径是k;然后在针对第一层的各个节点例如第1个节点p2,p3,...,pk依次撤除一个进程,有k-1个进程,得到第2层节点下中的k-1个节点,同理对第一层中的其他各个节点,作类似处理,每个节点得到下一层的k-1个节点,所以总共可以得到第2层节点的k(k-1)节点,因为书中写的的最大可能代价,也就是说最坏情况是从p1,p2,...,pk撤除了k-1个进程,也就是说广度优先搜索到第k-1层,第k-1层中每个节点只有1个进程,肯定可以解除死锁了,第k-1层的节点总共有k(k-1)(k-2)...*2.假设到达没个节点的代价是c,所以最大的可能代价就是k(k-1)(k-2)...*2c;第2种就是深度优先搜索,因为进程的死锁解除最坏的可能是撤除了k-1个进程,所以它只是搜索到一种可能的解除方式,就不搜索了,所以代价就很少,它每次搜索的时候,都是从p1,p2,...,pk中选取一个最小代价撤除的进程撤除,假设为p1,然后从p2,...,pk,选取一个最小代价撤除的进程撤除,就这样依次撤除,最坏的是撤除了k-1个进程,因为1个进程肯定不会死锁。
所以就有了下面的每次从Cui中取最小的,然后再相加的公式,显然第2种解除死锁的方式更可取,因为它保证你深度优先搜索可能可以找到一个解,而不像第一种是把所有可能的解都找到。
有问题可以hi我。
何谓死锁 产生死锁的原因和必要条件是什么 为什么说死锁
死锁的原因主要是:(1) 因为系统资源不足。
(2) 进程运行推进的顺序不合适。
(3) 资配不当等。
如果系统资源充足,进程的资源请求都得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。
其次,进程运行推进顺序与速度不同,也可能产生死锁。
产生死锁的四个必要条件:(1) 互件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁些条件必然成立
当进程m为多少时,不会发生死锁
进操作系统一个核心.其概念至今未有严格的公认的定义.一般的讲,进程是一个具有一定独能的程序关于某个数据集合的一次运行活动.其基本状态有3种,即ready(就绪),running(运行),wait(等待).死锁是指,在两个或多个并发进程中,如果每个进程持有某种资源而又都等待别的进程释放它们现在保持着的资源,否则就不能向前推进.此时,每个进程都占用了一定的资源但是又不能向前推进,称这一组进程产生了死锁.通俗的讲,就是两个或多个进程无止境的等候着永远不会成立的条件的一种系统状态.产生死锁的根本原因是系统能够提供的资源个数比要求该资源的进程数少.其具体原因是1系统资源不足2进程推进顺序非法.
一般什么原因会造成死锁,怎么解决
死锁是不能只涉及一个进程。
因为:1.先明确一个进程内的线程是共享数据段,代码段以及其他一些操作系统资源,所以一个进程的各个线程之间不会产生死锁。
2.若仅有一个进程,那么它不会满足死锁产生的四个必要条件之一的circular wait(环路等待)条件综上死锁是不能只涉及一个进程。
可参考《Operating System Concepts》(《操作系统概念》)



