《2019年第6章操作系统的资源管理ppt课件》由会员分享,可在线阅读,更多相关《2019年第6章操作系统的资源管理ppt课件(53页珍藏版)》请在金锄头文库上搜索。
1、1,第5章 操作系统的资源管理,5.1 资源管理的机制和策略 5.1.1 资源管理任务 1、资源的静态分配和动态分配 静态分配: 在作业运行前,将所需的资源一次性的分配给它,在作业运行完毕后释放所获得的全部资源。 动态分配:在进程运行过程中根据情况动态地分配、使用和释放资源。,2,2、资源管理的任务 (1)资源数据结构的描述 (2)确定资源的分配策略 (3)执行资源分配 (4)存取控制和安全保护,3,5.1.2 虚拟资源 虚拟资源:用户使用的逻辑资源,是操作系统将物理资源改造后,呈现给用户的可供使用的资源。 目的:一是提高资源的利用率;二是为了方便用户的使用。,4,5.1.3 资源分配机制 1
2、、资源描述器 资源描述器:描述各类资源的最小分配单位的数据结构。 2、资源信息块 资源信息块:描述某类资源的请求者、可利用的资源以及该类资源分配程序的地址的数据结构。,5,5.1.4 资源分配策略 1、先请求先服务(FIFO) 先请求先服务是一种最简单的资源分配策略,可用于对进程或作业的调度,也可用于对外部设备、主存储区的分配。 2、优先调度 优先调度策略调度是一种比较灵活的调度策略。进程调度队列按进程的优先级由高到低的顺序排列。 3、针对设备特性的调度 (1)移臂调度 (2)旋转调度,6,5.2 死锁及其解决方法,5.2.1 死锁的定义 可重用资源(reusable resource):各个
3、进程可以轮流使用,如处理机、内存、I/0外设、文件等都是可重用资源,在使用可重用资源时可能出现的死锁(Deadlock)。通常是由于各进程巳拥有部分资源,同时请求其他进程已占有的资源,从而造成永远等待。 可消耗资源(consumable resource):是指可以动态生成和动态消耗的资源,一般不限制数量,如中断、信号量、消息、缓冲区等都是可消耗资源。由于可消耗资源的生成和消耗存在依赖关系,因此他们的使用也可能因为双方都等待对方生成资源而形成死锁。(如图5-1所示),7,图 5-1 进程之间通信时的死锁,8,死锁的定义:死锁是一组并发进程,它们共享系统的某些资源,该组进程中每个进程都已经占有了
4、部分资源,但都在不释放自己占有资源的情况下要求获得被其它进程已经占有的资源,从而造成它们相互等待,永远不能继续推进的状态. 说明: 参与死锁的进程最少是两个(两个以上进程才会出现死锁)。 参与死锁的进程至少有两个已经占有资源。 参与死锁的所有进程都在等待事件。 参与死锁的进程是当前系统中所有进程的子集。,9,5.2.2 资源分配图,(2) 凡属于E中的一个边eE,都连接着P中的一个结点和R中的一个结点,e=pi, rj是资源请求边,由进程pi指向资源rj, 它表示进程pi请求一个单位的rj资源。e=rj, pi是资源分配边,由资源rj指向进程pi, 它表示把一个单位的资源rj分配给进程pi。,
5、该图是由一组结点V和一组边E所组成的: G=(V,E),具有以下形式的定义和限制: (1)V被分为两个互斥的子集,一组进程结点P=p1,p2,pn,一组资源结点 R=r1,r2,rn,10,5.2.3 产生死锁的原因,产生死锁的根本原因是: 资源不足,引起资源竞争 进程推进顺序不合理,11,5.2.4 死锁产生的必要条件,互斥条件:进程要求对所分配的资源进行排他性使用,即在一段时间内某资源仅为一个进程所占用。 不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放。 占有并等待:进程每次申请所需要的一部分资源,在等待新资源的同时,进程继续占有已
6、分配到的资源。 循环等待条件:存在进程资源的循环等待链,链中的每一个进程已获得资源,同时被链中的下一个进程所请求。,12,5.2.5 预防死锁 解决死锁问题的基本方法有:预防死锁、避免死锁、检测死锁和解除死锁。除此之外还有鸵鸟算法和综合措施。 预防死锁是指通过某种策略来限制并发进程对资源的请求,使系统在任何时刻都不满足死锁的必要条件。 就是在设计操作系统时,通过设置某些限制条件,去破坏死锁四个必要条件中的一个或多个,来防止死锁,使系统能预先排除死锁的可能性。,13,1、条件1(互斥条件) 互斥条件是由于设备本身特性所决定的,不能简单的把其打破;只有通过改造设备特性实现.具体办法采用Spooli
7、ng技术,把独占设备改造成共享设备来实现.,5.2.6 解决死锁问题的策略,14,2、条件2(不可剥夺条件) 为了破坏不可剥夺条件,我们采用这样的策略,一个已拥有资源的进程,若它再提出新资源要求而不能立即得到满足时,它必须释放已经拥有的所有资源,以后需要时再重新申请。拥有资源的进程在运行过程中其资源可能被剥夺,从而破坏了不可剥夺条件。 该方法实现复杂,被剥夺资源的进程前期工作失效,重复申请和释放资源给系统增加了开销,系统要付出很大的代价。,15,3、条件3(占有并等待) 采用设备的静态预先分配办法,具体做法:作业调度程序在选择作业时,只选择那些系统能满足其运行时所需的全部资源的作业投入运行,并
8、且在作业运行前,将其所需的全部资源一次性地分配给该作业. 该方法的优点和缺点如下: 简单、安全、易于实现。 程序在运行之前很难提出将要使用的全部设备。 直到所有资源满足才能运行,实际上某些资源可能要到运行后期才会用到。 一个进程运行期间,对某些设备的使用时间很短,甚至不会用到。 作业的周转时间被加长,系统资源的使用率被降低,16,4、条件4(环路条件) 为了破坏环路等待条件,采用有序资源分配策略。 对申请资源的进程规定:同类资源需一次申请,在获得资源后,只能申请较高级号的资源,无权申请低级号资源和同类资源。对于低级号资源和同类资源申请,必须先释放所有高级号的资源,然后再申请,否则不予分配。 优
9、点:同前两法相比,其资源利用率和系统吞吐量有较明显的改善。 缺点:进程实际需要资源的顺序不一定与资源的编号一致,因此仍会造成资源浪费,系统增加新设备较困难。,17,5.2.7 避免死锁,死锁的避免是动态的预防措施,系统允许进程动态地申请资源,如果措施得当,可以使系统获得较为满意的系统性能. 具体的办法是:系统为进程分配资源之前,首先对系统的安全性进行计算,如果为进程分配了所需资源后,系统仍处于安全状态,那么就把资源分配给该进程,反之则不为该进程分配资源. 银行家算法:该问题是研究一个银行家如何将其总数一定的现金,安全的借给若干个顾客,使这些顾客既能满足对资金的要求又能完成其交易,也使银行家可以
10、收回自己的资金不至于破产.,18,一、系统的安全状态和不安全状态 安全状态:是指系统能按某种进程推进顺序(p1,p2,pn),来为每个进程分配其所需资源,直至最大需求,使每个进程都能顺利完成其任务.只要系统存在这样的安全序列,则系统处于安全状态. 二、安全状态的例子 假定系统有三个进程p1,p2和p3,共有12台磁带机,进程p1、p2、p3分别要求10台、4台和9台,设在T0时刻p1、p2、p3已分别获得5台、2台和2台,尚有3台空闲磁带机未分配出去,分配情况如下所示:,19,经分析,在T0时刻系统是安全的,因为存在一个安全序列 向不安全状态的转换 若在T0时刻以后,p3请求1台磁带机,若满足
11、其要求,则系统进入不安全状态。,20,银行家算法中的数据结构 可利用资源向量Available(R1,R2Rm)。它是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源数目。其数值随该类资源的分配和回收而动态地改变。 最大需求矩阵Max。这是个nm的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Maxi,jk,表示进程Pi需要Rj类资源的最大数目为k。 分配矩阵Allocation。这是一个nm的矩阵,它定义了系统中每一类资源当前已分配给每个进程的资源数。如果Allocationi,jk,表示进程Pi当前已分得Rj类
12、资源的数目为k。,三、银行家算法避免死锁,21,需求矩阵:Need。它是一个nm的矩阵,用以表示每一个进程尚需的各类资源数,如果Needi,jk,表示进程Pi还需要Rj类资源k个,方能完成其任务。 上述三个矩阵间存在下述关系: Needi,j=Maxi,j-Allocationi,j,22,银行家算法 设Requesti(r1,r2,rm)是进程Pi的请求向量。如果Requestijk,表示进程Pi只需要k个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查: 如果Requesti=Needi,则执行步骤;否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。 如果Reques
13、ti,=Availablei,则执行步骤;否则,表示系统中尚无足够的资源,Pi等待。 系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值: Availablej=Availablej-Requestij; Allocationi,j=Allocationi,j+Requestij; Needi,j=Needi,j-Requestij;,23,系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则,将试探分配作废,恢复原来的资源分配状态,让进程Pi等待。,24,安全性算法 系统所执行的安全性算法可描述如下: 设置两个工作
14、向量,工作向量Work。它含有m个元素,它表示系统可提供给进程继续运行所需要的各类资源数目,初值Work=Available。 完成标志工作向量Finish。它含有n个元素,它表示系统是否有足够的资源分配给进程,使之运行完成,当有足够资源分配给进程时,Finishi=true,初值Finishi=false。 从进程集合中找到一个能满足下述条件的进程: Finishi=false; Needi=Work; 如找到,执行步骤;否则,执行步骤。,25,当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,系统回收这些资源,故修改下面数据结构中的数值: Workj=Workj+Allo
15、cationi,j; Finishi=true; 转步骤。 如果所有进程的Finishi=true ,则表示存在这样一个安全序列,系统处于安全状态;否则,系统处于不安全状态。,26,银行家算法之例,如表5-4所示T0时刻的资源分配表,假定系统中有五个进程P0,P1,P2,P3,P4和三种类型的资源A,B,C,每一种资源的数量分别为10、5、7。,27,如表5-5所示,对T0时刻进行安全性检查,可以找到一个安全序列P1,P3,P4,P2,P0,系统是安全的。,28,P1发出请求Request(1,0,2),执行银行家算法。 如表5-6所示,进行安全性检查,通过第一步和第二步检查,并找到一个安全序
16、列P1,P3,P4,P2,P0,系统是安全的,可以分配P1的请求。,29,30,P4发出请求Request(3,3,0),执行银行家算法。 Available=(2,3,0),不能通过第二步检查(RequestiAvailable),所以P4等待。 P0请求资源,Request(0,2,0),执行银行家算法。 进行安全性检查,通过第一步和第二步检查,如表5-7所示,Available2,1,0已不能满足任何进程需要,所以系统进入不安全状态,P0的请求不能分配。,31,作业:某系统中有10台打印机,有三个进程P1,P2,P3分别需要8台,7台和4台。若P1,P2,P3已申请到4台,2台和2台。试问:按银行家算法能安全分配吗?请说明分配过程。,32,我们可把处理机调度分成宏观调度、中程调度和微观调度三个层次。 1、作业调度(宏观调度、高级调度) 任务:按一定的原则对处于外存输入井中的后备作业进行选择,给选出的作业分配内存、设备等必须资源,并建立相应的进程。在作业运行完毕后进行相应的善后工作。 2、交换调度(中程调度) 任务:按给定的原则和策略,将处于外存交换区的就绪状态或外存等待