包含 CPU 和 IO 时间的进程的 SRTF 算法17 Mar 2025 | 4 分钟阅读 到目前为止,我们只考虑了 CPU 密集型的作业。然而,进程可能需要一些 IO 操作或某些资源来完成其执行。在本例中,我们考虑的是 IO 密集型进程。 在本例中,有四个作业,其进程 ID 分别为 P1、P2、P3 和 P4。它们的到达时间和 CPU 突发时间如下表所示。
甘特图的准备在时间 0,进程 P1 和 P2 到达。由于我们使用的算法是 SRTF,因此具有最短突发时间的进程将被调度到 CPU 上。在这种情况下,是 P2。 ![]() ![]() 从时间 0 到时间 1,P2 将处于运行状态。 ![]() P2 还需要一些 IO 时间才能完成其执行。经过 1 个单位的执行后,P2 将其状态从运行更改为等待。处理器变得空闲以执行其他作业。由于此时除了 P1 之外没有其他可用进程,因此 P1 将被执行。 下图说明了时间 1 时的进程和状态。进程 P2 进入等待状态,此时 CPU 变为空闲。 ![]() 从时间 1 到 3,由于 P2 处于等待状态,并且就绪队列中没有其他可用进程,因此在此时间段内将执行唯一可用的进程 P1。 ![]() ![]() 在时间 3,进程 P3 到达,其总 CPU 突发时间为 5 个单位。由于 P1 的剩余突发时间小于 P3,因此 CPU 将继续执行 P1。 ![]() 因此,从时间 3 到时间 4,P1 将保持运行状态。 ![]() ![]() 由于 P1 是一个 IO 密集型进程。在时间单位 4,它将把状态从运行更改为等待。处理器变得空闲以执行其他作业。由于 P2 在时间 4 也变得可用,因为它已完成 IO 操作,现在它需要另外 1 个单位的 CPU 突发时间。P3 也可用,需要总共 5 个单位的 CPU 突发时间。 ![]() 可用进程中剩余 CPU 突发时间最短的进程将被执行。在我们的案例中,这样的进程是 P2,它需要 1 个单位的突发时间,因此它将被分配到 CPU。 ![]() ![]() 在时间 5,P2 完成。P1 仍处于等待状态。此时,唯一可用的进程是 P3,因此它将被分配到 CPU。 ![]() 从时间 5 到时间 6,P3 将处于运行状态;同时,P1 仍将处于等待状态。 ![]() ![]() ![]() 在时间 6,进程 P4 到达就绪队列。P1 也已完成 IO 操作,并变为可执行状态。P3 尚未完成,仍需要另外 2 个单位的 CPU 突发时间。 从时间 6 到时间 8,进程 P3 的剩余 CPU 突发时间在可用进程中最短,因此 P3 将被分配到 CPU。 ![]() ![]() P3 需要一些 IO 操作才能完成其执行。在时间 8,P3 将其状态从运行更改为等待。CPU 变得空闲以执行其他进程。进程 P4 和 P1 可用,其中剩余突发时间最短的进程将被执行。 ![]() 从时间 8 到时间 9,进程 P1 将被执行。 ![]() ![]() 在时间 9,进程 P3 的 IO 完成,它现在将与已经在那里等待轮到的 P4 一起处于就绪状态。为了完成执行,它需要另外 2 个单位的突发时间。P1 此时处于运行状态,而等待状态中没有任何进程。 ![]() ![]() 从时间 9 到 10,进程 P1 将被执行,因为其剩余的 CPU 突发时间比就绪队列中可用的进程 P4 和 P3 的要短。 ![]() ![]() 在时间 10,P1 的执行完成,现在 CPU 变为空闲。就绪进程中 CPU 突发时间较短的进程将获得 CPU 的使用权。 从时间 10 到 12,进程 P3 将被执行直到完成,因为它的剩余 CPU 突发时间是两个可用进程中较短的。它还需要 2 个单位的 CPU 突发时间,由于没有其他进程将到达就绪状态,因此不会发生抢占,它将被执行直到完成。 ![]() ![]() 在时间 12,进程 P3 将完成,由于就绪状态中只有一个进程 P4 可用,因此 P4 将被分配到 CPU。 ![]() P4 在 IO 之前需要 5 个单位的 CPU 突发时间,因此它将被执行到时间 17(持续 5 个单位),然后它将把状态从运行更改为等待。 ![]() 在时间 17,进程 P4 将其状态从运行更改为等待。由于这是系统中唯一的进程,因此 CPU 将保持空闲,直到 P4 再次可用。 ![]() ![]() 在时间 21,P4 将完成 IO 操作并进入就绪状态。 ![]() 从时间 21 开始,进程 P4 将被调度。由于就绪队列中没有其他进程,因此处理器别无选择。它将被执行直到完成。 ![]() 最终甘特图![]()
平均等待时间 = (5+3+4+10)/4 = 22/4 单位 下一主题进程同步介绍 |
我们请求您订阅我们的新闻通讯以获取最新更新。