调度方式(按处理时钟中断分)
非抢占式:在运行的进程只有在该进程完成或发生某种事件(如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级队列按照时间片轮转的方式等待调度
特点:综合了前面几种算法的优点,短进程能够迅速完成,长进程不会长期得不到执行