纸和铅笔的例子

我似乎无法找到一个很好的在线多级反馈队列示例,展示将会发生什么。 我不一定需要回答整个问题,只需要如何进行几次迭代,就可以得出以下问题:

  • 过程A:p好= 2,运行0.1s,睡0.6s,运行0.2s
  • 过程B:p nice = 1,运行0.3s,睡眠1.0s,运行0.3s
  • 进程C:p nice = 3,运行1.0s
  • 过程D:p nice = 1,运行0.5s
  • 使用所描述的调度算法执行铅笔和纸张调度,并记下每个上下文切换下一个要运行的进程的名称。 假定进程在计划运行后立即休眠或退出(即,如果进程在0.1秒后退出,它将被调度两次),并且进程在发生上下文切换之前立即唤醒。 假设系统的负载是0.5。 将计算的每一步都舍入到小数点后两位。

    调度程序分配的进程优先级范围介于0到127之间,其中0最高。 内核进程可以具有0-49之间的优先级,并且用户进程可以使用优先级50-127。 准备好执行的进程驻留在32个运行队列之一中,每个运行队列包含4个相邻优先级进程(prio / 4 =运行队列)。 运行队列中的进程不会进一步排序。

    在每个上下文切换中,选择最高优先级队列头部的进程来执行。 在每个量子(0.1s)之后,当前运行的过程被切换出上下文。 调度程序将该进程从其原始队列的头部中移除,并调整其优先级(如果需要,请参见下文),并将其放在它所属的队列的末尾(因为它的优先级可能已更改)。 然后对包含可运行进程的最高优先级队列重新扫描运行队列。

    当一个进程被创建时,它以一个基本优先级开始(对于一个用户进程,我们称它为PUSER将其设置为50)以及估计的cpu利用率(estcpu)为0.0。 每进程执行一个量程,其estcpu增加1.在一个过程执行了4个量程后,其优先级按照以下公式重新计算:Prio = PUSER +(estcpu / 4)+ 2 * p_nice(注意:Prio不会小于PUSER)其中p_nice是创建进程时指定的值。 它的范围可以从-20到19,但对于用户进程,指定负值将被忽略,并且默认为0。

    编辑::这是我对这个问题的答案,有人会关心看看这个吗?

    或链接:http://imgur.com/jJVD3AC


    首先要做的是设置起始状态并定义参考条款。 P(X)t将成为过程X在量子t处的优先级; E(X)t将是过程X在量子t处的估计CPU使用量; T(X)t将成为下一个状态改变之前剩余的量子数。 S(X)t将是进程的状态 - R =可运行,S =睡眠,D =死亡。 过程X具有良好性N(X)。 有多个队列,Qn是优先级n ... n + 3的队列。 我们正在处理用户进程,因此每个进程X按优先级P(X)t = PUSER + E(X)t / 4 + 2 * N(X)进行调度,初始估计CPU由E )0 = 0。

    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 = 52.因此,A,B和D在Q13上,而C在Q14上。 为了避免碰撞,D在Q13的前面,然后是B,然后是A.

    对于下一个量子,调度器选择Q13前面的过程,即D.D为量子运行(并且剩下4个量子在末尾运行,E(D)1 = 1)。 它放在Q13的后面,下一个过程B运行一个量子(所以E(B)2 = 1,在它打盹之前剩下2个量子,放在Q13的后面,和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
    

    并继续进行下去。 最后,进程将进入睡眠状态(注意每个量程的睡眠过程剩余时间减少,而不是预定的时间),或死亡(不再运行)等。您需要要小心了解该行记录了量子开始时的状态。

    链接地址: http://www.djcxy.com/p/84831.html

    上一篇: Paper & Pencil example

    下一篇: ready queue(why queue specifically)?