1 处理机调度层次和调度算法的目标
1.1 处理机调度层次
-
高级调度
高级调度的对象是作业,根据某种算法,决定将外存上处于后备队列中的哪几个作业调入内存。 -
低级调度(频率最高)
低级调度的对象是进程(或者内核级线程);根据某种算法,决定就绪队列中的哪个进程应该获得处理机,并由分派程序将处理机分配给被选中的进程 -
中级调度
又叫内存调度,目的是为了提高系统的利用率和系统吞吐量
1.2 处理机调度算法的目标
-
处理机调度算法的共同目标
① 资源利用率:CPU利用率=CPU有效工作时间 /(CPU有效工作时间+CPU空闲等待时间)
② 公平性:指使诸进程都获得合理的CPU时间,不会发生饥饿现象
③ 平衡性:有些进程是计算类型,有些是IO型,应该充分俺拍,保证系统资源使用的平衡性
④ 策略强制执行:对一些安全性策略,只要需要就必须执行,尽管开销很大 -
批处理系统的目标
① 平均周转时间短:
周转时间:从作业提交到系统开始,到作业完成为止;作为计算机系统的管理者,总希望平均周转时间短
② 系统吞吐量高:单位时间内完成的作业数
③ 处理机利用率高 -
分时系统目标
① 响应时间快
② 均衡性 -
实时系统的目标
① 截至时间的保证:就是某任务必须开始执行的最迟时间
② 可预测性:第i帧播放,第i+1帧应该已经读入缓存,这样更好的保证实时性
2 作业与调度
2.1 批处理系统的作业
- 作业和作业步
① 作业:以作业为基本单位从外存调入内存的
② 作业步 - 作业控制块:JCB
作业在系统中的标志 - 作业运行的三种状态:收容(用户提交作业通过某种方式提交到系统硬盘,再为其建立作业块),运行,完成
2.2 作业调度的主要任务
- 接纳多少个作业:作业越多,系统CPU的利用率及吞吐量越高
- 接纳哪些作业:(作业调度算法)
2.3 FCFS || SJF
- FCFS:先来先服务
- SJF:短作业优先
*高响应比优先级调度算法
优先权=等待时间+要求服务时间/要求服务时间
① 如果作业的等待时间相同,则要求服务的时间俞短,优先级越高,因而类似于SJF算法,有利于短作业
② 当要求服务的时间相同时,作业的优先级取决于其等待时间,又类似于FCFS算法
③ 对于长作业的优先级,可以随等待时间的提高,够长时从而获得处理机
3 进程调度
3.1 进程调度的任务、机制和方式
-
进程调度的任务
① 保存处理机的现场信息
② 按照某种算法选取进程,从就绪队列中选取进程后,将其状态改为运行状态,并准备把处理机分配给她
③ 把处理机分配给进程 -
进程调度机制:三个部分组成
① 排队器:将就绪队列按照一定的策略排成一个队列,以便程序能够最快找到
② 分派器:将进程从就绪队列中取出,然后进行从分派器到新选出进程的上下文切换器
③ 上下文切换器 -
进程调度的方式
① 非抢占方式:进程一旦被分配处理机运行,就一直让其运行下去,不会被其他进程抢占资源
② 抢占方式:允许程序按照某种原则,去暂停某个正在执行的进程,将已经分配给该进程的处理机重新分配给另一进程优先权原则
短进程优先原则
时间片原则:正在执行的进程时间片执行完毕后,便停止对该进程的执行
3.2 轮转调度算法
所有的就绪进程排成一个就绪队列,并设置好中断时间间隔,每中断一次,激活系统中的进程调度程序,完成一次调度,将CPU分配给队首进程,令其执行,当其时间片执行完毕后,将系统资源分配给其他进程。
-
进程切换时机:
① 前一个进程的时间片执行完毕
② 前一个进程时间片未用完,但是产生中断,此时该进程将其送往就绪队列的末尾 -
时间片大小确定
① 时间片过小,导致不停的切换进程,增加开销
② 时间片选择原则:略大于一次典型的交互所使用的时间
3.3 优先级调度算法
3.3.1 优先级调度算法类型
- 非抢占优先级调度算法
- 抢占式优先级调度算法(主要用于实时系统中)
3.3.2 优先级类型
- 静态优先级
在进程创建时确定,在整个进程运行期间不改变
简单易行,但是精度不高 - 动态优先级
在创建时,先赋予一个优先级,然后在等待期间发生改变I(若等待时间长,就提高优先级)
3.4 多队列调度算法
3.5 多级反馈队列调度算法
- 调度机制
① 设置多个就绪队列,第一个队列的优先级最高,依次递减
② 每个队列都采用FCFS算法,当新进程进来之后,首先将其放在第一队列末尾
③ 按队列优先级调度
3.6 基于公平原则的调度算法
- 保证调度算法
明确保证性能,并不是保证优先运行 - 公平分享调度算法
4 实时调度
4.1 实时调度的基本条件
- 提供必要的信息
- 系统处理能力强大
- 采用抢占式调度机制
- 具有快速切换机制
4.2 实时调度算法的分类
- 非抢占式调度算法
- 抢占式调度算法
① 基于时钟中断的抢占式优先级调度算法
② 立即抢占式优先级调度算法
4.3 最早截止时间优先算法(EDF)
任务的截止时间越早,其优先级越高,具有最高截止时间的任务排列在队列的队首
4.4 最低松弛优先算法(LLF)
根据任务的紧急程度来定任务优先级,松弛度最低的排在队首
松弛度=必须完成时间-其本身运行时间-当前时间
4.5 优先级倒置
- 优先级倒置的形成
当高优先级进程要进入临界区,去使用临界资源,但是此时一个低优先级的进程正在使用该资源,导致高优先级阻塞 - 优先级倒置的解决办法
① 规定此时进入临界区域时,其资源不能被抢占;保证低优先级的能够快速执行退出,从而给高优先级的资源空出来
② 低优先级的继承高优先级进程的优先级,保证低优先级的能够快速执行退出,从而给高优先级的资源空出来
5 死锁
临界资源:需要采用互斥方法访问、不可抢占资源的资源
5.1 资源描述
- 可重用资源
- 可消耗资源
进程之间通讯的消息等 - 可抢占资源
CPU和主存等 - 不可抢占资源
刻录机、打印机等
5.2 计算机中的死锁
- 竞争不可抢占资源引起死锁
- 竞争可消耗资源引起死锁
- 进程推进顺序不当导致死锁
5.3 死锁的定义及解决办法
- 定义:一组进程中每一个进程都在等待仅由该进程中的其他进程才能引发的事件
- 产生死锁的必要条件
① 互斥条件
② 请求和保持条件:已经保持了一个资源,但又提出新的请求
③ 不可抢占条件:进程已经获得的资源在结束前不可以被抢占
④ 循环等待
5.4 处理死锁的方法
- 预防死锁
- 避免死锁
- 检测死锁
- 接触死锁
6 预防死锁
通过破坏产生死锁中的四个必要条件中的一个或者几个(一般是后三个)
6.1 破坏请求和保持条件
① 进程在开始之前,必须一次性的申请整个过程中所需的全部资源
② 允许进程获得初期运行的资源后,便开始运行,并在后面逐步释放并申请新的资源
6.2 破坏不可抢占条件
6.3 破坏循环等待条件
7 避免死锁
8 死锁的检测与解除
8.1 死锁检测
- 资源分配图
- 死锁的充分条件:当且仅当S状态的的资源分配图是不可完全简化的(死锁定理)
8.2 死锁的解除
- 人工解除
- 死锁检测算法
① 抢占资源:从一个或者多个进程中抢占多个资源
② 终止进程:终止或者撤销一个或多个死锁进程,直至打破死锁- 终止所有死锁进程
- 付出代价最小的死锁解除算法
进程优先级大小、
已经执行的时间
现在占领多少资源,以后需要多少
进程是交互式还是批处理