【Linux 内核 内存管理】mmap 系统调用源码分析 ③ ( vm_mmap_pgoff 函数执行流程 | vm_mmap_pgoff 函数源码 )

159 篇文章 149 订阅
订阅专栏
87 篇文章 43 订阅
订阅专栏


调用 mmap 系统调用 , 先检查 " 偏移 " 是否是 " 内存页大小 "" 整数倍 " , 如果偏移是内存页大小的整数倍 , 则调用 sys_mmap_pgoff 函数 , 继续向下执行 ;

sys_mmap_pgoff 系统调用函数 中 , 最后调用了 vm_mmap_pgoff 函数 , 继续向下执行 ;





一、vm_mmap_pgoff 函数执行流程



vm_mmap_pgoff 函数中 ,


首先 , 以 " 写者 " 身份 , 向 Linux 内核申请 读写 " 信号量 " 权限 ;

然后 , 如果 读写 " 信号量 " 权限 申请通过 , 那么调用 do_mmap_pgoff 函数 , 执行 创建 " 内存映射 " 的过程 , 特别注意 , 这是 创建 " 内存映射 " 的 核心函数 , 下一篇博客着重讲该函数 ;

再后 , 创建 " 内存映射 " 完成后 , 释放 " 读写信号量 " ;

最后 , 处理 " 内存页 " 锁定问题 , 如果需要将 内存映射 的 内存页 锁定在 虚拟内存 中 , 直接进行处理即可 , 在 物理地址空间 分配 内存页 , 并将 虚拟地址空间 的 内存页 映射到 物理内存页 中 ;





二、vm_mmap_pgoff 函数源码



vm_mmap_pgoff 函数定义在 Linux 内核源码中的 linux-4.12\mm\util.c#296 位置 ;


vm_mmap_pgoff 函数源码如下 :

unsigned long vm_mmap_pgoff(struct file *file, unsigned long addr,
	unsigned long len, unsigned long prot,
	unsigned long flag, unsigned long pgoff)
{
	unsigned long ret;
	struct mm_struct *mm = current->mm;
	unsigned long populate;
	LIST_HEAD(uf);

	ret = security_mmap_file(file, prot, flag);
	if (!ret) {
		if (down_write_killable(&mm->mmap_sem))
			return -EINTR;
		ret = do_mmap_pgoff(file, addr, len, prot, flag, pgoff,
				    &populate, &uf);
		up_write(&mm->mmap_sem);
		userfaultfd_unmap_complete(mm, &uf);
		if (populate)
			mm_populate(ret, populate);
	}
	return ret;
}

源码路径 : linux-4.12\mm\util.c#296

在这里插入图片描述

Linux mmap()系统调用
m0_74282605的博客
03-11 770
我们可以通过man mmap来查看一下mmap()的说明:man mmap.png名字mmap, munmap -- 映射或者取消映射文件或设备到内存概要描述mmap()在调用进程的虚拟地址空间中创建一个新映射。 新映射的起始地址在 addr 中指定。 length 参数指定映射的长度。如果 addr 为 NULL,则内核选择创建映射的地址; 这是创建新映射的最便携方法。 如果 addr 不为 NULL,则内核将其作为关于放置映射位置的提示; 在 Linux 上,映射将在附近的页面边界处创建。 新映射的地址
linux 内存管理mmap.c文件代码分析do_mmap() 和 do_mmap_pgoff()
ElisabethSissi的博客
11-18 1714
mmap.c文件代码分析do_mmap_pgoff // An highlighted block unsigned long do_mmap_pgoff(struct file * file, unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long pgoff) /*负责把磁盘文件的逻辑地址映射到虚拟地址,以及把虚拟址映射到物理地址。*/ /*do_mmap在mm.h
linux 虚拟内存 mmap,linuxVM虚拟内存区域及mmap方法实现
weixin_39942572的博客
05-02 162
linuxVM虚拟内存区域及mmap方法实现文件映射是虚存的中心概念, 文件映射一方面给用户提供了一组措施, 好似用户将文件映射到自己地址空间的某个部分, 使用简单的内存访问指令读写文件;另一方面, 它也可以用于内核的基本组织模式, 在这种模式种, 内核将整个地址空间视为诸如文件之类的一组不同对象的映射. 中的传统文件访问方式是, 首先用open系统调用打开文件, 然后使用read, write...
linux mmap 使用
bruce_wang_janet的专栏
07-03 1633
一.前言mmap的具体实现以前在学习内核时学习过,但是对于其中的很多函数是一知半解的,有些只能根据其函数名来猜测其具体的功能,在本文中,一起来重新深入理解其具体的实现。二.mmap的用户层应用void *mmap(void *start,size_t leng
linuxVM虚拟内存区域及mmap方法实现
liuyuanqing2010的专栏
08-09 4524
linuxVM虚拟内存区域及mmap方法实现         文件映射是虚存的中心概念, 文件映射一方面给用户提供了一组措施, 好似用户将文件映射到自己地址空间的某个部分, 使用简单的内存访问指令读写文件;另一方面, 它也可以用于内核的基本组织模式, 在这种模式种
Linuxmmap 源码分析
jackingzheng的专栏
12-23 1963
Linuxmmap 源码分析 1、mmap基础概念 mmap() 将文件或设备映射到内存中。这是一种内存映射文件I / O的方法,实现用户进程和内核空间的映射。 1.1 功能特点: mmap分为文件映射和匿名映射 文件映射:将进程的虚拟内存区域映射到文件。即读取那些内存区域将导致文件被读取,这是默认的映射类型。 匿名映射:会映射该进程的虚拟内存中没有任何文件支持的区域,内容初始化为零。系统都通过MAP_ANONYMOUS和MAP_ANON标志实现了匿名映射,但它并不是POSIX标准的一部分。 1.2
Linux系统 mmap 存储映射
tugouxp的专栏
04-23 1786
括号中表示预期行为,括号外部的表示在LINUX系统中的实际行为,比如组合SHARED/EXEC的读行为,对于一个可执行的共享地址来说,没有给与PROT_READ属性,预期当然不可读,但是由于CPU执行上面的代码,必须要进行读操作,而实际的硬件架构和及并没有区分执行读和其它方式的读,所以,实际上对于这样的内存,仍然是可读的。从上图中可以看到,这段匿名区域(可能是MMAP区域,现在的MALLOC都用MMAP实现)地址是向下增长的,像栈一样,就像前面提到的第二种情况,这是在哪里控制的呢?
linux do_mmap流程简析
daha1314的博客
05-01 781
linux do_mmap流程
Linux 内存映射函数 mmap()函数详解
热门推荐
yangle4695的博客
08-07 11万+
mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。mmap在用户空间映射调用系统中作用很大。 头文件 函数原型 void* mmap(void* start,size_t length,int prot,int flags,int fd,off_t offset); int munmap(void* st
内存管理源码分析-mmap函数内核的运行机制以及源码分析
Hubery的存储点滴
02-27 1732
mmap函数的介绍 mmap函数的主要作用是可以将一个文件或者设备的内容映射到内存当中,用户就可以通过一些内存操作方式(如memcpy、memset)对文件或者设备进行直接的操作。这种操作可以减少一些IO的开销,如通过传统的读写文件的方式,可能会频繁的触发系统调用导致IO效率的降低。需要注意的是mmap函数的内存分配方式是页对齐的,即使用户只需要2字节的数据,mmap函数也会分配一个页的内存空间给...
sys_mmap_pgoff
ssmale的专栏
08-30 3647
sys_mmap_pgoff SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len, unsigned long, prot, unsigned long, flags, unsigned long, fd, unsigned long, pgoff) { struct file * file = NUL
(十三)Linux内存管理vma/malloc/mmap
M120674的专栏
08-18 432
背景 Read the fucking source code!--By 鲁迅 A picture is worth a thousand words.--By 高尔基 说明: Kernel版本:4.14 ARM64处理器,Contex-A53,双核 使用工具:Source Insight 3.5, Visio 1. 概述 这篇文章,让我们来看看用户态进程的地址空间情况,主要会包括以下: vma; malloc; mmap; 进程地址空间中,我们常见的代码段,数据段,bss段等,实际上..
JAVA小文库(三种注释)
weixin_40498912的博客
10-16 151
单行注释 // 内容 多行注释 /* 内容 内容 List item / 文档注释 /* 内容 */
linux内存管理-系统调用mmap()
guoguangwu的专栏
10-24 2766
一个进程可以通过系统调用mmap,将一个已打开文件的内容映射到它的用户空间,其用户界面为: void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); 参数fd代表着一个已打开文件,offset为文件中的起点,而addr为映射到用户空间中的起始地址,length则为长度。还有两个参数prot和flags,前者用于对映射区间的访问模式,如可写、可执行等等,后者则用于
mmap系统调用
最新发布
Peter的专栏
11-21 1360
一、内存使用方法二、mmap系统调用一、内存使用方法1.创建内存映射#include<sys/mman.h> void*mmap(void*addr,size_tlength,intprot,intflags,intfd,off_toffset);mmap:进程创建匿名的内存映射,把内存的物理页映射到进程的虚拟地址空间。进程把文件映射到进程的虚拟地址空间,可以像访问内...
Linux内存管理 vma/malloc/mmap
生活需要深度
04-28 4333
vma;malloc;mmap;进程地址空间中,我们常见的代码段,数据段,bss段等,实际上都是一段地址空间区域。Linux将地址空间中的区域称为, 简称VMA,使用来描述。在进行内存申请和映射时,都会去地址空间中申请一段虚拟地址区域,而这部分操作也与vma关系密切,因此本文将三个放到一块来进行分析。开启探索之旅吧。
linux内存管理(三)-mmap系统调用
jianjian的博客
05-29 2083
写文章

热门文章

  • 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载 181214
  • 【音乐理论】音与音高 ( 音区 | 小字一组 | 小字组 | 大字组 ) 92117
  • 【Android 应用开发】GitHub 优秀的 Android 开源项目 87931
  • 【C 语言】文件操作 ( fwrite 函数 ) 78357
  • 【Android 应用开发】Android 开发 之 JNI入门 - NDK从入门到精通 72714

分类专栏

  • JavaScript 91篇
  • OpenHarmony 22篇
  • 音视频原理 14篇
  • CSS 142篇
  • GIS 2篇
  • Java AWT / Swing 图形界面编程 42篇
  • Kotlin 协程 44篇
  • Midjourney 20篇
  • 开阔视野 1篇
  • 数据结构 11篇
  • 移动端网页布局 32篇
  • RxJava 3篇
  • HTML 26篇
  • ARCore 1篇
  • JDBC 6篇
  • Redis 18篇
  • 系统架构设计师 19篇
  • ChatGPT
  • FPGA 芯片设计 1篇
  • Android OpenCV 4篇
  • 数学分析 2篇
  • Android 屏幕适配 13篇
  • Android UI 39篇
  • Android RenderScript 3篇
  • Linux 内核 159篇
  • Linux 内核简介 24篇
  • Linux 内核 进程管理 47篇
  • Linux 内核 内存管理 87篇
  • VMware 20篇
  • Android WebSocket 2篇
  • ijkplayer 18篇
  • 数字信号处理 99篇
  • LaTeX 语法 2篇
  • 五线谱 15篇
  • 短视频运营 13篇
  • Android Gradle 插件 188篇
  • Groovy 143篇
  • Git 23篇
  • Windows 逆向 25篇
  • Android 逆向 203篇
  • Android 命令行工具 1篇
  • Python 140篇
  • EventBus 24篇
  • AOP 6篇
  • IOC 8篇
  • 字节码插桩 3篇
  • Java 虚拟机原理 26篇
  • Android 启动过程 8篇
  • 每日随笔 110篇
  • SeeMusic 11篇
  • BLE MIDI 9篇
  • Java 泛型 4篇
  • Google Play 33篇
  • Android 事件分发 16篇
  • Android TV 开发 2篇
  • OkHttp 7篇
  • 插件化 48篇
  • FFmpeg 60篇
  • 人工智能 20篇
  • 算法 29篇
  • 组件化 19篇
  • 广告接入 1篇
  • Android APT 23篇
  • Android Gradle
  • Java 注解 5篇
  • Serverless 3篇
  • 密码学 1篇
  • MATLAB 42篇
  • Qt 6篇
  • Cubase 1篇
  • OpenGL 24篇
  • Android Binder 系统 12篇
  • Android 文件管理 6篇
  • CMake 3篇
  • 鸿蒙 HarmonyOS - Java 版 21篇
  • 音频处理 15篇
  • FluidSynth 2篇
  • Netty 27篇
  • NIO 12篇
  • 计算理论 70篇
  • 音乐理论 3篇
  • Android 性能优化 189篇
  • Android 启动优化 9篇
  • Android 布局渲染优化 6篇
  • Android Protobuf 序列化 8篇
  • Android 安装包优化 38篇
  • Android 电量优化 13篇
  • Android 内存优化 28篇
  • Android 进程保活 15篇
  • Android CPU 优化 1篇
  • Android 热修复 14篇
  • Android 异步操作 23篇
  • Android 安全 49篇
  • 数学 122篇
  • 数理逻辑 13篇
  • 图论 1篇
  • 集合论 34篇
  • 组合数学 70篇
  • 数据挖掘 54篇
  • 计算机网络 92篇
  • TarsosDSP 1篇
  • 软件工程 6篇
  • 设计模式 41篇
  • DBMS 数据库管理系统 10篇
  • OpenGL ES 2篇
  • Android 20篇
  • Android 基础 20篇
  • Android 应用开发 64篇
  • Android NDK 开发 27篇
  • Android 高性能音频 25篇
  • ConstraintLayout 10篇
  • Jetpack 35篇
  • RecyclerView 17篇
  • Android FFMPEG 开发 28篇
  • Android 动画 1篇
  • Android 帧动画
  • Android 属性动画 3篇
  • Android View 动画
  • Android 返回堆栈管理 7篇
  • Android RTMP 26篇
  • 错误记录 301篇
  • Android 系统开发 6篇
  • java 1篇
  • Kotlin 102篇
  • Objective-C 9篇
  • Java 网络编程 18篇
  • Java 并发编程 18篇
  • Flutter 139篇
  • IOS开发 14篇
  • Linux 操作系统 2篇
  • 运筹学 73篇
  • C 142篇
  • iOS 应用开发 10篇
  • 嵌入式开发 20篇
  • 嵌入式开发 15篇
  • Java 集合 2篇
  • UI 设计 1篇
  • 开发环境 67篇
  • UML 5篇
  • Unity3D 42篇
  • 音乐
  • C++ 250篇
  • 英语 2篇
  • 词汇 2篇

最新评论

  • 【C 语言】字符串模型 ( 字符串翻转模型 )

    偶是老李头: while (p_start < p_end) 走不进去呢?

  • 【FFmpeg】FFmpeg 函数简介 ① ( 注册和初始化函数 | avformat_network_init 函数 | avdevice_register_all 函数 )

    小码农叔叔: 优质好文,博主文章干货很多,技术细节把控非常好,实用性不错,对日常工作很有帮助,感谢博主的分享,期待博主持续更新!同时也期待博主的指点哦

  • 【FFmpeg】FFmpeg 函数简介 ① ( 注册和初始化函数 | avformat_network_init 函数 | avdevice_register_all 函数 )

    陈橘又青: 这篇博客让我对某个领域产生了浓厚的兴趣,强烈推荐给大家。并且让我想起了我这篇文章也有异曲同工之妙,欢迎前来指点我一番!我必然用心回报!

  • 【开发环境】安装 Visual Studio Community 2013 开发环境 ( 下载 Visual Studio Community 2013 with Update 5 版本的安装包 )

    wqh331441: 去搜索镜像版,还有的

  • 【FFmpeg】FFmpeg 函数简介 ① ( 注册和初始化函数 | avformat_network_init 函数 | avdevice_register_all 函数 )

    韩楚风: 优质好文,博主的文章细节很到位,兼顾实用性和可操作性,感谢博主的分享,期待博主持续带来更多好文

最新文章

  • 【FFmpeg】FFmpeg 函数简介 ① ( 注册和初始化函数 | avformat_network_init 函数 | avdevice_register_all 函数 )
  • 【FFmpeg】FFmpeg 播放器框架 ④ ( FFmpeg 库结构 | AVUtil 库 | AVFormat 库 | AVCodec 库 | AVFilter 库 | SWScale 库 )
  • 【FFmpeg】FFmpeg 播放器框架 ③ ( FFmpeg 中的音视频相关术语 | 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 | 复用器 | 解复用器 )
2024
10月 3篇
09月 5篇
08月 18篇
07月 24篇
06月 52篇
05月 41篇
04月 45篇
03月 50篇
02月 14篇
01月 56篇
2023年820篇
2022年799篇
2021年1255篇
2020年697篇
2019年97篇
2018年14篇
2017年5篇
2016年7篇
2015年30篇
2014年71篇
2013年24篇

目录

目录

分类专栏

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家热销玻璃钢卡通雕塑长沙玻璃钢雕塑定制怎么收费商场美陈包括哪些银川大型玻璃钢雕塑设计河南走廊商场美陈销售武汉肖像玻璃钢人物雕塑玻璃钢雕塑怕不怕雨北京户内玻璃钢雕塑制作北京耐高温玻璃钢花盆葫芦岛商场美陈搭建玻璃钢人物雕塑的制作技术天津佛像玻璃钢雕塑定制玻璃钢花盆效果好吗评价高的玻璃钢雕塑造型贴金山东周年庆典商场美陈制作佛冈玻璃钢花盆花器陕西个性化玻璃钢雕塑多少钱北京多彩玻璃钢雕塑批发惠州玻璃钢卡通公仔雕塑批量定做玻璃钢仿真植物水果雕塑定制沈阳玻璃钢雕塑模型厂家商场美陈 堆头广州红褐色玻璃钢花盆甘肃玻璃钢草莓雕塑价格山东周年庆典商场美陈哪家好景德镇玻璃钢商场美陈汕尾玻璃钢雕塑费用广西玻璃钢海豚雕塑定制汕头定制玻璃钢卡通雕塑鹤壁佛像玻璃钢人物雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化