📜  门| GATE-CS-2006 |第41章(1)

📅  最后修改于: 2023-12-03 15:12:41.522000             🧑  作者: Mango

GATE-CS-2006 - 第41章

本章分为两个小节,分别介绍了操作系统中进程调度和死锁的概念。

进程调度

操作系统需要把有限的CPU时间分配给多个进程,以满足它们的需求。进程调度算法是决定如何选择下一个进程来运行的决策过程。本小节介绍了三种常见的进程调度算法。

先来先服务(FCFS)

FCFS算法按照进程的到达时间排序,处理器依次运行每个进程。该算法的优点是简单易用,缺点是不利于响应时间和短作业优先的处理。

短作业优先(SJF)

SJF算法根据进程的估算运行时间,选择下一个执行最短时间的进程。该算法的优点是可以有效地减少平均等待时间,但可能导致一些长作业的饥饿。

高响应比优先(HRRN)

HRRN算法考虑了进程等待时间和估计运行时间的比值,选择下一个响应比最高的进程。该算法既考虑了公平性,又考虑了短作业的优先级,相对于其他算法,它更能满足多种需求。

死锁

死锁是指两个或多个进程被互相等待而无法继续执行的情况。在本小节中,我们将解释死锁如何发生,以及如何避免和解除死锁。

产生死锁的原因

死锁的发生需要满足四个条件:

  • 互斥条件:进程要求对所分配的资源进行排他性控制。
  • 请求保持条件:进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有。
  • 不剥夺条件:进程已获得的资源,在未使用完之前,不能被其他进程强制性剥夺。
  • 循环等待条件:存在一种进程资源申请序列,使得每个进程已获得的资源不满足其所需的下一个资源。

只有这四个条件同时被满足时,才会发生死锁。

死锁的避免和解除

有三种方法可以避免或解除死锁:

  • 预防死锁:在程序设计时避免出现死锁的四个条件,比如采用资源分配图算法。
  • 避免死锁:在资源分配时,避免出现循环等待条件,采用银行家算法等方法。
  • 解除死锁:检测到死锁后,采取一定的措施打破死锁,如抢占资源或者回滚进程。
总结

本章介绍了进程调度和死锁的概念,包括三种进程调度算法和三种避免或解除死锁的方法。熟悉这些概念对于程序员来说是非常重要的,因为它们关系到系统的可靠性和程序的性能。