首页 > 系统相关 >Linux 多进程程序调试实例(六)-- 共享内存

Linux 多进程程序调试实例(六)-- 共享内存

时间:2023-02-06 16:47:08浏览次数:34  
标签:__ shmget -- 程序调试 key Linux 进程 共享内存 size

共享内存

介绍

  • 共享内存就是两个不相关的进程访问同一个逻辑内存,从而达到两个进程互相通信的效果。共享内存是两个正在运行的进程之间共享和传递数据最有快的一种通信方式;

实现原理

  • 共享内存是两个进程地址通过页面映射到同一个物理地址;

特点

  • 速度快:读写速度是最快的的进程通信方式;
  • 共享内存的生命周期跟随内核。即所有访问共享内存区域的对象都已经正常结束,共享内存区域仍然在内核中存在,除非是显式的删除共享内存区域对象。
  • 缺点是共享内存没有提供同步禁止,需要信号量对共享内存同步访问控制;

函数

1. shmget()

  • 函数说明:创建共享内存
  • 函数原型
int shmget (key_t __key, size_t __size, int __shmflg)
  • 函数介绍:
    • __key:表示IPC的一个唯一标识,由该标识符通过 shmget 生成一个指向共享内存的 ID 值。不同的进程可以通过相同的 key 返回的 ID 值去访问同一块共享内存;
    • __size:指定共享内存的大小,一般为一页大小的整数倍

标签:__,shmget,--,程序调试,key,Linux,进程,共享内存,size
From: https://www.cnblogs.com/wanghao-boke/p/17095853.html

相关文章

  • centos查找已安装的jdk路径的方法
    在可执行java命令的情况下查找过程如下:执行whichjava[root@localhost~]#whichjava/usr/bin/java执行ls-lrt/usr/bin/java[root@localhost~]#ls-lr......
  • mdbcluster目标构想及达成情况
    mdbcluster目标构想及达成情况  经过漫长研发(主要是人力欠缺),目前mdbcluster已经达到一个准商用标准。先回顾下之前定下的目标,以及现在达成的状态。目标构想......
  • mybatis insert 返回主键id
    一开始是这样写的:<insertid="insertArticle"useGeneratedKeys="true"keyProperty="id">xxxx</insert>期望获取从实体中拿到id,id是空的。但数据是有成功写......
  • 仓位
    1.5层中线跟踪25500 1层滚动仓 170004支股票  三只中线一只短线底仓中线跟踪滚动仓主动进出成长性抄底跌不动,边际性改善  波段性低点,新主......
  • jmeter+ant生成测试报告
    一、安装ant1、ant下载地址:http://ant.apache.org/,解压到某个目录。2、添加环境变量:ANT_HOME,指向解压后的根目录,如D:\软件工具包\apache-ant-1.9.16-bin\apache-ant-1.9.......
  • 2331.evaluate-boolean-binary-tree 计算布尔二叉树的值
    问题描述2331.计算布尔二叉树的值解题思路递归代码classSolution{public:booldfs(TreeNode*root){if(root->left==nullptr){re......
  • Maven常用参数及其说明
    Maven常用参数及其说明-h,--helpDisplayhelpinformation-am,--also-make构建指定模块,同时构建指定模块依赖的其他模块;-amd,--also-make-dep......
  • Spring14 - @Resource注解实现注入
    @Resource注入@Resource注解也可以完成属性注入。那它和@Autowired注解有什么区别?@Resource注解是JDK扩展包中的,也就是说属于JDK的一部分。所以该注解是标准注解,更加具......
  • 553.optimal-divsion 最优除法
    问题描述553.最优除法解题思路贪心,最优的除法实际上就是把第二个到最后一个元素括起来。代码classSolution{public:stringoptimalDivision(vector<int>&num......
  • spring boot 2.6.2解决log4j漏洞
    公司版本2.3,因为那个log4j漏洞准备升级2.6.2测试下,记录下出现的问题高版本不允许循环依赖,如果写的时候不太注意,改的时候也要改很多地方,最后决定添加个配置解决在bootstra......