首页 > 试题广场 >

回答下面问题

[问答题]

假设系统有五类独占资源:r1,r2,r3,r4,r5,各类资源分别有;2,2,2,1,1个单位的资源,有五个进程:P1,P2,P3,P4,P5,其中P1已占有2个单位的r1,且申请一个单位的r2和一个单位的r4;P2已占有一个单文的r2,且申请一个单位的r1;P3已占有一个单位的r2且申请一个单位的r2和一个单位的r3;P4已占有一个单位的r4和一个单位的r5,且申请一个单位的r3;P5已占有一个单位的r3且申请一个单位的r5。

(1) 试画出该时刻的资源分配图。

(2) 什么是死锁定理,如何判断(1)给出的资源分配图中有无死锁。给出判断过程和结果。

死锁总概

在两个或多个任务中,如果每个任务锁定了其他任务试图锁定的资源,此时会造成这些任务永久阻塞,从而出现死锁。若无外力作用,它们都将无法推进下去.这些永远在互相等待的进程称为死锁进程.
死锁的四个必要条件:互斥,占有且等待,循环等待。
进程的死锁问题可以用有向图进行准备而形象的描述,这种有向图称为系统资源分配图.一个系统资源分配图SRAG可定义为一个二元组,即SRAG=(V,E),其中V是顶点的集合,而E是有向边的集合.顶点集合可分为两种部分:P=(P1,P2,…Pn),是由系统内的所有进程组成的集合,每一个Pi代表一个进程;R=(r1,r2,…rm),是系统内所有资源组成的集合,每一个ri代表一类资源.
基于上述资源分配图的定义,可给出判定死锁的法则,又称为死锁定理. (1) 如果资源分配图中没有环路,则系统没有死锁
(2) 如果资源分配图中出现了环路,则系统中可能存在死锁. 预防死锁的方法:
资源一次性分配:(破坏请求和保持条件)
可剥夺资源:即当某进程新的资源未满足时,释放已占有的资源(破坏不可剥夺条件)
资源有序分配法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反(破坏环路等待条件)
所以,在系统设计、进程调度等 方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源,在系 统运行过程中,对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,若分配后系统可能发生死锁,则不予分配,否则予 以分配 。因此,对资源的分配要给予合理的规划。
其中一个比较好的死锁避免算法是,银行家算法:
当第i个进程需要请求系统资源时,我们就将其对各个资源的需求量送入Re数组中,然后系统依次执行。

Copy from:

发表于 2019-06-03 18:32:11 回复(0)