考虑下面的基于动态改变优先级的可抢占式优先权调度算法。大的优先权数代表高优先级。当一个进程在等待CPU时(在就绪队列中,但未执行),优先权以α速率改变;当它运行时,优先权以p速率改变。所有的进程在进入就绪队列被给定优先权数为O。参数a和p可以设定给许多不同的调度算法。下列( )设定可以实现进程FIFO (First In First Out)。
【正确答案】 A
【答案解析】解析:假设进程M先于进程N进入就绪队列。PM和PN分别表示M和N的优先权数。 在β>α>0设定下,在就绪队列中,PM>PN,原因是α>0,则越早进入就绪队列,优先数就越大,所以是FCFS (First Come First Service)。又因为β>α,所以在M运行时,PM增长速度大于PN的增长速度,则PM>PN,从而保证了M进程先于N进程完成,即FIFO(First In First Out)。 在α>β>0设定下,还是FCFS,原因跟β>α>0 —样。但由于α>β,所以在M运行时,无法保证PM仍然大于PN,即无法保证FIFO。 在β<α<0设定下,在就绪队列中,PM<PN,原因是α<0,则越早进入就绪队列,优先数就越小,所以是LCFS (Last Come First Service)。又因为β<α,,所以在N运行时,PN下降速度大于PM的下降速度,有可能出现PM>PN的情况,此时CPU就有可能被M抢占,无法保证LIFO (Last In First Out)。 在α<β<0设定下,还是LCFS,原因跟β<α<0—样。但由于α<β,在N运行时,PN的下降速度变慢了,从而保证了PN始终大于PM,导致N进程先于M进程完成,即LIFO。 所以本题的答案选A。本题通过对α、β的设置实现更多的调度方式,有兴趣的同学可以再思考下,比如α<α<β的情况等。