死锁的预防

防止死锁的发生

防止死锁的发生,根本办法是使必要条件之一(或多个条件)永不存在,即破坏其必要条件使之永不成立,如果有一条或若干条不具备,那么死锁就不会产生;
 破坏互斥条件,允许多个进程同时访问资源;(但不太实际)
 破坏不可抢占条件,强迫进程暂时把资源释放出来给其他进程;(考虑到资源在进程间转移的开销和对资源的有效利用,必须小心地控制破坏该条件)
 破坏部分分配条件;
 破坏循环等待条件。

预先静态分配法

是针对部分分配条件的策略;
在进程开始运行前,一次分配给其所需的全部资源,若系统不能满足,则进程阻塞,直到系统满足其要求;
将导致严重的资源浪费;
改进策略:把程序分成几个相对独立的“程序步”来运行,并且资源分配以程序步为单位来进行,而不以整个进程为单位来静态地分配资源;
可以得到较好的资源利用率,减少资源浪费,但增加了应用系统的设计和执行的开销;
而且,为满足一个进程所需的全部资源,要逐渐积累,造成资源的浪费。

有序资源使用法

针对循环等待条件的;
系统设计者把系统中所有资源类都分给一个唯一的序号,并且要求每个进程均应严格按照递增的次序请求资源;
这样,系统中不可能形成几个进程对资源的环行请求链,破坏了循环等待条件;
把各进程经常用到的、比较普通的资源安排成低序号,而把比较贵重或稀少的资源安排成高序号,可能使最有价值的资源的利用率大为提高,但也有可能造成低序号资源的空闲等待浪费现象;
存在的问题:
 各类设备的资源序号一经安排,不宜经常地随意加以改动,至少应该维持一个较长的时期,在此期间,若要添置一些新设备,就必须重新改写已经存在的程序和系统;
 资源序号的安排要反映大多数进程实际使用资源的正常顺序,对于与此序号相匹配的进程,资源能得到有效利用,否则,资源浪费现象虽然有所改善,但仍然存在。