第5章 资源分配与调度.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 计算机操作系统 第五章 资源分配与调度 * 本章要点 两种资源分配方式 静态分配 动态分配 死锁 定义、起因、产生死锁的必要条件、不产生死锁的最小资源数 规避死锁的方法 预防 避免 检测与恢复 ?银行家算法 * 5.1资源管理概述 1、操作系统对资源管理和分配的目标 保证资源有高的利用率; 在合理的时间内使所有用户进程具有获得所需资源的机会;(尽可能满足更多用户的需求) 对不可共享的资源实施互斥使用; 防止由于资源分配不合理而引起的死锁。 * 5.1资源管理概述 2、资源分配的两种方式 静态分配:在作业级实施 当一个作业运行前,将它要求的所有资源一次性分配给该作业,直到该作业完成时释放其占用的所有资源,分配给作业的资源伴随作业的整个运行过程。 缺点:效率太低 动态分配:在进程级实施 当一个进程要求使用某个(类)资源时,向系统提出资源的请求,系统响应进程的请求将某种资源分配给进程,进程使用完毕后立即释放该资源 优点:系统资源的利用率提高 缺点:有可能造成死锁 * 5.3死锁 分配 分配 请求 请求 P1 P2 R1 R2 图 5?1一种死锁状态 5.3.1死锁的定义与例子 [例1]:假设系统中有P1、P2两个进程并发执行,P1和P2在执行中都同时需要资源R1和R2,R1和R2都是一次只能给一个进程使用的临界资源,如左图所示。而右图则标示了系统在某种资源分配方式下产生的死锁状态。 * 算法描述: main() { int full=0; int empty=n; int mutex=1; cobegin produceri(); consumerj(); coend } /*某个生产者进程i*/ produceri() { while(生产未完成) { 生产一个产品; P(empty);//请求缓冲区有空条件 P(mutex); //请求进入临界区 送一个产品到缓冲区; //临界区 V(mutex); //释放临界区 V(full); //释放缓冲区有数条件 } } /*某个消费者进程j*/ cosumerj() { while(还要继续消费) { P(full); //请求缓冲区有数条件 P(mutex); //请求进入临界区 从缓冲区中取一个产品;//临界区 V(mutex); //释放临界区 V(empty); //释放缓冲区有空条件 消费产品; } } 例[2]多个生产者、多个消费者共享多个缓冲区 5.3.1死锁的定义与例子 * /*某个生产者进程i*/ produceri() { while(生产未完成) { 生产一个产品; P(mutex); //请求进入临界区 P(empty); //请求缓冲区有空条件 送一个产品到缓冲区; //临界区 V(mutex); //释放临界区 V(full); //释放缓冲区有数条件 } } /*某个消费者进程j*/ cosumerj() { while(还要继续消费) { P(full); //请求缓冲区有数条件 P(mutex); //请求进入临界区 从缓冲区中取一个产品;//临界区 V(mutex); //释放临界区 V(empty); //释放缓冲区有空条件 消费产品; } } 将mutex与empty(或full)信号量的申请颠倒: 5.3.1死锁的定义与例子 * 死锁的定义 死锁:系统中所有的并发进程彼此互相等待对方所拥有的资源,且它们在得到对方资源之前不会释放自己所拥有的资源,从而造成互相死等,却永远等不到的一种任一进程都不能继续运行的系统状态。 在死锁状态下,进程都处于阻塞态,解除它们阻塞的事件或条件永远也不会发生 5.3.1死锁的定义与例子 * 5.3.2产生死锁的原因和必要条件 产生死锁的根本原因:系统资源不足 死锁是资源竞争和资源分配不合理两个因素同时作用所产生的可能结果 资源不足 资源共享 资源竞争 合理分配 不合理分配 提高资源利用率 死锁 * 5.3.2产生死锁的原因和必要条件 如果不考虑资源分配的合理性,若要不产生死锁,则资源的个数必须满足以下条件(即系统不会产生死锁的最小资源数): 设系统所拥有的资源总数为M,共享该资源的进程数为P,每个进程所需使用该资源的最大需求为N,则   M≥P*(N-1)+1 时 无论如何分配都不会产生死锁。 * 5.3.2产生死锁的原因和必要条件 证明方法一: ∵不产生死锁的条件是至少有一个进程能运行,其分配的极端情况是:当每个进程都占有了N-1个该类资源,只缺一个即可

文档评论(0)

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

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

版权声明书
用户编号:7060131150000004

1亿VIP精品文档

相关文档