diff --git a/docs/operating-system/basis.md b/docs/operating-system/basis.md index 56e16e8c..38da192b 100644 --- a/docs/operating-system/basis.md +++ b/docs/operating-system/basis.md @@ -128,6 +128,25 @@ - **多级反馈队列调度算法** :前面介绍的几种进程调度的算法都有一定的局限性。如**短进程优先的调度算法,仅照顾了短进程而忽略了长进程** 。多级反馈队列调度算法既能使高优先级的作业得到响应又能使短作业(进程)迅速完成。,因而它是目前**被公认的一种较好的进程调度算法**,UNIX 操作系统采取的便是这种调度算法。 - **优先级调度** : 为每个流程分配优先级,首先执行具有最高优先级的进程,依此类推。具有相同优先级的进程以 FCFS 方式执行。可以根据内存要求,时间要求或任何其他资源要求来确定优先级。 +### 2.6 什么是死锁 + +👨‍💻**面试官** :**你知道什么是死锁吗?** + +🙋 **我** :多个进程可以竞争有限数量的资源。当一个进程申请资源时,如果这时没有可用资源,那么这个进程进入等待状态。有时,如果所申请的资源被其他等待进程占有,那么该等待进程有可能再也无法改变状态。这种情况成为**死锁**。 + +### 2.7 死锁的四个条件 + +👨‍💻**面试官** :**产生死锁的四个必要条件是什么?** + +🙋 **我** :如果系统中以下四个条件同时成立,那么就能引起死锁: + +- **互斥**:资源必须处于非共享模式,即一次只有一个进程可以使用。如果另一进程申请该资源,那么必须等待直到该资源被释放为止。 +- **占有并等待**:一个进程至少应该占有一个资源,并等待另一资源,而该资源被其他进程所占有。 +- **非抢占**:资源不能被抢占。只能在持有资源的进程完成任务后,该资源才会被释放。 +- **循环等待**:有一组等待进程 `{P0, P1,..., Pn}`, `P0` 等待的资源被 `P1` 占有,`P1` 等待的资源被 `P2` 占有,......,`Pn-1` 等待的资源被 `Pn` 占有,`Pn` 等待的资源被 `P0` 占有。 + +注意,只有四个条件同时成立时,死锁才会出现。 + ## 三 操作系统内存管理基础 ### 3.1 内存管理介绍