计算机操作系统(第四版)第二章进程通信
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5
1 共享存储器系统
共享存储器系统:相互通信的进程通过共 享某些数据结构或存储区进行通信,因而可进 一步分为: 基于共享数据结构的通信方式;(低效,只 适于传递少量数据) 基于共享存储区的通信方式。为了传送大量 数据,在存储区中划出一块共享存储区,诸进 程可通过对共享存储区进行读或写数据实现通 信。
16
为了协调双方的通信,管道通信机制必须 提供以下三方面的协调能力: 互斥。一个进程正在对pipe进行读/写操作时, 另一进程必须等待。 同步。当写(输入)进程把一定数量的数据写 入pipe后,便去睡眠等待,直到读(输出)进 程取走数据将其唤醒;当读进程读空pipe,也 应睡眠等待,直至写进程将数据写入管道,才 将其唤醒。 对方是否存在。只有确定对方已存在时,才能 进行管道通信,否则会造成因对方不存在而无 限期等待。
......
...... Receive(pid, N) ...... N: SIZE:消息长度 TEXT:消息正文 ......
消息
10
发送进程和接收进程
发送原语Send()和接收原语receive()
设公用信号量mutex,并置初值为1 设SM为接收进程的私用信号量,置初值为0
Send(m) Receive(m ) begin begin P(SM) 等待接的消息的个数 向系统申请一个消息缓冲区 P(mutex) 使用公用缓冲区 P(mutex) 使用公用缓冲区 摘下消息队列中的消息m 将发送区消息m送入新申请的消息缓冲区 将消息队列m从缓冲区复制到接收区 把消息缓冲区挂入接收进程的消息队列 释放缓冲区 V(mutex) 释放缓冲区 V(mutex) 释放公用缓冲区 V(SM) 向接收进程发送消息 end end
进程通信
1
进程通信:指进程间的信息交换。 按通信内容可以划分为2种 低级通信:进程之间控制信息的交换称为低级通信。 一般只传送一个或几个字节的信息,达到 控制进程执行速度的作用。(进程的同步和互斥)
信号量机制作为同步工具是卓有成效的,但作为通信工具则不够理想, (效率低。通信对用户不透明。)
3
高级通信的三种方式:
1、共享存储器系统
2、消息传递系统
消息缓冲通信(直接通信)
信箱通信(间接通信) 3、管道通信---共享文件通信
4
进程通信的类型
高级通信机制类型 1 共享存储器系统(Shared-Memory System) 2 消息传递系统(Message passing System) 3 管道(pipe)通信系统
6
2 消息传递系统
在消息传递系统中,进程间的数据交换是以消 息(message,在计算机网络中又称报文)为单 位。程序员直接利用系统提供的一组通信命令 (原语)来实现通信。
因其实现方法的不同,又可分为:
直接通信方式(消息缓冲机制) 间接通信方式(信箱通信方式)
7
直接通信方式:
发送进程直接将消息发送给接收进程,并将 它挂在接收进程的消息缓冲队列上。接收进程从 消息缓冲队列中取得消息。故称为消息缓冲机制。 在直接通信方式下,企图发送或接收消息的每 个进程必须指出信件发给谁或从哪里接收消息, 可用send原语和receive原语来实现进程之间的 通信: send(P,消息):把一个消息发送给进程P。 receive(Q,消息):从进程Q接收一个消息。
15
管道 是指用于连接一个读进程和一个写进 程,以实现它们之间通信的一个共享文 件,又称pipe文件。 向管道(共享文件)提供输入的发 送进程(即写进程),以字符流形式将 大量的数据送入管道;而接收管道输出 的接收进程(即读进程),可从管道接 收数据,由于发送和接收都是利用管道 进行通信的,故称为管道通信。
17
1.信箱通信是一种( B )通信方式。 A. 直接通信 B. 间接通信 C. 低级通信 D. 信号量 2.在操作系统中,P、V操作是一种( D )。 A 、机器指令 B、系统调用命令 C、作业控制命令 D、低级进程通信原语 3.对进程的管理和控制使用( B )。 A、指令 B、原语 C、信号量 D、信箱
高级通信:用户可以直接利用操作系统所提供的一组 通信命令,高效地传送大量数据的一种通信方式。
2
进程的同步与互斥是一种通信方式,一进 程可通过修改变量或信号量告知另一进程,它 是否可以继续执行下去。利用生产者——消费 者算法,生产者进程可以传送一批数据给消费 进程,或者说生产者通过缓冲区与消费者进行 通信,但P、V操作只能传递信号,信号本身不 包含任何数据,而进程不当还容易导致进程死 锁,因此,称这些同步机构为低级通信机构。
1 在发送进程把消息写入缓冲区和把缓冲区挂入消息队列时, 应禁止其他进程对缓冲区消息队列的访问。同理,接收进程 取消息时也禁止其他进程访问缓冲区消息队列 2 当缓冲区中没有信息存在时,接收进程不能接收到任何消息
9
发Leabharlann Baidu进程 S
消息 PCB
接收进程 R
...... 消息链指针 ......
消息
M:
...... Send(R, M) ...... SIZE:消息长度 TEXT:消息正文
14
3、管道通信
管道(pipe)通信由UNIX首创的一种借
助文件和文件系统形成的一种通信方式 。
由于其有效性,一些系统继 UNIX 之后相继引 入了管道技术,如 pc-dos ,管道通信将成为 进程通信的一种重要方式。 消息缓冲通信机构是以内存缓冲区为基 础。
管道是以文件系统为基础。
有名管道
无名管道
12
发送信件:如果指定的信箱未满,则将信件送入信 箱中由指针所指示的位置 , 并释放等待该信箱中 的信件的等待者;否则 ,发送信件者被置成等待 信箱状态。 信箱可由OS创建,也可由用户进程创建,创建 者是信箱的拥有者,据此可把信箱分为:私用信 箱,公用信箱,共享信箱。
13
在利用信箱通信时,在发送进程和接 收进程之间,存在着四种关系:
间接通信方式:
发送进程将消息发送到某个中间实体(一般 称为信箱)中,接收进程从中取得消息,所以称 8 为信箱通信方式,相应的系统称为电子邮件系统。
消息缓冲机制(直接通信)
发送进程
在自己的内存空间设置一个 把要发送的消息填入发送区 在自己的内存 空间设置一个
发送区
接收区
接收进程
公用缓冲区
两通信进程必须满足下列条件
信箱通信(间接通信)
信(邮)箱 信箱是一种数据结构,逻辑上它分成两部分: 信箱头和由若干格子组成的信箱体。
间接通信方式中的发送和接收原语的形式如下: send(A,信件):把一个信件发送给信箱A; receive(A,信件):从信箱A接收一封信件; 发送和接收消息原语的功能如下: 接收信件:如果指定信箱中有信,则取出一封 信件,并释放等待信箱的等待者,否则,接收信件者 被置成等待信箱中信件的状态。
一对一关系:即可以为发送进程和接收进程建立 一条专用的通信链路; 多对一关系:允许提供服务的进程与多个用户进 程进行交互,也称客户/服务器交互; 一对多关系:允许一个发送进程与多个接收进程 交互,使发送进程用广播的形式,发送消息; 多对多关系:允许建立一个公用信箱,让多个进 程都能向信箱投递消息,也可取走属于自己的消 息。
18