3.3.1 进程调度的任务、机制和方式
1.进程调度的任务
1)保存处理机的现场信息
2)按算法选取进程
3)把处理机分配给进程
2.进程调度机制
1)排队器:将就绪进程按一定策略排成队列;
2)分派器:按调度算法选择进程,分配处理机;
3)上下文切换器:两次上下文切换
a.移出当前进程上下文,切入分配程序上下文;
b.移出分配程序上下文,切入新调度进程上下文;
3.进程调度方式
1)非抢占方式
此时引起调度的原因:
a)正在执行的进程运行完毕;
b) 正在执行的进程提出I/O操作而暂停;
c)正在执行的进程通信或同步过程执行原语操作,如阻塞原语;
2)抢占方式
若能抢占,必须遵循的原则:
a)优先权原则
b)短进程优先原则
c)时间片原则
3.3.2 轮转调度算法(RR)
1.轮转法的基本原理
2.进程切换时机
1)若时间片尚未用完正在运行的进程结束,则调度进程并启动一个新的时间片;
2)时间片用完时调度另外进程;
3.时间片大小的确定
时间片的大小对系统性能有很大的影响。
时间片太小:有利于短作业;但会频繁地发生中断、进程上下文的切换,从而增加系统的开销。
时间片太长:每个进程都能在一个时间片内完成退化为FCFS算法,无法满足交互式用户的需求。
例:A,B,C,D,E五个进程分别在0,1,2,3,4时刻到达系统,要求服务时间分别是4,3,4,2,4,时间片q为2,求每个时间片内进程运行情况。
3.3.3 优先级调度算法
1.优先级调度算法的类型
1)非抢占式优先级调度算法
2)抢占式优先级调度算法
2.优先权的类型
静态优先权 动态优先权
1) 静态优先权
静态优先权是在创建进程时确定的,且在进程的整个运行期间保持不变。
优先权用某一范围内的一个整数来表示:如,0~7或0~255中的某一整数,称为优先数。
有的系统用“0”表示最高优先权,当数值愈大时,其优先权愈低;而有的系统恰恰相反。
确定进程优先权的依据:
(1)进程类型。
系统进程、一般用户进程。
(2)进程对资源的需求。
(3)用户要求。
用户进程的紧迫程度。
优点:简单易行,系统开销小。
缺点:不够精确,可能出现优先权低的作业(进程)长期没有被调度的情况。
适用范围:要求不高的系统。
2) 动态优先权
创建进程时所赋予的优先权可以随进程的推进或随其等待时间的增加而改变的。
3.3.4 多队列调度算法
原理:将就绪队列从一个拆分成多个,不同的就绪队列设置不同的优先级。
3.3.5 多级反馈队列调度算法
(1)设置多个就绪队列,每个队列优先级不同、时间片也不同。
(2)新进程进入内存后,先放入第一队列的末尾按FCFS调度。
(3)仅当第一队列空闲时,调度程序才调度第二队列中的进程;以此类推。
3.多级反馈队列调度算法的性能
(1)终端型作业用户。
作业通常较小,系统只要能使这些作业(进程)在第一队列所规定的时间片内完成,便可使终端型作业用户都感到满意。
(2)短批处理作业用户。
与终端型作业类似,周转时间较短。
(3)长批处理作业用户。
作业依次在第1,2,…,n个队列中按轮转方式运行不必担心长期得不到处理。