进程同步与互斥的关系_第1页
进程同步与互斥的关系_第2页
进程同步与互斥的关系_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

进程同步与互斥的关系

在多道程序环境中,当程序同时运行时,由于资源共享和进程合作,同一系统中的进程之间可能存在相互干扰和直接制约的关系。信号机制是调整操作系统进步同步的常用工具,用于协调进程。1进程间的互斥进程的同步是指在异步环境下的并发进程因直接制约而互相发送消息,进行相互合作、相互等待,使得各进程按一定的速度执行的过程;而进程的互斥是由并发进程同时共享公用资源而造成的对并发进程执行速度的间接制约.无论是同步还是互斥,都是在执行的时间顺序上对并发进程的操作加以某种限制.对于互斥的进程,它们各自单独执行时都是正确的;同步的进程,它们各自单独执行会产生错误,必须互相配合共同推进,也就是说,同步条件高.同步一方面要互斥进入临界区使用临界资源,另一方面进入临界区有先后顺序.2pv操作一个信号量的建立必须经过说明,即应该准确说明s的意义和初值,信号量的值仅能由PV原语来改变.P操作是申请资源,它使信号量值减1,若结果非负,该进程继续,否则该进程被封锁;V操作是释放资源,它使信号量值增1,若结果大于零,该进程继续,否则从该信号量的等待队列中移出一个进程,解除它的等待状态.2.1售票厅社会资源用于互斥的信号量mutex与所有的并发进程有关,称之为公有信号量,公有信号量的值反映了可用该公有资源的数量.要实现进程互斥,只需用P(mutex)、V(mutex)框住临界区CS.程序如下:例1某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,厅外的购票者可立即进入,否则需要在外面等待.每个购票者可看成一个进程.分析:首先确定进程间的关系,售票厅是各进程共享的公有资源,当售票厅中多于20名购票者时,厅外的购票者需要在外面等待,所以进程间是互斥的关系;然后确定信号量及其值,只有一个公有资源:售票厅,所以设置一个信号量mutex.售票厅最多容纳20个进程,即可用该资源实体数为20,mutex的初值就设为20.程序如下:REPEATP(mutex);进入售票厅;购票;退出;V(mutex);UNTILfalse;由此可知,互斥信号量的初值可大于等于1(当售票厅内至多容纳1名购票者时,初值为1),初值取什么,关键是可用资源数.2.2基于pv原语的进程同步与进程互斥不同,进程同步时的信号量只与制约进程及被制约进程有关而不是与整组并发进程有关,所以称该信号量为私有信号量.利用PV原语实现进程同步的方法是:首先判断进程间的关系为同步的,且为各并发进程设置私有信号量;然后为私有信号量赋初值.进程通过调用P操作来测定自己需要的消息是否到达,通过调用V操作把其它进程需要的消息发送出去.2.2.1行完后才执行程序首先找出所有的前趋关系,然后对每一种前趋关系(如Si→Sj)专门设置一初值为0的信号量,并在Si结束之后执行对该信号量的V操作,而在Sj开始之前执行对该信号量的P操作,这样便可保证程序段Si执行完后才执行程序段Sj.例如图1有5个前趋关系,故设5个信号量S12、S13、S24、S25、S36、S46、S56,初值均为零,Sij表示第i个进程是否完成,第j个进程能否开始.上述方法考虑的是有向边的个数,我们也可以根据结点来设置信号量.在前趋图中,有几个有后继的结点,就设几个信号量,且初值为零,表示该结点表示的进程是否完成,此时,一个结点有几个后继,要做几次V操作.图1中,有5个结点有后继,故设5个信号量a、b、c、d、e初值均为零,分别表示P1、P2、P3、P4、P5是否执行完成,程序如下:注意:进程P1、P2分别有2个V(a)、V(b)操作,因为它们分别有2个后继.2.2.2规范开车行为,释放信号量例2在公共汽车上,司机和售票员各司其职.司机:正常行车、到站停车、启动开车;售票员:售票、开车门、关车门.司机和售票员之间应该密切配合,协调一致,以确保行车安全.请用PV操作实现司机和售票员之间的同步.分析:司机和售票员在到站、开门、关门、启动开车几件事情上存在有同步关系:到站后才能开门,关门后才能开车.用2个私有信号量stop、run分别表示可以开门和可以开车.由于初始状态是汽车行车和售票员售票,所以初值应该都为0,到站后才会有司机发消息让开门.程序如下:如果司机和售票员的工作流程如下,司机:启动开车、正常行车、到站停车;售票员:开车门、关车门、售票.此时,由于初始状态为停车而还没开门状态,设stop=1、run=0,2个程序为:需要注意的是2个进程同步时,程序编制和信号量初值有关.若S1=1,S2=0,则进程1为:P(S1)……V(S2),进程2为P(S2)……V(S1),即申请自己的信号量,释放对方的信号量;若S1=0,S2=0,则进程1为:……V(S2),P(S1),进程2为P(S2)……V(s1),即其中一个进程先执行,然后释放对方的信号量,再申请自己的信号量.3同步信号量与互斥信息有了上面的分析后,下面来考虑进程同步与互斥的混合问题.例3有一个仓库,可以存放A和B2种产品.要求:1)每次只能存入一种产品(A或B);2)-N<A产品数量-B产品数量<M.试用PV操作描述产品A与产品B的入库过程.分析:将放A产品看成一个进程,放B产品看成另一个进程,这2个进程单独执行会产生错误:产品数量不符合条件2),故2个进程是同步的.由条件2)知,B产品的数量不能比A产品的数量多N个以上,A产品的数量不能比B产品的数量多M个以上.即每次放A产品时先检查A产品的数量是否比B产品的数量多M个以上,若是,不允许放,放B产品时也做检查.因此设2个同步信号量,分别表示A产品比产品多入库的数量和B产品比A产品多入库的数量,由条件可知,初值分别为M-1和N-1.给出的条件1)是临界资源的访问控制,设一个互斥信号量来解决.需要说明的是,A进程中同步的P(sa)、V(sb)在外,互斥的P(mutex)、V(mutex)在内,B进程也如此.用PV操作实现进程同步与互斥时,应注意:1)对每一个共享资源(含变量)都要设立信号量,互斥时对一个共享资源设一个信号量,同步时对一个共享资源可能要设两个或多个信号量,视有几个进程来使用该共享变量而定;2)互斥时信号量的初值可大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论