操作系统中死锁的基本概念和解决方法

0 下载量 96 浏览量 更新于2024-06-29 收藏 2.36MB PPTX 举报
操作系统死锁 操作系统中,死锁是指一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程。死锁的产生原因有多种,包括资源数量有限、锁和信号量错误使用等。 从死锁的定义中可以得到几个推论: 1.参与死锁的所有进程都在等待资源。 2.参与死锁的进程是当前系统中所有进程的子集。 死锁的产生的原因包括: 1. 资源数量有限:在操作系统中,资源使用的一般模式是:进程提出申请,操作系统进行相应的分配,如果进程所需要的资源不能满足的话,这个进程就进入阻塞或者等待状态,如果可以满足的话进程就直接使用资源,当进程使用完毕之后就释放资源。由于资源的使用方式就是申请-分配-使用-释放,因此有些进程得不到资源就会处理阻塞等待状态,资源有限的话就有可能出现死锁。 2. 锁和信号量错误使用:锁和信号量的使用可能是开发人员编程导致的。 死锁的必要条件包括: 1. 互斥使用(资源独占):一个资源每次只能给一个进程使用占有且等待进程在申请新的资源的同时保持对原有(请求和保持,部分分配)资源的占有产生死锁的必要条件。 2. 部分分配:资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放,不可剥夺。 3. 循环等待:存在一个进程等待队列{P1, P2,…,Pn},其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路。 资源分布图(RAG)是用有向图描述系统资源和进程的状态,从图的角度为解决死锁提供理论和依据。定义一个二元组G=(V,E)有两个集合组成。其中V是结点的集合,分为P(进程),R(资源)两部分,P={P1,P2,…,Pn},R={R1,R2,…,Rm}。E是有向边的集合,其元素为有序二元组,可以是进程节点指向资源节点的有向边后者资源节点指向进程节点的有序边。 资源分配图图画法说明: 系统由若干类资源构成,一类资源称为一个资源类;每个资源类中包含若干个同种资源,称为资源实例。使用用方框表示资源类;用方框中的黑圆点表示资源实例;用圆圈中添加资源实例的数量表示资源的可用性。 死锁是操作系统中的一种严重问题,可能导致系统崩溃。因此,理解死锁的定义、产生原因和必要条件对解决死锁问题非常重要。