📅  最后修改于: 2020-12-14 03:34:34             🧑  作者: Mango
到目前为止,我们仅考虑CPU绑定作业。但是,该过程可能需要一些IO操作或一些资源来完成其执行。在本示例中,我们正在考虑IO绑定过程。
在该示例中,有四个作业ID为P1,P2,P3和P4的作业可用。下表列出了它们的到达时间和CPU突发时间。
Process Id | Arrival Time | (Burst Time, IO Burst Time, Burst Time) |
---|---|---|
1 | 0 | (3,2,2) |
2 | 0 | (1,3,1) |
3 | 3 | (3,1,2) |
4 | 6 | (5,4,5) |
在时间0,过程P1和P2到达。由于我们使用的算法是SRTF,因此突发时间最短的进程将安排在CPU上。在这种情况下,它是P2。
从时间0到时间1,P2将处于运行状态。
P2还需要一些IO时间才能完成其执行。执行1个单位后,P2将其状态从运行更改为等待。处理器可以自由执行其他作业。由于此时除了P1之外没有其他进程可用,因此将执行P1。
下图说明了时间1的过程和状态。过程P2进入等待状态,此时CPU成为偶像。
从时间1到3,由于P2处于等待状态,并且就绪队列中没有其他进程可用,因此将在此时间段内执行唯一可用的进程P1。
在时间3,进程P3以5个单元的总CPU突发时间到达。由于P1的剩余突发时间短于P3,因此CPU将继续执行。
因此,P1从时间3到时间4将保持在运行状态。
由于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,由于在就绪状态下只有一个进程P4可用,因此进程P3将完成,因此P4将被分配给CPU。
P4在IO之前需要5个单位的CPU突发时间,因此它将执行到时间17(5个单位),然后将其状态从运行更改为等待。
在时间17,过程P4将其状态从运行改变为等待。由于这是系统中唯一的进程,因此CPU将保持偶像状态,直到P4再次可用为止。
在时间21,P4将通过IO操作完成,并在就绪状态下可用。
从时间21开始,将调度过程P4。由于没有其他进程处于就绪队列中,因此处理器别无选择。它将执行到完成。
Process Id | Arrival Time | Total CPU Burst Time | Completion Time | Turn Around Time | Waiting Time |
---|---|---|---|---|---|
1 | 0 | 5 | 10 | 10 | 5 |
2 | 0 | 2 | 5 | 5 | 3 |
3 | 3 | 5 | 12 | 9 | 4 |
4 | 6 | 10 | 26 | 20 | 10 |
平均等待时间=(5 + 3 + 4 + 10)/ 4 = 22/4单位