我只想知道共享内存驻留在Linux系统中的位置?它在物理内存还是虚拟内存中?linux共享内存实际在哪里?

我知道有关进程的虚拟内存发送信箱,他们从不同的工艺处理和流程没有看到对方的记忆,但我们可以利用IPC进程之间传递数据。为了实现这个简单的场景,我刚创建了一个简单的共享内存程序,并尝试从shmat函数中打印共享内存地址和返回值,但是这两个进程的地址不同,但值相同。

这里是写程序。

为write.c

#include

#include

#include

int main() {

key_t key=1235;

int shm_id;

void *shm;

int *ptr = 83838;

shm_id = shmget(key,10,IPC_CREAT | 0666);

shm = shmat(shm_id,NULL,NULL);

sprintf(shm,"%d",ptr);

printf("Address is %p, Value is %p \n", (void *)shm, (void *)&ptr);

printf("Shm value is %d \n", *(int *)shm);

return;

}

这里是阅读器程序。

read.c

#include

#include

#include

#include

int main() {

key_t key=1235;

int shm_id;

void *shm;

int *p = (int *)malloc(sizeof(int));

shm_id = shmget(key,10,NULL);

shm = shmat(shm_id,NULL,NULL);

if(shm == NULL)

{

printf("error");

}

sscanf(shm,"%d",p);

printf("Address is %p %p %p %d\n",(void *)shm, (void *)p, (void *)&p, *p);

printf("Shared value is %d \n", *(int *)shm);

return 0;

}

这将是巨大的,如果有人能请详细解释了如何处理同一个值,尽管有不同的地址?

谢谢。

+1

其真实物理地址共享 –

+0

正如您所理解的答案的解释,请接受它 –

linux的共享内存,linux共享内存实际在哪里?相关推荐

  1. linux 共享内存_什么是物理/虚拟/共享内存——Linux内存管理小结一

    物理内存和虚拟内存到底有什么区别? 提到内存,我们会想到经常接触的三个词:虚拟内存.物理内存.共享内存.它们分别对应top输出中的VIRT.RES.SHR三列. 1. 物理内存 系统的物理内存被划分为 ...

  2. linux如何创建共享内存,linux实现共享内存同步的四种方法

    https://blog.csdn.net/sunxiaopengsun/article/details/79869115 本文主要对实现共享内存同步的四种方法进行了介绍. 共享内存是一种最为高效的进 ...

  3. linux如何看分配固定共享内存段,Linux共享内存的查看和删除

    在使用共享内存的程序异常退出时,由于没有释放掉共享内存,在调试时会出现错误.您可以使用shell命令来查看与释放已经分配的共享内存,下面将详细说明如何进行查看和释放分配的共享内存的方法. 预备知识 L ...

  4. linux ipc shmget 例子,Linux IPC之共享内存C 事例(示例代码)

    简介 共享内存(shared memory)是最简单的Linux进程间通信方式之一.使用共享内存,不同进程可以对同一块内存进行读写.由于所有进程对共享内存的访问就和访问自己的内存空间一样,而不需要进行 ...

  5. 世上最好的共享内存(Linux共享内存最透彻的一篇)上集

    共享单车.共享充电宝.共享雨伞,世间的共享有千万种,而我独爱共享内存. 早期的共享内存,着重于强调把同一片内存,map到多个进程的虚拟地址空间(在相应进程找到一个VMA区域),以便于CPU可以在各个进 ...

  6. 【Linux Program】信号量、共享内存和消息队列

    系列文章: 文件操作 数据管理 进程和信号 POSIX 线程 进程间通信:管道 信号量共享内存和消息队列 套接字 文章目录 1. 信号量 1.1 信号量的定义 1.2 Linux 的信号量机制 1.3 ...

  7. 宋宝华:世上最好的共享内存(Linux共享内存最透彻的一篇)上集

    共享单车.共享充电宝.共享雨伞,世间的共享有千万种,而我独爱共享内存. 早期的共享内存,着重于强调把同一片内存,map到多个进程的虚拟地址空间(在相应进程找到一个VMA区域),以便于CPU可以在各个进 ...

  8. Linux进程间通信详解(四) —— 共享内存及函数

    共享内存的概念 共享内存是指多个进程可以把一段内存共同的内存映射到自己的进程空间中,从而实现数据的共享和传输,它是存在与内核级别的一种资源,是所有进程间通信中方式最快的一种. 在shell环境下可以使 ...

  9. linux进程间通信:system V 共享内存

    文章目录 思维导图如下 通信原理 优势 运行流程 编程接口 编程实例 思维导图如下 通信原理 多个进程共享物理内存的同一块区域(通常称之为"段":segment) 抛弃了内核态消息 ...

  10. Linux c 基于内存的进程通信—共享内存、共享队列(消息队列)

    基于内存的进程通信: 1.      内核共享内存 编程模型:     1.1.创建共享内存,得到一个ID  shmget 1.2.把ID影射成虚拟地址(挂载)  shmat 1.3.使用虚拟地址访问 ...

最新文章

  1. JavaScript_上
  2. dto是什么意思_Spring有什么好处,为什么使用
  3. Java中如何生成jar(框架)
  4. 如何禁用 Azure 虚拟机的日期时间同步
  5. tp5 上传文件乱码问题
  6. art-template入门(五)之模板变量
  7. 不可将您的方法命名为“等于”
  8. 蓝桥杯单片机篇:NE555 频率测量
  9. react-native调用安卓原生,如果调用没有参数的方法会报错,会提示没有加入参数.
  10. android 控件发光_如何在android中的按钮周围制作动画/常量发光效果?
  11. JavaScript Promise对象
  12. 一个没有担当的领导,通常会有哪些表现?
  13. liunx 命令 之 mkdir 与 touch
  14. 如何更高效地学习3D视觉?
  15. Matlab数字孪生
  16. xamarin使用oracle数据库,XamarinSQLite教程在Xamarin.Android项目中使用数据库
  17. 2016链家大数据楼市半年报
  18. 天津高中计算机教案,天津高中物理教案
  19. /*CS5460_Note_1*/
  20. opencv学习日记

热门文章

  1. 交换数字(不用临时变量)
  2. 美多商城之用户注册(展示用户注册页面)
  3. python中lambda 表达式(无参数、一个参数、默认参数、可变参数(*args、**kwargs)、带判断的lambda、列表使用lambda)
  4. 用Python构建个性化智能闹钟
  5. 机器视觉-相机内参数和外参数
  6. 清华团队将Transformer用到3D点云分割
  7. Mysql 根据一个表数据更新另外一个表
  8. 撩课-Java面试宝典-第十二篇
  9. ORM版学员管理系统
  10. Kubernetes之路 2 - 利用LXCFS提升容器资源可见性