提交 a04d4475 编写于 作者: W wyfcyx

deploy: 2a6700b9

上级 763e4e6d
......@@ -292,7 +292,7 @@ MLFQ调度策略的关键在于如何设置优先级。一旦设置进程的好
那如何动态调整进程的优先级呢?首先,我们假设新创建的进程是I/O密集型的,可以把它设置为最高优先级。接下来根据它的执行表现来调整其优先级。如果在分配给它的时间配额内,它睡眠或等待I/O事件完成而主动放弃了处理器,操作系统预测它接下来的时间配额阶段很大可能还是具有I/O密集型特征,所以就保持其优先级不变。如果进程用完了分配给它的时间配额,操作系统预测它接下来有很大可能还是具有CPU密集型特征,就会降低其优先级。
这里的时间配额的具体值是一个经验值,一般是时间片的整数倍。
这样,如果一个进程的执行时间小于分配给它的一个或几个时间配额,我们把这样的进程称为短进程。那么这个短进程会以比较高的优先级迅速地结束。而如果一个进程有大量的I/O操作,那么一般情况下,它会在时间配额结束前主动放弃处理器,进入等待状态,一旦被唤醒,会以原有的高优先级继续执行。如果一个进程的执行时间远大于几个时间配额,我们把这样的进程称为长进程。那么这个进程经过一段时间后,会处于优先级最底部的队列,只有在没有高优先级进程就绪的情况下,它才会继续执行,从而不会影响交互式进程的响应时间。
这样,如果一个进程的执行时间小于分配给它的一个或几个时间配额,我们把这样的进程称为短进程。那么这个短进程会以比较高的优先级迅速地结束。而如果一个进程有大量的I/O操作,那么一般情况下,它会在时间配额结束前主动放弃处理器,进入等待状态,一旦被唤醒,会以原有的高优先级继续执行。如果一个进程的执行时间远大于几个时间配额,我们把这样的进程称为长进程。那么这个进程经过一段时间后,会处于优先级最底部的队列,只有在没有高优先级进程就绪的情况下,它才会继续执行,从而不会影响交互式进程的响应时间。
这样,我们进一步扩展了MLFQ的基本规则:
......
......@@ -605,7 +605,7 @@
由于会动态调整进程的优先级,所以,操作系统首先需要以优先级的数量来建立多个队列。当然这个数量是一个经验值,比如Linux操作系统设置了140个优先级。</p>
<p>那如何动态调整进程的优先级呢?首先,我们假设新创建的进程是I/O密集型的,可以把它设置为最高优先级。接下来根据它的执行表现来调整其优先级。如果在分配给它的时间配额内,它睡眠或等待I/O事件完成而主动放弃了处理器,操作系统预测它接下来的时间配额阶段很大可能还是具有I/O密集型特征,所以就保持其优先级不变。如果进程用完了分配给它的时间配额,操作系统预测它接下来有很大可能还是具有CPU密集型特征,就会降低其优先级。
这里的时间配额的具体值是一个经验值,一般是时间片的整数倍。</p>
<p>这样,如果一个进程的执行时间小于分配给它的一个或几个时间配额,我们把这样的进程称为短进程。那么这个短进程会以比较高的优先级迅速地结束。而如果一个进程有大量的I/O操作,那么一般情况下,它会在时间配额结束前主动放弃处理器,进入等待状态,一旦被唤醒,会以原有的高优先级继续执行。如果一个进程的执行时间远大于几个时间配额,我们把这样的进程称为长进程。那么这个进程经过一段时间后,会处于优先级最底部的队列,只有在没有高优先级进程就绪的情况下,它才会继续执行,从而不会影响交互式进程的响应时间。</p>
<p>这样,如果一个进程的执行时间小于分配给它的一个或几个时间配额,我们把这样的进程称为短进程。那么这个短进程会以比较高的优先级迅速地结束。而如果一个进程有大量的I/O操作,那么一般情况下,它会在时间配额结束前主动放弃处理器,进入等待状态,一旦被唤醒,会以原有的高优先级继续执行。如果一个进程的执行时间远大于几个时间配额,我们把这样的进程称为长进程。那么这个进程经过一段时间后,会处于优先级最底部的队列,只有在没有高优先级进程就绪的情况下,它才会继续执行,从而不会影响交互式进程的响应时间。</p>
<p>这样,我们进一步扩展了MLFQ的基本规则:</p>
<ol class="arabic simple" start="3">
<li><p>创建进程并让进程首次进入就绪队列时,设置进程的优先级为最高优先级。</p></li>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册