我是靠谱客的博主 仁爱水蜜桃,最近开发中收集的这篇文章主要介绍Linux内存从0到1学习笔记(7.3,用户空间虚拟内存之内存映射)一、内存映射简介,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

         C库函数提供了mmap函数建立映射。在内核一端,提供了两个系统调用mmap和mmap2.通常C标准库只提供了一个函数,由应用程序用来创建内存映射,接下来该函数调用在内部转换为适合于体系结构的系统调用mmap和mmap2。可使用munmap系统调用删除映射。

一、内存映射简介

        mmap完成的是将物理内存映射到用户态虚拟内存,中间不需要任何的内存拷贝,文件映射实质上就是在创建内核文件的时候,给文件挂上一个mmap钩子,下面我们来看下内存映射的调用链路如下:

mmap()-->ksys_mmap_pgoff()-->vm_mmap_pgoff()-->do_mmap()-->mmap_region()

首先是系统调用,arm64架构对函数实现,系统调用函数入口在arch/arm64/kernel/sys.c中,如下:

linux_mainline-5.17.0/arch/arm64/kernel/sys.c 
21  SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len,
22  		unsigned long, prot, unsigned long, flags,
23  		unsigned long, fd, unsigned long

最后

以上就是仁爱水蜜桃为你收集整理的Linux内存从0到1学习笔记(7.3,用户空间虚拟内存之内存映射)一、内存映射简介的全部内容,希望文章能够帮你解决Linux内存从0到1学习笔记(7.3,用户空间虚拟内存之内存映射)一、内存映射简介所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(30)

评论列表共有 0 条评论

立即
投稿
返回
顶部