一.死锁定义
1 .在多程序系统中,虽然可以通过同时执行多个进程来提高资源利用率和系统吞吐量,但是在进程执行中会出现由于争夺资源而出现的僵局――死锁――deadlock――
进程处于这种僵持状态时,如果没有外力的作用,它们就无法进一步前进。
2 .死锁发生原理:如果某个进程组的每个进程都在等待某个事件的发生,且只有该进程组的其他进程可以触发该事件,则该进程组发生死锁。
3、对死锁的几点思考:
多个环境进程可能同时运行、竞争资源、进程无法前进、或相互等待,从而导致进程被阻止。 (发生进程阻塞的原因:只是资源分配不足) )死锁没有现实意义)即使再次执行同一进程组,如果组内的进程执行顺序不同,也不一定会发生死锁
4、死锁原因:
竞争资源引起进程死锁
可剥夺和非剥夺性资源
1 )可剥夺资源
意味着进程获得这样的资源后,该资源将被处理器和内存等其他进程和系统夺走
不可剥夺的资源
2 )意味着系统将此类资源分配给某个进程后,不能强制回收,只能在进程使用后自行释放。 例如,磁带机、打印机等
竞争非剥夺性资源
1 )系统的非剥夺性资源由于数量有限不能满足进程运行的需要,进程在运行中会争夺这些资源,导致临时资源陷入僵局
2 ) 3358www.Sina.com/指与永久资源相区别的、由一个进程生成并在由另一个进程使用后不再浪费的资源,临时性资源
消耗性资源
如果并发进程P1和P2按曲线所示顺序进行,则进入不稳定全区d内。 此时,P1保存资源R1,P2保存资源R2,系统处于不安全的状态。 因为此时,如果两个进程进一步前进,就有可能发生死锁。
例如,如果P1运行到P1request(r2 ),则R2将被阻止,因为它已经被P1占用。 当p2执行到P2request(r1 )时,由于R1被P1占用而阻塞,导致进程死锁。
5、死锁发生的根本原因:
流程所需资源量系统资源量
进程的推进顺序不合理(不正确) ) ) )。
6、发生死锁的4个必要条件
必要的意义都必须满足,缺一不可
第一、互斥条件:某个资源一次只能访问一个进程,如果该资源被分配给某个进程,则其他进程在该进程结束之前不能访问。
也就是说,该进程正在访问临界资源。
第二,要求和维持条件:进程至少维持一个资源,但提出新的资源要求,该资源已被其他进程占用。 (占有并等待,占有自己拥有的资源,等待其他进程释放自己所需的资源) )。
第三、不能抢占的条件:其他进程已经占用了某个资源,不能因为这个进程也需要这个资源就抢占其他进程已经有的资源。
第四、环路等待条件:出现死锁时,必然存在一个进程- -资源循环等待的环状链。 (每个进程至少占用以下进程所需的一个资源。)
如果所有这四个条件都满足,就会发生死锁。 发生死锁的进程无法进行,他们拥有的资源也无法释放,会发生cpu吞吐量降低、浪费系统资源、影响计算机性能等不利事件。