目录
基础知识
-
衡量调度策略
-
周转时间、吞吐率、响应时间、设备利用率
-
-
周转时间:作业提交到作业完成的时间
-
平均周转时间 = 总周转时间/N个作业
-
平均带权周转时间=总带权周转时间/N个作业
-
-
响应时间:
处理机调度
-
调度
-
对处理机进行分配,即从就绪队伍按照一定的算法选择一个进程并将处理机分配给它运行
-
-
三层调度
- 作业调度(高级)
- 作业的状态及其转换
- 作业的状态及其转换
- 交换调度(中级)
- 进程调度(低级)
- 引起进程调度的方式
- 不可剥夺方式(如果想将处理机分配给一个更高优先级的进程,必须要等待当前占用处理机的进程释放处理机后才能将处理机分配给更高优先级进程)
- 正在执行的进程执行完毕
- 执行中的进程自己调用阻塞原语将自己阻塞进入睡眠等待状态(阻塞)
- 执行中的进程调用P原语从而因资源不足而阻塞(阻塞);或某一进程调用V原语激活了等待资源的进程队列(相当于规则);
- 执行中的进程提出I/O请求后被阻塞(阻塞)
- 在分时系统中时间片用完(不同的书不同,也有说是抢占)
- 在执行完系统调用后调度选择一新的用户进程
- 特点:实现简单,开销小,适合大多数批处理系统。但不适用于分时系统,和大多数实时系统
- 可剥夺方式(如果有更高级进程请求小理机,暂停正在执行的进程,将处理机分配给更高级进程)
- 就绪队列中的某进程的优先级变得高于当前执行进程的优先级
- 特点:提高系统吞吐率和响应效率
- 不可剥夺方式(如果想将处理机分配给一个更高优先级的进程,必须要等待当前占用处理机的进程释放处理机后才能将处理机分配给更高优先级进程)
- 进程调度的功能
- 记录系统中所有进程的执行情况PCB
- 选择占有处理机的进程
- 进程上下文切换
- 引起进程调度的方式
- 作业调度(高级)
-
调度算法
- 作业调度算法
- 先来先服务调度(FCFS)
- 每次从就绪队列中选择最先进入该队列的进程将处理机分配给它,直到完成或阻塞时才释放处理机
- 优点:算法简单长作业有利有利于CPU繁忙型作业(计算型)
- 缺点:效率低不利于短作业不利于IO繁忙型作业
- 饥饿(短作业吃亏容易造成短作业饥饿)
- 最短作业优先法(SJF)
- 优先先择预计运行时间最短的进程分配处理机
- 优点:平均等待时间平均周转时间最短
- 缺点:对长作业不判,造成饥饿现象,没有考虑作业的紧迫性,用户可能可以缩短作业页估时间,使得无法做到短作业优先
- 饥饿(长作业容易饥饿)
- 最高响应比优先算法(HRN)
- 每次作业调度时,先计算后备作业队伍中每个作业响应比,选出响应比最高的作业运行
- 响应比:响应比=(等待间+要求服务时间)/要求服务时间=1+等待时间/要求服务时间(求法和平均带权周转时间相同,但是性质不一样)
- 等待时间相同情况下,要求服务时间越短响应比越大,有利于短作业进程;对于长作上,作业的响应比可以随等待时间的增加而提高,等待时间足够长时,其响应比可以升到很高,从而获得处理机
- 不会导致饥饿、非抢占式的算法
- 例题:求响应比
- 一个作业9:30到达系统,估计运行时间为2h,若11:30执行该作业,其响应比是:2
- 等待:2h、运行时间2h、响应比=(2+2)/2=2
- 优先级调度算法
- 每次从后备作业队伍中选择优先级最高的一个或几个作业分配处理机
- 饥饿(静态:某一进程优先级最初很低容易饥饿)
- 分类
- 剥夺型:立即停止当前运行进程,将处理机分配给更高优先级进程
- 非剥夺型:等待当前进程运行完成,然后将处理机分配给更高优先级进程
- 优先级分类
- 静态法:进程创建后无法对优先级进行修改
- 静态优先级设置原则
- 用户根据作业的紧急程度输入一个适当的优先级
- 由系统或操作员根据作业的类型制定优先级>I/O繁忙的作业>I/O与CPU繁忙的作业>CPU繁忙的作业
- 系统根据作业要求资源情况确定优先级
- 静态优先级设置原则
- 动态法:可以根据进程运行状态,对进程优先级进行动态调整
- 静态法:进程创建后无法对优先级进行修改
- 先来先服务调度(FCFS)
- 进程调度算法
- 时间片轮转法(不在作业调度中使用)
- 适用于分时系统(实现人机交互),使用时间片,就绪进程按照到达先后排成队列,依次在时间片内占用处理机,时间片到达时就释放处理机
- 响应时间/进程数(最大)=时间片长度
- 时间片影响因素
- 系统响应时间,就绪队列中的进程数目和系统的处理能力(进程切换时间和时间片之间会被规定具体的比值)
- 时间片选择很重要,过大就变成了先来先服务,过短会浪费资源(运行中有打扰,会调用资源)
- 不会导致饥饿、抢占式
- 缺点:时间片大小固定,不够灵活
- 改进:新一轮调度开始之前进行重新计算时间片的值(q)-固定周期轮转法
- 固定周期轮转法(和时间片轮转法类似)
- 时间片可变,根据就绪队列进行调整
- 每一轮确定的时间片仅在这一轮有效
- 多级反馈轮转法
- 实现思想
- 设置多个就绪队列(创建、阻塞、执行态可以到就绪态),为每个队列设置不同的优先级,优先级依次递减
- 执行态因为时间片用完可能进入就绪态,实践片未用完但是因IO请求、进程的互斥与同步关系而被阻塞,之后由阻塞态进入就绪态
- 每个队列中的时间片各不相同,时间片依次递增
- 每个队列按照先来先服务原则进行进程排队,若规定时间片内没有完成,就将进程放入下一级队列
- 只有到高级队列为空的时候,低等级队列才能开始调度
- 优点
- 终端型作业用户:短作业优先
- 短批处理作业用户:周转时间较短
- 长批处理作业用户:经过前面几个队列得到部分执行,不会长期得不到处理
- 可能饥饿、抢占式
- 实现思想
- 优先级法
- 最常用的进程调度方法
- 静态法
- 根据进程类型赋予不同的优先级,在其生命周期中一直保持不变
- 优先级原则
- 系统进程>用户进程(系统进程:调度进程,中断处理进程,存储管理进程等;用户进程:IO繁忙进程,CPU繁忙进程,IO与CPU繁忙的进程)
- 交互型进程>非交互型进程
- I/O进程>计算型进程(CPU繁忙型)
- 动态法
- 进程建立时,由系统先赋予进程一个初始的级别,然后在其以后的生命周期可以动态变化
- 确定原则
- 根据进程占有CPU时间的长短来决定
- 根据就绪进程等待CPU的时间长短来决定
- 时间片轮转法(不在作业调度中使用)
- 作业调度算法