共计 852 个字符,预计需要花费 3 分钟才能阅读完成。
过程调度,就是绪状态的过程取得 CPU 的使用权,过程由就绪状态转变成运行状态。
过程调度能够分为:
抢占式 零碎会依据过程的优先级高下来进行调度,过程之间能够插队
非抢占式 零碎依照先来先服务的形式来调度,过程间不能插队
过程调度算法有很多,比拟罕用的调度算法如下:
1、先来先服务 first come first serve(FCFS)
先来的过程先被调度,这种算法很偏心,然而如果执行的是一个长作业,那么前面的短作业将会被长时间搁置,造成短作业饥饿。
2、短作业优先 shortest job first(SJF)
为了防止短作业饥饿的状况,就优先把短作业都执行完,而后再执行长作业。这样又会引发另一个问题,那就是如果短作业十分多,那么容易导致长作业将不会被执行,又会造成长作业饥饿。
3、工夫片轮转 round serve(RS)
工夫片轮转就是轮询,定义一个工夫片的长度,而后均匀给每个过程调配工夫片,一旦工夫片用完,此时作业未执行完,作业就会从运行状态转变成就绪状态,期待被从新调度。如果作业比拟多,那这样容易造成长作业须要轮转良久能力执行完。
4、多级反馈队列
该算法设置了不同的队列,能够分类为高、中、低优先级队列,并且优先级越高,调配的工夫片就越短,反之优先级越低,调配工夫片越长。首先,先进来的作业会进入高优先级;如果没有被执行完,就会压入中优先级队列;如果还没执行完再压入低优先级队列。只有上一个队列的过程被执行完,能力执行以后队列的过程。
这种算法还是无奈无效防止长作业饥饿的状况,因为只有高优先级队列没有过程,才会执行下一级别的队列。如果上一级的队列始终有过程,那么下一级别的队列的过程将会饥饿。
5、高响应比优先
这种算法是在短作业优先调度算法的根底上,加上一个随着工夫累计而叠加的权重机制。
零碎会依据优先级来决定过程执行的先后,但同时为了确保那些等待时间长的过程也能被执行,那么就会联合过程期待的工夫来更新过程的权重。其中等待时间越长,那么权重越高。
这种算法既能够优先实现短作业,又能确保长作业不至于长期饥饿,是一个折中的算法。