3.1处理机调度的层次和调度算法的目标
处理机调度是对处理机资源进行分配,处理机调度算法是指根据处理机分配策略所规定的处理机分配算法。
3.1.1处理机调度的层次
作业进入系统驻留在外存的后备队列上,再至调入内存运行完毕,可能要经历下述三级调度
1.高级调度(长程调度、作业调度):
将外存的后备队列的进程调入内存,为他们创建进程、分配必要的资源,并将它们放入就绪队列。在多批道处理系统中存在,分时(立即进内存)和实时系统不需要。
作业调度的主要任务:
接纳多少作业——取决于多道程序度
接纳哪些作业——取决于采用的调度算法
2.低级调度(短程调度、进程调度):
根据某种算法,决定就绪队列的哪个进程获取CPU。是最基本的一种调度,在三种基本OS中都有
进程调度的任务、机制和方式:
(1)进程调度的任务
①记录系统中所有进程的有关情况(记录在PCB中)
②确定分配处理机的原则(算法)
?分配处理机给进程(保存、更新CPU现场)
④从进程收回处理机
(2)进程调度机制
①排队器(各类队列的排列次序)
②分派器(分配CPU给进程)
?上下文切换器:
两对上下文切换:a、保存当前进程的上下文到PCB,装入分派程序的上下文 b、移出分派程序的上下文,装入新进程的CPU现场信息(方法:两组寄存器,一组供系统态使用,另一组供应用程序使用)
(3)进程调度方式及其比较:
3.中级调度(内存调度):
目的:提高内存的利用率和系统的吞吐量根据条件将一些进程调入或再调出内存(挂起和唤醒)
三种调度的比较:
进程调度什么时候发生:
Ⅰ、正在执行的进程结束
Ⅱ、正在执行的进程阻塞
?、正在执行的进程未完成转就绪(时间片完)
Ⅳ、就绪了更高优先级的进程(抢占式)
3.1.2处理机调度算法的目标
问:什么算法是好算法?
答:不同的情况和对象需求不同,适用的方式和算法也不同。
1)面向用户的准则
①周转时间短: (针对批处理,作业从提交到完成所经历的时间)
cup执行时间:Ts
总的等待时间Tw=在后备队列中的等待+就绪队列上等待+阻塞队列中等待(等待I/O操作用时)
周转时间 T=Ts+Tw 带权周转时间 W= T/Ts
作为用户:希望自己作业的周转时间最短
作为计算机管理者:希望平均周转时间最短
②响应时间快:针对分时系统。用户输入一个请求(如击键)到系统给出首次响应(如屏幕显示)的时间
?均衡性:系统响应时间的快慢与用户所请求的复杂性相适应。
④截止时间的保证:针对实时系统的性能指标。开始截止时间和完成截止时间。任务必须按规定的时间开始或完成,调度方式和算法必须能保证该要求。
?优先权准则:三大基本OS在调度算法的选择时都可遵循。可以使关键任务达到更好的指标。
2)面向系统的准则
系统吞吐量高:批处理系统的重要指标。
单位时间内所完成的作业数,跟作业本身(与作业平均长度密切相关)和调度算法都有关系;
处理机利用率好(主要针对大中型主机)
各类资源的平衡利用(主要针对大中型主机)
不同系统需求各有侧重
1)批处理系统
平均周转时间短
系统吞吐量高
处理机利用率好
2)分时系统
响应时间快
均衡性
3)实时系统
截至时间的保证
可预测性
3.2调度算法
进程调度描述工具:
Gantt(甘特)图:常用水平线段来描述每个进程的进度。可以表示每个进程的开始时间和完成时间,线段的长度表示进程完成所需要的时间。
调度的实质是一种资源分配
1.先来先服务(FCFS)调度算法
最简单的调度算法,既可用于作业调度,也可用于进程调度。
按照作业提交,或进程变为就绪状态的先后次序分派CPU;
新作业只有当当前作业或进程执行完或阻塞才获得CPU运行
被唤醒的作业或进程不立即恢复执行,通常等到当前作业或进程出让CPU。 (默认是非抢占方式)
有利于CPU繁忙型的作业,而不利于I/O繁忙的作业(进程)(即不利于短作业)
2.短作业(进程)优先调度算法SJF/SPF
根据作业的长短在就绪队列中排好队,若采取非抢占方式则根据队列顺序依次执行;若为抢占方式,时间片完或新进程的作业比执行态的作业长度短,则抢占当前正在执行的进程,被抢占进程按照时间长短在就绪队列排队等待。(特别注意就绪队列中的排队情况)
优点:有效的降低作业的平均等待时间,提高系统吞吐量
缺点:
①对短作业有利,但同时造成了对长作业的不利。
②由于作业(进程)的长短含主观因素,不一定能真正做到短作业优先。
③未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)的及时处理。
与优先级有关的算法:
优先级的类型:
①静态优先级:在创建进程时确定,在进程的整个运行时期保持不变
②动态优先级:创建进程时赋予的优先权可随进程的推进或随其等待时间的增加而改变
优先权的依据:
①进程类型:一般来说,系统进程高于用户进程。
②进程对资源的需求:如进程的估计时间及内存需要量的多少,对要求少的进程赋予较高优先权。
③用户要求:由用户进程的紧迫程度及用户所付费用的多少来确定优先权的。
3.高优先权优先调度算法HPF
照顾紧迫性作业,使其获得优先处理而引入调度算法。常用于批处理系统中的作业调度算法,以及多种操作系统中的进程调度算法
分两种方式:
①非抢占优先权算法
②抢占式优先权算法(新作业产生时)
4.高响应比优先调度算法HRRN
HRRN为每个作业引入动态优先权,使作业的优先级随着等待时间的增加而以速率a提高:
优先权 =(等待时间+要求服务时间)/要求服务时间= 响应时间 / 要求服务时间
同时到达的作业优先权相同(利于短作业同时对长作业也有照顾),当执行时间相同的作业,优先权的高低决定于其等待时间的长短,也就是先来先服务。
问:什么时候计算各进程的响应比优先权?
答:需要进行调度选择的时候比较各自优先权
5.基于时间片的轮转调度算法RR
分时系统需要及时相应用户的请求
做法:
将系统中所有的就绪进程按照FCFS原则,排成一个队列。
每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。(太少会导致频繁切换增加系统的开销,太长将退化为FCFS算法)
(影响时间片长度的主要因素:系统的处理能力和系统的负载状态)
在一个时间片结束时,发生时钟中断。
调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前就绪的队首进程。
进程阻塞情况发生时,未用完时间片也要出让CPU。
不足:能够及时响应,但没有考虑作业长短等问题
6.多级反馈队列算法FB
特点:多个就绪队列,循环反馈;动态优先级、时间片轮转
方法:
设置多个就绪队列,各队列有不同的优先级,优先级从第一个队列依次降低。赋予各队列进程执行时间片大小不同, 优先权越高,时间片越短。
新进程进入内存,引发调度:
①准备调度:先将它放入第一个队列的末尾,按FCFS原则排队等待调度。
②IF时间片内完成,便可准备撤离系统;
③IF时间片内未能完成,调度程序便将该进程转入第二队列的末尾等待再次被调度执行。
④当第一队列中的进程都执行完,系统再按FCFS原则调度第二队列。在第二队列的稍放长些的时间片内仍未完成,再依次将它放入第三队列。
⑤依次降到第n队列后,在第n队列中便采取按时间片轮转的方式运行。
高优先级抢占问题:
第i队列中为某进程正占有CPU,又有新进程进入优先权较高的队列(第1~i-1队中),则被抢占的进程放回原就绪队列末尾
各算法的运算:
几种常见调度算法的比较: