操作系统【OS】死锁

常考点

系统资源不足不是系统产生死锁的原因,资源不足只会对进程造成“饥饿”【详见王道操作系统书P153第4题】

A:资源不足和资源分配不足还是有区别的啦~

 

 

死锁是什么?

  • 死锁是多个进程因为竞争资源而造成的一种互相等待

 

为什么会出现死锁?

系统资源的竞争【空间上】

  • 系统中不可剥夺资源不足以满足多个进程
  • 只有对不可剥夺资源(如磁带机,打印机)的竞争才可能产生死锁

进程推进顺序非法【时间上】

  • 进程运行时,请求和释放资源的顺序不当
  • 系统对独占资源分配不当

 

产生死锁的必要条件

  • 以下四个条件都要满足才会出现死锁

互斥条件

多个线程不能同时使用同一个资源

不剥夺条件

进程A已经拥有资源1,在自己使用完之前不能被其他进程获取

请求并保持条件

进程A已经有资源1,想申请资源2,但是资源2被进程B持有,进程A处于等待状态,但是进程A不释放资源1

循环等待条件

两个线程获取资源的顺序构成了环形链

 

死锁的充分条件:资源分配图中每种资源只有一个,又出现了环路

 

如何解决死锁?【重点考各种方法,注意不要混淆了这些方法】

死锁预防

 

定义

举例

破坏互斥条件

  • 缺点:如打印机等临界资源只能互斥使用

该方法不太可行

破坏不剥夺条件

  • 常用于状态易于保存和恢复的资源(CPU的寄存器和内存资源)

剥夺资源法

破坏请求并保持条件

  • 可能会导致饥饿现象

一次性分配策略、静态分配策略

破坏循环等待条件

  • 可采用顺序资源分配法,但是编号必须相对稳定,限制了新类型设备的增加

资源有序分配策略

  • 破坏以下一个或几个即可

死锁避免

  • 防止系统进入不安全的状态
  • 安全性算法
  • 银行家算法
    • 系统处于安全状态时,一定无死锁;
    • 系统处于不安全状态时,不一定出现死锁
    • PS:
      • 死锁避免时不会限制用户申请资源的顺序【因为会试分配】
      • 需要进程运行所需资源总量信息;
      • 不会给可能导致死锁的进程分配资源

死锁的检测

资源分配图

操作系统【OS】死锁_第1张图片

  • 资源分配图是一个有向图,用于表示某时刻系统资源与进程之间的状态
  • 圆圈代表进程代表一类资源
  • 从进程到资源的边叫做请求边;从资源到进程的边叫做分配边

死锁定理

S为死锁的条件是当且仅当S状态的资源分配图是不可完全简化的

死锁的解除

资源剥夺法

  • 挂起某些死锁进程,并抢占它的资源

撤销进程法

  • 强制撤销部分甚至全部死锁进程并剥夺这些进程的资源

进程回退法

  • 让一个或多个进程回退到足以回避死锁的地步

各个策略的比较

操作系统【OS】死锁_第2张图片

你可能感兴趣的:(操作系统,操作系统,408,考研)