1.mmap其实跟物理地址的映射没什么关系,它的作用实际是创建一段虚拟进程空间的地址,将对象映射到这段地址,而使用文件fd的原因是用来指定这个对象,不同进程之间可以通过这个文件来保证映射到进程空间的是同一个对象,达到使用共享内存的目的。所以实际上并不一定是一个实际的文件,不会有磁盘文件加载到物理内存,文章中你也看到,父子进程可以同过匿名对象来使用共享内存,方式就是将fd设为-1.

返回缺页异常则是另外一个问题了,你可以再找一些更详细的资料。我简单说一下,当虚拟存储器的空间被创建后,这个时候还只是虚拟进程空间地址的概念,所以没有映射到真实的物理内存,当你第一次访问这段内存时,物理内存中是找不到的,就会返回缺页异常,操作系统就会寻找一页物理内存,将这段虚拟空间的地址映射到真实物理内存中,这其实是一个比较复杂的过程,你可以再参考一些操作系统和计算机系统原理方面的资料。

2.当你理解了操作系统的内存管理之后,你就明白这个问题了,这跟mmap没什么关系。

3.都有,我个人经历的mmap多一些,shmget是system V的IPC通信,mmap是系统调用。

4.不一定,其他目录也可以。shmget是system V的IPC通信方式,都通过一个key值来创建,其实跟文件不一定有什么关系,用文件是通过ftok调用来生成同一个key值,如果你自己规定一个key并保证其唯一性也是可以的。

shmget物理内存_linux下共享内存mmap()方法和shmget()方法的疑问?相关推荐

  1. 为什么要重写hashCode()方法和equals()方法以及如何进行重写

    一.前言 本篇文章主要探讨的问题有三个: 1.首先我们为什么需要重写hashCode()方法和equals()方法? 2.在什么情况下需要重写hashCode()方法和equals()方法? 3.如何 ...

  2. shmget物理内存_Linux进程间通信(六):共享内存 shmget()、shmat()、shmdt()、shmctl()...

    下面将讲解进程间通信的另一种方式,使用共享内存. 一.什么是共享内存 顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存.共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式 ...

  3. c语言中shmget相关函数,unix中共享内存(shmget的实现,非mmap)

    共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区.在/proc/sys/kernel/目录下,记录着共享内存的一些限制,如一 个共享内存区的最大字节数shmmax,系统范围内最大共享内存 ...

  4. c++ fork 进程时 共享内存_linux共享内存mmap

    Linux进程间通信-共享内存mmap 采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝.对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的 ...

  5. Linux进程间通信:共享内存mmap、xsi和posix

    前言 本文主要说明在Linux环境上如何使用共享内存.阅读本文可以帮你解决以下问题: 什么是共享内存和为什么要有共享内存? 如何使用mmap进行共享内存? 如何使用XSI共享内存? 如何使用POSIX ...

  6. Linux 3.进程间通信(shmget shmat shmdt shmctl 共享内存、signal signaction sigqueue 信号、semget semctl semop 信号量)

    Linux 3.进程间通信(IPC) 共享内存 共享内存的接口指令 shmget 创建获取获取共享内存 shmat 映射:连接共享内存到当前进程的地址空间 shmdt 断开与共享内存的连接 shmct ...

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

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

  8. linux跟踪内存检测原理,wooyun/Linux下基于内存分析的Rootkit检测方法.html at master · exitmsconfig/wooyun · GitHub...

    Linux下基于内存分析的Rootkit检测方法 - 路人甲 原文地址:http://drops.wooyun.org/tips/4731 0x00 引言 某Linux服务器发现异常现象如下图,确定被 ...

  9. 错误: 内存泄漏,当您使用 GetDC 方法和 ReleaseDC 方法的 CWnd 类版本

    症状 调用CWnd::GetDC函数跟CWnd::ReleaseDC函数的代码运行时,会出现 4 个字节的内存泄漏. 原因 导致此错误的原因是当前未知. 解决方案 若要避免此问题,请不要使用GetDC ...

最新文章

  1. SQL Server-表表达式基础
  2. 北京林大计算机科技应为abc哪类,北京林业大学新生入学要准备什么?
  3. 火了!女教授把自己P成女娲,登上学术期刊封面
  4. python绘制双正切激活函数
  5. 华为捐赠欧拉 共建数字基础设施开源操作系统
  6. python-类继承多态
  7. 阶段3 2.Spring_02.程序间耦合_4 曾经代码中的问题分析
  8. java的程序控制关键字_Java编程的关键字有哪些
  9. Mysql 全国省市车牌代码归属地数据表(2020年)
  10. 视频教程-轻松搞定Spring全家桶(初识篇)-Java
  11. 西数云存储 重置 使用手册_如何重置IE浏览器(以IE8 为例),并添加信任网址...
  12. GDAL 读取和保存 Grd 文件
  13. android 音乐播放器关于歌词的处理
  14. 零基础计算机入门,分享人人可以参考的路线,私藏的干货视频和书单,为你的程序员生涯助力,呐喊!
  15. 计算机管理 合并分区,硬盘分区进行合并 硬盘分区后怎么合并
  16. python多条件求和_python – Numpy:条件求和
  17. Jenkins基础:使用NPM构建前端应用1: nodejs插件的安装与设定
  18. 大连暗泉渗透/红队岗面试题(高级渗透测试工程师面试题)总结
  19. 破解分布式数据库全局死锁难题 GBase 8c引领数据库领域变革
  20. Codeforces1397 E. Monster Invaders(dp)

热门文章

  1. 股票计算总交易量 matlab,Matlab实时监控股票交易数据之Timer函数应用实例
  2. 成都学编程需要多少钱?
  3. 手机连接Linux系统 JuiceSSH - SSH Client(Android免费的SSH客户端)
  4. web开发首选,CSS常用五类选择器
  5. 【转】VC编译器选项
  6. 磁盘相关知识——磁盘、柱面、磁道、磁头、扇区
  7. 什么是乐观锁,什么是悲观锁
  8. 搞排名的要当心了 root9B要破产 曾被Cybersecurity Ventures评为2017Q2世界500强第一
  9. mysql知识整理_Mysql知识点整理
  10. HDU4856 Tunnels 状压DP