资源描述
题目:
1、某系统中有4个并发进程,都需要同类资源6个,试问该系统不会发生死锁的最少资源数是多少?为什么?
2、一台计算机有8台磁带机,它们由N个进程竞争使用,每个进程最多需要3台,请问N为多少时,系统没有死锁危险,并说明原因。
3、如何解决死锁问题。
4、饥饿、饿死、死锁的异同点是什么?
5、产生死锁的原因是什么?
6、死锁的预防与死锁的避免,其区别是什么?
答案:
1、记某类资源共有M个实例,使用这种资源的进程共有N个,则发生死锁的条件是 所有进程所需要的资源总量>=M+N。由题设知,N=4,所需要的资源总量是6*4=24,所以使上述不等式不成立的M的最小值为21,即该系统不会发生死锁的
最少资源数是21.
2、与上一题同理,其中M=8,N为使用这种资源的进程个数,要使系统没有死锁危险,则不等式3*N<8+N成立。解不等式得N<4,即N<4时系统没有死锁危险。
3、解决死锁的方法可以简述为三种:
(1)静态预防死锁,其中死锁预防有两种策略,分别为预先分配策略和有序分配策略
预先分配策略是进程在运行前一次性地向系统申请它所需要的全部资源,如果系统当前不能满足进程的全部资源请求,则不分配资源该进程暂时不投入运行;如果系统当前能够满足进程的全部请求资源,则一次性地将所所申请的全部资源分配给申请进程。
有序分配策略是事先将所有资源类完全排序,即对每一个资源类赋予唯一的整数,并且进程必须按照编号由小到大的次序
申请资源。
(2)动态避免死锁
死锁避免就是对进程发出的每一个系统能够满足的资源申请命令实施检查,根据检查结果决定是否实施资源分配。
(3)动态检测死锁及动态恢复死锁
动态检测死锁及动态恢复死锁就是按照一定的死所能检测策略对系统进行死锁检测,当检测到发生死锁时,按照一定的策略将其消除以使系统从死锁状态中恢复过来。其中死锁检测策略有进程等待时检测、定时检测、资源利用率低时检测;死锁恢复策略有系统重启、终止进程、剥夺资源、进程回退。
4、异同点:
(1)相同点:二者都是由于竞争资源而引起的。
(2)不同点:
1、饥饿的进程可以正常完成,虽然其推进和相应速度很慢,当完成时仍然有效,而饿死进程完成时已经没有实际意义,而死锁的进程是无法完成的;
2、从进程状态考虑,死锁进程都处于等待状态,忙等待(处于运行或就绪状态)的进程并非处于等待状态,但却可能饥饿或饿死;
3、死锁进程等待永远不会被释放的资源,饿死进程等待会被释放但却不会分配给自己的资源,表现为等待时限没有上界(排队等待或忙式等待);
4、死锁一定发生了循环等待,而饿死则不然。这也表明通过资源分配图可以检测死锁存在与否,但却不能检测是否有进程饿死;
5、死锁一定涉及多个进程,而饥饿或被饿死的进程可能只有一个。
6、在饥饿或饿死的情形下,系统中有至少一个进程能正常运行,只是饥饿进程得不到执行机会。而死锁则可能会最终使整个系统陷入死锁并崩溃。
5、产生死锁的原因主要是:
(1) 因为系统资源不足;
(2) 进程运行推进的顺序不合适;
(3) 资源分配不当等。
6、死锁预防主要是对进程申请资源的命令加以限制,比如一次性申请所需全部资源、按序号从大到小申请,从而破坏进程死锁的四个必要条件的
中的若干个条件。而死锁避免不对申请进程有关资源的命令加以任何限制,而是对进程发出的每一个系统能够满足的资源申请命令实施检查,
根据检查结果决定是否实施资源分配。
展开阅读全文