第2章_第1页
第2章_第2页
第2章_第3页
第2章_第4页
第2章_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章进第二章进 程程 管管 理理12.1进程的基本概念进程的基本概念 2.2进程控制进程控制 2.3进程同步进程同步 2.4经典进程的同步问题经典进程的同步问题 2.5 进程通信进程通信 2.6线程线程 22.1进程的基本概念进程的基本概念 一、程序的顺序执行及其特征1. 程序的顺序执行3顺序执行:顺序执行:一个应用程序一个应用程序分成若干个程序段,在各程序段之间,必须按照某种先后次序顺序执行,仅当前一操作(程序段)执行完后,才能执行后继操作。或作业之间的顺序性。例:程序的三部分:输入操作(I),计算操作(C), 打印操作(P)程序的执行过程:I C P作业执行顺序性 : I1 C1 P1

2、I2 C2 P24语句的顺序性:S1: a:=x+y;S2: b:=a-5;S3: c:=b+1; 其中:S1、S2、S2为语句标号 “:= ”:赋值运算符 语句的执行过程:S1S2 S22. 程序顺序执行时的特征程序顺序执行时的特征(1)顺序性每一操作(或作业)必须在上一个操作结束之后开始。5(2) 封闭性程序是在封闭的环境下执行的,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它。程序一旦开始执行,其执行结果不受外界因素影响。(3) 可再现性只要程序执行时的环境和初始条件相同,当程序重复执行时,不论它是从头到尾不停顿地执行,还是“停停走走”地执行,都将获得相同的结果

3、。二、前趋图二、前趋图 (重点)(重点):前趋图是一个有向无循环图,记为DAG,用于描述进程之间执行的前后关系。6前趋图的组成:结点、有向边“”结点:描述一条语句或一个程序段或进程有向边“”:表示两个结点之间存在的偏序(偏序关系)或前趋关系说明:l前趋关系的表示=(Pi,Pj)|Pi must complete before Pj may startl(Pi,Pj)或PiPj,称Pi是Pj的直接前趋,而称Pj是Pi的直接后继。l初始结点:没有前趋的结点l终止结点:没有后继的结点l重量:每个结点还具有一个重量,用于表示该结点所含有的程序量或结点的执行时间。78(a ) 程序的顺序执行(b ) 三

4、条语句的顺序执行I1C1P1I2C2P2S1S2S3P34图 2-1程序的顺序执行 (a)、(b )图即为前趋图,描述如下前趋关系: 图(a)的前趋关系:IiCiPi 图(b)的前趋关系:S1S2S3 9P1P3P8P9P4P2P5P6P7S1S2S3(a) 具有九个结点的前趋图(b) 具有循环的图例:根据前趋图写出前趋关系前趋图中不能存在循环,该图为错误的。初始结点终止结点图(a)的前趋关系:注意按结点的顺序依次写出前趋关系,以免有遗漏。P1P2,P1P3,P1P4,P2P5,P3P5,P4P6,P4P7,P5P8,P6P8,P7P9,P8P910或表示为:结点集合+前趋关系集合P=P1,P

5、2,P3,P4,P5,P6,P7,P8,P9 (结点集合)=(P1,P2),(P1,P3),(P1,P4),(P2,P5),(P3,P5),(P4,P6),(P4,P7),(P5,P8),(P6,P8),(P7,P9),(P8,P9) (前趋关系集合)三、程序的并发执行及其特征三、程序的并发执行及其特征1程序的并发执行分析程序运行过程中使用的系统设备: 输入I: 输入设备计算操作C: CPU 输出P: 输出设备可以并发执行的情况?1112P1P2P3P4I1I2I3I4C1C2C3C4输入 例:4个作业并发执行的前趋图 P36图2-3 输入计算输入计算输出输入计算输出计算输出输出:设备使用的顺

6、序性 :作业自身的顺序性并发执行?l前趋关系一般地: IiCi , IiIi+1 一般地: CiCi+1 ,CiPi, 一般地: PiPi+1 lPi-1和Ci以及Ii+1之间,可以并发执行13例:四条语句的程序段如下S1: a:=x+2S2: b:=y+4S3: c:=a+bS4: d:=c+b 14S1S2S3S4四条语句的前趋关系: P81 习题2前趋图 2 2程序并发执行时的特征程序并发执行时的特征(1)间断性由于对资源的共享,并发执行的程序之间,形成了相互制约的关系,这种相互制约导致了并发程序具有“执行暂停执行”这种间断性的活动规律(2)失去封闭性程序不是在封闭的环境下执行的,即程序

7、运行时不再独占全机资源,资源的状态(除初始状态外)并非本程序才能改变它。程序执行过程中,其执行结果受外界因素影响。15(3) 不可再现性程序在并发执行时,由于失去了封闭性,也将导致其失去可再现性。例:有两个循环程序A和B,它们共享一个变量N。假设初值为n。 程序A: 程序B N:=N+1操作 Print(N) N:=0 16N:=N+1在Print(N)和N:=0之前,N值分别为n+1,n+1,0。(程序A先改变N的值,程序B再使用) N:=N+1在Print(N)和N:=0之后,N的值分别为n,0,1。(程序B先使用N,程序A再使用) N:=N+1在Print(N)和N:=0之间,此时得到的

8、N值分别为n,n+1,0。(程序A、B交叉使用N。)程序在并发执行时,由于失去了封闭性,使程序的执行失去了可再现性,虽然它们执行时的环境和初始条件相同,但得到的结果却各不相同。 四、进程的特征与状态四、进程的特征与状态1、进程的特征和定义 (4个特征) 进程的组成:(3部分) 程序、数据、PCB(进程控制块) 进程控制块(PCB)的作用: 记录进程的属性信息,以便OS对进程进行控制管理。 说明:创建进程,实质上是创建进程实体中的PCB;而撤消进程,实质上是撤消进程的PCB。PCB 随进程的 产生而产生,随进程的撤销而撤销。l特征1动态性 进程是具有一定独立功能的程序关于某个数据集合的一次运行活

9、动。它可创建,可调度执行,可以撤消而消亡。进程实体有一定的生命期。 17l特征2并发性 多个进程实体同存于内存中,且能在一段时间内同时运行。也是操作系统中引入进程的目的。l特征2独立性 在传统的OS中,独立性是指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。凡未建立PCB的程序都不能作为一个独立的单位参与运行。在现代操作系统中引入了线程,独立接受调度的基本单位是线程。l特征2异步性 指进程按各自独立的、 不可预知的速度运行,或说进程实体按异步方式运行。18关于进程的几种定义:(1)进程是程序的一次执行。(2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动。(3)进程是

10、程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。(4)进程是具有一定独立功能的程序关于某个数据集合的一次运行活动。 (补充)19进程的定义:P382. 2. 进程的三种基本状态进程的三种基本状态 (重点)(重点)l执行(运行)状态 进程正在处理器上运行。l就绪状态 进程获得了除处理器外一切资源。l阻塞(等待或封锁)状态 进程正在等待某一事件的发生。说明:一个系统中处于就绪状态、阻塞状态的进程可能有多个,通常将它们排成一个队列,形成就绪队列、阻塞队列。 2021就绪阻塞执行时间片完进程调度I/O完成I/O请求进程的三种基本状态转换关系图: 创建进程注意状态之间的转换和转

11、换条件3. 3. 挂起状态挂起状态(1)引入挂起状态的原因 (4方面)l终端用户的请求 由于某些原因进程希望暂停运行。(如自检、调试)l父进程请求 有时父进程希望挂起自己的某个子进程,以便考查和修改该子进程,或者协调各子进程间的活动。22进程之间的关系树型结构祖先进程:原始进程 祖先进程父进程:子进程:族系:注:进程只能由父进程创建,不能自生自灭。当子进程创建时子进程继承父进程所拥有的资源;当子进程撤消时将从父进程那里继承的资源归还给父进程。23l负荷调节的需要负荷调节的需要 当实时系统中的工作负荷较重,已可能影响到当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重

12、要对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。的进程挂起,以保证系统能正常运行。l操作系统的需要操作系统的需要 操作系统有时希望挂起某些进程,以便检查运操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。行中的资源使用情况或进行记账。24综上:综上:由于某些原因进程希望暂停运行由于某些原因进程希望暂停运行挂起挂起 待问题解决后,再恢复进程的原来状态待问题解决后,再恢复进程的原来状态解除挂起解除挂起说明:进入挂起状态的进程并非不具备当前的状态要求。 如:排队买饭。每个同学为一个就绪的进程。25活动就绪静止就绪执行挂起激活释放挂起活动阻塞静止阻塞挂起

13、激活释放请求I/O调度具有挂起状态的进程状态图 4创建状态和终止状态l创建状态 创建一个进程一般要通过两个步骤:首先,为一个新进程创建PCB,并填写必要的管理信息;其次,把该进程转入就绪状态并插入就绪队列之中。 引入创建状态,是为了保证进程的调度必须在创建工作完成后进行,处于创建状态的进程,获得了其所必需的资源,以及对其PCB初始化工作完成后,进程状态便可由创建状态转入就绪状态。 26l 终止状态 进程的终止通过两个步骤:首先等待操作系统进行善后处理(如监督程序的作用),然后将其PCB清零,并将PCB空间返还系统。 什么时候进入终止状态? 自然结束、出现了无法克服的错误、被操作系统所终结、被其

14、他有终止权的进程所终结。27进入终止态的进程以后不能再执行,若需要运行须重新创建。28创建就绪阻塞执行终止许可I/O请求释放I/O完成时间片完进程调度含有创建状态和终止状态的五种状态转换关系图:29创建终止执行活动就绪活动阻塞静止阻塞静止就绪许可许可请求I/O释放激活挂起释放挂起激活挂起释放具有创建、终止和挂起状态的进程状态具有创建、终止和挂起状态的进程状态转换关系图:转换关系图: (了解)(了解)进程五状态转换,需要增加考虑的问题:P40 自读内容30五、进程控制块1进程控制块的作用进程控制块是什么? 31进程控制块PCB(Process Control Block)是一种数据结构,它是进程

15、实体的一部分。PCB中记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。进程控制块的作用:记录进程的属性信息,OS根据PCB对并发执行的进程进行控制和管理的。注意:lPCB随进程的创建而建立,随进程的撤消而消失。lPCB唯一标识着进程,它标识着进程的存在。322 2进程控制块中的信息进程控制块中的信息(1)进程标识符(2)处理机状态(3)进程调度信息(4)进程控制信息33(1)进程标识符用于唯一地标识一个进程。一个进程通常有两种标识符:l内部标识符 在所有的操作系统中,都为每一个进程赋予了一个唯一的数字标识符,通常是一个进程的序号。设置内部标识符主要是为了方便系统使用。l

16、外部标识符 它由创建者提供,通常是由字母、数字组成,往往是由用户(进程)在访问该进程时使用。34(2)处理机状态35处理机状态信息主要是由处理机的各种寄存器中的内容组成的。处理机在运行时,许多信息都放在寄存器中。当处理机被中断时,所有这些信息都必须保存在PCB中,以便在该进程重新执行时,能从断点继续执行。(3)进程调度信息 进程状态,指明进程的当前状态 进程优先级 进程调度所需的其它信息,如进程已等待CPU的时间总和、进程已执行的时间总和等; 事件(阻塞原因)(4)进程控制信息36 程序和数据的地址 进程同步和通信机制; 资源清单 链接指针3. 3. 进程控制块的组织方式进程控制块的组织方式l

17、链接方式 l索引方式37把具有同一状态的PCB,用其中的链接字链接成一个队列。形成的队列有就绪队列、若干个阻塞队列(根据阻塞的原因)和空白队列等。PCB14PCB2PCB3PCB4PCB5PCB6PCB7PCB8PCB93087901执行指针就绪队列指针阻塞队列指针空闲队列指针不同队列的头指针各个队列l索引方式 根据所有进程的状态建立几张索引表。这样就形成了就绪索引表、阻塞索引表等,每个索引表的表目,记录具有相应状态的某个进程PCB在PCB表中的地址。38执行指针就绪索引表PCB1PCB2PCB3PCB4PCB5PCB6PCB7阻塞索引表就绪表指针阻塞表指针PCB表索引表记录:进程标识及PCB

18、在PCB表中的地址2.2进程控制进程控制 39DEFGBCIJKMALH进程之间的关系树型结构(进程图)注:图的构成进程只能由父进 程创建,不能自 生自灭。1 1引起创建进程的事件引起创建进程的事件在多道程序环境中,只有进程才能在系统中运行。因此,为使程序运行,就必须为它创建进程。何时需要创建进程?(1)用户登录在分时系统中,用户在终端键入登录命令后,如果是合法用户,系统将为该终端建立一个进程,并把它插入就绪队列中。40有4类事件发生时(2) 作业调度在批处理系统中,当作业调度程序按一定的算法调度到某作业时,便将该作业装入内存,为它分配必要的资源,并立即为它创建进程,再插入就绪队列中。(3)

19、提供服务当运行中的用户程序提出某种请求后,系统将专门创建一个进程来提供用户所需要的服务,例如,用户程序要求进行文件打印,操作系统将为它创建一个打印进程,这样可使打印进程与该用户进程并发执行。41以上为系统内核为用户创建一个新进程的事件(4) 应用请求则是基于应用进程的需求,由它自己创建一个新进程(子进程),以便使新进程以并发运行方式完成特定任务。例如:某应用程序需要不断地从键盘终端输入数据,继而又要对输入数据进行相应的处理,然后,再将处理结果以表格形式在屏幕上显示。该应用进程为使这3个操作能并发执行,以加速任务的完成,可以分别建立键盘输入进程、处理进程、表格输出进程。42创建一个新进程需要做哪

20、些工作?创建进程请求调用创建进程原语Creat()申请PCB、分配进程ID为进程分配资源初始化PCB将进程放进就绪队列为新进程分配一个唯一的进程ID,并申请一个空白的PCB。为进程的程序代码、数据用户栈分配内存空间。(1)将系统分配的进程ID、父进程ID写入PCB。(2)将程序计数器指向程序的入口地址、栈指针指向栈顶。(3)设置进程状态、优先级等。2 2进程的创建进程的创建调用进程创建原语Creat( )创建一个进程。创建一个新进程需要完成的任务(创建过程):43二、进程的终止二、进程的终止1引起进程终止的事件 (什么时候要终止一个进程呢?)l正常结束l异常结束(1)越界错误;(2)保护错;

21、(3)特权指令;(4)非法指令;(5)运行超时;(6)等待超时;(7)算术溢出;(8)I/O故障;l外界干扰(1)OS/操作员终止;(2)父进程请求;(3)父进程终止。 44三大类事件引发进程的终止事件调用进程终止原语Destroy()从PCB集中检索出该进程的PCB读出进程的状态在Running状态:终止执行、设置调度状态为真。有子进程:终止所有的子孙进程。将进程拥有的资源归还给父进程把对应的PCB设成空2 2进程的终止过程进程的终止过程 OS调用进程终止原语Destroy()终止进程。45三、进程的阻塞与唤醒三、进程的阻塞与唤醒进程出现某事件无法继续执行调用Block()原语停止进程的执行

22、运行状态 阻塞状态把PCB插入到Blocked队列保留处理机的状态转调度程序进行新的调度1、请求系统服务2、启动某种操作3、新数据没有达到4、无新的工作可做进程阻塞46参照状态转换图理解进程进入阻塞/唤醒/挂起/激活状态的过程。 进程唤醒进程唤醒所期望的事件出现调用唤醒原语Wakeup()从阻塞队列移出在PCB中把BlockedReady把进程插入到就绪队列如I/O完成、期望的数据到达、有新的任务要执行等等。47四、进程的挂起与激活四、进程的挂起与激活进程的挂起进程的挂起出现挂起事件调用挂起原语suspend()正在执行?转入静止就绪活动阻塞?转入静止阻塞活动就绪?转入静止就绪转向调度程序重新

23、调度是否是否是把进程驻留到外存48进程的激活进程的激活发生激活事件检查内存空间调用激活原语Active()把进程从外存调入到内存检查进程状态静止就绪?转入活动就绪静止阻塞?转入活动阻塞492.3进程同步进程同步 50l在多道程序系统中,进程间存在:资源共享资源共享和相相互协作互协作的关系。l资源共享资源共享:进程相互不知道对方的存在。进程共享系统的资源。l协作关系协作关系:有些进程之间存在相互依赖关系。l进程同步的任务进程同步的任务:保证系统中的进程互斥地访问系统临界资源。保证协作进程前后执行顺序的协调。一、进程同步的基本概念进程同步的基本概念1 1两种形式的制约关系两种形式的制约关系在多道程

24、序环境下,当程序并发执行时,由于资源共享和进程合作,使同处于一个系统中的诸进程之间可能存在着以下两种形式的制约关系。51间接相互制约关系同处于一个系统中的进程,通常都共享着某种系统资源,如共享CPU、共享I/O设备等。所谓间接相互制约即源于这种资源共享。(2) 直接相互制约关系由于进程间的合作产生的相互制约关系。例:输入进程A写入数据缓冲区输出进程B读取数据 (空、满两种状态)2. 2. 临界资源临界资源在系统中每次只能一个(有限个)进程访问的资源,如打印机、磁带机等。控制临界资源的访问是进程同步解决的问题。52著名的进程同步问题生产者-消费者(producer-consumer)问题lPro

25、ducer-Consumer: Producer:inConsumer:out消费数据生产数据5354生产者和消费者问题:消费者:使用数据者。生产者:存人数据者。假设:(1)n个大小相等的缓冲区用于存放数据; 每次生产、消费一个数据。(2)两类缓冲区 空缓冲区:指针in指向区头。 满缓冲区:指针out指向区头。 in、 out的使用? 如何控制 in、 out的合理移动和缓冲区的使用?55Var n,integer;type item=; /缓冲区类型var buffer: array0,1,n-1 of item;in,out: 0,1,n-1;counter: 0,1,n; /记录满缓冲区

26、数56producer: /生产者进程 repeat produce an item in nextp; /局部变量 while counter=n do no-op; /重复测试条件 bufferin:=nextp; /将局部变量的内容放入in指向的空缓冲区 in:=in+1 mod n; /in指向下一个空缓冲区 counter:=counter+1;/满缓冲区数加1 until false; consumer: /消费者进程 repeat while counter=0 do no-op; /重复测试条件 nextc:=bufferout; /将满缓冲区头存入局部变量 out:=(out

27、+1) mod n; / out指向下一个满缓counter:=counter-1; /满缓冲数减1consumer the item in nextc;/消费数据until false; 57算法与存在问题算法与存在问题设缓冲区n个单元,共享变量counter记录满缓冲区数,则基本算法:Producer进程:当counter= =n时等待。in:=(in+1)mod ncounter=counter+1Consumer进程:当counter= =0时等待out:=(out+1)mod ncounter=counter-1存在问题:共享内存变量counter引起的。register1:=cou

28、nter;register1:=register1+1;counter:=register1;register2:=counter;register2:=register-1;counter:=register2;5859假设:counter初值为5register1:=counter; (register1=5)register2:=counter; (register2=5)register1:=register1+1; (register1=6)register2:=register2-1; (register2=4)counter:=register1; (counter=6)coun

29、ter:=register2; (counter=4) 实际counter的值应该为5生产者和消费者并发执行时:产生问题的原因:一个进程对共享变量的操作没有结束,另一个进程便开始对共享变量进行操作。60如何解决产生问题 如何控制共享变量的并发使用3.临界区临界区l临界区:把每个进程中访问临界资源的那段代码叫临界区。只要每个进程互斥进入临界区、便可以实现对临界资源的互斥访问。l实现算法实现算法repeatentry sectioncritical section;exit sectionremainder section;until false;进入区:用于检查临界资源是否空闲。退出区:用于释放

30、临界资源。执行临界区代码4同步机制应遵循的规则62空闲让进空闲让进 当临界资源空闲时,允许一个进程进入临界区。忙则等待忙则等待 临界资源正被访问时,其它进程必须等待。有限等待有限等待 应保证进程能在有限时间内能进入自己的 临界区。让权等待让权等待 如果进程不能进入自己的临界区、应立即 释放处理机。二、信号量机制二、信号量机制 (重点、难点)(重点、难点)1整型信号量用于解决进程的互斥与同步问题。创始人:荷兰 E.W.Dijkstra 1965整型信号量:是一个仅能初始化、用两个原子操作对其进行操作的整形变量。值用于表示资源的数目。6364关于信号量关于信号量s的的3个操作:个操作:(1)初始化

31、)初始化 初始化为一个初始化为一个非负数非负数。(2)wait(s)操作()操作(或或P操作)操作) 0:该进程进入:该进程进入等待状态等待状态 s 将其插入到信号量的等待队列将其插入到信号量的等待队列 0:s:=s-1,该进程继续执行该进程继续执行(3)signal(s)操作()操作(或或V操作)操作) s:=s+1 Wait(S)和signal(S)操作的描述:wait(S): while S=0 do no-op; /重复检测S:=S-1;signal(S): S:=S+1; 6566注意:(1)wait(s)和signal(s)为原子操作。(2)信号量保存在内核中,供系统的所有进程使用

32、,占用系统资源。(3)没有用的信号量应及时删除。2记录型信号量记录型信号量l整型信号量存在问题 进程在wait(s)、当S0时处于“忙等”,不能遵守“让权等待”准则。l记录型信号量结构67type semaphore=record begin value:integer; /表示资源数 L:list of process; /链接所有等待进程 end不存在“忙等”现象记录型信号量记录型信号量wait()和和signal()lWait(s)操作描述 signal(s)操作描述Procedure wait(s) var s:semaphore; /定义信号量 begin s.value:=s.va

33、lue-1; if s.value=n then notfull.wait; /没有空缓进入条件变量notfull的等待队列 buffer(in):=nextp; in:=(in+1) mod n; count:=count+1; if notempty.queue then notempty.signal; /如果非空队列有进程,则唤醒 end91PC管程描述:管程描述:procedure entry get(item) / 消费数据过程beginif count=0 then notempty.wait;nextc:=buffer(out);out:=(out+1) mod n;count

34、:=count-1;if notfull.quene then notfull.signal; /如果非满队列有进程,则唤醒endbegin in:=out:=0;count:=0; end 92生产者和消费者的描述:producer: beginrepeat produce an item in nextp; PC.put(item);/调用管程的过程until false;endconsumer: beginrepeat PC.get(item); /调用管程的过程 consume the item in nextc;until false;end932.4经典进程的同步问题经典进程的同步

35、问题l生产者消费者问题l读者写者问题l哲学家就餐问题 9495阅读者Reader :读数据进程。写入者Writer:修改数据进程。要求:(1)n个阅读者可以同时读数据集(临界段代码); 描述为:RN(2)一个写入者不能与其他进程同时访问数据集。解决方法:l有一个写入者访问数据集时,其他进程等待。l有一个阅读者访问数据集时,允许其他阅读者 访问数据集,但拒绝写入者进程进入。读者读者写者问题写者问题如:读者和图书管理员1利用记录型信号量解决读者写者问题说明:(1)互斥信号量 rmutex:控制对readcount的改写。 wmutex: 控制写入者。(2)共享变量 readcount记录阅读者数。

36、96读者写者问题描述:/初始化定义Var rmutex,wmutex: semaphore:=1,1;Readcount: integer:=0;98begin parbegin Reader: begin repeat wait(rmutex); if readcount=0 then wait(wmutex); Readcount:=Readcount+1; signal(rmutex); perform read operation; wait(rmutex); readcount:=readcount-1; if readcount=0 then signal(wmutex); sig

37、nal(rmutex); until false;end 控制Readcount 增1 控制Readcount 减1控制写着99 writer: begin repeat wait(wmutex);? perform write operation;/什么情况下执行此操作 signal(wmutex);? until false; end parendend 1002.5 进进 程程 通通 信信 l进程通信:进程间的信息传递。l进程通信常见的类型:共享内存消息传递管道通信1011.共享内存系统l共享数据结构的通信方式进程间共用某些数据结果,通过这些数据结构实现进程间的通信。这种方式系统仅提供存

38、储区,进程间的通信、数据结构设置全部由程序员负责。如:中间结果。存在问题: 效率低下。l共享存储区的通信方式在系统中划出一块存储区作为共享存储区,进程可以对共享存储区的数据进行读/写,以实现进程间的通信。102l在进程间的数据交换以消息(message)为单位(在计算机网络中叫报文)。l消息传递系统按实现方式分为:消息传递系统按实现方式分为:直接通信方式发送进程直接将消息发送给接收进程,并将接收进程挂在消息队列上,接收进程从消息缓冲队列中接收消息。2.消息传递系统间接通信方式发送进程把消息发送到某中介上(邮箱),接收进程从中介中获取消息邮箱通信方式。在网络中的应用电子邮件系统。1033.管道通

39、信l管道:用于连接一个读进程和一个写进程、实现两个进程间通信的共享文件pipe文件。l管道通信:利用管道进行通信。l管道通信提供给进程间三种协调能力:互斥同步检测对方是否存在,存在进行通信,否则不进行写进程Pipe文件读进程104二、消息传递通信的实现方法二、消息传递通信的实现方法1.直接通信方式指发送进程利用OS所提供的发送命令,直接把消息发送给目标进程。此时,要求发送进程和接收进程都以显式方式提供对方的标识符。两条原语通信命令:Send(Receiver,message) 发送一个消息给接收进程;Receive(Sender,message)或Receive (id,message);例如

40、:原语Send(P2,m1)表示将消息m1发送给接收进程P2;原语Receive(P1,m1)则表示接收由P1发来的消息m1。 通信方式解决生产者消费者问题略l间接通信方式:进程间的通信是通过共享数据结构的实体(信箱)来实现的。Sender 1Sender n信 箱Receiver 1Receiver n 要进行通信关于信箱需要: (1)创建 (2)发送与接收 自读内容 (3)撤消信箱的类型:私有信箱公共信箱共享信箱发送者和接收者:1n个2间接通信方式间接通信方式(理解通信方式,了解细节)(理解通信方式,了解细节)106三、消息传递系统实现中的若干问题三、消息传递系统实现中的若干问题(自读内容自读内容) 四、消息队列通信机制四、消息队列通信机制 (理解)(理解)1.消息缓冲队列通信机制中数据结构消息缓冲队列通信机制中数据结构 (1)消息缓冲区消息缓冲队列通信方式利用消息缓冲区(数据结构)进行消息传递。描述如下:type message buffer=record sender;发送者进程标识符 size; 消息长度 text; 消息正文 next; 指向下一个消息缓冲 end 区的指针107(2) PCB中有关通信的数据项PCB中增加消息队列队首指针,用于对消息队列进行操作,以及用于实现同步的互斥信号量mutex和资源信号量sm。PCB中增加的数据项描述如下: ty

温馨提示

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

最新文档

评论

0/150

提交评论