2023-02-28 mmap的原理及使用-思考

news2024/11/15 5:00:56

摘要:

最近在使用mmap解决数据库内存占用损耗过高导致OOM的问题, 不得不说在有些场景下mmap是非常有用.

本文主要涉及一些对mmap的思考.



mmap本身的思考:

  1. mmap和文件系统的交互规则是什么
  2. mmap中给进程虚拟内存映射的文件上的部分,是什么? 为什么是页缓存? 有没有文件缓存?
  3. mmap在内核中处于哪一个模块? 如何与用户空间交互?
  4. open/write/read接口处理文件, 在内核中会发生什么, 页缓存有何变化? 文件缓存又是什么?
  5. 当对mmap映射后的内存进行写操作时, 数据从用户空间如何进入内核空间? 
  6. mmap写的数据, 何时写进磁盘文件?
  7. mmap读数据, 除了页缓存, 是否还有其他缓存?
  8. 如果实现一个用户态文件系统, 如何高效的实现mmap?
  9. 使用mmap映射后, 当进行写操作时, 为什么要用缺页异常来进行页加载? 有没有其他策略?
  10. 进程使用mmap映射后, 映射的虚拟内存, 是在进程的哪个段在做管理? 和堆内存和栈内存的关系是什么?

mmap使用的思考:

  1. 为什么进行映射的文件必须要用lseek占位? 如果不占位, 缺页如何处理?
  2. 当进程异常终止后, 映射的内存空间的数据, 如何被内核处理? 页缓存是否被内核磁盘交换?
  3. 如果映射的内存不够用, 能否扩充内存?

mmap的场景:

  1. tokyo-cabinet数据库的持久化
  2. linux可执行文件加载动态库

参考:

https://man7.org/linux/man-pages/man2/mmap.2.html

https://zhuanlan.zhihu.com/p/143270729

https://zhuanlan.zhihu.com/p/347449137

https://cloud.tencent.com/developer/article/2144681

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

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

相关文章

Vscode快速配置(1)之基础工具

VScode快速配置(1)之基础工具(v1.0) Author:Once Day Date:2023年2月19日 漫漫长路,才刚刚开始… (嵌入式程序员开发环境) 1. 概述 下面是一些基础插件,基本上嵌入式程序员都会用到。 首先是远程连接…

力扣-销售分析III

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1084. 销售分析III二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结…

Apache Hive入门

文章目录一、Apache Hive概述1.1、什么是Hive1.2、使用Hive原因1.3、Hive和Hadoop关系二、Hive功能思想2.1、映射信息记录2.2、SQL语法解析、编译三、Hive架构、组件3.1、Hive架构图3.2Hive组件四、Hive常用操作4.1、数据类型4.1.1、基本数据类型4.1.2、集合数据类型4.2、数据库…

动态网页的核心——JSP

文章目录1,JSP 概述2,JSP 小案例2.1 搭建环境2.2 导入 JSP 依赖2.3 创建 jsp 页面2.4 编写代码2.5 测试3,JSP 原理4,JSP 总结4.1 JSP的 缺点4.2技术的发展历程4.3JSP的必要性最后说一句1,JSP 概述 JSP(全称…

IB数学/生物/化学/物理所需的教材有哪些

高中阶段的学习是迈向大学的重要步骤,涉及到的课程分为许多结构,其中最为常见的则是通过IB, AP和A-Level的学习,实现迈入国外大学的目的。 IB课程即国际文凭组织IBO(International Baccalaureate Organization)&#x…

「TCG 规范解读」规范结构

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

「TCG 规范解读」TCG 主规范-命令

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alliance,TCPA)所开发的规范。现在的规范都不是最终稿,都…

为什么需要学习shell、shell的作用

课程基于B站于超课程笔记 03 Shebang的正确玩法_哔哩哔哩_bilibili P1 shell的作用 P2 shell执行命令的流程 P3 Shebang的正确玩法 什么是shell及组成 shell概念 shelll组成 Shebang概念 /bin/sh /bin/bash一样,都是指向一个bash解释器 [rootlocalhost ~]#…

JVM篇之类加载与字节码技术

一.类文件结构 首先获得.class字节码文件 方法: 在文本文档里写入java代码(文件名与类名一致),将文件类型改为.javajava终端中,执行javac X:…\XXX.java // HelloWorld 示例 public class HelloWorld {public stat…

IB课程体系及计分方式

IB课程体系及计分方式 在全球将近150个国家,超过4000个学校,有100万的IB学生。学生在IB体系中修读相同的教材,学生毕业时参加全球统一考试,试卷的命题及批阅均由IB总部直接统筹规划,全世界的IB学生学术水平因此得以统一…

面试了一个32岁的程序员,一个细节就看出来是培训班的····

首先,我说一句:培训出来的,优秀学员大有人在,我不希望因为带着培训的标签而无法达到用人单位和候选人的双向匹配,是非常遗憾的事情。 最近,在网上看到这样一个留言,引发了程序员这个圈子不少的…

利用逻辑分析仪解析串口通讯数据

利用逻辑分析仪解析串口通讯数据🔧采用的是市面上最为广泛使用的USB逻辑分析仪: 📚资料下载: 链接: https://pan.baidu.com/s/1c9lwWDbtJxaJED-kzSbiJg 提取码: 5vnr🔨测试工具为:Logic 2.4.6,也可以使用Pu…

华为OD机试题,用 Java 解【开放日活动】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…

华为OD机试题,用 Java 解【求字符串中所有整数的最小和】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…

【Linux】Linux根文件系统扩容

场景:根文件系统需要至少100GB的剩余空间,但是目前就剩余91GB。因此,我们需要对根文件系统进行扩容。# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 3.9G 0 3.9G 0% /dev tmpfs …

文献阅读 Improving Seismic Data Resolution with Deep Generative Networks

题目 Improving Seismic Data Resolution with Deep Generative Networks 使用深度生成网络提高地震数据分辨率 摘要 叠前数据的使用,通常可以来解决噪声迹线、覆盖间隙或不规则/不适当的迹线间距等问题。但叠前数据并不总是可用的。作为替代方案,叠后…

分布式锁实现原理与最佳实践

作者:秦泽涛 阿里云教育基座团队 在单体的应用开发场景中涉及并发同步时,大家往往采用Synchronized(同步)或同一个JVM内Lock机制来解决多线程间的同步问题。而在分布式集群工作的开发场景中,就需要一种更加高级的锁机制…

AI绘画第一步,安装Stable-Diffusion-WebUI全过程 !

别玩那些小孩子的玩意儿了,大人应该玩这些^_^!我是真没想到,AI绘画已经进化到这种程度了。实在是太!逼!真! 了!不上重马赛克都不敢贴图!看了这些图,有没有心痒痒的?今天就…

逆向-还原代码之除法 (Interl 64)

除法和32位差不多,毕竟背后的数学公式是一样的。区别只是32位的乘法需要两个寄存器来存放大数相乘的结果,而64位的不需要,一个寄存器就能存下。所以在64位的环境下,多了右移32位这条指令,其他指令一样。 //code #incl…

升级Android Studio Electric Eel问题汇总

1.升级以后找不到java可执行程序 问题原因:升级后,Android Studio自带的java目录不再是根目录/jre,调整为一个新目录 Studio根目录/jbr 修改方法:1)修改系统环境变量, JAVA_HOME调整为Studio下对应的java…