计算机操作系统复习(第三章 处理机调度与死锁)

概括但又不失完整性
课后答案:https://wenku.baidu.com/view/ac664175b0717fd5370cdc68.html

第三章 处理机调度与死锁

3.1处理机调度的层次和调度算法的目标

调度实质之一种资源分配,处理及调度是对处理机资源进行分配

3.1.1处理机调度的层次

1.高级调度:长作业调度或作业调度,决定将外存上处于后备队列中的哪几个作业调入内存,分配资源,放入就绪队列。主要用于多批道处理程序。
2.低级调度:进程调度或短程调度,决定就绪队列中哪个进程获得处理机。最基本的调度,多批道处理,分时和实时OS都有。
3.中级调度:内存调度,提高内存利用率和系统吞吐量。存储器管理中的对换功能。

3.1.2处理机调度算法的目标

1.处理及调度算法的共同目标:资源利用率,公平性,平衡性,策略强制执行。
2.批处理系统的目标:平均周转时间,系统吞吐量高,处理机利用率高。
3.分时系统的目标:响应时间快,均衡性。
4.实时系统的目标:截止时间的保证,可预测性。

3.2作业与作业调度

3.2.1批处理系统中的作业

1.作业和作业步
作业:包含程序和数据,作业说明书。批处理系统中,作为基本单位调入内存。
作业运行期间每一个加工步骤作为一个作业步。
2.作业控制块JCB
作业在系统中存在的标志,保存管理调度所需信息。(作业标识,用户信息账号,作业类型,作业状态,调度信息,资源需求、使用情况)
3.作业运行的三个阶段和三种状态
收容阶段:建立JCB,放到后备队列。
运行阶段:分配资源建立进程,放入就绪队列直到运行结束前。
完成阶段:运行完成或发生异常提前结束。

3.2.2作业调度的主要任务

也称为接纳调度
1.接纳多少个作业
取决于多道程序度
2.接纳哪些作业
取决于采用的调度算法

3.2.3先来先服务(FCFS)和短作业优先(SJF)调度算法

1.先来先服务FCFS算法
优先考虑等待时间最长的作业。
2.短作业优先SJF算法
作业越短优先级越高。
缺点:必须预知作业运行时间,对长作业非常不利,无法人机交互,未考虑作业的紧迫程度。

3.2.4优先级调度算法和高响应比优先调度算法

1.优先级调度PSA算法
外部赋予优先级,根据优先级进行调度。
2.高响应比优先调度HRRN算法
优先级=(等待时间+要求服务时间)/要求服务时间

3.3进程调度

3.3.1进程调度的任务、机制和方式

1.进程调度任务
保存处理机的现场信息,按某种算法选取进程,把处理器分配给进程。
2.进程调度机制
排队器,分派器,上下文切换器。
3.进程调度方式
非抢占方式:不抢占当前正在运行进程的处理机。
抢占方式:允许抢占。原则:优先权,短进程优先,时间片。

3.3.2轮转调度算法

1.轮转法的基本原理
每隔一定间隔把资源分配给一个进程。
2.进程切换时机
2.1时间片未完,进程已完成,激活调度程序。2.2时间片用完,进程未完成,送往就绪队列末尾。
3.时间片大小确定
时间片大小略大于一次典型交互所需时间。

3.3.3优先级调度算法

1.优先级调度算法的类型
1.1非抢占式优先级调度算法:直至完成或者该进程发生事件放弃处理机,系统重新分配处理机。
1.2抢占式优先级调度算法:有优先级更高的进程就要把处理机分配给他。
2.优先级的类型
2.1静态优先级:创建进程时确定,优先数。
2.2动态优先级:先赋一个初值,然后值随进程的推进或等待时间的增加而改变。

3.3.4多队列调度算法

进程就绪队列从一个拆分为多个,不同就绪队列采用不同调度算法,一个就绪队列中进程优先级不同,不同就绪队列优先级不同。

3.3.5多级反馈队列调度算法

1.调度机制
1.1设置多个就绪队列,每个队列有不同的优先级,每个队列时间片不同,优先级越高,时间片越小。
.12每个队列采用FCFS算法,未完成放到下一级队列,最后的队列采用RR(轮转法)。
1.3按队列优先级调度,有新进程到较为高优先级的队列,则把当前放到当前队列队尾,处理机分配给高优先级进程。
2.调度算法的性能
第一队列时间片略大于多数人机交互所需的处理时间,便能较好满足各类型用户需要。
1.终端型用户2.短批处理作业用户3.长批处理作业用户:

3.3.6基于公平原则的调度算法

1.保证调度算法
保证每个进程获得相同的处理时间。时间比率:进程实际执行的处理时间和应获得的处理机时间之比。把处理机给比率最小的进程,直到超过最接近的进程比率。
2.公平分享调度算法
针对用户而言的公平分享。

3.4实时调度

3.4.1实现实时调度的基本条件

1.提供必要信息
就绪时间,开始截止时间和完成截止时间,处理时间,资源要求,优先级。
2.系统处理能力强
Ci/Pi求和<=1,处理时间为Ci,周期时间为Pi,满足如上限制表示可调度,多处理机系统则<=N。
3.采用抢占式调度机制
应使所有的实时任务都比较小。
4.具有快速切换机制
1.对中断的快速响应能力2.快速的任务分派能力。

3.4.2实时调度算法的分类

1.非抢占式调度算法
轮转:任务完成后放到队尾轮转
优先:优先级高的放在队首,当前的执行完了去执行他们。
2.抢占式调度算法
基于中断:优先级高的等到时钟中断发生,调度程序剥夺当前任务执行时间。
立即抢占:当前任务未处于临界区,便能立即剥夺当前任务执行。

3.4.3最早截止时间算法

任务截止时间越早,优先级越高。
1.非抢占式用于非周期实时任务:按照截止时间决定执行谁,按照顺序来。
2.抢占式用于周期实时调度:有新的任务来就判断谁的截止时间早,就执行谁。

3.4.4最低松弛度优先LLF算法

松弛程度:必须完成时间-本身运行需要时间-当前时间
松弛度小的优先。

3.4.5优先级倒置

1.优先级倒置的形成:
高优先级进程被低优先级进程延迟或阻塞。
例:由于共享临界资源高优先级进程被阻塞。
2.优先级倒置的解决方法:
动态优先继承:低优先级进程继承高优先级进程的优先级直至退出临界区。

3.5死锁的概述

3.5.1资源问题

可以引起死锁的资源主要是:临界资源——采用互斥访问,不可以被抢占的资源,如:打印机,数据文件,队列,信号量等。
1.可重用性资源和消耗性资源
1.1可重用性资源
可供用户使用多次,不允许多个进程共享,使用顺序:请求资源——使用资源——释放资源,数目相对固定,利用系统调用实现,设备:request/release 文件:open/close 进程 wait/signal
1.2可消耗性资源
临时性资源,运行期间进程动态创建消耗。数目可变,可以被创造,进程自己请求了消耗,不再返回给资源类中,生产者进程创建,消费者进程消耗 如进程间通信的消息。
2可抢占性资源和不可抢占性资源
2.1可抢占性资源
可以被其他进程或系统抢占的资源,如CPU和主存,不会引起死锁
2.2不可抢占性资源
不能被强行收回,进程用完后自动释放

3.5.2计算机系统中的死锁

1.竞争不可抢占性资源引起死锁
不可抢占性资源数量少,因资源争夺进入死锁 如两个进程打开文件,资源分配图出现环路。
2.竞争可消耗资源引起死锁
三个进程之间的通信,都在等待别人发送消息才发送自己的消息,陷入死锁。
3.进程推进顺序不当引起死锁
对资源进行申请和释放是否合法。同理,两个进程因为推进顺序进入了“不安全状态”,可能陷入互相等待的僵局。

3.5.3死锁的定义、必要条件和处理方法

1.死锁的定义
一组进程中的每一个进程都在等待仅由该组进程中的其他进程才能引发的事件。
2.产生死锁的必要条件
互斥条件:某资源只能被一个进程使用
请求和保持条件:进程自己有资源,请求被占有的新资源,被阻塞,获得资源不释放。
不可抢占条件:进程已获得资源自己释放,不能被抢占
循环等待条件:进程——资源循环链
3.处理死锁的方法
预防,避免,检测,解除

3.6预防死锁

3.6.1破坏“请求和保持”条件

进程请求资源时,不能持有不可抢占资源
第一种协议:一次性申请全部资源,简单安全,但浪费资源,会经常发生饥饿现象
第二种协议:获得初期所需资源,并逐步释放,逐步申请。利用率高,饥饿现象少。

3.6.2破坏“不可抢占”条件

进程请求得不到满足,则释放已保持的资源,以后重新申请。实现复杂,代价大。如:打印机,CD刻录机等

3.6.3破坏“循环等待”条件

对系统所有资源线性排序,进程按照递增顺序请求资源。高的想要低的,要先释放已有的高的。限制新设备的增加,作业使用资源顺序与系统规定不同,限制用户编程。

3.7避免死锁

3.7.1系统安全状态

1.安全状态:分配资源前,判断会不会使系统进入不安全状态,即存不存在一个推进序列使每个进程都可以顺利的完成。
避免死锁的基本思想:确保系统始终处于安全状态。

3.7.2利用银行家算法避免死锁

按照当前的资源状态进行资源分配,并判断存不存在安全序列决定当前分配可不可行,一次次的进行下去直到都分配了。

3.8死锁的检测与解除

3.8.1死锁的检测

为对死锁进行检测,需1.保存有关资源的请求和分配信息2.提供一种算法,利用这些信息检测系统是否已经进入死锁。
1.资源分配图
资源请求:进程指向资源
资源分配:资源指向进程
2.死锁定理
简化资源分配图:把能去掉的去掉
死锁定理:S为死锁状态充分条件是:当且仅当S状态的资源分配图是不可完全化简的。
3.死锁检测中的数据结构
能去的去,同时更新资源状态信息,最后还有加不进去的,就是死锁。

3.8.2死锁的解除

两种方法:抢占资源,终止进程
1.终止进程的方法
1.终止所有死锁进程,代价大。2.逐个终止进程:代价也大,考虑进程优先级,执行多久,还需多久,使用多少资源,还需多少,交互还是批处理。
2.付出代价最小的死锁解除算法
每次取代价最小???

你可能感兴趣的:(课程复习)