您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 软件工程 > 第三章 进程管理中进程通信
13.7进程通信一.含义和分类通信(communication):进程间传送数据OS可以被看作是各种进程组成的。如用户进程、打印进程,计算进程、这些进程都具有各自的独立功能.进程通信分类:根据通信内容可以划分为低级通信和高级通信传送。2分类低级通信:进程间控制信息的交换称为低级通信;低级通信一般只传送一个或几个字节的信息,以达到控制进程执行速度的作用。高级通信:进程间大批量数据的交换称为高级通信。高级通信要传送大量数据。高级通信的目的不是为了控制进程的执行速度,而是为了交换信息。3二.通信方式(1)主从式主要特点:①主进程可自由使用从进程的资源或数据。②从进程的动作受主进程的控制;③主进程和从进程的关系是固定的。典型例子:终端控制进程和终端进程。4(2)会话式即直接通信方式,具有如下特点:①P1在使用P2所提供的服务之前,必须得到P2的许可;②P2根据P1要求提供服务,但对所提供服务控制由P2自身完成。③P1和P2在通信时才有固定连接关系。例子:用户进程Pu与磁盘管理进程Pm之间各Pu向Pm提出使用要求并得到许可之后,才可以使用相应的存储区,操作时受Pm控制,在结束磁盘访问时断开连接.5(3)消息或邮箱机制特点①只要存在空缓冲区或邮箱,发送进程就可以发送消息。②与会话系统不同,发送进程和接收进程之间无直接连接关系,接收进程可能在收到某个发送进程发来的消息之后,又转去接收另一个发送进程发来的消息。③发送进程和接收进程之间存在缓冲区或邮箱用来存放被传送消息。6(4)共享存储区方式共享存储区方式不要求数据移动。两个需要互相交换信息的进程通过对同一共享数据区的操作来达到互相通信的目的。这个共享数据区是每个互相通信进程的一个组成部分.7三.消息缓冲机制工作过程:发送进程在发送消息前,先在自己的内存空间设置一个发送区,把欲发送的消息填入其中,然后再用发送过程将其发送出去。接收进程则在接收消息之前,在自己的内存空间内设置相应的接收区,然后用接收过程接收消息。8两通信进程必须满足如下条件①、在发送进程把消息写入缓冲区和把缓冲区挂入消息队列时,应禁止其他进程对该缓冲区消息队列进行访问。②、当缓冲区无消息时,则接收进程不能接收到任何消息。(无消息不取)③、发送进程未申请到缓冲区,不可以发送消息.(无缓冲不放)9描述:设互斥信号量mutex=1,设S为接收进程的私用信号量,表示等待接收的消息个数,其初值为S=0。A(){P(mutex)放V(mutex)V(S)}B(){P(mutex)放V(mutex)P(S)}10四.邮箱机制邮箱:一种共享的数据结构的实体,用来暂存发送进程发送给接收进程的消息.发送进程把消息送往邮箱,接收进程从邮箱中取出消息,来完成进程间信息交换。对于只有一发送进程和一接收进程使用的邮箱,则应满足条件:①、发送进程发送消息时,邮箱中至少要有一个空格能存放该消息。②、接收进程接收该消息时,邮箱中至少要有一个消息存在。11解:设Se为发送进程的私用信号量,空邮箱的数量初值Se=n,Sf为接收进程的私用信号量,满邮箱的数量,初值Sf=0(1)A--BP(Se)V(Sf)(2)A--BP(Sf)V(Se)A(){P(Se)SendV(Sf)}B(){P(Sf)ReceiveV(Se)}123.8死锁(Deadlock)定义(教材):是指各并发进程互相等待对方所拥有的资源,且它们在得到对方的资源之前不释放自己拥有的资源,从而造成资源的互相占有和互相等待,使各并发进程不能向前推进的状态。定义(汤):多个进程因争夺资源而造成的一种僵持。13那些会引起死锁A(){P(Sc)…V(Sc)…P(Sd)…V(Sd)}B(){P(Sc)…P(Sd)…V(Sd)…V(Sc)}C(){P(Sd)…V(Sd)…P(Sc)…V(Sc)}D(){P(Sd)…P(Sc)…V(Sc)…V(Sd)}14死锁的起因死锁的起因是由于并发进程的资源竞争系统提供的资源个数少于并发进程所要求的该类资源数。可以采用适当的资源分配算法,以达到消除死锁的目的。15产生死锁的四个必要条件①、互斥使用对于独占资源,每个资源每次只能给一个进程使用,进程一旦申请到了资源后占为己有,则排斥其他进程享受该资源。②、不可剥夺正在使用的资源不可剥夺,进程获得的资源尚未使用完毕之前,只能由占有者自己释放,不能被其他进程强行占有。16③、部分分配进程因未分配到新的资源而受阻,但对已经占有的资源又抱住不放。④、循环等待存在进程的循环等待链,前一进程占有的资源正是后一进程所需求的资源,结果形成了循环等待的僵持局面。17死锁排除方法(1)预防死锁(2)避免死锁(3)检测死锁(4)解除死锁18死锁的预防在系统设计时确定资源分配算法,保证不发生死锁。做法是保证在任何时刻产生死锁的四个必要条件中至少有一个不能成立①破坏互斥条件:允许多个进程同时访问资源。但是这受到资源本身固有特性的限制,有些资源根本不能同时访问,只能互斥访问。如打印机只能互斥使用。19②破坏不可剥夺条件:规定一个已经获得某些资源的进程,若新的资源请求不能立即得到满足,则必须释放所有已经获得的资源,以后需要再重新申请。③破坏“部分分配”条件:要求每个进程在运行前必须一次性申请它所要求的所有资源,若资源得不到满足则不分配给它,进程等待。④破坏“循环等待”条件:采用资源有序分配法:把系统中所有资源编号,进程在申请资源时必须严格按资源编号的递增次序进行,否则操作系统不予分配。20死锁的避免产生死锁的四个必要条件有可能成立,但在资源动态分配的过程中使用某种办法防止系统进入不安全和死锁状态,这就是死锁的避免;通过一些算法,如著名的银行家算法21系统安全状态系统的状态分为安全状态和不安全状态,只要系统始终处于安全状态,便可避免发生死锁。①安全状态:若在某一时刻,系统能按某种顺序,如P1、P2、…Pn来为每个进程分配其所需的资源,直至最大需求,使每个进程都能顺利地完成。其中P1,…,Pn称为安全序列22②不安全状态:系统无法找到上述这样一个序列,则称系统处于不安全状态;系统进入不安全状态后,便可能进入死锁状态,反之,只要系统处于安全状态,系统便可避免进入死锁状态。23③安全状态例子有进程P1,P2和P3,共12台磁带机。P1总要10台,P2和P3分别要求4台和9台。在T0时刻,进程P1、P2和P3已分别获得5台、2台和2台磁带机,尚有3台空闲未分配,如表所示:24进程最大需求已分配可用P1P2P310495223在T0时刻是安全的因为存在安全序列P2,P1,P325由安全向不安全状态的转换如果不按照安全序列分配资源,则系统可能会由安全状态进入不安全状态。例如,在T0时刻以后,P3又请求1台磁带机,若此时系统把剩余3台中的1台分配给P3,则系统便进入不安全状态。此时也无法再找到一个安全序列,它们都无法推进,彼此都在等待对方释放资源,即陷入僵局,结果导致死锁。26死锁的检测允许系统产生死锁,然后使用资源分配图或检测算法及时地发现它。检测时机:1.当进程等待时检测死锁系统的开销大2.定时检测3.系统资源利用率下降时检测死锁27检测方法-资源分配图表示法资源类:一类资源称为一个资源类,用方框表示;资源实例:每个资源类中包含若干个同种资源,用圆点表示。进程:用圆圈中加进程名表示分配边:资源→进程的一条有向边申请边:进程→资源类的一条有向边28资源分配图例将产生死锁R1R2P1P229死锁定理死锁定理:当且仅当S的状态的资源分配图是不可完全简化的.如果资源分配图中没有环路,则系统中没有死锁,如果图中存在环路则系统中可能存在死锁。30判断死锁的实例P1P2P3P4132431死锁的解除以最小的代价解除死锁,恢复系统的运行,方法如下:①、资源剥夺法:当发现死锁后,从其他进程剥夺足够数量的资源给死锁进程,以解除死锁状态。②、撤消进程法:采用强制手段从系统中一个或一部分死锁进程,并剥夺这些进程的资源供其他死锁进程使用。
本文标题:第三章 进程管理中进程通信
链接地址:https://www.777doc.com/doc-3376227 .html