Linux中systemv共享内存

目录

1.原理

2.接口

1.shmget(share_memory_get获得共享内存)

2.ftok

3.shmat(share_memory_attaintion挂接到物理内存上)

4.key和shmid的区别

5.ipc 指令

6.shmdt函数(share_memory_detach取消挂接)

7.shmctl函数(share_memory_contrl)

1.cmd参数

3.代码呈现

4.谈谈优缺点

5.共享内存的属性

6.利用管道来优化共享内存


1.原理

进程间通信的本质就是:让不同的进程看到同一份资源。(和匿名通道和命名通道一样的道理)

共享内存一样需要内核结构体描述它,再组织。

2.接口

1.shmget(share_memory_get获得共享内存)

这边的size最好是4096(4KB)的整数倍,学过内存分配的知道,一般给物理内存分配的资源都是4kb的分配的,即使你要1字节,也会开辟4kb的内存。

但是我们看到这个函数,我们就会发问题了,key哪里来?所以我们在创建一个共享内存时,要先创建一个key值出来!

2.ftok

这两个形参是由用户自己规定。

3.shmat(share_memory_attaintion挂接到物理内存上)

题外:我们C语言中malloc开辟内存,其实只是在页表上开辟的内存,当代码运行到用这个内存的时候,发生缺页中断,才会在物理内存上开辟。

我们上面shmget是在物理内存上开辟共享内存空间,但是我们需要从页表和物理内存上建立联系,才能真正用到这上面!

其中shmaddr是在进程地址空间共享区的具体位置,但是我们不知道,就直接默认nullptr就好了,shmflg一样0就好了。

4.key和shmid的区别

5.ipc 指令

当完成上述函数,共享内存其实已经创建出来了,当然是由函数来删除这个共享内存的,但我现在想先将一下linux的指令,是如何查看和删除的。

6.shmdt函数(share_memory_detach取消挂接)

有挂接到物理内存,那就有取消,下面最后一个函数,一样道理,是取消共享内存!

7.shmctl函数(share_memory_contrl)

1.cmd参数

shmid_ds结构体下面属性会讲。

3.代码呈现

log.txt的日志代码在:Linux命名管道-CSDN博客有说。

comm.hpp

processa.cc

processb.cc

代码运行结果:

4.谈谈优缺点

1.共享内存没有像管道那样的同步互斥之类的保护机制。

2.共享内存是所有进程间通信速度最快的,因为他拷贝少,直接读取内存,而通信则需要在自己的用户层缓冲区(数组)先拷贝,再拷贝到管道上,在从管道拷贝到另一个用户层缓冲区。

3.共享内存内部的数据,有自己维护。

5.共享内存的属性

6.利用管道来优化共享内存

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

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

相关文章

GenAI助力DevOps,塑造软件工程的未来

自 2022 年以来,GenAI 无疑已成为一种普遍的技术趋势。在本文中,我们将探索 DevOps 中令人兴奋的 GenAI 领域,讨论其潜在优势、局限性、新兴趋势和最佳实践,深入了解 AI 支持的 DevOps 前沿世界,并探索这一强大组合如何…

Laravel Octane 和 Swoole 协程的使用分析二

又仔细研究了下 Octane 源码和 Swoole 的文档,关于前几天 Laravel Octane 和 Swoole 协程的使用分析中的猜想,得到进一步验证: Swoole 的 HTTP Server 启动后会创建一个 master 进程和一个 manager 进程;master 进程又会创建多个…

智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人(机器人大模型与具身智能挑战赛)

智能咖啡厅助手:人形机器人 融合大模型,行为驱动的智能咖啡厅机器人(机器人大模型与具身智能挑战赛) “机器人大模型与具身智能挑战赛”的参赛作品。的目标是结合前沿的大模型技术和具身智能技术,开发能在模拟的咖啡厅场景中承担服务员角色并…

javaWebssh在线授课辅导系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh在线授课辅导系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用 B/S模式开发。开发环境为TOMCAT7.…

4.Java---方法+重载

方法 方法的调用是需要开辟内存的,方法调用结束内存就被销毁了. 下面将介绍一个经典的错误标准的0分的示意! 我们日常中写交换两个数字的代码的时候都会用如下的方法进行描述: 你是不是觉得自己写的特别对!终于可以独立写一个小小的函数了? 下面运行一下看看结果 哦莫!怎么…

springboot第61集:Jenkins-Boss万字挑战,一文让你走出微服务迷雾架构周刊

名词 CONTAINER ID(容器ID) 名词 IMAGE ID(镜像ID)cat /etc/os-release //查看系统信息 pwd //查看当前路径 ls //查看当前目录文件 docker -v //查看docker版本 docker-compose up -d //在后台运行(取消-d是在控制台运…

linux系统Jenkins工具添加自由项目和maven项目

Jenkins添加自由项目 添加自由项目操作流程代码远程代码邮件标题邮件正文 添加maven项目准备环境操作流程 添加自由项目 gitlab配置基本代码页面等,拉取代码,打包,发布操作流程 代码 远程代码 echo ssh root192.168.188.177 "tar cz…

Java基础-java开发入门

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一、什么是Java 二、Java语言的特点 三、什么是JDK 四、第一个Java程序 一、什么是Java Java是由Sun …

electron nsis 安装包 window下任务栏无法正常固定与取消固定

问题 win10系统下,程序任务栏在固定后取消固定,展示的程序内容异常。 排查 1.通过论坛查询,应该是与app的api setAppUserModelId 相关 https://github.com/electron/electron/issues/3303 2.electron-builder脚本 electron-builder…

二月打戏最燃的国漫推荐,斗罗大陆2上榜,吞噬星空堪称第一

2024年开年,国漫就给我们带来了很大的惊喜,在刚刚过去的2月,有几部中出现了超燃的打戏,看得人热血沸腾。尤其是科幻番《吞噬星空》中的一场1V1对决,特效和设计都堪称第一。还有哪些国漫上榜呢?下面就一起来…

TCP为什么要三次握手?

TCP三次握手协议是为了在不可靠的互联网环境中可靠地建立起一个连接,三次握手可以确保两端的发送和接收能力都是正常的。 那么,为什么是三次而不是二次或四次握手呢? 为什么不是二次握手? 如果是二次握手,即客户端发…

网络编程 io_uring

io_uring 1、概述 io_uring是Linux(内核版本在5.1以后)在2019年加入到内核中的一种新型的异步I/O模型; io_uring使用共享内存,解决高IOPS场景中的用户态和内核态的切换过程,减少系统调用;用户可以直接向…

Unity(第二十二部)官方的反向动力学一般使用商城的IK插件,这个用的不多

反向动力学(Inverse Kinematic,简称IK)是一种通过子节点带动父节点运动的方法。 正向动力学 在骨骼动画中,大多数动画是通过将骨架中的关节角度旋转到预定值来生成的,子关节的位置根据父关节的旋转而改变,这…

Vmware esxi虚拟主机状态无效,无法注销重启等操作修复解决

问题 装有ESXI系统的服务器在强制关机启动后,显示虚拟机状态是无效的,并且无法进行任何操作。 解决办法 对出问题的虚拟机重新注册 1、开启esxi系统的ssh功能 2、取消注册出问题的虚拟机 找到问题的虚拟机 [rootlocalhost:~] vim-cmd vmsvc/getal…

烧脑问题解决办法:如何选择一款合适自己的手机流量卡

现在社会人们越来越离不开手机了,手机给我们生活带来了翻天覆地的变化,手机需要最多的就是流量了,所以选择一款合适自己的手机流量卡就显得尤为重要了,今天小编就给大家来分享一下我的经验,希望对大家能有帮助&#xf…

【Web安全靶场】sqli-labs-master 54-65 Challenges 与62关二分法和like模糊搜索

sqli-labs-master 54-65 Challenges 其他关卡和靶场见专栏… 文章目录 sqli-labs-master 54-65 Challenges第五十四关-联合注入第五十五关-联合注入第五十六关-联合注入第五十七关-联合注入第五十八关-报错注入第五十九关-报错注入第六十关-报错注入第六十一关-报错注入第六十…

Mysql与StarRocks语法上的不同

🐓 序言 StarRocks 是新一代极速全场景 MPP (Massively Parallel Processing) 数据库。StarRocks 的愿景是能够让用户的数据分析变得更加简单和敏捷。用户无需经过复杂的预处理,可以用StarRocks 来支持多种数据分析场景的极速分析。 🐓 语法…

嵌入式驱动学习第一周——linux的休眠与唤醒

前言 本文介绍进程的休眠与唤醒。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博主并订阅本专栏,一起讨论一起学习。现在关注就是老粉啦! 行文目录 前言1. 阻塞和非阻…

第二节 数学知识补充

一、线性代数 向量的 L 2 L_2 L2​范数(Euclidean范数/Frobenius范数)&矩阵的元素形式范数 向量的 L 2 L_2 L2​范数: ∣ ∣ x ∣ ∣ 2 ( ∣ x 1 ∣ 2 ⋯ ∣ x m ∣ 2 ) 1 2 ||x||_2(|x_1|^2\cdots|x_m|^2)^{\frac12} ∣∣x∣∣2​(∣…

电脑桌面便签哪个好,好用的电脑桌面便签推荐

在如今信息爆炸的时代,人们的工作和生活节奏越来越快,记事和备忘变得尤为重要。而电脑桌面便签作为一种方便快捷的记录工具,备受广大用户青睐。那么,电脑桌面便签哪个好,哪个更加出色呢? 作为一名人事专员…