1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
死锁问题.ppt

§3.8 死锁问题 在多道程序系统中,多个进程并发运行,共享资源,从而提高了资源的利用率。但是若对资源的管理和使用不当,在一定条件下会导致系统发生一种随机性故障――死锁。在一些系统中,比如实时控制系统,系统一旦发生死锁将导致灾难性的后果。 3.8.1 死锁的基本概念 ?资源 ?死锁的定义 ?产生死锁的原因 ?产生死锁的必要条件 ?处理死锁的基本方法 资源的概念 OS是计算机系统中资源的管理者,而进程是竞争资源的基本单位,故对系统中所有进程的资源分配工作,都由OS完成。 研究资源分配时,我们必须搞清该资源是可以被几个进程同时使用,还是只能为一个进程使用,资源的不同使用性质正是引起系统死锁的原因。 根据资源性质:可剥夺(抢占)和不可剥夺(抢占)资源。 可抢占资源—指资源占有进程虽然需要使用该资源,但另一个进程却强行把资源从占有者进程处抢来。 不可抢占资源—指只有占用者进程不再需要使用该资源而主动释放资源外,其它进程不得在占有者进程使用资源过程中强行抢占。 死锁的定义 死锁Deadlock:是计算机系统中多道程序并发执行时,两个或两个以上的进程由于竞争资源而造成的一种互相等待的现象(僵局),如无外力作用,这些进程将永远不能再向前推进。 陷入死锁状态的进程称为死锁进程,所占用的资源或者需要它们进行某种合作的其它进程就会相继陷入死锁,最终可能导致整个系统处于瘫痪状态。 产生死锁的原因 1 竞争资源。当系统中供多个进程所共享的资源,不足以同时满足它们的需要时,引起它们对资源的竞争而产生死锁; 2 进程推进的顺序不当 。进程在运行过程中,请求和释放资源的顺序不当,导致进程的死锁。 竞争资源 1 竞争非剥夺性资源: 2 竞争临时性资源 ?产生死锁的四个必要条件 ⑴互斥条件:进程访问的是临界资源,那个资源一次只能被一个进程所使用。 ⑵不剥夺条件:一个资源仅能被占有它的进程所释放,而不能被其他进程剥夺。 ⑶部分分配:(请求和保持条件)一个进程在请求新的资源的同时,保持对某些资源的占有。 ⑷环路等待条件:存在一个进程的环路链,链中每一个进程占用有着某个或某些资源,又在等待链中的另一个进程占有的资源。 生产者—消费者问题 avail-生产者用信号量,记录缓冲区空单元个数。 Full—消费者信号量,记录产品个数。 Mutex—互斥信号量。 deposit( data) remove (data) begin begin p(avail) p(full) p(mutex) p(mutex) 送数据入缓冲区某 取缓冲区中某单元 单元 数据 v(full) v(avail) v(mutex) v(mutex) end end 在前述若pv操作使用不当,会引起死锁。把生产者进程两个p操作次序调换一下,先执行P(mutex),后执行P(avail) P(mutex) 互斥 P(avail) 判断 缓冲区满,不能送,从消费者执行。 那么当缓存区满且消费者此时不再临界区中,执行到互斥P(mutex)后,消费者进程想进入临界区,但被阻塞在外。 若生产者希望进入临界区,也被阻塞,于是两个进程无限止地相互等待对方来唤醒自己,两个进程陷入死锁。 3.8.2 死锁的排除方法 1 鸵鸟算法 2 预防死锁 3 避免死锁 4 检测和解除死锁 1鸵鸟算法(置之不理) 解决死锁的最简单方法就是鸵鸟算法。即像鸵鸟一样,当遇到危险时,将头埋进沙子里,假装毫无问题。 当死锁在计算机中很少出现时,比如说每五年或更长时间才出现一次时,人们就不必花费更多的精力去解决它,而是采用类似鸵鸟一样的办法忽略它。 以UNIX系统为例,它潜在地存在死锁,但它并不花功夫去检测和解除死锁,而是忽略不去理它。 UNIX系统允许创建的进程总数是由进程表中包含的PCB个数决定的。因此

您可能关注的文档

文档评论(0)

ailuojue2 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档