当前位置: 首页 > news >正文

操作系统-进程通信(共享存储 消息传递 管道通信 读写管道的条件)

文章目录

  • 什么是进程通信
  • 为什么进程通信需要操作系统支持
  • 共享存储
  • 消息传递
    • 直接通信方式
    • 间接通信方式
  • 管道通信
  • 小结
  • 注意

什么是进程通信

分享吃瓜文涉及到了进程通信

进程通信需要操作系统支持
在这里插入图片描述

为什么进程通信需要操作系统支持

进程不能访问非本进程的空间

当进程P和Q需要进行数据交互时候,P不能之间把数据写到Q的地址空间里,所以需要有操作系统的支持才能完成

在这里插入图片描述

共享存储

申请一片内存区域作为共享内存区,将该共享内存区都映射到各个进程的地址空间中

对共享内存区的访问应该是互斥的

在这里插入图片描述
操作系统只负责提供一片共享内存区域和映射,关于各个进程往这片区域存放的数据形式,存放位置由进程控制。

基于数据结构的共享:类似定义了一个数据结构变量,这个变量作为共享区域其他进程都可以共享。此时进程通信的自由度较低,需要按照该变量的相关要求来访问(如定义了整型数组变量,那么每次写和读都是整型类型的且需按照数组的要求即个数限制)

如左图是基于数据结构的共享
在这里插入图片描述

消息传递

格式化消息由消息头和消息体组成

在这里插入图片描述

直接通信方式

内核区域有各个进程的PCB,各个进程的PCB包含了该进程的消息队列,也就是其他进程发送给该进程,应该被该进程接收的消息。

P给Q发消息:在P进程空间完善要发送的消息,然后使用发送原语,该原语指明了消息的接收者

这个发送原语会导致操作系统内核接收到这个要发送的消息,并把它挂到进程Q的消息队列里面(或者说复制到)
在这里插入图片描述
进程Q使用接收原语,该原语指明了接收谁发过来的消息,然后操作系统内核将Q的消息队列中属于P发过来的消息复制到进程Q的地址区域

在这里插入图片描述

间接通信方式

进程P通过系统调用申请一个信箱A(或者多个信箱)在内核空间中
进程P在自己进程空间内完善消息(类似代码执行时对数据加工)
在这里插入图片描述

然后使用发送原语,该发送原语指明了发送到的信箱A,操作系统将该消息复制到信箱A
在这里插入图片描述
进程Q使用接收原语,该原语指明了从哪个信箱接收消息,然后操作系统会将给信箱A的消息复制到进程Q的地址空间
在这里插入图片描述
注意
在这里插入图片描述

管道通信

管道某个时刻只能单向(半双工)
进程往管道写,进程往管道读出内容(循环队列)

系统调用方式申请一个管道文件,本质是内存中的内存缓存区

管道中前面有空位需要先写前面的,前面填满了才能往后面写,读也同样(先进先出 本质是循环队列 先写的就是先进入的,出来的就是先进入的,如果前面的有空位此时还要写,会先写前面的)

半双工:某个时间段内一个管道数据是单向流动的,只能由一方传到另一方。但不同时刻流动方向可以不同,但一个管道只能同时只有一个流动方向

多个进程读同一个管道会错乱即无法保证哪个数据被谁读走了

各进程互斥访问管道同一时刻只有一个进程对管道进行写或者读操作

5.第二个解决方案中操作系统控制从管道中读
在这里插入图片描述

小结

注意共享存储进程自己实现互斥

在这里插入图片描述

注意

在这里插入图片描述

相关文章:

操作系统-进程通信(共享存储 消息传递 管道通信 读写管道的条件)

文章目录 什么是进程通信为什么进程通信需要操作系统支持共享存储消息传递直接通信方式间接通信方式 管道通信小结注意 什么是进程通信 分享吃瓜文涉及到了进程通信 进程通信需要操作系统支持 为什么进程通信需要操作系统支持 进程不能访问非本进程的空间 当进程P和Q需要…...

NODE笔记 2 使用node操作飞书多维表格

前面简单介绍了node与简单的应用,本文通过结合飞书官方文档 使用node对飞书多维表格进行简单的操作(获取token 查询多维表格recordid,删除多行数据,新增数据) 文章目录 前言 前两篇文章对node做了简单的介绍&#xff…...

Scikit-Learn 高级教程——自定义评估器

Python Scikit-Learn 高级教程:自定义评估器 Scikit-Learn 提供了许多内置的评估器(Estimator)来进行机器学习任务,但在某些情况下,我们可能需要自定义评估器以满足特定需求。本篇博客将深入介绍如何在 Scikit-Learn …...

6 时间序列(不同位置的装置如何建模): GRU+Embedding

很多算法比赛经常会遇到不同的物体产生同含义的时间序列信息,比如不同位置的时间序列信息,风力发电、充电桩用电。经常会遇到该如此场景,对所有数据做统一处理喂给模型,模型很难学到区分信息,因此设计如果对不同位置的…...

Git 基本概念

Git是一种版本控制系统,用于跟踪文件的更改并协同开发代码。它具有以下基本概念和使用方式: 仓库(Repository):Git将文件存储在仓库中,它是保存项目历史记录和更改的地方。一个项目通常有一个主要的仓库。 …...

android:excludeFromRecents

android:excludeFromRecents 基础从根上影响 TaskexcludeFromRecents 属性可能会影响系统 基础 android:excludeFromRecents是一种在Android应用程序清单文件(AndroidManifest.xml)中使用的属性,用于指定一个Activity是否应该在最近任务列表…...

微信小程序登录获取手机号教程(超详细)

1. 背景介绍: 在我们开发微信小程序时,登录时,需要获取用户手机号作为唯一标识,下面我介绍一下获取手机号的教程。 本篇文章介绍后端获取方法: 前端工作 后端工作 前端 新建Page页面,在xxx.wxml中加入…...

uniapp app更新

uniapp app更新 这个版本要随之增加,不然刚更新时直接用app, 新包增加的那些页面跳转会有问题,不能跳新的页面 //app更新检测 updataApp(){const that this;uni.showLoading({title:加载中...})plus.runtime.getProperty(plus.runtime.appid, functio…...

C语言第八弹---一维数组

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 一维数组 1、数组的概念 2、⼀维数组的创建和初始化 2.1、数组创建 2.2、数组的初始化 2.3、数组的类型 3、⼀维数组的使用 3.1、数组下标 3.2、数组元素…...

科普栏目 | 水离子水壁炉是如何打造清新环境,提升居家生活?

现代生活中,人们对于居家环境的品质有着越来越高的要求。水离子水壁炉作为一种创新科技,通过其独特的功能,为居家生活带来了一系列的提升。 1.采用先进的技术,减少了对传统能源的依赖,让我们在提高生活品质的同时&…...

python 进程

1创建一个爬虫程序 import requests urls [https://www.cnblogs.com/#p{page}for page in range(1, 501) ]def craw(url):r requests.get(url)print(url, len(r.text))craw(urls[0])2定义单进程和多进程 import blob_spider import threading import timedef single_thread…...

网络编程套接字(1)

网络编程基础 为什么需要网络编程? --丰富的网络资源 用户在浏览器中,打开在线视频网站,如优酷看视频,实质通过网络,获取到网络上的一个视频资源 与本地打开视频文件类似,只是视频文件这个资源的来源是网络. 相比于本地资源来说,网络提供了更为丰富的网络资源: 所谓的网络…...

harmonyOS app 开发环境配置流程

1.安装DevEco Studio,注意nodejs版本,安装过程中有提示,添加hdc到系统环境变量中,用于调用hdc命令 2.开启真机设备的开发人员选项,以及开启5555端口(需要连接usb线) https://developer.harmonyo…...

【嵌入式学习】C++QT-Day2-C++基础

笔记 见我的博客:https://lingjun.life/wiki/EmbeddedNote/19Cpp 作业 自己封装一个矩形类(Rect),拥有私有属性:宽度(width)、高度(height), 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度…...

新手基础易懂的创建javaweb项目的方法(适用于IDEA 2023版)

新手基础易懂的创建javaweb项目的方法 前言我的IDEA版本新建项目步骤1步骤2步骤3步骤4步骤5步骤6<font colorred>特别注意&#xff0c;一定要注意步骤7步骤8 配置Tomcat服务器步骤9步骤10步骤11步骤12步骤13修改前修改后 步骤14 点击修复修改前修改后 试运行 前言 创建ja…...

决策树的基本构建流程

决策树的基本构建流程 决策树的本质是挖掘有效的分类规则&#xff0c;然后以树的形式呈现。 这里有两个重点&#xff1a; 有效的分类规则&#xff1b;树的形式。 有效的分类规则&#xff1a;叶子节点纯度越高越好&#xff0c;就像我们分红豆和黄豆一样&#xff0c;我们当然…...

[极客大挑战 2019]Upload1

直接上传php一句话木马&#xff0c;提示要上传image 把文件名改成gif并加上gif文件头后&#xff0c;绕过了对image类型的检测&#xff0c;但是提示文件内含有<?&#xff0c;且bp抓包后改回php也会被检测 那我们考虑使用js执行php代码 <script languagephp>eval($_PO…...

Android 渲染机制

1 Android 渲染流程 一般情况下&#xff0c;一个布局写好以后&#xff0c;使用 Activity#setContentView 调用该布局&#xff0c;这个 View tree 就创建好了。Activity#setContentView 其实是通过 LayoutInflate 来把布局文件转化为 View tree 的&#xff08;反射&#xff09;…...

go语言Map与结构体

1. Map map是一种无序的基于key-value的数据结构&#xff0c;Go语言中的map是引用类型&#xff0c;必须初始化才能使用。 1.1. map定义 Go语言中 map的定义语法如下 map[KeyType]ValueType其中&#xff0c; KeyType:表示键的类型。ValueType:表示键对应的值的类型。map类型的…...

C#,打印漂亮杨辉三角形(帕斯卡三角形)的源代码

杨辉 Blaise Pascal 这是某些程序员看完会哭的代码。 杨辉三角形&#xff08;Yanghui Triangle&#xff09;&#xff0c;是一种序列数值的三角形几何排列&#xff0c;最早出现于南宋数学家杨辉1261年所著的《详解九章算法》一书。 欧洲学者&#xff0c;最先由帕斯卡&#x…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...