11.4.0 内存映射mmap

11.4 内存映射mmap

消息队列和信号量都已经介绍过了,按照正常的逻辑,本节应该介绍POSIX共享内存,为什么这里却要介绍内存映射mmap呢?

这是因为内存映射mmap是POSIX共享内存的基础,内存映射完成了大量的基础性工作,临门一脚交给了共享内存。事实上POSIX共享内存也要和mmap配合使用。不理解mmap就不能很好地理解POSIX共享内存。

更重要的是,纵然不提共享内存,mmap这个系统调用也是非常重要的,其重要程度远远超过POSIX共享内存。只要你在Linux平台上工作,每天就一定会执行无数次的mmap系统调用,不管是直接地还是间接地。

当你执行哪怕是最简单的ls命令时,mmap系统调用在背后都会默默地帮你加载动态链接库,当你调用malloc函数分配大于MMAP_THRESHOLD大小(默认是128KB)的内存时,mmap系统调用会躲在malloc背后支撑;当你调用pthread_create创建线程时,mmap系统调用会帮你分配好线程栈;当你创建POSIX信号量时,mmap会默默帮你开辟一段空间存放futex变量……

可能迄今为止你从未在代码中直接使用mmap,但它就静静地躺在那里,对你的帮助不增也不减。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值