第2章-进程管理.ppt_第1页
第2章-进程管理.ppt_第2页
第2章-进程管理.ppt_第3页
第2章-进程管理.ppt_第4页
第2章-进程管理.ppt_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章 进程管理,进程的基本概念,进程控制,进程同步,经典进程的同步问题,4,1,2,3,进 程 通 信,5,2.1 进程的基本概念,一、前趋图 为了描述一个程序的各部分(程序段或语句)间的依赖关系,或者是一个大的计算的各个子任务间的因果关系,我们常常采用前趋图方式。,二、程序的顺序执行及特征 基本概念 程序的顺序执行:一个具有独立功能的程序独占处理机,直至得到最终结果的过程。,例如:在进行计算时,总是先输入用户的程序和数据,然后进行计算,最后将结果打印出来。 I:输入操作C:计算操作P:打印操作。,E.G. 例子,I1,C1,P1,I2,C2,P2,2.程序的顺序执行的特征 顺序性: 封闭性

2、: 可再现性: 程序顺序执行的特性,为程序员检测和校正程序的错误带来很大方便。,三、程序并发执行及特征 1.并发环境: 在一定时间内物理机器上有两个或两个以上的程序同处于开始运行但尚未结束的状态,并且次序不是事先确定的。,2. 程序的并发执行 定义:一组在逻辑上相互独立的程序或程序段在执行过程中其执行时间相互重叠。 例如:输入、计算、打印三个程序对一批作业进行处理时,存在以下的前趋关系:,IiIi+1,CiCi+1,PiPi+1 :由于资源共享 IiCi,CiPi:由程序的逻辑关系决定,3.程序的并发执行的特征 间断性 失去封闭性 不可再现性:由于程序的并发执行,打破了由另一程序独占系统资源的

3、封闭性,因而破坏了可再现性。,有观察者与报告者并发工作,观察者对公路上通过的汽车进行记数,报告者定时把记数的结果打印出来,然后将计数值置为0,程序如下: 假定在开始某次循环之前记数器的值为M,则打印机打印的值分别为 ,程序执行后N的值分别为 。,PROGRAM B:BEGIN L2: PRINT(N); N:=0; GOTO L2; END COEND END,BEGIN INTERGER N; N:=0; COBEGIN PROGRAM A:BEGIN L1: OBSERVE NEXT CAR; N:=N+1; GOTO L1; END, 习题,四、进程的概念 引入进程的原因:为了使程序能并

4、发执行,且为了对并发执行的程序加以描述和控制,引入了进程的概念。 1. 定义 进程是具有独立功能的程序在某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位。 2. 进程的特征 (1)结构特征: 程序段:进程执行的程序,一般是可重入的“纯代码”。 数据段:程序执行时所用的数据。 PCB: 这三部分构成了进程实体。,动态性(最基本的特征): 并发性: 独立性: 异步性:,进程与程序的区别与联系: (1)进程是程序的一次动态执行活动;程序是进程运行的静态描述文本。比如做菜和菜谱。 (2)一个进程可以执行一个或多个程序,同一个程序也可以被多个进程同时执行。如:一个对C源程序进行编译的进程

5、,先后要执行预处理程序,词法和语法分析程序,汇编程序,链接程序;几个用户同时编辑自己的C源程序,那么各个用户产生的编辑进程就执行同一个C源程序编辑程序。 (3)程序是一种软件资源,可以长期保存;而进程是一次执行过程,是暂时存在的。 (4)程序不具备进程的5个基本特征。 思考:对同一个程序执行两次是一个进程吗?,3. 进程的状态及变化 进程在系统中,其状态可以变化,各状态间变化如下图所示: 就绪和阻塞的区别: 就绪状态:一旦获得CPU,立即可以执行。 阻塞状态:即使获得CPU,也无法立即执行。,创建状态 终止状态 挂起状态:(调节负载,对换,父进程,操作系统,终端用户),其他状态,当一个进程刚刚

6、建立,但未将它送入就绪队列时的状态. OS 已完成为创建一进程所必要的工作 已构造了进程标识符 已创建了管理进程所需的表格,但还没有允许执行该进程 (尚未同意),创建(新new)状态,终止状态 一个进程正常结束或异常结束后, 尚未撤消时的状态。 它不再有执行资格 表格和其它信息暂时由辅助程序保留 例子: 为处理用户帐单而累计资源使用情况的财务程序 当数据不再需要,进程(和它的表格)被删除,5. 状态进程模型,创建,就绪,终止,阻塞,许可 admit,调度 dispatch,Timeout 超时,释放 release,事件发生 Event occurs,事件等待 Event wait,运行,运行

7、,运行,一种进程状态变化的实现,挂起状态 引入 实际上,为了更好地管理和调度进程及适应系统的功能目标,许多系统中都有“挂起” 和“解除挂起 ” 进程的功能: 终端用户请求; 父进程请求; 系统中有时负荷过重 (进程数过多); 操作系统的需要。,挂起状态的实质:使进程不能继续执行,即使挂起后的进程处于就绪状态,它也不能参与对CPU的竞争。 因此称被挂起的进程处于静止状态,而没被挂起的进程处于活动状态。 挂起状态分为:静止就绪和静止阻塞。,1如果系统中有N个进程,运行的进程最多几个,最少几个;就绪进程最多几个,最少几个;等待进程最多几个,最少几个? 2. 有没有这样的状态转换,为什么? 等待运行;

8、 就绪等待 3. 一个状态转换的发生,是否一定导致另一个转换发生?列出所有的可能 4. 举3个日常生活中类似进程的例子, 习题,进程控制块(PCB),系统为了管理进程设置的一个专门的数据结构,存放了用于描述该进程情况和控制进程运行所需的全部信息。 系统利用PCB来控制和管理进程,所以PCB是系统感知进程存在的唯一标志。 进程与PCB是一一对应的,PCB经常被系统访问,故常驻内存。,为了有效地对进程控制块进行管理,应该采用适当的方式把它们组织起来。 目前常用的组织方式有以下两种: 按链接方式组织PCB (队列) 按索引方式组织PCB (表),进程控制块的组织方式,按索引方式组织PCB,按链接方式

9、组织PCB,用户程序 用户数据 栈 进程控制块PCB 控制进程所需的数据,包括: 进程标识符信息 处理器状态信息 进程调度信息 进程控制信息,进程映像,2.2 进程控制,进程控制的主要任务 进程控制是对系统中所有进程从产生、存在到消亡的全过程实行有效的管理和控制。进程控制一般是由操作系统的内核的相应程序来实现。通常,OS内核运行在系统态。,一、 OS的内核 1. 定义:为了对进程控制,系统中必须设置一个机构,它具有创建撤消以及进程通讯和资源管理等功能,这样结构称为OS的内核 (kernel)。 内核是通过执行各种原语操作来实现各种控制和管理功能的。,二、原语 (primitive) 原语是机器

10、指令的延伸,是用若干条机器指令构成的,用以完成特定功能的一段程序。为保证操作的正确性,原语在执行期间是不可分割的。 在许多机器中为了实现上的方便,规定在执行原语操作时要屏蔽中断,以保证原语操作的不可分割性。,用于进程控制的原语有 1. 创建进程原语 2. 撤消进程原语 3. 阻塞进程原语 4. 唤醒进程原语,1. 进程的创建 功能:创建一个具有指定标识符进程 引起进程创建的事件:P44。,进程创建过程 创建一个PCB 赋予一个唯一进程标识符 为进程映象分配空间 初始化进程控制块 许多默认值 (如: 状态为 New,无I/O设备或文件.) 设置相应的链接 如: 把新进程加到就绪队列的链表中,创建

11、原语的实现过程,建立进程原语的工作大致描述为: procedure Create (n, S0, k0, M0, R0) begin,/ 请求分配PCB空间 i : = Get Internal Name(n); / 初始化PCB Id(i) : =n; Priority(i) : = k0; Cpustate(i) : = S0; Main Store(i) : = M0; Resources(i) : = R0; Status(i) : = Readys,J=EP; /* 获得调用者内部名 Parent(i) : = J; Progeny(i)=0; Progeny(j)=I; / 插入就

12、绪队列 Insert(RL,i); end,2. 进程的撤消原语 功能:撤消一个指定的进程 入口信息:被撤消的进程名 实现:收回进程所占有的资源,撤消该进程的PCB。,引起撤消的原因 正常结束 异常结束(越界错、保护错、特权指令错、非法指令、运行超时、I/O故障等) 外界干预(操作员干预、父进程请求、父进程终止),撤消原语的实现过程,3. 进程阻塞 处于运行状态的进程,在其运行过程中期待某一事件发生,如等待键盘输入、等待磁盘数据传输完成、等待其它进程发送消息,当被等待的事件未发生时,由进程自己执行阻塞原语,使自己由运行态变为阻塞态。,引起进程阻塞和唤醒的事件 请求系统服务 启动某种操作 新数据

13、尚未到达 无新工作可做 进程阻塞过程 正在执行的进程,当发现上述某事件时,由于无法继续执行,于是进程便通过调用阻塞原语block把自己阻塞。可见,进程的阻塞是进程自身的一种主动行为。,阻塞原语的实现过程,4. 进程的唤醒原语 功能:唤醒某一处于等待队列当中的进程。 入口信息:被唤醒进程的名字 引起唤醒的原因 系统服务由不满足到满足 I/O完成 新数据到达 进程提出新请求(服务),唤醒原语的实现过程,进程控制原语与进程状态转换的对应:,总结,2.3 进程间的同步与互斥,引入 程序的顺序执行 程序的并发执行 进程同步和互斥机制的主要任务是使并发执行的各进程之间能有效地共享资源和相互合作,同时使程序

14、并发执行时仍具有可再现性。,二人合作存款,设夫妻两人的共同存款保存在count(共享资源)变量中,为此,他们编写了一个增加款项的程序如下:,E.G. 例子,begin count, N, M: integer; cobegin PA: begin N: = count; N: = N+100; count: = N; end,PB: begin M: = count ; M: = M+200 ; count: = M ; end coend end,速度:设原count=300$,A100,B200 时间: t0 A:N=count; N:=N+100N=400$ t1 B:M=count;

15、M:= M+200; count=M, count = 500$ t2 A: count:=Ncount=400$ 与执行速度有关 (我们不能保证它们每次执行时间相同,进展速度一致)。,一、概念 并发执行的各进程之间存在制约关系分为: 间接制约关系:由资源共享引起的。资源的使用要排它使用,防止竞争冲突(不同时使用,但无先后次序)。 (作为一种特殊同步) 直接制约关系 :由相互合作引起的。指两个事件的发生有着某种时序上的关系(先,后)。,二、临界区问题 只能排它使用的资源称为临界资源。 2. 临界区 进程访问临界资源时要执行的那段代码称是临界区。 (对临界区的访问必须是互斥的),临界资源,打印机

16、、磁带机。,只能排它使用的变量、表格、队列。,二人合作存款,cobegin PA: N: = count N: = N+100 count: = N;,PB: M: = count M: = M+200 count: = M coend,cs1,cs2,cs1,cs2,count,cs,临界区,临界资源,E.G. 例子,思考: 怎么才能保证诸进程间互斥地执行临界区以访问共享变量呢?(即解决了临界区对临界资源的访问,就解决了互斥问题)。 进程代码段分为以下几部分: repeat entry section 进入区 critical section; 临界区 exit section 退出区 re

17、mainder section; 剩余区 until false;,Diskstra于1965年提出的临界区设计原则: 空闲让进 忙则等待 让权等待 有限等待,3. 实现临界区问题的硬件方法 关中断 锁,信号量 (P,V操作),二、信号量 (P,V操作) 1、信号量:是一个仅能由同步原语对其进行操作的变量。,Dijkstra将这两个同步原语命名为“ P操作”,“ V操作”。,常用信号量类型:P50-53,P操作的功能描述见下图:,N,Y,入口,S.value 0,S.value 0,物理意义,S.value 0时, S.value为系统中可用资源的数量; S.value = 0时,可用资源量正

18、好用完; S.value 0时,| S.value |为系统中等待使用该资源的队列长度, 即 (在信号量上等待的进程数),Y,N,入口,S.value 0,V操作的功能描述见下图:,S.value 0,P操作和V操作的执行都必须是一个 不可被中断的整体。除了p、v操作,其他任何方式都不能访问信号量。,(1)P(S): 表示请求分配一个资源; 检查能否做某事; 减1操作; 阻塞一个进程,(2)V(S): 表示释放一个资源; 给合作进程发信号; 加1操作; 唤醒一个进程,注:,AND型信号量 每次分配多类资源,但每类只能分配1个。 信号量集 一次分配多类资源,且每类资源可分配多个。,一、利用信号量

19、实现互斥,将临界资源量看作为1,取信号量mutex,用P,V互斥。,例1 二人共同存款,var mutex: Semaphore:=1; count: integer:=0;,2.4 同步机构应用,begin cobegin PA: begin var N: integer; P(mutex); N: =count; N: =N+100; count: =N; V(mutex); end PB: begin var M: integer; P(mutex); M: = count; M: =M+200; count: =M; V(mutex); end; coend end,几个进程共同执行时

20、互斥,var mutex=1:sempahore:=1;,Begin cobegin coend end,P1: begin P(mutex); cs1 V(mutex); ncs end,P2: begin P(mutex); cs2 V(mutex); ncs end,P3: begin P(mutex); cs3 V(mutex); ncs end,E.G. 例子,思考 : (1)进程P1,P2,P3是如何借助信号量mutex实现进程互斥的?(信号量的变化过程) (2)进程P1,P2,P3是否遵循了临界区的使用原则?,注: (i) 由mutex=1可知信号量相当于一把锁的作用,限制一次仅

21、一个进程进入cs。 (ii) P(mutex)使进程对mutex排成等待队列,(iii) 在一个进程进入cs时,必须是唯一,但在cs外,所有进程可并行。,二、利用信号量实现同步,一般同步问题有,保证一组合作进程按逻辑需要的执行次序执行。,保证共享缓冲区(共享数据)的合作进程的同步。,E.G. 例子,实现前趋关系,S1,S2,S4,S5,S3,S6,为了把原始的一批记录加工成当前的记录,创建了两个进程A和B。进程A启动输入设备不断地读记录,每读出一个记录就交给B去加工,直到所有的记录都处理结束。为此,系统中设置了一个能容纳一个记录的缓冲区,进程A把读出的记录存入缓冲区,进程B从缓冲区中取出记录加

22、工。如图所示:,E.G. 例子,进程A和进程B之间还存在直接制约关系:,分析:进程A和进程B是两个相互合作的并发进程,共享缓冲区。,实际中,经常采用互通消息的办法来控制执行速度,使相互合作的进程正确工作。,(i)当进程A的执行速度远大于进程B的执行速度时,可能出现记录丢失的现象发生; (ii)当进程B的执行速度远大于进程A的执行速度时,可能出现同一记录重复加工的现象发生。,具体如下: (1)进程A把一个记录存入缓冲区后,应向进程B发送消息,表示“缓冲区中有待处理的记录”; (2)进程B从缓冲区中取出待处理的记录后,应向进程A发送消息,表示“缓冲区中的记录已取走”; (3)进程A只有在得到进程B

23、发来的消息后,才能把下一条记录存入缓冲区,否则进程A等待; (4)进程B只有在得到进程A发来的消息后,才能从缓冲区中取出记录并加工,否则进程B等待。,解:信号量:empty 缓冲区是否已空,full 缓冲区中是否已有数据,begin var empty,full:semaphore:=1,0; Cobegin PA: repeat P(empty); “ 读下一条记录,进入缓冲区” V(full); PB: repeat P(full); “ 从缓冲区中取数” V(empty): coend end,2.4 经典进程的同步问题,哲学家进餐问题 生产者消费者问题 读者写者问题,一、 哲学家进餐问

24、题 问题描述:,Var chopstick:array0.4of semaphore=1,1,1,1,1; 第i位哲学家的活动可描述为: repeat wait(chopsticki); wait(chopstick(i+1) mod 5); eat; signal(chopsticki); signal(chopstick(i+1) mod 5); think; until false; 弊端:可能出现死锁,为了避免进程出现死锁现象而使系统进入不安全状态,人们提出了几种解决的方法: 至多只允许有四位哲学家同时去拿左边的筷子,最终能保证至少有一位哲学家能够进餐; 仅当哲学家的左、右两只筷子均可

25、用时,才允许他拿起筷子进餐; 规定奇数号哲学家先拿他左边的筷子,然后再去拿右边的筷子;而偶数号哲学家则相反。 思考:这三种解决方法如何用信号量来实现。,二、生产者 消费者问题 问题一 一个生产者和一个消费者,共享一个缓冲区。生产者不断生产物品,每生产一个便存入缓冲区,消费者要不断从缓冲区中取出一件物品消费。缓冲区只能容纳一件物品,生产者要等消费者取走物品后才能放入下一件物品,而消费者取走一件物品后要等生产者放入下一个物品才能再取。,生产者,消费者,放产品,取产品,分析: 生产者和消费者之间只存在同步关系。因此只须设同步信号量。 生产者向缓冲区中放物品之前,应检查缓冲区中是否为空,若不空,等待;

26、 消费者从缓冲区中取物品之前应检查缓冲区中是否不空,若空,等待; 生产者放入物品以后应唤醒等待的消费者; 而消费者取走物品以后应唤醒等待的生产者。,Var empty,full:semaphore:=1,0; Begin Parbegin Process Producer: Begin Repeat produce an item in nextp; Wait(empty); Buffer:=product; Signal(full); Until false End,Process consumer: Begin Repeat Wait(full); Take a product from

27、buffer; Signal(empty); Consume the product; Until false End Parend end,实现同步: (1)设资源信号量,往往多于一个; (2)对每个信号量的wait和signal操作成对调用,且出现不同的程序中; (3)至少有一个信号量的初始值=1,否则所有进程都无法执行。,问题二 m个生产者和k个消费者共享容量为n的缓冲池,不要求生产者和消费者互斥存取物品。,共享N个缓冲区,假定缓冲池具有N个大小相等的缓冲区,每个缓冲区存放一个消息,生产者进程有M个(M1): P1 P2 Pm,而消费者进程有K个(K1) :C1 C2 Ck.,生产者,消

28、费者,缓冲池,P1 P2 Pm C1 C2 Ck,分析: 生产者和消费者之间: 同步:缓冲池不满,生产者才可以放物品,缓冲池不空,消费者才可以取物品; 互斥:m个生产者向缓冲池中放物品要互斥;k个消费者从缓冲区中取物品也要互斥,但不要求生产者和消费者互斥存取物品。,Var empty,full,mutex1,mutex2:semaphore:=n,0,1,1; buffer:array0.n-1of item; in,out:integer:=0,0; begin parbegin producer: begin repeat produce an item in nextp; wait(em

29、pty); wait(mutex1); bufferin:=nextp; in:=(in+1)mod n; signal(mutex1); signal(full); until false end,consumer: begin repeat wait(full); wait(mutex2); nextc:=bufferout; out:=(out+1)mod n; signal(mutex2); signal(empty); until false end parend end,问题三 m个生产者和k个消费者共享容量为n的缓冲池,要求生产者和消费者互斥存取物品。,共享N个缓冲区,假定缓冲池

30、具有N个大小相等的缓冲区,每个缓冲区存放一个消息,生产者进程有M个(M1): P1 P2 Pm,而消费者进程有K个(K1) :C1 C2 Ck.,生产者,消费者,缓冲池,P1 P2 Pm C1 C2 Ck,分析: 生产者和消费者之间的关系: 同步:缓冲池不满,生产者才可以放物品,缓冲池不空,消费者才可以去物品; 互斥:m个生产者向缓冲池中放物品要互斥;k个消费者从缓冲区中取物品也要互斥,同时要求生产者和消费者互斥存取物品,即每个进程都必须互斥访问缓冲池。,利用记录型信号量解决生产者-消费者问题 mutex,初值为1,控制互斥访问缓冲池。 full,初值为0,表示当前缓冲池中满缓冲区数。 emp

31、ty,初值为n,表示当前缓冲池中空缓冲区数。,一般地系统会把有n个缓冲区的缓冲池组织成环形的结构,所以应把输入指针加1表示成 in:(in+1)mod n;输出指针加1表示成out:(out+1) mod n。当(in+1) mod nout时表示缓冲池满;而inout则表示缓冲池空。,图 环形缓冲池,begin parbegin proceducer:begin repeat produce an item in nextp; wait(empty); wait(mutex); bufferin:=nextp; in:=(in+1) mod n; signal(mutex); signal(

32、full); until false; end,consumer:begin repeat wait(full); wait(mutex); nextc:=bufferout; out:= (out+1) mod n; signal(mutex); signal(empty); consume the item in nextc; until false; end parend end,思考,生产者进程与消费者进程中,两个P操作的执行顺序能否颠倒?为什么? 注意:在每个程序中的多个wait操作的顺序不能任意颠倒,一般应先对资源信号量进行wait操作,再对互斥信号量进行wait操作,否则可能引起

33、死锁。 实现互斥: (1)实现一种互斥只须设一个互斥信号量,初始值为1; (2)对互斥信号量的wait和signal操作必须成对出现,且出现在同一个程序中。,三、读者写者问题 问题描述: 一个数据文件或记录,可被多个进程共享,有的进程要求读取其中的内容而不改变原文件的内容,有的进程在共享时要改写其中的内容。 关系分析: 多个Reader进程可以同时访问此数据文件; 多个Writer进程必须以互斥的方式访问此数据文件; Writer进程和Reader进程之间也必须以互斥的方式访问此数据文件。,写者之间不能同时写,写者写文件和读者读文件也不能同时进行,设互斥信号量wmutex,实现写写互斥和读写互

34、斥; 读者之间可以同时读文件,但必须和写者互斥。第一个读者必须检查是否有写者在写文件,最后一个读者离开后写者即可以写,因此需要唤醒被阻塞的写者。为了实现读者和写者之间的互斥,须设一个表示正在读的读者数目的变量readcount,当readcount的值不为0时,写者不能写。 (2)诸读者可同时读文件,但访问readcount应互斥,因此应设互斥信号量rmutex。,1. 利用记录型信号量解决读者写者问题 设置的信号量及其含义: rmutex:互斥型信号量,实现多个Reader进程间对readcount的互斥访问; wmutex:互斥型信号量,实现多个Writer进程间,或是Reader与 Wr

35、iter进程间对文件的互斥访问; 普通变量: readcount:整型变量,表示正在读的Reader进程的个数。,读者写者问题可描述如下: Var rmutex,wmutex:semaphore:=1,1; Readcount:integer:=0; begin parbegin Reader:begin repeat wait(rmutex);/读者互斥访问readcount if readcount=0 then wait(wmutex);/读写互斥 readcount:=readcount+1; signal(rmutex); perform read operation; ,wait(

36、rmutex);/读者互斥访问readcount readcount:=readcount-1; if readcount=0 then signal(wmutex); signal(rmutex); until false; end Writer:begin repeat wait(wmutex); /写写互斥,读写互斥 perform write operation; signal(wmutex); until false; end parend end,2. 利用信号量集解决读者写者问题 读者写者问题中设置的信号量: L:信号量,实现控制读者同时共享一个文件时的数目,初始值为RN; mx

37、:互斥型信号量,实现多个Writer进程之间或是Writer进程和多个Reader进程之间的互斥访问。,利用信号量集来解决读者写者问题的代码描述如下: Var RN: integer; L,mx:semaphore:=RN,1; begin parbegin Reader:begin repeat Swait(L,1,1); Swait(mx,1,0); perform read operation; Ssignal(L,1); until false; end, Writer:begin repeat Swait(mx,1,1;L,RN,0); perform write operation

38、; Ssignal(mx,1); until false; end parend end,小结,进程互斥:当某一进程正在访问cs时,就不允许其它进程来读写(访问),否则就会发生后果无法估计的错误,进程之间的这种相互制约关系为进程互斥。 进程同步:并发进程在一些关键点上可能需要互相等待与互通消息,这种相互制约的等待与互通消息,称为进程同步,进程间存在一种必然的依赖关系。,进程同步与互斥关系:都反映了在异步环境下并发进程间的相互制约关系。可归于同步范畴,但互斥是同步问题的一个特例,互斥解决临界区的使用,同步是并发进程在一些关键点上需互相等待互发消息。,2.5 进 程 通 信,进程通信:是指进程之间

39、的信息交换。 低级通信 高级进程通信:,大量信息交换,少量信息交换,一、高级进程通信的类型 共享存储器系统 共享数据结构(每次传递数据量小) 共享存储区,2.消息传递系统 以格式化的消息(在网络中称为报文)为单位进行信息交换。 3.管道通信(外存上的共享文件),图 管道通信示意图,二、消息传递通信的实现方法 1. 直接通信方式(及时通信) Send(receiver, message) Receive(sender, message) 2. 间接通信方式(信箱通信)(非及时通信) 通信前需要先建立信箱 Send(mailbox, message) Receive(mailbox, message),信箱类型 私用:用户进程创建 ,创建者可以从信箱里收消息 公用:OS创建,核准进程可以接收发给自己的消息,也可以向信箱里发消息 共享:用户进程创建,核准进程可以用,发送者和接收者的对应关系 1:1(专用信箱) 1:多(广播式) 多:1(客户机服务器) 多对多,3、实现消息传递系统的若干问题 链路的建立(显式、隐式) 链路的方向 消息的格式 进程的同步,三、消息缓冲队列通信机制示例 1. 消息缓冲队列通信机制中的数据结构 消息缓冲区 这种数据结构定义如下: type message buffer=record (记录型) sender; 发送者进程标识符 size

温馨提示

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

评论

0/150

提交评论