第二章 进程管理(4).ppt

上传人:s****8 文档编号:69248137 上传时间:2023-01-01 格式:PPT 页数:32 大小:276KB
返回 下载 相关 举报
第二章 进程管理(4).ppt_第1页
第1页 / 共32页
第二章 进程管理(4).ppt_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《第二章 进程管理(4).ppt》由会员分享,可在线阅读,更多相关《第二章 进程管理(4).ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2.5 2.5 管管 程程 机机 制制 1 1、管程的基本概念、管程的基本概念 F管程的定义:管程的定义:管程是用抽象数据类型或面向对象方法来表示可共享管程是用抽象数据类型或面向对象方法来表示可共享资源,并通过此数据类型实现并发进程访问资源的同步性。资源,并通过此数据类型实现并发进程访问资源的同步性。F简单地讲:简单地讲:管程就是用对象来代替共享的软硬件资源,并用对象所管程就是用对象来代替共享的软硬件资源,并用对象所提供的操作接口来实现并发进程对共享资源(对象数据)的访问和提供的操作接口来实现并发进程对共享资源(对象数据)的访问和同步。同步。F举例:举例:临界资源打印机:临界资源打印机:ADT

2、 printer ADT printer 属性:名称;型号;结构;性能,状态;数量等;属性:名称;型号;结构;性能,状态;数量等;操作:操作操作:操作1 1();操作();操作2 2();();操作;操作n n();();初始化:给属性值赋初始值;初始化:给属性值赋初始值;/ADT printer /ADT printer 淮海工学院计算机科学系淮海工学院计算机科学系F管程由三部分组成:管程由三部分组成:局部于管程(资源对象)的共享变量说局部于管程(资源对象)的共享变量说明;明;对管程(资源对象)数据进行操作的一组过程;对管程(资源对象)数据进行操作的一组过程;对局对局部于管程的数据设置初始值

3、的语句。此外,还须为管程赋予一个部于管程的数据设置初始值的语句。此外,还须为管程赋予一个名字。名字。F使用管程的要点:使用管程的要点:进程只能通过管程所提供的接口来访问管程;进程只能通过管程所提供的接口来访问管程;管程内的共享数据(共享变量)只能由管程所提供的操作来改变;管程内的共享数据(共享变量)只能由管程所提供的操作来改变;管程每次只准许一个进程进入管程,依此实现进程互斥。管程每次只准许一个进程进入管程,依此实现进程互斥。淮海工学院计算机科学系淮海工学院计算机科学系图图 2-11 2-11 管程的示意图管程的示意图 淮海工学院计算机科学系淮海工学院计算机科学系管程的定义和描述语法为:管程的

4、定义和描述语法为:type monitor-name=monitor variable declarations procedure entry P1();begin end;procedure entry P2();begin end;procedure entry Pn();begin end;begin initialization code;end 淮海工学院计算机科学系淮海工学院计算机科学系2.2.条件变量条件变量 管管程程条条件件:就就是是为为实实现现并并发发进进程程访访问问管管程程中中共共享享资资源源而而必必须须同同步步的的条条件件,并并以以条条件件变变量量来来定定义义。例例如如

5、:生生产产者者消消费费问问题题中中有有没没有有空空缓缓冲冲区和满缓冲区。注意:只是条件,而非信号量。区和满缓冲区。注意:只是条件,而非信号量。条件变量定义:条件变量定义:管程中对每个条件变量都须予以说明,其形式为:管程中对每个条件变量都须予以说明,其形式为:VarVar x x,y:conditiony:condition使用方法:使用方法:X.waitX.wait和和X.signalX.signal,含义分别为阻塞和唤醒一个进程。,含义分别为阻塞和唤醒一个进程。举举例例:PCPC问问题题中中描描述述缓缓冲冲池池中中是是否否有有空空缓缓冲冲区区和和满满缓缓冲冲区区,可可声声明明为为条条件件变变

6、量量notemptynotempty和和notfullnotfull,即即notempty,notfull:conditioncondition。此此时时,waitwait原原语语应应改改为为notempty.waitnotempty.wait,含含义义是是没没有有满满缓缓冲冲区区则则被被阻阻塞塞(等等待待);signalsignal应应改改为为notempty.signalnotempty.signal,含含义义为为如如果果notempty等待队列非空,启动一个被阻塞的进程。等待队列非空,启动一个被阻塞的进程。淮海工学院计算机科学系淮海工学院计算机科学系特特别别注注意意:X.signalX.

7、signal操操作作的的作作用用,是是唤唤醒醒一一个个为为等等待待条条件件X X而而被被阻阻塞塞的的进进程程,但但如如果果没没有有被被阻阻塞塞的的进进程程,则则X.signalX.signal操操作作不不产产生生任任何何后后果果。这这与与信信号号量量机机制制中中的的signalsignal操操作作不不同同。因因为为,后后者者总总是是要要执执行行s=s+1s=s+1操作,因而总会改变信号量的状态。操作,因而总会改变信号量的状态。执执行行顺顺序序:如如果果有有进进程程QQ处处于于阻阻塞塞状状态态,当当进进程程P P执执行行了了X.signalX.signal操操作作后后,怎怎样样决决定定由由哪哪个

8、个进进行行执执行行,哪哪个个等等待待,采采用用下下述述两两种种方方式式之之一进行处理:一进行处理:1)P1)P等待,直至等待,直至QQ离开管程或等待另一条件。离开管程或等待另一条件。2)Q2)Q等待,直至等待,直至P P离开管程或等待另一条件。离开管程或等待另一条件。淮海工学院计算机科学系淮海工学院计算机科学系3 3 利用管程解决生产者利用管程解决生产者-消费者问题消费者问题 生产者生产者-消费者问题的管程定义消费者问题的管程定义建建立立PCPC管管程程:为为生生产产者者消消费费者者问问题题建建立立一一个个管管程程,命命名名PCPC。管程以缓冲池为共享变量(资源),并包括两个过程:管程以缓冲池

9、为共享变量(资源),并包括两个过程:put(itemput(item)过过程程:生生产产者者利利用用该该过过程程将将自自己己生生产产的的产产品品投投放放到到缓缓冲冲池池中中,并并用用整整型型变变量量countcount来来表表示示在在缓缓冲冲池池中中已已有有的的产产品品数数目目,当当countncountn时,表示缓冲池已满,生产者须等待。时,表示缓冲池已满,生产者须等待。get(itemget(item)过过程程:消消费费者者利利用用该该过过程程从从缓缓冲冲池池中中取取出出一一个个产产品品,当当count0count0时时,表表示示缓缓冲冲池池中中已已无无可可取取用用的的产产品品,消消费费者

10、者应应等等待待。条条件件变变量量:notfullnotfull、notemptynotempty分分别别为为等等待待不不满满缓缓冲冲区区(count count n n)区和等待不空缓冲区()区和等待不空缓冲区(count0)的条件变量。的条件变量。淮海工学院计算机科学系淮海工学院计算机科学系type producer-consumer=monitor Var in,out,count:integer;buffer:array0,n-1 of item;notfull,notempty:condition;procedure entry put(item)/放产品过程放产品过程 begin i

11、f countn then notfull.wait;/等待不满缓冲区队列等待不满缓冲区队列 buffer(in)=nextp;in:=(in+1)mod n;count:=count+1;if notempty.queue then notempty.signal;/唤醒等待不空进程队列中的一个进程唤醒等待不空进程队列中的一个进程 end淮海工学院计算机科学系淮海工学院计算机科学系 procedure entry get(item)begin if count0 then notempty.wait;nextc:=buffer(out);out:=(out+1)mod n;count:=co

12、unt-1;if notfull.quene then notfull.signal;end begin in:=out:=0;/初始化初始化 count:=0;end 淮海工学院计算机科学系淮海工学院计算机科学系利用管程解决利用管程解决PCPC问题时,生产者和消费者并发进程的描述:问题时,生产者和消费者并发进程的描述:producer:begin repeat produce an item in nextp;PC.put(item);until false;end consumer:begin repeat PC.get(item);consume the item in nextc;un

13、til false;end 淮海工学院计算机科学系淮海工学院计算机科学系2.6 2.6 进程通信进程通信(communication)(communication)进程通信:进程通信:进程之间的信息交换称为进程通信。进程之间的信息交换称为进程通信。进程通信信息量少则是一个状态或数据,多则成千上万字节的。进程通信信息量少则是一个状态或数据,多则成千上万字节的。例如:进程之间的同步(包括互斥和合作)需要交换信息,临界例如:进程之间的同步(包括互斥和合作)需要交换信息,临界资源互斥只要一个状态信息,资源互斥只要一个状态信息,PC问题以缓冲区为单位交换信息。问题以缓冲区为单位交换信息。按通信所交换的数

14、据量多少,将进程通信分为低级通信和高级通按通信所交换的数据量多少,将进程通信分为低级通信和高级通信两种方式。信两种方式。淮海工学院计算机科学系淮海工学院计算机科学系低级通信低级通信低级通信低级通信:进程之间只交换少量数据的通信方式。:进程之间只交换少量数据的通信方式。一般只传送一个和几个字节的信息,以达到进程同步合作之目的。一般只传送一个和几个字节的信息,以达到进程同步合作之目的。因此,因此,进程的同步通信由于通信量少而被归结为低级通信。进程的同步通信由于通信量少而被归结为低级通信。缺点:缺点:传输效率低;传输效率低;通信对用户不透明。通信对用户不透明。高级通信高级通信高级通信高级通信:进程(

15、用户)之间进程(用户)之间进程(用户)之间进程(用户)之间可以直接利用操作系统所提供的一组可以直接利用操作系统所提供的一组通信原语,而实现高效、大批量地交换数据的通信方式通信原语,而实现高效、大批量地交换数据的通信方式。优点:优点:传输效率高;传输效率高;通信过程对用户是透明的。通信过程对用户是透明的。淮海工学院计算机科学系淮海工学院计算机科学系1 1、高级进程通信的类型、高级进程通信的类型 目目前前高高级级通通信信方方式式分分为为三三大大类类:共共享享存存储储器器系系统统、消消息息传传递递系系统统、管管道通信系统。(主要以通信实施方式和数据交换方式来分)道通信系统。(主要以通信实施方式和数据

16、交换方式来分)1 1、共享存储器系统、共享存储器系统(Shared-Memory System)(Shared-Memory System)共享存储器系统细分为两种:共享存储器系统细分为两种:1 1)基于共享数据结构的通信方式:)基于共享数据结构的通信方式:诸进程共享某一公用数据结构来实诸进程共享某一公用数据结构来实现信息的交换。如现信息的交换。如PCPC问题,利用了缓冲区数据结构。特点:进程问题,利用了缓冲区数据结构。特点:进程负责数据结构的维护与同步,实属低级通信。负责数据结构的维护与同步,实属低级通信。2 2)基于共享存储区的通信方式()基于共享存储区的通信方式(共享内存区):共享内存区

17、):在内存中划出一块共在内存中划出一块共享存储区,供进程通信使用。方法是:诸进程申请分区作为进程享存储区,供进程通信使用。方法是:诸进程申请分区作为进程资源,读写公共分区实施将换信息。特点:大批量数据通信。资源,读写公共分区实施将换信息。特点:大批量数据通信。淮海工学院计算机科学系淮海工学院计算机科学系2.2.消息传递系统消息传递系统(Message passing system)(Message passing system)在在目目前前计计算算机机系系统统中中(单单机机、多多机机、网网络络系系统统),消消息息传传递递机机制制都都是用得最广泛的一种进程间通信的机制。是用得最广泛的一种进程间通

18、信的机制。消消息息(messagemessage):消消息息也也称称为为(计计算算机机网网络络中中)报报文文,指指进进程程之之间间为为相相互互传传递递信信息息所所使使用用的的一一种种格格式式化化或或结结构构化化的的数数据据集集合合,也也是是信信息交换的基本单位。息交换的基本单位。特特点点:进进程程间间数数据据交交换换以以消消息息为为单单位位;利利用用系系统统提提供供的的一一组组通通信信命命令令(原原语语send()send()和和receive()receive())进进行行通通信信;消消息息队队列列与与同同步步等等OSOS内内核核管理,透明、高效;消息传递系统的通信属于高级通信方式。管理,透

19、明、高效;消息传递系统的通信属于高级通信方式。淮海工学院计算机科学系淮海工学院计算机科学系3.3.管道管道(Pipe)(Pipe)通信通信管管道道定定义义:管管道道是是指指用用于于连连接接一一个个读读进进程程和和一一个个写写进进程程以以实实现现他他们们之间通信的一个共享文件,又名之间通信的一个共享文件,又名pipepipe文件。文件。通通信信方方法法:发发送送进进程程(写写进进程程)向向管管道道(共共享享文文件件)以以字字符符流流形形式式将将大大量量的的数数据据送送入入管管道道;而而接接收收进进程程(即即读读进进程程)只只需需要要接接收收来来自自于于管管道的输出数据,即可实现通信之目的。道的输

20、出数据,即可实现通信之目的。管管道道资资源源:管管道道为为互互斥斥的的临临界界资资源源;进进程程间间必必须须同同步步访访问问(类类似似PCPC问题中的缓冲区,但问题中的缓冲区,但pipepipe不限长),这些需要管道机制提供。不限长),这些需要管道机制提供。特特点点:大大批批量量数数据据交交换换;管管道道中中的的消消息息是是长长短短无无界界的的;管管道道是是基基于于外存文件的。外存文件的。淮海工学院计算机科学系淮海工学院计算机科学系2.6.2 2.6.2 消息传递通信的实现方法消息传递通信的实现方法 在在消消息息传传送送机机制制通通信信中中,原原进进程程(发发送送进进程程)可可以以直直接接或或

21、间间接接将将消消息息发送给接收进程,则将消息通信划分为直接或间接通信。发送给接收进程,则将消息通信划分为直接或间接通信。1.1.直直接接通通信信方方式式:指指发发送送进进程程利利用用OSOS所所提提供供的的发发送送命命令令,直直接接把把消消息息发发送送给给目目标标进进程程。此此时时,要要求求发发送送进进程程和和接接收收进进程程都都以以显显式式方方式式提提供对方的标识符。供对方的标识符。2.2.通信原语:通信原语:Send(Receiver,message)Send(Receiver,message);发送一个消息给接收进程;发送一个消息给接收进程;Receive(Sender,message)

22、Receive(Sender,message);接收;接收SenderSender发来的消息;发来的消息;例例如如:原原语语Send(PSend(P2 2,mm1 1)表表示示将将消消息息mm1 1发发送送给给接接收收进进程程P P2 2;而而原原语语ReceiveReceive(P(P1 1,mm1 1)则表示接收由则表示接收由P P1 1发来的消息发来的消息mm1 1。淮海工学院计算机科学系淮海工学院计算机科学系利利用用直直接接通通信信原原语语来来解解决决生生产产者者-消消费费者者问问题题。生生产产者者-消消费费者者的的通通信信过过程程可可分别描述如下:分别描述如下:repeat prod

23、uce an item in nextp;send(consumer,nextp);until false;repeat receive(producer,nextc);consume the item in nextc;until false;作业:如何用消息通信解决生产者-消费者问题?淮海工学院计算机科学系淮海工学院计算机科学系用消息实现生产者用消息实现生产者消费者消费者#include“prototypes.h”#define N 100 /*缓冲区的个数缓冲区的个数*/void prodecer(void)int item;message m;/*m:消息缓冲区消息缓冲区*/while

24、(TRUE)produce_item(&item);/生产消息项生产消息项 receive(consumer,&m);/*等待一条空消息到达等待一条空消息到达*/Build_message(&m,item);/*构造一条消息供发送构造一条消息供发送*/Send(consumer,&m);/*向消费者发送该消息向消费者发送该消息*/淮海工学院计算机科学系淮海工学院计算机科学系用消息实现生产者用消息实现生产者消费者消费者Void consumer(void)int item;message m;for(int i=0;iN;i+)send(producer,&m);/*发送发送N条空消息条空消息*

25、/while(TRUE)receive(producer,&m);/*收到一条有数据的消息收到一条有数据的消息*/extract_item(&m,&item);/*从消息中提取数据从消息中提取数据*/send(producer,&m);/*回送空消息作为应答回送空消息作为应答*/consumer_item(item);/*消费得到的数据消费得到的数据*/结论:信号量、管程和消息通信机制三者等价!淮海工学院计算机科学系淮海工学院计算机科学系2.2.间间接接通通信信方方式式:是是指指进进程程之之间间的的通通信信,需需要要通通过过一一个个共共享享的的数数据据结结构构(邮邮箱箱)来来实实现现。即即发发

26、送送进进程程将将消消息息发发送送到到邮邮箱箱,接接收收进进程程再再从从邮邮箱箱中取走消息。系统提供了信箱创建、撤消,消息发送和接收等原语。中取走消息。系统提供了信箱创建、撤消,消息发送和接收等原语。F信信箱箱创创建建和和撤撤消消原原语语:进进程程可可利利用用信信箱箱创创建建原原语语来来建建立立一一个个新新信信箱箱。创创建建者者进进程程应应给给出出信信箱箱名名字字、信信箱箱属属性性(公公用用、私私用用或或共共享享);对对于于共共享享信信箱箱,还还应应给给出出共共享享者者的的名名字字;当当进进程程不不再再需需要要读读信信箱箱时时,可可用用信信箱撤消原语将之撤消。箱撤消原语将之撤消。F消消息息的的发

27、发送送和和接接收收原原语语:当当进进程程之之间间要要利利用用信信箱箱进进行行通通信信时时,必必须须使使用共享信箱,并利用系统提供的下述通信原语进行通信:用共享信箱,并利用系统提供的下述通信原语进行通信:Send(mailbox,message);Send(mailbox,message);将一个消息发送到指定信箱;将一个消息发送到指定信箱;Receive(mailbox,message);Receive(mailbox,message);从指定信箱中接收一个消息;从指定信箱中接收一个消息;淮海工学院计算机科学系淮海工学院计算机科学系信箱的创建者是信箱的拥有者。信箱分为以下三类。信箱的创建者是信

28、箱的拥有者。信箱分为以下三类。私私用用信信箱箱:用用户户进进程程可可为为自自己己建建立立一一个个新新信信箱箱,并并作作为为该该进进程程的的一一部部分分。信信箱箱的的拥拥有有者者有有权权从从信信箱箱中中读读取取消消息息,其其他他用用户户则则只只能能将将自自己己构构成成的的消消息息发发送送到到该该信信箱箱中中。特特点点:单单向向通通信信链链路路的的信信箱箱;拥拥有有该信箱的进程结束时,信箱也随之消失。该信箱的进程结束时,信箱也随之消失。公公用用信信箱箱:由由操操作作系系统统创创建建,并并提提供供给给系系统统中中的的所所有有核核准准进进程程使使用用。核核准准进进程程既既可可把把消消息息发发送送到到该

29、该信信箱箱中中,也也可可从从信信箱箱中中读读取取发发送送给给自自己己的的消消息息。特特点点:双双向向通通信信链链路路的的信信箱箱;公公用用信信箱箱在在系系统统运运行行期期间间始终存在。始终存在。共共享享信信箱箱:由由某某进进程程创创建建,并并指指明明信信箱箱是是可可共共享享的的,同同时时须须指指出出共共享享进进程程(用用户户)的的名名字字。信信箱箱的的拥拥有有者者和和共共享享者者,都都有有权权从从信信箱箱中中取取走发送给自己的消息。这是进程之间通信时常用的信箱。走发送给自己的消息。这是进程之间通信时常用的信箱。淮海工学院计算机科学系淮海工学院计算机科学系在利用信箱通信时,在发送进程和接收进程之

30、间,存在以下四种关系:在利用信箱通信时,在发送进程和接收进程之间,存在以下四种关系:一一对对一一关关系系:这这时时可可为为发发送送进进程程和和接接收收进进程程建建立立一一条条两两者者专专用用的的通通信信链链路,使两者之间的交互不受其他进程的干扰。路,使两者之间的交互不受其他进程的干扰。多多对对一一关关系系:允允许许提提供供服服务务的的进进程程与与多多个个用用户户进进程程之之间间进进行行交交互互,也也称称为客户为客户/服务器交互服务器交互(client/server interaction)(client/server interaction)。一一对对多多关关系系:允允许许一一个个发发送送进进

31、程程与与多多个个接接收收进进程程进进行行交交互互,使使发发送送进进程程可用广播方式,向接收者可用广播方式,向接收者(多个多个)发送消息。发送消息。多多对对多多关关系系:允允许许建建立立一一个个公公用用信信箱箱,让让多多个个进进程程都都能能向向信信箱箱中中投投递递消消息;也可从信箱中取走属于自己的消息。息;也可从信箱中取走属于自己的消息。淮海工学院计算机科学系淮海工学院计算机科学系2.6.3 2.6.3 消息传递系统实现中的若干问题消息传递系统实现中的若干问题 1.1.通信链路通信链路(communication link)(communication link)为为使使在在发发送送进进程程和和

32、接接收收进进程程之之间间能能进进行行通通信信,必必须须在在两两者者之之间间建建立立一一条通信链路。条通信链路。有两种方式建立通信链路:有两种方式建立通信链路:发发送送进进程程在在通通信信之之前前,显显式式使使用用“建建立立连连接接”原原语语请请求求系系统统为为之之建建立立一一条通信链路;在链路使用完后,也用显式方式拆除链路。条通信链路;在链路使用完后,也用显式方式拆除链路。用于网络中用于网络中。发发送送进进程程无无须须明明确确提提出出建建立立链链路路的的请请求求,只只须须利利用用系系统统提提供供的的发发送送原原语语,系统会自动地为之建立一条链路。系统会自动地为之建立一条链路。用于单机系统用于单

33、机系统。链链路路分分类类:按按连连接接方方式式分分为为:点点到到点点连连接接和和多多点点连连接接链链路路;按按通通信信方方式式分为:单向和双向。等等。分为:单向和双向。等等。淮海工学院计算机科学系淮海工学院计算机科学系2.2.消息的格式消息的格式 消消息息是是具具有有一一定定结结构构的的格格式式化化数数据据。一一般般一一个个消消息息(报报文文)由由两两部部分分组组成成:消消息息头头和和消消息息正正文文。消消息息头头包包括括消消息息传传送送时时需需要要的的控控制制信信息息:源源进进程程名名(地地址址),目目标标进进程程名名,消消息息长长度度、类类型型、日日期期等等;消消息息正正文即要发送的数据。

34、文即要发送的数据。消消息息以以长长度度固固定定或或可可变变也也可可划划分分为为:定定长长消消息息格格式式,这这减减少少了了对对消消息息的的处处理理和和存存储储开开销销。另另一一种种变变长长的的消消息息格格式式,即即进进程程所所发发送送消消息息的的长长度是可变的,方便了用户。度是可变的,方便了用户。淮海工学院计算机科学系淮海工学院计算机科学系3.3.进程同步方式进程同步方式 进程之间通信必须按照一定的同步机制来实现。常见有:进程之间通信必须按照一定的同步机制来实现。常见有:1 1)发送进程阻塞、)发送进程阻塞、接收进程阻塞;通信时同唤醒。接收进程阻塞;通信时同唤醒。2 2)发送进程不阻塞、)发送

35、进程不阻塞、接收进程阻塞(接收进程阻塞(最普遍,如最普遍,如C/SC/S进程进程););3 3)发送进程和接收进程均不阻塞;)发送进程和接收进程均不阻塞;与消息队列联系的发送和接收与消息队列联系的发送和接收进程,消息队列可接收进程,消息队列可接收n n个消息。个消息。淮海工学院计算机科学系淮海工学院计算机科学系2.6.4 2.6.4 消息缓冲队列通信机制消息缓冲队列通信机制 1.1.消息缓冲队列通信机制中的数据结构消息缓冲队列通信机制中的数据结构2.2.消消息息缓缓冲冲队队列列是是由由消消息息缓缓冲冲区区构构成成的的队队列列,进进程程通通过过向向消消息息队队列列发发送送消消息息和和从从消消息息

36、队队列列中中接接收收消消息息来来实实现现通通信信。消消息息缓缓冲冲区区结结构构描描述如下。述如下。消息缓冲区数据结构:消息缓冲区数据结构:type message buffer=recordtype message buffer=record sender;/sender;/发送者进程标识符发送者进程标识符 size;/size;/消息长度消息长度 text;/text;/消息正文消息正文 next;/next;/指向下一个消息缓冲区的指针指向下一个消息缓冲区的指针 end end 淮海工学院计算机科学系淮海工学院计算机科学系 PCBPCB中中有有关关通通信信的的数数据据项项:主主要要包包括括

37、对对消消息息队队列列实实施施操操作作和和同同步步控控制的信号量,并增加制的信号量,并增加PCBPCB中,描述如下:中,描述如下:type processcontrol block=record mq;消息队列队首指针消息队列队首指针 mutex;消息队列互斥信号量消息队列互斥信号量 sm;消息队列资源信号量(消息数目)消息队列资源信号量(消息数目)end 淮海工学院计算机科学系淮海工学院计算机科学系2.2.发送原语发送原语 发发送送进进程程在在利利用用发发送送原原语语发发送送消消息息之之前前,应应先先在在自自己己的的内内存存空空间间,设设置置一一发发送送区区a a,见见图图 2 2-12 12

38、 所所示示,把把待待发发送送的的消消息息正正文文、发发送送进进程程标标识识符符、消消息息长长度度等等信信息息填填入入其其中中,然然后后调调用用发发送送原原语语,把把消消息息发发送送给给目目标标(接接收收)进进程程。发发送送原原语语首首先先根根据据发发送送区区a a中中所所设设置置的的消消息息长长度度a.sizea.size来来申申请请一一缓缓冲冲区区i i,接接着着,把把发发送送区区a a中中的的信信息息复复制制到到缓缓冲冲区区i i中中。为为了了能能将将i i挂挂在在接接收收进进程程的的消消息息队队列列mqmq上上,应应先先获获得得接接收收进进程程的的内内部部标标识识符符j j,然然后后将将

39、i i挂挂在在j.mqj.mq上上。由由于于该该队队列列属属于于临临界界资资源源,故故在在执执行行insertinsert操操作作的的前前后,都要执行后,都要执行waitwait和和signalsignal操作。操作。淮海工学院计算机科学系淮海工学院计算机科学系图图 2-12 2-12 消息缓冲通信消息缓冲通信 淮海工学院计算机科学系淮海工学院计算机科学系 procedure send(receiver,a)begin getbuf(a.size,i);/根据根据a.size申请缓冲区;申请缓冲区;i.sender =a.sender;/将发送区将发送区a中的信息复制到消息缓冲区之中中的信息复

40、制到消息缓冲区之中;i.size =a.size;i.text =a.text;i.next =0;getid(PCB set,receiver.j);/获得接收进程内部标识符;获得接收进程内部标识符;wait(j.mutex);insert(j.mq,i);/将消息缓冲区插入消息队列;将消息缓冲区插入消息队列;signal(j.mutex);signal(j.sm);/消息队列中的消息个数增加消息队列中的消息个数增加1 end 淮海工学院计算机科学系淮海工学院计算机科学系3.3.接收原语接收原语 接收原语描述如下:接收原语描述如下:procedure receive(b)begin j=in

41、ternal name;/j为接收进程内部的标识符;为接收进程内部的标识符;wait(j.sm);/消息队列中有无消息消息队列中有无消息 wait(j.mutex);/队列资源互斥队列资源互斥 remove(j.mq,i);/将消息队列中第一个消息移出;将消息队列中第一个消息移出;signal(j.mutex);b.sender =i.sender;/将将消消息息缓缓冲冲区区i中中的的信信息息复复制制到到接接收收区区b;b.size =i.size;b.text =i.text;end 淮海工学院计算机科学系淮海工学院计算机科学系作业:2-4P69:29,30,35淮海工学院计算机科学系淮海工学院计算机科学系

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁