死锁

image

产生原因

  1. 互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。
  2. 请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。
  3. 非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
  4. 循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。

避免死锁

  1. 允许进程同时访问某些资源 – 互斥
  2. 允许进程强行从占有者那里夺取某些资源 – 非剥夺条件
  3. 进程在运行前一次性地向系统申请它所需要的全部资源 – 请求与保持
  4. 把资源事先分类编号,按号分配,杜绝环路 – 循环等待