分为几个单独的任务队列,每个队列有各自的优先级
优先级必须动态分配,防止高优先级任务长期占用CPU资源
任务刚到达时,予以最高的优先级
假定每一个刚到达的任务是短任务,让其运行一段时间<br>若其的确是短任务,则很快结束<br>若其为长任务,则会被降低优先级
根据任务的运行情况决定优先级变化
若任务一直占用CPU<br>表明其为CPU使用密集型任务<br>应当降低优先级
若任务用尽了一个时间片却仍未停止<br>则降低其优先级
若一个任务频繁切换I/O<br>则认为是交互型程序<br>应当保持其优先级不变
若任务在时间片用尽前放弃CPU<br>则保持其优先级不变
带来两个问题
若队列中有过多交互型程序<br>CPU将被一直占据<br>长任务没有机会执行
若某交互程序故意在时间片结束前放弃CPU转而进行I/O<br>则其优先级会一直保持<br>从而独占CPU
给每个任务分配一定的时间,一旦用尽此时间,则无论其是否放弃CPU,都降低其优先级
即使某个任务故意在时间片之前放弃CPU以试图长期占据CPU资源,只要其用尽了所分配的时间,其优先级都会下降