linux mmap系统调用

Linux提供了brk和mmap系统调用来申请用户空间,mmap更灵活,可用于文件和匿名映射。匿名映射常用于内存初始化为0,文件映射则直接将文件内容映射到内存。共享文件映射允许多进程共享同一内存,实现内存映射I/O,提高性能,尤其在大型文件的随机访问时。MAP_FIXED标志能指定映射地址,但可能引发安全问题,更安全的选择是MAP_FIXED_NOREPLACE。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

brk/mmap

linux 提供了两个比较重要的系统调用brk 和mmap,用于向内核申请相应用户空间,内核会根据系统运行状态判定是否申请新的VMA来管理新申请的用户空间,brk和mmap在整个系统中都占有非常重要的地位。

  • brk()系统调用 被gblic进行了进一步封装成malloc接口,用户层程序一般都是通过调用malloc,由glibc间接调用brk来向内核申请用户空间。brk申请的用户空间属于堆空间。
  • mmap系统调用也可以向内核申请用户空间,不过与brk不同的是,mmap申请的空间属于mapping映射空间部分。

用户空间部分如下图所示:

 mmap

mmap系统调用函数接口如下:

#include <sys/mman.h>

void * mmap(void *addr,size_t length, i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Huo的藏经阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值