【Linux】进程间通信(System V IPC)

这节我们开始学习System V IPC方案。
分别是共享内存,消息队列与信号量

会着重讲解共享内存,但是消息队列与信号量只会说明一下原理。

原因:System V是新设计的一套标准

  1. 与文件的整合度不高
  2. 只能进行本地通信

更何况,我们现在有了网络,可以进行更强大的通信。

目录

  • 共享内存:
    • 原理:
    • 理解:
    • 代码 + 理论:

共享内存:

原理:

首先我们要明确一点,进程间具有独立性,那我们通信必须要申请一块公共内存。下图就是一个简略的简述两个独立的A与B进程

在这里插入图片描述

我们回想一下动态库的加载,我们将加载到内存中的动态库可以分别通过页表映射到A与B的共享区,故动态库也叫做共享库(被多个进程同时拥有)。
那么共享内存当然也可以被加载到共享区,这样两个进程就可以有一块公共的内存空间了!
在这里插入图片描述

所以,通过地址空间的映射,让A和B看到同一份内存就叫做共享内存

理解:

  1. 所有的操作都是OS来完成的。–>因为OS是软硬件的管理者,

  2. OS可以做,但是OS不知道什么时候做,所以OS需要提供系统调用接口,这样就可以由进程发起

  3. 不仅仅只有A与B进程可以通过共享内存进行通信,同理D和C,E和F也都可以!

  4. OS注定要对共享内存进行管理。因为有的共享内存刚创建,有的要删除,有的要通信,这就需要管理起来,而管理就需要先描述在组织。在这里插入图片描述

  5. 共享内存 = 内存空间(数据)+ 共享内存属性


代码 + 理论:

先来看看如何申请共享内存
在这里插入图片描述
我们先来分别理解一下

size:这个代表你想要多大字节的内存

shmflg:这是最主要的两个标志在这里插入图片描述
与文件系统调用的传参是很相似的,都是本质都是位图的应用!

储蓄更新

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【30天精通Prometheus:一站式监控实战指南】第15天:ipmi_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们👋   欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀   Prometheus是云原生和DevOps的…

flink Jobmanager metaspace oom 分析

文章目录 现象作业背景分析现象分析类卸载条件MAT 分析 解决办法flink 官方提示 现象 通过flink 页面提交程序,多次提交后,jobmanager 报metaspace oom 作业背景 用户代码是flink 代码Spring nacos 分析 现象分析 从现象来看肯定是因为有的类没有被…

[学习笔记](b站视频)PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】(ing)

视频来源:PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】 前面P1-P5属于环境安装,略过。 5-6.Pytorch加载数据初认识 数据文件: hymenoptera_data # read_data.py文件from torch.utils.data import Dataset …

RabbitMQ-直连交换机(direct)使用方法

RabbitMQ-默认读、写方式介绍 RabbitMQ-发布/订阅模式 目录 1、概述 2、直连交换机 3、多重绑定 4、具体代码实现 4.1 生产者部分 4.2 消费者部分 5、运行代码 6、总结 1、概述 直连交换机,可以实现类似路由的功能,消息从交换机发送到哪个队列…

使用低代码系统的意义与价值主要体现在哪里?

使用低代码系统的意义与价值主要体现在以下几个方面,这些观点基于驰骋低代码设计者的专业洞察和行业经验: 快速原型创建: 低代码平台通过提供图形化界面和预构建的模块,极大地加速了系统原型的创建过程。这意味着企业能够更快地验…

Aras Innovator-Team(群组)的使用方法

当Aras Innovator在处理权限时,在不使用Team的情况下,系统的权限配置可以满足大部分业务场景,如:常见的按照组织架构,成员和角色分配权限,按照生命周期分配权限等。 如果遇到比较复杂的权限需求&#xff0c…

Docker安装启动Mysql

1、安装Docker(省略) 网上教程很多 2、下载Mysql5.7版本 docker pull mysql:5.7 3、查看镜像是够下载成功 docker images 4、启动镜像,生成容器 docker run --name mysql5.7 -p 13306:3306 -e MYSQL_ROOT_PASSWORD123456 -d mysql:5.7 5…

通过非欧几何体改变 AI 嵌入

目录 一、说明 二、LLM嵌入的形势 三、了解一些背景信息 3.1 什么是嵌入? 3.2 为什么嵌入在 NLP 中很重要? 3.3 复数Complex 几何的角色 3.4 C主动学习 3.5 角度嵌入 (AE):解锁稳健排序 3.6 RotatE:将关系…

探索 Python 的 vars() 函数

大家好,在软件开发的过程中,调试是一个不可或缺的环节。无论你是在解决 bug,优化代码,还是探索代码的执行流程,都需要一些有效的工具来帮助你更好地理解和调试代码。在 Python 编程中,vars() 函数是一个非常…

无人机路径规划:基于鸽群优化算法PIO的无人机三维路径规划MATLAB代码

一、无人机模型介绍 无人机三维航迹规划_无人机航迹规划-CSDN博客 二、部分代码 close all clear clc warning (off) global model global gca1 gca2 gca3 gca4 model CreateModel(); % Create search map and parameters load(BestPosition5.mat); load(ConvergenceCurve5…

【Linux】Linux的权限_1

文章目录 三、权限1. shell外壳2. Linux的用户3. Linux权限管理文件访问者的分类文件类型和访问权限 未完待续 三、权限 1. shell外壳 为什么要使用shell外壳 由于用户不擅长直接与操作系统直接接触和操作系统的易用程度、安全性考虑,用户不能直接访问操作系统。 什…

GIS、GPS、RS综合应用

刘老师(副教授),北京重点高校资深专家,拥有丰富的科研及工程技术经验,长期从事3S在环境中的应用等领域的研究和教学工作,具有资深的技术底蕴和专业背景。 第一章、3S 技术及应用简介 1.1、3S 技术及集成简…

C++20 范围(Range):简化集合操作

C20 范围:简化集合操作 一、范围(Range)的目的二、在模板函数中使用范围概念三、投影四、视图五、结论 一、范围(Range)的目的 在 C20 中,范围概念要求一个对象同时拥有迭代器和结束哨兵。这在标准集合的上…

STM32HAL-最简单的长、短、多击按键框架

目录 概述 一、开发环境 二、STM32CubeMx配置 三、编码 四、运行结果 五、总结 概述 本文章使用最简单的写法实现长、短、多击按键框架,非常适合移植各类型单片机,特别是资源少的芯片上。接下来将在stm32单片机上实现,只需占用1个定时…

定个小目标之每天刷LeetCode热题(7)

今天这道题是道简单题,使用双指针进行迭代即可,画了下草图如下 代码如下 class Solution {public ListNode reverseList(ListNode head) {if (head null || head.next null) {return head;}ListNode p head, q head.next, temp null;while (q ! nu…

电脑缺少dll文件怎么解决,分享几种靠谱的解决方法

在现代科技高度发达的时代,电脑已经成为我们生活和工作中不可或缺的工具。然而,在使用电脑的过程中,我们可能会遇到一些问题,其中之一就是电脑丢失dll文件。那么,当我们面临这样的问题时,应该如何解决呢&am…

全新市场阶段,Partisia BlockChain 将向 RWA、DeFi 等领域布局

Partisia Blockchain 是一个全新范式的 Layer1,该链通过 MPC 方案来构建链上隐私方案,同时该链通过系列独特且创新的设计,旨在进一步解决目前 Web3 中所面临的不可能三角问题,包括安全性、互操作性和可扩展性,为更多的…

Mac安装pytorch(二)

书接上回,配置好了pytorch环境后,看看是否真的能用 终端输入一下代码: import torch xtorch.rand(3,4) print(x) 出现这些后表明安装完成,可使用 接下来在pycharm中使用 打开设置

Django表单革命:打造安全、高效、用户友好的Web应用

Django表单处理,听起来是不是有点枯燥?别急,阿佑将带你领略Django表单的艺术之美。我们将以轻松幽默的语言,一步步引导你从表单的创建到管理,再到验证和自定义,让你在不知不觉中掌握Django表单的精髓。文章…

【工具】探索 DOU:每用户数据使用量

缘分让我们相遇乱世以外 命运却要我们危难中相爱 也许未来遥远在光年之外 我愿守候未知里为你等待 我没想到为了你我能疯狂到 山崩海啸没有你根本不想逃 我的大脑为了你已经疯狂到 脉搏心跳没有你根本不重要 🎵 邓紫棋《光年之外》 什么是 DOU…