目录

https://blog.csdn.net/weixin_45792450/article/details/109314765


死锁的概念与原因

死锁的概念

进程管理 进程的死锁

进程管理 进程的死锁

死锁发生的四个必要条件

进程管理 进程的死锁

环路等待条件又叫循环等待条件

循环等待条件,请求和保持条件,互斥条件,不可剥夺条件。


死锁的处理

进程管理 进程的死锁


死锁的预防

只要保证任何时刻产生死锁的四个条件至少有一个不成立,就可以起到预防死锁的目的。

破坏互斥条件

即允许进程同时访问某些资源,这样就没有资源的互斥使用问题了。但是,有的资源是不允许被同时访问的,像打印机等等,这是资源本身的属性。

破坏请求保持条件

可以实行资源预先分配策略。只有当系统能够满足当前进程的全部资源需求时,才一次性地将所申请的资源全部分配给该进程,否则不分配任何资源。由于运行的进程已占有了它所需的全部资源,所以不会发生占有资源又申请资源的现象,因此不会发生死锁。

显然此种方法效率低下,不利于并发性,且许多进程是动态执行,难以知道它需要的所有资源。

破坏不可剥夺条件

即允许进程强行从占有者那里夺取某些资源。就是说,当一个进程已占有了某些资源,它又申请新的资源,当不能立即被满足时,须释放所占有的全部资源,以后再重新申请。它所释放的资源可以分配给其它进程。这就相当于该进程占有的资源被隐蔽地强占了。这种预防死锁的方法实现起来困难,会降低系统性能。

破坏循环等待条件

实行资源有序分配策略。即把资源事先分类编号,按号分配,使进程在申请,占用资源时不会形成环路。所有进程对资源的请求必须严格按资源序号递增的顺序提出。进程占用了小号资源,才能申请大号资源,就不会产生环路,从而预防了死锁。


死锁的避免

进程管理 进程的死锁

银行家算法是死锁避免的著名算法。

进程管理 进程的死锁

进程管理 进程的死锁

具体算法

进程管理 进程的死锁

进程管理 进程的死锁

进程管理 进程的死锁

进程管理 进程的死锁


死锁的检测

保存资源的请求和分配信息,利用某种算法对这些信息加以检查,以判断是否存在死锁。死锁检测算法主要是检查是否有循环等待。

进程管理 进程的死锁

进程管理 进程的死锁

若最后所有节点可以化为孤立节点,说明不存在死锁,否则存在死锁。


死锁的解除

进程管理 进程的死锁

相关文章: