- 1、本文档共53页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.2.5 预防死锁 解决死锁问题的基本方法有:预防死锁、避免死锁、检测死锁和解除死锁。除此之外还有鸵鸟算法和综合措施。 预防死锁是指通过某种策略来限制并发进程对资源的请求,使系统在任何时刻都不满足死锁的必要条件。 就是在设计操作系统时,通过设置某些限制条件,去破坏死锁四个必要条件中的一个或多个,来防止死锁,使系统能预先排除死锁的可能性。 5.2.6 解决死锁问题的策略 1、条件1(互斥条件) 互斥条件是由于设备本身特性所决定的,不能简单的把其打破;只有通过改造设备特性实现.具体办法采用Spooling技术,把独占设备改造成共享设备来实现. 2、条件2(不可剥夺条件) 为了破坏不可剥夺条件,我们采用这样的策略,一个已拥有资源的进程,若它再提出新资源要求而不能立即得到满足时,它必须释放已经拥有的所有资源,以后需要时再重新申请。拥有资源的进程在运行过程中其资源可能被剥夺,从而破坏了不可剥夺条件。 该方法实现复杂,被剥夺资源的进程前期工作失效,重复申请和释放资源给系统增加了开销,系统要付出很大的代价。 3、条件3(占有并等待) 采用设备的静态预先分配办法,具体做法:作业调度程序在选择作业时,只选择那些系统能满足其运行时所需的全部资源的作业投入运行,并且在作业运行前,将其所需的全部资源一次性地分配给该作业. 该方法的优点和缺点如下: ①简单、安全、易于实现。 ②程序在运行之前很难提出将要使用的全部设备。 ③直到所有资源满足才能运行,实际上某些资源可能要到运行后期才会用到。 ④一个进程运行期间,对某些设备的使用时间很短,甚至不会用到。 ⑤作业的周转时间被加长,系统资源的使用率被降低 4、条件4(环路条件) 为了破坏环路等待条件,采用有序资源分配策略。 对申请资源的进程规定:同类资源需一次申请,在获得资源后,只能申请较高级号的资源,无权申请低级号资源和同类资源。对于低级号资源和同类资源申请,必须先释放所有高级号的资源,然后再申请,否则不予分配。 优点:同前两法相比,其资源利用率和系统吞吐量有较明显的改善。 缺点:进程实际需要资源的顺序不一定与资源的编号一致,因此仍会造成资源浪费,系统增加新设备较困难。 三、银行家算法避免死锁 ⒈银行家算法中的数据结构 ①可利用资源向量Available(R1,R2…Rm)。它是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源数目。其数值随该类资源的分配和回收而动态地改变。 ②最大需求矩阵Max。这是—个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=k,表示进程Pi需要Rj类资源的最大数目为k。 ③分配矩阵Allocation。这是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每个进程的资源数。如果Allocation[i,j]=k,表示进程Pi当前已分得Rj类资源的数目为k。 ④需求矩阵:Need。它是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数,如果Need[i,j]=k,表示进程Pi还需要Rj类资源k个,方能完成其任务。 上述三个矩阵间存在下述关系: Need[i,j]=Max[i,j]-Allocation[i,j] ⒋银行家算法之例 如表5-4所示T0时刻的资源分配表,假定系统中有五个进程{P0,P1,P2,P3,P4}和三种类型的资源{A,B,C},每一种资源的数量分别为10、5、7。 如表5-5所示,对T0时刻进行安全性检查,可以找到一个安全序列{P1,P3,P4,P2,P0},系统是安全的。 5.3 处理机管理5.3.1处理机的多级调度 我们可把处理机调度分成宏观调度、中程调度和微观调度三个层次。 1、作业调度(宏观调度、高级调度) 任务:按一定的原则对处于外存输入井中的后备作业进行选择,给选出的作业分配内存、设备等必须资源,并建立相应的进程。在作业运行完毕后进行相应的善后工作。 2、交换调度(中程调度) 任务:按给定的原则和策略,将处于外存交换区的就绪状态或外存等待状态的进程调入内存,或把处于内存就绪状态或内存等待状态的进程交换到外存交换区。 具有三级调度的调度队列模型 5.1.1 宏观调度 宏观调度在多道批处理系统中对应作业调度,就是按照系统所规定的调度算法从系统已接纳的一批作业中选取一个子集,做好运行前的准备工作,使其进入内存并运行。现代操作系统中一般不配备作业调度。作业调度完成以下几方面的工作: ①按某种调度算法从后备队列中选取一个子集。 ②为选中的作业子集分配所需的资源,如内存、外设等。 ③为选中的作业子集创建相关进程。 ④填写修改被选中的作业的JCB及有关表格。 ⑤作业完成时的善后工作。 5.3.2 微观调度 微观调度也称低级调度
文档评论(0)