进程调度

调度方式(按处理时钟中断分)

非抢占式:在运行的进程只有在该进程完成或发生某种事件(如I/O请求)的情况下才会释放CPU,这样做的结果是发生时钟中断时不会发生调度

抢占式:进程在CPU上执行时,有一个更紧迫的进程需要使用CPU,则立即暂停正在执行的进程。

调度算法

1.先来先服务(非抢占式)

思想:进程按照请求CPU的顺序使用CPU

特点:易于理解并且实现简单,有利于长进程,不利于短进程,适合CPU繁忙的进程,不适合I/O繁忙的进程,系统吞吐量不高

2.最短作业(进程)优先(非抢占式)

思想:当就绪进程的运行时间可预知时,将运行时间短的进程排在前面,长的进程排在后面

特点:改善平均周转时间,提高系统吞吐量,有利于短进程,非常不利于长进程,难以预知进程的运行时间

3.最高响应比优先法:

思想:先来先服务和最短作业优先的平衡,先来先服务只考虑进程的等待时间而未考虑运行时间,而最短作业优先只考虑执行时间而未考虑等待时间。响应比R=(等待时间+执行时间)/执行时间,相应比高的就绪进程先运行。

特点:对于长进程,响应比可以随等待时间的增加而提高,从而也可以获得优先处理机会。同时,计算相应比带来了一定的系统开销。

4.时间片轮转调度(抢占式)

思想:将进程按照先来先服务原则,排成一个就绪队列,队列有一个固定的时间片,每个进程允许其一个时间片内运行。当其时间片用完时,即使进程未执行完毕,系统也剥夺该进程的CPU,将该进程排在就绪队列末尾。如果该进程在时间片内阻塞或结束,CPU立即进行切换。

特点:时间片设得太短导致过多的进程切换,降低CPU效率,设得太长,则退化成了先来先服务

时间片大小的确定:

  1.系统对响应时间 
  2.就绪中进程的数目
  3.系统的处理能力

5.优先级调度

思想:每个进程被赋予一个优先级,优先级高的就绪进程先运行。

静态优先级:优先级保持不变 

动态优先级:优先级可以动态变化

优先级的确定:

  1.进程的类型:通常系统进程高于一般用户进程;交互型的用户进程高于批处理作业对应的进程 
  2.进程对资源的需求:进程的估计运行时间及内存需求量少的进程,优先级应较高,有利于缩小平均周转时间 
  3.根据用户需求:用户根据紧迫程度来指定一个合适的优先级

6多级反馈队列(UNIX操作系统采取的调度)

思想:

  1.设置多个就绪队列,第一级队列优先级最高,然后优先级逐级下降,优先运行优先级高的队列,即使某时刻低优先级队列有进程正在运行,若此时有新进程进入高优先级队列,则新进程抢占CPU,原本在运行的进程停止,放到其队列的末尾

  2.各个队列有一个时间片,优先级越高的队列的时间片就越短,通常短作业优先级高,因为短进程能够迅速完成

  3.一个新进程需要运行时,先插入第一队列的末尾,按照先来先服务的原则等待调度。如果某个进程可在一个时间片内完成,那么结束此进程;如果某个进程在一个时间片内无法完成,就把此进程转入下一级队列的末尾,按照先来先服务原则等待调度,一直到第n-1级队列。当一个很长的进程从第1级一直掉到第n级队列,那么它在第n级队列按照时间片轮转的方式等待调度

特点:综合了前面几种算法的优点,短进程能够迅速完成,长进程不会长期得不到执行

原文地址:https://www.cnblogs.com/Joezzz/p/9630953.html