2.4、进程通信

news2024/12/29 10:08:26

整体框架

image-20230118222146010

1、什么是进程通信?

顾名思义,进程通信就是指进程之间的信息交换。

进程是分配系统资源的单位(包括内存地址空间),

  • 因此 各进程 \color{red}各进程 各进程拥有的 内存地址空间相互独立 \color{red}内存地址空间相互独立 内存地址空间相互独立

image-20230118214914239

为了保证安全, 一个进程不能直接访问另一个进程的地址空间 \color{red}一个进程不能直接访问另一个进程的地址空间 一个进程不能直接访问另一个进程的地址空间

但是进程之间的信息交换又是必须实现的。

为了保证进程间的安全通信,操作系统提供了一些方法。

image-20230118215015724

2、共享存储

image-20230118215242272

两个进程对共享空间的访问必须是互斥的(互斥访问通过操作系统提供的工具实现)。

操作系统只负责提供共享空间和同步互斥工具(如 PV 操作)

image-20230118215558218

基于数据结构 \color{red}基于数据结构 基于数据结构的共享:

  • 比如共享空间里只能放一个长度为 10 的数组。

  • 这种共享方式速度慢、限制多,

  • 是一种 低级通信 \color{red}低级通信 低级通信方式

基于存储区 \color{red}基于存储区 基于存储区的共享:

  • 在内存中画出一块共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统。

  • 相比之下,这种共享方式速度更快,

  • 是一种 高级通信 \color{red}高级通信 高级通信方式。

3、管道通信

“管道” 是指用于连接读写进程的一个共享文件,

  • 又名 pipe 文件。
  • 其实就是在内存中开辟一个大小固定的缓冲区

image-20230118215739247

管道只能采用 半双工通信 \color{red}半双工通信 半双工通信,某一时间段内只能实现单向的传输。

  • 如果要实现双向同时通信,则需要设置两个管道

image-20230118215947722

首先进程 1 1 1 会往管道中写数据, 当管道中的数据写满了之后进程 2 2 2 才可以开始往外读数据

只有这个数据全部被读出后,进程 1 1 1 才可以继续往里面写数据


数据以字符流的形式写入管道,当管道写满时,写进程 write() 系统调用将被阻塞,等待读进程将数据取走。

当读进程将数据全部取走后**,管道变空**,此时读进程read() 系统调用将被阻塞


如果 没写满 , 就不允许读 \color{red}没写满,就不允许读 没写满,就不允许读

如果 没读空 , 就不允许写 \color{red}没读空,就不允许写 没读空,就不允许写

数据一旦被读出,就从管道中被抛弃,

  • 这就意味着 读进程最多只能有一个 \color{red}读进程最多只能有一个 读进程最多只能有一个

    否则可能会有读错数据的情况。

4、消息传递

进程间的数据交换以 格式化的消息 \color{red}格式化的消息 格式化的消息Message)为单位。

进程通过操作系统提供的 “发送消息/接收消息” 两个 原语 \color{red}原语 原语进行数据交换。

例如:TCP 报文段的首部就是消息头,数据载荷就是消息体

image-20230118220813617

image-20230118221019141

4.1、直接通信方式

消息直接挂到接收进程的消息缓存队列上

image-20230118221051455

4.2、间接通信方式

消息要先发送到中间实体(信箱)中,因此也称 “信箱通信方式” 。

  • Eg:计网中的电子邮件系统

image-20230118221353103

5、整体框架

image-20230118222138424

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/173256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

知识分享-商业数据分析业务全流程

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

力扣sql简单篇练习(二)

力扣sql简单篇练习(二) 1 从不订购的客户 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 一个人也是有可能下多个订单的 SELECT name Customers FROM Customers WHERE id not in(SELECT distinct Customerid FROM Orders)1.3 运行截图 2 删除重…

【LINUX修行之路】工具篇——Vim的使用及配置

🍿本节主题:vim的使用 🎈推荐阅读:回溯算法 、C入门(上篇) 💕我的主页:蓝色学者的主页 文章目录一、前言二、文本编辑器和IDE三、选择vim的理由四、vim操作模式4.1普通模式(command …

springboot项目实现腾讯云的短信验证

前言:可以先去看下腾讯云开通短息服务需要哪些信息。我这里使用自己很久之前申请过的公众号,其他的比如网站,小程序啥的也没有,哈哈哈~。 腾讯云地址: https://console.cloud.tencent.com/smsv2/csms-sign/create接下…

非父子组件的通信

在开发中,我们构建了组件树之后,除了父子组件之间的通信之外,还会有非父子组件之间的通信。这里我们主要讲两种方式: Provide/Inject;全局事件总线; 1、Provide和Inject Provide/Inject用于非父子组件之间…

什么是OAuth2

2.3 什么是OAuth2 2.3.1 OAuth2认证流程 在前边我们提到微信扫码认证,这是一种第三方认证的方式,这种认证方式是基于OAuth2协议实现, OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使…

离散数学-图论-图的基本概念(11)

图的基本概念 1 图 1.1 图的定义 定义1&#xff1a; 一个无向图G是一个有序的二元组<V,E>&#xff0c;其中 &#xff08;1&#xff09;V是一个非空有穷集&#xff0c;称为顶点集&#xff0c;其元素称为顶点或结点。 &#xff08;2&#xff09;E是无序积V&V的有穷多…

什么是安卓版 UI 业务包 SDK?如何接入?

涂鸦 Android 业务包是指包含业务逻辑和 UI 界面的涂鸦垂直业务模块&#xff0c;旨在为基于涂鸦智能生活 SDK 开发的应用提供快速的一站式接入涂鸦业务模块的能力。 概述 目前提供的业务包种类繁多&#xff0c;例如&#xff1a; H5 商城设备配网设备控制IP 摄像机智能场景常…

“深度学习”学习日记。与学习相关的技巧 -- 参数的更新

2023.1.20 在神经网络的学习这一章&#xff0c;学习过了利用 梯度下降法 对参数进行更新&#xff0c;目的是找到是损失函数的值尽量小的参数&#xff1b;像解决这样的问题称为 最优化 。 由于参数空间十分复杂、参数规模十分庞大&#xff0c;导致“最优化”的过程变得困难。 …

C规范编辑笔记(十二)

往期文章&#xff1a; C规范编辑笔记(一) C规范编辑笔记(二) C规范编辑笔记(三) C规范编辑笔记(四) C规范编辑笔记(五) C规范编辑笔记(六) C规范编辑笔记(七) C规范编辑笔记(八) C规范编辑笔记(九) C规则编辑笔记(十) C规范编辑笔记(十一) 正文&#xff1a; 放假了&#xff…

【数据结构】万字深入浅出讲解顺序表(附原码 | 超详解)

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;C语言实现数据结构 &#x1f4ac;总结&#xff1a;希望你看完…

智能矿山电子封条系统 YOLOv5

智能矿山电子封条系统通过yolov5深度学习技术&#xff0c;对现场画面进出口以及主要的井口等重要地方对矿井人员变化、生产作业执勤状态及出入井人员等状况实时监控分析监测。我们使用YOLO(你只看一次)算法进行对象检测。YOLO是一个聪明的卷积神经网络(CNN)&#xff0c;用于实时…

Google AIY Vision Kit安装及国内配置

Google AIY Vision Kit安装及国内配置1. AIY Vision Kit组装环节Step 1&#xff1a;收集其他附件选择1&#xff1a;使用AIY项目应用程序选择2&#xff1a;使用显示器、鼠标和键盘Step 2&#xff1a;检查硬件清单Step 3&#xff1a;构建AIY Vision KitStep 3.1&#xff1a;获取最…

旺店通·企业奇门和用友BIP接口打通对接实战

旺店通企业奇门和用友BIP接口打通对接实战接通系统&#xff1a;旺店通企业奇门旺店通是北京掌上先机网络科技有限公司旗下品牌&#xff0c;国内的零售云服务提供商&#xff0c;基于云计算SaaS服务模式&#xff0c;以体系化解决方案&#xff0c;助力零售企业数字化智能化管理升级…

Mac和Windows局域网互传文件iPhone和Windows局域网互传文件

生活中&#xff0c;我们可以通过微信和QQ或网盘等等传输工具进而实现文件互传&#xff0c;但是面临一个问题&#xff0c;大文件无法上传&#xff0c;而且受到网速的限制等诸多因素影响&#xff0c;如今我们可以通过局域网进行实现文件互传&#xff0c;进而改变此种囧境。 首先在…

17道Redis 面试题

Redis 持久化机制缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题热点数据和冷数据是什么Memcache与Redis的区别都有哪些&#xff1f;单线程的redis为什么这么快redis的数据类型&#xff0c;以及每种数据类型的使用场景&#xff0c;Redis 内部结构redis的过期策略以及…

KVM安装部署 | 举例安装虚机Windows2012R2

目录 1、基础环境准备 2、KVM的安装 3、开启服务 4、开启图形化界面 5、也可以通过浏览器管理KVM 6、举例安装一个windows2012R2 1、基础环境准备 【关闭防火墙】 systemctl stop firewalld systemctl disable firewalld 【关闭selinux】 修改文件/etc/selinux/config…

Linux常用指令及Web程序的部署

作者&#xff1a;~小明学编程 文章专栏&#xff1a;Linux 格言&#xff1a;热爱编程的&#xff0c;终将被编程所厚爱。 目录 Linux中的常见指令 ls pwd cd 文件操作 touch cat mkdir echo rm cp mv man less vim head tail grep ps netstat Linux权限 搭建Ja…

模电相关知识

6 放大电路中的负反馈 6.1 反馈的基本概念及判断方法 6.4 深度负反馈放大电路放大倍数的分析 6.4.1 深度负反馈的实质 6.4.4 基于理想运放的放大倍数分析 6.4.4.1理想运放的线性工作区 理想运放的性能指标理想运放在线性区的特点 标准运放&#xff0c;有两个输入端和一个…

aws codesuit 在codebuild和codepipeline中集成jenkins

codebuild集成jenkins https://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/jenkins-plugin.html Setting up a CI/CD pipeline by integrating Jenkins with AWS CodeBuild and AWS CodeDeploy source选择本地的gitlab仓库&#xff0c;创建一个简单的springboot项…