84、Linux 文件访问与内存映射技术解析

Linux 文件访问与内存映射技术解析

1. 内存映射初始化与销毁

在内存映射的初始化过程中,有两个关键步骤。步骤 10 会用文件对象的地址初始化内存区域描述符的 vm_file 字段,并增加文件的使用计数器。接着,调用正在映射文件的 mmap 方法,传递文件对象地址和内存区域描述符地址作为参数。对于大多数文件系统,此方法由 generic_file_mmap() 函数实现,该函数会执行以下操作:
- 将当前时间存储在文件索引节点的 i_atime 字段中,并将索引节点标记为脏。
- 用 generic_file_vm_ops 表的地址初始化内存区域描述符的 vm_ops 字段。该表中除了 nopage 方法(由 filemap_nopage() 函数实现)和 populate 方法(由 filemap_populate() 函数实现)外,其他方法均为空。

步骤 11 会增加文件索引节点的 i_writecount 字段,即写入进程的使用计数器。

当进程准备销毁内存映射时,会调用 munmap() 系统调用,该调用也可用于减小各种内存区域的大小。其参数包括:
- 要移除的线性地址区间的第一个位置的地址。
- 要移除的线性地址区间的长度。

sys_munm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值