死锁

死锁

2020-04-12
操作系统

系统资源 #

  1. 可抢占资源:某进程获得该类资源后,该资源可以被系统或其他进程访问。比如CPU、内存。
  2. 不可抢占资源:某进程获得该类资源后,该资源不能被其他进程抢占,只能在进程使用完毕后由该进程自己释放。讨论死锁所指的资源一般指不可抢占资源

死锁产生的必要条件 #

  1. 互斥条件:任一时刻一个资源仅被一个进程占用。
  2. 请求和保持条件:一个进程请求资源得不到满足而阻塞自己时,并不释放已经分配给它的资源。
  3. 不剥夺条件:进程获得的资源在未使用完毕不可能被其他进程占有,只能由该进程自己释放。
  4. 循环等待:若干进程形成一个循环等待链,链中每一个进程都在等待改链中下一个进程占有的资源。

死锁的预防 #

  1. 破坏请求和保持条件:每个进程在运行之前一次性申请他所需要的全部资源,并在资源未满足时不运行。
  2. 破坏不剥夺:当一个已经占有资源的进程又提出新的资源请求,而并没有得到满足时,则必须释放他所获取的所有资源而进入阻塞状态。
  3. 破坏循环等待:采用资源有序分配策列,将系统中的资源进行编号,进程必须按照顺序去申请资源。

死锁的避免 #

  • 安全状态是指在某一时刻,系统中存在一个包含所有进程的进程序列,按照该进程序列的顺序为所有进程分配资源,则所有进程的资源需求都可以得到满足。

银行家算法 #

  • 在进程提出资源申请时,先判断此次分配是否会导致系统进入不安全状态。如果会进入不安全状态,就暂时不答应这次请求,让进程先阻塞。