操作系统 第八章调度

状态变化的时候会出现调度,特别是跟运行相关的状态变化

 

 

调度原则

评价调度性能的指标:

 

调度算法

周转时间=等待时间+处理时间

进程执行时间越短,优先级越高:

若是不可抢占,新来的放入就绪态,若是可抢占,旧的放入就绪态。

缺点:

预测下一个时刻会执行多少秒

 

如果考虑等待时间:

 

 

调度算法2:

让各个进程轮流调用cpu来执行

 

缺点:

好像FCFS还更好一点,因为FCFS离没有频繁地上下文切换,所以总的等待时间会降低,但它不能像RR,每一个进程及时得到响应

 

 

有没有更好的算法可以兼顾呢

设置多级队列:

将就绪进程分入很多队列,不同队列采用不同的调度算法,根据队列优先级来调度

 

多了一个反馈,进程的特征可以在队列中的位置有所反应,一旦用完一个时间片,就使其优先级降低,使得交互性比较好的,放入优先级比较高的队列里。使得IO密集型的任务,cpu密集型的任务逐渐放入优先级较低的队列里。

FFS重点强调公平

 

评价

 

实时调度

静态优先级调度:在任务执行之前,已经把优先级确定,根据优先级完成调度

动态优先级调度:在执行过程中,优先级会发生变化

两种调度算法:

多处理器调度和优先级反转:

(负载平衡,使得CPU任务比较均匀)

原因在于高优先级在等待低优先级处理共享资源的过程中,有另一个比低优先级级别要高的进程来了。

把T3的优先级提高,比T2要高