- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
调度与死锁课件
多级反馈队列调度算法 ● 在实际系统中,还可以使用更复杂的动态优先级调整策略。 例如:为了保证I/O操作能及时完成,可以在进程发出I/O请求后进入最高优先权队列,并执行一个时间片,以及时响应I/O交互。 ● 4.3 死锁的基本概念 ● 死锁是发生 在一组相互合作或竞争的线程或进程中的一个问题。在同步问题中很容易死锁。 ● 通常情况下,死锁发生在两个或多个不同程序对应的进程或线程同时执行时,相同程序对应的多个进程或线程由于一些复杂资源的使用也会发生死锁。 ● 4.3 死锁的基本概念 一组竞争系统资源或相互通信的进程相互的“永久”阻塞。若无外力作用,这组进程将永远不能继续执行。 ● 4.3 死锁的基本概念 ● 死锁不像并发进程管理的其他问题,这类问题没有一种有效的通用的解决方案。 ● 死锁涉及两个或更多的进程因对资源的需求所引起的冲突。 产生死锁的原因 ●资源数 要求该种资源的进程数 ●进程的推进顺序非法 进程P …… get(A); …… get(B); …… release(A); …… release(B); …… ? 进程Q …… get(B); …… get(A); …… release(B); …… release(A); …… A、B分别代表某种资源 进程的推进顺序不当 ●(1)、(2) 、(4) 、(5) 正常运行 ●(3) 、(6)发生死锁 进程的推进顺序合适 进程P对资源的申请、释放次序改变后不死锁! 交换P操作的位置 void producer() //生产者进程 {while (true) {produce an item in data_p; P(empty); P(mutex); buffer[i] = data_p; i = (i + 1) % n; V(mutex); V(full);} } void consumer()//消费者进程 {while (true) {P(mutex); P(full); data_c = buffer[j]; j = (j + 1) % n; V(mutex); V(empty); consume the item in data_c;} } 问题的提出:对于生产者-消费者问题,如果将P操作的位置交换(即消费者进程先行),将产生什么样的后果? 消费者先行 死锁!因full初始值为0,不能再进行P(full) 产生死锁的四个必要条件 不剥夺条件 互斥条件 请求保持条件 环路条件 产生死锁的四个必要条件 ●互斥条件:指进程对所分配的资源进行排他性使用,即在一段时间内某资源只能有一个进程占有。 ● 请求和保持:进程已经占有了至少一个资源,但又提出了新的资源请求,而该资源已经被其他进程占有,此时进程阻塞,但对已经获得的资源保持不变。 ● 不可剥夺条件:进程已经获得了资源,在它使用完毕前,不能被剥夺,只能使用完毕自己释放。 ● 环路条件:在一个进程与资源的环链。在该链中,每一个进程都正在等待一个被占用的资源。 互斥是资源的固有属性,如对于文件,可以允许多个进程同时读,但不允许多个进程同时写,必须做到写互斥。 对于软件资源是这样,对于某些硬件资源更是如此,打印机,只能等到一个进程使用完毕,另一个进程才可以使用。打印机的使用也必须是互斥的。 互斥条件不可禁止 ● 死锁的预防 4.4死锁的预防与避免 采用预先静态分配方法 系统要求所有进程一次性地申请其所需的全部资源,如资源不足,就阻塞这个进程,直到所有的请求都得到满足为止。 优点: 方法简单 缺点: 进程延迟运行 资源浪费 用户有时提不出他要使用的全部资源 ● 死锁的预防 4.4死锁的预防与避免 去掉“请求保持条件” 方法 占有某些资源的进程,当它有新的资源请求被拒绝时,该进程停止运行,并释放它所占有的资源。当它再次被执行时,重新申请资源。 如果一个进程请求另一个进程占有的资源,操作系统可以剥夺后者占有的资源,要求它释放资源并将资源分配给前者使用 。 ● 死锁的预防 4.4死锁的预防与避免 去掉“不剥夺条件” 缺点 该策略实现起来比较复杂,而且要付出很大代价。 反复申请、释放,使进程执行无限延迟,不仅延迟了周转时间。还增加了系统开销,降低了系统吞吐量。 ● 死锁的预防 4.4死锁的预防与避免 去掉“不剥夺条件” 去掉“环路“条件 采用资源的有序分配 令所有资源排队,并赋予不同的序号。当进程请求资源时,必须严格按递增的次序提出,从而消除了环路。
原创力文档


文档评论(0)