操作系统之调度算法的六种实现

版权声明:需要转载的朋友下面留个言 https://blog.csdn.net/weixin_42955598/article/details/85343198

调度算法

进程调度就是选择进程占用处理机

在描述进程调度算法之前,先了解几个概念

  1. 周转时间 : 进程从创建到结束运行所经历的时间
  2. 平均周转时间 : n个进程周转时间的平均值。一般来说,如果调度算法使得平均周转时间减少,则用户满意度和系统效率会提高。
  3. 等待时间 :指进程处于等处理机状态时间之和,等待时间越长,用户满意度越低
  4. 平静等待时间。n个进程的等待时间的平均值。如果一个调度算法使得平均等待时间降低,意味着减少了平均周转时间。

++不同的调度算法可满足不同的要求 , 要想得到一个满足所有用户和系统的算法几乎不可能。++

  1. 先来先到服务 (fcfs) first comming first service
    这是最基本的调度方法,基本原则就是先来先执行。很好理解这个算法的优点和缺点就不一一概述 。虽然先来先服务算法很少用作主要的调度算法**,尤其是不能再分时和实时系统中作为主要算法**,但是还是可以集合其他调度算法使用。例如在使用优先级作为调度的系统中, 往往对许多具有相同优先级的进程使用先来先服务的原则。
    在这里插入图片描述

  2. 优先级调度算法:
    按照进程的优先级大小来调度 , 使得优先级高的进程优先得到处理及的调度称为优先级调度算法。创建优先级可以由系统按一定原则赋予,也可以操作系统外部安排,也可以用户支付购买优先级。
    但是在许多优先级调度系统中,往往是动态优先级。一个进程的优先级不是固定的。往往随着许多因素变化而变化尤其是随着进程的等待时间。已使用的处理机时间或其他资源使用情况而定。

优先级算法又可以分为下面两种。

  • 非剥夺的优先级调度算法。 一旦占用就一直运行下次,知道自身推出。
    在这里插入图片描述
  • 可剥夺的优先级调度算法。任何时候都是最高优先级进程运行 , 一旦出现比当前优先级高的进程优先运行该进程。==在unix
  • 在这里插入图片描述
    系统中就是 可剥夺的优先级调度算法 每个进程的优先级都是动态的,由系统每隔一段时间计算一次优先级。==
  1. 时间片轮转算法 : 采用该算法的系统其进程就绪队列按照先来先服务调度原则,但是占用处理机只要一个时间片,在完成一个时间片后如果还没有完成就必须释放给下一个就绪的进程,而被剥夺的进程排到队尾 此算法最核心的便是时间片 具体可以参考时间片轮转算法 ‘多级反馈队列调度算法’.
    在这里插入图片描述
    在这里插入图片描述
  2. 短进程优先调度算法(spf) short p first 短进程优先是从就绪队列中选择那些所需运行时间最短的进程进入主存运行,是一个非剥夺算法虽然减少了就绪队列的等待进程数单数也降低了平均等待时间,这是一个不公平的算法尤其是对于需要时间较长的进程 。可能导致饿死状态并且相对于先来先服务算法而言,短进程优先需要事先正确的了解每一个进程将运行多少时间。而这个只能估计因此不适用于分时系统。在这里插入图片描述
  3. 最短剩余时间优先调度算法 : 这是将短进程优先算法用于分时环境的变型。其基本思想是:‘让进程云心到完成时所需运行时间最短’的进程优先得到处理,且此算法运行剥夺。优点是:可以用于分时系统,保证及时响应用户要求,缺点,开销大。毫无疑问,这个算法使进程一进入系统就立即得到服务,从而降低进程的平均等待时间
  4. 最高响应比优先调度算法 : Hasen争对短进程优先调度的缺点提出了这个算法。这是一个可剥夺的算法,按照此算法每个进程都有一个优先级,== 优先级 = (等待时间+要求服务的时间)/要求服务的时间 ==称为响应比。
  5. 在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42955598/article/details/85343198