操作系统之死锁

来源:互联网 发布:au for mac中文破解版 编辑:程序博客网 时间:2024/05/22 22:00

死锁定义:
是指多个程序在运行过程中因争夺资源而造成的一种僵局。当进程处于这种僵持状态是,若没有外力作用,他们将无法向前推进。
产生死锁的原因:
1、竞争资源。当系统中供多个进程共享资源如打印机、公用队列等,其数目不足以满足进程需要,会引起进程对资源的竞争而产生死锁。这种资源也包括进程临时产生的资源。
2、进程间的推进顺序非法。请求和释放顺序不当
竞争资源产生死锁:
(1)可剥夺资源。
进程占用的资源可以被更高优先级进程剥夺。
(2)不可剥夺资源。
资源分配给资源之后不能强行收回,只能在进程用完后自行释放,如磁带机、打印机。
例如:系统只有一台打印机R1和一台磁带机R2,两个进程P1和P2,假定P1占用了R1然后请求R2,P2占用了P2然后请求R1,这时候P1由于请求不到R2不能释放R1,P2由于请不到R1不能释放R2,这就行程一种死锁了。

P1:  Release(R1) : Request(R2)P2:  Release(R2) : Request(R1)

产生死锁的必要条件
1、互斥条件。
就是说一段时间内某种资源只可以由一个进程占用,如果有其他程序请求只能等待。
2、请求与保持条件
进程保持了至少一个资源,但有提出新的资源请求,该资源又被其他进程占有,此时请求进程阻塞。
3、不可剥夺条件
进程已获得资源,未使用完毕之前不能被剥夺,只能在使用完由自己释放。
4、环路等待条件
只在发生死锁时,必然存在一个进程—资源的环形链。

处理死锁的基本方法
(1)预防死锁
破坏死锁四个必要条件的一个或几个。施加的限制条件比较严格,这往往会影响进程的并发执行。(破坏2-4个条件)
(2)避免死锁
资源动态分配过程中,用某种方法去防止系统进入不安全状态。所加的限制条件比较宽松,有利于进程的并发执行。(银行家算法)
(3)检测死锁
允许死锁发生。检测死锁发生,交由解除死锁处理(保存有关资源的请求和分配信息,提供一种算法,以利用这些信息检测系统是否已进入死锁状态)
(4)解除死锁
与检测死锁配套。(剥夺资源、撤销进程)

原创粉丝点击