网站大量收购闲置独家精品文档,联系QQ:2885784924

第2章进程管理03-景雨.ppt

  1. 1、本文档共72页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 进程管理 主讲教师:景雨 知识回顾与展开 在上一节课中我们主要介绍了: 1. 进程控制 进程图与进程控制任务 内核 原语 2. 线程 线程的引入 线程的概念 线程的特点 进程和线程的比较 知识回顾与展开 在本节课,我们学习2.4节进程同步与互斥 2.4 进程同步与互斥 教学目的和要求 了解同步互斥问题的原因 掌握临界区和信号量概念 掌握解决简单同步互斥问题的信号量方法 重点 临界区和信号量概念 难点 应用信号量解决同步互斥问题 互斥问题 例子1:两个进程共享打印机 同步问题 例子2:两个程序对共享变量x的读/写 进程的互斥与同步 在多道程序系统中,由于资源共享或进程合作,使进程间形成间接相互制约和直接相互制约关系。 这种相互依赖、相互合作又相互竞争的关系,意味着进程间需要用某种形式的通信来实现,主要表现为进程互斥与同步两方面。 进程同步: 直接制约:“进程—进程” 进行协作--等待来自其他进程的信息,否则就进行不下去,“同步”。 概念:指系统中多个进程中发生的事件存在某种时序关系,必须协同动作,相互配合,从而共同完成一项任务。 一个进程运行到某一点时要求另一伙伴进程为它提供消息,在未获得消息之前,该进程处于等待(阻塞)状态,获得消息后被唤醒进入就绪状态。 进程互斥: 间接制约:“进程—资源—进程” 进行竞争--独占分配到的部分或全部共享资源,等待释放后才能使用,“互斥”。 概念:有些资源需要互斥使用,因此各进程间要相互竞争,以使用这些互斥资源,进程的这种关系为进程的互斥。 解决进程互斥有两种办法: 1.由竞争各方平等协商。 2.引入进程管理者,由管理者来协调竞争各方对互斥资源的使用。 系统中某些软件或者硬件资源一次只允许一个进程使用,称这样的资源为临界资源 或互斥资源 或共享变量。 如:外设(打印机、磁带机、绘图仪等)、共享代码段、共享数据结构等。 临界资源 两个进程共享打印机 系统中资源的共享程度 进程的制约关系 临界区的访问过程 临界区的访问过程 进入区(entry section) 检查当前进程可否进入临界区的一段代码。 如果当前进程可以进入临界区,通常设置相应“正在访问临界区”标志,防止其他进程同时进入临界区。 临界区(critical section) 进程中访问临界资源的一段代码。 退出区(exit section) 用于将“正在访问临界区”的进程的标志清除。 剩余区(remainder section) 代码中的其余部分。 进程同步机制应遵循的准则 空闲让进: 当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程立刻进入自己的临界区,以有效地利用资源。 忙则等待: 当已有进程进入临界区时,表明临界资源正在被访 问,因此其他试图进入临界区的进程必须等待,以保证 对临界资源的互斥访问。 有限等待: 等待进入临界区的进程不能无限期死等; 让权等待: 在进入区等待而不能进入临界区的进程应释放处理机,转换到阻塞状态,给其它进程用。 进程互斥的软件方法 通过平等协商方式实现进程互斥的最初方法是软件方法。 软件方法基本思路: 在进入区检查和设置一些标志,如果已有进程在临界区,则在进入区通过循环检查进行等待;在退出区修改标志。 其中的主要问题: 设置什么标志和如何检查标志。 进程互斥的软件方法 有两个进程Pi, Pj, 缺点: 强制轮流进入临界区。 容易造成资源利用不充分。 (在Pi出让临界区之后,Pj使用临界区之前,Pi不能再次使用临界区。) 算法2:双标志、先检查后修改 设立一个标志数组flag[]: 描述是否有进程在临界区,初值均为FALSE(未使用临界资源)。 算法2:双标志、先检查后修改 优点: 不用交替进入,可连续使用。 算法2:双标志、先检查后修改 缺点: Pi和Pj可能同时进入临界区。 按下面序列执行时,会同时进入: “Pia Pja Pib Pjb”。 即在检查对方flag之后和切换自己flag之前有一段时间,结果双方都检查通过。 问题出在检查和修改操作不能连续进行。 算法3:双标志、先修改后检查 类似于算法2,与算法2的区别在于:先修改后检查;flag[]表是否想进入临界区。 缺点:Pi和Pj可能都进入不了临界区。 按下面序列执行时,会都进不了临界区:“Pia Pja Pib Pjb”。 即在切换自己flag之后和检查对方flag之前有一段时间,结果都切换flag,结果都检查不通过。 算法4:先修改、后检查、后修改者等待 结合算法1和算法3,是正确的算法。turn描述 标志修改的先后,flag

文档评论(0)

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

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

版权声明书
用户编号:7060131150000004

1亿VIP精品文档

相关文档