处理机调度

1.概述

 处理机调度就是说从就绪队列中挑选下一个占用CPU运行的进程,在多CPU的情况下,还要挑选就绪进程可使用的CPU资源。

  

2.调度算法

 1)先来先服务算法

 如名字所描述的,谁先到,谁就先占用CPU。简单,但性能差。

  

2)短进程优先算法

 谁占用时间短,谁就先执行。具有最优平均周转时间,但可能导致饥饿,即连续的短进程流会使长进程无法获得CPU资源。而且下一个需要预知未来,即需要预估下一个CPU计算的持续时间,这里使用历史的执行时间来预估未来的执行时间。

3)最高响应比优先算法

 在短进程优先算法的基础上,执行响应比R值(图中有描述)最高的进程。避免了上述的饥饿现象的发生。

 

4)时间片轮转算法

 确定一个固定大小的时间片,然后按先到先服务的次序对就绪队列中的每个进程执行这个相同大小的时间片,如果进程所需时间小于时间片,则执行完该进程后就调度到就绪队列中下个进程执行;如果在时间片内进程没有执行完,则停止当前进程,切换到下个进程运行。在下一轮的调度中继续运行。

 

  

5)多级队列调度算法

 把就绪队列分为多个子队列,每个子队列内部有自己的调度算法,队列间采用时间片轮转算法。

 

6)多级反馈队列调度算法

  优先级高的队列获得的时间片比优先级低的队列获得的时间片要小。如果进程在当前时间片内没有完成,则降到下一个优先级。新进来的进程放到最高的优先级。特征为 CPU密集型进程的优先级下降很快,I/O密集型进程停留在高优先级。是多种算法的集成。

7)公平共享调度

 公平是第一要素。

 

3.实时调度

  

4.多处理器调度

(下图 对称多处理器调度的第一句 应该是 每个处理器运行自己的调度程序)

 

5.优先级反置

 三个进程优先级T2>T3>T1, T2和T1运行要使用共享资源L1。开始的时候T1运行,T2,T3为阻塞状态,等待事件发生。T2等待的事件发生后,转为就绪状态,因其优先级高,所以抢占T1的CPU,但共享资源在T1那,所以处于阻塞状态,T1继续运行。此时T3就绪,抢占CPU,且运行完之后才轮到T1运行,最后T2运行。虽然优先级T2>T3,但T3先于T2运行,所以优先级反置。(下图中应该是 T3的长时间运行导致高优先级的T2进行长时间等待)

 只有基于优先级的可抢占调度算法存在优先级反置的情况

 

 解决办法:优先级继承和优先级天花板协议。但真实的系统所采用的办法与此有很大出入。

 

  

 

  

posted @ 2016-05-28 16:21  kk_kk  阅读(436)  评论(0编辑  收藏  举报