首先要做的是设置起始状态并定义参考条款。 P(X) <子> Ť 子> 将是量子的过程X的优先级 t ; E(X) <子> Ť 子> 将是量子的进程X的估计CPU使用量 t ; T(X) <子> Ť 子> 将是在下一次状态改变之前剩余的量子数。 S(X) <子> Ť 子> 将是进程的状态 R= runnable,S = sleep,D = dead。过程X具有良好的N(X)。 Q有多个队列 <子> ñ 子> 成为优先事项的队列 NN + 3 。我们正在处理用户进程,因此每个进程X都按优先级P(X)进行调度 <子> Ť 子> = PUSER + E(X) <子> Ť 子> / 4 + 2 * N(X),初始估算的CPU由E(X)给出 <子> 0 子> = 0。
t
N(A)= 2; N(B)= 1; N(C)= 3; N(D)= 1。
最初,P(A) <子> 0 子> = 54(50 + 0 + 2 * 2); P(B) <子> 0 子> = 52,P(C) <子> 0 子> = 56; P(d) <子> 0 子> 因此,A,B和D在Q上 <子> 13 子> ,C是Q. <子> 14 子> 。为了避免相反,D位于Q的前面 <子> 13 子> ,接着是B,接着是A.
对于下一个量程,调度程序选择Q前面的过程 <子> 13 子> 这是D. D为量子运行(最后有4个量子运行,E(D) <子> 1 子> = 1)。它放在Q的背面 <子> 13 子> ,下一个过程B,运行量子(所以E(B) <子> 2 子> = 1,它在贪睡之前还有2个量子。它放在Q的背面 <子> 13 子> 和A运行下一个量子,依此类推。
您需要设计一个“铅笔和纸”符号来记录正在发生的事情。
---- A ---- ---- B ---- ---- C ---- ---- D ---- t R P E S T P E S T P E S T P E S T Q13 Q14 0 D 54 0 R 1 52 0 R 3 56 0 R 10 52 0 R 5 D,B,A C 1 B 54 0 R 1 52 0 R 3 56 0 R 10 53 1 R 4 B,A,D C 2 A 54 0 R 1 53 1 R 2 56 0 R 10 53 1 R 4 A,D,B C 3 D 55 1 S 6 53 1 R 2 56 0 R 10 53 1 R 4 D,B,A C 4 B 55 1 S 5 53 1 R 2 56 0 R 10 54 2 R 4 B,A,D C
所以这个过程还在继续。最终,进程将为多个量子进入休眠状态(请注意,睡眠过程的剩余时间在每个量程上减少,而不是在可能已经被调度的时候),或者将会死亡(从不再次运行),等等。您需要小心地理解该线在量子开始时记录状态。