【Linux 内核 内存管理】内存管理系统调用 ① ( mmap 创建内存映射

您所在的位置:网站首页 mips地址映射 【Linux 内核 内存管理】内存管理系统调用 ① ( mmap 创建内存映射

【Linux 内核 内存管理】内存管理系统调用 ① ( mmap 创建内存映射

2023-04-28 06:56| 来源: 网络整理| 查看: 265

文章目录一、mmap 创建内存映射二、munmap 删除内存映射三、mprotect 设置虚拟内存区域访问权限一、mmap 创建内存映射

mmap 系统调用函数 , 用于 创建 " 内存映射 " ;

该 " 系统调用 " 函数工作原理如下 :

首先 , 创建 " 匿名内存映射 “ , 将 ” 物理内存页 “ 映射到 进程的 ” 用户虚拟地址空间 " 中 ;

然后 , 将 指定文件 的 指定数据区间 映射到 " 用户虚拟地址空间 " 中 ;

此时 , 可以通过 指针 访问 内存的方式 , 访问文件 ;

mmap 函数原型如下 :

#include void* mmap(void* start,size_t length,int prot,int flags,int fd,off_t offset);

使用 mmap 系统调用 与 传统文件 操作 对比 :

传统的文件操作 , 首先调用 fopen 函数打开文件 , 然后调用 fread fwrite 等函数操作文件 , 这些操作 在 用户模式 下调用 , 然后需要 切换到 内核模式 下调用 Linux 内核中相应的文件操作 , 这里 涉及到 用户模式 和 内核模式 之间的 切换 ;

使用 mmap 系统调用 , 避免了 用户模式 与 内核模式 切换的开销 , 提高了文件操作的性能 ;

此外 , 多个进程之间 , 可以使用 mmap 系统调用 创建 共享的 " 文件映射 “ 类型的 ” 内存映射 “ , 进而实现了 ” 共享内存操作 " ;

二、munmap 删除内存映射

munmap 系统调用 的作用是 删除内存映射 , 其函数原型如下 :

#include int munmap(void* start,size_t length);三、mprotect 设置虚拟内存区域访问权限

mprotect 系统调用 的作用是 设置虚拟内存区域访问权限 , 其函数原型如下 :

#include int mprotect(const void *addr, size_t len, int prot);


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3