操作系统中的列表调度算法

前置知识

列表调度,也被称为基于优先级列表的调度,是一种通过为进程分配优先级来构建有序列表的调度技术。它的基本运作方式是:系统会建立一个包含在特定时刻准备好执行的进程列表。然后,根据处理器(CPU)的可用状态(即空闲或忙碌),空闲的处理器会从该列表中选取进程并执行它们。

让我们通过一个具体的例子来深入理解列表调度。

示例:

假设我们共有 7 个进程:P1, P2, P3, P4, P5, P6, P7,它们之间存在以下依赖关系:

  • P3 依赖于 P1 和 P2(只有当 P1 和 P2 都执行完毕后,P3 才能开始执行)。
  • P4 依赖于 P3 和 P6(只有当 P3 和 P6 都执行完毕后,P4 才能开始执行)。
  • P6 依赖于 P5

依赖关系如下图所示:

!image

让我们假设系统受到两个处理器的限制,且这两个处理器当前都是空闲的。由于 P1、P2、P5 和 P7 是独立的(无依赖项),我们假设它们最初都在“就绪列表”中等待并准备好执行。

进程的分步执行过程:

  • 我们只有两个空闲的处理器,因此让 P1P2 首先获得执行。
  • P1 和 P2 离开就绪列表,P3 进入就绪列表。此时,P3、P5、P7 位于就绪列表中。
  • 假设在就绪队列现有的 3 个进程中,P3P5 接下来获得执行。因此,P3 和 P5 离开就绪列表,P6 进入就绪列表。此时 P4 还不会进入就绪列表,因为它还依赖于尚未执行的 P6。
  • 此时 P6P7 在就绪列表中。因此,P6P7 接下来获得执行。
  • P6 和 P7 离开就绪列表,P4 进入就绪列表,最终 P4 获得执行,所有进程终止。

每一步的就绪列表状态如下图所示:

!image

大家可以看到,整个执行过程在 4 个单位时间 后结束。但是,这个时间可能会根据操作系统使用的具体调度机制而有所不同。

调度算法如何影响执行时间

为了说明执行时间取决于所使用的调度算法,让我们考虑另一种情况:

  • 假设这次 P5P7 首先开始执行,而不是 P1 和 P2。
  • 之后,P5 和 P7 移出就绪列表,P6 进入就绪列表。
  • 此时 P1、P2、P6 在就绪列表中。假设 P2 和 P6 获得执行。
  • P2 和 P6 移出就绪列表。随后 P1 获得执行。
  • P1 移出就绪列表,P3 进入就绪列表,然后 P3 获得执行。
  • 最后,P4 获得执行,所有进程执行完毕。

该执行过程的就绪列表状态如下所示:

!image

大家可以看到,如果我们改变了进程执行的顺序,总共花费了 5 个单位时间。这证明了调度顺序对整体效率有直接影响。

算法策略

在列表调度中,优先级通常在调度过程开始之前静态确定。第一步是选择具有最高优先级的进程,第二步是选择最佳可能的资源(处理器)。

我们可以使用的一些调度策略包括:

  • 最长路径算法
  • 最长处理时间
  • 关键路径法

算法的最终目标是最大化 CPU 利用率并最小化延迟。因此,无论哪种调度算法,只要能帮助我们根据具体的进程情况实现这一目标,都是可以使用的。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/22085.html
点赞
0.00 平均评分 (0% 分数) - 0