第三章 、处理机调度与死锁学习
说明:在多道程序下,内存中存在着多个进程,数目多于处理机数目,需要一种算法动态地将处理机分配给处于就绪状态的一个进程,使之执行。处理机的任务是由处理机调度程序完成的。
考虑因素有:COU利用率 系统吞吐量(max) 周转时间(min) 响应时间(min) 系统开销(min)
一、处理机调度的层次比较和算法的目标
1.1比较
调度层次 |
一般名称 |
调度对象 |
主要功能 |
用途 |
说明 |
高级调度 |
长程调度,作业调度 |
作业 |
将外存中处于后备队列的作业调入内存,为之创建进程,分配资源 |
用在多道批处理系统中,分时和实时系统中没有用到 |
使用不频繁 |
低级调度 |
进程调度,短程调度 |
进程或者内核级进程 |
决定就绪队列中的进程获得处理机 |
在多道批,分时,实时系统中必须设置 |
进程调度频率比较高 |
中级调度 |
内存调度 |
进程 |
提高系统的利用率和系统的吞吐量 |
管理系统中的进程 |
实际上是存储器管理的对换功能 |
1.2处理机调度算法的共同目标
1)资源利用率
目的是使系统保持忙碌状态
计算方法:
2)公平性
使系统中的各个进程获得合理的CPU时间,减少进程之间的竞争和进程饥饿的情况。相同的进程获得相同的服务,不同类型的进程,则根据重要性提供服务。
3)平衡性
系统中的调度算法应该保持各种类型的进程使用系统资源的平衡性。
4) 策略强制执行
系统中的某些策略比如安全策略在必要的时候必须执行.
1.3各种处理机系统的目标
处理系统名称 |
处理目标一 |
处理目标二 |
处理目标三 |
|
批处理系统 |
平均周转时间短 |
系统吞吐量高 |
处理机利用率高 |
|
分时系统 |
响应时间快 |
均衡性 |
|
|
实时系统 |
保证截止时间 |
可预测性 |
|
|
二、作业与作业调度算法
2.1.作业和作业步
作业 = 程序 + 作业 + 作业说明书
2.2.作业步
作业的加工步骤
2.3.作业控制块(JCB)
是作业在系统中存在的标志,保存了系统对作业进行管理和调度所需的全部信息
包含的内容如下:
作业标识,用户名,用户账户,作业类型(CPU繁忙型,I/O繁忙型,批量型,终端型)
作业状态,调度信息(优先级,作业运行时间),资源需求(预计运行时间,要求内存大小等),资源使用情况等。
2.4作业运行的三个状态
1.收容状态 2.运行状态 3.完成状态
2.5作业调度算法一览表
调度算法归类 |
用途 |
考虑对象 |
设置资源 |
优点 |
缺点 |
先来先服务算法(FCFS) |
用于进程调度和作业调度
|
等待时间最长的作业 |
作业的后备队列 |
有利于长作业 |
不利于短作业 |
短作业优先调度算法(SJF) |
运行时间最短的作业 |
有利于短作业 |
必须预知作业的运行时间 对长作业不利 人机无法交互 | ||
优先级调度算法(PSA) |
作业的紧迫程度(优先级) |
根据作业的紧迫程度选择作业 |
可能剥夺优先级较低的运行权利 | ||
高响应比优先调度算法(HRRN) |
运行时间和等待时间 |
引入动态优先级
|
需要做响应比的计算,增加系统开销 |
高响应比优先调度算法的计算
说明:等待时间与服务时间之和就是系统对该作业的响应时间
通过上述两个公式可知,该算法综合了其他三种算法的优点。
三、进程调度
进程调度是对系统性能影响最大的一种处理机调度。
3.1进程调度的任务,机制和方式
1.进程调度的任务
(1)保存处理机的现场信息
(2)按某种算法选取进程
(3)把处理器分配给进程
2.进程调度机制
有三个基本部分:
1. 排队器
2. 分派器
3. 上下文切换器
3进程的调度方式
1. 非抢占方式
2. 抢占方式
遵循的原则:
1. 优先权原则
2. 短进程优先原则
3. 时间片原则
进程调度算法说明:
1.轮转调度算法:在分时系统中采用的是基于时间片的轮转调度算法。
2.优先级调度算法:
分为:
非抢占式优先级调度算法
抢占式优先级调度算法
优先级的类型:
静态优先级,动态优先级
3多队列调度算法:将系统中的就绪队列由一个拆分为若干个。
4.多级反馈队列调度算法
调度机制
1. 设置多个就绪队列
2. 每一个队列都采用FCFS算法。
3. 按照队列优先级调度。
5.基于公平原则的调度算法。
两种实现类型:
1. 保证调度算法
2. 公平分享调度算法。
四.实时调度
4.1.实现实时调度的基本条件
1.系统向调度程序提供必要的信息
1.就绪时间
2.开始时间和结束时间
3.处理时间
4.优先级
5.资源要求
2.处理能力强
3.采用抢占式调用
4.具有快速切换机制
1.对中断的快速响应能力
2.快速的任务分派能力
4.2.调度算法一览
另外还有:
5.最早截止时间优先EDF算法
说明:根据任务的截止时间确定任务的优先级,任务的截止时间越早,优先级越高。可用于基于调度方式的调度算法中。
1. 最低松弛度优先LLF算法
说明:在确定任务的优先级时,根据任务的紧急(或者松弛程度)程度
任务的紧急程度越高,该任务的优先级就越高。
五.死锁说明
5.1.临界资源介绍
举例:打印机,队列,数据文件,信号量
5.2、分类一
|
定义 |
性质一 |
性质二 |
性质三 |
可重用性资源 |
可供用户重复使用多次的资源 |
可重用资源单位一次只能分配给一个进程使用 |
按照如下顺序使用:1.请求资源,2使用资源,3释放资源 |
可用资源的数目是相对固定的,进程不能创建也不能删除。 |
可消耗性资源 |
也叫临时性资源,由进程动态创建和消耗 |
该资源的单元数目在运行期是不断变化的。 |
进程在运行期间可以不断创造该类资源 |
进程对该类资源可以进行占用而不用还给系统 |
5.3.分类二
|
说明 |
举例 |
可抢占性资源 |
某进程在获得该类资源后,可以被其他进程或者系统抢占 |
优先级高的抢优先级低的 进程从内存调出外存 CPU和主存是可抢占性资源,不会引起死锁 |
不可抢占性资源 |
系统将该类资源分配给进程后,该类资源不可被剥夺,只能在进程使用完后自行释放 |
磁带机,刻录机,打印机 |
|
|
|
5.4引起死锁的原因
1 .竞争不可抢占性资源引起死锁
2 .竞争可消耗性资源引起死锁
3 .进程推进顺序不当引起死锁
5.5 死锁的定义,必要条件和处理方法
1.定义:在一组进程发生死锁的情况下,这组进程中的每个进程都在等待另一个死锁进程所占有的资源。一组资源中的每个进程都在等待今由该组进程中的其他进程才能引发的事件,这组进程就是死锁的。
2.产生死锁的必要条件
1.互斥条件
2.请求和保持条件
3.不可抢占条件
4.循环等待条件
说明:这四个条件都要满足,才能引发死锁。
3预防死锁的方法
1. 预防死锁:设置限制条件
2. 避免死锁:
3. 检测死锁
4. 解除死锁:撤销进程,回收资源
说明:有序分配资源属于破坏“循环等待”条件,预防死锁
|
预防死锁 |
避免死锁 |
检测死锁 |
解除死锁 |
破坏条件 |
破坏“请求和保持“条件
|
利用银行家算法避免死锁 |
1. 系统条件: 保存有关资源的请求和分配信息
|
方法一:抢占资源,将该资源分配给死锁进程,解除死锁状态 |
|
破坏”不可抢占“条件
|
|
2. 利用这些信息来检测系统是否已经进入死锁状态
|
方法二:终止或者撤销进程 |
|
破坏“循环等待“条件 |
|
资源分配图 |
|