包含 CPU 和 IO 时间的进程的 SRTF 算法

17 Mar 2025 | 4 分钟阅读

到目前为止,我们只考虑了 CPU 密集型的作业。然而,进程可能需要一些 IO 操作或某些资源来完成其执行。在本例中,我们考虑的是 IO 密集型进程。

在本例中,有四个作业,其进程 ID 分别为 P1、P2、P3 和 P4。它们的到达时间和 CPU 突发时间如下表所示。

进程 ID到达时间(突发时间,IO 突发时间,突发时间)
10(3,2,2)
20(1,3,1)
33(3,1,2)
46(5,4,5)

甘特图的准备

在时间 0,进程 P1 和 P2 到达。由于我们使用的算法是 SRTF,因此具有最短突发时间的进程将被调度到 CPU 上。在这种情况下,是 P2。


os SRTF with Processes contains CPU and IO Time
os SRTF with Processes contains CPU and IO Time1

从时间 0 到时间 1,P2 将处于运行状态。


os SRTF with Processes contains CPU and IO Time 2

P2 还需要一些 IO 时间才能完成其执行。经过 1 个单位的执行后,P2 将其状态从运行更改为等待。处理器变得空闲以执行其他作业。由于此时除了 P1 之外没有其他可用进程,因此 P1 将被执行。

下图说明了时间 1 时的进程和状态。进程 P2 进入等待状态,此时 CPU 变为空闲。


os SRTF with Processes contains CPU and IO Time 3

从时间 1 到 3,由于 P2 处于等待状态,并且就绪队列中没有其他可用进程,因此在此时间段内将执行唯一可用的进程 P1。


os SRTF with Processes contains CPU and IO Time 4
os SRTF with Processes contains CPU and IO Time 5

在时间 3,进程 P3 到达,其总 CPU 突发时间为 5 个单位。由于 P1 的剩余突发时间小于 P3,因此 CPU 将继续执行 P1。


os SRTF with Processes contains CPU and IO Time 6

因此,从时间 3 到时间 4,P1 将保持运行状态。


os SRTF with Processes contains CPU and IO Time 7
os SRTF with Processes contains CPU and IO Time 8

由于 P1 是一个 IO 密集型进程。在时间单位 4,它将把状态从运行更改为等待。处理器变得空闲以执行其他作业。由于 P2 在时间 4 也变得可用,因为它已完成 IO 操作,现在它需要另外 1 个单位的 CPU 突发时间。P3 也可用,需要总共 5 个单位的 CPU 突发时间。


os SRTF with Processes contains CPU and IO Time 9

可用进程中剩余 CPU 突发时间最短的进程将被执行。在我们的案例中,这样的进程是 P2,它需要 1 个单位的突发时间,因此它将被分配到 CPU。


os SRTF with Processes contains CPU and IO Time 10
os SRTF with Processes contains CPU and IO Time 11

在时间 5,P2 完成。P1 仍处于等待状态。此时,唯一可用的进程是 P3,因此它将被分配到 CPU。


os SRTF with Processes contains CPU and IO Time 12

从时间 5 到时间 6,P3 将处于运行状态;同时,P1 仍将处于等待状态。


os SRTF with Processes contains CPU and IO Time 13
os SRTF with Processes contains CPU and IO Time 14
os SRTF with Processes contains CPU and IO Time 15

在时间 6,进程 P4 到达就绪队列。P1 也已完成 IO 操作,并变为可执行状态。P3 尚未完成,仍需要另外 2 个单位的 CPU 突发时间。

从时间 6 到时间 8,进程 P3 的剩余 CPU 突发时间在可用进程中最短,因此 P3 将被分配到 CPU。


os SRTF with Processes contains CPU and IO Time 16
os SRTF with Processes contains CPU and IO Time 17

P3 需要一些 IO 操作才能完成其执行。在时间 8,P3 将其状态从运行更改为等待。CPU 变得空闲以执行其他进程。进程 P4 和 P1 可用,其中剩余突发时间最短的进程将被执行。


os SRTF with Processes contains CPU and IO Time 18

从时间 8 到时间 9,进程 P1 将被执行。


os SRTF with Processes contains CPU and IO Time 19
os SRTF with Processes contains CPU and IO Time 20

在时间 9,进程 P3 的 IO 完成,它现在将与已经在那里等待轮到的 P4 一起处于就绪状态。为了完成执行,它需要另外 2 个单位的突发时间。P1 此时处于运行状态,而等待状态中没有任何进程。


os SRTF with Processes contains CPU and IO Time 21
os SRTF with Processes contains CPU and IO Time 22

从时间 9 到 10,进程 P1 将被执行,因为其剩余的 CPU 突发时间比就绪队列中可用的进程 P4 和 P3 的要短。

os SRTF with Processes contains CPU and IO Time 23
os SRTF with Processes contains CPU and IO Time 24

在时间 10,P1 的执行完成,现在 CPU 变为空闲。就绪进程中 CPU 突发时间较短的进程将获得 CPU 的使用权。

从时间 10 到 12,进程 P3 将被执行直到完成,因为它的剩余 CPU 突发时间是两个可用进程中较短的。它还需要 2 个单位的 CPU 突发时间,由于没有其他进程将到达就绪状态,因此不会发生抢占,它将被执行直到完成。


os SRTF with Processes contains CPU and IO Time 25
os SRTF with Processes contains CPU and IO Time 26

在时间 12,进程 P3 将完成,由于就绪状态中只有一个进程 P4 可用,因此 P4 将被分配到 CPU。


os SRTF with Processes contains CPU and IO Time 27

P4 在 IO 之前需要 5 个单位的 CPU 突发时间,因此它将被执行到时间 17(持续 5 个单位),然后它将把状态从运行更改为等待。

os SRTF with Processes contains CPU and IO Time 28

在时间 17,进程 P4 将其状态从运行更改为等待。由于这是系统中唯一的进程,因此 CPU 将保持空闲,直到 P4 再次可用。


os SRTF with Processes contains CPU and IO Time 29
os SRTF with Processes contains CPU and IO Time 30

在时间 21,P4 将完成 IO 操作并进入就绪状态。


os SRTF with Processes contains CPU and IO Time 31

从时间 21 开始,进程 P4 将被调度。由于就绪队列中没有其他进程,因此处理器别无选择。它将被执行直到完成。


os SRTF with Processes contains CPU and IO Time 32

最终甘特图

os SRTF with Processes contains CPU and IO Time 33
进程 ID到达时间总 CPU 突发时间完成时间周转时间等待时间
10510105
202553
3351294
4610262010

               平均等待时间 = (5+3+4+10)/4 = 22/4 单位


下一主题进程同步介绍