浅谈死锁

来源:互联网 发布:日程软件 知乎 电脑 编辑:程序博客网 时间:2024/05/21 03:18

死锁:两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。

 

1、死锁的四个必要条件:

① 互斥条件

在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。

② 请求和保持条件

进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。

③ 非剥夺条件

进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。

④ 循环等待条件

在发生死锁时,必然存在一个进程与资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待已被P1占用的资源;P1正在等待已被P2占用的资源,……,Pn正在等待已被P0占用的资源。

 

2、处理死锁的方法:

① 预防死锁

事先采取各种措施去破坏产生死锁的四个必要条件中的一个或者几个,来预防发生死锁,较易实现,已被广泛使用,但由于所施加的限制条件往往太严格,可能会导致系统资源利用率和系统吞吐量降低。

② 避免死锁

不须事先采取各种措施去破坏产生死锁的的四个必要条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。

③ 检测死锁

不须事先采取各种措施去破坏产生死锁的的四个必要条件,也不必检查系统是否已经进入不安全状态,允许系统在运行过程中发生死锁,但可通过系统所设置的检测机构及时地检测出死锁的发生,并精确地确定与死锁有关的进程和资源,然后采取适当措施,从系统中将已发生的死锁清除掉。

④ 解除死锁

与检测死锁相配套的一种措施。当检测到系统中已发生死锁时,须将进程从死锁状态中解脱出来。常用的方法是撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于阻塞状态的进程,使之转为就绪状态,以继续运行。死锁的检测和解除措施,有可能使系统获得较好的资源利用率和吞吐量,在实现上难度也最大。

1 0
原创粉丝点击