前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >8.进程通信 原

8.进程通信 原

作者头像
青木
发布2019-03-12 17:02:30
3530
发布2019-03-12 17:02:30
举报

进程通信

  • 进程通信是指进程之间的信息交换
  • 交换的信息量:一个状态或数值,上千个字节。

进程通信的分类

1)低级通信:进程的互斥和同步 2)高级通信:

代码语言:javascript
复制
指用户可直接利用OS提供的一组通信命令,高效地传送大量数据的一种通信方式。对用户透明。

高级通信分类

  • 共享存储器系统
  • 消息传递系统
  • 管道通信
共享存储器系统

(1)共享数据结构的通信方式

进程之间通过某种数据结构,如缓冲池进行通信属于低级通信方式。

(2)共享存储区通信方式

为了传送大量信息,在存储器中划出一块共享存储区,进程可通过对共享存储区进行读或写来实现通信,属于高级通信方式。

消息传递系统

消息交换的单位是消息或报文,分两种:

(1)直接通信方式

(2)间接通信方式

计算机网络中将消息称为报文

直接通信方式

  • 发送进程直接把消息发送给目标进程
  • 发送进程和接收进程都以显式方式分别提供对方的标识符
  • 系统提供两条通信原语

Send(Receiver,message);

Receive(Sender,message);

例如:

Send(P2,m1);

Receive(P1,m1);

解决生产者——消费者问题

代码语言:javascript
复制
repeat  ...
	produce an item in nextp;
		...
	Send(consumer,nextp);
until false;
repeat
	Receive(producer,nextp);
		...
	Consumer the item in nextc;
until false;

间接通信方式

  • 进程之间的通信需要通过某种中间实体,该实体用来暂存发送进程发送给目标进程的消息;接收进程则从该实体中取出对方发送给自己的消息。
  • 这种中间实体称为信箱
  • 消息在信箱中可以安全的保存,只允许核准的目标用户随时读取,故可实现非实时通信。

信箱的创建和撤销

  • 进程用信箱创建原语来建立一个新信箱。创建者进程应给出信箱名字、信箱属性(公用、使用或共享);对于共享信箱,还应给出共享者的名字。
  • 用信箱撤销原语来撤销

消息的发生于接收

  • Send(mailbox,message),将一个消息发送到指定信箱
  • Reveieve(mailbox,message),从指定信箱中接收一个消息

信箱分类

  • 私用信箱
  • 公用信箱
  • 共享信箱

私用信箱

  • 用户进程建立,作为该进程的一部分
  • 拥有者有权读消息,其他用户只能发送
  • 采用单向通信链路
  • 进程结束时信箱也消失

公用信箱

  • 由OS创建
  • 提供给系统中的所有核准进程使用
  • 进程既发送也可取出
  • 采用双向通信链路的信息来实现
  • 系统运行期间始终存在

共享信箱

  • 由某进程创建,创建时提供共享进程(用户)的名字
  • 信息的拥有者和共享者,都有权从信箱中取走发送给自己的消息
信息通信时发送进程和接收进程的关系
  • 一对一关系。建立一条专用的通信链路
  • 多对一关系。服务进程与多个用户进程之间进行交互,又称客户|服务器交互
  • 一对多关系。一个发送进程与多个接收进程进行交互,使发送进程可用广播形式,向接收者发送消息。
  • 多对多关系。建立一个公用信箱,多个进程投递并取走自己的消息

管道通信

  • 管道通信方式建立在文件系统(文件系统位于外存)的基础上,利用共享文件来连接两个相互通信的进程,此共享文件称为管道(Pipe)
  • 管道是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件。

管道通信必需的协调能力

(1)互斥。当一个进程正在对管道进行读/写操作时,另一进程必须等待。

(2)同步。当写(输入)进程把一定量的数据(如4K)写入管道后,便去睡眠等待,直到读(输出)进程取走数据后再把他唤醒。当读进程发现管道空时,也应睡眠等待,直至写进程将消息写入管道后,才将它唤醒。

(3)判别对方是否存在,只有确定了对方存在时方能进行通信。

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 进程通信
    • 进程通信的分类
      • 高级通信分类
    • 直接通信方式
      • 解决生产者——消费者问题
    • 间接通信方式
      • 信箱的创建和撤销
        • 消息的发生于接收
          • 信箱分类
            • 私用信箱
            • 公用信箱
            • 共享信箱
          • 管道通信
            • 管道通信必需的协调能力
            相关产品与服务
            文件存储
            文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档