06-进程管理-3.ppt

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

进程间的相互作用 多道程序环境中,多个进程间一方面要竞争使用有限的资源,另一方面可能需要合作完成一项共同的任务。这些关系的存在导致了进程之间的相互影响,在操作系统的设计中必须处理这些关系和影响。 可以把进程之间的相互关系归结为互斥和同步。 互斥(Mutual Exclusion):就是相互排斥(又叫排他),就是独占,就是竞争。 通常发生在如下情况下:多个进程共享某资源,而此资源每次只能由一个进程使用。 互斥的进程本来是互相独立的,只是由于竞争同一资源而互相制约(一个进程持有,其它进程等待)。 互斥的进程没有时间顺序关系,谁先申请资源,谁就能先得到,后申请者必须等待。 同步(Synchronization):同步就是协作,就是步调一致。具有同步关系的进程在执行的时间顺序上有确定的规律。 如生产者(Producer)和消费者(Consumer): 只有当仓库中有产品时,消费者才能消费;只有当仓库不满时,生产者才能生产。 互斥与同步区别: 具有同步关系的进程间在逻辑上不独立,它们有协作关系,执行的时间次序上要遵循确定的规律。 具有互斥关系的进程逻辑上完全独立,执行上不具有时间次序特征。 同步和互斥虽有区别,但关系非常密切,甚至可以把互斥看成同步的一种特例。事实上,很多地方干脆就把这个问题统称为进程的同步。 思考题: 例举两个现实生活中需要同步与互斥的例子 临界区和临界资源 临界资源(Critical resource):系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源。 临界区(Critical section):进程中访问同一临界资源的程序片段。也称为互斥区。 现实计算机系统的临界资源决定了各进程具有互斥影响。各进程临界区分布在各个进程中,由各进程的设计人员实现。 使用临界区的原则 有空让进:当无进程在临界区时,任何有权使用临界区 的进程可进入 无空等待:不允许两个以上的进程同时进入互斥区 多中择一:当没有进程在临界区,而同时有多个进程要 求进入临界区,只能让其中之一进入临界区, 其他进程必须等待 有限等待:任何进入互斥区的要求应在有限的时间内得 到满足 让权等待:处于等待状态的进程应放弃占用CPU,以使其 他进程有机会得到CPU的使用权 进程的相互作用(软) 最先想到的办法是纯软件的:规定各进程使用临界资源的方法,即给使用临界资源的进程规定一个使用协议(Protocol),通过该协议保护临界资源。协议如下。 1、各进程对临界资源的使用必须经过如下三步: (1)申请、(2)使用、(3)释放。 不能越过申请而直接使用临界资源。 因此,各进程临界区的格式如下: Entercritical(R); //申请进入临界区 critical section Exitcritical(R); //退出临界区 软件解法1:轮流使用。轮到的进程使用一次,而后等待再次被轮到。 int turn=0; // 全局共享变量 改进的方法是:给每个进程一个标牌(Flag),使用资源的进程将自己的标牌挂在入口处。进程在使用资源之前,先到入口处检查,如发现有标牌,则等待;否则挂上自己的标牌,进入临界区使用。使用完后,再摘牌、推出。 软件解法2:先检查,再挂牌。 int flag[2]={0,0}; // 全局共享变量 软件解法3:先挂牌,再检查。 int flag[2]={0,0}; // 全局共享变量 软件解法4(Peterson算法): int turn=0,flag[2]={0,0}; // 全局共享变量 上述的纯软件解决方案过于复杂,不够规范,其正确性难以验证。 仔细分析各种解决方案,我们发现为了保证对临界资源的互斥访问,在进入临界区之前(Entercritical)需要做如下工作: 1、检查,是否有别的进程在临界区中。 2、挂牌,表示自己进入临界区。 导致纯软件解决方案困难的主要原因是:上述两个操作的非原子性,即两个操作能够被隔开,能够在中间插入别的操作,尤其是竞争进程的操作(交叉)。 如果能保证检查与挂牌操作的原子性,互斥的入口程序就比较容易实现。 进一步说,如果能保证对临界资源操作的原子性,或者说临界区的原子性,那么互斥问题就很容易解决,甚至不再存在。 要保证操作的原子性,必须借助硬件的支持。 实际上,目前许多的处理器都提供了此类支持。 锁操作---实现互斥 为解决进程互斥进入临界区的问题,可为每类临界资源设置一把锁

文档评论(0)

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

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档