操作系统知识点

死锁

1、死锁的形成

如果一组进程中,每个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么该组进程就是死锁

2、三种情况

①、竞争不可抢占资源引起死锁

假设有p1和p2两个进程,都需要A和B两个进程,现在p1持有A等待B,P2持有B等待A,两个都等待另一个资源而不肯释放资源,就这样无限等待中,就形成了死锁

【不可抢占资源---打印机、光驱等】

②、竞争可消耗资源引起死锁

有P1、P2、P3三种进程,P1向P2发送消息并接受P3发送的消息,P2向P3发送消息并接受P1发送的消息,P3向P1发送消息并接受P2发送的消息,如果设置是先接受消息再发送消息,则所有的消息都不能发送,这就造成了死锁

③、进程推进顺序不当引起死锁

3、产生死锁的必要条件

互斥条件:某个资源只能被一个进程使用,其他进程请求资源时只能等待

请求和保持条件:进程已经保持了至少一个资源,但又提出新的请求,而这个资源被其他进程占用,自己占有资源却保持不放

不可抢占条件:进程已获得的资源没有使用完,不能被抢占

循环等待条件:必然存在一个循环链

4、处理死锁的思路

①、预防死锁:破坏死锁的四个必要条件之一即可

②、避免死锁:在资源动态分配过程中,用某种方式防止系统进入不安全的状态

③、检测死锁:运行时出现死锁,能及时发现死锁,把程序解脱出来

④、解除死锁:发生死锁后,解脱进程,通常撤销进程,回收资源,再分配给正处于阻塞状态的进程

5、如果存在一个由系统中所有进程构成的安全序列P1,P2,P3······Pn,则系统处于安全状态,安全状态一定没有死锁发生

不安全的状态不一定导致死锁

猜你喜欢

转载自blog.csdn.net/qq_34309704/article/details/80802138