操作系统---进程与线程__死锁

 

目录

 2.4_1_死锁的概念

2.4_1_1什么是死锁

2.4_1_2死锁、饥饿、死循环的区别

2.4_1_3死锁产生的必要条件

2.4_1_4 什么时候会发生死锁

​2.4_1_5死锁的处理策略​编辑

2.4_2_预防死锁

2.4_2_1破坏互斥条件

2.4_2_2破坏不剥夺条件

2.4_2_3 破坏请求和保持条件

2.4_2_4 破坏循环等待条件

 2.4_3_避免死锁

2.4_3_1 什么是安全序列

2.4_3_2银行家算法

 2.4_4_死锁的检测和解除

2.4_4_1死锁的检测

2.4_4_2死锁的检测


 

2.4_1_死锁的概念

操作系统---进程与线程__死锁_第1张图片

 2.4_1_1什么是死锁

 操作系统---进程与线程__死锁_第2张图片

 操作系统---进程与线程__死锁_第3张图片

 2.4_1_2死锁、饥饿、死循环的区别

死锁:

各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象

饥饿:

由于长期得不到想要的资源,某进程无法向前推进的现象。比如:在短进程有先算法中,若有源源不断的短进程到来,则长进程将一直得不到处理机,从而发生长进程“饥饿”

死循环:

某进程执行过程中一直跳不出某个循环的现象 。有时是因为程序逻辑BUG导致的,有时是程序员故意设计的

操作系统---进程与线程__死锁_第4张图片

 2.4_1_3死锁产生的必要条件

操作系统---进程与线程__死锁_第5张图片

2.4_1_4 什么时候会发生死锁

操作系统---进程与线程__死锁_第6张图片 
2.4_1_5死锁的处理策略操作系统---进程与线程__死锁_第7张图片

 本节小结:

操作系统---进程与线程__死锁_第8张图片

 

2.4_2_预防死锁

操作系统---进程与线程__死锁_第9张图片

 

2.4_2_1破坏互斥条件

 操作系统---进程与线程__死锁_第10张图片

 2.4_2_2破坏不剥夺条件

操作系统---进程与线程__死锁_第11张图片

2.4_2_3 破坏请求和保持条件

操作系统---进程与线程__死锁_第12张图片

2.4_2_4 破坏循环等待条件

本节小结:

 操作系统---进程与线程__死锁_第13张图片

 2.4_3_避免死锁

操作系统---进程与线程__死锁_第14张图片

2.4_3_1 什么是安全序列

安全序列:就是指如果系统按照这种序列分配资源,则每个进程都能顺利完成。只要能找出一个安全序列,系统就是安全状态。当然,安全序列可能有多个。

如果分配了资源后,系统中找不出任何一个安全序列,系统就进入了不安全状态。这就意味着之后可能所有进程都无法顺利的执行下去。当然,如果有进程提前归还了一些资源,那系统也有可能重新回到安全状态,不过我们在分配资源之前总是要考虑到最坏的情况。

如果系统处于安全状态,一定不会发生死锁。如果系统进入不安全状态,就可能发生死锁(处于不安全状态未必就是发生了死锁,但发生死锁时一定是在不安全状态)

因此可以在资源分配之前预先判断这次分配是否会导致系统进入不安全状态,以此决定是否答应资源分配请求。这也是“银行家算法”的核心思想。

2.4_3_2银行家算法

 操作系统---进程与线程__死锁_第15张图片

 操作系统---进程与线程__死锁_第16张图片

 代码实现:

本节小结:

 操作系统---进程与线程__死锁_第17张图片

 2.4_4_死锁的检测和解除

 操作系统---进程与线程__死锁_第18张图片

 2.4_4_1死锁的检测

操作系统---进程与线程__死锁_第19张图片

 死锁的检测方法:

2.4_4_2死锁的检测

一旦检测出死锁的发生,就应该立即解除死锁

补充:并不是系统中所有的进程都是死锁状态,用死锁检测算法化简资源分配图后,还连着边的那些进程就是死锁进程

解除死锁的主要方法有:

  1. 资源剥夺法。挂起(暂时放到外存上)某些死锁进程,并抢占它的资源,将这些资源分配给其他的死锁进程。但是应防止被挂起的进程长时间得不到资源而饥饿
  2. 撤销进程法(或称终止进程法)。强制撤销部分、甚至全部死锁进程,并剥夺这些进程的资源。这种方式的优点是实现简单,但所付出的代价可能会很大。因为有些进程可能已经运行了很长时间,已经接近结束了,一旦被终止可谓功亏一篑,以后还得从头再来。
  3. 进程回退法。让一个或多个死锁进程回退到足以避免死锁的地步。这就要求系统要记录进程的历史信息,设置还原点。

 那么如何决定“对谁动手”?

  1. 进程优先级
  2. 已执行多长时间
  3. 还要多久能完成
  4. 进程已经使用了多少资源
  5. 进程是交互式还是批处理式的

本节小结:

操作系统---进程与线程__死锁_第20张图片

 

 

你可能感兴趣的:(操作系统,windows,centos,linux,macos)