我有这样的问题:
某个系统的测量表明,平均过程在阻塞IO之前运行了一段时间。过程切换需要时间S,这有效地浪费(开销)。对于使用量子Q的循环调度,请为以下每个
提供CPU效率的公式( a ) Q = INFINITY
( b ) Q > T
( c ) S < Q < T
( d ) Q = S
( e ) Q -> 0
我知道怎么做a,b,d和e,但是对于c,答案是T /(T + S * T / Q)= Q /(Q + S)。这意味着上下文切换发生的总时间是T / Q,这让我感到困惑,比如说T = 3,Q = 2,进程运行2个单位并切换到另一个进程,然后再切换回执行并完成,然后再次切换到另一个过程,所以它是2个开关,即=屋顶(T / Q);但根据答案,只有1个转换,所以在1轮和2轮比赛中没有什么不同?任何人都可以向我解释一下CPU的效率究竟是什么。
答案 0 :(得分:2)
您的问题没有说明被IO阻止时调度程序切换的任何内容,所以我不是您提供的答案是正确的。它没有考虑到当IO阻止进程时CPU被浪费的事实。让我们看一个包含2个进程的示例:
repeat floor(T/Q) times:
Process 1 runs (Q units of time)
Context switch to process 2 (S units of time)
Process 2 runs (Q units of time)
Context switch to process 1 (S units of time)
if T mod Q > 0
Process 1 runs (T mod Q units of time) then blocks to IO
CPU is idle (Q - T mod Q units of time)
Context switch to process 2 (S units of time)
Process 2 runs (T mod Q units of time) then blocks to IO
CPU is idle (Q - T mod Q units of time)
Context switch to process 1 (S units of time)
Total time elapsed = 2(Q+S)*ceiling(T/Q)
Total time processes were running = 2T
Efficiency = T/((Q+S)*ceiling(T/Q))
如果调度程序在进程被阻止后切换,则:
repeat floor(T/Q) times:
Process 1 runs (Q units of time)
Context switch to process 2 (S units of time)
Process 2 runs (Q units of time)
Context switch to process 1 (S units of time)
if T mod Q > 0
Process 1 runs (T mod Q units of time) then blocks to IO
Context switch to process 2 (S units of time)
Process 2 runs (T mod Q units of time) then blocks to IO
Context switch to process 1 (S units of time)
Total time elapsed = 2T + 2*S*ceiling(T/Q)
Total time processes were running = 2T
Efficiency = T/(T+S*ceiling(T/Q))
因此,如果我们假设调度程序在被阻止时切换,那么你得到的答案就是错过了ceiling()部分。如果我们假设T总是Q的倍数,那么你甚至不需要它。不知道你的问题是怎么说的。
另一方面,我认为你是重复计算上下文切换,因为你是从一个进程的角度来看它。当您考虑调度多个进程时,每个运行的量程应该有一个上下文切换的事实变得更加明确。
答案 1 :(得分:0)
CPU效率是指CPU执行某些有用操作(即不切换)的时间百分比。你的公式没有提出任何关于完成了多少次开关的事情,只是花费了多少时间而不是切换。
答案 2 :(得分:0)
我最终得到[(T ^ 2)/(Q)] / [(T ^ 2)/(Q)+(S *((T / Q)) - (1 / P))]。使用P作为进程数。这是执行的总时间除以总时间(包括开关):
执行总时间:P [(T / Q)*(T)],T / Q是每个进程必须运行的次数。然后再次乘以T以获得总时间处理。
切换时间:P [((T / Q)*(S)) - S / P],T / Q * S,因为我们需要总切换时间,但现在我们在最后一个过程完成后计数切换(额外的计数)所以我们减去S / P.
总时间:执行时间+切换时间或P [(T ^ 2)/(Q)] + P [((T / Q)*(S)) - (S / P)]
效率:[(T ^ 2)/(Q)] / [(T ^ 2)/(Q)+(S *((T / Q)) - (1 / P))]注意P的下降
Wolfram Alpha正确显示:Wolfram Eval