操作系统中的CPU调度算法

什么是CPU调度?

CPU调度是确定哪个进程将拥有CPU以便在另一个进程处于保持状态时执行的过程。CPU调度的主要任务是确保每当CPU保持空闲时,OS至少选择就绪队列中可用的进程之一来执行。选择过程将由CPU调度程序执行。它选择内存中准备执行的进程之一。

CPU调度的类型

抢占式调度

在“抢先式调度”中,大多数任务都分配有其优先级。有时,即使较低优先级的任务仍在运行,在另一个较低优先级的任务之前运行具有较高优先级的任务也很重要。较低优先级的任务会保留一段时间,并在较高优先级的任务完成执行时恢复。

非抢占式调度

在这种调度方法中,已将CPU分配给特定的进程。使CPU保持繁忙的进程将通过切换上下文或终止来释放CPU。这是可用于各种硬件平台的唯一方法。那是因为它不需要抢先式调度之类的特殊硬件(例如计时器)。

调度是抢占式还是非抢占式?

要确定调度是抢占式还是非抢占式,请考虑以下四个参数:

  1. 进程从运行状态切换到等待状态。
  2. 特定过程从运行状态切换到就绪状态。
  3. 特定过程从等待状态切换到就绪状态。
  4. 进程完成其执行并终止。

仅条件1和4适用,调度称为非抢先。

所有其他调度都是抢占式的。

重要的CPU调度术语

  • 突发时间/执行时间:这是进程完成执行所需的时间。也称为运行时间。
  • 到达时间:流程进入就绪状态时
  • 完成时间:流程完成并从系统退出时
  • 多重编程可以同时存在于内存中的许多程序。
  • 乔布斯:这是一种没有任何用户交互的程序。
  • 用户:这是一种具有用户交互作用的程序。
  • 处理:这是用于作业和用户的参考。
  • CPU / IO突发周期:表征进程执行,该过程在CPU和I / O活动之间交替。CPU时间通常比I / O时间短。

CPU调度标准

CPU调度算法尝试最大化和最小化以下内容:


最大化:

CPU利用率: CPU利用率是操作系统需要确保CPU保持尽可能繁忙的主要任务。范围从0到100%。但是,对于RTOS,它的范围可以从低级系统的40%到高级系统的90%。

吞吐量:每单位时间完成其执行的进程数称为吞吐量。因此,当CPU忙于执行该进程时,此时正在完成工作,并且每单位时间完成的工作称为吞吐量。

最小化:

等待时间:等待时间是特定进程在就绪队列中需要等待的时间。

响应时间:这是从提交请求到产生第一个响应为止的时间。

周转时间:周转时间是执行特定过程的时间。它是等待进入内存,等待队列以及在CPU上执行所花费的总时间的计算。从流程提交时间到完成时间的时间就是周转时间。

间隔计时器

定时器中断是一种与抢占密切相关的方法。当某个进程获得CPU分配时,可以将计时器设置为指定的时间间隔。计时器中断和抢占都迫使进程在CPU突发完成之前返回CPU。

大多数多程序操作系统都使用某种形式的计时器来防止进程永久占用系统。

什么是调度程序?

它是一个模块,可为过程提供对CPU的控制。分派器应快速运行,以便它可以在每个上下文切换上运行。调度延迟是CPU调度程序停止一个进程并启动另一个进程所需的时间。

分派器执行的功能:

  • 上下文切换
  • 切换到用户模式
  • 在新加载的程序中移动到正确的位置。

CPU调度算法的类型

主要有六种类型的流程调度算法

  1. 先来先服务(FCFS)
  2. 最短工作优先(SJF)调度
  3. 剩余时间最短
  4. 优先排程
  5. 循环调度
  6. 多级队列调度

调度算法

先到先得

先到先得是FCFS的完整形式。它是最简单,最简单的CPU调度算法。在这种算法中,请求CPU的进程首先获得CPU分配。可以使用FIFO队列来管理此调度方法。

当流程进入就绪队列时,其PCB(流程控制块)与队列尾部链接。因此,当CPU空闲时,应在队列开始处将其分配给进程。

FCFS方法的特点:

  • 它提供了非抢占式和抢占式调度算法。
  • 作业总是按照先到先得的原则执行
  • 它易于实现和使用。
  • 但是,这种方法性能较差,并且一般的等待时间相当长。

剩余时间最短

SRT的完整形式是“最短剩余时间”。这也称为SJF抢占式调度。在这种方法中,进程将分配给最接近完

成任务的任务。此方法可防止较新的就绪状态进程保持较旧进程的完成。

SRT调度方法的特点:

  • 此方法主要用于需要优先考虑短期作业的批处理环境中。
  • 这不是在所需CPU时间未知的共享系统中实现它的理想方法。
  • 与每个进程相关联,作为其下一个CPU突发的长度。因此,操作系统使用这些长度,这有助于在尽可能短的时间内安排进程。

基于优先级的调度

优先级调度是一种基于优先级调度进程的方法。在这种方法中,调度程序根据优先级选择要工作的任务。

优先级调度还可以帮助OS涉及优先级分配。应该首先执行优先级较高的流程,而优先级相同的作业应以循环方式或FCFS方式进行。可以根据内存需求,时间需求等确定优先级。

轮循调度

轮询是最古老,最简单的调度算法。该算法的名称来自循环原则,其中每个人依次获得相等的份额。它主要用于多任务处理中的调度算法。这种算法方法有助于无饥饿地执行进程。

轮循调度的特点

  • 轮询是一种由时钟驱动的混合模型
  • 时间片应为最小,这是为要处理的特定任务分配的。但是,对于不同的过程,它可能会有所不同。
  • 这是一个实时系统,可在特定时限内响应事件。

最短的工作优先

SJF是(最短作业优先)的完整形式,是一种调度算法,在该算法中,应选择执行时间最短的进程来执行。此调度方法可以是抢占式或非抢占式。它显着减少了其他等待执行进程的平均等待时间。

SJF调度的特征

  • 它与每个作业作为一个时间单位相关联。
  • 在这种方法中,当CPU可用时,将首先执行完成时间最短的下一个过程或作业。
  • 它是通过非抢占策略实现的。
  • 此算法方法对于批处理类型非常有用,在这种批处理中,等待作业完成并不重要。
  • 它通过提供较短的作业来提高作业输出,该作业应首先执行,而这些作业通常具有较短的周转时间。

多级队列调度

该算法将就绪队列分为多个单独的队列。在此方法中,基于进程的特定属性(例如进程优先级,内存大小等)将进程分配给队列。

但是,这不是独立的调度OS算法,因为它需要使用其他类型的算法来调度作业。

多级队列调度的特点:

  • 对于具有某些特征的流程,应维护多个队列。
  • 每个队列可能有其单独的调度算法。
  • 每个队列都有优先级。

调度算法的目的

这是使用调度算法的原因:

  • CPU使用调度来提高效率。
  • 它可以帮助您在竞争流程之间分配资源。
  • 可以通过多程序获得CPU的最大利用率。
  • 要执行的进程处于就绪队列中。

概要:

  • CPU调度是确定哪个进程在拥有另一个进程的同时将拥有CPU来执行的进程。
  • 在“抢先式调度”中,大多数任务都分配有其优先级。
  • 在非抢占式调度方法中,CPU已分配给特定进程。
  • 爆发时间是过程完成执行所需的时间。也称为运行时间。
  • CPU利用率是操作系统需要确保CPU保持尽可能繁忙的主要任务。
  • 每单位时间完成其执行的进程数称为吞吐量。
  • 等待时间是特定进程在就绪队列中需要等待的时间。
  • 这是在产生第一个响应之前提交请求的时间。
  • 周转时间是执行特定过程的时间。
  • 计时器中断是一种与抢占密切相关的方法,
  • 调度程序是一个模块,可为进程提供CPU的控制。
  • 六种类型的流程调度算法是:
  • 先来先服务(FCFS),2)最短工作优先(SJF)调度3)最短剩余时间4)优先级调度5)循环调度6)多级队列调度
  • 在“先来先服务”方法中,请求CPU的进程首先获取CPU分配。
  • 在最短的剩余时间内,该过程将分配给最接近完成任务的任务。
  • 在“优先级调度”中,调度程序根据优先级选择要工作的任务。
  • 在这种循环调度原则上,每个人依次获得相等份额的东西
  • 在“最短作业优先”中,应选择最短的执行时间,然后再执行
  • 在多级调度中,方法将就绪队列分为多个单独的队列。在此方法中,基于特定属性将进程分配给队列
  • CPU使用调度来提高效率。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁